單細(xì)胞亞群鑒定知多少(三)

作者:堯小飛
審稿:童蒙
編輯:angelica

引言

隨著單細(xì)胞數(shù)據(jù)的增多,單細(xì)胞亞群的鑒定越來越成為一個單細(xì)胞分析的一個關(guān)鍵的砰蠢、限制性的過程亏栈。今天繼續(xù)分享一下我們究竟如何去“讀取單細(xì)胞這本天書”-單細(xì)胞亞群鑒定岳颇。

單細(xì)胞亞群鑒定--cellassign

下圖為cellassign工作的pipeline氧骤,提供表達(dá)矩陣和細(xì)胞類型及其marker基因,就可以通過機器學(xué)習(xí)預(yù)測細(xì)胞類型几于。


1 cellassign安裝

cellassign(https://github.com/Irrationone/cellassign)是使用輸入的表達(dá)矩陣蕊苗,根據(jù)提供的marker基因,基于TensorFlow的概率模塊進(jìn)行機器學(xué)習(xí)的方法預(yù)測細(xì)胞類型沿彭。

因此安裝的時候需要安裝TensorFlow模塊朽砰,也需要python,此工具最好用annoconda進(jìn)行安裝喉刘。

 1   install.packages("tensorflow") 
 2   library(tensorflow) 
 3   install_tensorflow(extra_packages = "tensorflow-probability")
 4   #Please ensure this installs version 2 of tensorflow. You can check this by calling
 5    tensorflow::tf_config() 
 6   #> TensorFlow v2.1.0 (/usr/local/lib/python3.7/site-packages/tensorflow) 
 7   #> Python v3.7 (~/.virtualenvs/r-reticulate/bin/python) 
 8    sess = tf$Session() 
 9    hello <- tf$constant('Hello, TensorFlow!') 
10    sess$run(hello) 
11    BiocManager::install('cellassign')
12    或者安裝
13    devtools::install_github("Irrationone/cellassign")
14    ##
15    library(SingleCellExperiment)
16    library(Cellassign)
17    library(Seurat)
18    library(scran)
19    library(dplyr)

2 cellassign使用

cellassign數(shù)據(jù)的準(zhǔn)備:

 1 # 表達(dá)矩陣的準(zhǔn)備
 2 count<-as.matrix(rds@assays$RNA@counts)
 3 # sizeFactors的準(zhǔn)備
 4 cell_anns <- data.frame(Barcode =  names(Idents(rds)),celltype=Idents(rds),samples=rds@meta.data$stim)
 5 rownames(cell_anns) <- names(Idents(rds))
 6 sceset <- SingleCellExperiment(assays = list(counts = as.matrix(count)),colData=cell_anns)
 7 str(sceset)
 8 qclust <- quickCluster(sceset, min.size = 30)
 9 sceset <- computeSumFactors(sceset, sizes = 15, clusters = qclust)
10 sceset <- normalize(sceset)
11 saveRDS(sceset,paste(oudir,paste(pref,'sceset.rds',sep="_"),sep="/"))
12 s <- sizeFactors(sceset)
13 # marker基因的準(zhǔn)備
14 marker_mat <-read.table(markerfile,sep="\t",header=T)
15 marker_gene_list <- list()
16 for (i in marker_mat[,1]){
17    print(unlist(strsplit(as.character(marker_mat[marker_mat[,1]==i,2]),split = ",",fixed=T)))
18    marker_gene_list[[i]]<-  unlist(strsplit(as.character(marker_mat[marker_mat[,1]==i,2]),split = ",",fixed=T))
19}
20 print(marker_list_to_mat(marker_gene_list))
21 marker_mat<-marker_list_to_mat(marker_gene_list)
22 fit <- cellassign(exprs_obj = sceset[as.vector(rownames(marker_mat)),], 
23                  marker_gene_info = marker_mat, 
24                  s = s, 
25                  learning_rate = 1e-2, 
26                  shrinkage = TRUE,
27                  verbose = FALSE)
28

cellassign輸入文件主要是三個瞧柔,一個是表達(dá)矩陣,另外一個是marker基因list睦裳,最后一個是sizeFactors文件造锅。

不過在這里sizeFactors計算直接通過rds文件的信息進(jìn)行計算,因此沒有單獨列出廉邑,可以直接看上述命令即可(在進(jìn)行computeSumFactors時候哥蔚,有時候可能會報錯,可以調(diào)大size參數(shù)即可)蛛蒙。

cellassign根據(jù)marker基因的list進(jìn)行機器學(xué)習(xí)糙箍,預(yù)測細(xì)胞類型,因此此軟件耗時較長牵祟,一般來說倍靡,10000個細(xì)胞的話,差不多24h课舍。


3 結(jié)果展示

其結(jié)果展示也與之前講的singleR一樣塌西,提供了熱圖展示,但是沒有細(xì)胞亞群信息筝尾,因此我們需要把亞群信息添加上去捡需,才更能反映我們數(shù)據(jù)的結(jié)果。

 1#官方展示命令
 2pheatmap::pheatmap(cellprobs(fit)) 
 3
 4cell_cluster_cellprobs<-t(cellprobs(fit))
 5colnames(cell_cluster_cellprobs)<-sceset$Barcode
 6annotation_col<-data.frame(samples=rds@meta.data$stim,Celltype=rds@meta.data$seurat_clusters)
 7   rownames(annotation_col)<-rownames(rds@meta.data)
 8   order_cells<-annotation_col %>% dplyr::mutate(.,barcod=rownames(.)) %>% dplyr::arrange(.,Celltype,samples)
 9   gaps_col<-c() 
10   m<-0
11   for (i in 1:max(as.numeric(annotation_col[,c('Celltype')]))){
12    gaps_col<-c(gaps_col,table(annotation_col[,c('Celltype')])[i]+m)
13    m<-table(annotation_col[,c('Celltype')])[i]+m
14   }
15  #熱圖展示命令
16pheatmap(cell_cluster_cellprobs[,as.vector(order_cells$barcod)],show_rownames=T,show_colnames=F,cluster_cols = F,cluster_rows= F,annotation_col = annotation_col,treeheight_row=0,border=FALSE,gaps_col = gaps_col,main = 'All Single-cell Recognition ',cellheight=16,fontsize=16)

cellassign最終會得到一個細(xì)胞類型的熱圖筹淫,顏色越深代表可能性越高站辉。上圖可以看出不同亞群、不同樣品的細(xì)胞類型預(yù)測的可能性损姜。顏色越紅饰剥,預(yù)測可能性越高,最高為1摧阅。

單細(xì)胞亞群鑒定--clusterprofiler

clusterprofiler是Y叔開發(fā)的目前功能富集最為廣泛的工具汰蓉。

由于有marker基因數(shù)據(jù)庫,因此可以用marker基因數(shù)據(jù)庫對單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)的marker基因list進(jìn)行細(xì)胞類型富集分析棒卷。

根據(jù)富集結(jié)果進(jìn)行細(xì)胞亞群的判斷顾孽,這是做細(xì)胞亞群分析最快的方法,但是此方法有個缺陷比规,那就是如果經(jīng)過sort后的細(xì)胞或者其他純化后的細(xì)胞若厚,關(guān)鍵基因不在marker列表中,其結(jié)果將極其不準(zhǔn)確蜒什。

clusterprofiler:
http://www.bioconductor.org/packages/release/bioc/vignettes/clusterProfiler/inst/doc/clusterProfiler.html

1 clusterprofiler安裝和使用

 1if (!requireNamespace("BiocManager", quietly = TRUE)) 
 2install.packages("BiocManager")
 3BiocManager::install("clusterProfiler") 
 4
 5cell_markers <- vroom::vroom('http://bio-bigdata.hrbmu.edu.cn/CellMarker/download/Human_cell_markers.txt') %>%
 6   tidyr::unite("cellMarker", tissueType, cancerType, cellName, sep=", ") %>% 
 7   dplyr::select(cellMarker, geneID) %>%
 8   dplyr::mutate(geneID = strsplit(geneID, ', '))
 9cell_markers
10markerfile<-"all.markers.csv" #Seurat分析fFindAllMarkers函數(shù)得到所有亞群差異的輸出csv文件
11seurat_marker<-function(markerfile,sep=",",colname="cluster"){
12    marker_list<-list()
13    print(paste("開始讀取markerfile文件测秸,時間為:",Sys.time(),sep=" "))
14    marker<-fread(markerfile,header=T,sep=sep,stringsAsFactors = FALSE,quote = "",data.table = F)
15    for (i in unique(marker[[colname]])){
16        marker_list[[as.character(i)]]<-as.vector(marker[marker[[colname]]==i,]$gene)
17    }
18    #names(marker_list)<-unique(marker[[colname]])
19    print(paste("完成markerfile轉(zhuǎn)換成marker_list,時間為:",Sys.time(),sep=" "))
20    return (marker_list)
21}
22marker_list <-seurat_marker(markerfile)
23y <- compareCluster(marker_list, fun='enricher',TERM2GENE=cell_markers,minGSSize=1,pvalueCutoff = 1, pAdjustMethod = "BH", qvalueCutoff = 1)
24pdf(“compareCluster_cell_markers.pdf, w=12,h=8)
25p1<-dotplot(y, showCategory=as.numeric(showCategory),includeAll=TRUE)
26print(p1)
27dev.off()
28write.table(y@compareClusterResult,paste(outdir,paste(prefix,"compareCluster_cell_markers.xls",sep="_"),sep="/"),quote=F,sep="\t")

2 結(jié)果解讀


這里可以使用enricher或者compareCluster函數(shù)進(jìn)行富集分析灾常,然后可以通過氣泡圖進(jìn)行展示霎冯,最終得到如上所示氣泡圖,每一行為一個細(xì)胞類型岗憋,每一列為一個細(xì)胞亞群肃晚,顏色越紅代表富集越顯著性,氣泡越大仔戈,代表富集程度越高关串。

總 結(jié)

目前來看,幾乎所有的工具都是針對人和小鼠兩個模式生物监徘,較少的工具支持其他物種晋修。因此對于除了人、小鼠以外的物種而言凰盔,可能像scMCA/scHCA工具不能適用墓卦,marker基因數(shù)據(jù)庫也有較多的限制,需要從文獻(xiàn)中尋找想要的marker基因户敬。如果有參考數(shù)據(jù)集落剪,可以根據(jù)已有的參考數(shù)據(jù)集通過singleR進(jìn)行細(xì)胞類型預(yù)測或者根據(jù)marker基因通過cellassign和Garnett類似半監(jiān)督的工具進(jìn)行細(xì)胞亞群預(yù)測睁本。

參 考 文 獻(xiàn)

  1. Abdelaal T, Michielsen L, Cats D, et al. A comparison of automatic cell identification methods for single-cell RNA sequencing data[J]. Genome Biology, 2019, 20(1): 1-19.
  2. Han X, Wang R, Zhou Y, et al. Mapping the Mouse Cell Atlas by Microwell-Seq[J]. Cell, 2018, 172(5): 1307-1307.
  3. Han, X. et al. Construction of a human cell landscape at singlecell level. Nature https://doi.org/10.1038/s41586-020-2157-4 (2020).
  4. Park J, Shrestha R, Qiu C, et al. Single-cell transcriptomics of the mouse kidney reveals potential cellular targets of kidney disease[J]. Science, 2018, 360(6390): 758-763.
  5. Zhang X, Lan Y, Xu J, et al. CellMarker: a manually curated resource of cell markers in human and mouse[J]. Nucleic Acids Research, 2019.
  6. Franzen O, Gan L, Bjorkegren J, et al. PanglaoDB: a web server for exploration of mouse and human single-cell RNA sequencing data[J]. Database, 2019.
  7. Aran D, Looney A P, Liu L, et al. Reference-based analysis of lung single-cell sequencing reveals a transitional profibrotic macrophage.[J]. Nature Immunology, 2019, 20(2): 163-172.
  8. Zhang A W, Oflanagan C H, Chavez E, et al. Probabilistic cell-type assignment of single-cell RNA-seq for tumor microenvironment profiling[J]. Nature Methods, 2019, 16(10): 1007-1015.
  9. Yu G, Wang L G, Han Y, et al. clusterProfiler: an R Package for Comparing Biological Themes Among Gene Clusters[J]. Omics A Journal of Integrative Biology, 2012, 16(5): 284-287.
  10. Faget J, Groeneveld S, Boivin G, et al. Neutrophils and Snail Orchestrate the Establishment of a Pro-tumor Microenvironment in Lung Cancer[J]. Cell Reports, 2017, 21(11): 3190-3204.

關(guān)注“生信阿拉丁”,第一時間查收“新款”生信學(xué)習(xí)干貨忠怖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呢堰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子凡泣,更是在濱河造成了極大的恐慌枉疼,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞋拟,死亡現(xiàn)場離奇詭異骂维,居然都是意外死亡,警方通過查閱死者的電腦和手機贺纲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門航闺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哮笆,你說我怎么就攤上這事来颤。” “怎么了稠肘?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵福铅,是天一觀的道長。 經(jīng)常有香客問我项阴,道長滑黔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任环揽,我火速辦了婚禮略荡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘歉胶。我一直安慰自己汛兜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布通今。 她就那樣靜靜地躺著粥谬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辫塌。 梳的紋絲不亂的頭發(fā)上漏策,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音臼氨,去河邊找鬼掺喻。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的感耙。 我是一名探鬼主播褂乍,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼即硼!你這毒婦竟也來了树叽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤谦絮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后洁仗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體层皱,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年赠潦,在試婚紗的時候發(fā)現(xiàn)自己被綠了叫胖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡她奥,死狀恐怖瓮增,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哩俭,我是刑警寧澤绷跑,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站凡资,受9級特大地震影響砸捏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜隙赁,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一垦藏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伞访,春花似錦掂骏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蝗肪,卻和暖如春袜爪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背薛闪。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工辛馆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓昙篙,卻偏偏與公主長得像腊状,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子苔可,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351