230

ZINC:虚拟筛选化合物库入门

ZINC 提供可商业获取化合物的免费三维库,是虚拟筛选取样的标准来源。这篇讲清子集选择、下载方式与用它做筛选时的实际配置。

ZINC(UCSF Shoichet 组)是虚拟筛选最常用的免费化合物库。它的定位很明确:收录可以真正买到的分子,并预先处理好质子化态和三维构象,直接可用于对接。这一点区别于 PubChem 那种「什么都收」的库——虚拟筛选筛出一个买不到的分子没有意义。

版本与规模

版本 规模 特点
ZINC15 约 10 亿(含 make-on-demand) 子集划分体系成熟
ZINC20 / ZINC22 数十亿级 加入超大按需合成空间,检索更快
现货部分(in-stock) 约 1,000 万 可直接采购,交付快

「现货」和「按需合成」的区别很重要:现货分子几天到几周能拿到,按需合成的通常需要数周且有失败率。做首轮验证时优先选现货。

子集怎么选

ZINC 按性质预先切好了子集,用三个维度编码:分子量档、logP 档、可获得性档。常用的命名子集:

  • lead-like:MW 250–350、logP ≤ 3.5、可旋转键 ≤ 7。先导化合物发现的默认选择——留出后续优化时增重的空间。
  • drug-like:MW 250–500、logP ≤ 5,符合类药规则。
  • fragment-like:MW ≤ 250,用于片段筛选。
  • in-stock / now:现货可采购。
  • boutique:天然产物、代谢物、已批准药物等特殊集合。

虚拟筛选建议从 lead-like 起步。直接筛 drug-like 容易得到已经很大很脂溶的分子,后续优化空间被压缩——这是新手常见的策略错误。

下载

# ZINC 网站可生成定制下载脚本(选好子集后给出 wget 列表)
wget -i zinc_download_list.txt

# 也可用 tranche 浏览器按 MW/logP 网格选择
# 单个分子
curl "https://zinc20.docking.org/substances/ZINC000000053730.smi"

# 按供应商catalog 取子集
curl "https://zinc20.docking.org/substances/subsets/in-stock.smi?count=all"

提供 SMILES、SDF(含 3D 构象)、MOL2、PDBQT 等格式。直接下 PDBQT 能省掉自己做对接准备的大量时间,但要确认其质子化态设置符合你的需求。

做虚拟筛选时的实际配置

# 典型的分级筛选策略
# 1) 从 lead-like in-stock 子集起步(约 300~600 万)
# 2) 性质与结构过滤
python filter.py --input zinc_leadlike.smi \
  --mw 250 350 --logp -1 3.5 --rotb 0 7 --tpsa 20 90 \
  --remove-pains --remove-reactive --output filtered.smi

# 3) 多样性抽样或按相似性聚焦
# 4) 快速对接初筛(Vina,exhaustiveness=8)
# 5) top 1% 重打分(GNINA CNN rescore)
# 6) top 100~500 人工审查 + 采购

使用注意

  • 质子化态是预设的:ZINC 按 pH 7 预生成了主要质子化形式,有些分子有多个形式(同一分子多个 ZINC ID)。对接时要注意别重复计数。
  • 构象只是一个:SDF 里通常只有一个低能构象。对接程序会自己搜索柔性,但如果用刚性方法或形状比较,需要自己生成构象集合。
  • 可采购性会过期:数据库快照与供应商实际库存有滞后。下单前一定要在 Mcule / eMolecules 等平台核实实际可得性与价格(见 232《Mcule》233《eMolecules》)。
  • 化学多样性有偏:商业库反映的是供应商的合成偏好,某些骨架类型过度代表,某些化学空间几乎空白。
  • 规模要匹配算力:十亿级库无法全量对接。要么用 lead-like 子集降到百万级,要么上机器学习加速筛选(先对小样本对接,训模型预测其余)。

上手提示

  • 虚拟筛选默认从 lead-like 子集起步,给后续优化留空间;
  • 首轮验证优先选 in-stock 现货,交付快、失败率低;
  • 直接下 PDBQT 省事,但要确认质子化态设置合适;
  • 下单前必须在采购平台核实实际可得性与价格。

延伸资源