很多做單細胞的研究者都提出過這個問題炒瘸,是否有直接的功能能對單細胞直接進行注釋,而不是繁瑣的參看文獻寝衫,搜索marker,人為對單細胞進行注釋拐邪。
單細胞真的可以實現自動化注釋嗎慰毅?我想答案應該是肯定可以的。但是很多方法注釋結果的準確性有待探討扎阶,不過作為單細胞注釋的輔助工具是一個不錯的選擇汹胃。
這兒我們將詳細講解SingleR單細胞注釋工具的使用以及弊端
我們可以通過得到singleR的細胞注釋結果之后,同時結合Seurat的分群結果东臀,具體組織類型來綜合完成細胞注釋着饥。
官方教程Using SingleR to annotate single-cell RNA-seq data: https://www.bioconductor.org/packages/release/bioc/vignettes/SingleR/inst/doc/SingleR.html
使用內置參考進行注釋(最簡便的)
使用SingleR的最簡單方法是使用內置參考對細胞進行注釋。celldex包通過專用的檢索功能提供了7個參考數據集(主要來自大量RNA-seq或微陣列數據)惰赋。
singleR自帶的7個參考數據集宰掉,需要聯網才能下載,其中5個是人類數據赁濒,2個是小鼠的數據:
BlueprintEncodeData Blueprint (Martens and Stunnenberg 2013) and Encode (The ENCODE Project Consortium 2012) (人)
DatabaseImmuneCellExpressionData The Database for Immune Cell Expression(/eQTLs/Epigenomics)(Schmiedel et al. 2018)(人)
HumanPrimaryCellAtlasData the Human Primary Cell Atlas (Mabbott et al. 2013)(人)
MonacoImmuneData, Monaco Immune Cell Data - GSE107011 (Monaco et al. 2019)(人)
NovershternHematopoieticData Novershtern Hematopoietic Cell Data - GSE24759(人)
ImmGenData the murine ImmGen (Heng et al. 2008) (鼠)
MouseRNAseqData a collection of mouse data sets downloaded from GEO (Benayoun et al. 2019).鼠)
相關包安裝
conda install -c bioconda bioconductor-Seurat
conda install -c bioconda bioconductor-singler ##devtools::install_github('dviraran/SingleR')安裝報錯轨奄,直接用conda安裝了
conda install -c bioconda bioconductor-celldex ##安裝這個包用來調用參考數據集
導入相關包,并下載參考數據集
library(Seurat) ##
library(SingleR)
library(ggplot2)
library(reshape2)
hpca.se=HumanPrimaryCellAtlasData() ##第一次載入會下載數據集拒炎,可能會慢一些挪拟,后面在用時就不用下載了
Blue.se=BlueprintEncodeData()
Immune.se=DatabaseImmuneCellExpressionData()
Nover.se=NovershternHematopoieticData()
MonacoIm.se=MonacoImmuneData()
ImmGen.se=ImmGenData() #(鼠)
Mouse.se=MouseRNAseqData() #(鼠)
在這里,我們還是使用我們前面經常使用的pbmc3k數據集击你,這樣也是為了方便SingleR與Seurat分析結合起來
pbmc數據集相關下載玉组,seurat聚類都可參照前面的簡書:http://www.reibang.com/p/adda4536b2cb
setwd("/home/wucheng/jianshu/function/data")
pbmc <-readRDS("pbmc.rds") ##這兒我們直接導入Seurat標準化谎柄,聚類的pbmc數據
> pbmc
An object of class Seurat
13714 features across 2638 samples within 1 assay
Active assay: RNA (13714 features, 2000 variable features)
2 dimensional reductions calculated: pca, umap
meta=pbmc@meta.data #pbmc的meta文件,包含了seurat的聚類結果
pbmc_for_SingleR <- GetAssayData(pbmc, slot="data") ##獲取標準化矩陣
pbmc.hesc <- SingleR(test = pbmc_for_SingleR, ref = hpca.se, labels = hpca.se$label.main) # 使用HumanPrimaryCellAtlasData參考數據集惯雳,main大類注釋朝巫,也可使用fine小類注釋,不過小類注釋準確性不好確定
table(pbmc.hesc[[i]]$labels,meta$seurat_clusters) ##查看新注釋的標簽與seurat分類的結果的交疊情況
> table(pbmc.hesc[[i]]$labels,meta$seurat_clusters)
0 1 2 3 4 5 6 7 8
B cells 0 0 3 342 0 0 0 0 1
CD4+ T cells 488 404 0 1 5 0 0 0 0
CD8+ T cells 159 51 0 1 96 0 3 0 0
Dendritic cells 0 0 14 0 0 0 0 31 0
Monocytes 0 0 463 0 0 162 0 1 2
NK cells 0 0 0 0 15 0 148 0 0
Progenitors 4 0 0 0 0 0 0 0 11
T cells 46 28 0 0 155 0 4 0 0
我們可以看到有些細胞簇分類還是很明確的吨凑,接著我們借助一些可視化函數看看注釋效果
pdf("plotScoreHeatmap.pdf")
print(plotScoreHeatmap(pbmc.hesc))
dev.off()
pbmc@meta.data$labels <-pbmc.hesc$labels
pdf(paste(i,"Umap.pdf",sep ="_"),height=5,width=10)
print(DimPlot(pbmc, group.by = c("seurat_clusters", "labels"),reduction = "umap"))
dev.off()
可以看到參考數據集中的大部分細胞類別這兒都沒有
umap直觀的可以看到通過singleR注釋的細胞標簽準確性應該可以(不過注意這兒時pbmc數據集捍歪,有些組織單細胞數據可能就不是這樣了哦,可能會很亂鸵钝,做好心理準備哦)
aa=table(pbmc.hesc[[i]]$labels,meta$seurat_clusters)
aa= apply(aa,2,function(x) x/sum(x))
df=as.data.frame(melt(aa))
df$Var2=as.factor(df$Var2)
g <- ggplot(df, aes(Var2, Var1)) + geom_point(aes(size = value), colour = "green") + theme_bw()
pdf("singleR_match_seurat.pdf",height=5,width=10)
print(g)
dev.off()
library(pheatmap)
pdf(paste(i,"heatmap.pdf",sep ="_"),height=5,width=10)
pheatmap(log2(aa+10), color=colorRampPalette(c("white", "blue"))(101))
dev.off()
兩個圖意思差不多糙臼,可以作為判斷簇具體細胞類型的一個借鑒。
另一種是不用這兒的參考數據集恩商,利用已有參考數據集变逃,給其它數據集注釋(Seurat也能實現)
這兒從pbmc數據集中抽取500個細胞作為新的數據集pbmc1,使用前面給pbmc打上的標簽,為pbmc1重新打標簽
pbmc1 <-pbmc[,1:500]
test <- GetAssayData(pbmc1, slot="data")
library(scran)
pbmc1.hesc <- SingleR(test=test, ref=pbmc_for_SingleR, labels=pbmc$labels, de.method="wilcox")
pbmc1@meta.data$labels1 <-pbmc1.hesc$labels
pdf("Umap1.pdf",height=5,width=10)
print(DimPlot(pbmc1, group.by = c("seurat_clusters", "labels"),reduction = "umap"))
dev.off()
因為pbmc1是從pbmc抽取的怠堪,所以新的標簽和之前的一致揽乱。
利用多個數據參考集為單細胞數據打標簽
一些時候,如果希望使用多個參考數據集對單細胞數據進行注釋粟矿』嗣蓿可以避免單個參考數據集中不能覆蓋到的標記,從而得到一組更加全面的細胞類型標記陌粹,尤其是在考慮分辨率差異的情況下撒犀。 我們可以通過將多個對象簡單地傳遞到SingleR()函數中的ref=和label=參數,即可支持使用多個參考數據集掏秩。
pbmc.hesc <- SingleR(test = pbmc_for_SingleR, ref = list(BP=Blue.se, HPCA=hpca.se), labels = list(Blue.se$label.main, hpca.se$label.main))
table(pbmc.hesc$labels,meta$seurat_clusters)
table(pbmc.hesc$labels,meta$seurat_clusters)
0 1 2 3 4 5 6 7 8
B_cell 0 0 0 4 0 0 0 0 0
B-cells 0 0 0 334 0 0 0 1 1
CD4+ T-cells 310 140 0 1 1 0 0 0 0
CD8+ T-cells 366 318 0 4 240 0 5 1 0
HSC 4 0 0 0 0 0 0 1 0
Monocyte 0 0 292 0 0 130 0 21 0
Monocytes 0 0 175 0 0 30 0 8 1
NK cells 0 0 0 0 30 0 150 0 0
Platelets 0 0 0 0 0 0 0 0 12
Pre-B_cell_CD34- 0 0 13 0 0 1 0 0 0
T_cells 17 25 0 1 0 1 0 0 0
不同參考數據集命名不同或舞,有些其實是一樣的細胞類型。
總而言之蒙幻,參考庫是作者基于已發(fā)表的單一種類的純細胞轉錄組數據構建的映凳,所以如果純轉錄組數據不全,細胞注釋是存在影響的邮破。
所以說诈豌,SingleR作為單細胞注釋的輔助工具是一個不錯的選擇。
后面我們還會講到其它的單細胞注釋輔助工具决乎,謝謝队询!
希望大家關注點贊,謝謝9钩稀0稣丁!!K蜕拧T蔽骸!5K貉帧!B挡埂虏束!