REINVENT4 是阿斯利康开源的分子生成平台,用强化学习驱动生成模型朝目标性质优化。它是少数真正被工业界用于实际项目的开源生成工具,工程完成度高:多种生成模式、可组合的多目标打分、完整的日志与断点续跑。
安装
git clone https://github.com/MolecularAI/REINVENT4.git
cd REINVENT4
pip install -r requirements-linux-64.lock
pip install --no-deps .
reinvent --help
reinvent config.toml
四种生成模式
| 模式 | 输入 | 用途 |
|---|---|---|
| Reinvent | 无 | 从头生成全新分子 |
| LibInvent | 骨架 + 连接点 | R 基团枚举,做类似物库 |
| LinkInvent | 两个片段 | 设计连接子,适合片段生长、PROTAC linker |
| Mol2Mol | 起始分子 | 相似性约束下的分子优化 |
实际项目里 LibInvent 和 Mol2Mol 用得最多——先导优化阶段通常不需要天马行空的新骨架,而是要在已有系列上做受控改造。从头生成看着惊艳,但产出往往难合成、偏离已知 SAR。
配置文件结构
run_type = "staged_learning"
device = "cuda:0"
[parameters]
prior_file = "priors/reinvent.prior"
agent_file = "priors/reinvent.prior"
batch_size = 128
use_checkpoint = false
[[stage]]
chkpt_file = "stage1.chkpt"
termination = "simple"
max_score = 0.7
max_steps = 300
[stage.scoring]
type = "geometric_mean"
[[stage.scoring.component]]
[stage.scoring.component.QED]
[[stage.scoring.component.QED.endpoint]]
name = "QED"
weight = 1.0
[[stage.scoring.component]]
[stage.scoring.component.custom_alerts]
[[stage.scoring.component.custom_alerts.endpoint]]
name = "Alerts"
params.smarts = ["[*;r8]", "[#7;!n][S;!$(S(=O)=O)]", "[#16][#16]"]
[[stage.scoring.component]]
[stage.scoring.component.MolecularWeight]
[[stage.scoring.component.MolecularWeight.endpoint]]
name = "MW"
weight = 0.6
transform.type = "double_sigmoid"
transform.high = 500.0
transform.low = 250.0
transform.coef_div = 500.0
打分函数:整个系统的成败所在
生成模型只会优化你写下的分数。打分函数设计不当,模型会精确地钻空子,产出得分很高但化学上荒谬的分子。几条实践经验:
- 务必加合成可及性与结构警报:只优化活性预测分,模型会产出高分但完全没法合成的怪物。SA score、custom_alerts、PAINS 过滤是必备的护栏。
- 用 transform 把硬阈值变软:直接卡 MW < 500 会造成优化悬崖,用
double_sigmoid这类平滑变换,模型更容易学。 - 几何平均而非算术平均:
geometric_mean下任一项接近 0 就整体接近 0,能防止「牺牲一个性质换其它高分」。 - 分阶段(staged learning):先优化基本性质,再逐步加入更严格的目标。一次性上全部约束往往学不动。
- QSAR 组件要看适用域:接入自己训练的活性模型时,生成分子很可能落在训练分布之外,此时预测值不可信。务必配合不确定性或相似性约束,否则模型会专门找模型的漏洞。
结果怎么评估
- 看的不是「最高分」而是分布整体的移动,以及生成分子的多样性有没有崩塌(mode collapse)。
- 用 GuacaMol / MOSES 的指标(有效性、唯一性、新颖性、内部多样性)做基本体检,见 222《GuacaMol》、223《MOSES》。
- 务必人工过一遍:用 mols2grid(见 217《Mols2grid》)把 top 分子渲染出来,让药化同事看。这一步几乎总能发现自动指标漏掉的问题。
- 最终判据是可合成、可验证:挑出的分子要能真正做出来并测活性,否则整轮生成没有实际价值。
上手提示
- 先导优化优先用 LibInvent / Mol2Mol,从头生成的产出往往难合成;
- 打分函数决定一切,必须加 SA score 与结构警报做护栏;
- 用几何平均 + 平滑 transform,避免模型钻空子;
- 自训 QSAR 组件要配不确定性约束,否则模型专挑模型漏洞。
延伸资源
- 评测工具:222《GuacaMol》、223《MOSES》;人工审查:217《Mols2grid》;
- 生成模型范式见「AI 模型」模块;
- 多参数优化与 DMTA 见「实战流程」模块。