跳转到正文

DimeNet

Johannes Gasteiger, Janek Groß, Stephan Günnemann

DimeNet 提供 DimeNet 和 DimeNet++ 的参考实现,用于分子图上的方向性消息传递,并包含训练笔记本、测试集预测工作流和预训练模型。

条目更新 ·

概览

DimeNet 是一个研究仓库,包含用于分子图的 DimeNet 和 DimeNet++ 神经网络模型参考实现。该仓库配套论文《分子图的方向性消息传递》和《用于非平衡分子的快速且不确定性感知的方向性消息传递》。它的工作流用途是模型训练和分子性质预测,而非分子数据库访问或托管预测服务。README 建议优先使用 DimeNet++,而不是原始模型。

这些模型在方向性消息传递计算中使用分子图信息,以及距离和角度。文档列出的 QM9 目标包括 alpha、R2、U0、U、H、G、Cv、Mu、HOMO、LUMO 和 ZPVE。来源摘录未说明完整的输入模式或预测文件格式。训练通过 train.ipynb 进行,而 predict.ipynb 使用训练好的模型生成测试集预测。pretrained 中提供了两组预训练模型,train_seml.py 支持使用 Sacred 和 SEML 进行集群训练。

该仓库使用 TensorFlow 2,并记录了与原始 TensorFlow 1 实现相比,在训练和初始化方面的差异。解读结果时需要注意列出的问题:qm9_eV.npz 中存在分子筛选的差一错误、距离和基函数层差异、嵌入层差异,以及影响较旧 TensorFlow AddOns 版本的检查点保存问题。README 还指出了 MD17 基准比较不匹配的问题。对于能量和力预测,作者转而推荐 GemNet;因此,此条目应被视为有文档说明的研究实现,而非经过独立验证的科学工作流。

主要功能

  • 包含用于分子图方向性消息传递的 DimeNet 和 DimeNet++ 参考实现。
  • 提供用于模型训练的 `train.ipynb`,以及使用训练模型进行测试集预测的 `predict.ipynb`。
  • 在 `pretrained` 文件夹中提供两组预训练模型,供实验使用。
  • 包含使用 Sacred 和 SEML 进行集群训练的 `train_seml.py`。
  • 记录了 TensorFlow 2 实现中针对不同目标的输出层初始化方式。
  • 列出了与结果解读或复现相关的已知数据集、几何、基函数层、嵌入层和检查点问题。

使用场景

  • 评估用途:使用训练和预测笔记本评估 QM9 分子性质预测工作流,并将已记录的分子筛选错误纳入考量。
  • 评估用途:在受控实验设置中比较 DimeNet 和 DimeNet++,但不要假定已发表的结果可直接推广到新数据集。
  • 评估用途:在投入资源重新训练之前,检查所提供的预训练模型。
  • 评估用途:评估 `train_seml.py` 是否适合作为使用 Sacred 和 SEML 开展集群分子模型实验的起点。

使用方式

  1. 阅读官方 README,以选择 DimeNet 或 DimeNet++。README 推荐 DimeNet++,并建议能量和力预测用户考虑 GemNet。
  2. 查看 setup.py 中列出的依赖项,包括 TensorFlow、TensorFlow AddOns、NumPy、SciPy 和 SymPy。请将其视为声明的需求,而非与当前环境兼容的证据。
  3. 检查仓库中的 train.ipynb、predict.ipynb 和 pretrained 文件夹。在尝试训练或预测之前,确认预期的数据表示形式和目标选择。
  4. 查看 README 中的已知问题以及 QM9 筛选讨论。对于评估用途,请将数据集来源与处理记录、初始化选择及任何修正与上游结果分别记录。
  5. 如需集群训练,请检查 train_seml.py 和链接的 SEML 项目。使用或再分发前,请查看代码许可。

相关资源

PhysNet

模型

PhysNet 是一个 TensorFlow 实现,用于预测分子能量、力、偶极矩和部分电荷,并提供可配置的训练工作流和示例数据集。

开源Python

分子性质预测 · 量子化学

QML

开源工具

QML 是一个已归档的 Python 量子机器学习工具包,包含由 Fortran 支持的表示、核函数和求解器模块。后续开发已转移至 qmllib。

开源Python

分子性质预测 · 量子化学

SchNetPack 是一个用于构建和训练原子尺度神经网络的 Python 工具包,提供 SchNet 和 PaiNN 表征、量子化学性质输出以及分子动力学组件。

开源Python

分子性质预测 · 量子化学

SpookyNet

模型

SpookyNet 是一个 Python 研究软件包,据描述可学习包含电子自由度和非局域效应的力场;该项目附有一篇引用论文,且仓库代码采用 MIT 许可证。

开源Python

分子性质预测 · 量子化学

TorchANI

模型

TorchANI 是一个基于 PyTorch 的库,用于开发、训练和使用 ANI 风格的神经网络原子间势,并可选用 C++ 和 CUDA 扩展来计算描述符和执行推理。

开源PythonC++

分子性质预测 · 量子化学

ANI-1

数据集

ANI-1 提供计算得到的非平衡分子构象,并附有 Python 读取器,用于访问包含有机分子坐标和能量的 HDF5 文件。

开源Python

量子化学

相关指南

模型

QM9 分子性质预测:如何正确评估

明确 QM9 目标和单位,区分分子图与几何输入,防止评估泄漏,并保留原始数据与处理过程的来源记录。