nuget server logo nuget api documents
↑

API Docs / SMRUCC.genomics.Analysis.RetroPath / BeamSearch

BeamSearch

Full name SMRUCC.genomics.Analysis.RetroPath.Search.BeamSearch Assembly SMRUCC.genomics.Analysis.RetroPath Members 10

逆向路径搜索:以目标分子为根,逐层把广义规则逆向应用(亦尝试正向)展开搜索树, 直到所有前体落入汇集合。

00 Remarks

三个核心机制(readme.md §3):

  • 束剪枝:每层按 (待分解数, 原子总数, ΔG) 确定性排序,只保留前 beam-width 个状态;
  • 循环消除:每条分支维护已见化合物指纹集合,前体重复即剪枝;
  • 状态去重:同一 Pending 集合只保留一次。

束搜索并非完备搜索,提高 SearchOptions.BeamWidth 与 SearchOptions.MaxDepth 可提升召回。

01 Syntax

SMRUCC.genomics.Analysis.RetroPath.Search.BeamSearch

02 Methods

NameOverloadsSummary
.ctor 1 构造搜索器。
Search 1 主入口:从目标分子出发做逆向搜索,返回全部完整路径(深度 ≤ maxDepth)。
ExpandUnit 1 展开单个工作单元:把一个规则双向应用到某个待分解化合物上,产出新状态。 单元内部的顺序(先正向后逆向、碎片按原序)与串行版本严格一致。
PathKey 1 路径内容指纹 = 各步(规则 + 被分解物 + 前体集合)的多重集。 步骤字符串排序后拼接,使"分解顺序不同但反应集合相同"的等价路径合并为一条。
Preference 1 导向优先级:0 = 本分支已触达导向键(如起点化合物 A),1 = 尚未触达。 未配置导向键时恒返回 0,即退化为原有的纯 (pending, atoms, ΔG) 排序。

03 Fields

NameOverloadsSummary
_preferKeys 1 导向键集合(可选):束剪枝时优先保留「本分支已经触达过其中某个化合物」的状态。 用于 SynthesisRoute(A→B) 把 A 的分子指纹放进来,使通往 A 的分支不被剪掉。 为 Nothing 或空集时,剪枝排序与历史行为完全一致。
_pathKeys 1 已收录完整路径的内容指纹(消除对称臂等同构重复路径)
_mergeLock 1 并行区归并共享结果列表时的锁
Stats 2 本次搜索的运行统计(尝试次数、生成状态数、到达深度等)。

04 Members

method .ctor #
#ctor(List(Of Rule), HashSet(Of String), HashSet(Of String), SearchOptions, HashSet(Of String))

构造搜索器。

Parameters
NameTypeDescription
rulesList(Of Rule)

广义反应规则集。

sinkKeysHashSet(Of String)

底盘内源代谢物的分子指纹集合(汇)。

currencyKeysHashSet(Of String)

货币/辅底物的分子指纹集合(产生即忽略,不计入前体)。

optsSearchOptions

搜索参数(策略、束宽、深度、路径上限、匹配上限、并行度)。

preferKeysHashSet(Of String)

可选的导向键集合:束剪枝时优先保留本分支已触达这些指纹的状态(用于「必须从 A 出发」的定向搜索)。 传 Nothing 时与历史行为完全一致。

method ExpandUnit #
ExpandUnit(WorkUnit, List(Of PendingItem), LocalAcc)

展开单个工作单元:把一个规则双向应用到某个待分解化合物上,产出新状态。 单元内部的顺序(先正向后逆向、碎片按原序)与串行版本严格一致。

method PathKey #
PathKey(SearchState)

路径内容指纹 = 各步(规则 + 被分解物 + 前体集合)的多重集。 步骤字符串排序后拼接,使"分解顺序不同但反应集合相同"的等价路径合并为一条。

method Preference #
Preference(SearchState)

导向优先级:0 = 本分支已触达导向键(如起点化合物 A),1 = 尚未触达。 未配置导向键时恒返回 0,即退化为原有的纯 (pending, atoms, ΔG) 排序。

field _preferKeys #
_preferKeys

导向键集合(可选):束剪枝时优先保留「本分支已经触达过其中某个化合物」的状态。 用于 SynthesisRoute(A→B) 把 A 的分子指纹放进来,使通往 A 的分支不被剪掉。 为 Nothing 或空集时,剪枝排序与历史行为完全一致。

field _pathKeys #
_pathKeys

已收录完整路径的内容指纹(消除对称臂等同构重复路径)

field _mergeLock #
_mergeLock

并行区归并共享结果列表时的锁

field Stats #
Stats

本次搜索的运行统计(尝试次数、生成状态数、到达深度等)。

field Stats overload 2 #
Stats