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+'
	 )
)

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