单细胞RNA-seq生信分析全流程

单细胞RNA-seq生信分析全流程——第七篇:降维

2023-10-09  本文已影响0人  小鱼爸

7. 降维Dimensionality Reduction

如前所述,scRNA-seq是一种高通量测序技术,可生成高维度细胞和基因数量的数据集。
并非所有基因都具有信息性,并且对基于其表达谱的细胞类型聚类很重要。我们的目标是通过特征选择来降低数据的维度,下一步可以通过降维算法进一步降低单细胞RNA-seq数据的维度。这些算法是预处理过程中降低数据复杂性和可视化的重要步骤。几种降维技术已被开发并用于单细胞数据分析。


降维将高维数据嵌入到低维空间中。低维表示仍然捕获数据的底层结构,同时具有尽可能少的维度。在这里,我们将一个三维物体想象成二维。

一般来说建议使用t-distributed stochastic neighbor embedding(t-SNE),因为它能产生最佳的整体性能。Uniform manifold approximation and projection(UMAP)显示出最高的稳定性并能最好地分离原始细胞群。在这方面值得一提的另一个降维方法是主成分分析(PCA),它仍然被广泛使用。
一般来说,如果选择了特定的初始化选项,t-SNE和UMAP非常稳健,并且基本上是等效的。
所有上述方法均可在scanpy中实现。

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",
)

我们将使用数据集的归一化结果来进行降维和可视化。

adata.X = adata.layers["log1p_norm"]

7.1 PCA

PCA通过原始数据集的正交变换创建一组新的不相关变量,即所谓的主成分(PC)。PC是原始数据集中特征的线性组合,并按方差降序排列以定义变换。通过排序,通常第一个PC成分的方差可能最大。去除方差最低的PC,以有效降低数据的维数而不丢失信息。
PCA具有高度可解释性和计算效率的优点。然而,由于scRNA-seq数据集是高度非线性,因此使用线性降维技术PCA进行可视化并不是很合适。PCA通常用于选择前10-50个PC,用于下游分析任务。

# 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是一种基于图的非线性降维技术,可将高维数据投影到2D或3D组件上。该方法基于数据点之间的高维欧几里得距离定义高斯概率分布。随后,使用Student t-distribution在低维空间中重新创建概率分布,使用梯度下降来优化嵌入。

sc.tl.tsne(adata, use_rep="X_pca")
sc.pl.tsne(adata, color="total_counts")

7.3 UMAP

UMAP是一种基于图的非线性维度技术,主要类似于t-SNE。它构建数据集的高维图表示,并优化低维图表示,使其在结构上尽可能与原始图相似。
我们首先计算 PCA,然后计算数据的邻域图。

sc.pp.neighbors(adata)
sc.tl.umap(adata)
sc.pl.umap(adata, color="total_counts")

7.4 检查质量控制指标

我们现在还可以检查之前在PCA、t-SNE或UMAP图中计算的质量控制指标,并可能识别低质量细胞。

sc.pl.umap(
    adata,
    color=["total_counts", "pct_counts_mt", "scDblFinder_score", "scDblFinder_class"],
)

正如我们所观察到的,具有高双峰得分的细胞被投影到UMAP中的同一区域。我们暂时将它们保留在数据集中,但之后我们会进行新的质量控制策略调整

adata.write("s4d8_dimensionality_reduction.h5ad")
上一篇 下一篇

猜你喜欢

热点阅读