分子相似性搜索通过比较化学特征的数值表示,识别与目标分子具有结构或功能相似性的化合物。 这个过程涉及三个核心步骤:将分子编码为可计算的格式、计算相似性度量以及高效搜索大型数据库。 例如,分子可以表示为指纹——一个二进制向量,其中每个位指示特定子结构的存在与否。 这些指纹可以进行系统比较,使算法能够量化相似性并对结果进行排序。
相似性通常使用 Tanimoto 系数等指标来衡量,该系数计算两个分子指纹之间的重叠。 如果两个分子共享许多子结构,则它们的 Tanimoto 分数(共享位与总唯一位的比率)接近 1,表明相似性很高。 例如,咖啡因和茶碱(都是兴奋剂)可能由于共享甲基黄嘌呤结构而具有重叠的指纹位,从而产生较高的相似性分数。 诸如 Dice 或 Cosine 相似性之类的其他度量标准提供了优先考虑特定特征的替代方法,例如更重地加权稀有子结构。 这些计算在计算上很轻量,使其可扩展用于大型数据集。
高效搜索依赖于优化的数据结构和算法,以避免暴力比较。 倒排索引预先计算指纹位与包含它们的分子之间的映射,从而减少了要评估的候选者子集。 例如,搜索具有特定芳香环的分子可能只会检查在该环的位下索引的条目。 诸如局部敏感哈希 (LSH) 之类的近似方法将相似分子分组到“buckets”中,从而实现恒定时间查找。 诸如 RDKit 或 OpenBabel 之类的库实现了这些技术,使开发人员可以将相似性搜索集成到用于药物再利用或毒性预测等任务的管道中。 通过平衡准确性和速度,这些方法使得在几秒钟内搜索具有数百万种化合物的数据库成为可能。