nuget server logo nuget api documents
↑

API Docs / SMRUCC.genomics.Model.Metabolic.RouterAdapter / RuleMiner

RuleMiner

Full name SMRUCC.genomics.Model.Metabolic.RouterAdapter.Data.RuleMiner Assembly SMRUCC.genomics.Model.Metabolic.RouterAdapter Members 13

01 Syntax

SMRUCC.genomics.Model.Metabolic.RouterAdapter.Data.RuleMiner

02 Methods

NameOverloadsSummary
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

method Mine #
Mine(IEnumerable(Of ReactionSpec), Dictionary(Of String, CompoundStructure), Int32, Int32, Int32, Int32, Int32, Boolean, Boolean, Dictionary(Of String, Int32), Dictionary(Of String, String))

逐条反应挖掘广义反应规则。

Parameters
NameTypeDescription
reactionListIEnumerable(Of ReactionSpec)

已映射为 ReactionSpec 的反应集合(建议按 id 排序以保证确定性)

structuresDictionary(Of String, CompoundStructure)

compound frame id → 已净化结构(缺失即无法解析的化合物)

maxMoleculeAtomsInt32

参与反应的分子重原子数上限(超出的反应跳过,控耗时)

maxPatternAtomsInt32

模式原子数上限(超出的规则过特异,跳过)

mcsNodeBudgetInt32

MCS 回溯搜索的节点预算

includeBuiltinInt32

是否叠加 RetroPath 内置的 9 条广义规则

skippedInt32

跳过原因计数(可为 Nothing)

method MineOne #
MineOne(ReactionSpec, Dictionary(Of String, CompoundStructure), Int32, Int32, Int32, Int32, Int32, Boolean, Dictionary(Of String, Int32), Dictionary(Of String, String))

从单条反应抽取一条广义规则;失败(跳过)返回 Nothing

method LargestComponent #
LargestComponent(Molecule)

取分子中最大的连通分量(多组分体系中即"主底物/主产物")

method CompleteSide #
CompleteSide(List(Of PatternEdge), Dictionary(Of Int32, Int32), HashSet(Of String))

用该侧独有的键(成键/断键)把模式的连通性补齐

method KeepLargestComponent #
KeepLargestComponent(Molecule, SortedSet(Of Int32))

只保留中心集合里最大的那个连通分量(丢弃游离的共底物/共产物组分)

method ExpandShell #
ExpandShell(Molecule, SortedSet(Of Int32), List(Of Int32), Int32)

从种子原子出发按指定半径向外扩展,作为规则的成键环境(泛化上下文)

method HasCenterNeighbor #
HasCenterNeighbor(Molecule, SortedSet(Of Int32), Int32)

该中心原子在本侧是否与另一个中心原子成键

method RepairIsolated #
RepairIsolated(Molecule, SortedSet(Of Int32))

为本侧孤立的中心原子补进一个邻居,使模式中的每个原子都至少有一条键。 返回是否发生了修改。

method CompoundIds #
CompoundIds(IEnumerable(Of CompoundSpecieReference))

反应某一侧的化合物 id(去重、去空、保持字典序) 从反应某一侧的化合物引用中取出 id(去重、去空、保持字典序)。

Parameters
NameTypeDescription
sideIEnumerable(Of CompoundSpecieReference)

化合物引用序列;BioCyc 与 GCModeller 内部代谢模型共用 CompoundSpecieReference 这一类型,因此可直接复用。

Returns

排序后的 id 列表。

method CompoundIds overload 2 #
CompoundIds(IEnumerable(Of String))

从化合物 id 序列中整理出规范 id 列表(去重、去空、保持字典序)。

Parameters
NameTypeDescription
idsIEnumerable(Of String)

原始 id 序列,允许含空值或 "A,B" 形式的并列写法。

Returns

排序后的 id 列表。

method EmitSide #
EmitSide(List(Of Int32), List(Of PatternEdge), HashSet(Of String), Boolean, Molecule, Dictionary(Of Int32, Int32), HashSet(Of String))

发射一侧的模式串:按生成森林做 DFS,支链用括号包裹,多组分用 "." 分隔。 返回 Nothing 表示存在孤立的类号(不参与匹配也不会被创建,属非法模式)。

method AtomToken #
AtomToken(Int32, String, Int32, Int32)

模式原子记号:[元素(Hn)(电荷):类号]。 Hn = 源分子中该原子的总氢数(显式 + 隐式)。保留氢数约束是必要的:只靠 "元素 + 键级" 的模式过于宽松,会把目标分子误切成碰巧落入汇集合的碎片 (实测出现过把分支酸"水解"成甲醇 + 甲酸的伪通路)。代价是牺牲一部分底物 混杂性——这正是 readme §6 所述"化学合理性 vs 泛化能力"的权衡。

method Bail #
Bail(Dictionary(Of String, Int32), Dictionary(Of String, String), String, String)

记录一条反应被跳过的原因(计数 + 逐条 trace,便于排查"某个反应为什么没进规则库")