ElasticNetPerturbationOptions {SMRUCC.genomics.Analysis.CellPhenotype} .NET clr documentation

ElasticNetPerturbationOptions

Description

基于弹性网络线性调控网络的虚拟扰动参数。

扰动值采用 乘性比例 语义(与真实的 CRISPRi/CRISPRa 实验更接近):

 Knockout        : target = 0
 Knockdown       : target = KnockdownResidual * baseline
 Overexpression  : target = OverexpressionFold * baseline
 Custom          : target = spec.Value   (模型空间之中的绝对值)

当 ElasticNetPerturbationOptions.Scale 为 PerturbationScale.Log2Plus1 的时候, 上面的比例会先反变换到线性空间、按比例施加、再变换回 log 空间(见该枚举的说明)。

这个约定与 InterventionSpec.GetInterventionValue() 的 mean +/- k * SD 公式不同,因此同一个基因在本引擎与贝叶斯网络引擎 上面的敲降/过表达效应量不能直接横向比较。

Declare

            
# namespace SMRUCC.genomics.Analysis.CellPhenotype
export class ElasticNetPerturbationOptions {
   # 是否把迭代过程之中预测出来的表达量裁剪回观测区间。
   # 
   # 线性模型可以给出负的表达量,打开这个开关之后预测值会被裁剪到 [观测最小值, 观测最大值 + 观测跨度] 区间之内(这样既避免了负表达, 又不会过早地把级联效应截断)。干预值本身不受这个区间限制。
   ClampToObserved: boolean;
   # Jacobi 迭代的阻尼系数,取值范围 (0, 1],默认为 1。
   # 
   # 取值小于 1 的时候每一轮只施加一部分修正量,可以抑制强反馈环上面的振荡。
   # 
   # 注意:这个系数只影响级联过程,ElasticNetInterventionResult.FirstOrderDelta 永远是未经阻尼的一阶效应。
   Damping: double;
   # 敲降之后保留下来的表达量比例,取值范围 [0, 1),默认 0.2(即约 80% 的敲降)。
   KnockdownResidual: double;
   # 模型空间的整体偏移量,默认 0。
   # 
   # 当拟合矩阵做过"逐样本减去跨基因均值"的去全局因子处理时,模型空间是 x' = log2(CPM + 1) - offset,其中 offset 是该样本的跨基因均值 (再加上中位数校准)。此时:
   # 
   # 
   # 
    #
  • 真实的对数表达量是 x' + offset,因此 2^((x' + offset)) - 1 才是 CPM;
  • #
  • 直接对 x' 做 2^x' - 1 会把负值压成 0,得到"敲到底"甚至反向的假象。
  • #
# # # 本属性把偏移量加回之后再施加敲降/过表达比例,最后再减掉, 从而保证扰动幅度按真实的 CPM 计算,而报告出来的仍然是模型空间的数值。 LogOffset: double; # PerturbationScale.Log2Plus1 空间之中的伪计数偏移,默认 1。 # # 它必须与拟合网络时所用的变换保持一致(例如 log2(x + 1) 对应 1)。 LogPseudoCount: double; # 过表达之后的表达量相对于基线的倍数,默认 3。 OverexpressionFold: double; # 效应传播方式,默认为级联到稳态。 Propagation: PropagationMode; # 蒙特卡洛抽样的随机数种子,默认 42。 RandomSeed: integer; # 是否记录级联过程之中每一步的表达量轨迹(仅在确定性模式下有效),默认关闭。 # # InterventionResult.DynamicTrajectory 之中第 0 行是干预之前的基线, 之后每一行是一次迭代的结果。轨迹的每个元素都是一个长度为 1 的数组, 因此内存占用约为 (步数 + 1) * 基因数量 * 40 字节:在大网络之上 逐基因地做批量扰动的时候建议保持关闭。 # # ElasticNet.SimulateCascade() 会自动开启轨迹记录。 RecordTrajectory: boolean; # 模型输入表达量的数值空间,默认为 PerturbationScale.Linear。 # # 如果拟合网络所用的表达矩阵是取过对数的(例如 log2(CPM+1)),必须设置为 PerturbationScale.Log2Plus1,否则敲降/过表达的幅度会偏大 2~3 倍。 Scale: PerturbationScale; # 显著性判据:变化量超过多少个标准差才算显著,默认 0.5。 # # 默认值与 BnInterventionAnalyzer 的 |FC| > 0.5 * SD 判据一致。 SignificanceZ: double; # 级联迭代的最大步数(默认 50)。 # # 把它设置为 1 等价于 PropagationMode.OneHop。 迭代会在相邻两轮的表达量最大变化小于 ElasticNetPerturbationOptions.Tolerance 的时候提前结束。 Steps: integer; # 级联迭代的收敛阈值,即相邻两轮之间表达量的最大允许变化量(默认 1e-6)。 Tolerance: double; }

.NET clr type reference tree

  1. use by property member Propagation: PropagationMode
  2. use by property member Scale: PerturbationScale

[Package {$package} version {$version} Index]