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文件中用于后续分析