mChemprop
mChemprop
mChemprop 是一个基于 PyTorch 的独立 Chemprop 风格有向消息传递神经网络(D-MPNN),用于根据 SMILES 预测分子性质。
代码集成了 RDKit 分子解析、Chemprop 风格的原子与化学键特征、有向键消息传递、反向边排除、分子级聚合和前馈回归头,不依赖官方 Chemprop 软件包或原仓库内部模块。
环境依赖
|
|
仅当 USE_OPTUNA = True 时需要安装 Optuna:
|
|
数据准备
在脚本所在目录中准备以下文件:
|
|
脚本读取 data.xlsx 的前两列,第一行必须是列标题:
| SMILES | target |
|---|---|
| CCO | 1.23 |
| CC(=O)O | 0.87 |
| c1ccccc1 | 2.15 |
第一列为 SMILES,第二列为数值型回归标签。无效 SMILES、空值、NaN 和无穷值会被跳过,并记录在训练日志中。有效分子数量至少需要 10 个。
可在脚本开头设置性质名称和单位:
|
|
使用方法
|
|
脚本会自动完成 SMILES 检查与规范化、固定的 80/10/10 训练集/验证集/测试集划分、仅基于训练集的标签标准化、MSE 损失训练、基于验证集 RMSE 的早停、最佳模型重新加载、三个数据子集评估以及图表和数据文件生成。当 CUDA 可用时自动使用 GPU 和自动混合精度,否则使用 CPU。
如果已有划分文件与当前数据一致,脚本会自动复用该划分。可选的 Optuna 优化只使用训练集和验证集,默认关闭。
所有结果保存在由 MODEL_NAME 和 RUN_VERSION 确定的目录中。按照默认设置,输出目录为:
|
|
输出内容包括训练集、验证集和测试集的 MAE、RMSE 与 R2,奇偶图及其 DAT 数据,RMSE 训练曲线及其 DAT 数据,可复用的数据划分,最佳模型权重和完整训练日志。启用 Optuna 后,最佳参数保存在 table/Chemprop_optuna_best_params.json。
其他 Python 程序可通过 load_trained_model() 加载模型,并通过 predict_smiles() 预测新分子。
引用
Chemprop v2:
D-MPNN 理论文献:
本工作:
论文正式发表后补充。