BlockBayesianNetwork
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| .ctor | 1 | |
| CascadeIntervene | 1 | 对单个扰动基因执行全局级联虚拟扰动: - 在其所属模块内固定 Low 并多步推演本模块基因状态轨迹; - 计算本模块 eigengene 变化,沿模块关联图 BFS 逐级注入下游模块(作为模块整体状态偏置), 在下游模块内做受迫推演,形成级联; - 汇总所有模块基因的最终状态为全局响应向量(按 allGenes 顺序,Low=0/… |
| RunModuleSteps | 1 | 在单个模块子网络内多步推演(扰动基因固定 Low)。返回各基因最终 RNA 丰度变化率。 |
| RunModuleForced | 1 | 受迫推演:下游模块接收上游 eigengene 变化偏置,初始整体状态偏移后多步推演。 |
| StateDelta | 1 | 计算一组基因相对野生型稳态的平均状态变化(状态值 Low=0 / Medium=1 / High=2 的差值均值)。 正值表示整体上调、负值表示下调,用作模块间级联传播的驱动信号。 相比 RNA 速率均值,状态值对扰动更敏感:速率是连续量且被平均到 1e-4 量级, 单基因敲降几乎测不到差异,级联传播等同于关闭。 |
| GetBaselineStates | 1 | 取指定模块的野生型稳态基因状态(未缓存时返回 Nothing,调用方需容错) |
| SaveModel | 1 | save model as zip archive file |
| LoadModel | 1 | load model from zip archive file |
| ModuleDir | 1 | 模块在 zip 内的目录名(用序号命名,避免模块颜色中的特殊字符影响 entry 名) |
| ExportLinks | 1 | 从已训练网络的节点状态反推出调控边集合(用于重建拓扑)。 网络内部保存的是 ParentIds / RegulatorTFs / TFEffectors 等"展开后"的结构, 而 DynamicBayesianNetwork.BuildFromTopology()) 需要的是调控边, 这里把前者还原成后者:一条 (基因, 其调控 TF) 对应一条边… |
| WriteLinks | 1 | 写出调控边(制表符分隔 8 列: TF_id / TF_family / TFBS_id / target_operon / genes / effectors / regulationType / confidence) |
| WriteCPT | 1 | 流式写出全部 CPT 条目:nodeId / key / p1,p2,p3 必须使用制表符而非 "|" 作为字段分隔符:CPT 的 key 本身就是用 "|" 连接各父状态 得到的,用 "|" 切分会把 key 截断(既有的 SaveToFile / LoadFromFile 就有这个问题)。 概率用 G17 保证 double 往返无损。 |
| ImportCPT | 1 | 回填 CPT 条目。只写 node.CPT.Table(key),不触碰 OnDemandProvider / MaxCacheRows, 否则惰性节点会退化成均匀分布。 |
| WriteThresholds | 1 | 写出每个基因的离散化阈值:gene / low / high(制表符分隔)。 阈值由训练流程按数据分位数计算得到,必须与 CPT 一起持久化: 若丢失,加载后的模型在推理时会回退到默认的固定阈值 0.33/0.66, 与训练时使用的自适应阈值不一致,破坏 round-trip 保真性。 |
| ReadThresholds | 1 | 读回每个基因的离散化阈值并写入网络配置(见 BlockBayesianNetwork.WriteThresholds())) |
| WriteWildtype | 1 | 写出野生型基线丰度:gene / abundance(制表符分隔)。 必须与 CPT、离散化阈值一起持久化:缺失它,加载后的模型会从错误的基线出发推演。 |
| ReadWildtype | 1 | 读回野生型基线丰度(见 BlockBayesianNetwork.WriteWildtype())) |
| Text | 1 | 文本字段规整:Nothing 转空串,并剔除会破坏行/列结构的制表符与换行 |
| SetWildtypeBaseline | 1 | 设置野生型(未受扰动)各基因的表达丰度,作为后续虚拟扰动实验的基线。 语义与 BNLearnWorkflow.SetExternalExpression()) 保持一致: - 只保留与网络中已建模基因重叠的部分,忽略未建模基因; - 未覆盖的基因回退到"训练数据各基因的平均表达水平"(由训练流程自动计算); - 基因名大小写不敏感。… |
| ApplyWildtypeStates | 1 | 依据当前的野生型丰度,按各基因自身的离散化阈值计算其野生型离散状态。 |
| WildtypeStateOf | 1 | 取某个基因的野生型状态(未设置基线时回退 Medium) |
03 Properties
04 Fields
| Name | Overloads | Summary |
|---|---|---|
| _baselineRates | 1 | 各模块的野生型基线转录速率(模块颜色 → 速率均值),按步数缓存。 级联传播时必须使用"相对基线的变化量":DBNPredictionResult.RNAAbundanceChanges 给出的是绝对转录速率水平(恒为正),直接拿它当传播量会让下游模块被强制初始化为 High,形成单向正反馈。基线只依赖模块构成与推演步数,故按 steps 缓存复用… |
| _baselineStates | 1 | 各模块野生型稳态推演结束时的基因状态(模块颜色 → 基因 → 状态) |
| _wildtypeAbundance | 1 | 野生型(未受扰动)各基因的表达丰度:基因 ID → 丰度值。 由训练流程按时间序列中位数自动计算,可被 SetWildtypeBaseline 覆盖。 |
| _wildtypeStates | 1 | 由野生型丰度离散化得到的各基因野生型状态:基因 ID → Low/Medium/High。 用作级联推演的初始状态,以及计算扰动响应增量时的参照基准。 |
| ModelFormatVersion | 1 | 模型文件格式版本(用于 LoadModel 的兼容性校验) |
05 Members
IEnumerable(Of ModuleDBN), IEnumerable(Of String), Double)| Name | Type | Description |
|---|---|---|
subblocks | IEnumerable(Of ModuleDBN) | - |
TFs | IEnumerable(Of String) | - |
crossModuleCorThreshold | Double | 模块 eigengene 相关阈值:|cor| 超过才建立模块间关联,默认 0.3。 |
String, Int32, Dictionary(Of String, Dictionary(Of String, List(Of Double))))对单个扰动基因执行全局级联虚拟扰动:
- 在其所属模块内固定 Low 并多步推演本模块基因状态轨迹;
- 计算本模块 eigengene 变化,沿模块关联图 BFS 逐级注入下游模块(作为模块整体状态偏置), 在下游模块内做受迫推演,形成级联;
- 汇总所有模块基因的最终状态为全局响应向量(按 allGenes 顺序,Low=0/Med=1/High=2)。
Dictionary(Of String, String), String, Int32, HashSet(Of String), Dictionary(Of String, List(Of Double)))在单个模块子网络内多步推演(扰动基因固定 Low)。返回各基因最终 RNA 丰度变化率。
Double, String, Int32, HashSet(Of String), Dictionary(Of String, String), Dictionary(Of String, List(Of Double)))受迫推演:下游模块接收上游 eigengene 变化偏置,初始整体状态偏移后多步推演。
String(), Dictionary(Of String, String), Dictionary(Of String, String))计算一组基因相对野生型稳态的平均状态变化(状态值 Low=0 / Medium=1 / High=2 的差值均值)。
正值表示整体上调、负值表示下调,用作模块间级联传播的驱动信号。 相比 RNA 速率均值,状态值对扰动更敏感:速率是连续量且被平均到 1e-4 量级, 单基因敲降几乎测不到差异,级联传播等同于关闭。
String)取指定模块的野生型稳态基因状态(未缓存时返回 Nothing,调用方需容错)
Stream)save model as zip archive file
| Name | Type | Description |
|---|---|---|
file | Stream | 目标输出流。由 R# 的 |
Stream)load model from zip archive file
| Name | Type | Description |
|---|---|---|
file | Stream | zip 压缩包输入流(由 R# 的 |
还原后的模块化贝叶斯网络模型,可直接用于级联虚拟扰动
Int32)模块在 zip 内的目录名(用序号命名,避免模块颜色中的特殊字符影响 entry 名)
从已训练网络的节点状态反推出调控边集合(用于重建拓扑)。
网络内部保存的是 ParentIds / RegulatorTFs / TFEffectors 等"展开后"的结构, 而 DynamicBayesianNetwork.BuildFromTopology() 需要的是调控边, 这里把前者还原成后者:一条 (基因, 其调控 TF) 对应一条边,effector 的类型 从 TF 节点的 EffectorMetabolites 取回。
TextWriter, IEnumerable(Of RegulatoryLink))写出调控边(制表符分隔 8 列: TF_id / TF_family / TFBS_id / target_operon / genes / effectors / regulationType / confidence)
TextWriter, DynamicBayesianNetwork)流式写出全部 CPT 条目:nodeId / key / p1,p2,p3
必须使用制表符而非 "|" 作为字段分隔符:CPT 的 key 本身就是用 "|" 连接各父状态 得到的,用 "|" 切分会把 key 截断(既有的 SaveToFile / LoadFromFile 就有这个问题)。 概率用 G17 保证 double 往返无损。
ZipArchiveEntry, DynamicBayesianNetwork)回填 CPT 条目。只写 node.CPT.Table(key),不触碰 OnDemandProvider / MaxCacheRows, 否则惰性节点会退化成均匀分布。
TextWriter, DynamicBayesianNetwork)写出每个基因的离散化阈值:gene / low / high(制表符分隔)。
阈值由训练流程按数据分位数计算得到,必须与 CPT 一起持久化: 若丢失,加载后的模型在推理时会回退到默认的固定阈值 0.33/0.66, 与训练时使用的自适应阈值不一致,破坏 round-trip 保真性。
ZipArchiveEntry, DynamicBayesianNetwork)读回每个基因的离散化阈值并写入网络配置(见 BlockBayesianNetwork.WriteThresholds())
TextWriter, Dictionary(Of String, Double))写出野生型基线丰度:gene / abundance(制表符分隔)。 必须与 CPT、离散化阈值一起持久化:缺失它,加载后的模型会从错误的基线出发推演。
ZipArchiveEntry)读回野生型基线丰度(见 BlockBayesianNetwork.WriteWildtype())
String)文本字段规整:Nothing 转空串,并剔除会破坏行/列结构的制表符与换行
Dictionary(Of String, Double))设置野生型(未受扰动)各基因的表达丰度,作为后续虚拟扰动实验的基线。
语义与 BNLearnWorkflow.SetExternalExpression() 保持一致:
- 只保留与网络中已建模基因重叠的部分,忽略未建模基因;
- 未覆盖的基因回退到"训练数据各基因的平均表达水平"(由训练流程自动计算);
- 基因名大小写不敏感。
丰度会按各基因自身的离散化阈值(训练时写入 Config.NodeThresholds) 转成 Low/Medium/High,作为级联推演的初始状态与响应参照基准。 在此之前推演一律从"全部 Medium"出发,导致未受影响的基因恒为 Medium。
| Name | Type | Description |
|---|---|---|
baseline | Dictionary(Of String, Double) | 基因 ID → 表达丰度 的字典 |
依据当前的野生型丰度,按各基因自身的离散化阈值计算其野生型离散状态。
String)取某个基因的野生型状态(未设置基线时回退 Medium)
③ 模块间关联图(基于 eigengene 轨迹相关度)
get length of BlockBayesianNetwork.moduleDBs array
各模块的野生型基线转录速率(模块颜色 → 速率均值),按步数缓存。
级联传播时必须使用"相对基线的变化量":DBNPredictionResult.RNAAbundanceChanges 给出的是绝对转录速率水平(恒为正),直接拿它当传播量会让下游模块被强制初始化为 High,形成单向正反馈。基线只依赖模块构成与推演步数,故按 steps 缓存复用。
各模块野生型稳态推演结束时的基因状态(模块颜色 → 基因 → 状态)
野生型(未受扰动)各基因的表达丰度:基因 ID → 丰度值。 由训练流程按时间序列中位数自动计算,可被 SetWildtypeBaseline 覆盖。
由野生型丰度离散化得到的各基因野生型状态:基因 ID → Low/Medium/High。 用作级联推演的初始状态,以及计算扰动响应增量时的参照基准。
模型文件格式版本(用于 LoadModel 的兼容性校验)