[drug] Rdkit

Count Simulation reference https://greglandrum.github.io/rdkit blog/posts/2021 07 06 simulating counts.html 对每一个 feature(比如某个 Morgan 子结构),不只用 1 个 bit 表示“是否存在”,而是用多个 bit 表示“出现多少次”。对

Count Simulation

reference

对每一个 feature(比如某个 Morgan 子结构),不只用 1 个 bit 表示“是否存在”,而是用多个 bit 表示“出现多少次”。对每个 feature N,预留 4 个 bit:

bit阈值
bit1≥1
bit2≥2
bit3≥4
bit4≥8

添加图片注释,不超过 140 字(可选)

  • 前两个 bit 是黑色(开), 后两个是白色(关),说明该 feature 出现了 2 或 3 次

为什么不用普通二进制表示?如果直接用二进制表示 count,分子 A 有 1 次 → 1000,分子 B 有 2 次 → 0100,两个 bit 完全不重合 → Tanimoto = 0

代价是有效长度变短。假设原本 2048 bit,每个 feature 用 4 个 bit,2048 / 4 = 512,等效上只有 512 个独立位置。

什么是 collision?不同 feature hash 到同一个 bit。bit 越少 → collision 越多,collision 越多 → similarity 噪音越大

RDKit topological fingerprint本身就会设置很多 bit,密度很高。当你再用 count simulation,每个 feature 占 4 个 bit,有效长度缩小,collision 急剧增加,除非把 fingerprint 长度增加,比如2048 → 4096 或 8192

fpgen3 = rdFingerprintGenerator.GetRDKitFPGenerator(fpSize=8192,countSimulation=True)

Chirality手性

添加图片注释,不超过 140 字(可选)

Chirality = 分子不能和自己的镜像重叠

最常见情况,一个碳连着四个不同的取代基,叫做 手性中心 (chiral center)。

典型例子:沙利度胺(一个治疗,一个致畸),所以在 drug discovery 里,chirality 非常关键。

Morgan Fingerprint 的 default 默认关掉 chirality ,但可以打开

fp = AllChem.GetMorganFingerprintAsBitVect(
    mol,
    radius=2,
    nBits=2048,
    useChirality=True
)

如果 chirality 没有打开,那么R-乳酸 和 S-乳酸的fingerprint 完全一样。

什么时候开什么时候不开呢?

添加图片注释,不超过 140 字(可选)