Fork of MHNreact for use in the syntheseus library
项目描述
MHNreact
将现代Hopfield网络(Ramsauer等人,2021年)(MHN)应用于关联不同的数据模式、分子和反应模板,以提高对罕见模板和单步逆合成预测的性能。
使用现代Hopfield网络改进少样本和零样本反应模板预测
Philipp Seidl,Philipp Renz,Natalia Dyubankova,Paulo Neves,Jonas Verhoeven,Marwin Segler,Jörg K. Wegner,Sepp Hochreiter,Günter Klambauer
发现目标分子的合成途径是新药和材料发现中必不可少的。为了找到这样的途径,采用计算机辅助合成规划(CASP)方法,该方法依赖于化学反应的单步模型。在本研究中,我们介绍了一种基于现代Hopfield网络的基于模板的单步逆合成模型,该模型学习分子和反应模板的编码,以预测给定分子模板的相关性。模板表示允许跨不同反应进行泛化,并且显著提高了模板相关性预测的性能,特别是对于具有少量或零训练样本的模板。与基线方法相比,推理速度提高了一个数量级以上,我们在逆合成基准USPTO-50k中k≥3的top-k精确匹配准确度方面提高了或达到了最先进的性能。
最小工作示例
打开以下colab进行快速训练示例 train-colab.
环境
Anaconda
当使用conda
时,可以使用以下命令设置环境
conda env create -f env.yml
要激活环境,请调用 conda activate mhnreact_env
。
此外,还需要安装包含在本包中的 template-relevance,以及使用 pip 安装的 rdchiral
cd data/temprel-fortunato/template-relevance-master/
pip install -e .
pip install -e "git://github.com/connorcoley/rdchiral.git#egg=rdchiral"
可能需要调整 CUDA 版本。代码已在以下版本下进行了测试:
- rdkit 2021.03.1 和 2020.03.4
- python 3.7 和 3.8
- pytorch 1.6
- rdchiral
- template-relevance (./data/temprel-forunato)
- CGRtools(仅用于准备 USPTO-golden)
另一种选择是运行
conda create -n mhnreact_env python=3.8
eval "$(conda shell.bash hook)"
conda activate mhnreact_env
conda install -c conda-forge rdkit
pip install torch scipy ipykernel matplotlib sklearn swifter
cd data/temprel-fortunato/template-relevance-master/
pip install -e .
pip install -e "git://github.com/connorcoley/rdchiral.git#egg=rdchiral"
这相当于运行脚本 bash ./scripts/make_env.sh
Docker
另一种选择是使用 ./tools/docker/
中提供的 docker-file,以下为命令。
DOCKER_BUILDKIT=1 docker build -t mhnreact:latest -f Dockerfile ../..
数据和处理
预处理数据包含在本存储库中:./data/processed/uspto_sm_*
文件包含模板相关预测的预处理文件。
对于单步逆合成,预处理和分割数据可以在 ./data/USPTO_50k_MHN_prepro.csv
中找到
所有预处理步骤都可以在 ./examples/prepro_*.ipynb
中复制和找到,用于 USPTO-sm、USPTO-lg 以及 USPTO-50k 和 USPTO-full。由于大小原因,USPTO-lg 和 USPTO-full 不包含在内,需要使用相应的笔记本创建。
训练
可以使用 python mhnreact/train.py -m
来训练模型
选定的调用在 ./notebooks/*_training_*.ipynb
中有文档记录。
参数在模块中有文档记录,可以通过在调用中添加 --help
来检索。在 notebooks
文件夹中,有一些包含多个示例的笔记本。
一些主要参数包括
model_type
:模型类型,从 'segler'、'fortunato'、'mhn' 或 'staticQK' 中选择,默认为 'mhn'dataset_type
:数据集,对于模板相关预测,选择 'sm' 或 'lg';(对于单步逆合成的输入,使用 --csv_path)fp_type
:输入指纹类型:默认为 'morgan',其他选项:'rdk'、'ECFP'、'ECFC'、'MxFP'、'Morgan2CBF'template_fp_tpye
:模板指纹类型:默认为 'rdk',其他选项:'MxFP'、'rdkc'、'tfidf'、'random'hopf_beta
:hopfield beta 参数,默认=0.005hopf_asso_dim
:关联维度,默认=512ssretroeval
:单步逆合成评估,默认=False
单步逆合成的示例调用是
python -m mhnreact.train --model_type=mhn --fp_size=4096 --fp_type morgan --template_fp_type rdk --concat_rand_template_thresh 1 \
--exp_name test --dataset_type 50k --csv_path ./data/USPTO_50k_MHN_prepro.csv.gz --ssretroeval True --seed 0
加载训练模型和评估
有关如何加载训练模型的说明,请参阅 ./examples/20_evaluation.ipynb
。然后使用该模型在测试集上进行预测。
在自定义数据上训练
将数据预处理成与 ./data/USPTO_50k_MHN_prepro.csv
中相同格式,并使用 --csv_path
参数。
引用
要引用这项工作,您可以使用以下 bibtex 条目
@article{seidl2021modern,
author = {Seidl, Philipp and Renz, Philipp and Dyubankova, Natalia and Neves, Paulo and Verhoeven, Jonas and Segler, Marwin and Wegner, J{\"o}rg K. and Hochreiter, Sepp and Klambauer, G{\"u}nter},
title = {Improving Few- and Zero-Shot Reaction Template Prediction Using Modern Hopfield Networks},
journal = {Journal of Chemical Information and Modeling},
volume = {62},
number = {9},
pages = {2111-2120},
institution = {Institute for Machine Learning, Johannes Kepler University, Linz},
year = {2022},
doi = {10.1021/acs.jcim.1c01065},
url = {https://doi.org/10.1021/acs.jcim.1c01065},
}
参考文献
- Ramsauer et al.(2020)。 ICLR2021 (pdf)
关键词
药物发现、CASP、机器学习、合成、零样本、现代 Hopfield 网络