按任务学习

按 ECFP4 相似度排序已验证的 SMILES 库

将一个查询分子与本地已验证列表比较,并保留最高的 Tanimoto 分数。

完成内容

保留查询、候选 SMILES、ECFP4 方法和分数的可重复高分命中列表。

步骤

  1. 先验证库,确保分数仍可对应输入行。
  2. 设置查询分子和候选 SMILES 列表。
  3. 运行一对多 ECFP4 Tanimoto 评分,按降序排序,并与输入一起保留。
import chematic
import numpy as np

query = "CC(=O)OC1=CC=CC=C1C(=O)O"
library = ["O=C(O)c1ccccc1O", "CCO", "c1ccccc1"]  # 已验证 SMILES
scores = chematic.bulk.tanimoto_search(query, library)
for index in np.argsort(scores)[::-1][:3]:
    i = int(index)
    print(library[i], f"{float(scores[i]):.3f}")

预期结果

候选会按 ECFP4 Tanimoto 分数降序输出。对同一查询和已验证库重复运行得到同一排序。

遇到问题时

bulk.tanimoto_search 会跳过无效库条目,因此在完成验证前,不应使用其数组位置标识原始数据行。相似度不是活性、安全性或合成可行性的证据。

下一步

阅读 Python 工作流