规则引擎:把广义反应规则双向应用于分子,完成"反应中心匹配 + 原子映射 + 拓扑变换"。
RuleEngine
00 Remarks
变换语义(RuleEngine.Apply()):
- 存活原子 = 两侧共有的类号(元素/电荷按目标侧覆盖);
- 目标侧成键而匹配侧无键 → 创建新原子(离去/加入的辅底物);
- 匹配侧成键而目标侧无键 → 断键(断键处即反应中心);
- 两侧都不涉及的键 → 环境键,原样保留。
应用结束后会做全分子价态校验,违规的应用被丢弃——这是化学合理性的闸门。
01 Syntax
SMRUCC.genomics.Analysis.RetroPath.Chem.RuleEngine
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| ApplyForward | 1 | 正向应用规则:匹配规则的反应物模式,生成产物拓扑。 |
| ApplyReverse | 1 | 逆向应用规则:匹配规则的产物模式,反推反应物拓扑——逆合成搜索使用的方向。 |
| Apply | 2 | 核心变换(热路径):在分子上匹配计划中的「匹配侧」模式,再按「目标侧」拓扑改写化学键。 |
03 Members
正向应用规则:匹配规则的反应物模式,生成产物拓扑。
Parameters
Returns
应用结果列表;未命中或全部被价态闸门拒绝时返回空列表。
逆向应用规则:匹配规则的产物模式,反推反应物拓扑——逆合成搜索使用的方向。
Parameters
Returns
应用结果列表;未命中或全部被价态闸门拒绝时返回空列表。
核心变换:在分子上匹配 matchSide 模式,再按 otherSide 的拓扑改写化学键。
Remarks
兼容入口:两侧模式临时构造 ApplyPlan。热路径请改用 RuleEngine.Apply() 以复用规则预计算好的拓扑。
Parameters
| Name | Type | Description |
|---|---|---|
m | Molecule | 被变换的分子(不会被就地修改,内部先拷贝)。 |
matchSide | Pattern | 匹配侧模式(决定在分子的哪个部位发生反应)。 |
otherSide | Pattern | 目标侧模式(决定变换后的拓扑)。 |
limit | Int32 | 匹配枚举上限。 |
Returns
每个匹配对应的一个应用结果;已过滤掉价态非法的候选。
核心变换(热路径):在分子上匹配计划中的「匹配侧」模式,再按「目标侧」拓扑改写化学键。
Parameters
| Name | Type | Description |
|---|---|---|
m | Molecule | 被变换的分子(不会被就地修改,内部先拷贝)。 |
plan | ApplyPlan | 该规则在该方向上的预计算拓扑(只读,可多线程共享)。 |
limit | Int32 | 匹配枚举上限。 |
Returns
每个匹配对应的一个应用结果;已过滤掉价态非法的候选。