RuleMiner
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| Mine | 1 | 逐条反应挖掘广义反应规则。 |
| MineOne | 1 | 从单条反应抽取一条广义规则;失败(跳过)返回 Nothing |
| LargestComponent | 1 | 取分子中最大的连通分量(多组分体系中即"主底物/主产物") |
| CompleteSide | 1 | 用该侧独有的键(成键/断键)把模式的连通性补齐 |
| KeepLargestComponent | 1 | 只保留中心集合里最大的那个连通分量(丢弃游离的共底物/共产物组分) |
| ExpandShell | 1 | 从种子原子出发按指定半径向外扩展,作为规则的成键环境(泛化上下文) |
| HasCenterNeighbor | 1 | 该中心原子在本侧是否与另一个中心原子成键 |
| RepairIsolated | 1 | 为本侧孤立的中心原子补进一个邻居,使模式中的每个原子都至少有一条键。 返回是否发生了修改。 |
| CompoundIds | 2 | 反应某一侧的化合物 id(去重、去空、保持字典序) 从反应某一侧的化合物引用中取出 id(去重、去空、保持字典序)。 |
| EmitSide | 1 | 发射一侧的模式串:按生成森林做 DFS,支链用括号包裹,多组分用 "." 分隔。 返回 Nothing 表示存在孤立的类号(不参与匹配也不会被创建,属非法模式)。 |
| AtomToken | 1 | 模式原子记号:[元素(Hn)(电荷):类号]。 Hn = 源分子中该原子的总氢数(显式 + 隐式)。保留氢数约束是必要的:只靠 "元素 + 键级" 的模式过于宽松,会把目标分子误切成碰巧落入汇集合的碎片 (实测出现过把分支酸"水解"成甲醇 + 甲酸的伪通路)。代价是牺牲一部分底物 混杂性——这正是 readme §6 所述"化学合理性 vs 泛化能力… |
| Bail | 1 | 记录一条反应被跳过的原因(计数 + 逐条 trace,便于排查"某个反应为什么没进规则库") |
03 Members
IEnumerable(Of ReactionSpec), Dictionary(Of String, CompoundStructure), Int32, Int32, Int32, Int32, Int32, Boolean, Boolean, Dictionary(Of String, Int32), Dictionary(Of String, String))逐条反应挖掘广义反应规则。
| Name | Type | Description |
|---|---|---|
reactionList | IEnumerable(Of ReactionSpec) | 已映射为 ReactionSpec 的反应集合(建议按 id 排序以保证确定性) |
structures | Dictionary(Of String, CompoundStructure) | compound frame id → 已净化结构(缺失即无法解析的化合物) |
maxMoleculeAtoms | Int32 | 参与反应的分子重原子数上限(超出的反应跳过,控耗时) |
maxPatternAtoms | Int32 | 模式原子数上限(超出的规则过特异,跳过) |
mcsNodeBudget | Int32 | MCS 回溯搜索的节点预算 |
includeBuiltin | Int32 | 是否叠加 RetroPath 内置的 9 条广义规则 |
skipped | Int32 | 跳过原因计数(可为 Nothing) |
Dictionary(Of String, CompoundStructure), Int32, Int32, Int32, Int32, Int32, Boolean, Dictionary(Of String, Int32), Dictionary(Of String, String))从单条反应抽取一条广义规则;失败(跳过)返回 Nothing
Molecule)取分子中最大的连通分量(多组分体系中即"主底物/主产物")
List(Of PatternEdge), Dictionary(Of Int32, Int32), HashSet(Of String))用该侧独有的键(成键/断键)把模式的连通性补齐
Molecule, SortedSet(Of Int32))只保留中心集合里最大的那个连通分量(丢弃游离的共底物/共产物组分)
Molecule, SortedSet(Of Int32), List(Of Int32), Int32)从种子原子出发按指定半径向外扩展,作为规则的成键环境(泛化上下文)
Molecule, SortedSet(Of Int32), Int32)该中心原子在本侧是否与另一个中心原子成键
Molecule, SortedSet(Of Int32))为本侧孤立的中心原子补进一个邻居,使模式中的每个原子都至少有一条键。 返回是否发生了修改。
IEnumerable(Of CompoundSpecieReference))反应某一侧的化合物 id(去重、去空、保持字典序) 从反应某一侧的化合物引用中取出 id(去重、去空、保持字典序)。
| Name | Type | Description |
|---|---|---|
side | IEnumerable(Of CompoundSpecieReference) | 化合物引用序列;BioCyc 与 GCModeller 内部代谢模型共用 |
排序后的 id 列表。
IEnumerable(Of String))从化合物 id 序列中整理出规范 id 列表(去重、去空、保持字典序)。
| Name | Type | Description |
|---|---|---|
ids | IEnumerable(Of String) | 原始 id 序列,允许含空值或 "A,B" 形式的并列写法。 |
排序后的 id 列表。
List(Of Int32), List(Of PatternEdge), HashSet(Of String), Boolean, Molecule, Dictionary(Of Int32, Int32), HashSet(Of String))发射一侧的模式串:按生成森林做 DFS,支链用括号包裹,多组分用 "." 分隔。 返回 Nothing 表示存在孤立的类号(不参与匹配也不会被创建,属非法模式)。
Int32, String, Int32, Int32)模式原子记号:[元素(Hn)(电荷):类号]。 Hn = 源分子中该原子的总氢数(显式 + 隐式)。保留氢数约束是必要的:只靠 "元素 + 键级" 的模式过于宽松,会把目标分子误切成碰巧落入汇集合的碎片 (实测出现过把分支酸"水解"成甲醇 + 甲酸的伪通路)。代价是牺牲一部分底物 混杂性——这正是 readme §6 所述"化学合理性 vs 泛化能力"的权衡。
Dictionary(Of String, Int32), Dictionary(Of String, String), String, String)记录一条反应被跳过的原因(计数 + 逐条 trace,便于排查"某个反应为什么没进规则库")