作者:堯小飛
審稿:童蒙
編輯:angelica
引言
上一期我們詳細介紹了幾種細胞marker基因的獲取方法,為細胞亞群鑒定打好了堅實的基礎。在這里我們接著看如何進行單細胞亞群鑒定,讀取“單細胞這本天書”。
1 單細胞亞群鑒定-scMCA/scHCA
單細胞亞群鑒定:scMCA/scHCA(http://bis.zju.edu.cn/MCA/blast.html)
在上一篇(單細胞亞群鑒定知多少 第一篇)介紹marker基因數據庫的時候提到過scHCA數據庫,這不僅僅可以用于單細胞marker基因的查找,而且郭國冀老師課題組還提供了單細胞類型預測的R工具包和在線工具。
在線的這里就不介紹了,這里介紹一下R工具包的安裝和使用(scHCA)。由于小鼠的和人的R工具包使用類似,小鼠的就不再贅述。
1.1 scMCA/scHCA的安裝
scMCA/scHCA的安裝比較簡單,由于該工具是GitHub上面的包,因此需要使用devtools進行安裝,具體安裝方法如下所示:
#This require devtools
install.packages('devtools')
library(devtools) # scHCL requires ggplot2/reshape2/plotly/shiny/shinythemes/shiny
install_github("ggjlab/scHCL")
#scMCA工具包的安裝,小鼠圖譜
install_github("ggjlab/scMCA")
1.2 scMCA/scHCA的使用
library(Seurat)
library(scHCL)
###這里直接使用Seurat分析結果后的對象保存的rds文件
rds<-readRDS('cluster.ifnb.rds')
counts<-as.matrix(rds@assays$RNA@counts) ##官網建議的是Rawcounts
dim(counts)
#[1] 2884 80
mca_result <- scHCL(scdata = counts, numbers_plot = 3) # scMCA
str(mca_result)
#List of 4
#$ cors_matrix : num [1:894, 1:80] 0.133 0.119 0.188 0.14 0.136 ...
# ..- attr(*, "dimnames")=List of 2
# .. ..$ : chr [1:894] "Oligodendrocyte Lineage .. ..$ : chr [1:80] "E18_2_C06" "E18_2_C07" "E18_2_C11" "E18_2_C12" ...
#$ top_cors : num 3
# $ scMCA : Named chr [1:80] "AT1 Cell(Lung)" "AT1 Cell(Lung)" "AT2 Cell(Lung)" "AT1 Cell(Lung)" ...
# ..- attr(*, "names")= chr [1:80] "E18_2_C06" "E18_2_C07" "E18_2_C11" "E18_2_C12" ...
# $ scMCA_probility:'data.frame': 240 obs. of 3 variables:
# ..$ Cell : Factor w/ 80 levels "E18_2_C06","E18_2_C07",..: 1 1 1 2 2 2 3 3 3 4 ...
# ..$ Score : num [1:240] 0.306 0.45 0.316 0.377 0.452 .
需要注意的是:我們這里使用的是Seurat包進行細胞亞群分析以后、pbmc對象的rds文件,因此直接讀取rds文件,從rds文件中提取表達矩陣即可,后續的結果展示也直接從rds文件中提取相應的細胞亞群信息、樣品信息。
下表格為輸入的表達矩陣文件:
Gene cell1 cell2 … cellN
Gene1 1.00 0.00 … 0.00
……… ……… ……… … ………
GeneN 0.00 0.00 … 3.00
1.3 結果展示
其實官方給了一個shinny的展現形式,但是由于我們一般10xGenomics單細胞轉錄組分析的時候是有很多細胞,我們關注的重點在于細胞亞群的細胞類型,因此我們可以使用另外一種展現形式。
#shinny展現形式
scHCL_vis(mca_result)
根據rds文件的細胞亞群注釋信息,我們可以提供另外的一種展現形式,如下圖所示。
#' @export
gettissue <- function(x,Num=3){
top_markers <-order(x,decreasing = T)[1:Num]
return(top_markers)
}
cors <- mca_result$cors_matrix
cors_index <- apply(cors,2,gettissue,numbers_plot)
cors_index <- sort(unique(as.integer(cors_index)))
data = cors[cors_index,]
annotation_col<-data.frame(stim=rds@meta.data$stim,Celltype=rds@meta.data$seurat_clusters)
rownames(annotation_col)<-rownames(rds@meta.data)
order_cells<-annotation_col %>% dplyr::mutate(.,barcod=rownames(.)) %>% dplyr::arrange(.,Celltype,stim)
gaps_col<-c()
m<-0
for (i in 1:max(as.numeric(annotation_col[,c('Celltype')]))){
gaps_col<-c(gaps_col,table(annotation_col[,c('Celltype')])[i]+m)
m<-table(annotation_col[,c('Celltype')])[i]+m
}
library(pheatmap)
library(RColorBrewer)
pheatmap(data[79:95,as.vector(order_cells$barcod)],show_rownames=T,show_colnames=F,cluster_cols = F,cluster_rows= F,annotation_col = annotation_col,treeheight_row=0,cellheight=12,fontsize=8,cellwidth=520/length(rownames(annotation_col)),border=FALSE,gaps_col = gaps_col,color = colorRampPalette(c("grey", "white", "red"))(100),main = " ")
2 單細胞亞群鑒定-SingleR
SingleR V1.0.0之前的版本,只需要選擇human或者mouse兩個物種進行分析即可,無需設置參考數據集,參考數據集都是內置在包中,但是運行極慢,極其占用資源。V1.0.0版本參考數據集可以自己選擇,參考數據集更友好,運行速度極快。
SingleR 為biocondutor的包,安裝方便,直接使用BiocManager安裝即可,其預測需要參考數據集和未知數據集,參考數據集官方給了7個數據集,可以直接使用。
SingleR:
http://www.bioconductor.org/packages/release/bioc/vignettes/SingleR/inst/doc/SingleR.html
2.1 SingleR的安裝以及使用
SingleR安裝比較方便,直接使用BiocManager安裝即可,使用也比較方便,參考數據集直接使用官方給的參考數據集即可,這里的表達量需要log一下。
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("SingleR")
library(SingleR)
ref_data <- HumanPrimaryCellAtlasData() #參考數據集
ref_data
# ref_data<-readRDS(‘human.hpca.rds’) #對象 SummarizedExperiment
library(scRNAseq)
querry <- as.matrix(rds@assays$RNA@data)
# SingleR() expects log-counts, but the function will also happily take raw # counts for the test dataset. The reference, however, must have log-values.
pred.hesc <- SingleR(test = querry, ref =ref_data, labels = ref_data$label.fine)
###這里選擇的是用label.fine,而沒有用label.main,主要是考慮結果的精細化
pred.hesc
2.2 SingleR的結果
SingleR的具體結果如下表格所示,其中labels就是我們最終所需要的結果。
2.3 SingleR的參考數據集介紹
下面表格為官方提供的7種數據集的相關信息,人有5個數據集、小鼠2個。這些數據集有不同的特征,如果是做免疫相關的研究,則選擇免疫相關的數據集,細胞亞群鑒定的結果可能會更細致,比如可以鑒定到CD4 na?ve或者effector細胞亞群。
由于在測試的過程中,官方的函數下載參考數據一直不成功,因此直接下載官方參考數據集,并進行處理。內容較多,已上傳到了百度網盤(感興趣的小伙伴,回復小編“SingleR”)。該文件夾下有較多的文件,可以直接使用該文件夾下的rds文件,具體數據處理過程也一并提供了,見文件夾下的r腳本。
2.4 SingleR的結果展示
SingleR工具也提供官方的結果展示,但是其沒有細胞亞群信息,因此在我們真正作分析的時候,還是需要具有樣品信息和亞群信息的結果才能做下游分析,為了得到具有亞群注釋信息的結果,根據如下代碼進行結果展示(分析是基于Seurat的rds文件)。
annotation_col<-data.frame(clusters=rds@meta.data$seurat_clusters,stim=rds@meta.data$stim) #
rownames(annotation_col)<-rownames(rds@meta.data)
order_cells<-annotation_col %>% dplyr::mutate(.,barcod=rownames(.)) %>% dplyr::arrange(.,clusters,stim) #
pred.hesc$clusters<-annotation_col[as.vector(rownames(pred.hesc)),]$clusters
pred.hesc$stim<-annotation_col[as.vector(rownames(pred.hesc)),]$stim pred.hesc<-
pred.hesc[as.vector(order_cells$barcod),]
pdf('stim_celltype.pdf',w=12,h=8)
p<-plotScoreHeatmap(pred.hesc,annotation_col=annotation_col,cells.order=order(pred.hesc$clusters))
print(p)
dev.off()
write.table(dplyr :: bind_cols(Barcode=rownames(pred.hesc),as.data.frame(pred.hesc)),‘singleR_celltype.xls,sep="\t",row.names=F)
這一期我們介紹兩個自動化進行單細胞亞群鑒定的工具,下期我們繼續。
關注“生信阿拉丁”,第一時間查收“新款”生信學習干貨。