天天看點

rdkit 讀寫分子操作一、簡介二、讀分子操作三、寫分子操作

讓計算機識别化學分子是計算化學的必備技能,也是對分子進行各種操作的基礎。

文章目錄

  • 一、簡介
  • 二、讀分子操作
    • 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分子結構

rdkit 讀寫分子操作一、簡介二、讀分子操作三、寫分子操作

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分子結構

rdkit 讀寫分子操作一、簡介二、讀分子操作三、寫分子操作

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