各位老師好,本期為大家?guī)韱渭?xì)胞轉(zhuǎn)錄組標(biāo)準(zhǔn)分析之降維聚類。
單細(xì)胞研究的重點(diǎn)就是對細(xì)胞進(jìn)行分群和鑒定,然而單細(xì)胞測序數(shù)據(jù)是一個高維的復(fù)雜數(shù)據(jù)陣列,通常涉及到龐大的細(xì)胞數(shù)量,以及每個細(xì)胞中的眾多基因。因此,面對復(fù)雜的數(shù)據(jù)陣列,在聚類之前,一般采用 PCA 方法進(jìn)行適度降維以降低計(jì)算量和噪音,然后用 Leiden 方法尋找降維空間中鄰近細(xì)胞網(wǎng)絡(luò)的模塊。最后,采用 tSNE 和 UMAP 兩種非線性降維方法分別對單細(xì)胞群聚類結(jié)果作可視化分析展示。
Q:如何進(jìn)行數(shù)據(jù)降維?
降維的過程其實(shí)就是去繁存簡,每個基因?qū)?xì)胞來講都是一個變化維度。數(shù)據(jù)特征維度太高,不但計(jì)算很麻煩,其次特征之間可能存在相關(guān)的情況 ,從而增加了問題的復(fù)雜程度,分析起來也不方便,所以需要盡可能保證真實(shí)差異的前提下減少維度的數(shù)量,PCA就是合理的方式之一,既可以減少需要分析的特征,也盡可能多的保留原來的數(shù)據(jù)信息。
步驟一:尋找高變基因
降維的過程依賴于基因表達(dá)量,因此挑選那些更能代表整體差異的基因進(jìn)行降維分析是非常關(guān)鍵的,一般來說如果一個基因在細(xì)胞群體中變化幅度很大,它就是受關(guān)注對象,我們會認(rèn)為是生物因素導(dǎo)致了這么大的差異,該基因即為高度變化基因(highly variable genes ,HVGs)。
Seurat包FindVariableFeatures函數(shù),會計(jì)算一個mean-variance結(jié)果,根據(jù)基因表達(dá)量方差和均值篩選,以此獲得高度可變的基因,一般默認(rèn)采用前2000個高變基因進(jìn)行后續(xù)降維分析。
高變基因示例圖
步驟二:降維
主成分分析 (PCA, principal component analysis)PCA的本質(zhì)是將n個特征減少到k個,保留那些對生物差異貢獻(xiàn)很大的特征。通過數(shù)據(jù)壓縮,減少后面分析會使用到的維度,減少分析難度的同時(shí)盡可能的保留原有數(shù)據(jù)的特征。
步驟三:選擇合適的PCs
利用Elbow Point進(jìn)行選擇。Elbow Point作圖后,一般選擇斜率平滑的點(diǎn)之前的所有PC軸,加起來差異累計(jì)過90%就可以接受,根據(jù)后面聚類的結(jié)果可以重復(fù)調(diào)整。每個PCs都能捕獲一些生物差異,而且前面的PC比后面的PC包含的差異信息更多,更有價(jià)值 。
細(xì)胞聚類目的是根據(jù)細(xì)胞中各個基因表達(dá)模式的相似性(或距離)將一組細(xì)胞劃分成具有生物學(xué)意義的亞群。Leiden算法是一種適用于scRNA-Seq數(shù)據(jù)集進(jìn)行細(xì)胞聚類的算法。
Leiden聚類算法原理圖
Leiden算法從單例分區(qū)(a)開始。該算法將單個節(jié)點(diǎn)從一個社區(qū)移動到另一個社區(qū),以找到合適的分區(qū)(b),然后對其進(jìn)行細(xì)化(c);诩(xì)化分區(qū)創(chuàng)建聚合網(wǎng)絡(luò)(d),使用非細(xì)化分區(qū)為聚合網(wǎng)絡(luò)創(chuàng)建初始分區(qū)。例如,(b)中的紅色社區(qū)被細(xì)化為(c)中的兩個子社區(qū),在聚合之后,它們成為(d)中兩個獨(dú)立的節(jié)點(diǎn),都屬于同一社區(qū)。然后,算法移動聚合網(wǎng)絡(luò)(e)中的各個節(jié)點(diǎn)。在這種情況下,細(xì)化不會改變分區(qū)(f)。重復(fù)這些步驟,直到無法進(jìn)行進(jìn)一步改進(jìn)。
聚類之后的可視化,目前主要有tSNE和UMAP。兩者都是在高維空間中尋找保持相鄰關(guān)系的低維表示方法。
Q:tSNE和UMAP的區(qū)別?怎么選擇?
一是計(jì)算高維距離時(shí),tSNE會計(jì)算所有點(diǎn)之間的距離,通過Perplexity(困惑度)參數(shù)調(diào)整全局結(jié)構(gòu)與局部結(jié)構(gòu)間的軟邊界,而UMAP則只計(jì)算各點(diǎn)與最近k個點(diǎn)之間的距離,嚴(yán)格限制局部的范圍;另一方面,兩種算法在對信息損失的計(jì)算方法不同,tSNE使用KL散度衡量信息損失,在全局結(jié)構(gòu)上存在失真的可能,而UMAP使用二元交叉熵,全局和局部結(jié)構(gòu)均有保留。目前兩種方法在文獻(xiàn)中均有使用,可根據(jù)實(shí)際情況來進(jìn)行選擇。
本期專題分享到這里就結(jié)束啦。感興趣的老師,請持續(xù)關(guān)注中科新生命10x 單細(xì)胞轉(zhuǎn)錄組常見Q&A,我們下期再見!