單細(xì)胞測(cè)序-scRNA-seq數(shù)據(jù)的降維和可視化

在scRNA-seq數(shù)據(jù)通過(guò)一些列的預(yù)處理,質(zhì)控以及標(biāo)準(zhǔn)化之后,后續(xù)分析步驟需要通過(guò)識(shí)別細(xì)胞間的基因表達(dá)差異來(lái)進(jìn)行聚類(lèi),?分析不同細(xì)胞群的差異性。這就涉及到了單細(xì)胞RNA數(shù)據(jù)處理中的特征選擇,降維以及如何使數(shù)據(jù)可視化。


數(shù)據(jù)降維的必要性


????????如果將單個(gè)細(xì)胞看作一個(gè)數(shù)據(jù)點(diǎn),那么檢測(cè)的基因數(shù)就是其對(duì)應(yīng)的變量數(shù),也就是我們所說(shuō)的維數(shù)。一般一個(gè)人類(lèi)scrna-seq?能檢測(cè)到~25k基因,于是基因表達(dá)數(shù)據(jù)也被稱(chēng)為高維數(shù)據(jù)。我們知道, 并不是所有的基因都會(huì)表達(dá),并且由于單細(xì)胞測(cè)序技術(shù)的限制,不是所有的轉(zhuǎn)錄分子都能被成功捕獲,再加上測(cè)序深度的差異, 每個(gè)細(xì)胞中約能檢測(cè)到10%~50%的轉(zhuǎn)錄分子,這導(dǎo)致了許多基因計(jì)數(shù)為0.?雖然通過(guò)數(shù)據(jù)的預(yù)處理我們能過(guò)濾掉零計(jì)數(shù)基因,剩下的基因維數(shù)仍然可以高達(dá)~15k。并且基因之間的高度相關(guān)性也使得表達(dá)數(shù)據(jù)包含了許多冗余信息, 從而掩蓋了真正的生物學(xué)差異。因此,我們需要通過(guò)降維抽取數(shù)據(jù)的概要(component),減少數(shù)據(jù)噪音,并提高下游分析速度。降維的另外一個(gè)好處就是可以在低維中實(shí)現(xiàn)數(shù)據(jù)的可視化。



特征選擇?(feature selection)


????????在scRNA-seq中常見(jiàn)的降維第一步是特征選擇?(feature selection)。在很多pipeline中,會(huì)用feature來(lái)指代基因。在不同細(xì)胞之間,由于大部分的細(xì)胞表達(dá)是類(lèi)似的,只有少數(shù)基因表達(dá)產(chǎn)生差異,特征選擇的目的是篩選出高度可變基因(highly variable genes),用來(lái)代表數(shù)據(jù)的主要差異性。一般會(huì)選擇1k~5k個(gè)基因,具體數(shù)目根據(jù)數(shù)據(jù)的復(fù)雜性而有所不同。在實(shí)際操作中,如果已知樣本包含多種細(xì)胞亞型,如免疫細(xì)胞,我們建議大家盡量提高特征數(shù)目。


????????一種簡(jiǎn)單的特征選擇方法是對(duì)每個(gè)基因基于其在所有細(xì)胞中的平均表達(dá)值來(lái)分組,每組中具有最高variance-to-mean ratio的基因被選為高度可變基因。單細(xì)胞分析中常用的r

R包Seurat就是使用這種方法,Seurat:: FindVariableFeatures()。

Adapted?from?Seurat?pipeline,?https://satijalab.org/seurat/vignettes.html?[1].?


降維?(Dimensionality reduction


????????在特征選擇之后,可以通過(guò)降維算法對(duì)高度可變基因的表達(dá)矩陣維數(shù)進(jìn)一步壓縮,常見(jiàn)的降維方法有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]。

Adapted?from?Figure?4, Luecken et al., [3].


????????大家對(duì)于PCA應(yīng)該都不陌生,它通過(guò)基因線性組合來(lái)捕獲數(shù)據(jù)方差,?在實(shí)現(xiàn)方差最大化的同時(shí)實(shí)現(xiàn)降維。根據(jù)定義,前幾個(gè)top?成分捕獲了數(shù)據(jù)的主要差異,我們可以通過(guò)將下游分析限制在top?PC上來(lái)進(jìn)行降維,?這些top PC在低維構(gòu)建了一個(gè)原始數(shù)據(jù)的最佳近似值。PCA應(yīng)用于scRNA-seq數(shù)據(jù)時(shí),我們的前提假設(shè)是生物過(guò)程是通過(guò)影響多個(gè)基因,以協(xié)調(diào)的方式來(lái)實(shí)現(xiàn)的。這也意味著,通過(guò)考慮多個(gè)基因的相關(guān)行為,可以捕獲更多的差異,從而使得top PC盡可能的代表生物學(xué)結(jié)構(gòu)。當(dāng)然,PCA采用的線性組合方式也帶來(lái)一個(gè)缺點(diǎn),就是主成分自身的生物學(xué)意義很難解釋。?理想情況下,我們希望降維后每個(gè)每個(gè)維度都能對(duì)應(yīng)一個(gè)生物學(xué)結(jié)構(gòu),?但大多數(shù)時(shí)候是很難對(duì)應(yīng)上。盡管如此,PCA方法的簡(jiǎn)單高效使其在scRNA-seq中得到了廣泛使用。通常我們會(huì)使用PCA來(lái)進(jìn)行一般性總結(jié),?特別是用來(lái)查看有沒(méi)有一些outlier cells,可能是在預(yù)處理時(shí)漏掉的low quality cells。

常用的R包以及方法有:

1.?Scater::runpca()

2.?Seurat::RunPCA()


????????那么我們應(yīng)該如何選擇主成分的個(gè)數(shù)呢?選擇的PC越多,越能避免漏掉生物學(xué)信號(hào),而代價(jià)就是可能引入更多的噪音。很多時(shí)候,大家會(huì)選擇一個(gè)“合理”的任意值,通常在10~50?之間。?我們可以通過(guò)多次嘗試來(lái)選到一個(gè)滿意的數(shù)值。?除此之外,還有一些data-driven的方法來(lái)幫助我們選擇, 例如下圖中的elbow plot, 通過(guò)比較列出不同pc對(duì)應(yīng)的方差百分比來(lái)選擇曲線中的拐點(diǎn)elbow point作為“最佳”pc值。這個(gè)策略基于的假設(shè)是,捕獲生物學(xué)信號(hào)的每個(gè)top PC都應(yīng)比剩余的pc解釋更多的variance,因此當(dāng)我們?cè)竭^(guò)“最佳”?PC點(diǎn)時(shí),其包含的方差百分比會(huì)急劇下降,形成一個(gè)明顯的拐點(diǎn),?如下圖中的PC=10。在實(shí)際的操作中,拐點(diǎn)有可能不是非常的明確,特別是如果對(duì)下游的聚類(lèi)效果不太滿意時(shí),可以回來(lái)調(diào)節(jié)一下pc值,看看結(jié)果會(huì)不會(huì)有顯著的變化。

常用的r 包以及方法有:

1.?PCAtools::findElbowPoint()

2.?Seurat:: ElbowPlot()

Adapted?from?Seurat?pipeline?[1].??

????????t-SNE和UMAP是另外兩種非線性的降維方法,由于其漂亮的可視化效果,這兩種方法在單細(xì)胞數(shù)據(jù)教程中非常受歡迎。與PCA不同,這兩種方法不僅限于線性變換,也不受制于準(zhǔn)確表示遠(yuǎn)距離種群之間的距離,因此使得它們?cè)诘臀豢臻g如何對(duì)細(xì)胞進(jìn)行排列具有更大的自由度,從而在其二維的可視化效果圖中能夠?qū)?fù)雜的細(xì)胞群分成許多不同的簇,使得效果圖比PCA更加直觀和容易解釋。

????????t-SNE是以犧牲整體結(jié)構(gòu)(global structure)為代價(jià),著重于捕獲局部結(jié)構(gòu)(local similarly),因此它可能會(huì)夸大細(xì)胞群體之間的差異而忽略群體之間的潛在聯(lián)系。如果簡(jiǎn)單的通過(guò)t-SNE結(jié)果圖來(lái)解讀細(xì)胞簇之間的關(guān)系,產(chǎn)生的結(jié)論可能會(huì)被圖中的集群大小和位置所誤導(dǎo)。在效果圖中,t-SNE傾向于將密集的簇膨脹,并且壓縮稀疏的簇,因此我們不能簡(jiǎn)單的通過(guò)圖上的大小來(lái)衡量細(xì)胞群的差異。并且由于t-sne無(wú)法保證能保留距離較遠(yuǎn)的簇的相對(duì)位置,我們也不能簡(jiǎn)單通過(guò)圖中的位置來(lái)確定遠(yuǎn)距離細(xì)胞簇之間的關(guān)系。相比之下,UMAP與t-SNE類(lèi)似,同時(shí)在低維空間保留了高維空間細(xì)胞間的關(guān)系,因此UMAP更好的保留并反映了細(xì)胞群潛在的拓?fù)浣Y(jié)構(gòu),對(duì)于細(xì)胞軌跡推斷(trajectory inference)分析來(lái)說(shuō)更實(shí)用?[4]。

????????在下圖中,我們可以看到UMAP的可視化更趨向于一種緊湊的視覺(jué)效果,群簇之間的空間更大,也保留了更多的global structure,因此在選擇可視化圖中大家可以根據(jù)具體的需要來(lái)選擇。根據(jù)小編的實(shí)戰(zhàn)經(jīng)驗(yàn),如果對(duì)軌跡推斷沒(méi)有要求,只是看細(xì)胞簇群,UMAP的效果會(huì)更干凈,但是在細(xì)胞數(shù)目非常大情況下,由于UMAP最大限度的保留了全局結(jié)構(gòu),這也使得每個(gè)簇群的分辨率降低,可能會(huì)使得簇群重疊,從而遮蓋一些小的簇群,而t-SNE通常能將所有簇群盡可能的“鋪開(kāi)”,所以這種情況建議大家兩種都畫(huà),然后比較一下。從速度方面來(lái)說(shuō),同一個(gè)數(shù)據(jù)UMAP的速度要比t-SNE快,這也是UMAP變得更受歡迎的重要原因。

常用的r 包以及方法有:

1.?Scater:: runTSNE(); Scater:: runUMAP()

2.?Seurat:: RunTSNE();?Seurat:: RunUMAP()

Figure?3?from?[2].


小編總結(jié)


對(duì)于數(shù)據(jù)降維處理可以主要?dú)w納為兩方面,?總結(jié)(summarization?)和可視化(?visualization)[3]。pca可以作為一個(gè)總結(jié)目的,用來(lái)查看有沒(méi)有一些離群的細(xì)胞,它們有可能是一些低質(zhì)量細(xì)胞,需要做進(jìn)一步篩除。而t-sne和umap作為可視化工具,可以用來(lái)探索細(xì)胞群簇的關(guān)系,V信搜索:作圖丫,可獲取更多精彩內(nèi)容。

參考文獻(xiàn)

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.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容