从化学反应的无监督学习中提取有机化学语法
在有效的反应SMILES上实现稳健的原子映射。原子映射信息是通过在大规模化学反应数据集上以无监督方式训练的ALBERT模型学习得到的。
- 从化学反应的无监督学习中提取有机化学语法:经同行评议的Science Advances出版物(开放获取)。
- 演示:试用RXNMapper!
- 无监督注意力引导的原子映射预印本:在2020年ICML科学发现机器学习可解释性研讨会上展示。
安装
通过pip安装
conda create -n rxnmapper python=3.6 -y
conda activate rxnmapper
pip install rxnmapper
从GitHub安装
您可以直接从GitHub安装软件包并设置环境:
git clone https://github.com/rxn4chemistry/rxnmapper.git
cd rxnmapper
conda create -n rxnmapper python=3.6 -y
conda activate rxnmapper
pip install -e .
RDkit
在上述两种安装设置中,除非您在安装时包含额外选项:pip install "rxmapper[rdkit]"
,否则不会自动安装RDKit
依赖项。
也可以通过Conda或Pypi安装:
# 通过Conda安装RDKit
conda install -c conda-forge rdkit
# 通过Pypi安装RDKit
pip install rdkit
# 对于Python<3.7
# pip install rdkit-pypi
使用方法
基本用法
from rxnmapper import RXNMapper
rxn_mapper = RXNMapper()
rxns = ['CC(C)S.CN(C)C=O.Fc1cccnc1F.O=C([O-])[O-].[K+].[K+]>>CC(C)Sc1ncccc1F', 'C1COCCO1.CC(C)(C)OC(=O)CONC(=O)NCc1cccc2ccccc12.Cl>>O=C(O)CONC(=O)NCc1cccc2ccccc12']
results = rxn_mapper.get_attention_guided_atom_maps(rxns)
结果包含映射后的反应和置信度分数:
[{'mapped_rxn': 'CN(C)C=O.F[c:5]1[n:6][cH:7][cH:8][cH:9][c:10]1[F:11].O=C([O-])[O-].[CH3:1][CH:2]([CH3:3][SH:4]).[K+].[K+]>>[CH3:1][CH:2]([CH3:3][S:4][c:5]1[n:6][cH:7][cH:8][cH:9][c:10]1[F:11]',
'confidence': 0.9565619900376546},
{'mapped_rxn': 'C1COCCO1.CC(C)(C)[O:3][C:2](=[O:1])[CH2:4][O:5][NH:6][C:7](=[O:8])[NH:9][CH2:10][c:11]1[cH:12][cH:13][cH:14][c:15]2[cH:16][cH:17][cH:18][cH:19][c:20]12.Cl>>[O:1]=[C:2]([OH:3])[CH2:4][O:5][NH:6][C:7](=[O:8])[NH:9][CH2:10][c:11]1[cH:12][cH:13][cH:14][c:15]2[cH:16][cH:17][cH:18][cH:19][c:20]12',
'confidence': 0.9704424331552834}]
为了自动处理批处理和错误处理,您可以使用BatchedMapper
:
from rxnmapper import BatchedMapper
rxn_mapper = BatchedMapper(batch_size=32)
rxns = ['CC[O-]~[Na+].BrCC>>CCOCC', 'invalid>>reaction']
# 以下调用可处理任意大小的输入。此外,它们不会引发任何异常,
# 但会为第二个反应返回">>"或空字典。
results = list(rxn_mapper.map_reactions(rxns)) # 直接返回字符串结果
results = list(rxn_mapper.map_reactions_with_info(rxns)) # 返回字典形式的结果(如上所示)
测试
您也可以使用测试套件运行上述示例:
- 在您的Conda环境中:
pip install -e .[dev]
- 在根目录下运行
pytest tests
示例
要了解更多信息,请参阅示例。
数据
数据可在以下网址找到:https://ibm.box.com/v/RXNMapperData
引用
@article{schwaller2021extraction,
title={Extraction of organic chemistry grammar from unsupervised learning of chemical reactions},
author={Schwaller, Philippe and Hoover, Benjamin and Reymond, Jean-Louis and Strobelt, Hendrik and Laino, Teodoro},
journal={Science Advances},
volume={7},
number={15},
pages={eabe4166},
year={2021},
publisher={American Association for the Advancement of Science}
}