目录

mChemprop

misaraty 更新 | 2026-10-06
前言
下载:mChemprop。

mChemprop

mChemprop 是一个基于 PyTorch 的独立 Chemprop 风格有向消息传递神经网络(D-MPNN),用于根据 SMILES 预测分子性质。

代码集成了 RDKit 分子解析、Chemprop 风格的原子与化学键特征、有向键消息传递、反向边排除、分子级聚合和前馈回归头,不依赖官方 Chemprop 软件包或原仓库内部模块。

环境依赖

1
pip install torch rdkit numpy pandas openpyxl scikit-learn matplotlib

仅当 USE_OPTUNA = True 时需要安装 Optuna:

1
pip install optuna

数据准备

在脚本所在目录中准备以下文件:

1
2
mChemprop_v2.py
data.xlsx

脚本读取 data.xlsx 的前两列,第一行必须是列标题:

SMILES target
CCO 1.23
CC(=O)O 0.87
c1ccccc1 2.15

第一列为 SMILES,第二列为数值型回归标签。无效 SMILES、空值、NaN 和无穷值会被跳过,并记录在训练日志中。有效分子数量至少需要 10 个。

可在脚本开头设置性质名称和单位:

1
2
TARGET_NAME = "target"
TARGET_UNIT = "unit"

使用方法

1
python mChemprop_v2.py

脚本会自动完成 SMILES 检查与规范化、固定的 80/10/10 训练集/验证集/测试集划分、仅基于训练集的标签标准化、MSE 损失训练、基于验证集 RMSE 的早停、最佳模型重新加载、三个数据子集评估以及图表和数据文件生成。当 CUDA 可用时自动使用 GPU 和自动混合精度,否则使用 CPU。

如果已有划分文件与当前数据一致,脚本会自动复用该划分。可选的 Optuna 优化只使用训练集和验证集,默认关闭。

所有结果保存在由 MODEL_NAME 和 RUN_VERSION 确定的目录中。按照默认设置,输出目录为:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Chemprop_v2/
|-- Chemprop_best.pt
|-- figure/
|   |-- Chemprop_parity_train.jpg
|   |-- Chemprop_parity_val.jpg
|   |-- Chemprop_parity_test.jpg
|   |-- Chemprop_parity_all.jpg
|   `-- Chemprop_rmse_curve.jpg
|-- dat/
|-- table/
|-- log/
`-- split/

输出内容包括训练集、验证集和测试集的 MAE、RMSE 与 R2,奇偶图及其 DAT 数据,RMSE 训练曲线及其 DAT 数据,可复用的数据划分,最佳模型权重和完整训练日志。启用 Optuna 后,最佳参数保存在 table/Chemprop_optuna_best_params.json。

其他 Python 程序可通过 load_trained_model() 加载模型,并通过 predict_smiles() 预测新分子。

引用

Chemprop v2:

D-MPNN 理论文献:

本工作:

论文正式发表后补充。