在scRNA-seq數據通過一些列的預處理,質控以及標準化之后,后續分析步驟需要通過識別細胞間的基因表達差異來進行聚類,?分析不同細胞群的差異性。這就涉及到了單細胞RNA數據處理中的特征選擇,降維以及如何使數據可視化。
數據降維的必要性
????????如果將單個細胞看作一個數據點,那么檢測的基因數就是其對應的變量數,也就是我們所說的維數。一般一個人類scrna-seq?能檢測到~25k基因,于是基因表達數據也被稱為高維數據。我們知道, 并不是所有的基因都會表達,并且由于單細胞測序技術的限制,不是所有的轉錄分子都能被成功捕獲,再加上測序深度的差異, 每個細胞中約能檢測到10%~50%的轉錄分子,這導致了許多基因計數為0.?雖然通過數據的預處理我們能過濾掉零計數基因,剩下的基因維數仍然可以高達~15k。并且基因之間的高度相關性也使得表達數據包含了許多冗余信息, 從而掩蓋了真正的生物學差異。因此,我們需要通過降維抽取數據的概要(component),減少數據噪音,并提高下游分析速度。降維的另外一個好處就是可以在低維中實現數據的可視化。
特征選擇?(feature selection)
????????在scRNA-seq中常見的降維第一步是特征選擇?(feature selection)。在很多pipeline中,會用feature來指代基因。在不同細胞之間,由于大部分的細胞表達是類似的,只有少數基因表達產生差異,特征選擇的目的是篩選出高度可變基因(highly variable genes),用來代表數據的主要差異性。一般會選擇1k~5k個基因,具體數目根據數據的復雜性而有所不同。在實際操作中,如果已知樣本包含多種細胞亞型,如免疫細胞,我們建議大家盡量提高特征數目。
????????一種簡單的特征選擇方法是對每個基因基于其在所有細胞中的平均表達值來分組,每組中具有最高variance-to-mean ratio的基因被選為高度可變基因。單細胞分析中常用的r
R包Seurat就是使用這種方法,Seurat:: FindVariableFeatures()。
降維?(Dimensionality reduction)
????????在特征選擇之后,可以通過降維算法對高度可變基因的表達矩陣維數進一步壓縮,常見的降維方法有PCA (principle component analysis), MDS (multi-dimensional scaling), Sammon mapping, Isomap?,t-SNE (t-distributed stochastic neighbor embedding)和UMAP(Uniform Approximation and Projection method)。其中PCA,?t-SNE和UMAP在scRNA-seq中使用非常普遍?[2]。
????????大家對于PCA應該都不陌生,它通過基因線性組合來捕獲數據方差,?在實現方差最大化的同時實現降維。根據定義,前幾個top?成分捕獲了數據的主要差異,我們可以通過將下游分析限制在top?PC上來進行降維,?這些top PC在低維構建了一個原始數據的最佳近似值。PCA應用于scRNA-seq數據時,我們的前提假設是生物過程是通過影響多個基因,以協調的方式來實現的。這也意味著,通過考慮多個基因的相關行為,可以捕獲更多的差異,從而使得top PC盡可能的代表生物學結構。當然,PCA采用的線性組合方式也帶來一個缺點,就是主成分自身的生物學意義很難解釋。?理想情況下,我們希望降維后每個每個維度都能對應一個生物學結構,?但大多數時候是很難對應上。盡管如此,PCA方法的簡單高效使其在scRNA-seq中得到了廣泛使用。通常我們會使用PCA來進行一般性總結,?特別是用來查看有沒有一些outlier cells,可能是在預處理時漏掉的low quality cells。
常用的R包以及方法有:
1.?Scater::runpca()
2.?Seurat::RunPCA()
????????那么我們應該如何選擇主成分的個數呢?選擇的PC越多,越能避免漏掉生物學信號,而代價就是可能引入更多的噪音。很多時候,大家會選擇一個“合理”的任意值,通常在10~50?之間。?我們可以通過多次嘗試來選到一個滿意的數值。?除此之外,還有一些data-driven的方法來幫助我們選擇, 例如下圖中的elbow plot, 通過比較列出不同pc對應的方差百分比來選擇曲線中的拐點elbow point作為“最佳”pc值。這個策略基于的假設是,捕獲生物學信號的每個top PC都應比剩余的pc解釋更多的variance,因此當我們越過“最佳”?PC點時,其包含的方差百分比會急劇下降,形成一個明顯的拐點,?如下圖中的PC=10。在實際的操作中,拐點有可能不是非常的明確,特別是如果對下游的聚類效果不太滿意時,可以回來調節一下pc值,看看結果會不會有顯著的變化。
常用的r 包以及方法有:
1.?PCAtools::findElbowPoint()
2.?Seurat:: ElbowPlot()
????????t-SNE和UMAP是另外兩種非線性的降維方法,由于其漂亮的可視化效果,這兩種方法在單細胞數據教程中非常受歡迎。與PCA不同,這兩種方法不僅限于線性變換,也不受制于準確表示遠距離種群之間的距離,因此使得它們在低位空間如何對細胞進行排列具有更大的自由度,從而在其二維的可視化效果圖中能夠將復雜的細胞群分成許多不同的簇,使得效果圖比PCA更加直觀和容易解釋。
????????t-SNE是以犧牲整體結構(global structure)為代價,著重于捕獲局部結構(local similarly),因此它可能會夸大細胞群體之間的差異而忽略群體之間的潛在聯系。如果簡單的通過t-SNE結果圖來解讀細胞簇之間的關系,產生的結論可能會被圖中的集群大小和位置所誤導。在效果圖中,t-SNE傾向于將密集的簇膨脹,并且壓縮稀疏的簇,因此我們不能簡單的通過圖上的大小來衡量細胞群的差異。并且由于t-sne無法保證能保留距離較遠的簇的相對位置,我們也不能簡單通過圖中的位置來確定遠距離細胞簇之間的關系。相比之下,UMAP與t-SNE類似,同時在低維空間保留了高維空間細胞間的關系,因此UMAP更好的保留并反映了細胞群潛在的拓撲結構,對于細胞軌跡推斷(trajectory inference)分析來說更實用?[4]。
????????在下圖中,我們可以看到UMAP的可視化更趨向于一種緊湊的視覺效果,群簇之間的空間更大,也保留了更多的global structure,因此在選擇可視化圖中大家可以根據具體的需要來選擇。根據小編的實戰經驗,如果對軌跡推斷沒有要求,只是看細胞簇群,UMAP的效果會更干凈,但是在細胞數目非常大情況下,由于UMAP最大限度的保留了全局結構,這也使得每個簇群的分辨率降低,可能會使得簇群重疊,從而遮蓋一些小的簇群,而t-SNE通常能將所有簇群盡可能的“鋪開”,所以這種情況建議大家兩種都畫,然后比較一下。從速度方面來說,同一個數據UMAP的速度要比t-SNE快,這也是UMAP變得更受歡迎的重要原因。
常用的r 包以及方法有:
1.?Scater:: runTSNE(); Scater:: runUMAP()
2.?Seurat:: RunTSNE();?Seurat:: RunUMAP()
小編總結
對于數據降維處理可以主要歸納為兩方面,?總結(summarization?)和可視化(?visualization)[3]。pca可以作為一個總結目的,用來查看有沒有一些離群的細胞,它們有可能是一些低質量細胞,需要做進一步篩除。而t-sne和umap作為可視化工具,可以用來探索細胞群簇的關系,V信搜索:作圖丫,可獲取更多精彩內容。
參考文獻
1.?Seurat?pipeline,?https://satijalab.org/seurat/vignettes.html?.
2.?Kulkarni A, Anderson AG, Merullo DP, Konopka G. Beyond bulk: a review of single cell transcriptomics methodologies and applications.?Curr Opin Biotechnol. 2019;58:129-136. doi:10.1016/j.copbio.2019.03.001.
3.?Luecken MD, Theis FJ. Current best practices in single-cell RNA-seq analysis: a tutorial.?Mol Syst Biol. 2019;15(6):e8746. Published 2019 Jun 19. doi:10.15252/msb.20188746.
4.?Amezquita, R.A., Lun, A.T.L., Becht, E.?et al.?Orchestrating single-cell analysis with Bioconductor.?Nat Methods?17,?137–145 (2020). https://doi.org/10.1038/s41592-019-0654-x.