代谢网络逆向合成通路搜索器:整个 RetroPath 的对外主入口。
Netwalk
00 Remarks
一次典型调用:准备广义规则集与底盘汇集合 → 构造本对象 → 反复调用 Netwalk.Search() 查询不同目标。构造期只做参数固化,规则与汇可被多个查询复用。
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| .ctor | 1 | 构造搜索器。 |
| Search | 1 | 以指定目标分子做逆向合成通路搜索,返回完整结果报告。 |
| SynthesisRoute | 1 | 从起点代谢物 A 出发,搜索合成目标代谢物 B 的最经济通路。 |
| ParseOrThrow | 1 | 解析 SMILES,失败时抛出带上下文的异常 |
| TryMolKey | 1 | 取分子指纹;SMILES 不可解析时返回 Nothing(用于汇/货币分子这类辅助集合) |
| ParseKeys | 1 | 批量解析 SMILES → 分子指纹(并行)。 |
| Evaluate | 1 | 判定一条完整逆合成路径是否满足起点约束;满足时返回其经济性指标,否则返回 Nothing。 |
| ToRouteDto | 1 | 把候选通路转成 JSON DTO:正向组装、主链标注、经济性评分 |
03 Properties
04 Fields
| Name | Overloads | Summary |
|---|---|---|
| VersionString | 2 | 程序版本号,会写入结果报告的 version 字段。 |
| EscalateBudgetMs | 2 | Netwalk.SynthesisRoute()) 自动升级(加大束宽/深度重试)的耗时预算(毫秒)。 超过预算即停止重试,避免单个查询把整个批量 demo 拖垮。 |
05 Members
IReadOnlyCollection(Of Rule), IReadOnlyCollection(Of ValueTuple(Of String, String)), SearchOptions, ScoreWeights)构造搜索器。
| Name | Type | Description |
|---|---|---|
rules | IReadOnlyCollection(Of Rule) | 广义反应规则集(可空集合,但那样搜索不出任何路径)。 |
sink | IReadOnlyCollection(Of ValueTuple(Of String, String)) | 底盘内源代谢物集合,每项为 (名称或 ID, SMILES);SMILES 会被解析成分子指纹用于终止判定。 |
opts | SearchOptions | 搜索参数;传入 Nothing 时调用方需自行保证后续不为 Nothing。 |
w | ScoreWeights | 评分权重。 |
String)以指定目标分子做逆向合成通路搜索,返回完整结果报告。
流程:解析目标与汇 → 束搜索展开 → 按全局分排序取前 maxPaths → 正向组装并评分。 过程中会向 Console.Error 输出一行进度摘要。
| Name | Type | Description |
|---|---|---|
targetSmiles | String | 目标分子 B 的 SMILES(须为 SmilesIO 支持的子集)。 |
含参数快照、统计与候选通路的 PathReport; 目标已属于汇集合或未找到通路时,Paths 为空列表。
String, String, SourceRoles, Boolean, IEnumerable(Of ValueTuple(Of String, String)), Int32, Boolean)从起点代谢物 A 出发,搜索合成目标代谢物 B 的最经济通路。
与 Netwalk.Search() 的关键差异:A 会被注入本次查询的汇集合,因此逆向展开时 A 一旦作为前体出现即判定为「已落地」,不会再被继续分解;同时把 A 的指纹作为导向键传给 BeamSearch,让通往 A 的分支在束剪枝中优先存活。这解决了「先枚举全部路径再 事后筛选是否含 A」时命中率低的问题。
| Name | Type | Description |
|---|---|---|
sourceSmiles | String | 起点化合物 A 的 SMILES。 |
targetSmiles | String | 目标化合物 B 的 SMILES。 |
role | SourceRoles | A 在通路中的角色:SourceRoles.Source 要求 A 是最上游的叶子原料; SourceRoles.Anywhere 允许 A 出现在通路任意位置(召回更高)。 |
strict | Boolean | 严格模式:汇集合只保留 A(以及 allowedExtra 显式放行的化合物), 即除 A 与货币分子外不依赖任何底盘代谢物;默认 False = A 与底盘汇均可作为起点。 |
allowedExtra | IEnumerable(Of ValueTuple(Of String, String)) | strict 模式下额外允许作为起点的化合物(名称, SMILES)。 |
maxRoutes | Int32 | 最多返回多少条候选(0 = 默认 10 条)。 |
escalate | Boolean | 首轮未命中时是否自动加大束宽/深度重试(最多 3 轮)。 |
RouteReport:Best 为最经济的一条通路,排序准则为 「除 A 外所需的外源起始原料数(越少越好)→ 反应步数(越少越好)→ 全局分(越高越好)」。 未找到满足起点约束的通路时 Best 为 Nothing、Found 为 False。
String, String)解析 SMILES,失败时抛出带上下文的异常
String)取分子指纹;SMILES 不可解析时返回 Nothing(用于汇/货币分子这类辅助集合)
IList(Of ValueTuple(Of String, String)), Int32)批量解析 SMILES → 分子指纹(并行)。
汇集合常有数百条,货币分子另有若干条;指纹计算要走 Morgan 迭代,逐条串行是可观的 固定开销。各条之间互不依赖,因此可安全并行;结果按输入顺序写回数组, 保证汇集合的内容与串行版本一致。
| Name | Type | Description |
|---|---|---|
entries | IList(Of ValueTuple(Of String, String)) | 待解析的 (标识, SMILES) 序列。 |
parallelism | Int32 | 并行度(<=1 时串行)。 |
与输入等长的指纹数组;解析失败的项为 Nothing。
判定一条完整逆合成路径是否满足起点约束;满足时返回其经济性指标,否则返回 Nothing。
把候选通路转成 JSON DTO:正向组装、主链标注、经济性评分
构造时传入的搜索参数。
构造时传入的评分权重。
参与搜索的广义反应规则集(构造时拷贝,外部改动不影响本对象)。
底盘内源代谢物集合(汇),每项为 (化合物标识, SMILES)。
程序版本号,会写入结果报告的 version 字段。
Netwalk.SynthesisRoute() 自动升级(加大束宽/深度重试)的耗时预算(毫秒)。 超过预算即停止重试,避免单个查询把整个批量 demo 拖垮。