想象你是一位专修疑难锁的老锁匠。这天,医院送来一把古怪的锁:一个与疾病相关的蛋白质靶点。你的任务是从仓库里十万把候选钥匙中,找到能打开这把锁的小分子药物。所谓分子对接,就是不断把钥匙举到锁孔前,旋转、试探、倾听,判断齿形是否与锁芯吻合;而虚拟筛选,则是先通过标签和经验快速淘汰绝大多数钥匙,再对剩下的小批量进行精密的逐一试锁。 这个故事贯穿了药物发现中最关键的两个环节:分子对接(AutoDock Vina、Glide)和虚拟筛选。后续所有概念——受体、配体、打分函数、构象搜索、结合自由能、富集因子——都不过是锁匠工具箱里的不同器具。读完本文,你会从“听故事的人”变成“能上手开锁的学徒”。
懂得分子对接与虚拟筛选,你就能把 AI 生成的分子放进真实蛋白质口袋里检验,让药物发现从“纸上谈兵”走向“虚拟试错”。
目录
可视化演示
展示配体-受体对接过程、AutoDock Vina打分函数能量分解与虚拟筛选流水线。
本节配有交互动效(进入视口后自动加载,约 3KB)。
分子对接过程 受体口袋 配体分子 ΔG=vdW+Elec+HB+Lipo 结合自由能
对接基础概念:锁、钥匙与锁孔
想象你是一位专修疑难锁的锁匠。这天诊所送来一把古怪的锁——一个与疾病相关的蛋白;你需要从仓库里找一把能打开的钥匙——一种候选小分子。所谓分子对接,就是把钥匙举到锁孔前,一边旋转一边看齿形是否贴合的过程。
在计算生物学里,这把锁叫受体(receptor),钥匙叫配体(ligand)。受体表面凹陷下去、能容纳配体并发生相互作用的区域叫结合口袋。如果锁芯完全僵硬,就叫刚性对接;如果锁芯会随着钥匙插入微微变形,就叫柔性对接。真实的蛋白口袋大多会动,所以完全刚性的假设只是简化。
对接好坏不能只看“能不能插进去”,还要问“插得有多稳”。亲和力用结合自由能 \(\Delta G_{bind}\) 描述,值越负,结合越稳定。
所以分子对接的第一课是:不要只找能塞进锁孔的钥匙,还要找“转起来顺手、拔下来费劲”的钥匙。这就是后面所有打分函数要服务的核心目标。
- 解离常数 \(K_d\)它反映钥匙从锁上取下来的难易程度,\(K_d\) 越小表示钥匙与锁结合越紧密。
- 自然对数 \(\ln\)结合强度经常跨越多个数量级,取对数后数据更平滑,便于计算。
- 温度因子 \(RT\)\(R\) 是气体常数,\(T\) 是绝对温度,两者相乘把对数结果换算成能量单位。
- 负号与自由能负号让 \(K_d\) 越小、\(\Delta G_{bind}\) 越负,正好对应“结合越稳”。
打分与构象搜索:锁匠的五本账
老锁匠判断一把钥匙好不好,不会只看轮廓。他要听齿尖在锁簧上滑过的声音,看是否卡顿,测静电吸引,还要算钥匙旋转时的活动余地。打分函数就是把这套经验写成一本账。
分子对接的打分函数通常把总能量拆成几本分账:范德华力、氢键、静电、溶剂化、扭转熵。每一本都在描述配体与受体之间的一种物理作用。
打分函数给出的是单次姿势的分数,搜索则负责在数万个角度里找出最低分。AutoDock Vina 用随机扰动和局部优化配合;Glide 用分层搜索。搜索不彻底,再精确的打分也会漏掉正确答案。就像锁匠只带了一把锉刀,听出了声音却转不动角度,照样打不开门。
- 范德华项 \(\Delta G_{vdw}\)描述原子靠近时的吸引与极近距离的排斥,是所有接触的底色。
- 氢键项 \(\Delta G_{hbond}\)锁芯里的极性原子与钥匙上的供体/受体形成氢键,像给锁加了润滑油。
- 静电项 \(\Delta G_{elec}\)带电基团之间的库仑引力或斥力。
- 溶剂化项 \(\Delta G_{solv}\)水分子被排开或保留带来的能量变化。
- 扭转项 \(\Delta G_{tors}\)配体可旋转键被冻结时损失熵。
Vina实战篇:平价锁匠铺的秘诀
AutoDock Vina 就像是街角那家开了十几年的平价锁匠铺:不装豪华门面,胜在工具齐全、免费接单,遇到常见锁型又快又好。学术界和工业界都爱用它。
Vina 的使用有一句口诀:“口袋先找准,盒子再框牢”。它把搜索局限在用户设定的三维盒子内,盒子中心和尺寸决定了值得搜索的区域。配体只在这个盒子里移动、旋转。
盒子太小,真姿势可能在盒子外;太大又会让搜索像大海捞针。实战中常用共晶配体或已知活性分子反推口袋中心,再适当外扩几个埃。另外,输入文件要准备成 PDBQT,加氢和电荷分配是否正确,直接影响结果的可信度。
- 配体坐标 \(\mathbf{x}\)待搜索的配体原子坐标向量,在每次迭代中被平移和旋转。
- 口袋中心 \(\mathbf{c}\)从受体晶体结构中读出的结合口袋中心,是盒子的锚点。
- 盒尺寸 \(\mathbf{s}\)盒子三个方向的大小,通常是口袋周围一个富余区域。
- 范围约束所有候选位置都必须满足坐标落在中心加减半盒长的区间内。
Glide精度篇:精密锁匠与柔性锁芯
如果 Vina 是平价锁匠铺,Glide 就是为高端客户服务的精密锁匠:收费高、流程繁琐,却能处理锁芯变形、多层卡簧等复杂情况。它是商业软件,也是药企里常见的“高精度选手”。
Glide 最大的看点是分层筛选与 GlideScore。它先用粗糙筛选快速跳过明显不匹配的钥匙,再用高精度模式(SP/XP)精细打分。诱导契合对接还会让受体侧链移动,模仿锁芯被钥匙撑开后的微小变形。
Glide 的高精度并不等于万能。它需要正确的蛋白准备——加氢、优化、删冗余水——也需要口袋定义准确。精密仪器若没校准,反而会给出虚假的自信。
- 范德华与库仑项\(a\)、\(b\) 是对比实验数据回归得到的权重,分别缩放范德华和静电贡献。
- 亲脂项 Lipo描述疏水性表面贴合带来的稳定作用,像锁芯里的油膜包裹钥匙。
- 氢键项 Hbond捕捉极性互补,要求供体和受体距离、方向都合适。
- 旋转熵与位垒项惩罚可旋转键被锁死,同时奖励与口袋环境匹配的姿势。
虚拟筛选流程:海选、复试与颁奖
假如仓库里有十万把钥匙,锁匠不可能一把一把试。虚拟筛选就是先看材质、尺寸等标签剔除明显不合格的,剩下几千把再用分子对接逐一试开,最后挑出几十把送去现场试验。
完整流程通常是:构建化合物库 → ADMET 预筛 → 分子对接 → 打分排序 → 人工挑选 → 实验验证。ADMET 预筛过滤那些毒性高、溶解差、会被肝脏快速代谢掉的分子,避免把时间浪费在“理论上能结合、实际不能成药”的钥匙上。
虚拟筛选不是终点。锁匠把候选钥匙做出来真的去开一次锁,才是评估铁律。EF 再高,只有细胞和动物实验才能拍板。
- 候选命中比例\(Hits_{sampled}\) 是筛出的活性分子数,\(N_{sampled}\) 是实际去试的候选数。
- 总体活性比例\(Hits_{total}\) 是整个化合物库里已知活性数,\(N_{total}\) 是库总量。
- 两者的比值\(\mathrm{EF}=1\) 表示和随机一样,\(\mathrm{EF}>1\) 表示筛选确实在富集活性分子。
案例与避坑:从翻车到规范
再熟练的锁匠也有翻车的时候:把钥匙齿形磨得很完美,却发现锁芯里堵了一滴水锈。分子对接里,“水锈”可能是未加氢的组氨酸、未处理的晶体水,或者偏移的口袋中心。
经典案例是:对一个已有共晶结构的靶点,先做阳性对照,把已知活性分子重新对接回晶体姿势,计算 RMSD。如果连已知答案都复现不了,说明流程设置有问题,后面的虚拟筛选结果也不可信。
所以项目管理中要设置多轮验证:先做阳性对照,再做已知抑制剂,最后才大规模虚拟筛选。每一步都像在记录锁匠的试开日志,保证最后拿出的钥匙不是运气。
- 原子距离 \(d_i\)逐个计算同一配体原子在预测姿势与实验姿势间的距离。
- 平方求和距离取平方后相加,避免正负抵消,并放大较大偏差。
- 取平均除以原子数 \(N\) 得到平均平方偏差。
- 开平方把单位恢复成空间距离,便于和 2 埃等经验阈值比较。
AI 应用场景
AI生成分子的虚拟筛选闭环
阶段:药物发现与分子生成(先导化合物发现)
解决的问题:传统方法随机挑选 AI 生成的上万个新分子做实验,成本极高、周期太长。用分子对接作为虚拟过滤器,可以把实验名额留给打分最好的候选分子。
具体案例:某团队用扩散模型生成 2 万个候选分子,对目标激酶做 AutoDock Vina 虚拟筛选,再用 ADMET 规则过滤,最终挑选打分前 200 个分子合成测试,命中率比随机筛选提高约 3 倍。
突变靶点的 Glide 多构象筛选
阶段:先导优化与耐药突变应对
解决的问题:靶点发生点突变导致原药失效,刚性对接难以描述侧链移动带来的空间变化。需要诱导契合对接模拟锁芯变形,寻找避开突变位点的新骨架。
具体案例:针对耐药突变蛋白,使用 Glide XP 处理多个口袋构象,把侧链柔性与高精度打分结合,筛出能绕过突变位点空间位阻的候选分子,再通过分子动力学模拟进一步验证。
Python 演示
import math RECEPTOR = [(4.5, 4.5), (5.5, 4.5), (4.5, 5.5), (5.5, 5.5)]LIGAND = [(0.0, 0.0), (0.8, 0.0), (0.4, 0.7)] def pose_score(ligand, receptor, tx, ty, angle): cos_a = math.cos(angle) sin_a = math.sin(angle) total = 0.0 for lx, ly in ligand: x = lx * cos_a - ly * sin_a + tx y = lx * sin_a + ly * cos_a + ty d2 = min((x - rx) ** 2 + (y - ry) ** 2 for rx, ry in receptor) total += -4.0 * math.exp(-d2 / 2.0) return total def drange(start, stop, step): while start <= stop + 1e-9: yield round(start, 2) start += step def docking_search(receptor, ligand): best_score = float('inf') best_pose = None for tx in drange(-1.0, 6.5, 0.5): for ty in drange(-1.0, 6.5, 0.5): for k in range(12): angle = k * math.pi / 6 score = pose_score(ligand, receptor, tx, ty, angle) if score < best_score: best_score = score best_pose = (tx, ty, angle) return best_score, best_pose if __name__ == '__main__': best_score, best_pose = docking_search(RECEPTOR, LIGAND) print('best pose:', best_pose) print('best score:', round(best_score, 3))
def pose_score(ligand, receptor, tx, ty, angle):定义打分函数,输入配体、受体、平移量和旋转角。d2 = min((x - rx) ** 2 + (y - ry) ** 2 for rx, ry in receptor)计算当前配体原子到最近受体原子的距离平方,模拟形状互补。total += -4.0 * math.exp(-d2 / 2.0)距离越近得分越负,表示结合越好。for tx in drange(-1.0, 6.5, 0.5):在二维平面上按步长搜索平移量。if score < best_score:只保留历史最低分,对应对接结果排序。print('best pose:', best_pose)输出最优的平移和旋转参数,便于后续可视化。
常见误区
误区很多初学者把 Vina 或 Glide 输出的最低分直接当作“一定能结合”,分数越负越兴奋。
正解打分函数是强近似,只能描述部分物理作用,无法覆盖诱导契合、水分子位移、弛豫效应等复杂因素。一个姿势分数低,只代表在简化模型里契合,不能替代实验验证。
为何常见:软件界面会醒目地显示最高分pose,界面越漂亮越容易让人忽略背后的近似假设。
误区为了让分子对接不遗漏任何可能位置,有人把 Vina 的搜索盒子覆盖整个蛋白,觉得搜得越广越好。
正解盒子过大时搜索空间急剧膨胀,相同算力下每个姿势的采样次数反而变少,容易错过真实结合模式,还会产生更多假阳性。正确做法是以已知口袋为中心,外扩 5-10 埃。
为何常见:新手容易把“搜索范围”和“搜索质量”混为一谈,以为物理空间越大越安全。
误区许多人下载 PDB 文件后不加处理,直接开始对接,却不知道结构里缺氢、质子化状态错误或晶体水位置不合理。
正解对接前需要补全残基、加氢、按生理 pH 调整质子化状态,并根据证据决定保留还是删除关键水分子。锁孔里的水锈不清除,钥匙插得再顺也可能是错觉。
为何常见:PDB 结构看起来非常完整,加上软件一键导入的便利性,让人误以为省去准备步骤不影响结果。
误区商业软件一旦昂贵、宣传高级,就容易被认为是“绝对真理”,Vina 则被看作玩具。
正解Glide 的高精度模式确实更强,但它依赖正确的蛋白准备和口袋定义,也有昂贵授权成本。对很多靶点,仔细调参的 Vina 能得到与 Glide 可比的筛选效果。
为何常见:人们容易把工具价格与结论可信度画等号,忽略了方法适配性才是关键。
误区刚接触药物发现的人常以为“库里筛一遍,打分高的就是新药”。
正解虚拟筛选只能压缩候选空间,之后还要做合成、体外活性、选择性、动物实验等。EF 高也不能证明分子安全有效,只是“更值得试”。
为何常见:教程多强调从海量到少量的漏斗,却少讲漏斗出口之外漫长且昂贵的验证过程。
面试题
Q1. 分子对接中的“配体”通常指?
- A.特定蛋白质靶点
- B.候选小分子药物← 正确答案
- C.细胞膜磷脂层
- D.代谢中间产物
答案:B。配体是去“配锁”的小分子药物;受体才是锁。细胞膜磷脂层和代谢中间产物都不是去结合靶点的候选药物,因此不选。
Q2. “锁钥模型”主要描述什么?
- A.受体结构必须忽略
- B.配体形状与口袋互补← 正确答案
- C.打分函数没有价值
- D.所有水分子必删除
答案:B。锁钥模型强调配体与受体结合口袋在形状和化学性质上的互补,就像钥匙齿形对应锁芯。忽略受体、否定打分、必删水都不是该模型的核心含义。
Q3. AutoDock Vina 最突出的特点是?
- A.免费开源且易上手← 正确答案
- B.只支持多肽分子对接
- C.无需蛋白三维结构
- D.自动完成细胞实验
答案:A。Vina 是开源免费、社区活跃的对接工具。它需要蛋白三维结构,也能对接小分子而非多肽专属,更不能代替细胞实验,所以后三项都不对。
Q4. 富集因子 EF 衡量虚拟筛选的什么?
- A.化合物库总分子数
- B.相对随机挑取富集倍数← 正确答案
- C.对接程序的运行耗电
- D.蛋白表达量高低值
答案:B。富集因子比较“筛出来的采样集活性比例”和“整个库的活性比例”。EF 越大,说明筛选方法越能把活性分子集中到前面,和库大小、耗电、蛋白表达无关。
Q5. 使用 Vina 前需要重点检查哪些准备?
- A.盒子中心和尺寸设置← 正确答案
- B.受体加氢与质子化← 正确答案
- C.晶体水分子的合理处理← 正确答案
- D.电脑显示器刷新频率
答案:ABC。盒子定义直接影响搜索空间,加氢和质子化影响静电与氢键打分,水分子处理影响口袋环境。显示器刷新频率与计算无关,是干扰项。
Q6. Glide 相对 Vina 的主要优势是什么?
- A.完全免费且永久开源
- B.搜索和打分精度更高← 正确答案
- C.不需要准备受体结构
- D.只运行于命令行窗口
答案:B。Glide 的核心卖点是分层搜索和 GlideScore,通常比 Vina 更精细。它并不是免费开源,也需要准备受体结构,并且有图形界面和命令行两种用法。
Q7. \(\Delta G_{bind}\) 与 \(K_d\) 的正确关系是?
- A.ΔG = -RT ln K_d← 正确答案
- B.ΔG = RT ln K_d
- C.ΔG = -RT / K_d
- D.ΔG = RT / K_d
答案:A。结合自由能与解离常数满足 \(\Delta G_{bind} = -RT \ln K_d\)。负号保证 \(K_d\) 越小、自由能越负、结合越强。其余选项符号或运算形式错误。
Q8. 虚拟筛选结果常见的误差来源有哪些?
- A.打分函数本身近似← 正确答案
- B.口袋定义位置偏移← 正确答案
- C.配体构象准备不足← 正确答案
- D.实验动物饲养密度
答案:ABC。打分函数简化了物理作用,口袋中心偏移会系统性地带偏所有结果,配体缺乏合理三维构象也会造成假阴性。实验动物密度属于生物学实验条件,不属于虚拟筛选误差来源。
Q9. RMSD 在对接验证中主要用于?
- A.比较预测与实验姿势← 正确答案
- B.评估蛋白质分子量
- C.测定化合物溶解度
- D.计算细胞毒性数值
答案:A。RMSD 计算预测构象与实验晶体构象之间对应原子的平均偏移,常用来判断对接是否复现真实结合模式。它不评估分子量、溶解度或毒性。
Q10. 关于诱导契合对接,下列说法正确的是?
- A.受体侧链可发生移动← 正确答案
- B.计算开销通常更高← 正确答案
- C.不使用任何实验结构
- D.需精细约束口袋形变← 正确答案
答案:ABD。诱导契合允许受体侧链移动,因此计算量更大,也需要对口袋形变做精细约束。它仍然依赖实验结构作为起点,并不是完全脱离实验结构,所以 C 错误。