[ PROMPT_NODE_26450 ]
reactions_data
[ SKILL_DOCUMENTATION ]
# Datamol 反应与数据模块参考
## 反应模块 (`datamol.reactions`)
反应模块支持使用 SMARTS 反应模式以编程方式应用化学转化。
### 应用化学反应
#### `dm.reactions.apply_reaction(rxn, reactants, as_smiles=False, sanitize=True, single_product_group=True, rm_attach=True, product_index=0)`
将化学反应应用于反应物分子。
- **参数**:
- `rxn`: 反应对象(来自 SMARTS 模式)
- `reactants`: 反应物分子元组
- `as_smiles`: 返回 SMILES 字符串 (True) 或分子对象 (False)
- `sanitize`: 清洗产物分子
- `single_product_group`: 返回单个产物 (True) 或所有产物组 (False)
- `rm_attach`: 移除连接点标记
- `product_index`: 从反应中返回哪个产物
- **返回**: 产物分子或 SMILES
- **示例**:
python
from rdkit import Chem
# 定义反应: 醇 + 羧酸 → 酯
rxn = Chem.rdChemReactions.ReactionFromSmarts(
'[C:1][OH:2].[C:3](=[O:4])[OH:5]>>[C:1][O:2][C:3](=[O:4])'
)
# 应用于反应物
alcohol = dm.to_mol("CCO")
acid = dm.to_mol("CC(=O)O")
product = dm.reactions.apply_reaction(rxn, (alcohol, acid))
### 创建反应
反应通常使用 RDKit 从 SMARTS 模式创建:
python
from rdkit.Chem import rdChemReactions
# 反应模式: [reactant1].[reactant2]>>[product]
rxn = rdChemReactions.ReactionFromSmarts(
'[1*][*:1].[1*][*:2]>>[*:1][*:2]'
)
### 验证函数
该模块包含以下功能:
- **检查分子是否为反应物**: 验证分子是否匹配反应物模式
- **验证反应**: 检查反应在合成上是否合理
- **处理反应文件**: 从文件或数据库加载反应
### 常见反应模式
**酰胺形成**:
python
# 胺 + 羧酸 → 酰胺
amide_rxn = rdChemReactions.ReactionFromSmarts(
'[N:1].[C:2](=[O:3])[OH]>>[N:1][C:2](=[O:3])'
)
**Suzuki 偶联**:
python
# 芳基卤化物 + 硼酸 → 联芳基
suzuki_rxn = rdChemReactions.ReactionFromSmarts(
'[c:1][Br].[c:2][B]([OH])[OH]>>[c:1][c:2]'
)
**官能团转化**:
python
# 醇 → 酯
esterification = rdChemReactions.ReactionFromSmarts(
'[C:1][OH:2].[C:3](=[O:4])[Cl]>>[C:1][O:2][C:3](=[O:4])'
)
### 工作流示例
python
import datamol as dm
from rdkit.Chem import rdChemReactions
# 1. D