| GeneRegulatoryNetwork {SMRUCC.genomics.Model.Network.Regulons.LinearRegression} | .NET clr documentation |
基于线性拟合的基因表达调控网络推断
对于表达矩阵之中的每一个基因 g,都会建立如下的线性模型:
expr(g) = const + beta_1 * expr(r1) + beta_2 * expr(r2) + ...
其中 r1, r2, ... 为候选调控因子(默认从与 g 相关性最高的若干个基因之中选出, 并且总是排除 g 自身)。把所有基因的模型汇总之后,就得到了一个 调控因子 -> 目标基因 的有向加权网络:边的权重即为回归系数。
需要注意前置条件:参与拟合的自变量个数(候选调控因子数量 + 截距项)必须显著小于样本数量。
Matrix is rank deficient 异常;LassoFitGenerator 在初始化内部观测数组的时候使用了错误的维度上限,自变量个数大于样本数量的时候会越界。因此这里会通过 GrnFittingOptions.maxCandidates 与 GrnFittingOptions.candidateSampleRatio 强制限制候选因子的数量。 基因数量远大于样本数量的时候(转录组数据的常态),请先进行表达量过滤、 差异基因筛选或者PCA/模块降维。
# namespace SMRUCC.genomics.Model.Network.Regulons.LinearRegression
export class GeneRegulatoryNetwork {
# 每一个基因的基线表达量,即 GeneRegulatoryNetwork.Vectors 之中的样本均值。
#
# 开启了 GrnFittingOptions.standardize 之后基线位于 z-score 空间,理论上恒为零;否则就是原始表达量尺度之上的均值。
#
# 这个数组是虚拟扰动计算的起点:敲除(target=0)、敲降(target=residual基线) 与过表达(target=fold基线)都是以它为参照定义的。
Baseline: double;
# 每一个基因在 GeneRegulatoryNetwork.Vectors 之上的样本标准差(ddof = n - 1)。
#
# 这个自由度约定与 GrnFittingOptions.standardize 的算法一致, 因此开启了标准化之后该数组恒为 1。样本数量不足 2 或者表达量为常数的 基因返回零,调用方需要自行守卫除零。
BaselineSD: double;
# 构造当前网络对象时所使用的表达矩阵(行是基因、列是样本)。
#
# 返回的就是构造函数的入参引用,本模块不会对它做任何修改,但调用方 也不应该在拿到引用之后修改其中的数据,否则会破坏已经拟合好的模型。
Expression: Matrix;
# 表达矩阵之中的基因编号列表
Genes: string;
# 所有已经拟合成功的基因模型
Models: iterates(GeneRegressionModel);
# 当前分析所使用的参数配置
Options: GrnFittingOptions;
# 基因的数量
Size: integer;
# 每一个基因在拟合过程之中真正参与计算所使用的表达向量,下标与 GeneRegulatoryNetwork.Genes 一致。
#
# 开启了 GrnFittingOptions.standardize 之后,这里保存的是 z-score 标准化之后的数据;否则就是原始表达量的一份副本。
Vectors: Double[][];
}
Expression: MatrixModels: iterates(GeneRegressionModel)Options: GrnFittingOptionsVectors: Double[]