在Jupyter-lab中使用RDKit画分子2D图

在Jupyter-lab中使用RDKit画分子2D图

在做完分子对接后,想看看筛选后的分子的结构。因此想利用Jupyter-lab来画分子的2D图。

1. 安装Jupyter-lab与RDKit

  • 系统:Win11
  • 已安装conda

RDKit 是一个功能强大、灵活易用的化学信息学工具包,广泛应用于药物发现、化学生物学、材料科学等领域。RDKit 提供了丰富的化学信息可视化功能,用户可以通过RDKit 生成分子结构图、化学反应图、药物分子的三维结构等,方便进行结果展示和分析。

1.1 安装RDKit

#创建并安装RDKit的conda环境
conda create -c conda-forge -n my-rdkit-env rdkit#激活RDKit的虚拟环境
conda activate my-rdkit-env

不知道为啥,这一步很慢,不知道是不是conda channel的问题。但总归是等了一段时间就成功了。参考自官方教程。

1.2 安装Jupyter-lab

Jupyter Lab是Jupyter Notebook的升级版本,可以一个窗口中同时打开多个 Notebook、代码编辑器、终端、文件浏览器等,更方便地进行多任务处理和工作流程管理。Jupyter Lab集成了丰富的文档编辑器,包括 Markdown、LaTeX 等,用户可以方便地编写和编辑文档,同时可以通过插件支持更多的文档格式和扩展功能。最主要的是Jupyter Lab提供了丰富的可视化功能,用户可以通过插件支持各种图表库和数据可视化工具,实现更丰富和复杂的数据分析和可视化。

使用pip安装

pip install jupyterlab

参考自官方安装教程。

2. 小分子(SDF格式)作图

2.1 画单个SDF格式的分子图

以他莫昔芬(Tamoxifen)小分子为例,首先从PubChem网站下载该分子的三维结构的SDF结构文件。
在这里插入图片描述
如法炮制,再下载其余三个小分子:阿司匹林(Aspirin),莫洛昔康(Molnupiravir),瑞德西韦(Remdesivir)。将四个分子保存在sdf/文件夹中。

在CMD中跳转至cd sdf/文件夹路径下,打开Jupyter-lab

from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import Draw#读取sdf文件
m1 = Chem.MolFromMolFile('sdf/Conformer3D_COMPOUND_CID_121304016.sdf')#通过调用AllChem.Compute2DCoords(m1)计算出m1分子相应的二维坐标,并将其更新到分子对象中
AllChem.Compute2DCoords(m1)#判断m1分子是否读取成功
m1 is None#Draw.MolToImage()函数画出分子的2D图像
Draw.MolToImage(m1)

运行后结果如下:
在这里插入图片描述

  • 读取单个的SDF文件可以用Chem.MolFromMolFile(),尽管这个主要用于读取MOL格式的分子文件。
  • 读取一个存有多个分子集的SDF文件,主要用Chem.SDMolSupplier()
  • Chem.MolFromMolFile()无法读取PDB格式的分子文件,因此小分子文件读取主推SDF格式

2.2 画多个SDF格式的分子图

读取sdf/文件夹下的多个SDF分子,且将分子的2D图放在一张图中。

import os
import glob# 指定小分子的存储路径
path = r'sdf/'# 使用os.path.join构建路径,获取所有.sdf文件的路径列表
sdf_files = glob.glob(os.path.join(path, '*.sdf'))# 将所有.sdf文件保存在一个列表ms中
ms = []
for sdf_file in sdf_files:m = Chem.MolFromMolFile(sdf_file)ms.append(m)#计算出列表中分子的二维坐标,并将其更新到分子对象中  
for m in ms: tmp=AllChem.Compute2DCoords(m)# MolsToGridImage()函数可以将4个分子画在一张图上
# molsPerRow=4参数设置4个小分子并排成一列
# subImgSize=(500,500)设置每个小分子的图像尺寸为500x500大小
# legends=x.GetProp("_Name")获取小分子的名称作为图例
img=Draw.MolsToGridImage(ms[:4],molsPerRow=4,subImgSize=(500,500),legends=[x.GetProp("_Name") for x in ms[:4]], returnPNG=False) # 保存分子图像为PNG格式文件在sdf/文件夹下
img.save('./Mol_4.png')img

结果如下所示:
在这里插入图片描述
Draw.MolsToGridImage函数中设置returnPNG=False参数,主要用于在保存画出的图片时img.save()的报错:


AttributeError Traceback (most recent call last) Cell In[23], line 20
17 for m in ms: tmp=AllChem.Compute2DCoords(m)
19 img=Draw.MolsToGridImage(ms[:4],molsPerRow=4,subImgSize=(500,500),legends=[x.GetProp(“_Name”)
for x in ms[:4]])
—> 20 img.save(‘./Mol12_20.png’)
21 img

AttributeError: ‘Image’ object has no attribute ‘save’

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/268312.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv应用开发与实现

一、背景与简介 YOLO(You Only Look Once)是一种流行的实时目标检测系统,其核心思想是将目标检测视为回归问题,从而可以在单个网络中进行端到端的训练。YOLOv作为该系列的最新版本,带来了更高的检测精度和更快的处理速…

Node.js基础---npm与包

包 概念:Node.js 中的第三方模块又叫做包 来源:由第三方个人或团队开发出来的,免费使用,且为开源 为什么需要:Node.js的内置模块只有一些底层API,开发效率低 包是基于内置模块封装出来的,提供更…

FPGA高端项目:FPGA基于GS2971的SDI视频接收转HDMI输出,提供3套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI接收HLS动态字符叠加输出应用本方案的SDI接收HLS多路视频融…

【详识JAVA语言】抽象类和接口

抽象类 抽象类概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 比如:…

一文搞懂浏览器缓存机制

文章目录 概述强制缓存协商缓存总结参考文章 概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的 浏览器第一次向服务器发送HTTP请求, 浏览器拿到请求结果后,会根据响应报文的缓存标识,决定是否进行缓存…

Web元素定位工具-ChroPath

往往Selenium元素定位需要知道具体元素的位置准确定位,一步一步找元素的位置很麻烦并且费时。今天介绍一款辅助定位web网站元素位置的插件ChroPath由此很有用,本文将介绍ChroPath完整版安装和使用(含插件包),让seleniu…

数据结构与算法-冒泡排序

引言 在数据结构与算法的世界里,冒泡排序作为基础排序算法之一,以其直观易懂的原理和实现方式,为理解更复杂的数据处理逻辑提供了坚实的入门阶梯。尽管在实际应用中由于其效率问题不常被用于大规模数据的排序任务,但它对于每一位初…

机器学习周报第31周

目录 一、论文阅读1.1 论文标题1.2 论文摘要1.3 论文背景1.4 提出的系统:MAER1.4.1 基于Asyncio的预处理1.4.2 多模态信号下的情感识别1.4.3 针对情感不匹配情况的自适应融合 一、论文阅读 1.1 论文标题 Beyond superficial emotion recognition: Modality-adapti…

Jmeter 安装

JMeter是Java的框架,因此在安装Jmeter前需要先安装JDK,此处安装以Windows版为例 1. 安装jdk:Java Downloads | Oracle 安装完成后设置环境变量 将环境变量JAVA_HOME设置为 C:\Program Files\Java\jdk1.7.0_25 在系统变量Path中添加 C:\Pro…

VS Code 的粘性滚动预览 - 类似于 Excel 的冻结首行

VS Code 的粘性滚动预览 - 类似于 Excel 的冻结首行功能,即滚动 UI 显示当前源代码范围。便于在代码行数比较多的时候更好的知道自己所在的位置。粘性滚动UI 显示用户在滚动期间所处的范围,将显示编辑器顶部所在的类/接口/命名空间/函数/方法/构造函数&a…

Dell R730 2U服务器实践3:安装英伟达上代专业AI训练Nvidia P4计算卡

Dell R730是一款非常流行的服务器,2U的机箱可以放入两张显卡,这次先用一张英伟达上代专业级AI训练卡:P4卡做实验,本文记录安装过程。 简洁步骤: 打开机箱将P4显卡插在4号槽位关闭机箱安装驱动 详细步骤: 对…

【java-面试题】链表刷题

【java-面试题】链表刷题 1. 删除链表中等于给定值 val 的所有节点(最多遍历链表一遍)题目思路代码 2. 反转一个单链表(就地反转) 1. 删除链表中等于给定值 val 的所有节点(最多遍历链表一遍) 力扣链接&am…

基于JSON的Ollama和LangChain agent

到目前为止,我们都可能意识到,通过为LLMs提供额外的工具,我们可以显著增强它们的功能。 例如,即使是ChatGPT在付费版本中也可以直接使用Bing搜索和Python解释器。OpenAI更进一步,为工具使用提供了经过优化的LLM模型&am…

GIT 卸载干净(图文详解)

一、控制面板卸载 右击卸载 等待卸载过程 二、在环境变量,把相关信息删除干净

巧妙解决接口测试产生脏数据问题

测试数据创建后需要对其删除,不然可能产生脏数据,对开发和测试、生产环境造成一定影响。 其接口框架是基于Python,API规范基于REST。 产生原因 改进前:清除资源的操作放在每个正向测试用例里,没有在setUp和tearDown…

使用 MongoDB Atlas 无服务器实例更高效地开发应用程序

使用 MongoDB Atlas无服务器实例更高效地开发应用程序 身为开发者,数据库并不一定需要您来操心。您可不想耗费时间来预配置集群或调整集群大小。同样地,您也不想操心因未能正确扩展而导致经费超标。 MongoDB Atlas 可为您提供多个数据库部署选项。虽然…

Vue路由(黑马程序员)

路由介绍 将资代码/vue-project(路由)/vue-project/src/views/tlias/DeptView.vue拷贝到我们当前EmpView.vue同级,其结构如下: 此时我们希望,实现点击侧边栏的部门管理,显示部门管理的信息,点击员工管理,显…

Vision Pro开发者学习路线

官方给到的Vision Pro开发者学习路线: 1. 学习基础知识: - 学习 Xcode、Swift 和 SwiftUI 的基础知识,包括语法、UI 设计等。 - 掌握 ARKit 和 SwiftUI 的使用,了解如何创建沉浸式增强现实体验。 2. 学习 3D 建模&#xf…

【latex】\IEEEpubid版权声明与正文内容重叠

问题描述 撰写IEEE Trans论文时,出现版权声明文字\IEEEpubid与正文内容重叠的问题: 原因分析: 在使用模板时,不小心将以下命令删除了: \IEEEpubidadjcol 解决方案: 在需要换页的位置附近添加以上命令&…

Appium自动化测试环境搭建

1、Appium简介 Appium是一个开源的,适用于原生或混合移动应用( hybrid mobile apps )的自动化测试平台,Appium应用WebDriver: JSON wire protocol驱动安卓和iOS移动应用。 2、环境配置 (1) 配置java环境 首先安装jdk。安装完成后新建用户…