You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Seurat设置resolution=0却得到2个聚类的原因排查问询

Seurat单细胞聚类resolution=0返回2个聚类的原因与运行机制

Seurat的聚类分为近邻图构建、社区检测两个核心步骤,对应你运行的FindNeighbors和FindClusters函数,resolution=0未返回1个聚类的核心原因和运行逻辑如下:

核心运行机制

  • FindNeighbors会基于你指定的1:40 PCA维度计算细胞间的欧氏距离,构建k近邻图,再通过Jaccard相似度计算边权重,最终生成稀疏邻接矩阵。如果两类细胞的转录组差异足够大,两类之间不存在任何一对细胞互为k近邻,那么邻接图会天然存在两个互不连通的独立子图(连通分量)。
  • FindClusters默认使用Louvain社区检测算法,resolution参数用于调整模块度的惩罚权重,控制聚类粒度。当resolution设置为0时,算法仅会合并同一个连通分量内的节点,不会跨独立的连通分量强制合并细胞,因此邻接图存在多少个连通分量,最终最少就会返回多少个聚类,而非强制输出1个。

其他可能的触发原因

  • 算法参数差异:若你调整过FindClusters的algorithm参数,使用SLM、Leiden等其他社区检测算法,部分版本的算法实现中resolution=0的行为和标准Louvain算法存在差异,也可能出现多聚类结果。
  • 近邻图参数设置问题:FindNeighbors的k.param(默认20)设置过小,会导致差异稍大的细胞群之间无法生成跨群的近邻边,更容易生成多个独立连通分量。

验证方法

你可以通过如下代码确认是否为邻接图连通性问题:

library(igraph)
# 提取RNA模态的近邻图
nn_graph <- gc1.1@graphs$RNA_nn
# 转换为igraph对象
g <- graph_from_adjacency_matrix(nn_graph, mode = "undirected", weighted = TRUE)
# 统计连通分量数量
count_components(g)

如果返回值为2,即可确认是邻接图存在两个独立连通分量导致的问题,可通过调大FindNeighbors的k.param参数后重新运行聚类,即可在resolution=0时得到1个聚类。

内容的提问来源于stack exchange,提问作者ksp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:45:03