normalize_log_matrix {linear} R Documentation

去掉样本级的全局表达程序(每个样本减去跨基因均值)。

Description

<br /> 对样本 s: x'(g, s) = x(g, s) - mean_g(x(g, s))。<br /> <br /> 横截面共表达数据里,所有基因都被同一个"全局程序"绑定(细胞状态、线粒体含量、<br /> 测序质量等),导致任意两个基因的相关系数都被抬高、且几乎全为正。把这个样本级<br /> 常数移除之后,剩下的相关更接近"特异性共表达",负相关才会出现:<br /> 这一步直接改善敲降之后"全部基因一起下调、极少上调"的现象。<br /><br /> 把一个已经在对数空间的表达矩阵重新标定到指定的文库规模(默认 CPM,1e6)。<br /> <br /> 输入矩阵假定是 x = log2(y + pseudo) 的形式,其中 y 是"归一化之后的计数"<br /> (不必是整数)。先把 y 反解出来,整体乘以 target / median(Σy),再取对数:<br /> <br /><br /> S = median_s( Σ_g (2^x - pseudo) )<br /> x' = log2( (2^x - pseudo) * target / S + pseudo )<br /> <br /> <br /> 这一步不改变基因之间的相对丰度,只改变数值尺度。它解决的问题是:<br /> 低深度数据(例如每细胞只有几千个 UMI)上 log2(1 + y) 落在近似线性的区间里,<br /> 全矩阵被压到 0~2 之间,于是 80% 敲降只产生 0.05 量级的变化,下游传播几乎为 0;<br /> 重标到 CPM 之后,同一个基因的对数值落回对数区间,敲降幅度回到 2 左右、<br /> 下游响应回到可观测的量级,模型空间的语义也与 scale = "log2cpm" 一致。

Usage

normalize_log_matrix(x,
    target = 1000000,
    pseudo = 1);

Arguments

x

对数空间的表达矩阵(行 = 基因、列 = 样本). [as Matrix]

target

目标文库规模,默认 1e6(CPM). [as double]

pseudo

原变换使用的伪计数偏移,默认 1. [as double]

Details

Authors

TRNtoolkit

Value

重新标定之后的新矩阵

clr value class

Examples


[Package linear version 1.0.0.0 Index]