如何用Seurat去除细胞周期对下游分析的影响?
首先,我们基于G2/M和S期的标志物表达给每个细胞赋值评分。这些标志物集合与他们的表达水平应当成反比的关系,而且两者都不表达的细胞很可能不处于循环期,处于G1期。
利用CellCycleStoring函数进行赋值,并将S期和G2/M期评分保存在object@meta.data,以及细胞处于G2M,S或G1期进行预测分类。CellCycleScoring可以通过设置set.ident = TRUE 设定Seurat object 的细胞周期(原始的identities保存为old.ident)。Seurat并不能再下游细胞周期回归分析时使用离散分类((G2M/G1/S),反之,使用G2M期和S期的定量评分。但是,如果对此感兴趣,Seurat也可以提供预测分类。
1.数据缩放时进行细胞周期评分回归化
代码:
marrow <- CellCycleScoring(object = marrow, s.genes = s.genes, g2m.genes = g2m.genes,
set.ident = TRUE)
head(x = marrow@meta.data)
marrow <- RunPCA(object = marrow, pc.genes = c(s.genes, g2m.genes), do.print = FALSE)
PCAPlot(object = marrow)
marrow <- ScaleData(object = marrow, vars.to.regress = c("S.Score", "G2M.Score"),
display.progress = FALSE)
marrow <- RunPCA(object = marrow, pc.genes = marrow@var.genes, genes.print = 10)
marrow <- RunPCA(object = marrow, pc.genes = c(s.genes, g2m.genes), do.print = FALSE)
PCAPlot(object = marrow)
2.第1种方法虽然可以去除细胞周期的影响,但是可能给下游分析带来影响,特别是细胞增殖过程,干细胞静止状态,而分化细胞处于增殖状态,对细胞周期评分进行回归化,可能会模糊干细胞和分化细胞的差异。
因此,建议对G2M和S期的差异进行回归化,这意味着非循环细胞和循环细胞的差异信号将会保存,而增殖细胞之间的细胞周期的差异将会被回归化。
代码:
marrow$CC.Difference <- marrow$S.Score - marrow$G2M.Score
marrow <- ScaleData(object = marrow, vars.to.regress = "CC.Difference", display.progress = FALSE)
marrow <- RunPCA(object = marrow, pc.genes = marrow@var.genes, genes.print = 10)
marrow <- RunPCA(object = marrow, pc.genes = c(s.genes, g2m.genes), do.print = FALSE)
PCAPlot(object = marrow)
网友评论