細胞週期預測 | 單細胞轉錄組(scRNA-seq)分析 03

一、介紹

前置知識:原創 Seurat 包圖文詳解 | 單細胞轉錄組(scRNA-seq)分析02

使用Seurat包來運行,主要實現兩個功能:

  • 通過marker基因計算細胞週期評分
  • 基於評分在預處理過程中,減輕單細胞轉錄組數據中細胞週期異質性影響

二、預處理

數據來自:http://www.bloodjournal.org/content/early/2016/06/30/blood-2016-05-716480?sso-checked=true

數據下載:https://www.dropbox.com/s/3dby3bjsaf5arrw/cell_cycle_vignette_files.zip?dl=1

rm(list = ls())
library(Seurat)

# 讀取表達矩陣的第一行作爲表頭,第一列作爲行名
exp.mat <- read.table(file = "./data/cell_cycle_vignette_files/nestorawa_forcellcycle_expressionMatrix.txt", header = TRUE, 
                      as.is = TRUE, row.names = 1)


# 細胞週期的Marker基因
s.genes <- cc.genes$s.genes
g2m.genes <- cc.genes$g2m.genes

# 創建並初始化 Seurat 對象
marrow <- CreateSeuratObject(counts = exp.mat)
marrow <- NormalizeData(marrow)
marrow <- FindVariableFeatures(marrow, selection.method = "vst")
marrow <- ScaleData(marrow, features = rownames(marrow))

如果直接使用 FindCariableFeatures 找高異質性基因。

marrow <- RunPCA(marrow, features = VariableFeatures(marrow), ndims.print = 6:10, nfeatures.print = 10)
DimHeatmap(marrow, dims = c(8, 10))

mark

在PCA後,會發現PC8與PC10中包括TOP2A和MKI67的細胞週期mark。可以嘗試數據中迴歸該信號,避免影響下游分析。

三、獲取細胞週期分數

首先,我們根據每個細胞的G2 / M和S期標誌物的表達爲其分配分數。這些標記物組在表達水平上應該是反相關的,並且不表達它們的細胞可能不會循環並處於G1期。

我們在CellCycleScoring函數中分配分數,該函數將S和G2 / M分數存儲在對象元數據中,以及G2M,S或G1階段中每個單元格的預測分類。CellCycleScoring也可以通過傳遞將Seurat對象的標識設置爲細胞週期階段set.ident = TRUE(原始標識存儲爲old.ident)。請注意,Seurat在下游細胞週期迴歸中不使用離散分類(G2M / G1 / S)。相反,它使用G2M和S期的定量評分。但是,如果有興趣,我們會提供預測的分類。

marrow <- CellCycleScoring(marrow, s.features = s.genes, g2m.features = g2m.genes, set.ident = TRUE)

# 查看細胞週期分數和階段分配
head(marrow[[]])

# 可視化整個細胞週期標記的分佈
RidgePlot(marrow, features = c("PCNA", "TOP2A", "MCM6", "MKI67"), ncol = 2)

mark

# 對細胞週期基因做PCA,揭示了細胞完全按階段分離
marrow <- RunPCA(marrow, features = c(s.genes, g2m.genes))
DimPlot(marrow)

mark

四、在數據縮放期間迴歸出細胞週期得分

marrow <- ScaleData(marrow, vars.to.regress = c("S.Score", "G2M.Score"), features = rownames(marrow))
# 高可變基因上的PCA不再返回與細胞週期相關的成分
marrow <- RunPCA(marrow, features = VariableFeatures(marrow), nfeatures.print = 10)
# 僅對細胞週期基因運行PCA時,細胞不再按細胞週期階段分離
marrow <- RunPCA(marrow, features = c(s.genes, g2m.genes))
DimPlot(marrow)

mark

由於最佳的細胞週期標記在組織和物種之間極爲保守,因此我們發現此程序可在各種數據集上穩定可靠地工作。

五、備用工作流程

上面的過程將刪除與細胞週期相關的所有信號。在某些情況下,會對下游分析產生負面影響,尤其是在分化過程中(如鼠類造血),在此過程中幹細胞處於靜止狀態,分化的細胞正在增殖(反之亦然)。

在這種情況下,清除所有細胞週期效應也會使幹細胞和祖細胞之間的區別變得模糊。

作爲替代方案,建議逐步淘汰G2M和S期評分之間的差異。

這意味着將維持分離非循環細胞和循環細胞的信號,但是增殖細胞之間的細胞週期相位差異(通常沒用)將被從數據中去除。

marrow$CC.Difference <- marrow$S.Score - marrow$G2M.Score
marrow <- ScaleData(marrow, vars.to.regress = "CC.Difference", features = rownames(marrow))

# PCA減少細胞週期效應
marrow <- RunPCA(marrow, features = VariableFeatures(marrow), nfeatures.print = 10)

# 在細胞週期基因上運行PCA時,活躍增殖的細胞與G1細胞仍然不同,但是在活躍增殖的細胞中,G2M和S期細胞會聚在一起
marrow <- RunPCA(marrow, features = c(s.genes, g2m.genes))
DimPlot(marrow)

mark

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章