Python 使用RDKit计算sdf文件和结构文件之间的Tanimoto相似性?

Python 使用RDKit计算sdf文件和结构文件之间的Tanimoto相似性?,python,scipy,rdkit,Python,Scipy,Rdkit,我正在使用RDKIt和Python3.7计算sdf(每个结构的微笑)中的数据库与我拥有微笑的分子的相似性。我发现了一种只在两个微笑之间计算Tanimoto指数的方法,使用以下代码: import numpy as np import scipy import matplotlib import matplotlib.pyplot as plt import rdkit as rd from rdkit import Chem ref = Chem.MolFromSmiles('Nc1nc2

我正在使用RDKIt和Python3.7计算sdf(每个结构的微笑)中的数据库与我拥有微笑的分子的相似性。我发现了一种只在两个微笑之间计算Tanimoto指数的方法,使用以下代码:

import numpy as np 
import scipy
import matplotlib
import matplotlib.pyplot as plt
import rdkit as  rd
from rdkit import Chem

ref = Chem.MolFromSmiles('Nc1nc2nc(N)nc(N)c2nc1-c1cccc(Cl)c1')
mol1 = Chem.MolFromSmiles('structure smiles')
fp1 = Chem.RDKFingerprint(ref)
fp2 = Chem.RDKFingerprint(mol1)

Tan  =DataStructs.TanimotoSimilarity(fp1,fp2)

print (Tan)

有没有办法用sdf文件替换mol1?

您可以使用
SDMOLProvider
对sdf进行迭代

from rdkit import Chem, DataStructs

ref = Chem.MolFromSmiles('Nc1nc2nc(N)nc(N)c2nc1-c1cccc(Cl)c1')
fp1 = Chem.RDKFingerprint(ref)

suppl = Chem.SDMolSupplier('yourSDF.sdf')
for mol in suppl:
    fp2 = Chem.RDKFingerprint(mol)
    Tan = DataStructs.TanimotoSimilarity(fp1,fp2)
    print(Tan)