RDKit|一站式搞定分子读取、输出、可视化

本文详细介绍RDKit在分子结构读取、输出、可视化方面的应用,包括SMILES、SDF、MOL等多种格式处理,以及分子属性计算和3D结构展示。

一、简介

让计算机识别分子结构是计算化学码农的必备技能,也是对分子进行后续操作的基础。本文整理和总结了rdkit进行读取、输出和可视化的一些方法,包含对SMILES、SDF、MOL、MOL2、CSV等文件的处理,以及分子的结构展示。

二、读取分子

2.1.读SMILES/SMARTS

2.1.1.直接读字符串

  • 从SMILES/SMARTS直接读取
    很简单了,不必多说
>>> from rdkit import Chem
>>> m = Chem.MolFromSmiles('C[C@H](O)c1ccccc1')
>>> m = Chem.MolFromSmarts('Cc1ccccc1')

2.1.2.文件批量读取

文件类似这样(格式化的就行):

SMILES Name
C1=CC=CC=CC=C1 0
c1ccccc1 1
c1cocc1 2
  • 从.smi批量读取:SmilesMolSupplier(data, delimiter, smilesColumn, nameColumn, titleLine, sanitize)
    data:数据文件
    delimiter:分隔符,默认为’ ’
    smilesColumn:SMILES所在列,默认为0
    nameColumn:SMILES名称所在列,默认为1
    titleLine:是否含有标题行,默认True
    sanitize:是否检查正确性,默认True
>>> suppl = Chem.SmilesMolSupplier('data/batch_smiles.smi', delimiter='\t')
>>> mols = [Chem.MolToSmiles(mol) for mol in suppl]
>>> print(mols)
['C1=CC=CC=CC=C1', 'c1ccccc1', 'c1ccoc1']

2.1.3.文本批量读取

  • 从文本批量读取:SmilesMolSupplierFromText()
    参数基本同上
>>> with open('data/batch_smiles.smi', 'r') as f:
>>>     mols_text = f.read()
>>> suppl = Chem.SmilesMolSupplierFromText(mols_text, delimiter='\t')
>>> mols = [Chem.MolToSmiles(mol) for mol in suppl]
>>> print(mols)
['C1=CC=CC=CC=C1', 'c1ccccc1', 'c1ccoc1']

2.1.4.DataFrame批量读取

  • 读取DataFrame中的SMILES:AddMoleculeColumnToFrame(frame, smilesCol, molCol, includeFingerprints)
    frame:DataFrame对象
    smilesCol:SMILES所在列
    molCol:新列名,将存放产生的rdkit mol对象
    includeFingerprints:是否生成指纹
  • 顺便计算下分子量:Descriptors.MolWt()
>>> import pandas as pd
>>> from rdkit.Chem import Descriptors
>>> from rdkit.Chem import PandasTools
>>> df = pd.read_csv('data/smiles_df.csv')
>>> PandasTools.AddMoleculeColumnToFrame(df,'SMILES','mol',includeFingerprints=True)
>>> df['MW'] = df['mol'].apply(Descriptors.MolWt)
>>> df.head(2)

           Name                 SMILES                         mol         MW  
0    Lanreotide     c1(c2c(cccc2)[nH...   <img data-content="rd...   1096.347  
1  Lansoprazole     Cc1c(OCC(F)(F)F)...   <img data-content="rd...    369.368 

2.2.读.sdf

2.2.1.文件批量读取

  • 从.sdf里批量读取:SDMolSupplier(fileName, sanitize, removeHs, strictParsing)
    fileName:文件名
    sanitize:检查化合价,计算芳香性、共轭、杂化、kekule,默认True
    removeHs:是否隐藏氢原子,默认True
    strictParsing:是否使用严格模式进行解析,默认True
>>> suppl = Chem.SDMolSupplier('da
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值