多样本单细胞分析时高变基因的选择途径

2024-03-30  本文已影响0人  生信云笔记

目 标

  单细胞分析目的和数据特征决定了分析的策略,数据分析选择高变基因而不是使用全部基因,为了达到以下几个主要目标:

  1. 提高信噪比
    单细胞数据中,很多基因的表达水平可能非常低,或者在大多数细胞中表达变化不大。这些低表达或低变异性的基因可能会引入噪声,干扰后续的数据分析。通过选择高变基因,可以专注于那些在细胞间表达差异显著的基因,从而提高数据分析的信噪比。

  2. 突出生物学差异
    高变基因往往与细胞的功能状态、身份或它们所处的生物学过程密切相关。选择这些基因有助于揭示细胞间的生物学差异,而不是被大量表达水平相似的基因所掩盖。

  3. 降低计算复杂性
    使用全部基因进行分析会大大增加计算的复杂性和所需的计算资源。单细胞数据集通常包含成千上万的基因,而实际对细胞分类和功能分析有用的基因数量可能只是其中的一部分。通过选择高变基因,可以显著减少需要处理的数据量,从而加快计算速度并降低计算成本。

途 径

  寻找高变基因的方法不少,比如基于方差计算的离散度来筛选,不同方法之间寻找到的高变基因肯定会有差别,这意味着可能会造成下游分析的误差。关于方法网上有人分享过,这里就不做讨论了,说一说萦绕心里的另一个问题,多样本分析时,应该如何选择高变基因,每个样本单独选择还是合并后一起寻找?

合并寻找

import scanpy as sc

sc.pp.highly_variable_genes(adata, min_disp=0.5, max_disp=inf, min_mean=0.0125, max_mean=3,flavor="seurat_v3")

scanpy选择高变基因可以直接设定绝对数量或者根据阈值来确定基因,即设定n_top_genes参数或者min_dispmax_dispmin_meanmax_mean参数。后者为启发式的方法具有数据敏感性,注意由阈值选择出来的高变基因可能会出现数量较少代表性不好的情况。

单独寻找

adata.var['highly_variable'] = False
for sname in adata.obs['sample'].unique():
    adata_tmp = adata[adata.obs['sample'].isin([sname]), :]
    sc.pp.highly_variable_genes(adata_tmp, min_disp=0.5, max_disp=inf, min_mean=0.0125, max_mean=3)
    hvg_list = list(adata_tmp.var_names[adata_tmp.var['highly_variable']])
    adata.var.loc[hvg_list, 'highly_variable'] = True

  高变基因的选择方式肯定会对后续的分析产生影响,但影响有多大却很难一语而论。也许大部分情况下影响并不大,毕竟条条大路通罗马;也许根据实际情况选择一个好的方式,可以得到更符合逻辑的结果。

上一篇 下一篇

猜你喜欢

热点阅读