Skip to main content

识别单细胞数据集中的信息基因(和基因模块)。

项目描述

构建状态

热点

Hotspot 是一种用于在单细胞数据集中识别信息基因(和基因模块)的工具。

重要的是,“信息量”是根据基因变异与某些细胞指标的吻合程度来决定的——细胞之间的一些相似性映射。

信息丰富的基因是那些在给定度量中附近的细胞中表达以相似方式变化的基因。

度量的选择允许您评估不同类型的基因模块:

  • 空间:对于空间单细胞数据集,您可以通过物理 2D/3D 空间中的接近度来定义细胞相似性。以这种方式设置后,Hotspot 可用于识别空间变化的基因
  • 血统:对于具有血统追踪系统的单细胞数据集,您可以推断细胞发育血统并将其用作细胞指标。然后热点可用于识别基因表达的可遗传模式。
  • 转录:降维过程的结果可用于创建相似性度量。通过这种配置,Hotspot 可以识别具有局部相关性的基因模块。这对于解释非线性降维过程中的变化轴特别有用,其中成分和基因之间的映射不容易评估。

例子

其他链接

安装

Hotspot 使用以下命令直接从 PyPI 安装:

pip install hotspotsc

热点可以导入为

import hotspot

从 v1.0 开始,Hotspot 使用AnnData数据对象。如果您想使用旧版本的 Hotspot,那么:

pip install hotspotsc==0.9.1

可以在此处找到该版本的旧文档,但仍将进行安装pip install hotspotsc==0.9.1

v0.9.1 的旧初始化现已移至hotspot.Hotspot.legacy_init,请参阅文档以了解使用情况。

用法

在 Hotspot 中分析数据时使用以下步骤:

  1. 创建热点对象
  2. 计算 KNN 图
  3. 查找信息基因(通过基因自相关)
  4. 评估成对基因关联(基因局部相关性)
  5. 将基因分组到模块中
  6. 计算每个单元模块的汇总分数

在这里,我们按顺序描述每个步骤:

创建热点对象

要开始分析,首先创建热点对象 创建对象时,需要指定:

  • 基因计数矩阵
  • 使用哪种基因表达背景模型
  • 用于评估细胞相似性的度量空间
  • 每细胞比例因子
    • 默认情况下,使用每个单元格的 umi 数量

例如:

import hotspot
hs = hotspot.Hotspot(
    adata,
    layer_key="counts",
    model='danb',
    latent_obsm_key="X_pca",
    umi_counts_obs_key="total_counts"
)

在上面的例子中:

  • adata是由基因组成的细胞的AnnData对象
  • layer_keyadata包含计数信息的层
  • model'danb' 选择 umi 调整的负二项式模型
  • latent_obsm_key是包含 Cells x Components 矩阵的.obsm关键(PCA-reduced 空间)adata
  • umi_counts_obs_key是每个单元格的 UMI 计数的.obs关键adata

“模型”的替代选择

假设没有相关性,该模型用于拟合每个基因的每个细胞的预期。在评估自相关和基因-基因局部相关性时,这被用作空模型。选择是:

  • danb :来自M3Drop的“深度调整负二项式”(又名 NBDisp 模型)
  • bernoulli:这里只估计每个基因的检测概率。基因箱的逻辑回归用于评估每个基因和每个细胞作为细胞umi_count值的函数。
  • normal:这里假设表达式值是正态分布的,并按umi_count.
  • none:使用此选项,假定值是预先标准化的

选择不同的指标

上面我们用作latent_obsm_key输入选项。这假设细胞位于 N 维空间中,并且通过计算该空间中的欧几里德距离来评估细胞之间的相似性。可以在此处输入降维或建模过程的结果,或者在处理空间数据时输入每个单元的坐标。

latent_obsm_key或者,您可以指定tree或代替distances_obsp_key

tree用于发育谱系。在这种形式中,tree应该是一个ete3.TreeNode表示树根的对象,每个单元格都作为它的叶子。这可以通过编程方式构建(有关详细信息,请参阅 ete3 的文档),或者如果您的血统以 Newick 文件格式存储,您可以通过运行将其加载到 ete3.TreeNode 对象中ete3.Tree('my_newick.txt')。注意:树中的叶节点必须具有与输入中的列标签匹配的名称counts(例如,单元格条形码)。

distances_obsp_key用于直接指定单元格之间的距离。输入的值应该是 中的 Cells x Cells 矩阵adata.obsp

计算 KNN 图

K-最近邻图通过运行计算:

hs.create_knn_graph(weighted_graph=False, n_neighbors=30)

输入选项:

  • weighted_graph: bool,图形是否具有权重(按单元格距离缩放)还是二进制
  • n_neighbors:要使用的每个单元格的邻居数。较大的邻域大小可以导致对相关性和自相关性的检测更加稳健,但代价是会丢失更细粒度、更小规模的模式并增加运行时间
  • neighborhood_factor: 浮动,当weighted_graph=True. 权重与到第 th 个邻居exp(-distance^2/distance_N^2)distance_N距离成比例衰减。n_neighbors/neighborhood_factor

通常,在大多数情况下,上述默认值应该没问题。

查找信息基因(通过基因自相关)

要计算每个基因的自相关,请运行:

hs_results = hs.compute_autocorrelations()

可以指定一个可选参数jobs来调用并行作业以在多核机器上加速。

输出是一个 pandas DataFrame(也保存在 中hs.results):

基因 C Z 聚乙烯醇 罗斯福
ENSG00000139644 0.069 10.527 3.21e-26 7.45e-25
ENSG00000179218 0.071 10.521 3.43e-26 7.93e-25
ENSG00000196139 0.081 10.517 3.59e-26 8.28e-25
ENSG00000119801 0.062 10.515 3.68e-26 8.48e-25
ENSG00000233355 0.058 10.503 4.15e-26 9.55e-25
... ... ... ... ...

列是:

  • C: 比例 -1:1 自相关系数
  • Z:自相关的 Z 分数
  • Pval: 从 Z 分数计算的 P 值
  • FDR:使用 Benjamini-Hochberg 程序的 Q 值

评估成对基因关联(基因局部相关性)

要将基因分组到模块中,我们需要首先评估它们的成对局部相关性

与常规相关性相比,这些“局部”相关性还考虑了其​​中一个基因 X 在地图中“靠近”另一个基因 Y 的表达的关联。这可以更好地解决稀疏检测到的基因之间的相关性。

hs_genes = hs_results.loc[hs_results.FDR < 0.05].index # Select genes

local_correlations = hs.compute_local_correlations(hs_genes, jobs=4) # jobs for parallelization

在这里,我们仅在基因子集上运行,因为评估所有成对相关性在计算上非常昂贵。自相关排序为我们提供了一种自然的方法来为此目的选择信息基因。

输出是基因之间的局部相关值的 Z 分数的基因 x 基因熊猫 DataFrame。输出也存储在hs.local_correlation_z.

将基因分组到模块中

现在计算了成对的局部相关性,我们可以将基因分组到模块中。

为此,包含了create_modules一种执行凝聚聚类的便捷方法。

modules = hs.create_modules(
    min_gene_threshold=30, core_only=True, fdr_threshold=0.05
)

关于论点的注释 - 凝聚聚类通过将具有最高成对 Z 分数的基因连接在一起进行,并具有以下注意事项:

  • 如果两个分支之间相关性的 FDR 调整 p 值超过fdr_threshold,则不合并分支。
  • 如果两个分支是两个被合并的并且它们都至少有min_gene_threshold基因,那么分支不被合并。进一步的基因将加入到合并后的模块中,基因之间的平均相关性更小,即最不密集的模块(如果core_only=False

此方法用于保留子结构(嵌套模块),同时仍为分析人员提供一些控制。但是,由于有很多方法可以进行层次聚类,您也可以使用中的基因距离手动聚类hs.local_correlation_z

输出是一个将基因映射到模块编号的熊猫系列。未分配的基因用模块号表示-1。输出也存储在hs.modules

相关模块可以通过运行来可视化hs.plot_local_correlations()

局部相关图

计算每个单元模块的汇总分数

最后,可以为模块计算每个单元格的汇总分数。这对于可视化模块中基因的一般表达模式很有用。

module_scores = hs.calculate_module_scores()

输出是一个 pandas DataFrame (cells x modules),也保存在hs.module_scores

module_scores

1 2 3 4 5
AAACCCAAGGCCTAGA-1 0.785 -2.475 -1.407 -0.681 -1.882
AAACCCAGTCGTGCCA-1 -5.76 5.241 6.931 1.928 4.317
AAACCCATCGTGCATA-1 -2.619 3.572 0.143 1.832 1.585
AAACGAAGTAATGATG-1 -8.778 4.012 6.927 1.181 3.882
AAACGCTCATGCACTA-1 2.297 -2.517 -1.421 -1.102 -1.547
... ... ... ... ... ...

然后可以将这些绘制到细胞的其他视觉表示上。例如,对于空间模块(来自Rodriques et al, 2019中的数据),这看起来像:

空间基因模块

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

hotspotsc-1.1.1.tar.gz (28.6 kB 查看哈希)

已上传 source

内置分布

Hotspotsc-1.1.1-py3-none-any.whl (27.6 kB 查看哈希

已上传 py3