讓計算機識别化學分子是計算化學的必備技能,也是對分子進行各種操作的基礎。
文章目錄
- 一、簡介
- 二、讀分子操作
-
- 2.1 引入所需庫
- 2.2 讀入smiles
- 2.3 讀入mol檔案
- 2.4 讀入sdf檔案
- 三、寫分子操作
-
- 3.1 寫将分子對象存儲為mol檔案
一、簡介
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分子結構
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分子結構
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+'
)
)