rdkit 读写分子操作

让计算机识别化学分子是计算化学的必备技能,也是对分子进行各种操作的基础。

一、简介

rdkit支持从Smiles、mol、sdf文件中读入分子获取分子对象。Smiles、mol通常用于保存单个分子;而sdf格式是作为分子库形式设计的。
因此读入sdf得到的是分子迭代器,读入Smiles、mol文件得到分子对象。

二、读分子操作

2.1 引入所需库

#! /usr/bin/python
# coding: utf-8
# rdkit 读写分子

from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import Draw

2.2 读入smiles

smi='CC(C)OC(=O)C(C)NP(=O)(OCC1C(C(C(O1)N2C=CC(=O)NC2=O)(C)F)O)OC3=CC=CC=C3'
mol = Chem.MolFromSmiles(smi)   # 将Smiles转换为mol对象
# 将Mol分子画出结构图,并存储在相应地址
Draw.MolToImageFile(
    mol,    # mol分子对象
    "/Users/zeoy/st/drug_development/st_rdcit/img/mol2.jpg" # 分子结构图存储地址
)
# mol的类型=<class 'rdkit.Chem.rdchem.Mol'>
print('mol的类型=',type(mol))   

mol分子结构
mol分子结构

2.3 读入mol文件

moL文件

# 将mol文件转换为mol对象
mol3 = Chem.MolFromMolFile('/Users/zeoy/st/drug_development/st_rdcit/952883.mol')
# 将Mol分子画出结构图,并存储在相应地址
Draw.MolToImageFile(
    mol3,    # mol分子对象
    # 分子结构图存储地址
    "/Users/zeoy/st/drug_development/st_rdcit/img/mol3.jpg" 
)
# mol3的类型=<class 'rdkit.Chem.rdchem.Mol'>
print('mol3的类型=',type(mol))  

mol分子结构
mol分子结构

2.4 读入sdf文件

mols_suppl = Chem.SDMolSupplier('/Users/zeoy/st/drug_development/st_rdcit/2d.sdf')
print('类型=',type(mols_suppl))
for _mol in mols_suppl:
     # mol3的类型=<class 'rdkit.Chem.rdchem.Mol'>
     print('类型=',type(_mol))  

三、写分子操作

RDKit可以把分子对象保存成Smiles、molBlock、mol文件

3.1 写将分子对象存储为mol文件

注:
print(*objects, sep=’ ‘, end=’n’, file=sys.stdout, flush=False)
python的print函数file参数支持定义输出位置。

smi4='CC(C)OC(=O)C(C)NP(=O)(OCC1C(C(C(O1)N2C=CC(=O)NC2=O)(C)F)O)OC3=CC=CC=C3'
mol4 = Chem.MolFromSmiles(smi4)
smi4 = Chem.MolToSmiles(mol4)
print('mol分子对象=',smi4)
molblock = Chem.MolToMolBlock(mol4)
print(molblock)
print(
	molblock,
	file=open(
	    '/Users/zeoy/st/drug_development/st_rdcit/stock.mol',
	    'w+'
	 )
)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章