数据整理:先看清数据,再确定分析范围

1. 这一步在做什么

.h5ad 是单细胞分析常用的数据文件。表达数据、细胞信息和已算好的结果,通常都在这个文件里。

常见位置 里面是什么
.X、.layers、.raw 基因表达数据。行是细胞,列是基因
obs 细胞信息表。每行是一个细胞,每列是一项标签
var 基因信息表。每行是一个基因
obsm PCA、UMAP 等结果中,每个细胞的坐标
uns 参数、颜色和其他补充信息

先看懂 obs。它大致像下面这样:

细胞 sample donor batch condition cell_type
cell_001 S1 D1 B1 tumor T cell
cell_002 S1 D1 B1 tumor Myeloid
cell_003 S2 D2 B2 normal B cell

这是结构示意,不是本案例的真实标签。

每一行代表一个细胞。sample 是样本,donor 是供体或患者,batch 是技术批次,condition 是实验分组,cell_type 是已有细胞标签。

2. 直接看一个真实案例

本案例使用 Shi 等发表于 Nature 的人类健康泛组织单细胞图谱。它整合 35 种人体组织和 706 个健康样本。查看论文原文,或从 Zenodo 数据下载页获取数据。

原始文件是 igt_s9_fine_counts.h5ad,约 9.9 GB。它是健康泛组织数据,不是泛癌肿瘤数据。先检查文件,再选 6 个 dataset,生成较小的演示子集。

2.1 先只读检查

先让 omicOS 只读查看数据,不修改原文件。

用户要求 omicOS 只读检查 h5ad 数据

这样问:

请只读检查:
<你的 h5ad 文件路径>
不要修改原文件。

请汇总:
1. 数据规模和物种;
2. 表达数据是 counts 还是 lognorm;
3. obs 中的样本、供体和批次相关字段;
4. 已有标签。

最后告诉我:
进入预处理前还需要确认什么。

omicOS 返回数据规模、表达形式和 obs 字段概览。

omicOS 返回原始数据的规模、表达形式和 obs 字段

原始文件有 2,293,951 个细胞、21,812 个基因。点击图片可查看完整汇总。

截图中的“泛癌 / 泛组织图谱”是当时尚未核对来源时的初步表述。现在已确认它是健康泛组织图谱。

图中把 donorID 列为批次校正候选。这里要谨慎:donor 首先代表生物学个体,不能默认当成技术批次。批次处理使用哪一列,要结合实验设计决定。

关键信息:

要确认的内容 本案例结果
物种 根据 HGNC 风格的基因名,判断为人类数据
数据规模 2,293,951 个细胞,21,812 个基因
表达形式 根据抽样表达值和文件结构,判断 .X 为 raw UMI counts
数据来源 26 个 cohort、33 个 dataset
生物学个体 317 个 donor、706 个 sample
组织和平台 35 种 tissue、6 类 platform
已有标签 compartment、majorCluster、ann1/2/3、cellType1/2、subCluster 等

两个边界:

  • “人类”是根据基因命名判断的,最好再与数据说明核对;
  • “counts”来自表达值抽样和文件结构判断,不等于逐个检查了 229 万个细胞的全部数值。

2.2 把筛选要求说清楚

当时任务把这份数据误称为“泛癌”。核对来源后,这样描述筛选任务:

从这份健康泛组织图谱中筛选部分数据,
最终保证总细胞数在 20 万以内,输出 h5ad。
请给个筛选方案。

最终我希望只保留 6 个 dataset,
每个至少 3 个样本。

三个可检查的条件:

  1. 只保留 6 个 dataset;
  2. 每个 dataset 至少有 3 个样本;
  3. 总细胞数不超过 20 万。

omicOS 给出三套方案:

方案 大致思路 细胞数 取舍
A 选择 6 种组织,对大型 dataset 分层下采样 约 176,000 组织较均衡,但会抽掉部分细胞
B 完整保留 6 个小/中型 dataset 142,540 不做 dataset 内下采样,但缺少肝、肺、乳腺等常见组织
C 以上皮器官为主,对部分 dataset 下采样 约 182,000 覆盖更多常见上皮组织,但会抽掉部分细胞

选择方案 B:

方案 B —— 无需降采样,6 个小/中型 dataset。

omicOS 给出的方案 B 数据组成和细胞数

方案 B 完整保留所选 6 个 dataset 内的细胞,总计 142,540 个。

截图中的“主要癌种组织”沿用当时任务假设,不成立。方案 B 组织覆盖有限,缺少肝、肺、乳腺,包含胸腺和骨骼肌。

“无需降采样”只表示所选 6 个 dataset 内没有再抽取细胞。其余 27 个 dataset 仍被排除,并不是原始数据一条都没删。

2.3 写出新文件并从磁盘读回

确认方案 B 后,omicOS 按 datasetID 筛选,写出新 .h5ad,再从磁盘读回校验。

omicOS 从磁盘读回并汇总筛选后的 h5ad

最终输出为 142,540 个细胞、21,812 个基因。图片已隐藏本机输出路径和内部标识。

最终结果:

指标 结果
细胞数 142,540
基因数 21,812
dataset 6
sample 65
donor 28
tissue 6
表达矩阵 float64 CSR;抽样表达值仍为整数
文件大小 约 2.6 GB
原文件 未修改

6 个 dataset 明细:

datasetID Cohort Tissue 细胞数 样本数
D27 ThymusCellAtlas Thymus 30,828 20
D30 UreterGSE184111 Ureter 25,311 10
D04 GutCellAtlasColon Colon 25,104 20
D20 ProstateGSE172316 Prostate 23,686 6
D21 SkeletalMuscle SkeletalMuscle 22,838 6
D08 KidneyGSE131685 Kidney 14,773 3
合计 6 种 tissue 142,540 65

磁盘读回核对:

  • 输出维度是 142,540 × 21,812;
  • 只包含 D04、D08、D20、D21、D27 和 D30;
  • 有 65 个 sample、28 个 donor;
  • .X 仍是 CSR,抽样表达值仍为整数;
  • datasetID、sampleID、donorID、tissue 等关键字段仍在;
  • ann1、majorCluster、compartment 和部分 QC 字段仍在。

回放总结写“所有 metadata 列保留”。实际读回逐项检查了上面这些关键字段。其他列若后续要用,仍需单独确认。

2.4 这个结果能不能直接叫“泛癌子集”

不能。论文和 Zenodo 记录已说明:它来自健康样本,是健康泛组织图谱。

方案 B 满足这些数据条件:6 个 dataset、每个至少 3 个样本、少于 20 万细胞、不做 dataset 内下采样。但组织名称不能把健康数据变成肿瘤数据。

更准确的说法:

这是从大型健康泛组织图谱中选出的 6-dataset 多组织演示子集。

若研究目标真是泛癌比较,改用论文的泛癌数据或其他匹配的疾病数据。

3. 这个案例最重要的四条信息

关键信息 对后续分析有什么用
数据判断为人类 后续使用人类基因命名和参考资料
表达数据判断为 counts 可以从 QC、归一化和高变基因筛选开始
sample、donor、dataset 等字段清楚 可以识别生物学重复和数据来源
子集按 datasetID 生成 6 个入选 dataset 完整保留,没有 dataset 内细胞下采样

拿到这些信息后,可准备进入预处理。接下来理解:这些字段代表什么,哪些选择不能交给工具自动决定。

4. obs 里的字段怎么理解

字段 人话解释 为什么重要
sampleID 细胞来自哪个样本 后续汇总和比较时,不能把每个细胞当成独立样本
donorID 细胞来自哪个人 它是生物学个体,不应简单当成技术批次
datasetID 数据属于哪个子数据集 本案例直接用它决定保留范围
cohortID 数据来自哪个研究队列 可能带有研究来源和技术差异
platform 使用了哪类实验平台 可能是技术批次来源
tissue、疾病和 condition 细胞的生物学背景 决定不同 dataset 能否放在一起比较

cohortID、datasetID、platform 都可能与批次有关。但不要看到列名就直接拿去校正。先判断它们代表技术差异,还是研究设计本身。

5. 选择子集时要权衡什么

你要决定什么 需要问自己的问题
生物学覆盖面 这些组织真的能回答我的问题吗?
样本独立性 65 个 sample 来自多少 donor?同一个 donor 是否有多个 sample?
是否下采样 更重视保留全部细胞,还是不同 dataset 之间的细胞数平衡?
计算规模 142,540 个细胞和约 2.6 GB 文件是否适合当前机器?
已有标签 标签来自哪里?是否有缺失值?能否直接用于研究问题?

本案例选“不下采样”。换来所选 dataset 内细胞完整保留,代价是组织组成不均衡。这不是对错题,是研究取舍。

标签仍要单独检查

本案例未清理、合并或重命名标签。正式分析前,检查:

  • NA、空字符串和未使用的类别;
  • 同一标签的不同拼写;
  • sampleID、donorID、datasetID 和疾病状态之间是否冲突;
  • 多层细胞标签之间是否一致;
  • 如果研究疾病或肿瘤,应另行准备匹配数据,不能把健康组织当成肿瘤样本。

继续这样问:

请检查输出文件 obs 中的:
- sampleID、donorID、datasetID、cohortID;
- tissue、疾病状态、condition;
- 已有细胞标签。

请统计缺失值、实际使用的类别和字段之间的冲突。
先给检查结果,不要覆盖原字段。

6. 谁负责什么

分析者负责 可以交给 omicOS
确认物种和研究问题 只读盘点文件结构、规模和字段
决定哪些 dataset 在生物学上可比 统计每个 dataset 的细胞数和样本数
权衡组织覆盖和是否下采样 生成多套满足约束的候选方案
确认数据来源是否适合研究问题 按确认的 datasetID 生成新文件
判断已有标签能否使用 从磁盘读回并检查关键字段和输出规模

7. 结果怎么检查

本案例已完成:

  1. 原文件只读打开,结果写入新文件;
  2. 输出文件从磁盘重新打开成功;
  3. 细胞数是 142,540,基因数是 21,812;
  4. 6 个 dataset 的细胞数相加等于 142,540;
  5. 每个 dataset 至少有 3 个样本;
  6. 65 个 sample、28 个 donor 和 6 种 tissue 可正常读取;
  7. 关键元数据、注释和 QC 字段仍在;
  8. 表达矩阵仍被判断为 counts。

分析者还要确认:

  1. 论文说明这些 dataset 来自健康样本;若研究疾病或肿瘤,需要另行匹配数据;
  2. 65 个 sample 与 28 个 donor 的对应关系;
  3. 方案 B 的组织组成是否适合研究问题;
  4. 后续批次处理应该使用哪个字段;
  5. 需要使用的其他 obs 列是否完整保留。

另外,分类字段可能保留“零细胞类别”。统计每个 dataset 的样本数时,看实际非零类别,不要只看分类表里有多少名字。

8. 下一步

确认物种、counts、样本关系和最终分析范围后,进入预处理。下一步介绍 QC、归一化、批次处理、降维和聚类。

本页最新版案例输出 142,540 个细胞;下一页直接使用这份输出进行预处理。

9. 案例实际回放

按真实操作顺序,重走一遍案例。

9.1 新建项目和对话

  1. 在“分析”页找到 PROJECTS,点击右上角的 + 新建项目。
  2. 项目名称填“我的项目A”。
  3. 展开项目,点击项目名称右侧的 +,新建对话“泛组织数据预览&整理”。

在 omicOS 中新建项目和项目内对话

红色箭头分别指向“新建项目”和“在项目内新建对话”。

一个项目管理一项分析。数据整理、预处理和细胞注释可以放在同一项目的不同对话中。

新对话不会自动继承旧对话的全部结论。进入下一阶段时,把数据路径、物种、表达形式和关键字段重新写清楚。

9.2 先只读检查

请只读检查:
<你的 h5ad 文件路径>
不要修改原文件。

请汇总:
1. 数据规模和物种;
2. 表达数据是 counts 还是 lognorm;
3. obs 中的样本、供体和批次相关字段;
4. 已有标签。

最后告诉我:
进入预处理前还需要确认什么。

看到结果后,记住:

  • 人类数据的判断依据;
  • counts 的判断依据;
  • sample、donor、dataset、cohort 和 platform 字段;
  • 已有标签和缺失值;
  • 哪些信息仍需要数据说明或实验设计确认。

9.3 提出可以检查的筛选条件

来源核对后,用下面的筛选提示词:

从这份健康泛组织图谱中筛选部分数据,
最终保证总细胞数在 20 万以内,输出 h5ad。
请给个筛选方案。

最终我希望只保留 6 个 dataset,
每个至少 3 个样本。

先让 omicOS 给方案,不要只说“帮我缩小一点”。数字越明确,结果越容易检查。

9.4 比较方案后再选择

本案例比较三种思路:

  • A:组织更均衡,但会下采样;
  • B:完整保留 6 个 dataset,但组织覆盖有限;
  • C:常见上皮组织更多,但会下采样。

最终回复:

方案 B —— 无需降采样,6 个小/中型 dataset。

选择方案时,不要只看总细胞数。还要看组织、疾病状态、样本数和 donor 数是否符合研究问题。

9.5 查看写出和读回结果

选择方案 B 后,omicOS:

  1. 再次核对 6 个 dataset 的细胞数和样本数;
  2. 使用 datasetID 生成子集;
  3. 写出新的 .h5ad;
  4. 从磁盘重新打开输出文件;
  5. 检查维度、dataset、sample、donor、counts 和关键字段。

结果汇总不够清楚时,继续问:

请汇总输出文件的磁盘读回结果:
1. 细胞数和基因数;
2. dataset、sample、donor 和 tissue 数量;
3. 每个 dataset 的细胞数和样本数;
4. 表达数据是否仍为 counts;
5. 关键 obs、注释和 QC 字段是否存在;
6. 原文件是否保持不变;
7. 仍需我确认的生物学问题。

本案例最终得到 142,540 个细胞、21,812 个基因。确认样本关系和研究适用范围后,进入预处理教程。

10. 参考文献

  1. Shi, Q., Chen, Y., Li, Y. et al. Cross-tissue multicellular coordination and its rewiring in cancer. Nature 643, 529–538 (2025). https://doi.org/10.1038/s41586-025-09053-4
  2. Shi, Q. & Chen, Y. Data for “Cross-tissue multicellular coordination and its rewiring in cancer” [Dataset]. Zenodo (2025). https://doi.org/10.5281/zenodo.15169362

results matching ""

    No results matching ""