2022-01-10 利用RDKit基于分子指纹相似性对sdf小分子数据进行筛选

import rdkit

from rdkit import Chem

from rdkit.Chem import Draw

from rdkit.Chem import AllChem

from rdkit.Chem import Draw

from rdkit import DataStructs

from rdkit.Chem import Descriptors

#导入相应的包和函数

suppl = Chem.SDMolSupplier('C:/Users/zhangguhua/Desktop/pycharm_job_path/Fragment_Library_4063.sdf')

#导入带筛选数据

mols = [mol for mol in suppl if mol is not None]

#读取为分子对象

fo = open('C:/Users/zhangguhua/Desktop/pycharm_job_path/Sulcotrione.smi').read()

ref_mol = Chem.MolFromSmiles(fo)

#读入参考分子 为分子对象

fo_fp = AllChem.GetMorganFingerprint(ref_mol,2)

mols_fps = [(mol,AllChem.GetMorganFingerprint(mol,2)) for mol in mols]

#计算分子指纹

fo_mols = [(m,DataStructs.TanimotoSimilarity(fo_fp,mols_fp)) for m,mols_fp in mols_fps]

sorted_fo_mols = sorted(fo_mols,reverse=True,key=lambda x: x[1])

#计算分子指纹相似性并根据大小进行排序

result = sorted_fo_mols[:200]

test_20 = open('C:/Users/zhangguhua/Desktop/pycharm_job_path/test20.sdf','w')

writer = Chem.SDWriter(test_200)

for x,y in result:

  writer.write(x)

writer.close

创建sdf文件,并将筛选得到的结果写入到sdf文件中用于后续分析

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容