Skip to main content

Module react

Module react 

Source
Expand description

按反应模板生成产物。

§映射号定义了一切

反应物模板与产物模板之间只有映射号这一条纽带:

原子在哪有映射号无映射号
只在反应物模板不可能(号在两侧都要找得到才叫“有“)删掉匹配到的那个原子
两侧都有保留匹配到的原子,按产物模板改写属性
只在产物模板同上,视作新建新建一个原子

键同理:产物模板里有的键就建,反应物模板里有而产物模板里没有的键就断。

§产物分子数由连通性决定

产物模板描述的是反应中心的片段,不是一个片段一个分子。所有产物模板建进 同一张图,模板之外的原子只搬一次,最后按连通分量切开。

逐产物各建一张图会出大问题:两个片段的锚点若仍通过未匹配的原子相连 (分子内反应、断环键),那批原子会被复制进每一个产物,质量当场不守恒 而没有任何东西报错。

§模板之外的部分原样带过来

反应物分子里没被模板匹配到的原子和键要照原样搬进产物。这一条决定了 反应模板可以写得很小 —— [C:1][OH:2]>>[C:1][Cl:2] 只描述羟基变氯, 分子其余部分自动跟着走。

§产物不做净化

产物是“按模板改写出来的图“,可能价键不合法(模板本身就能写出不合法的东西)。 净化与否交给调用方 —— 在这里净化会把“模板写错了“和“这条反应本来就不该 用在这个底物上“混成同一种失败。

§原子映射号是可选产出

模板里的映射号只在模板内部成立,它连的是“反应物模板的这个原子“与 “产物模板的那个原子”,与底物无关。底物上真正的原子对应关系是运行时才 产生的:模板匹配定下一部分,模板之外原样搬运的部分定下其余的。

run_reactantsatom_mapping 参数控制要不要把这份运行时对应关系 固化成映射号。开启时返回的 Outcome 里反应物与产物两侧都带号, 同一个号出现在两侧就表示是同一个原子。

Structs§

Outcome
一个匹配组合跑出来的结果。

Functions§

run_on_substrate
把整个反应物侧当作一张图上的查询来跑,而不是按位置配对。
run_reactants
对一组反应物跑反应,返回所有结果组。

Type Aliases§

ProductSet
一次反应的产物。