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

Seurat对象按条件、细胞类型分层随机抽样实现方案咨询

Seurat对象双分组分层抽样实现方案

核心实现逻辑

不需要手动拆分分组,仅通过对Seurat元数据做分组抽样得到待保留细胞ID,直接子集化原对象即可完成操作,天然兼容「组内细胞数≥1000抽1000,不足则保留全部」的需求,无需额外错误捕获。

操作步骤

  • 加载依赖包
    用到Seurat和dplyr两个包,代码如下:
    library(Seurat)
    library(dplyr)
    
  • 生成待保留的细胞ID列表
    直接对Seurat的元数据按condition和细胞类型列分组,抽样时取组内细胞数和1000的较小值作为抽样量:
    # 可选:设置随机种子保证抽样结果可复现
    set.seed(123)
    
    # 替换代码中的cell_type为你实际的细胞类型元数据列名
    keep_cells <- seurat_obj@meta.data %>%
      group_by(condition, cell_type) %>%
      slice_sample(n = min(n(), 1000)) %>%
      rownames()
    
  • 子集化原Seurat对象得到抽样后的结果
    seurat_sampled <- seurat_obj[, keep_cells]
    

原方案报错原因说明

此前手动拆分分组后抽样报错,是因为抽样函数的size参数传入了大于组内实际细胞数的数值,本方案用min(n(), 1000)直接适配了组内细胞数不足的边界场景,无需额外调用tryCatch做错误处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:06:01