You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RDKit中对应ECFP4的指纹类型及两种Morgan指纹相似度差异问询

RDKit Morgan指纹常见问题解答

1. ECFP4对应的Morgan指纹半径

ECFP系列命名的后缀数字代表子结构的直径,RDKit中Morgan指纹的radius参数代表子结构的半径,直径=2×半径,因此半径为2的Morgan指纹对应ECFP4,半径为4的Morgan指纹对应ECFP8。

2. 两种Morgan指纹函数计算相似度差异大的原因

GetMorganFingerprintAsBitVect与GetMorganFingerprint返回的指纹类型完全不同,差异主要来自两点:

  • 信息维度与相似度计算逻辑不同
    • GetMorganFingerprint返回稀疏计数型哈希向量(SparseIntVect),默认哈希空间为2^32,无长度折叠几乎不存在碰撞,同时会存储每个子结构在分子中的出现次数。计算相似度时使用计数型谷本系数,公式为sum(min(a_i, b_i)) / sum(max(a_i, b_i)),高频出现的共有子结构会大幅拉高相似度结果。
    • GetMorganFingerprintAsBitVect(nBits=2048)返回固定长度二值折叠指纹,所有子结构会被哈希折叠到指定的2048位,仅记录位的有无不保留出现次数。计算相似度时使用二值谷本系数,公式为(A & B).GetNumOnBits() / (A | B).GetNumOnBits(),所有子结构权重完全一致,丢失了高频共有子结构的权重优势,自然会得到更低的相似度结果。
  • 位碰撞的附加影响
    当分子的子结构总数量远大于2048时,不同子结构可能被哈希到同一位产生碰撞,多数情况下碰撞会带来假阳性共有位、小幅提升相似度,但极端情况下也可能进一步干扰相似度计算的准确性。

如果需要缩小二者的结果差异,可以选择两种方案:一是增大nBits参数到8192或16384,降低位碰撞概率;二是使用GetHashedMorganFingerprint获取折叠计数型指纹,用计数型谷本系数计算相似度,结果会更接近GetMorganFingerprint的输出。

内容的提问来源于stack exchange,提问作者Philipp O.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 02:18:01