SGMD
SGMD
SGMD 是一个由代理性质模型引导的分子生成与迭代富集框架。程序首先训练 Chemprop 性质预测模型,再使用多种互补的分子表示生成候选结构、预测目标性质,并将最优候选作为下一轮生成的种子。

代理模型引导的分子生成与发现流程
版本历史
v1.5
-
增加从数据集自动确定 SELFIES 长度与补齐上限。
-
增加基于 GPU 显存和分子大小的批大小自动选择。
-
增加 graph/GeoDiff 节点容量自动对齐。
-
增加 Diffusion 最低有效生成数自动计算。
-
增加富集种子数自动计算:候选数的 10%,限制为 32–256。
-
增加
auto_config_sequence.txt和auto_config_diffusion.txt,便于记录和复现自动配置。 -
将目标方向简化为“阈值与训练集中位数比较”的自动判断。
-
Diffusion 改为从合并候选池选择下一轮的富集种子。
v1.4
-
增加
D.csv无效 SMILES 报告和 canonical SMILES 规范化。 -
增加重复结构标签的可配置聚合方式。
-
增加生成候选内部去重及相对于
D.csv的新颖性过滤。 -
增加中性形式电荷、排除元素和数据集重原子范围过滤。
-
通过
TARGET_DIRECTION支持性质最大化与最小化。 -
增加明确的固定五折训练/验证/测试划分、评价指标、图和绘图数据。
-
增加从输入数据自动发现元素种类及 graph/GeoDiff 容量。
-
自定义数据默认文件名改为
D.csv。
v1.2
-
论文及示例版本。
-
Sequence 集成 RNN、Transformer 和 VAE。
-
Diffusion 集成 SELFIES、graph 和几何感知扩散。
-
实现 Chemprop 引导的迭代生成和基于阈值的命中筛选。
-
提供 BACE、energetics 和 permeability 示例及其结果文件。
生成模型介绍
Sequence_*.py 包含三种序列生成模型:
-
基于 GRU 的分子 RNN
-
分子 Transformer
-
分子 VAE
Diffusion_*.py 包含三种扩散生成分支:
-
SELFIES diffusion
-
graph diffusion
-
几何感知扩散(GeoDiff)
两条流程都使用 Chemprop 集成模型作为性质代理模型;默认从 R0 运行至 R5。
输入数据
CSV 至少包含两列:
|
|
-
分子列名称必须包含
smiles,不区分大小写。 -
性质列建议命名为
D、target或label;程序也可以识别velocity。 -
性质值必须为数值。
-
v1.2、v1.4 和 v1.5 默认读取
D.csv。
v1.5 使用方法
新建一个干净的任务目录,只复制一条生成流程的脚本和数据:
|
|
或:
|
|
修改脚本顶部的配置区,至少检查:
|
|
每个任务目录只运行一条流程:
|
|
或:
|
|
不要在同一任务目录中同时运行 Sequence 和 Diffusion。两者都会写入 runs/mol_chemprop_multi/,并可能覆盖或混合结果。比较两条流程时应使用两个独立目录。
目标方向
优化方向由训练集性质中位数自动确定:
-
当
TARGET_D >= median(D)时,程序执行性质最大化,命中条件为D_pred >= TARGET_D; -
当
TARGET_D < median(D)时,程序执行性质最小化,命中条件为D_pred <= TARGET_D。
如果该规则不符合实际科学目标,且最大化/最小化方向必须独立于阈值强制指定,请改用 v1.4,并设置 TARGET_DIRECTION = "max" 或 "min"。
自动确定的参数
| 流程 | v1.5 自动参数 |
|---|---|
| Sequence | 根据有效 SELFIES 的最大长度确定 MAX_LEN,并向上对齐至 8 的倍数;根据 GPU 显存和序列长度确定 BATCH_SIZE_GEN 与 SAMPLE_BATCH_SIZE;从候选的 10% 自动选择富集种子,数量限制为 32–256。 |
| Diffusion | 从数据集确定 SELFIES 长度及前缀长度;自动学习 graph/GeoDiff 元素种类和节点容量;根据 GPU 显存与分子大小选择批大小;按 NUM_GEN 的 12.5% 确定 MIN_VALID;从候选的 10% 自动选择富集种子,数量限制为 32–256。 |
最终采用的自动参数会保存为:
-
runs/mol_chemprop_multi/outputs/auto_config_sequence.txt -
runs/mol_chemprop_multi/outputs/auto_config_diffusion.txt
运行哪条流程,就只生成对应的配置文件。
v1.4 使用方法
准备方式和运行方式与 v1.5 相同,只需改用 Sequence_v1.4.py 或 Diffusion_v1.4.py。
需要重点检查的通用参数如下:
|
|
当您需要强制指定优化方向,或者需要手工控制序列长度、批大小、最低有效生成数和富集种子数时,应选择 v1.4。
运行:
|
|
或:
|
|
v1.2 使用方法
三个示例数据集均分别包含 Sequence/ 和 Diffusion/ 目录。例如:
|
|
|
|
主要输出文件
所有结果写入:
|
|
| 输出 | 含义 |
|---|---|
invalid_smiles_in_D.csv |
输入数据中的无效 SMILES;仅在发现无效行时生成。 |
Dm_deduplicated.csv |
Sequence v1.4/v1.5 生成的 canonical SMILES 去重及标签聚合数据。 |
kfold_*pred*.jpg |
固定五折真实值—预测值图。 |
kfold_*pred*.dat |
五折预测图对应的原始数据。 |
verbose.log |
各折 MAE、RMSE、R² 及总体统计。 |
generated_*_R0.csv 至 generated_*_R5.csv |
每个生成分支在各轮产生的候选。 |
generated_merged_round0.csv 至 generated_merged_round5.csv |
合并并去重后的候选池。 |
generated_with_pred_*_R*.csv |
含 Chemprop 预测值、并按优化方向排序的全部生成候选。 |
generated_hits_*_R*.csv |
满足 TARGET_D 阈值的候选。 |
通常最终使用:
|
|
需要查看全部最终候选及预测值时,读取 generated_with_pred_MERGED_R5.csv;只需要达到阈值的分子时,读取 generated_hits_MERGED_R5.csv。
生成分子的后处理
smiles_check/smiles_check_v6.py 是可选的 RDKit 筛选与可视化脚本,可进行解析与 SanitizeMol 检查、单组分/中性检查、元素及分子大小限制、理化性质范围过滤、环限制、PAINS 警示、合成可及性评分,以及相对于参考 CSV 的可选新颖性过滤。
运行前必须根据当前任务修改输入文件路径、预测性质列及阈值、可选参考数据和筛选开关。sascorer.py 与 fpscores.pkl.gz 需要保持为后处理脚本可访问。
注意事项
-
为控制项目体积,示例压缩包未包含部分
*.pt模型文件;需要时可重新运行对应脚本生成。 -
一次完整运行会重新训练五折 Chemprop 和三种生成模型。代码的部分步骤会删除或覆盖已有目录,因此应备份重要结果,或为每次实验建立新的任务目录。
-
精确数值复现还会受到软件版本、CUDA/PyTorch 行为以及模型检查点是否存在的影响。