想象你是一位经验丰富的淘金者,面前有一座巨大的矿山。这座矿山里有亿万颗沙砾,但真正的黄金可能只有几十克。如果靠人工一粒一粒地翻检,恐怕花上一百年也找不到。于是你想出了一个聪明的主意:先设计一把“筛子”,把明显不含金的沙砾直接筛掉,再对剩下的一小撮进行精细检测。 在药物研发的世界里,制药公司面对的就是这样一座“分子矿山”——一个包含数亿个化合物的巨型化学库。而它们要寻找的“黄金”,是那些能够与靶点蛋白结合、有望成为药物的活性分子。传统实验方法在现实中测试每一个化合物,成本高昂、周期漫长,就像真的用舌头去品尝每一粒沙子。虚拟筛选,就是那把聪明的“筛子”:它用计算机模拟分子之间的相互作用,在湿实验室实验之前,先把候选化合物数量从百万级缩小到几百个,让后续的实验验证事半功倍。这篇文章将带你走进这个“智能筛矿”的世界,看看 AI 与计算化学如何联手重塑药物发现的早期阶段。

岗位关联

掌握虚拟筛选的核心方法,是 AI 医疗从业者参与药物发现全流程的敲门砖——它能帮你在海量化合物中找到真正的“潜力股”,为药企节省数以亿计的研发成本。

目录
  1. 可视化演示
  2. 虚拟筛选概述
  3. 分子库与预处理
  4. 药效团模型筛选
  5. 机器学习筛选
  6. 打分函数选择
  7. 富集因子评估
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示药物发现虚拟筛选五阶段流水线与富集因子评估曲线,支持模式切换查看化合物从库到先导物的筛选全流程及筛选方法对比。

本节配有交互动效(进入视口后自动加载,约 3KB)。

虚拟筛选五阶段流水线 化合物库:从百万级化合物库中获取候选分子集合 药效团匹配:基于三维药效团模型过滤形状匹配分子 打分排序:机器学习打分函数对候选分子活性预测排序 hit_rate = hits / screened 虚拟筛选将实验验证范围缩小至百级先导化合物。

虚拟筛选概述

淘金者拿到一把新筛子时,首先要弄清楚两件事:这把筛子的网眼多大?应该先用粗筛还是细筛?同样地,在药物发现中,虚拟筛选的第一步是建立整体认知——它到底是什么,能解决什么问题,以及如何设计出一条高效的筛选流水线。

虚拟筛选(Virtual Screening, VS)指的是利用计算机算法,在大型化合物库中自动评估每个分子与特定靶点结合的可能性,从中挑选出最有希望成为药物的候选者。它通常被放在药物发现的“先导化合物发现”阶段,也就是在合成化学家动手制造任何分子之前。传统的高通量筛选(HTS)需要物理操作数十万甚至数百万个样本,耗资巨大;而虚拟筛选只需在服务器上“跑”一遍,几天甚至几小时就能完成同等规模的初筛。它就像一个“预筛选漏斗”,让实验资源聚焦在最值得验证的少数分子上。

典型的虚拟筛选工作流包含两个关键阶段。粗筛阶段追求速度,用计算成本低的方法(如药效团匹配)将化合物库从百万级缩小到几千级;精筛阶段追求准确率,用更精细的机器学习模型或分子对接打分,从几千个中挑出最终进入实验验证的几十个候选。粗筛和精筛的关系,就像先用大网眼渔网捞掉水草,再用细网眼渔网捕小鱼——一个都不能少。

对淘金者来说,虚拟筛选的意义不在于“发明黄金”,而在于“用更少的力气找到黄金”。理解了这个漏斗式思维,你就拿到了打开整个虚拟筛选世界的钥匙。

Virtual Screening=Library→粗筛Small Set→精筛Hits\text{Virtual Screening} = \text{Library} \xrightarrow{\text{粗筛}} \text{Small Set} \xrightarrow{\text{精筛}} \text{Hits}
这个公式表示虚拟筛选是一个“漏斗式”流水线:从完整化合物库出发,经过粗筛和精筛两步,最终得到少量高置信度的活性候选分子。
  1. 化合物库(Library)这是筛选的起点,包含数百万到数十亿个可购买的或可合成的化合物。
    Library={M1,M2,…,Mn},n 可达 106∼109\text{Library} = \{M_1, M_2, \ldots, M_n\},\quad n \text{ 可达 } 10^{6} \sim 10^{9}
  2. 粗筛(Rough Filter)用计算量小的方法快速排除明显不合适的分子。
    Small Set={M∈Library∣scorerough(M)>θrough}\text{Small Set} = \{M \in \text{Library} \mid \text{score}_{\text{rough}}(M) > \theta_{\text{rough}}\}
  3. 精筛(Fine Filter)对粗筛结果用更精确的模型打分并排序。
    Hits=Topk(scorefine(M),M∈Small Set)\text{Hits} = \text{Top}_{k}\left( \text{score}_{\text{fine}}(M), M \in \text{Small Set} \right)

分子库与预处理

淘金者绝不会把从河里挖出的泥沙直接放进细筛——泥沙里有树枝、石子、贝壳,得先用水冲洗、用粗网滤掉大块杂物,才能开始真正淘金。虚拟筛选也一样:化合物库里的原始分子“泥沙”必须经过严格的预处理,否则后续任何筛选步骤都会因“杂物”而失真。

化合物库的来源主要有三类:商业库(如 ZINC、MolPort,收录可购买的化合物)、公共库(如 ChEMBL、PubChem,收录已报道活性的分子)、虚拟库(由化学合成规则枚举出的从未合成过的分子)。不同来源的化合物格式、电荷状态、盐形式各不相同,不能直接拿来筛选。就好比淘金者从三个不同河段取沙,沙粒大小和杂质成分完全不同,必须先统一标准。

清洗与标准化是预处理的核心环节。首先要去掉盐离子、溶剂分子等“装饰物”,只保留核心骨架;其次要对分子进行去质子化/加质子化处理,模拟生理 pH 下的电荷状态;最后还要去除 PAINS(泛干扰化合物)或 pan-assay interference compounds——这类分子几乎能与任何靶点“假阳性”结合,就像彩色玻璃珠会让人误以为淘到了宝石。预处理完毕后,还需要生成分子的三维构象——同一分子的原子可以在空间中旋转出多种形态,筛选时需要枚举出低能量的代表构象集,否则会漏掉“正确姿势”的分子。

经过清洗、标准化的分子库,就像一份整理得井井有条的“淘金地图”——每一条记录都格式统一、维度清晰,等待下一阶段的筛选。

Econf(X)=min⁡{Ri}EMM(X,Ri),i=1,…,NconfE_{\text{conf}}(X) = \min_{\{R_i\}} E_{\text{MM}}\left( X, R_i \right), \quad i = 1, \ldots, N_{\text{conf}}
这个公式表示对分子 X 生成 N 个候选构象 R,用分子力学力场计算每个构象的能量,取能量最低的那个构象作为该分子的代表。这就像给模特拍一组照片,然后选出最自然的那一张。
  1. 生成构象集用程序枚举分子的不同空间形态,每种形态称为一个构象。
    {R1,R2,…,RN},N≈50∼500\{R_1, R_2, \ldots, R_N\}, \quad N \approx 50 \sim 500
  2. 计算每个构象能量使用分子力学力场评估构象的内部势能,能量越低往往越接近真实形态。
    Ei=EMM(X,Ri)E_i = E_{\text{MM}}(X, R_i)
  3. 选取最低能量构象取能量最小的构象作为该分子在筛选中的代表形态。
    Econf(X)=min⁡iEiE_{\text{conf}}(X) = \min_i E_i

药效团模型筛选

淘金者在长期实践中发现了一个规律:含金的矿脉周围总会长着一种特殊的红色苔藓。于是,他不再盲目翻找,而是先在地图上标记所有“红色苔藓”的位置,再精确定位挖掘。这种基于经验标志物的初筛,在药物发现中对应的就是药效团模型。

药效团(Pharmacophore)是分子中与靶点结合所必需的一组空间特征元素的集合,包括氢键供体、氢键受体、疏水中心、芳香环中心、正负电荷中心等。这些特征不是指某个具体原子,而是指“在某个空间位置必须存在某种相互作用能力”。打个比方,药效团就像一把“分子锁的钥匙模具”——不必知道钥匙的具体齿纹,但必须知道哪些位置要有凸起、哪些位置要有凹槽。

构建药效团模型通常有两种途径:基于配体的方法,从一组已知活性分子出发,提取它们共有的特征;基于结构的方法,从靶点蛋白的三维结构出发,分析结合口袋中哪些位置能够形成关键相互作用。筛选时,算法会将化合物库中每个分子的构象与药效团模型做三维匹配:分子的特征元素能否在空间上与模型的特征位点对齐?对齐时允许一定的容差(通常为 1-2 Å)。满足全部或大部分特征约束的分子,就是从粗筛中“上榜”的候选者。

药效团模型的价值在于可解释性:它明确告诉你“为什么这个分子被选中”——因为它在特定位置有氢键供体,在另一个位置有疏水基团。这就像淘金者不仅找到了红色苔藓,还知道红色苔藓背后对应的金矿脉走向。

Match(M,P)={1,if ∀ f∈P:∃ g∈M with ∥r⃗f−r⃗g∥≤ε0,otherwise\text{Match}(M, P) = \begin{cases}1, & \text{if } \forall \, f \in P: \exists \, g \in M \text{ with } \| \vec{r}_f - \vec{r}_g \| \le \varepsilon \\0, & \text{otherwise}\end{cases}
药效团筛选的关键是“寻找相似特征的分子”,而非“寻找结构相似的分子”。它回答的问题是:这个分子是否具备与靶点结合所必需的“空间化学语言”?类似的分子若不具备关键特征,依然会被淘汰。
  1. 定义药效团特征集P 是药效团模型,包含若干特征位置,每个特征有类型和三维坐标。
    P={f1,f2,f3},fj=(typej,r⃗j)P = \{ f_1, f_2, f_3 \}, \quad f_j = (type_j, \vec{r}_j)
  2. 分子特征匹配M 中必须存在某个原子或功能基团,其空间位置 g 与特征点 f 的距离落在容差内。
    ∃ g∈M:∥r⃗f−r⃗g∥≤ε\exists \, g \in M: \| \vec{r}_f - \vec{r}_g \| \le \varepsilon
  3. 全部特征满足只有当所有药效团特征都被匹配时,该分子才被判定为“通过筛选”。
    Match(M,P)=1\text{Match}(M, P) = 1

机器学习筛选

淘金者用了多年的“红色苔藓”法则越来越不灵了——有些山上苔藓很多却没有金矿,有些金矿却被完全不同的植物覆盖。于是,他请来一位经验老到的地质学家,把过去几十年的矿区数据、岩石成分、地形特征全部喂给一套统计模型,让模型学会“综合判断”。这就是机器学习筛选的思路。

在虚拟筛选的语境下,机器学习把筛选问题转化为一个二分类或排序问题:给定一个分子的描述符(如分子指纹、理化性质、拓扑特征),预测它是否具有生物活性。构建训练数据通常依赖公共数据库中的实验数据——ChEMBL 里有成千上万条化合物-靶点活性数据,从中选取已知活性分子(正样本)和实验确认无活性的分子(负样本),构成带标签的数据集。正样本好找,但“确认无活性”的负样本常常稀缺,这是数据构建最大的痛点。

模型选择方面,主流方案包括随机森林(RF)、支持向量机(SVM)、梯度提升树(XGBoost)以及图神经网络(GNN)。其中图神经网络直接把分子当作图来处理:原子是节点,化学键是边,可以捕捉空间结构信息,是目前精度最高的方案之一。训练完成后,对粗筛保留下来的分子逐一预测活性概率,然后按概率降序排列——这个排序结果,就是药化专家拿到手里的“候选清单”。

如果说药效团是“经验法则”式的地质学教科书,那么机器学习就是“大数据挖掘”式的预测引擎。两者并不冲突——许多管线先用药效团粗筛,再用机器学习打分,正好实现“规则”与“学习”的优劣互补。

y^i=σ(fθ(xi)),rank(Mi)=argsorti(y^i)\hat{y}_i = \sigma\left( f_{\theta}\left( \mathbf{x}_i \right) \right), \quad \text{rank}\left( M_i \right) = \text{argsort}_{i} \left( \hat{y}_i \right)
机器学习的本质是在大量历史数据中“学到”活性规律,然后用这个规律给新分子打分排序。它不像药效团那样给出化学意义上的解释,但在综合大量特征方面远胜人工规则。
  1. 分子描述符编码每个分子被编码成一个特征向量 x,描述其大小、极性、拓扑结构等信息。
    xi∈Rd,d 通常为 100∼10000\mathbf{x}_i \in \mathbb{R}^{d}, \quad d \text{ 通常为 } 100 \sim 10000
  2. 模型预测模型 f_θ 接受特征向量,输出一个属于 [0,1] 的活性概率。
    y^i=σ(fθ(xi))∈[0,1]\hat{y}_i = \sigma\left( f_{\theta}\left( \mathbf{x}_i \right) \right) \in [0, 1]
  3. 排序输出将所有候选分子按预测概率从高到低排序,取 Top-N 作为最终推荐。
    rank(Mi)=argsorti(y^i)\text{rank}\left( M_i \right) = \text{argsort}_{i} \left( \hat{y}_i \right)

打分函数选择

当你用细筛从一堆沙子里筛出几粒亮闪闪的金色颗粒时,如何判断它是真金还是黄铁矿(愚人金)?淘金者会掂量重量、用牙咬、滴硝酸。虚拟筛选同样面临最后一关:打分函数——它给每个分子与靶点的结合强度打一个分数,凭此判断谁是“真金”。

打分函数的核心任务是近似计算分子与靶点结合时的结合自由能变化(ΔG)。结合自由能越负,说明结合越强,分子越可能是有效抑制剂或激动剂。但精确计算结合自由能需要求解复杂的统计力学方程,计算量巨大;因此实际中人们使用简化的经验打分函数,用求和项近似能量贡献:包括范德华相互作用项、静电相互作用项、氢键项、去溶剂化惩罚项等。

选择打分函数时,除了精度还要考虑排序一致性:一个打分函数可能在绝对数值上不准确,但只要它给真命中的分数总是高于假命中,排序就依然有效。这就像一把秤虽然刻度偏高一克,但称得准相对轻重——排序不受影响,就足够用于筛选。常见的打分函数家族包括基于力场的(如 GlideScore)、基于经验的(如 ChemScore)和基于知识的(如 PMF)。精筛阶段可以采用多种打分函数做共识打分(consensus scoring),综合多个“验金师”的意见来降低单点误差。

ΔGscore=w1Evdw+w2Eelec+w3EHB+w4ΔGdesolv\Delta G_{\text{score}} = w_1 E_{\text{vdw}} + w_2 E_{\text{elec}} + w_3 E_{\text{HB}} + w_4 \Delta G_{\text{desolv}}
打分函数就像一个“精略但快速”的验金师:它不能给出精确的黄金纯度,但在区分“明显真金”和“明显假金”时足够可靠。它的核心权衡是计算精度与速度之间的取舍。
  1. 范德华项计算分子与蛋白质原子间的空间接触是否紧密,太远没作用、太近则强烈排斥。
    Evdw=∑i,j[(rij0rij)12−2(rij0rij)6]E_{\text{vdw}} = \sum_{i,j} \left[ \left(\frac{r_{ij}^0}{r_{ij}}\right)^{12} - 2 \left(\frac{r_{ij}^0}{r_{ij}}\right)^{6} \right]
  2. 静电项计算带电基团间的库仑吸引或排斥。
    Eelec=∑i,jqiqj4πεrijE_{\text{elec}} = \sum_{i,j} \frac{q_i q_j}{4\pi\varepsilon r_{ij}}
  3. 氢键项分子与蛋白间形成氢键的数目和几何质量直接贡献结合亲和力。
    EHB=∑H-bondsf(dH⋯A,θDHA)E_{\text{HB}} = \sum_{\text{H-bonds}} f\left( d_{\text{H}\cdots\text{A}}, \theta_{\text{DHA}} \right)
  4. 去溶剂化惩罚结合时分子从水环境进入疏水口袋,需要移除水壳,产生能量代价。
    ΔGdesolv∝SASAburied\Delta G_{\text{desolv}} \propto \text{SASA}_{\text{buried}}

富集因子评估

淘金者设计了一套新筛子后,怎么知道它真的比旧筛子好用?标准只有一个:在同一批沙子里,新筛子淘出的“金粒”比例是不是显著高于旧筛子?这个比例,就是虚拟筛选中的富集因子(Enrichment Factor, EF)。

富集因子衡量的是:在筛选结果的前 x% 分子中,已知活性分子所占的比例,与随机挑选情况下活性分子比例的比值。例如,化合物库中活性分子占 1%(即随机抽取 100 个分子才能碰到 1 个活性分子),而你的筛选方法在前 1% 的预测命中里包含了 50% 的已知活性分子,那么 EF 就是 50。EF 值越高,说明筛选方法的“淘金率”越高。

仅仅在离线评估中拿到高 EF 并不够,真正可靠的工作流必须形成筛选-实验验证的闭环:虚拟筛选给出 Top-50 候选 → 湿实验测试这 50 个分子 → 活性测试结果反馈给模型或药效团修正 → 进入下一轮筛选。每一轮实验验证都在告诉淘金者:“你上一轮判断对了吗?苔藓法则是否该调整?”这种持续反馈才能让筛选系统在实践中不断进化。

虚拟筛选的真正价值不在单次预测有多准,而在于它建立了“计算预测-实验验证-模型迭代”的增强回路。就像一位逐渐累积经验的淘金者,每一次挖掘都在让下一把筛子变得更精准。

EFx%=Nactivesampled/NsampledNactivetotal/NtotalEF_{x\%} = \frac{N_{\text{active}}^{\text{sampled}} / N_{\text{sampled}}}{N_{\text{active}}^{\text{total}} / N_{\text{total}}}
富集因子的直观含义是“筛选后命中率是随机命中的多少倍”。EF 值只需大于 1 就说明筛选比随机好;优秀的虚拟筛选方案在库的前 1% 区域通常能达到 EF > 20。
  1. 确定取样范围取排序后的前 x% 分子作为“采样集”,比如前 1%。
    Nsampled=x%×NtotalN_{\text{sampled}} = x\% \times N_{\text{total}}
  2. 统计采样集中活性分子数数一数采样集里有多少个已知活性分子。
    Nactivesampled=count of actives in top x%N_{\text{active}}^{\text{sampled}} = \text{count of actives in top } x\%
  3. 与随机基线比较把采样集的活性比例除以化合物库整体的活性比例,得到富集倍数。
    EFx%→实验验证准确率反馈→模型修正下一轮虚拟筛选\text{EF}_{x\%} \xrightarrow{\text{实验验证}} \text{准确率反馈} \xrightarrow{\text{模型修正}} \text{下一轮虚拟筛选}

AI 应用场景

场景 1:新冠药物老药新用筛选

阶段:虚拟筛选执行阶段

解决的问题:新冠疫情爆发初期,研发全新药物需要数年时间,而传统实验筛选上万种已上市药物的成本极高、时间不可行。虚拟筛选将“分子矿山”缩小到几百个候选,让实验科学家只验证最有希望的药物。

具体案例:辉瑞在 Paxlovid 的研发中,利用虚拟筛选技术对已获批药物和候选化合物库进行大规模评估,结合药效团分析与机器学习打分函数,快速锁定能够抑制新冠病毒 3CL 蛋白酶的活性分子,再经由实验验证迭代优化,最终大大缩短了临床前研发周期。

场景 2:抗癌药物先导化合物发现

阶段:先导化合物发现与打分排序

解决的问题:传统上药化团队需要手工设计并合成数百个化合物才能找到几个有活性的先导物,人力成本高、失败率高。虚拟筛选通过打分函数排序,让团队聚焦合成高置信度候选。

具体案例:某制药公司针对肿瘤靶点 KRAS 的突变体建立药效团模型,从 300 万分子的商业库中粗筛出 5000 个候选,再用图神经网络精筛出 50 个分子进入 SPR 结合实验,最终发现 8 个具有微摩尔级活性的先导化合物,整个流程仅耗时 4 个月。

场景 3:化合物库设计与采购决策

阶段:数据预处理与库设计

解决的问题:药企每年花费数千万美元采购筛选化合物库,但库中大量“看似多样实则相似”的分子浪费实验资源。虚拟预筛可在采购前评估库的多样性、可合成性与潜在活性覆盖。

具体案例:一家 CRO 公司利用分子指纹与聚类分析评估候选采购库的多样性,并通过虚拟筛选模拟已知靶点的覆盖率,最终将采购库从 50 万分子精简至 300 万分子中最具互补性的 20 万分子,节约采购成本近 40%。

Python 演示

python64 行
"""虚拟筛选粗筛+精筛管道演示使用RDKit生成药效团特征 + 简单机器学习打分函数排序"""import numpy as npfrom rdkit import Chemfrom rdkit.Chem import AllChem, DataStructsfrom sklearn.ensemble import RandomForestClassifier # --- 构造模拟数据集 ---def make_fake_molecules(n_mols: int = 200, seed: int = 42):    """生成模拟分子SMILES(正负样本混合,模拟化合物库)"""    rng = np.random.RandomState(seed)    smiles_list = []    for i in range(n_mols):        c = rng.randint(3, 8)  # 碳原子数        n = rng.randint(0, 3)  # 氮原子        o = rng.randint(0, 3)  # 氧原子        # 构造简单骨架苯环+取代基        core = "c1ccccc1"        if n > 0:            core += "N" * n        if o > 0:            core += "O" * o        smiles_list.append(core)    return smiles_list def featurize(smiles: str) -> np.ndarray:    """将SMILES转为ECFP4分子指纹(位向量)"""    mol = Chem.MolFromSmiles(smiles)    fp = AllChem.GetMorganFingerprintAsBitVect(mol, 2, nBits=512)    arr = np.zeros((1,), dtype=np.int8)    DataStructs.ConvertToNumpyArray(fp, arr)    return arr # --- 数据准备 ---smiles_pool = make_fake_molecules()X_all = np.vstack([featurize(s) for s in smiles_pool]) # 模拟活性标签:含氮且含氧的分子"活性"概率更高(简化模拟)y_all = np.array([1 if ("N" in s and "O" in s) else 0 for s in smiles_pool]) # --- 划分训练集/候选库 ---train_idx = np.random.RandomState(0).choice(len(smiles_pool), 80, replace=False)cand_idx = np.array([i for i in range(len(smiles_pool)) if i not in train_idx])X_train, y_train = X_all[train_idx], y_all[train_idx]X_cand, smiles_cand = X_all[cand_idx], [smiles_pool[i] for i in cand_idx] # --- 训练机器学习打分模型 ---model = RandomForestClassifier(n_estimators=100, random_state=42)model.fit(X_train, y_train) # --- 候选排序 ---y_score = model.predict_proba(X_cand)[:, 1]order = np.argsort(y_score)[::-1]  # 降序排列top_n = 20 print("=" * 60)print("虚拟筛选候选取 Top-20")print("=" * 60)for rank, idx in enumerate(order[:top_n]):    flag = "✓ active" if y_all[cand_idx[idx]] == 1 else "✗ inactive"    pubchem_like = smiles_cand[idx]    print(f"#{rank+1:2d}  score={y_score[idx]:.3f}  {flag:10s}  {pubchem_like}")
目的:本代码演示了一个简化的虚拟筛选管道——用分子指纹作为特征、随机森林作为打分模型,对化合物库中的分子按预测活性排序,输出 Top-N 候选供实验验证。
  1. featurize(smiles)将 SMILES 字符串转换为 512 位 Morgan 分子指纹,这是机器学习模型能理解的“分子身份证”。
  2. AllChem.GetMorganFingerprintAsBitVect(mol, 2, nBits=512)生成 ECFP4 指纹,记录分子中每个原子周围 2 层邻居的结构信息。
  3. RandomForestClassifier(n_estimators=100)用 100 棵决策树组成随机森林,综合投票降低单棵树的过拟合风险。
  4. model.fit(X_train, y_train)在 80 个已知活性/非活性的小样本上训练打分函数,让模型学习“什么样的分子更像活性分子”。
  5. model.predict_proba(X_cand)[:, 1]对候选库中的每个分子输出“属于活性”的概率,作为打分依据。
  6. np.argsort(y_score)[::-1]将候选分子按分数从高到低排序,这是虚拟筛选输出“候选清单”的核心操作。

常见误区

误区作为 AI 从业者,我觉得虚拟筛选给出的分数排名就是实验活性的可靠预测,分数最高的分子直接送去合成就能得到药物候选。

正解虚拟筛选的分数是理论计算的近似值,不是实验测得的结合常数。打分函数大量简化了溶剂效应、蛋白柔性、熵效应等复杂因素,排序靠前的分子中通常仍有大量假阳性。即使在最佳方案中,虚拟筛选的命中率也通常只有 5%-30%,这意味着测试 10 个分子里只有 1-3 个真正有活性。因此虚拟筛选必须与实验验证配合,形成“预测-验证-迭代”的闭环。

为何常见:AI 工程师习惯了“模型输出即结果”的工作模式,容易忽略计算化学中“近似模型”与“真实物理”之间的鸿沟。加上药企对外宣传时常强调成功率,让人误以为虚拟筛选已经完美。

误区既然机器学习那么强大,药效团这种“老式规则”方法就应该被完全淘汰,直接上深度学习就行。

正解药效团与机器学习解决的是不同层面的问题。药效团提供了可解释的化学先验,明确描述“分子必须具备哪些关键特征才能结合”,在数据量极少时依然有效;机器学习需要大量高质量训练数据,擅长从全局特征中捕捉非线性规律,但缺乏化学可解释性。真实工业管线中两者常常串联使用——药效团粗筛先快速排除绝大多数分子,机器学习精筛再精细排序,这也是“优势互补”的经典范式。

为何常见:技术圈“喜新厌旧”的氛围让新人容易忽略成熟方法的独特价值。实际上在少量数据和强先验的场景下,规则方法往往比数据驱动方法更稳健。

误区训练机器学习筛选模型时,只要拿到足够的已知活性分子(正样本),就能训练出可靠的分类器。

正解缺少可靠负样本会导致严重的数据偏差。若只提供正样本而随机选取未验证分子作为负样本,相当于“把没找到金子的沙堆都当成无金矿区”,模型学到的规律是被扭曲的。负样本应尽可能从实验确认无活性的分子中选取,或使用“对同一靶点测试过但无反应”的数据。这在业界称为“确认阴性”(confirmed inactive),是训练数据建设中最容易被低估的环节。

为何常见:公开数据库(如 ChEMBL)中活性数据丰富、非活性数据稀少,“只用现成数据”的惯性让大家忽视了数据采集策略对模型上限的决定性影响。

误区评估虚拟筛选质量时只看富集因子 EF 这一个指标,EF 值越高就代表方法越优越。

正解富集因子只刻画了“前 x% 候选里捕获了多少活性分子”这一方面。它没有反映排序的整体质量,也没有惩罚“活性分子在库中占比极低”等极端情况。科学的评估应该综合多个指标:ROC-AUC 评估整体排序能力、富集因子评估早期命中能力、以及实验命中率验证实际效果。此外 EF 的 x% 取值范围选择也会影响结论,只看单点 EF 可能以偏概全,应当观察整条富集曲线。

为何常见:EF 是一个直观的标量指标,容易在不同方法间横向比较,这促使人们简化评估为“一个数字定胜负”。但真实世界的筛选任务是多目标的,单一指标永远是切面而非全貌。

面试题

Q1. 虚拟筛选的核心目标是下列哪一项?

单选题 · easy

  • A.合成新的化合物
  • B.缩小候选化合物范围← 正确答案
  • C.提纯蛋白靶点
  • D.设计临床试验方案

答案:B。虚拟筛选是药物发现早期的“漏斗式筛矿”过程,它通过计算手段从大型化合物库中快速缩小候选范围,选出最有希望与靶点结合的分子,而不是合成分子、提纯蛋白或设计临床试验。

Q2. 药效团模型描述的是什么?

单选题 · easy

  • A.分子的合成路线
  • B.靶点蛋白的氨基酸序列
  • C.结合所必需的空间特征元素集← 正确答案
  • D.化合物的ADME性质

答案:C。药效团是分子与靶点结合所必需的一组空间特征元素集合,包括氢键供体、疏水中心等。它就像“钥匙模具”,描述了分子必须满足的化学空间约束,而非合成路线、氨基酸序列或药代动力学性质。

Q3. 在虚拟筛选工作流中,粗筛与精筛的关系是?

单选题 · mid

  • A.互斥的替代方案
  • B.粗筛速度快但精度低,精筛精度高但速度慢← 正确答案
  • C.粗筛只处理可合成分子
  • D.精筛必须使用深度学习模型

答案:B。粗筛用计算量小的方法(如药效团匹配)快速排除明显不合适的分子,精筛用更精确的模型(如分子对接或机器学习)对粗筛结果精细排序,两者串联形成漏斗式管线。这是速度与精度的互补,而非互斥替代。

Q4. 下列哪项是分子库预处理中最常见的步骤之一?

单选题 · mid

  • A.合成目标分子
  • B.去除盐离子与溶剂分子← 正确答案
  • C.测定化合物熔点
  • D.计算IC50值

答案:B。化合物库中的分子常以盐的形式存在,预处理需要去除盐离子、溶剂等“装饰物”,统一电荷状态并生成三维构象。合成分子、测定熔点、计算 IC50 属于实验阶段工作,不在虚拟筛选预处理范围内。

Q5. 关于打分函数的选择,以下说法正确的有?

多选题 · mid

  • A.打分函数计算的是精确的结合自由能
  • B.常用打分函数包括范德华和静电近似项← 正确答案
  • C.排序一致性比绝对数值准确更关键← 正确答案
  • D.打分函数不需要考虑计算速度

答案:BC。打分函数是“粗略但快速的验金师”,它用求和项(范德华、静电、氢键、去溶剂化惩罚)近似结合自由能,而非精确计算。在筛选中排序一致性比绝对精度更重要,计算速度也是实际考量的核心维度,因此 B、C 正确,A 和 D 错误。

Q6. 富集因子 EF 的物理含义是什么?

单选题 · mid

  • A.化合物库中活性分子的总数
  • B.前x%命中中捕获活性分子的比例除以随机基线← 正确答案
  • C.打分函数输出的分数归一化值
  • D.机器学习模型的准确率

答案:B。富集因子衡量筛选方法“淘金率”相对随机抽取的倍数:前 x% 候选中的活性分子占比除以化合物库整体活性分子占比。EF 越高说明筛选方法越能提前捕获活性分子。

Q7. 以下哪些策略可以有效减少虚拟筛选的假阳性?

多选题 · hard

  • A.采用多种打分函数进行共识打分← 正确答案
  • B.使用实验确认无活性的分子补充负样本← 正确答案
  • C.只用预测概率最高的一个分子
  • D.引入实验验证-模型迭代闭环反馈← 正确答案

答案:ABD。共识打分综合多个“验金师”的意见,降低单点打分函数的误差;补充确认阴性负样本能改善训练数据的质量;实验验证形成的闭环反馈可以不断修正模型参数和筛选策略。只挑一个分子忽略了假阳性风险且没有备选,不能系统性降低假阳性率。

Q8. 在机器学习筛选模型中,分子指纹的主要作用是什么?

单选题 · easy

  • A.测定分子的水溶性
  • B.将分子结构编码为机器学习可用的特征向量← 正确答案
  • C.计算分子与靶点结合的三维结构
  • D.预测分子的毒性

答案:B。分子指纹(如 Morgan 指纹)将分子结构转化为固定长度的位向量,作为机器学习模型的输入特征。它不测定水溶性、不计算三维结合结构,也不直接预测毒性,而是提供“分子身份证”供模型学习。

Q9. 药效团筛选与机器学习筛选相比,最大的优势是什么?

单选题 · hard

  • A.在大数据集上精度更高
  • B.特征空间表达更丰富
  • C.结果具有化学可解释性← 正确答案
  • D.无需三维构象即可运行

答案:C。药效团模型明确描述了“分子在哪些空间位置必须具备什么化学特征才能结合”,每一个筛选结论都能追溯到具体的化学约束,可解释性强。机器学习在大数据集上精度更高、特征更丰富,但本质是黑箱,这正是药效团不可替代的价值。

Q10. 虚拟筛选与实验验证形成闭环的核心意义是?

单选题 · hard

  • A.彻底消除假阳性结果
  • B.让下一轮筛选从实验反馈中迭代改进← 正确答案
  • C.将实验成本转嫁给计算
  • D.替代动物实验

答案:B。闭环的意义在于形成“计算预测-实验验证-模型修正”的增强回路。每一轮实验结果都在校正药效团特征或机器学习模型,让下一轮筛选更准确。它不能彻底消除假阳性,也没有将成本转嫁或替代动物实验,而是让“淘金者”越筛越有经验。