关于RDKit的Morgan指纹功能,我确实有两个问题。我不知道半径为2或4的Morgan指纹是否对应于ECFP4。此外,我不明白,当使用GetMorganFingerprintAsBitVect(nBits=2048)
而不是GetMorganFingerprint
时,为什么计算出的两个分子之间的相似性差异很大(小得多(?非常感谢您的帮助或解释。亲切问候Philipp
根据https://www.rdkit.org/docs/GettingStartedInPython.html,半径2大致等于ecfp4。
默认原子不变量使用类似于用于众所周知的ECFP指纹家族的那些。基于特征的不变量,类似于FCFP中使用的不变量指纹。使用的功能定义如下在Morgan中使用的特征定义一节中定义指纹。有时,这会导致截然不同的相似性分数:
m1 = Chem.MolFromSmiles('c1ccccn1') m2 = Chem.MolFromSmiles('c1ccco1') fp1 = AllChem.GetMorganFingerprint(m1,2) fp2 = AllChem.GetMorganFingerprint(m2,2) ffp1 = AllChem.GetMorganFingerprint(m1,2,useFeatures=True) ffp2 = AllChem.GetMorganFingerprint(m2,2,useFeatures=True) DataStructs.DiceSimilarity(fp1,fp2) 0.36... DataStructs.DiceSimilarity(ffp1,ffp2) 0.90...
当比较ECFP/FCFP指纹和RDKit生成的Morgan指纹时,请记住ECFP4中的4对应于所考虑的原子环境的直径,而Morgan指纹有一个半径参数。所以这些例子以上,半径为2,大致相当于ECFP4和FCFP4。