前言
EcoTyper是一個(gè)基于機(jī)器學(xué)習(xí)的工具,能夠從Bulk、單細(xì)胞、以及空間分辨率的基因表達(dá)數(shù)據(jù)中大規(guī)模地識(shí)別并驗(yàn)證細(xì)胞狀態(tài)和生態(tài)型。我們?cè)谇懊娴耐莆闹薪榻B了EcoTyper的分析框架和部分實(shí)操,感興趣的小伙伴可以先閱讀這一部分哦。
EcoTyper的代碼實(shí)操主要分為6個(gè)部分:

那么,今天讓我們一起來(lái)學(xué)習(xí)一下它的第五個(gè)部分——De novo Discovery of Cell States and Ecotypes in scRNA-seq Data。
EcoTyper的分析框架:
Extract cell type specific or top variable genes:在分析前,通常需要去除不特定于某一細(xì)胞類型的基因(在給定細(xì)胞類型和所有其他細(xì)胞類型之間差異表達(dá)的基因作為特異基因),以減少發(fā)現(xiàn)假細(xì)胞狀態(tài)的可能性。然后,通過Wilcox檢驗(yàn)和Benjamini-Hochberg校正來(lái)篩除Q值大于0.05的基因。
Cell state discovery on correlation matrices:EcoTyper 使用非負(fù)矩陣分解(NMF)來(lái)從單細(xì)胞表達(dá)數(shù)據(jù)中鑒定細(xì)胞狀態(tài)。然而,由于scRNA-seq數(shù)據(jù)通常是稀疏的,直接應(yīng)用NMF可能效果不佳。因此,EcoTyper 在給定細(xì)胞類型的每對(duì)細(xì)胞之間的相關(guān)矩陣上應(yīng)用NMF。
Choosing the number of cell states:基于cophenetic系數(shù)確定細(xì)胞狀態(tài)。cophenetic系數(shù)量化了給定細(xì)胞狀態(tài)數(shù)量(或聚類數(shù))的分類穩(wěn)定性,通常在0到1之間,1表示最穩(wěn)定。
Extracting cell state information:從步驟2的NMF輸出中提取細(xì)胞狀態(tài)信息。
Cell state re-discovery on expression matrices:在步驟2中確定了細(xì)胞狀態(tài)后,EcoTyper進(jìn)行差異表達(dá)分析,以鑒定與每個(gè)細(xì)胞狀態(tài)高度相關(guān)的基因。然后,選取具有前1000個(gè)基因進(jìn)行新一輪的NMF。
Extracting cell state information:解析第5步NMF結(jié)果,提取細(xì)胞狀態(tài)信息用于后續(xù)分析。
Cell state QC filter:為了避免假細(xì)胞狀態(tài)的識(shí)別,EcoTyper引入了自適應(yīng)假陽(yáng)指數(shù)(AFI)來(lái)過濾具有AFI >= 1的細(xì)胞狀態(tài)。
Ecotype (cellular community) discovery:生態(tài)型或細(xì)胞社群是通過識(shí)別細(xì)胞狀態(tài)在樣本之間的共現(xiàn)模式來(lái)獲得的。EcoTyper使用Jaccard系數(shù)來(lái)量化每對(duì)細(xì)胞狀態(tài)在發(fā)現(xiàn)隊(duì)列中樣本之間的重疊程度。然后,根據(jù)Jaccard矩陣,通過超幾何檢驗(yàn)評(píng)估是否存在細(xì)胞狀態(tài)之間的重疊。最后,通過層次聚類和輪廓寬度來(lái)確定最佳的生態(tài)型數(shù)量。
代碼流程
1.準(zhǔn)備環(huán)境和數(shù)據(jù)
下載 EcoTyper
wget https://github.com/digitalcytometry/ecotyper/archive/refs/heads/master.zip
unzip master.zip
cd ecotyper-master
#EcoTyper是一個(gè)獨(dú)立的軟件,用R實(shí)現(xiàn),但并不是R包哦。
R環(huán)境準(zhǔn)備:

這是官網(wǎng)推薦的R和R包版本,但是小編用的最新的R版本,并且安裝相應(yīng)最新版本的R包也是很順利的。
install.packages(c("RColorBrewer","cluster", "circlize","cowplot","data.table","doParallel","ggplot2","grid", "reshape2", "viridis","config","argparse","colorspace", "plyr"))
BiocManager::install("ComplexHeatmap")
BiocManager::install("Biobase")
BiocManager::install("NMF")
輸入數(shù)據(jù):
- 表達(dá)譜數(shù)據(jù):結(jié)直腸癌scRNA-seq數(shù)據(jù),數(shù)據(jù)存儲(chǔ)在
example_data/scRNA_CRC_data.txt中。

- 樣本注釋文件,數(shù)據(jù)存儲(chǔ)在
example_data/scRNA_CRC_annotation.txt。

2.discovery scripts
EcoTyper_discovery_scRNA.R腳本用于在單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)中恢復(fù)細(xì)胞狀態(tài)和生態(tài)型。
Rscript EcoTyper_discovery_scRNA.R -h
此腳本接受 YAML 格式的配置文件作為輸入文件(config_discovery_scRNA.yml)。

參數(shù)詳解:
-
Discovery dataset name : "discovery_scRNA_CRC"
發(fā)現(xiàn)數(shù)據(jù)集名稱
-
Expression matrix : "example_data/scRNA_CRC_data.txt"
表達(dá)數(shù)據(jù)的文件路徑
-
Annotation file : "example_data/scRNA_CRC_annotation.txt"
注釋數(shù)據(jù)的文件路徑
-
Annotation file column to scale by : NULL
指定一個(gè)注釋文件中的列名,按照這個(gè)列的值,對(duì)基因進(jìn)行縮放(均值為0,方差為1)
-
Annotation file column(s) to plot : []
指定注釋文件中哪些列將用作輸出熱圖中的顏色條(color bar)
Annotation file column(s) to plot : ["Histology", "Tissue"]
Output folder : "DiscoveryOutput_scRNA"
-
Filter genes : "cell type specific"
Accepted values:
"cell type specific" - select genes overexpressed in a cell type
"no filter" - use all genes
-
Number of threads : 10
線程數(shù)
-
Number of NMF restarts : 5
NMF重新啟動(dòng)次數(shù)參數(shù)。EcoTyper 使用NMF(非負(fù)矩陣分解)來(lái)鑒定細(xì)胞狀態(tài),但NMF的結(jié)果可能取決于隨機(jī)初始化。為了獲得穩(wěn)定的解決方案,NMF通常多次運(yùn)行,每次使用不同的種子。
-
Maximum number of states per cell type : 20
每種細(xì)胞類型可能的狀態(tài)數(shù)量的上限。
-
Cophenetic coefficient cutoff : 0.95
取值范圍為[0,1],較低的值會(huì)得到較多的細(xì)胞狀態(tài)數(shù)量。
-
Jaccard matrix p-value cutoff : 1
在步驟8中,生態(tài)型的識(shí)別是通過對(duì)衡量每對(duì)狀態(tài)之間的樣本重疊的Jaccard矩陣進(jìn)行聚類來(lái)完成的。在執(zhí)行生態(tài)型識(shí)別之前,將不顯著的樣本重疊的Jaccard矩陣值設(shè)置為0,以減輕由虛假重疊引入的噪音。值得注意的是,在具有較小樣本數(shù)量的scRNA-seq數(shù)據(jù)集中,建議禁用此篩選以避免過度篩選Jaccard矩陣,但如果發(fā)現(xiàn)的scRNA-seq數(shù)據(jù)集包含足夠多的樣本來(lái)可靠評(píng)估重疊的顯著性,可以將此截?cái)嘀翟O(shè)置為較低的值(例如0.05)。
-
Minimum number of states in ecotypes : 3
少于3種細(xì)胞狀態(tài)的生態(tài)型被過濾掉
運(yùn)行腳本:
Rscript EcoTyper_discovery_scRNA.R -c config_discovery_scRNA.yml
3.結(jié)果解讀
輸出的結(jié)果包括3類,rank_plot圖、各種細(xì)胞類型的細(xì)胞狀態(tài)以及生態(tài)型。我們來(lái)逐各學(xué)習(xí)。
- rank_plot(Cophenetic系數(shù)圖):橫向虛線表示配置文件中提供的Cophenetic系數(shù)截?cái)嘀担–ophenetic coefficient cutoff field)。紅色的垂直虛線表示基于提供的Cophenetic系數(shù)截?cái)嘀底詣?dòng)選擇的狀態(tài)數(shù)量。注意這些圖表示在應(yīng)用步驟6和7中的低質(zhì)量狀態(tài)篩選之前獲得的狀態(tài)數(shù)量。因此最終結(jié)果可能包含更少的狀態(tài)。

接下來(lái),我們以內(nèi)皮細(xì)胞為例展示ecotyper識(shí)別的細(xì)胞狀態(tài)結(jié)果
- state_assignment.txt:每個(gè)樣本被分配到具有最高推斷豐度的細(xì)胞狀態(tài)的信息,也就是每個(gè)樣本的主要細(xì)胞狀態(tài)。

- state_assignment_heatmap.png/pdf:展示在每個(gè)細(xì)胞狀態(tài)中具有最高 log2 FC的基因的表達(dá)情況,這些基因被稱為細(xì)胞狀態(tài)特異性標(biāo)記基因。列代表發(fā)現(xiàn)數(shù)據(jù)集中的樣本,而行代表了每個(gè)細(xì)胞狀態(tài)的標(biāo)記基因。

- "heatmap_top_ann.txt" 是用戶提供的注釋文件與細(xì)胞狀態(tài)相關(guān)的信息的整合。只有被分配到主要細(xì)胞狀態(tài)的樣本才會(huì)包含在這個(gè)文件中。

生態(tài)型部分輸出的結(jié)果
- "ecotype_abundance.txt" 文件包含了在發(fā)現(xiàn)數(shù)據(jù)集中的每個(gè)生態(tài)型(ecotype)相對(duì)豐度的信息。

- "ecotype_assignment.txt" 文件包含了將發(fā)現(xiàn)數(shù)據(jù)集中的樣本分配到各個(gè)生態(tài)型的信息。

- "heatmap_assigned_samples_viridis.pdf/png" 展示了分配了生態(tài)型的樣本中細(xì)胞狀態(tài)分?jǐn)?shù)的熱圖。

- nclusters_jaccard.png/pdf: "initial clusters" 指的是通過對(duì)Jaccard指數(shù)矩陣進(jìn)行聚類獲得的初始簇的數(shù)量。這個(gè)數(shù)量通常是通過應(yīng)用平均輪廓(average silhouette)方法來(lái)選擇的。

- jaccard_matrix.png/pdf:包含至少3個(gè)細(xì)胞狀態(tài)的生態(tài)型的Jaccard系數(shù)矩陣的熱圖。

小結(jié)
在本期推文中,我們介紹了如何使用EcoTyper從單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)中從頭發(fā)現(xiàn)細(xì)胞狀態(tài)和生態(tài)型。小編認(rèn)為,我們?cè)谘芯康倪^程中可以整合較多的單細(xì)胞數(shù)據(jù)集保證更為全面地發(fā)現(xiàn)細(xì)胞狀態(tài)和生態(tài)型。隨后,將模型應(yīng)用于Bulk轉(zhuǎn)錄組數(shù)據(jù)中恢復(fù)細(xì)胞狀態(tài)和生態(tài)型,結(jié)合Bulk數(shù)據(jù)樣本量大、表型數(shù)據(jù)多的優(yōu)勢(shì)更好的探索相關(guān)生物學(xué)結(jié)果。我們將在下期推文中和大家學(xué)習(xí)EcoTyper的最后一部分實(shí)操--De novo Discovery of Cell States and Ecotypes in Pre-Sorted Data,關(guān)于今天的學(xué)習(xí)內(nèi)容,感興趣的小伙伴快來(lái)用起來(lái)吧~
好啦,本期的分享到這里就結(jié)束了,我們下期再會(huì)~