计算模拟与AI辅助药物设计:从原理到流水线实践指南
做药物设计的人这几年应该都被问过同一个问题你到底是做实验的还是搞计算的我的回答是这两条线之间的边界已经越来越模糊了。药物设计里的计算模拟和AI早就不是什么“锦上添花”的辅助工具而是真正能决定化合物往哪个方向走的战略手段。这篇文章想把这两类方法放在一起系统梳理一遍讲讲它们各自解决什么问题、核心逻辑是什么、实操中怎么配比使用以及新手最容易在哪个环节翻车。如果你刚开始接触计算辅助药物设计CADD和AI药物发现AIDD或者做湿实验想引入计算手段这篇文章可以帮你少走很多弯路。1. 从“碰运气”到“先在电脑里跑一遍”计算模拟和AI凭什么改变药物设计1.1 传统发现流程的成本与瓶颈大多数新药研发的起点是“找到一把能开锁的钥匙”。所谓锁就是某个与疾病相关的靶点蛋白所谓钥匙就是能调节这个靶点的化合物分子。传统流程通常是这样完成靶点验证后从几十万到上百万个化合物里用高通量筛选去碰运气筛出少数有初步活性的分子再进入先导化合物优化反复修改结构改善活性、选择性、溶解性和安全性。这条路最大的问题不是“笨”而是贵和慢。高通量筛选一次实验耗材和人力资源都很惊人而且筛出来的命中率往往只有百分之零点几到几个百分点。更麻烦的是后续优化阶段每换一个基因片段或取代基都要合成、测试、再合成、再测试这个循环走一轮通常需要几周甚至几个月。于是业界一直在想一个问题能不能在化合物还没有被合成出来之前就先预测出它大概的行为这就是计算模拟进入药物设计的最早动机。早期它只能做点事后解释某个酶被抑制了算算抑制剂是不是能插进活性口袋。后来随着算法和算力提升它慢慢变成事前筛选工具能在合成之前先“淘汰”一批看起来不靠谱的分子。1.2 计算模拟与AI的分工物理模型和数据模型很多人分不清计算模拟和AI方法甚至把两者混为一谈但它们背后的哲学完全不同。计算模拟本质上是物理模型。它基于牛顿力学、量子力学和统计力学尝试用最基本的作用力去描述分子间的相互作用。优点是它不依赖历史数据哪怕这个靶点是全新的、没有已知抑制剂也可以靠结构推演缺点是计算量大几千个分子跑一轮分子动力学模拟就够呛。AI本质上是数据模型。它不做“物理推理”而是从大量已知的活性数据中归纳出分子结构和性质之间的统计规律。优点是算得快几万几十万个分子可以批量筛选缺点也很致命它非常依赖训练数据的质量和覆盖度一旦遇到与训练集分布差异很大的化学空间很容易给出离谱的外推结果。这两者不是替代关系更像一个“经验丰富的老师傅”和一个“擅长推理的物理系学生”。我这些年做项目的体会是几乎所有跑得比较顺的流程都是把两者串起来的让AI做第一轮快速筛选让模拟做第二轮严格验证。2. 分子对接与分子动力学模拟方法的两根支柱2.1 分子对接先看配体能不能放进口袋分子对接是计算药物设计里最经典的方法没有之一。它的目标可以概括成一句话给定一个蛋白三维结构和一个小分子配体预测这个配体会以什么姿势结合在活性位点里。对接过程其实分成两个子问题采样和打分。采样是在空间里尝试配体的不同位置、不同取向、不同可旋转键角度生成大量构象打分是给每个构象算一个分数估计它结合好不好。采样通常用遗传算法、蒙特卡洛方法或者系统搜索来做打分函数则分成基于力场、基于经验和基于知识这三类各有各的取舍。实操上我一般把对接流程拆成几步。第一步是准备蛋白结构从蛋白结构数据库拿到结构以后去水、加氢、修复缺失残基、确认配体周围的质子化状态这些细节直接影响能不能跑出合理结果。第二步是处理配体确定正确的对映异构体、质子化形态和3D构象这一步别偷懒直接用最小化的构象就行最好用专门的配体制备工具做一遍。第三步是定义活性口袋有共晶配体就用共晶配体周边的残基没有的话就得靠空腔检测算法去猜风险会大很多。对接打分有一个经常被忽略的点得分并不表示“结合强弱”的绝对值它更适合用来做排序。我对团队新人反复说的一句话是不要因为Vina得分是-9就把这个分子当宝贝更不要因为得分是-6就直接丢掉。不同靶点、不同打分函数之间的分数体系差异很大最可靠的做法是拿已知活性化合物做对照在同一个条件下跑一遍看看新候选分子排在第几位。2.2 分子动力学把静态结构变成动态过程如果说分子对接是拍一张“快照”分子动力学MD就是拍一段“录像”。蛋白在体液中不是静止的它每分钟都在颤动活性口袋会开合侧链会翻转水分子会进进出出。有些结合模式在静置状态下看合理一旦动起来就散了这就是为什么需要MD来做进一步验证。MD模拟的核心是把原子当成小球用牛顿运动方程模拟它们每一步的运动。原子之间的相互作用由力场描述典型力场包含键伸缩能、键角弯曲能、二面角旋转能、范德华相互作用和静电能。模拟时每个时间步长一般是2飞秒左右为了把步长拉到这么大通常会对所有氢原子施加约束算法把键长固定避免高频振动导致积分发散。跑MD不是一上来就边跑边采样。常规流程是先做能量最小化消除空间冲突然后分阶段升温从0K加热到目标温度一般是310K生理体温再做长时间的平衡模拟让体系达到稳定状态最后才进入产出模拟收集轨迹用于分析。一套200纳秒左右的蛋白-配体复合物模拟在普通GPU工作站上可能跑个两三天这是很正常的节奏。分析轨迹时我看的指标通常是RMSD、RMSF、回转半径、氢键占有率和结合自由能。RMSD看整体构象漂移如果RMSD一直在涨停不下来说明这个复合物本身就不稳定RMSF看残基的柔性可以帮助判断哪个区域尤其活跃氢键占有率则能提示配体与蛋白之间哪些相互作用是长期存在的。结合自由能更高阶可以跑MM/PBSA这类方法做相对排序它精度比FEP低但计算成本低很多适合在几百个候选里挑几十个。2.3 两种方法怎么选先问自己要什么答案挑选模拟方法的逻辑其实一句话就能说清你要回答的问题决定你用什么工具。如果只想快速知道“这批分子里谁可能结合”分子对接是第一选择一个分子在普通工作站上跑几十秒到几分钟批量筛选完全可行。如果想知道“这个分子结合了但能不能稳定结合”那就得做MD看它在几百纳秒里会不会跑掉、结合模式会不会变化。如果还想回答“结合到底多强”这种定量问题那就要动用自由能微扰FEP这类更精密也更贵的流程需要很谨慎地设计也对计算资源有较高要求。现在不少平台把对接、MD和FEP打包成一条自动化管线看起来很方便但我的经验是先用对接缩小范围再用MD精查最后才考虑FEP。一上来就做FEP是在浪费资源。3. AI在药物设计里的三条主线预测、生成与排序3.1 分子怎么“喂”给模型从指纹到图表示聊AI方法之前得先讲清楚分子怎么变成数字。机器学习模型不认识化学结构式它认识的是一串向量。常用分子表示有三种SMILES字符串、分子指纹和图结构。SMILES本质是一个线性文本表示用一串ASCII字符描述原子连接顺序比如某个苯环带个羟基写成字符串就是一串字符。早期很多序列模型直接拿SMILES当“语言”来训练生成新分子就是生成新的字符串。分子指纹则是把分子的结构特征映射成固定长度的二进制向量比如常用的扩展连接指纹ECFP会把分子中每个原子周围的局部环境哈希成一组比特。指纹的好处是计算快、方便喂给随机森林、SVM这些传统机器学习模型PCA一下还能直接做聚类分析。图表示更接近化学家的直觉把原子当节点、化学键当边。图神经网络GNN可以在图上做消息传递自动学习原子周围的拓扑特征。近两年越来越多活性预测模型改用GNN因为它能在结构相似性上提取到远比指纹更精细的信息。三者的选择很实际简单快速用指纹想刻画拓扑用图生成任务则绕不开SMILES或3D坐标。3.2 活性与ADMET预测数据驱动的快速筛选器AI在药物设计里最经典的落地场景就是预测。预测可以分成两大块一块是生物活性预测一块是ADMET性质预测。活性预测做的事情是给定一个分子预测它对某个靶点的抑制活性常用IC50值或者换算后的pIC50。这类模型通常拿公开活性数据库里的化合物做训练用随机森林、XGBoost或者图神经网络去拟合结构到活性的映射。做回归任务比分类更好用因为IC50是连续值模型直接预测数值方便在后续流程里画阈值做筛选。ADMET预测在虚拟筛选里可能比活性预测更值钱。很多分子活性漂亮但溶解性差、透膜能力弱、代谢太快或者有毒性隐患一进动物实验就“见光死”。常见的ADMET模型覆盖水溶性、LogP、渗透性、CYP酶代谢、hERG通道结合风险等。把这些模型串成一个过滤层能在湿实验之前就把“活但不可药用”的分子拦下来。但有一个维度必须提AI模型的预测质量高度依赖训练数据的质量。公开数据库里有大量噪声标签同一个化合物在不同实验室测出来的IC50可能差上百倍这点很多初学者没有足够重视。做模型评估时与其看整体精度不如看它在特定化学系列上的表现毕竟虚拟筛选最终面对的是新系列分子。3.3 分子生成从“筛库”到“写分子”预测模型再快也只是在筛选已有分子它不能创造新的化学实体。分子生成模型的目标是“无中生有”地写出新结构这是AI药物设计里最受关注的方向。常见生成范式有三类序列生成、图生成和3D生成。序列生成把SMILES当语言用循环神经网络或者Transformer训练后从一个隐空间中采样新字符串图生成则是逐步在分子图上加原子、加键每一步都在生成合法的局部结构3D生成更进一步直接在三维空间里放原子坐标特别适合“口袋引导生成”——给定一个活性口袋形状模型直接在口袋里生长分子。真正落地时光会“生成”远远不够模型得能“写一个能用的分子”。现在主流做法是目标导向优化在生成过程中叠加多个评价器比如活性预测模型的打分、类药性规则、可合成性评分、甚至对接分数用强化学习或者遗传算法引导模型往高分方向生成。我给一个不太严谨但很真实的比例用无约束生成模型写出来的分子可能三成以上读着奇怪或违反基本化学规则加上规则过滤和目标优化之后能留下来的候选才算真正进入评估环节。3.4 预训练模型的新玩法别被效果光晕带偏最近一两年大语言模型和蛋白质语言模型的概念也刮进了分子设计领域。思路是用海量无标签分子做自监督预训练让模型先学“化学语法”再在少量有标签数据上微调。理论上这种方法对数据稀疏的靶点很有优势因为预训练阶段已经学到了丰富的化学表示。我的态度是积极但谨慎。预训练表示确实比裸指纹表现稳定尤其在训练集比较小的时候优势明显但别指望它包治百病。很多论文里的漂亮指标换到自己项目里就不灵了原因往往出在数据分布差异或者验证方式太乐观。所以我的原则是任何AI模型无论多新潮都必须用一套和你真实筛选场景吻合的验证方式来考核不要被公开基准测出来的高分冲昏头脑。4. 把计算模拟和AI串成一条可落地的筛选流水线4.1 一条实际可跑的流程长什么样单独讲对接、MD和AI模型都会讲得头头是道但真正做项目时麻烦都在“怎么把它们串起来”。我把自己常用的一条管线放在这里供参考它适合结构已知的靶点做主动化合物发现第一步是靶点准备。拿到蛋白结构做加氢、删水、定义口袋的常规处理同时从公开数据库和专利文献里收集已知活性分子作为正样本或对照。第二步是AI初筛或生成。用已有的活性数据训练一个活性预测模型对大型化合物库做第一轮批筛或者干脆用生成模型直接针对口袋设计新高通量候选。假设你有1万个候选分子这个环节可以把它们压缩到2000个左右关键是速度极快几乎不占算力。第三步是分子对接粗筛。拿2000个分子跑对接用标准精度模式批量处理。这一步的目的不是追求高分而是把明显放不进口袋的分子剔除掉。我会把排名前500的分子挑出来同时要求覆盖不同的分子骨架防止全表都是同一个系列。第四步是MD精查。对排名靠前的50到100个复合物跑短程MD模拟看RMSD和结合模式稳定性。MD很贵不可能拿几千个分子都跑一遍所以必须在前一步先把数量砍下来。这一步会筛掉一批“对接姿势不错但一跑就散”的分子。第五步是ADMET过滤。对剩余分子跑溶解性、渗透性、代谢稳定性、毒性和可合成性预测得到一份最终推荐列表通常控制在20到50个分子。这个列表交给湿实验团队时每个分子都要带清晰的结构、预测数据和建议的合成路径。4.2 各环节的过滤比率与算力分配管线里的每一步都在做“漏斗”过滤比率是设计管线时最先需要想清楚的事。给你一组我实际用的参考值起始1万个分子AI活性预测筛掉80%剩下2000对接取Top25%剩500MD精查跑50到100个筛掉一半剩25到50ADMET再过滤掉三成左右最终给湿实验10到20个分子。这里面的关键教训是不要在早期环节把口子收得太紧。对接打分不理想但AI预测活性很高的分子有时候反而藏着新骨架而对接打分特别高的分子经常只是因为分子量偏大、碳链太长靠疏水作用硬凑出来。所以早期环节用“宽松模式”后期用“严格验证”比我早期做项目时一上来就希望每个分子都拿高分要有效得多。4.3 数据闭环比单点精度更重要很多团队把AI模型当成一次性工具训练完、筛完就束之高阁这是最大的浪费。药物设计项目本身就在持续生成数据湿实验测了一批化合物的活性、溶解度、代谢数据这些数据一旦回来就应该以第一时间回流进模型做增量更新。我见过最理想的项目节奏是这样的第一轮交付20个分子湿实验测完反馈5个有活性把这5个结构连同活性梯度加进训练集重新训练活性模型和ADMET模型第二轮生成时模型就能更精准地往这块化学空间靠。做上三四轮之后这个AI模型的水平会明显高于任何公开基准模型因为它已经“学会”了你们自己项目的特殊化学偏好。数据闭环看似慢其实是把AI从“通用工具”变成“项目专属助手”的唯一路径。5. 实战里最容易翻车的五个细节5.1 数据泄漏模型评分虚高的头号杀手AI模型在药物设计里最典型的翻车方式不是“预测不准”而是“验证的时候看起来特别准实际用起来完全崩”。问题根源多半在数据泄漏。最常见的错误是随机划分训练集和测试集。分子结构之间有骨架上天然的高相似性同一个母核改一个取代基的两个分子会被随机拆分到两边模型在训练集里“见过”了类似骨架测试时自然轻轻松松。这种评测分数没有任何参考意义。正确做法是用骨架划分比如按Bemis-Murcko骨架分组或者更严格地按时间划分用历史数据训练、近期数据测试模拟真实场景中“预测未来分子”的挑战。我建议任何做ADMET或活性预测的人都自查一遍数据划分方式这一条就够淘汰掉市面上很多“虚高”模型。5.2 不要把打分函数当成“结合强度测量仪”这句话我在内部培训里重复过无数遍对接打分函数是粗筛工具不是精量仪器。它对溶剂化、熵效应、蛋白柔性的处理非常粗糙经常在特定化学类型上系统性偏差。对付这个问题最实用的手法是做“已知活性对照”。在正式筛选前把一批已知活性分子和一批已知不活跃分子放进同一个对接流程建立这个体系下的分数基线。如果这两个已知集合的打分分布重叠严重说明当前打分函数对体系不敏感筛选结果可信度就低如果分开较为明显那新分子的分数才有参考意义。另外无论打分多漂亮都建议对Top化合物做视觉检查看配体是不是形成了合理的氢键网络、有没有暴露强极性原子在水里有没有奇怪的张力构象。5.3 溶剂、质子化和蛋白柔性结构准备决定成败很多项目死得早不是算法选得差是结构准备没做好。蛋白结构里His残基的质子化状态质子到底在哪个N上直接影响氢键网络Asp和Glu在活性口袋里的质子化状态也不是默认需要结合pKa环境去判断保守水分子是否保留对整个结合模式的影响更是巨大。把这些细节全部交给默认参数等于把项目的成败交给了运气。我的习惯是拿到一个靶点先花半天时间做人眼检查。把共晶配体周围的相互作用画出来逐个确认残基的质子化、氢键供受体方向、水分子位置再用做MD或对接。这半天花得很值因为它避免的是后面整条管线被误导。5.4 生成分子很漂亮合成路线呢AI生成分子最让人心动的点是它总能写出意想不到的新结构最让人崩溃的点也恰恰是这些新结构十有八九合不出来。一个看起来完美契合口袋的分子如果中间有个五元环并四元环的张力结构或者取代基位置完全没办法用现有反应构建它就只能停留在PPT里。所以生成模型的下游必须挂一个可合成性评估。计算的可合成性分数只能做粗略参考更靠谱的做法是对候选分子做逆合成分析检查是否落在常用反应规则以内或者至少检查关键片段的原料可得性。我们在实际项目里会专门准备一个“不可合成黑名单”把所有合成团队明确表示“别再来一次”的结构类型积累起来作为生成模型的硬约束。5.5 计算与湿实验协作的团队经验最后说一点关于人的经验。计算和AI团队与湿实验团队之间的配合经常是项目成败的隐形决定因素。我见过太多次这样的场景计算团队交付了一万分子列表湿实验团队没法消化最终不了了之或者湿实验随便挑了几个“看起来顺眼”的去合成根本没看计算排序背后的理由。解决方式其实很简单交付物要“少而可执行”。一次给湿实验10到20个分子每个分子附带明确的优先级、预测依据和推荐合成路线。计算和AI团队也不要只给一个高分分子就完事最好提供几个结构相似但性质互补的类似物作为备选这样湿实验在合成受阻时还有调整空间。长期来看计算团队能理解湿实验的痛点湿实验团队能用结果反哺计算模型这才是真正的项目壁垒。最后说点个人体会。我做了这么多年计算和AI辅助药物设计发现一个现象翻车概率最高的项目往往不是算法选得不好而是流程设计得不闭环。AI预测完就丢、对接筛完就锁死、湿实验做完数据不回流各个环节像孤岛一样。真正让我做得舒心的项目都是把每组实验数据和模型更新跑成一个正向循环的。我的习惯是每次拿到一张新的活性数据表都会先去更新一次模型再谈新设计而不是急着生成下一批分子。这个习惯不花多少钱省下的却是大片在错误化学空间里打转的时间。