1. 药物分子生成工程导论
药物发现从来不是“找到一个分子”这么简单。它是一条由靶点确认、先导化合物发现、先导优化、临床前评价到临床试验串联而成的长链条,而分子生成模型真正介入的位置,主要落在链条前段的“候选分子产生”环节。传统做法依赖高通量筛选、化合物库采购或化学家经验设计,可探索的化学空间往往只有 106~107 量级;而类药化学空间估计在 1030~1060 量级。生成模型的价值,就是用可学习的分布去逼近这个巨大空间,并按目标性质定向采样,把“大海捞针”变成“按条件捞针”。
但“能生成分子”与“能交付一个可用的分子生成系统”之间,隔着一条很长的工程链路。本课程关注的正是这条链路:从算法原型到可交付系统。所谓分子生成工程,是把生成模型、化学约束、性质评估、筛选决策、数据闭环与工程服务组合成一套可重复运行、可评估、可迭代的系统,而不是训练完一个模型、跑出一批 SMILES 就结束。
一、分子生成在药物发现流程中的定位
把药物发现流程拆开看,分子生成并不是孤立模块,它同时受上游靶点信息约束、受下游实验评价检验。上游输入通常包括:靶点结构或序列、已知活性化合物(如 IC50、Kd 数据)、结合口袋信息、成药性先验;下游输出则要经过对接打分、ADMET 预测、合成可行性评估,最终进入合成与生物测试。因此,生成模型的第一定位是候选空间的高效采样器,第二定位是多目标约束下的条件生成器,第三定位是与实验数据形成闭环的迭代引擎。
这三层定位决定了工程任务的不同侧重:采样器关注覆盖率与新颖性,条件生成器关注属性达标率与可控性,闭环引擎关注数据回流、模型更新与决策一致性。若只把生成模型当作“分子打印机”,就会在后续筛选阶段发现大量分子无法合成、毒性超标或与靶点无结合,工程价值迅速衰减。
二、生成模型工程的核心任务
核心任务可以归纳为五类,它们彼此耦合,不能单独优化。
- 表示与建模:选择分子表示(SMILES、SELFIES、分子图、3D 构象)与生成范式(VAE、GAN、自回归 Transformer、扩散模型、流匹配)。表示决定了合法性、可逆性与 3D 信息保留能力。
- 条件控制:把目标性质(logP、QED、TPSA、对接分数、选择性)作为条件注入生成过程,常见方式有条件向量拼接、分类器引导、无分类器引导(CFG)与强化学习微调。
- 约束与过滤:硬约束(子结构、骨架、分子量范围)与软约束(类药五规则、PAINS 过滤、合成可及性 SAscore)需要在生成中或生成后执行。
- 评估与筛选:用有效性、唯一性、新颖性、多样性、属性达标率、对接富集等指标量化生成质量,并建立多目标排序策略。
- 工程化与闭环:把模型封装为可调用服务,管理数据版本、模型版本、实验反馈,形成“生成—评估—合成—测试—回流”的迭代循环。
这五类任务中,最容易被低估的是评估与闭环。很多项目在生成阶段指标漂亮,却因为没有统一的评估口径和实验回流机制,无法判断模型是否真的在变好。工程上通常要求:每次生成批次都记录模型版本、条件参数、随机种子、过滤规则与评估结果,使任何一批分子都可追溯、可复现。
三、从算法到可交付系统的全链路
下面这张图给出全链路的概览:左侧是输入与约束,中间是生成与评估的核心处理链,右侧是交付与闭环。它强调的不是线性步骤,而是“生成—评估—决策—回流”的循环结构。
图中左侧的约束并非一次性输入,而是随项目推进不断细化。例如早期只有靶点序列时,条件主要来自类药性先验;当获得第一批活性数据后,条件可以加入药效团匹配或对接分数阈值;当实验反馈积累到一定规模,条件分布本身就可以被重新估计。工程上常把这一过程称为“约束的逐步收紧”,它比一次性设定全部条件更符合真实项目节奏。
四、一个可运行的最小示例
为了把上述链路落到具体操作,下面给出一个最小可运行示例的配置片段。它并不追求模型性能,而是展示工程上必须显式记录的关键字段。示例参数均为教学假设值,不代表任何真实实验结果。
# generation_batch.yaml(教学示例)
model:
name: "chemgen-transformer-v0"
checkpoint: "ckpt/epoch_12.pt"
representation: "SELFIES"
max_length: 96
condition:
target: "EGFR-T790M"
logP_range: [1.5, 3.5]
tpsa_max: 90
qed_min: 0.55
sa_score_max: 4.0
substructure_required: "quinazoline"
sampling:
num_molecules: 5000
temperature: 0.9
cfg_scale: 1.8
seed: 20240517
filter:
validity: true
uniqueness: true
pains: true
mw_range: [250, 550]
evaluation:
docking: "vina"
admet_model: "admet-v2"
metrics: ["validity", "uniqueness", "novelty",
"diversity", "qed_pass_rate", "dock_score_p50"]
运行后,工程上首先看的是有效性与唯一性:若 5000 条采样中有效分子不足 80%,说明表示或解码环节存在问题;若唯一性低于 90%,说明模型陷入重复模式。其次看条件达标率:例如 QED ≥ 0.55 的比例、SAscore ≤ 4.0 的比例。最后才看对接分数分布,因为对接本身有噪声,单批次的 p50 波动可能达到 0.5~1.0 kcal/mol,需要多批次比较才有意义。
五、工程视角下的常见误区
第一个误区是把生成指标当成项目指标。有效性、新颖性高,不等于分子能合成、能结合、能成药。第二个误区是忽略数据版本。同一模型在不同数据切分下评估结果可能差异很大,缺少版本记录就无法复现。第三个误区是只做单向生成,不做实验回流。没有回流,模型只能停留在先验分布附近,无法针对真实靶点持续优化。第四个误区是把约束全部放在生成后过滤,导致大量采样被浪费;更高效的做法是在生成过程中就注入关键约束。