想象你拿到一张小区门禁卡,设计目标是这张卡只能打开自家书房门,却打不开同户型的邻居家门。可偏偏开发商偷懒,整层楼用的锁芯几乎一模一样。这就是药物设计里的选择性难题:激酶靶点在 ATP 结合口袋处高度同源,许多小分子抑制剂像万能钥匙,一捅就开很多扇门,临床副作用随之而来。选择性设计要做两件事:先量化“能开多少门”,再通过反筛把所有门试一遍;而 AI 模型则像门禁系统模拟器,从分子结构直接预测它会在整栋楼的哪些门上生效。本文用“专属门禁卡”这把钥匙,梳理由选择性指标、反筛策略到 AI 多任务预测模型,再到 JAK 激酶抑制剂设计案例的完整链路。
掌握选择性设计,意味着你能在创新药研发中直接提升候选分子的安全上限,让 AI 制药团队从“找出有效分子”升级为“找对专一分子”。
可视化演示
演示选择性指标SI计算、多任务学习选择性预测、以及AI驱动优化迭代流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
选择性指标 目标靶点高活性 旁系靶点低活性 SI=IC50旁/IC50目 比值越大越优
选择性定义
设计药物很像做一张只在自家书房生效的门禁卡。问题是开发商把整层楼的门锁都做成同一品牌,钥匙齿形稍有相似,就可能刷开邻居家的门。激酶抑制剂正是如此:目标激酶与同家族的旁系激酶,在 ATP 结合口袋上的氨基酸很接近,小分子只要牢牢握住这个口袋,便很容易同时握住一大把相似的锁。
在药物化学里,这种性质被称为选择性。一个选择性好的分子,应当以极低浓度抑制目标靶点,却要在高浓度下才对旁系蛋白产生明显抑制。所谓旁系蛋白,就是与靶点进化关系最近、活性位点最像的那批蛋白。
科学家用 IC50 描述抑制能力。IC50 是抑制 50% 酶活性所需浓度,数值越小说明分子与靶点结合得越强。为了把目标和旁系放在同一把尺上比较,算法上定义选择性指数 SI,它就是旁系 IC50 与目标 IC50 的比值:
回到门禁卡:SI 就是这张卡对自家门和邻居门的敏感度差。差得越大,越不用担心误闯邻居家;差得很小,即使目标活性再漂亮,医生也不敢轻易给病人用。
- 看分母IC₅₀(目标) 是抑制目标激酶一半所需浓度,分母越小,说明钥匙对自家门越灵敏。
- 看分子IC₅₀(旁系) 是抑制旁系激酶一半所需浓度,分子越大,说明邻居门越难被打开。
- 做除法两个浓度相除,SI 越高,代表“目标活性强、旁系活性弱”的专一优势越明显。
选择性指标
只看一家邻居还不够。小区里可能有几十户同款门,一张卡到底能在多少扇门上刷开,才是物业验收时真正关心的。药物发现里,我们同样需要给整栋激酶楼打一个可比较的分数。
最常用的方法是激酶谱筛选。把候选分子放在包含几十到几百个激酶的活性面板上,在固定浓度下测定每个激酶的剩余活性。若某个激酶的剩余活性低于 10%,相当于被强抑制了 90% 以上,就记作一个 hit。
将所有 hit 数除以受试激酶总数,得到覆盖率 Coverage,也叫 hit 率。覆盖率越低,说明能刷开的门越少,选择性越高。业界常写成 S(10)、S(1) 这类选择性评分,含义一致,都是数值越小越专一:
评价一个候选物不能只看它对目标多强,还要看它在全谱上的覆盖率。门禁卡再精致,若在 100 扇门里刷开了 80 扇,物业绝对不敢放行。
- 数命中N_hit 表示旁系激酶谱里被强抑制的激酶个数,相当于钥匙意外刷开的门数。
- 看总数N_tested 是面板中检测过的激酶总数,相当于整栋楼被抽查的门数。
- 换百分比两者相除再乘 100%,得到覆盖率;覆盖率越低,脱靶风险越可控。
反筛策略
既然担心误开邻居门,最直接的做法就是拿着一串刚打磨的钥匙,挨家挨户试一遍。这个过程听起来笨,却是药物安全最朴素的防线。所谓反筛,正是相对主筛而言的“反向筛选”。
传统筛选流程以目标靶点为主筛,先找出能抑制目标激酶的分子;接下来用反筛把同一批分子放到旁系激酶面板上,看它们是不是“博爱”。反筛不是只测一两个蛋白,而是测一整组与靶点最相关的激酶,比如 JAK 家族内的四个亚型。
高质量的反筛要设计剂量矩阵:每个激酶至少在多个浓度下测试,这样能拟合出每个旁系激酶的 IC50,而不只是观察一个固定浓度的抑制百分比。得到的多靶点活性谱就像一串数字指纹,后续 AI 建模正需要这种标签。
反筛的代价不低,却很值。它提前告诉我们钥匙会误开哪几扇门,也告诉我们哪些结构修改能让旁系门锁“认出”钥匙不对。这为后面的 AI 模拟器提供了真实世界的标准答案。
AI预测模型
如果每打磨一把钥匙都要先把 400 扇门试一遍,成本太高。AI 的价值是在钥匙还没做出来时,先根据设计图预测它能刷开哪几扇门——这就是门禁系统模拟器。
具体实现上,分子先被编码成机器能读懂的表征:指纹把化学结构变成 0/1 向量,图网络把原子和键画成关系图。这个表征进入多任务学习模型,同一份分子表征被多个预测头共用,每个头负责一个激酶的活性预测。
多任务学习的好处在于:不同激酶的任务会迫使模型学习通用的结构-活性规律,同时每个任务头又能捕捉各自口袋的细微差异。如果训练数据足够,模型几乎可以同时输出目标激酶和几十个旁系激酶的抑制概率:
训练完成后,模拟器从分子设计图到整栋楼的门锁反应只花几毫秒。它不能替代真实反筛,但能把真正值得制作的候选钥匙从一万把缩小到几十把。
- 数任务K 是激酶数量,也就是模拟器要预测的门数。
- 看差异ŷ_k 是模型预测第 k 个激酶的活性,y_k 是实验测到的真实活性,两者相减就是误差。
- 加权求和w_k 表示每个任务的重要程度,把所有任务的平方误差加权相加,得到总损失。
数据与训练
模拟器不是天生会认门。它需要看过大量钥匙与门锁的配对记录,才知道什么样的齿形会误开隔壁。数据太少,它就会瞎猜。
公开数据库如 ChEMBL、BindingDB 提供了大量激酶抑制剂活性数据,但数据存在严重稀疏:同一分子测过 JAK2,却没测过 JAK1/TYK2。为了服务于选择性设计,训练样本要把每个分子组织成一个活性向量:该分子在哪些激酶上测过、抑制浓度是多少、缺失值如何标记。
训练策略也需要讲究。数据增强可以给分子图加扰动,让模型看到更多合法变体;迁移学习先用大规模泛激酶数据预训练,再用 JAK 家族小数据微调。最重要的是按骨架划分训练集和验证集,避免同系列分子同时出现在两边,否则模型得分虚高、实战失灵。
一个见过世面的模拟器,才能真正判断新设计的门禁卡。数据和训练策略不是锦上添花,而是选择性预测模型的护城河。
设计案例
JAK 家族是讲选择性的最好课堂。JAK1、JAK2、JAK3、TYK2 四把锁同属一个锁芯平台,但功能却分工明确:JAK2 管造血,JAK3 管免疫,若一个抑制剂把四把锁全部打开,疗效也许有,副作用也很猛。
AI 设计流程大致是:先把已有抑制剂在四个亚型上的活性向量整理成训练集,训练多任务模型;随后对药化团队提出的骨架修饰逐一做虚拟反筛,输出每个候选物对 JAK1、JAK2、JAK3、TYK2 的预测抑制谱。
以设计 JAK1 选择性抑制剂为例,模型会同时给出 JAK1 活性和 JAK2、JAK3、TYK2 旁系活性。项目组按目标与旁系差异排序,只把排序靠前的分子送去合成和激酶谱实测。实测结果再回流到训练集,形成下一轮优化。
案例告诉我们,选择性不是一眼看出来的,而是“预测—合成—反筛—再训练”的闭环结果。每一轮关门,都是向更安全药物靠近一步。
产业价值
门禁系统最终要交付给整个小区,药物最终要面对真实病人。一个误开旁系门的分子,即便目标活性漂亮,也可能在临床阶段因毒性倒下。选择性设计决定了一个候选分子能走多远。
从效率上看,AI 虚拟反筛把大量旁系活性风险提前到合成之前,企业可以减少实体激酶谱筛选的次数,把预算集中在少数高选择性候选分子上。这是典型的降本增效。
从风险上看,越早识别脱靶风险,越能避免晚期临床失败。创新药研发平均周期长、成本高,而选择性预测直接压缩“做完动物实验才发现毒副作用”的悲剧概率。
未来的靶向药竞争,拼的不只是能不能抑癌,更是会不会误伤。把钥匙打磨到只开一扇门,正是 AI 制药全链路里最有温度的一环。
AI 应用场景
虚拟反筛前置到分子设计阶段
阶段:候选分子生成与评估
解决的问题:传统做法是先合成几十个化合物,再做激酶谱筛选,发现脱靶后再回头改结构,周期长、成本高。AI 能在分子尚未合成时,先预测它对 JAK 家族等多靶点的活性谱,把明显的“万能钥匙”提前淘汰。
具体案例:某 JAK 抑制剂项目中,计算团队从 1 万个虚拟类似物中先用多任务模型预测四个亚型活性,再按 JAK1 与 JAK2 的选择性指数排序,最终只挑选 50 个分子进入合成和实验反筛,大幅压缩了药化迭代轮次。
稀疏激酶谱数据的活性补全
阶段:数据准备与活性预测
解决的问题:公开数据库里同一个化合物往往只测过少数激酶,导致“活性矩阵”大量空缺。传统分析难以判断选择性。多任务模型利用不同激酶任务之间的共享规律,可以补全缺失的旁系活性预测。
具体案例:一个新骨架只在 JAK2 上测过活性,模型借助其他 JAK 家族化合物的训练知识,预测出它对 JAK1、JAK3、TYK2 的抑制概率,提前标出潜在脱靶风险。
药物管线风险评审闸门
阶段:候选药物优选定级
解决的问题:临床前候选分子往往因脱靶毒性在晚期被淘汰。用预测选择性指数和覆盖率作为评审闸门,可以在动物实验前识别高风险分子,降低研发沉没成本。
具体案例:项目组对一个候选物做虚拟反筛时,发现其预测激酶覆盖率超过 50%,果断暂停推进,改为优化旁系冲突位点;下一轮设计的选择性评分显著改善。
Python 演示
# Multi-task activity prediction and selectivity ranking (JAK family demo)from math import exp JAKS = ["JAK1", "JAK2", "JAK3", "TYK2"]FEATS = ["F", "Cl", "Me", "NH2", "CONH2"] # name: [feature vector, [JAK1..TYK2 inhibition labels]]MOLECULES = [ ("A", [1, 0, 1, 0, 1], [1, 0, 0, 1]), ("B", [0, 1, 1, 1, 0], [1, 1, 1, 0]), ("C", [1, 1, 0, 0, 0], [1, 1, 0, 0]), ("D", [0, 0, 1, 1, 1], [0, 1, 1, 1]),] def sigmoid(z): return 1.0 / (1.0 + exp(-z)) def train_task(X, y, epochs=200, lr=0.2): w = [0.0] * len(FEATS) b = 0.0 for _ in range(epochs): for feat, label in zip(X, y): z = b + sum(w[j] * feat[j] for j in range(len(FEATS))) err = sigmoid(z) - label for j in range(len(FEATS)): w[j] -= lr * err * feat[j] b -= lr * err return w, b def predict(w, b, feat): z = b + sum(w[j] * feat[j] for j in range(len(FEATS))) return sigmoid(z) def main(): X = [m[1] for m in MOLECULES] models = {} for idx, kinase in enumerate(JAKS): y = [m[2][idx] for m in MOLECULES] models[kinase] = train_task(X, y) candidates = [ ("cand1", [1, 0, 0, 0, 1]), ("cand2", [0, 1, 1, 0, 0]), ("cand3", [0, 0, 0, 1, 1]), ] results = [] for name, feat in candidates: preds = {kinase: predict(*models[kinase], feat) for kinase in JAKS} target = preds["JAK1"] off = sum(preds[k] for k in JAKS if k != "JAK1") / 3.0 si = target / (off + 1e-6) coverage = sum(1 for p in preds.values() if p > 0.5) results.append((si, coverage, name, preds)) results.sort(reverse=True) for si, coverage, name, preds in results: print(name, "SI=%.2f" % si, "coverage=%d" % coverage, preds) if __name__ == "__main__": main()
models[kinase] = train_task(X, y)每个 JAK 亚型训练一个分类头。preds = {kinase: predict(*models[kinase], feat) for kinase in JAKS}用同一分子特征一次性输出四个亚型的抑制概率。si = target / (off + 1e-6)目标预测概率除以旁系平均概率,模拟选择性指数。coverage = sum(1 for p in preds.values() if p > 0.5)统计预测阳性激酶数,模拟激酶覆盖率。results.sort(reverse=True)按选择性从高到低排列,方便项目组优先合成最专一的候选物。
常见误区
误区我总以为 IC50 越小越好,看到目标激酶 IC50 是 1 nM 就兴奋得不行,觉得这个分子绝对专一。
正解IC50 只说明对目标锁的开启能力,没告诉我们会误开哪扇邻居门。选择性看的是目标与旁系的差值;如果旁系 IC50 也只有 2 nM,那它就是一把更精致的万能钥匙。
为何常见:我们习惯用单一活性数字判断药效,把“更强”直接等同于“更好”,忽略了选择性是相对值。
误区反筛嘛,找一两个和靶点最像的旁系激酶测一下,没有抑制就说明很安全了。
正解旁系激酶很多,像 JAK 家族、EGFR 家族都有一群同源蛋白。反筛要用足够广的激酶面板,配合多浓度剂量矩阵,否则漏掉的门锁仍然可能造成脱靶毒性。
为何常见:人脑容易用少数代表推断整体,尤其当候选分子在少量旁系上表现很好时,会高估自己的覆盖面。
误区既然多任务模型预测得准,以后就不用做激酶谱实验了,直接看 AI 输出就行。
正解AI 是门禁模拟器,不是真实门锁。它依赖训练数据分布;遇到从未见过的新骨架,预测误差会显著增加。虚拟反筛负责缩窄候选范围,实验反筛负责最终验收。
为何常见:模型在测试集上的高准确率让人产生迷信,忘了真实世界的分布外情况。
误区理想的药物应该一点旁系活性都没有,选择性指数越大越好,最好把所有邻居门都焊死。
正解药物开发追求的是疗效与安全性平衡,不是数字本身。某些肿瘤药恰恰需要一定多靶点效应来增强疗效;完全零脱靶有时伴随更强耐药压力或更窄治疗窗。目标应是选择性曲线满足临床获益风险比。
为何常见:把“专一”标签化,忽略了药物机制和疾病的复杂性。
面试题
Q1. 某化合物对目标激酶 IC50=10 nM,对旁系激酶 IC50=300 nM,其选择性指数约是多少?
- A.约 3 倍左右
- B.约 10 倍左右
- C.约 30 倍左右← 正确答案
- D.约 300 倍左右
答案:C。选择性指数 SI 是旁系 IC50 除以目标 IC50,即 300 ÷ 10 = 30。这个值越高,说明旁系门越难被钥匙打开。
Q2. 反筛实验通常使用一批什么分子体系?
- A.同族激酶组成的活性面板← 正确答案
- B.不同溶剂的溶解性实验
- C.不同动物的代谢实验
- D.不同晶型的稳定性实验
答案:A。反筛的核心是把候选分子放到一整套同族激酶上测试,相当于挨家挨户试门锁,而溶解度、代谢、晶型都不是反筛的核心目标。
Q3. 激酶家族 ATP 结合口袋高度同源,对药物设计最直接的影响是什么?
- A.分子容易同时抑制多个激酶← 正确答案
- B.分子溶解度显著升高
- C.分子不再需要药代优化
- D.分子毒性完全消失
答案:A。同源口袋就像同款锁芯,钥匙只要适配其中一个,很容易顺势打开另一把同款锁,因此脱靶风险天然存在。
Q4. 多任务学习中的“任务”通常指什么?
- A.预测一种激酶的活性← 正确答案
- B.合成一个化合物的路线
- C.测量一次动物实验
- D.提纯一个蛋白质样品
答案:A。在多任务活性预测模型中,每个激酶对应一个预测任务。共享分子表征后,每个任务头专注预测自己负责的那扇门能不能打开。
Q5. 选择性评分 S(10) 越小,通常说明候选分子?
- A.强抑制的激酶比例越低← 正确答案
- B.强抑制的激酶比例越高
- C.目标活性一定越弱
- D.代谢稳定性越来越差
答案:A。S(10) 表示面板中强抑制激酶占受试总数的比例。数值越小,说明被误开的旁系门越少,选择性越好。
Q6. 下面哪些做法能帮助提升激酶抑制剂的选择性?
- A.用多任务模型预测旁系活性← 正确答案
- B.用激酶谱筛选验证脱靶← 正确答案
- C.提高筛选浓度到最大
- D.忽略目标与旁系的差异
答案:AB。AI 虚拟反筛可以提前看活性谱,实验反筛提供真实门锁反馈,两者结合才能逐轮关掉旁系门。提高浓度和忽略差异都会让脱靶风险变大。
Q7. 随机划分训练集可能高估选择性预测模型性能,主要是因为?
- A.相似骨架分子进入验证集← 正确答案
- B.数据缺失被自动补全
- C.训练轮数足够多
- D.损失函数选得合适
答案:A。随机划分时,同系列相似骨架可能同时出现在训练集和验证集,模型只需记忆类似结构就能得高分,却无法泛化到全新骨架。
Q8. 一个多任务激酶活性预测模型的直接输出可以是?
- A.每个激酶的抑制概率← 正确答案
- B.候选分子的选择性指标← 正确答案
- C.化合物合成路线图
- D.激酶晶体结构坐标
答案:AB。多任务模型输出的是活性预测值,据此可以进一步计算选择性指数或覆盖率;它不会直接给合成路线或晶体结构坐标。
Q9. 某候选物通过 400 激酶反筛均无强抑制,但体内研究仍出现脱靶毒性。以下哪项解释最合理?
- A.反筛面板可能没覆盖致病旁系← 正确答案
- B.反筛实验做得太严格了
- C.候选物纯度已经完美无缺
- D.多任务模型预测完全错误
答案:A。反筛面板再大也不是全蛋白质组。未被覆盖的旁系、代谢产物或非激酶靶点仍可能在体内造成脱靶,说明芯片之外仍有盲区。
Q10. AI 虚拟反筛相对于湿实验反筛的主要优势是?
- A.在合成前就能评估脱靶风险← 正确答案
- B.完全消除所有实验误差
- C.不需要任何训练数据
- D.直接进入人体临床试验
答案:A。AI 模拟器可以零成本地让未合成的分子先在整栋“虚拟门禁楼”里跑一遍,从而把高脱靶风险分子挡在合成之前。但它仍需数据,也无法完全替代实验。