Count Simulation
对每一个 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 字(可选)