7. 降維Dimensionality Reduction
如前所述铣除,scRNA-seq是一種高通量測(cè)序技術(shù),可生成高維度細(xì)胞和基因數(shù)量的數(shù)據(jù)集尚粘。
并非所有基因都具有信息性择卦,并且對(duì)基于其表達(dá)譜的細(xì)胞類型聚類很重要郎嫁。我們的目標(biāo)是通過(guò)特征選擇來(lái)降低數(shù)據(jù)的維度,下一步可以通過(guò)降維算法進(jìn)一步降低單細(xì)胞RNA-seq數(shù)據(jù)的維度行剂。這些算法是預(yù)處理過(guò)程中降低數(shù)據(jù)復(fù)雜性和可視化的重要步驟钳降。幾種降維技術(shù)已被開(kāi)發(fā)并用于單細(xì)胞數(shù)據(jù)分析。
一般來(lái)說(shuō)建議使用t-distributed stochastic neighbor embedding(t-SNE),因?yàn)樗墚a(chǎn)生最佳的整體性能哆窿。Uniform manifold approximation and projection(UMAP)顯示出最高的穩(wěn)定性并能最好地分離原始細(xì)胞群。在這方面值得一提的另一個(gè)降維方法是主成分分析(PCA)挚躯,它仍然被廣泛使用强衡。
一般來(lái)說(shuō)码荔,如果選擇了特定的初始化選項(xiàng),t-SNE和UMAP非常穩(wěn)健缩搅,并且基本上是等效的。
所有上述方法均可在scanpy中實(shí)現(xiàn)硼瓣。
import scanpy as sc
sc.settings.verbosity = 0
sc.settings.set_figure_params(
dpi=80,
facecolor="white",
frameon=False,
)
adata = sc.read(
filename="s4d8_feature_selection.h5ad",
backup_url="https://figshare.com/ndownloader/files/40016014",
)
我們將使用數(shù)據(jù)集的歸一化結(jié)果來(lái)進(jìn)行降維和可視化眉尸。
adata.X = adata.layers["log1p_norm"]
7.1 PCA
PCA通過(guò)原始數(shù)據(jù)集的正交變換創(chuàng)建一組新的不相關(guān)變量,即所謂的主成分(PC)霉祸。PC是原始數(shù)據(jù)集中特征的線性組合,并按方差降序排列以定義變換袱蜡。通過(guò)排序,通常第一個(gè)PC成分的方差可能最大坪蚁。去除方差最低的PC,以有效降低數(shù)據(jù)的維數(shù)而不丟失信息敏晤。
PCA具有高度可解釋性和計(jì)算效率的優(yōu)點(diǎn)贱田。然而嘴脾,由于scRNA-seq數(shù)據(jù)集是高度非線性,因此使用線性降維技術(shù)PCA進(jìn)行可視化并不是很合適译打。PCA通常用于選擇前10-50個(gè)PC耗拓,用于下游分析任務(wù)奏司。
# setting highly variable as highly deviant to use scanpy 'use_highly_variable' argument in sc.pp.pca
adata.var["highly_variable"] = adata.var["highly_deviant"]
sc.pp.pca(adata, svd_solver="arpack", use_highly_variable=True)
sc.pl.pca_scatter(adata, color="total_counts")
7.2 t-SNE
t-SNE是一種基于圖的非線性降維技術(shù),可將高維數(shù)據(jù)投影到2D或3D組件上韵洋。該方法基于數(shù)據(jù)點(diǎn)之間的高維歐幾里得距離定義高斯概率分布。隨后搪缨,使用Student t-distribution在低維空間中重新創(chuàng)建概率分布,使用梯度下降來(lái)優(yōu)化嵌入勉吻。
sc.tl.tsne(adata, use_rep="X_pca")
sc.pl.tsne(adata, color="total_counts")
7.3 UMAP
UMAP是一種基于圖的非線性維度技術(shù),主要類似于t-SNE齿桃。它構(gòu)建數(shù)據(jù)集的高維圖表示惑惶,并優(yōu)化低維圖表示短纵,使其在結(jié)構(gòu)上盡可能與原始圖相似。
我們首先計(jì)算 PCA香到,然后計(jì)算數(shù)據(jù)的鄰域圖鱼冀。
sc.pp.neighbors(adata)
sc.tl.umap(adata)
sc.pl.umap(adata, color="total_counts")
7.4 檢查質(zhì)量控制指標(biāo)
我們現(xiàn)在還可以檢查之前在PCA、t-SNE或UMAP圖中計(jì)算的質(zhì)量控制指標(biāo)千绪,并可能識(shí)別低質(zhì)量細(xì)胞。
sc.pl.umap(
adata,
color=["total_counts", "pct_counts_mt", "scDblFinder_score", "scDblFinder_class"],
)
正如我們所觀察到的荸型,具有高雙峰得分的細(xì)胞被投影到UMAP中的同一區(qū)域。我們暫時(shí)將它們保留在數(shù)據(jù)集中瑞妇,但之后我們會(huì)進(jìn)行新的質(zhì)量控制策略調(diào)整稿静。
adata.write("s4d8_dimensionality_reduction.h5ad")