BNLearn 工作流 —— 基因表达调控网络建模与虚拟干扰分析
BNLearnWorkflow
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| LoadData | 1 | 步骤1:加载数据 |
| LearnStructure | 1 | 步骤2:结构学习 |
| LearnParameters | 1 | 步骤3:参数学习 |
| KnockoutGene | 1 | 步骤4:虚拟基因敲除 |
| OverexpressGene | 1 | 步骤4:虚拟基因过表达 |
| DynamicKnockout | 1 | 步骤4:动态级联敲除模拟 |
| ImportExternalExpression | 1 | 从外部转录组向量文件导入新的基因表达水平数据。 文件为两列(gene, expression)CSV/TSV,可由 BnIO.ReadExpressionVector()) 解析。 导入后按基因名对齐,仅保留与训练网络重叠的基因,并自动派生观测证据与动态初始状态。 |
| SetExternalExpression | 1 | 核心导入接口:接收基因名 → 表达值的键值对字典(单样本向量 / 一组均值), 作为外部新检测到的转录组数据设置到训练好的网络中。 仅保留与训练网络重叠的基因(大小写不敏感),忽略未建模基因; 若没有任何重叠基因则抛出友好异常。派生内容写入 BNLearnWorkflow.ExternalEvidence(观测证据模式)与 BNLearnWorkfl… |
| KnockoutGeneWithEvidence | 1 | 观测证据模式:基于已导入的外部转录组数据(BNLearnWorkflow.ExternalEvidence), 在"给定该表达水平条件"下执行敲除虚拟扰动(do-演算 + 条件推断)。 结果反映用户真实样本背景下的因果效应。 必须先调用 BNLearnWorkflow.SetExternalExpression()) / BNLearnWorkflow… |
| OverexpressGeneWithEvidence | 1 | 观测证据模式:基于已导入的外部转录组数据,在给定表达水平条件下执行过表达虚拟扰动。 |
| DynamicKnockoutWithState | 1 | 动态初始状态模式:基于已导入的外部转录组数据(BNLearnWorkflow.ExternalInitialState), 以其作为级联模拟起点执行动态敲除虚拟扰动,模拟在用户样本背景下的级联传播。 必须先调用 BNLearnWorkflow.SetExternalExpression()) / BNLearnWorkflow.ImportExterna… |
| BatchKnockout | 2 | 批量敲除所有基因 |
| RunFullLearning | 1 | 完整工作流:结构学习 + 参数学习 |
| SaveResults | 1 | 保存所有结果到文件 |
| SaveModel | 1 | save current model as zip file |
| LoadModel | 1 | load trained model from zip file |
| WriteText | 1 | 将一段文本写入 zip 包内的指定条目 |
| GetEntry | 1 | 按条目名查找 zip 内的条目(路径分隔符统一为 /,大小写不敏感) |
| ReadLines | 1 | 读取文本条目的全部非空行 |
| ReadNames | 1 | 读取名称清单(节点名 / 基因名 / 样本名)。 与 BNLearnWorkflow.ReadLines()) 不同,这里保留空行,否则行号会与节点索引错位, 仅剔除文件末尾换行所产生的那一个空行。 |
| ReadMeta | 1 | 读取 key=value 形式的元数据条目 |
| WriteEdgeIndex | 1 | 写出索引边列表(whitelist / blacklist / 网络边) |
| ReadIndexPairs | 1 | 读回索引边列表 |
| WriteMap | 1 | 写出基因名 → 表达值 的映射表 |
| ReadMap | 1 | 读回基因名 → 表达值 的映射表(键大小写不敏感,与训练期一致) |
| WriteDoubles | 1 | 以二进制块写出 double 向量(Int32 长度 + 数据体)。 大数组走文本会膨胀数倍且需要逐值 Parse,这里直接落原始 8 字节double。 |
| ReadDoubles | 1 | 读回 BNLearnWorkflow.WriteDoubles()) 写出的 double 向量 |
| WriteMatrix | 1 | 以二进制块写出 [gene, sample] 表达矩阵:Int32 nG + Int32 nS + 行优先(gene-major)数据体。 |
| ReadMatrix | 1 | 读回 BNLearnWorkflow.WriteMatrix()) 写出的表达矩阵,条目缺失或为空时返回 Nothing |
| Num | 1 | 以 G17 无损格式写出数值(固定使用不变区域文化,避免受系统区域设置影响) |
| ParseNum | 1 | 解析 BNLearnWorkflow.Num()) 写出的数值,解析失败时返回 0 而不是抛出 |
| Sanitize | 1 | 清理文本字段中的制表符与换行符,避免破坏 TSV / 逐行文本格式。 先验网络动辄数十万条边,这里先做一次快速探测,不含非法字符时直接原样返回。 |
| GetValue | 1 | 取元数据字符串值,缺失时返回缺省值 |
| GetBool | 1 | 取元数据的布尔值,兼容 True/False 与 1/0 两种写法 |
| KnockDownGene | 1 |
03 Properties
| Name | Overloads | Summary |
|---|---|---|
| ExpressionData | 1 | 基因表达矩阵 |
| PriorNetwork | 1 | 先验调控网络(TF→靶基因 白名单) |
| StructureParams | 1 | 结构学习参数 |
| NormalizeData | 1 | 是否对表达数据做标准化 |
| NSamples | 1 | 采样数(用于推断和干预分析) |
| RandomSeed | 1 | 随机种子 |
| Strict | 1 | 虚拟扰动 Strict 模式开关(透传给内部创建的 BnInterventionAnalyzer,默认 True)。 True: BNLearnWorkflow.KnockoutGene()) / BNLearnWorkflow.OverexpressGene()) / BNLearnWorkflow.KnockDownGene()) / BNLearn… |
| FittedNetwork | 1 | 学习到的贝叶斯网络 |
| TargetGenes | 1 | 获取动态贝叶斯网络模型中被建模的目标基因 ID 集合 (即 BNLearnWorkflow.FittedNetwork 全部节点的基因名,按网络节点顺序排列)。 结构学习尚未完成(BNLearnWorkflow.FittedNetwork 为空)时返回空数组而不抛出错误。 |
| ExternalExpression | 1 | 外部导入的新基因表达水平(单样本向量,基因名 → 表达值)。 通过 BNLearnWorkflow.SetExternalExpression()) 设置,通常来自用户新检测的转录组。 设置时仅保留与训练网络重叠的基因,并自动派生观测证据与动态初始状态。 |
| ExternalEvidence | 1 | 观测证据:按基因名对齐后仅保留与训练网络重叠的(基因名 → 表达值)。 供"观测证据模式"虚拟扰动使用(在给定表达水平条件下做 do-演算)。 |
| ExternalInitialState | 1 | 动态初始状态:按训练网络节点序排列的外部表达向量。 供"动态初始状态模式"虚拟扰动使用(作为级联模拟起点)。 仅重叠基因位置被外部值覆盖,未覆盖位置保持训练数据均值。 |
| StructureResult | 1 | 结构学习结果 |
| ParameterResult | 1 | 参数学习结果 |
04 Fields
| Name | Overloads | Summary |
|---|---|---|
| ModelFormatVersion | 1 | zip 压缩包内的模型格式版本号 |
| IllegalChars | 1 | 文本字段中不允许出现的字符:制表符、CR、LF(会破坏 TSV / 逐行文本格式) |
05 Members
String, String)步骤1:加载数据
步骤2:结构学习
步骤3:参数学习
String, Int32)步骤4:虚拟基因敲除
String, Int32)步骤4:虚拟基因过表达
String, Int32, Int32)步骤4:动态级联敲除模拟
String)从外部转录组向量文件导入新的基因表达水平数据。 文件为两列(gene, expression)CSV/TSV,可由 BnIO.ReadExpressionVector() 解析。 导入后按基因名对齐,仅保留与训练网络重叠的基因,并自动派生观测证据与动态初始状态。
Dictionary(Of String, Double))核心导入接口:接收基因名 → 表达值的键值对字典(单样本向量 / 一组均值), 作为外部新检测到的转录组数据设置到训练好的网络中。 仅保留与训练网络重叠的基因(大小写不敏感),忽略未建模基因; 若没有任何重叠基因则抛出友好异常。派生内容写入 BNLearnWorkflow.ExternalEvidence(观测证据模式)与 BNLearnWorkflow.ExternalInitialState(动态初始状态模式)。
| Name | Type | Description |
|---|---|---|
geneExpression | Dictionary(Of String, Double) | 外部转录组数据:基因名 → 表达值 的键值对字典。 例如 New Dictionary(Of String, Double) From {{"codY", 12.3}, {"comK", 4.5}} |
String, Int32)观测证据模式:基于已导入的外部转录组数据(BNLearnWorkflow.ExternalEvidence), 在"给定该表达水平条件"下执行敲除虚拟扰动(do-演算 + 条件推断)。 结果反映用户真实样本背景下的因果效应。 必须先调用 BNLearnWorkflow.SetExternalExpression() / BNLearnWorkflow.ImportExternalExpression()。
String, Int32)观测证据模式:基于已导入的外部转录组数据,在给定表达水平条件下执行过表达虚拟扰动。
String, Int32, Int32)动态初始状态模式:基于已导入的外部转录组数据(BNLearnWorkflow.ExternalInitialState), 以其作为级联模拟起点执行动态敲除虚拟扰动,模拟在用户样本背景下的级联传播。 必须先调用 BNLearnWorkflow.SetExternalExpression() / BNLearnWorkflow.ImportExternalExpression()。
IEnumerable(Of String), Int32)批量敲除所有基因
Int32)批量敲除所有基因
完整工作流:结构学习 + 参数学习
String)保存所有结果到文件
Stream)save current model as zip file
| Name | Type | Description |
|---|---|---|
file | Stream | 目标输出流。由 R# 的 |
Stream)load trained model from zip file
| Name | Type | Description |
|---|---|---|
file | Stream | zip 压缩包输入流(由 R# 的 |
还原后的工作流对象,网络结构、CPD 参数与训练表达矩阵均与保存前一致, 可直接用于 knockouts / overexpress / knockdown 等虚拟扰动分析。
ZipArchive, String, Action(Of TextWriter))将一段文本写入 zip 包内的指定条目
ZipArchive, String)按条目名查找 zip 内的条目(路径分隔符统一为 /,大小写不敏感)
不存在时返回 Nothing,调用方按缺省值降级处理
ZipArchiveEntry)读取文本条目的全部非空行
ZipArchiveEntry)读取名称清单(节点名 / 基因名 / 样本名)。 与 BNLearnWorkflow.ReadLines() 不同,这里保留空行,否则行号会与节点索引错位, 仅剔除文件末尾换行所产生的那一个空行。
ZipArchiveEntry)读取 key=value 形式的元数据条目
TextWriter, IEnumerable(Of ValueTuple(Of Int32, Int32)))写出索引边列表(whitelist / blacklist / 网络边)
ZipArchiveEntry, List(Of ValueTuple(Of Int32, Int32)))读回索引边列表
TextWriter, Dictionary(Of String, Double))写出基因名 → 表达值 的映射表
ZipArchiveEntry)读回基因名 → 表达值 的映射表(键大小写不敏感,与训练期一致)
ZipArchive, String, Double())以二进制块写出 double 向量(Int32 长度 + 数据体)。 大数组走文本会膨胀数倍且需要逐值 Parse,这里直接落原始 8 字节double。
ZipArchiveEntry)读回 BNLearnWorkflow.WriteDoubles() 写出的 double 向量
ZipArchive, String, Double[0:,0:])以二进制块写出 [gene, sample] 表达矩阵:Int32 nG + Int32 nS + 行优先(gene-major)数据体。
ZipArchiveEntry)读回 BNLearnWorkflow.WriteMatrix() 写出的表达矩阵,条目缺失或为空时返回 Nothing
Double)以 G17 无损格式写出数值(固定使用不变区域文化,避免受系统区域设置影响)
String)解析 BNLearnWorkflow.Num() 写出的数值,解析失败时返回 0 而不是抛出
String)清理文本字段中的制表符与换行符,避免破坏 TSV / 逐行文本格式。 先验网络动辄数十万条边,这里先做一次快速探测,不含非法字符时直接原样返回。
Dictionary(Of String, String), String, String)取元数据字符串值,缺失时返回缺省值
Dictionary(Of String, String), String, Boolean)取元数据的布尔值,兼容 True/False 与 1/0 两种写法
基因表达矩阵
先验调控网络(TF→靶基因 白名单)
结构学习参数
是否对表达数据做标准化
采样数(用于推断和干预分析)
随机种子
虚拟扰动 Strict 模式开关(透传给内部创建的 BnInterventionAnalyzer,默认 True)。 True: BNLearnWorkflow.KnockoutGene() / BNLearnWorkflow.OverexpressGene() / BNLearnWorkflow.KnockDownGene() / BNLearnWorkflow.DynamicKnockout() 等扰动函数在找不到目标基因时抛出错误; False: 在终端打印一条警告消息,不执行虚拟扰动,直接以野生型数据作为扰动结果返回 并将结果的 Undefined 标记为 True。
学习到的贝叶斯网络
获取动态贝叶斯网络模型中被建模的目标基因 ID 集合 (即 BNLearnWorkflow.FittedNetwork 全部节点的基因名,按网络节点顺序排列)。 结构学习尚未完成(BNLearnWorkflow.FittedNetwork 为空)时返回空数组而不抛出错误。
外部导入的新基因表达水平(单样本向量,基因名 → 表达值)。 通过 BNLearnWorkflow.SetExternalExpression() 设置,通常来自用户新检测的转录组。 设置时仅保留与训练网络重叠的基因,并自动派生观测证据与动态初始状态。
观测证据:按基因名对齐后仅保留与训练网络重叠的(基因名 → 表达值)。 供"观测证据模式"虚拟扰动使用(在给定表达水平条件下做 do-演算)。
动态初始状态:按训练网络节点序排列的外部表达向量。 供"动态初始状态模式"虚拟扰动使用(作为级联模拟起点)。 仅重叠基因位置被外部值覆盖,未覆盖位置保持训练数据均值。
结构学习结果
参数学习结果
zip 压缩包内的模型格式版本号
文本字段中不允许出现的字符:制表符、CR、LF(会破坏 TSV / 逐行文本格式)
String, Int32)