| ElasticNet {SMRUCC.genomics.Analysis.CellPhenotype} | .NET clr documentation |
基于弹性网络线性调控网络(GeneRegulatoryNetwork)的虚拟扰动引擎。
每一个基因的回归方程 x_t = c_t + sum(beta_t,r * x_r) 被当作一条结构方程, 于是整个网络构成一个线性动力系统。施加扰动的时候采用 Pearl 的 do 算子语义: 被扰动基因的入边被"切断",在每一轮迭代之中都被强制固定为干预值,其余基因 迭代求解干预之后的稳态:
x_t(k+1) = x_t(k) + lambda * [ (c_t + sum(beta_t,r * x_r(k))) - x_t(k) ]
由于所有模型都带截距并且在同样的样本上面最小二乘拟合,样本均值本身就是一个 近似不动点,因此从基线起步的迭代等价于对变化量做 delta(k+1) = B * delta(k): 第一步即为一阶直接效应,后续步骤为多跳传播。
使用约束与已知偏差:
# namespace SMRUCC.genomics.Analysis.CellPhenotype
export class ElasticNet {
# 野生型基线(原始表达量尺度),默认是每一个基因的样本均值。
#
# 可以显式赋值以指定对照组基线(例如某个对照样本子集的均值), 赋值 Nothing 可以恢复默认行为。
Baseline: double;
# 被模拟的线性调控网络。
Network: GeneRegulatoryNetwork;
# 虚拟扰动的参数配置。
Options: ElasticNetPerturbationOptions;
# 当前网络是否建立在 z-score 标准化之后的表达量之上。
#
# 标准化模式之下回归系数位于 z-score 空间,本引擎会在内部完成 原始表达量与模型空间之间的换算,对外的结果始终是原始表达量尺度。
Standardized: boolean;
# 严格模式,默认为 True。
#
# True:当扰动目标基因不在网络之中时抛出 MissingMemberException; False:打印一条警告,不执行虚拟扰动,直接以野生型数据作为扰动结果返回, 并把结果标记为未定义(InterventionResult.Undefined = True)。
#
# 这个语义与 BnInterventionAnalyzer.Strict 保持一致。
Strict: boolean;
# 从未作为调控因子(非零出边)出现过的基因编号。
#
# 这些基因的扰动效应恒为零,通常是因为候选调控因子池被截断, 不能解读为"该基因没有调控作用"。
UnmodelledGenes: string;
}
Network: GeneRegulatoryNetworkOptions: ElasticNetPerturbationOptions