Codar
下载

单细胞公共数据检索与再分析(CELLxGENE)

单细胞公共数据再分析,是指从公开数据库检索已发表的单细胞数据,下载后按自己的问题重新筛选、整合和分析。CZ CELLxGENE Discover 是目前最常用的入口之一:它收录的数据集按统一的元数据规范整理,细胞类型、组织、疾病、测序平台都用本体术语标注,并可通过 Census 接口按条件直接取出细胞,不必逐个下载文件。此外还有 GEO、Human Cell Atlas 数据门户、Broad Single Cell Portal、EBI Single Cell Expression Atlas,以及聚焦肿瘤免疫的 TISCH 等。再分析的难点不在下载,而在辨清每份数据存的是什么值、元数据能否对齐、不同研究之间如何避免重复和批次混杂。

什么时候用

  • 想知道某个基因在人体各组织、各细胞类型中的表达分布,作为课题立项或验证的依据
  • 自己的样本量有限,需要用公开数据扩充对照组或验证某类细胞的特征
  • 构建某器官或疾病的参考图谱,用于自有数据的细胞注释或映射
  • 比较同一细胞类型在健康与疾病、不同年龄或性别供体中的表达差异
  • 为单细胞基础模型或机器学习任务准备大规模、元数据规范的训练数据

不适合的情况

  • 需要原始 FASTQ 重新比对,而数据只在 dbGaP、EGA 等受控访问库中,必须先申请权限
  • 研究问题依赖精确的临床信息或处理时间点,而公开元数据中没有这些字段
  • 把来自不同研究的细胞直接合并做差异分析,却不考虑研究和供体层面的混杂

需要准备的数据

检索条件
物种、组织、疾病、细胞类型、测序平台等,最好对应到本体术语,如细胞类型用 Cell Ontology 名称。
h5ad 文件
AnnData 格式,含 X、obs、var、layers、obsm 等;读入后先确认 X、raw 和 layers 中分别存放的是计数还是标准化值。
rds 或 Seurat 对象
R 中用 readRDS 读取;注意 Seurat v5 与 v4 对象结构不同,旧对象可能需要更新后才能正常调用。
10x 输出文件
matrix.mtx.gz、barcodes.tsv.gz、features.tsv.gz 三件套或 .h5 文件,GEO 上常见;文件名前缀需整理成软件识别的名称。

分析步骤

  1. 1

    确定检索范围

    先写清楚要的是哪个物种、组织、疾病状态和细胞类型,再到 CELLxGENE Discover 浏览数据集或用 Census 统计各条件下的细胞数和供体数。供体数比细胞数更能决定后续结论是否可靠。

  2. 2

    按元数据筛选

    用 obs 中的 tissue、disease、cell_type、assay、donor_id 等字段筛选,并保留 is_primary_data 为 True 的细胞,避免同一批细胞因被多个合集收录而重复计数。记录每个筛选条件。

  3. 3

    下载并固定版本

    用 cellxgene_census 按条件取出 AnnData,或下载单个数据集的 h5ad。Census 有定期发布的版本,建议在代码中写明所用版本,否则数月后重跑结果可能不同。

  4. 4

    辨清数据内容

    检查表达值是否为整数、最大值大小、是否已对数化;确认基因 ID 是 Ensembl 还是基因符号。CELLxGENE 数据的 var 索引通常是 Ensembl ID,基因符号在 feature_name 列。

  5. 5

    格式转换与读入

    Python 用 scanpy 读 h5ad、10x mtx 或 h5,R 用 Seurat 的 Read10X、Read10X_h5。跨语言可用 zellkonverter 或 SeuratDisk 转换,转换后核对细胞数、基因数和若干元数据列是否完整保留。

  6. 6

    统一并重新质控

    合并多个数据集前统一基因 ID、物种、元数据列名,按一致标准重新做质控。不同研究的过滤阈值不同,原作者保留的细胞不一定符合你的标准。

  7. 7

    整合与再分析

    以研究或供体为批次变量做整合,再进行聚类、注释或差异分析。差异比较时以供体为单位汇总,并在模型中考虑研究来源,避免把研究间差异当成生物学差异。

关键参数与决策

is_primary_data 过滤

CELLxGENE 中同一批细胞可能出现在原始数据集和整合图谱中,is_primary_data 标记原始出处。做细胞计数或组成比较时只保留 True,否则部分细胞会被重复计算。

使用原始计数还是作者标准化值

需要做差异分析、整合或重新标准化时,应取原始计数;只看表达分布或作图时可用作者提供的标准化值。不要对已经对数化的数据再次做 log1p。

细胞类型标签的粒度

统一本体标签便于跨研究检索,但粒度往往较粗;作者原始注释更细但命名不统一。建议检索时用本体标签,分析时结合作者注释或重新注释。

检测平台

10x 3' 与 5'、Smart-seq2、单核与单细胞的基因检测特征不同。单核数据内含子读数多、线粒体比例低,与单细胞数据混合时应把平台或悬液类型作为协变量。

下载规模

Census 可一次取出数百万细胞,内存不足时先按条件只取需要的组织或细胞类型,或只取需要的基因列,也可以分批读取后再合并。

常见错误

  • 把标准化后的值当作原始计数送入 DESeq2 或 scVI:这些方法依赖计数分布,输入错误会导致离散度估计和潜在空间都失真。
  • 基因 ID 混用:一个数据集用 Ensembl ID、另一个用基因符号,直接合并会丢失大量基因或产生重复列,需要先统一映射。
  • 不做 is_primary_data 过滤就统计细胞组成:同一批细胞被重复计入,会让某些组织或细胞类型的比例明显偏高。
  • 把每个细胞当独立样本比较疾病与健康:公开数据集中疾病组和对照组往往来自不同研究,差异可能主要来自研究和供体。
  • 忽略数据使用许可与引用:公开数据多要求引用原始研究,部分数据有使用限制,再分析发表时需逐一核对并致谢原作者。

结果怎么看

检索结果汇总表

列出每个入选数据集的来源、平台、组织、疾病、供体数和细胞数。某条件下细胞很多但只来自一两个供体时,相关结论的外推性很有限,应在表中显式标出。

元数据核对表

合并后每列元数据的取值和缺失比例。疾病或细胞类型字段大量缺失,或同一含义有多种写法(如 normal、healthy、control 混用),需要先统一,否则分组和后续统计都会出错。

整合前后 UMAP

分别按研究来源和细胞类型着色。整合前细胞按研究聚成团属于正常现象;整合后同一细胞类型仍按研究完全分开,说明批次没有处理好,或不同研究的注释标准不一致。

目标基因表达分布图

按组织和细胞类型展示目标基因的平均表达和表达细胞比例。表达只出现在单一研究中时要警惕是该研究的技术伪影,最好在至少两个独立研究中看到一致模式。

和相近方法怎么选

CELLxGENE 与 GEO

CELLxGENE 的数据经过统一整理,元数据规范、可按条件跨研究检索,适合快速取细胞;GEO 收录范围更广,但格式五花八门,常需手动整理文件和元数据。CELLxGENE 没有的数据集再去 GEO 找,并自行完成格式统一。

下载处理后矩阵与从 FASTQ 重新处理

直接用作者提供的矩阵最快,但比对参考、过滤阈值不可控;从 FASTQ 重新处理能统一流程,代价是计算量大且部分数据需受控访问。整合多个研究且关心低表达基因或剪接时,建议重新处理。

h5ad 与 rds

h5ad 是 Python 生态的 AnnData 格式,读写快、适合大数据;rds 存储 R 对象,常见于 Seurat 流程。两者可以互转,但 uns 中的作图参数、多个 assay 等结构不一定能完整保留,转换后要逐项核对。

常见问题

CELLxGENE 下载的 h5ad 怎么在 Seurat 里打开?

可以用 zellkonverter 读成 SingleCellExperiment 再转为 Seurat 对象,或用 SeuratDisk 先转为 h5Seurat 再读取。转换后检查计数矩阵放在哪个 assay 和层中,并把 feature_name 设为基因名,否则后续按基因符号取表达会找不到基因。

怎么判断公开数据是原始计数还是标准化后的?

看矩阵中的值是否全为非负整数、最大值是否在几十到上千之间。出现小数且最大值只有个位数,通常已经对数标准化。h5ad 中还要分别检查 X、raw.X 和 layers,不同数据集的存放位置可能不同。

CELLxGENE Census 和网页版 Discover 有什么区别?

Discover 是网页,用于浏览数据集、在线查看基因表达和下载单个文件;Census 是 Python 和 R 接口,可以跨所有数据集按元数据条件直接查询并取出细胞和基因子集,适合编程批量获取和可复现分析。

多个公开单细胞数据集合并后批次很严重怎么办?

先确认已统一基因 ID 和质控标准,再以研究或供体为批次变量用 Harmony、scVI 等方法整合。如果不同研究间平台差异很大,如单核与单细胞混合,整合后仍可能残留差异,这时下游比较应在研究内部进行。

GEO 上的单细胞数据只有一个 csv 表怎么处理?

先确认行列含义和数值类型,用 pandas 或 R 读入后转为稀疏矩阵,再构建 AnnData 或 Seurat 对象。csv 通常不含细胞元数据,需要从 GEO 的样本信息和论文补充材料中补齐样本、分组等信息。

在 Codar 里怎么做

在 Codar 中描述想要的物种、组织、疾病和细胞类型后,会先确认检索条件和数据范围,再进行单细胞公共数据检索,列出可用数据集及其供体数和细胞数,确认后下载数据,并完成 h5ad、rds、10x 等格式的读取与转换,统一基因 ID 和元数据。交付检索汇总表、整理好的数据对象、元数据核对表和可复现的下载与读写脚本。

可以这样提问
帮我从 CELLxGENE 找人类肺组织中健康和特发性肺纤维化的单细胞数据,只要成纤维细胞,下载后整理成 Seurat 能读的对象。
了解单细胞与虚拟细胞插件