1、将化学分子的inchi表示批量转化为分子图表示。
可以使用rdkit.Chem.inchi module的rdkit.Chem.inchi.MolFromInchi函数。常见的关于inchi表示的一些操作函数都可以在rdkit.Chem.inchi module里,但没有从Inchi直接转化为smile的函数。
#从inchi转为分子图
from rdkit import Chem
with open('inchi数据.txt') as f:
inchis = f.readlines()
mols = []
for inchi in inchis:
#print(inchi)
#print(type(inchi))
mol = Chem.inchi.MolFromInchi(inchi.strip(),sanitize=None)#这个地方用strip删空格是因为读入的时候有加入空白,不删除会导致inchi.MolFromInch函数无法返回分子图。(报错形式:[16:28:12] Error)
#print(mol)
mols.append(mol)
2、将分子图转化为inchi表示。
可以使用如下函数,但是我没有用过。
rdkit.Chem.inchi.MolToInchi(mol, options=’’, logLevel=None, treatWarningAsError=False)
3、将分子图表示批量转化为smiles表示。
#从分子图转为smile格式
from rdkit import Chem
smis=[]
for mol in mols:
smi = Chem.MolToSmiles(mol)
#print(smi)
smis.append(smi)
4、将smiles表示批量转化为分子图表示。
from rdkit import Chem
smis=[]
for i in open ("with and without data augmentation intersection.txt"):
smis.append(i)
mols = []
for smi in smis:
print(smi)
mol = Chem.MolFromSmiles(smi)
mols.append(mol)
5、将分子图以图片的形式保存
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import Draw
from rdkit.Chem.Draw.MolDrawing import MolDrawing, DrawingOptions
img = Draw.MolsToGridImage(mols, molsPerRow=5, subImgSize=(300, 300))
img.save("1.png")
记录RDKit的学习资源:
1、http://rdkit.chenzhaoqiang.com/basicManual.html#id28
2、http://www.rdkit.org/docs/index.html