虚拟筛选主流工具
虚拟筛选(Virtual Screening, VS)通过计算在百万级化合物库中寻找潜在活性分子,是药物发现早期阶段的核心手段。本文介绍主流对接软件、完整流程与注意事项。
1. 虚拟筛选的基本逻辑
受体结构(蛋白/核酸)
↓
① 受体准备(加氢、质子化、网格)
↓
② 化合物库(ZINC / Enamine / 自建库)
↓
③ 配体准备(3D 构象、质子化、力场参数)
↓
④ 分子对接(构象采样 + 打分)
↓
⑤ 排序筛选(Top 100-1000)
↓
⑥ 实验验证(IC50 / 活性测定)
2. 主流对接软件
2.1 AutoDock Vina(开源首选)
最流行的开源对接软件,速度与精度平衡良好:
# 1. 受体与配体准备(用 MGLTools 或脚本)
# 受体:pdb → pdbqt(加氢、合并非极性氢)
# 配体:sdf/mol2 → pdbqt
# 2. 配置文件(conf.txt)
receptor = receptor.pdbqt
ligand = ligand.pdbqt
center_x = 10.5
center_y = 20.3
center_z = -5.8
size_x = 22
size_y = 22
size_z = 22
exhaustiveness = 16
num_modes = 9
# 3. 运行
vina --config conf.txt --out results.pdbqt --log log.txt
# 4. 解读:affinity(kcal/mol)越低越好
# mode | affinity | dist from best mode
# -----+------------+----------------------
# 1 | -9.2 | 0.000
# 2 | -8.7 | 2.315
2.2 Glide(Schrödinger,商业)
制药行业标准:
# 准备工作流(Maestro GUI 或命令行)
glide -overwrite -adjust \
-receptor receptor.maegz \
-ligand ligands.maegz \
-p glide_docking.inp \
-NJOBS 16
# 三种精度模式
# HTVS(高通量,快)→ SP(标准精度)→ XP(高精度,慢)
优势:精确的配体柔性处理、完善的打分校准、大型药企生态支持。
2.3 DOCK 6(开源)
经典几何匹配算法(shape matching):
dock6 -i dock.in -o dock.out
# 球集(sphere)生成 → 取向搜索 → 打分
# 擅长:结合口袋形状匹配、大库初筛
2.4 其他常用软件
| 软件 | 特点 |
|---|---|
| AutoDock4 | 经典遗传算法,精度高速度慢 |
| rDock | 开源、适合大库、易脚本化 |
| GOLD | 遗传算法,CCDC 出品 |
| LeDock | 快速、易用(学术免费) |
| Plants | 基于 Ant Colony 优化 |
| smina | Vina 的增强版(支持自定义打分) |
3. 受体准备(关键第一步)
3.1 结构来源
- 晶体/冷冻电镜结构(PDB)
- AlphaFold 预测结构(无实验结构时)
- 注意:结合口袋附近的柔性(侧链)处理
3.2 准备要点
# 常用工具
# Schrödinger Protein Prep Wizard(商业)
# ADFRsuite / MGLTools prepare_receptor4.py(免费)
python prepare_receptor4.py -r receptor.pdb -o receptor.pdbqt
# 关键步骤
# 1. 去除水分子(保守水除外)
# 2. 加氢、确定质子化状态(pH 7.4 附近)
# 3. 分配键序与电荷(Amber/CHARMM 力场)
# 4. 定义结合口袋(已知活性位点 or 空腔检测:fpocket / DoGSiteScorer)
4. 配体库与准备
4.1 化合物库来源
| 库 | 规模 | 特点 |
|---|---|---|
| ZINC20 | 数十亿 | 免费、可下载、带 3D 构象 |
| Enamine REAL | > 400 亿 | 可合成性高、商购 |
| ChEMBL | 活性数据 | 已知活性化合物 |
| 自建库 | 定制 | 衍生物设计 |
4.2 配体准备
# 3D 构象生成
obabel ligand.smi -O ligand.sdf --gen3d -p 7.4
# 多构象(柔性重要,尤其环状体系)
obabel ligand.sdf -O conf.sdf --conformer --nconf 50
# 质子化与电荷
# Schrödinger LigPrep / Open Babel / RDKit
# RDKit 准备(Python)
from rdkit import Chem
from rdkit.Chem import AllChem, rdMolDescriptors
mol = Chem.MolFromSmiles("CC(=O)Oc1ccccc1C(=O)O")
mol = Chem.AddHs(mol)
AllChem.EmbedMolecule(mol, AllChem.ETKDG())
5. 打分函数(Scoring Functions)
5.1 三类打分函数
| 类型 | 代表 | 原理 |
|---|---|---|
| 力场型 | DOCK、AutoDock4 | 范德华+静电+内能 |
| 经验型 | Glide、Vina | 统计拟合实验数据 |
| 知识型 | GOLD/ASP | 原子对距离分布统计 |
5.2 打分函数的局限(必须知道)
- 不精确:相关系数通常 0.3–0.6,只能排序不能给绝对亲和力
- 熵效应、溶剂效应、诱导拟合难以准确描述
- 建议:对接分数 + 多工具交叉验证 + 分子动力学(MM/PBSA、FEP)精算
6. 完整高通量筛选流程(HTS 实操)
# 1. 库准备:SDF 拆分 + 转 pdbqt
mkdir -p ligands_pdbqt
obabel library.sdf -O ligands_pdbqt/lig_.pdbqt -m -p 7.4
# 2. 批量对接(smina/Vina 多文件模式)
smina -r receptor.pdbqt -l library.sdf \
--center_x 10.5 --center_y 20.3 --center_z -5.8 \
--size_x 22 --size_y 22 --size_z 22 \
--num_modes 1 --cpu 32 \
-o docked.sdf --log scores.txt
# 3. 排序(按 affinity)
sort -k2 -n scores.txt | head -100
6.1 多阶段漏斗策略
粗筛(HTVS / Vina,百万级)→ 前 5-10%
↓
标准精度(SP / 多构象)→ 前 10-20%
↓
高精度(XP / 诱导拟合)→ Top 100-1000
↓
共识打分(多个软件交叉)→ Top 50-200
↓
视觉检查(结合模式合理性)→ Top 10-50
↓
实验测试
6.2 共识打分(Consensus Scoring)
不同软件打分函数互补,取交集/排名平均可显著提升富集率:
# 示例:Vina + Glide + LeDock 三软件 Top 100 取交集
# 或按排名归一化后取平均
7. 验证与高级方法
7.1 基准测试(Benchmark)
- DUD-E:标准数据集(含活性物与诱饵 decoys),评估软件区分能力
- 指标:AUC、富集因子(EF1%、EF5%)
7.2 分子动力学后处理
# 对接结果 → MD 模拟(GROMACS/AMBER)→ MM/PBSA 结合自由能
gmx mdrun -deffnm complex
gmx_MMPBSA -O -i mmpbsa.in -cs complex.tpr -ct traj.xtc ...
7.3 结构基与配体基结合
- 基于结构(SBDD):对接 + MD + FEP
- 基于配体(LBDD):药效团、QSAR、相似性搜索
- 组合策略是现代虚拟筛选主流
8. 常见陷阱
| 陷阱 | 后果 | 规避 |
|---|---|---|
| 口袋定义错误 | 全库错位 | 用已知活性位点或实验信息 |
| 受体刚性 | 错过诱导拟合 | 柔性侧链 / 集合对接(ensemble docking) |
| 质子化状态错误 | 静电打分失真 | pH 相关准备(pH 7.4) |
| 打分函数过信 | 假阳性率高 | 共识打分 + 视觉检查 |
| 忽略可合成性 | 筛出无法合成 | 过滤 PAINS、类药性规则(Lipinski/Veber) |
9. 小结
- 三梯队:Vina(开源快速)→ Glide(商业标准)→ DOCK/rDock(大库)
- 流程:受体准备 → 配体库 → 对接 → 多阶段漏斗 → 实验验证
- 打分函数只能排序;共识打分 + MD 精算提升可信度
- 虚拟筛选的终点永远是实验
至此计算生物学方向完成:蛋白质设计工具 + 虚拟筛选工具,两条主线构成"设计-筛选"的计算药物发现闭环。