單細胞亞群鑒定知多少(二)

作者:堯小飛
審稿:童蒙
編輯: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) 

這一期我們介紹兩個自動化進行單細胞亞群鑒定的工具,下期我們繼續。

關注“生信阿拉丁”,第一時間查收“新款”生信學習干貨。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。