#Seurat对象中的Assay:
RNA数据槽:
@counts:未作任何处理的原始RNA表达矩阵。
@data:原表达矩阵通过NormalizeData()归一化消除测序文库差异(对于每个细胞,将每个基因的表达量除以该细胞的所有基因表达量之和,然后乘以一个scale.factor, 之后以自然对数进行转换),得到非高斯分布的矩阵。主要用于基因表达量可视化
@scale.data: 通过对log转换后的@data矩阵进行ScaleData()标准化,得到接近于高斯分布的矩阵。在分类、聚类、PCA算法中,要求使用z-score。
SCT数据槽:
@counts:该矩阵是UMI counts矫正后的counts,是由ScaleData(皮尔逊残差)倒推出来的,它是一个回归,运算之后的残差。
@data:矫正后的UMI counts的log-normalized变换,可用于基因表达量可视化。
@scale.data:基因组真实表达量与拟合后的表达预期值的差值(皮尔逊残差:“正则化负二项式回归”的残差)。用于差异表达分析,整合分析,差异基因分析。
SCTransform对测序深度的校正效果要好于log标准化,也可用于矫正线粒体等因素的影响,但不能用于批次矫正。基于概率方法对UMI counts进行建模。在进行了SCTransform操作后,矩阵默认会变成SCT矩阵,如果不加设置,后续的PCA等操作都是基于SCT矩阵。由于SCTransform 更好地估计了方差,并且较高的 PC 维度通常不包括技术变化的影响,所以选择用于聚类的 PC 越多,意味着生物学变化越多。(不同于以往的全局scale归一化方法,需要认真选择用于聚类的PC以避免技术误差建立的PC维度被用于聚类)。
scRNA <- SCTransform(scRNA, vars.to.regress = "percent.mt", verbose = FALSE)
#在标准化过程中屏蔽线粒体引起的变异。
簇的Marker基因鉴定最好使用RNA矩阵($RNA@counts)。
sct的到的count并不是真实的基因表达值,而是通过scaledata倒推出来的,它是一个回归,运算之后的残差。
####标准化的意义: 消除技术效应对潜在分子计数的影响,同时保留真正的生物学变异。
在单细胞 (scRNA-seq) 数据的分析中,进行有效的预处理和标准化非常关键。原始UMI计数不能直接用于比较细胞之间的基因表达,因为它们会被技术和“无意义”的生物变异所混淆。 特别是,观察到的 测序深度 (每个细胞检测到的基因或分子的数量)在细胞之间可能存在显着差异,即使在同一细胞类型内,分子计数的变化可能跨越一个数量级。 虽然现在在scRNA-seq中广泛使用唯一分子标识符 (UMI) 消除了 PCR 扩增偏差,但仍需要通过标准化以消除其他技术变化的影响,如测序深度、细胞裂解和逆转录效率等带来的变异。其实在bulk RNA-seq分析中同样存在,但由于scRNA-seq数据的极度稀疏性,这类问题会更严重
一般来说,有效归一化分析流程处理后的数据集,基因的标准化表达水平与细胞的总测序深度不相关。下游分析流程(降维、差异表达)也不受测序深度变化的影响。跨细胞归一化基因的方差主要反映生物学异质性,与基因丰度或测序深度无关。例如,标准化后具有高方差的基因应在不同细胞类型之间差异表达,而管家基因应表现出低方差。
两种主流的标准化方法
方法1:全局scale归一化方法(global scaling normalization):即基于缩放因子的归一化方法。确定单个细胞的“大小因素”(size factors),通过对每个细胞进行统一缩放,这些方法假设数据集中所有细胞的潜在 RNA 含量是恒定的,并且可以对所有基因应用单个缩放因子,以便将技术噪音与生物细胞间的变异性区分开来。lognormalize标准化属于此类。
方法2:使用概率方法对分子计数进行建模,sctransform属于此类型。他们认为不同的基因组别(gene group)不能被相同的常数因子归一化,质疑基于缩放因子的归一化方法,(缩放因子是如何计算的?)。sctransform的“正则化负二项式回归”的残差代表了有效归一化的数据值(有正有负。正值表示:考虑到细胞群体中基因的平均表达量和细胞测序深度,某个细胞的某个基因所包含的UMIs比预测值要高),该结果剔除技术噪音模型,保留下由不同生物状态驱动的异质性。这些归一化值能够进行下游分析,例如降维和差异表达测试,结果不会被细胞测序深度混淆。