八邻辉、右攬雀尾
后坐扣腳 收腳抱球 轉(zhuǎn)體上步 弓步掤臂 擺臂后捋
轉(zhuǎn)體搭手 弓步前擠 轉(zhuǎn)腕分手 后坐引手 弓步前按
單細胞RNA-seq數(shù)據(jù)中的生物異質(zhì)性通常與包括測序深度在內(nèi)的技術(shù)因素混淆。即使在同一細胞類型內(nèi),每個細胞中檢測到的分子數(shù)量也可能在細胞之間發(fā)生顯著變化囱修。對scRNA-seq數(shù)據(jù)的解釋需要有效的預(yù)處理和標準化想诅,以消除這種技術(shù)差異。在Hafemeister和Satija雁比,2019年稚虎,我們引入了一個建某纺郏框架偎捎,用于對來自scRNA-seq實驗的分子計數(shù)數(shù)據(jù)進行歸一化和方差穩(wěn)定化。此過程省略了對包括偽計數(shù)加法或?qū)?shù)轉(zhuǎn)換在內(nèi)的啟發(fā)式步驟的需要序攘,并改善了常見的下游分析任務(wù)茴她,例如可變基因選擇,降維和差異表達程奠。
在此插圖中丈牢,我們演示了與對數(shù)歸一化相比,使用基于sctransform的歸一化如何能夠恢復(fù)更清晰的生物學(xué)區(qū)別瞄沙。
library(Seurat)
library(ggplot2)
library(sctransform)
加載數(shù)據(jù)并創(chuàng)建Seurat對象
pbmc_data <- Read10X(data.dir = "../data/pbmc3k/filtered_gene_bc_matrices/hg19/")
pbmc <- CreateSeuratObject(counts = pbmc_data)
應(yīng)用sctransform規(guī)范化
- 請注意己沛,這個單一命令替換NormalizeData()
,
ScaleData()和
FindVariableFeatures()`距境。 - 轉(zhuǎn)換后的數(shù)據(jù)將在SCT分析中提供申尼,運行sctransform后將其設(shè)置為默認值
- 在標準化期間,我們還可以刪除混雜的變異源垫桂,例如線粒體作圖百分比
# store mitochondrial percentage in object meta data
pbmc <- PercentageFeatureSet(pbmc, pattern = "^MT-", col.name = "percent.mt")
# run sctransform
pbmc <- SCTransform(pbmc, vars.to.regress = "percent.mt", verbose = FALSE)
最新版本sctransform
還支持使用glmGamPoi軟件包师幕,從而大大提高了學(xué)習(xí)過程的速度∥芴玻可以通過指定調(diào)用它method="glmGamPoi"
霹粥。
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
BiocManager::install("glmGamPoi")
pbmc <- SCTransform(pbmc, method = "glmGamPoi", vars.to.regress = "percent.mt", verbose = FALSE)
通過PCA和UMAP嵌入執(zhí)行降維
# These are now standard steps in the Seurat workflow for visualization and clustering
pbmc <- RunPCA(pbmc, verbose = FALSE)
pbmc <- RunUMAP(pbmc, dims = 1:30, verbose = FALSE)
pbmc <- FindNeighbors(pbmc, dims = 1:30, verbose = FALSE)
pbmc <- FindClusters(pbmc, verbose = FALSE)
DimPlot(pbmc, label = TRUE) + NoLegend()
在標準的Seurat工作流程中,我們重點關(guān)注此數(shù)據(jù)集的10個PC疼鸟,盡管我們強調(diào)指出后控,此參數(shù)的設(shè)置較高時,結(jié)果相似空镜。有趣的是浩淘,我們發(fā)現(xiàn)使用sctransform時,通彻昧眩可以通過將此參數(shù)推得更高來受益馋袜。我們認為這是因為sctransform工作流程執(zhí)行了更有效的規(guī)范化,從而從數(shù)據(jù)中強烈消除了技術(shù)影響舶斧。
即使經(jīng)過標準的對數(shù)歸一化后欣鳖,測序深度的變化仍然是一個混雜因素(請參見圖1),并且這種影響會微妙地影響更高的PC茴厉。在sctransform中泽台,此效果已大大減輕(請參見圖3)什荣。這意味著更高的PC更可能代表微妙的但與生物學(xué)相關(guān)的異質(zhì)性來源-因此包括它們可能會改善下游分析。
此外怀酷,默認情況下稻爬,sctransform返回3,000個可變功能,而不是2,000蜕依∥Τ基本原理相似,其他可變特征不太可能受細胞間技術(shù)差異的驅(qū)動样眠,而可能代表更微妙的生物學(xué)波動友瘤。通常,我們發(fā)現(xiàn)用sctransform生成的結(jié)果對這些參數(shù)的依賴性較虚苁(實際上辫秧,在轉(zhuǎn)錄組中使用所有基因時,我們獲得了幾乎相同的結(jié)果被丧,盡管這確實降低了計算效率)盟戏。這可以幫助用戶生成更可靠的結(jié)果,此外甥桂,還可以使用具有相同參數(shù)設(shè)置的標準分析管道進行應(yīng)用柿究,這些參數(shù)設(shè)置可以快速應(yīng)用于新的數(shù)據(jù)集:
例如,以下代碼在一個命令中復(fù)制了完整的端到端工作流程:
pbmc <- CreateSeuratObject(pbmc_data) %>% PercentageFeatureSet(pattern = "^MT-", col.name = "percent.mt") %>%
SCTransform(vars.to.regress = "percent.mt") %>% RunPCA() %>% FindNeighbors(dims = 1:30) %>%
RunUMAP(dims = 1:30) %>% FindClusters()
如我們的論文所述格嘁,sctransform使用“正負二項式回歸”計算scRNA-seq數(shù)據(jù)中的技術(shù)噪聲模型笛求。該模型的殘差為歸一化值,可以為正或負糕簿。給定細胞中給定基因的正殘基表明探入,與基因在種群和細胞測序深度中的平均表達相比,我們觀察到的UMI比預(yù)期多懂诗,而負殘基則相反蜂嗽。
sctransfrom的結(jié)果存儲在“ SCT”分析中。您可以在我們的插圖殃恒,命令備忘單或開發(fā)人員指南中了解有關(guān)Seurat中多測定數(shù)據(jù)和命令的更多信息植旧。
pbmc[["SCT"]]@scale.data
包含殘差(歸一化值),并直接用作PCA的輸入离唐。請注意病附,此矩陣是非稀疏的,因此如果為所有基因存儲亥鬓,可能會占用大量內(nèi)存完沪。為了節(jié)省內(nèi)存,我們僅通過在SCTransform()`函數(shù)調(diào)用中默認設(shè)置return.only.var.genes = TRUE來為變量基因存儲這些值。協(xié)助進行可視化和解釋覆积。我們還將Pearson殘差轉(zhuǎn)換回“校正”的UMI計數(shù)听皿。您可以將它們解釋為如果所有單元格都測序到相同深度,我們期望觀察到的UMI計數(shù)宽档。如果您想確切了解我們?nèi)绾螆?zhí)行此操作尉姨,請在此處查看正確的功能。
“更正后的” UMI計數(shù)存儲在中
pbmc[["SCT"]]@counts
吗冤。我們將這些校正后的計數(shù)的對數(shù)標準化版本存儲在中pbmc[["SCT"]]@data
又厉,這對可視化非常有幫助。您可以將校正后的對數(shù)歸一化計數(shù)用于差異表達和積分欣孤。但是馋没,原則上,最好直接對(存儲在
scale.data
插槽中的)殘差本身執(zhí)行這些計算降传。Seurat v3當前不支持此功能,但很快就會支持勾怒。- *</details>
用戶可以基于規(guī)范標記單獨注釋集群婆排。但是,與標準的Seurat工作流程相比笔链,sctransform歸一化方法在生物學(xué)上有更明顯的區(qū)別段只,其中包括:
- 基于CD8A,GZMK鉴扫,CCL5赞枕,GZMK表達,至少3個CD8 T細胞群體(幼稚坪创,記憶炕婶,效應(yīng)子)的清晰分離
- 基于S100A4,CCR7莱预,IL32和ISG15的三個CD4 T細胞群體(天然柠掂,記憶,IFN激活)的清晰分離
- 基于TCL1A依沮,F(xiàn)CER2的B細胞簇中的其他發(fā)育子結(jié)構(gòu)
- 根據(jù)XCL1和FCGR3A涯贞,將NK細胞進一步分離為CD56dim與明亮簇
# These are now standard steps in the Seurat workflow for visualization and clustering Visualize
# canonical marker genes as violin plots.
VlnPlot(pbmc, features = c("CD8A", "GZMK", "CCL5", "S100A4", "ANXA1", "CCR7", "ISG15", "CD3D"),
pt.size = 0.2, ncol = 4)
# Visualize canonical marker genes on the sctransform embedding.
FeaturePlot(pbmc, features = c("CD8A", "GZMK", "CCL5", "S100A4", "ANXA1", "CCR7"), pt.size = 0.2,
ncol = 3)
FeaturePlot(pbmc, features = c("CD3D", "ISG15", "TCL1A", "FCER2", "XCL1", "FCGR3A"), pt.size = 0.2,
ncol = 3)
說明一個樣本也可以使用sctransform處理的。