📁

单细胞数据格式详解

10x Genomics与其他平台数据结构

深入了解单细胞测序平台的数据输出格式,包括10x Genomics的Gene-Barcode矩阵、 FASTQ文件结构、以及不同平台的数据读取方法。掌握数据格式是成功分析的第一步!

⏱️ 阅读时间:18分钟 💻 代码示例:12+ 📊 难度:基础
⚠️
免责声明: 本内容仅供医学学习参考,不作为临床诊断依据。 实际临床决策请结合患者具体情况和多学科意见。

为什么需要了解数据格式?

在开始单细胞分析之前,理解原始数据的组织结构至关重要。不同的测序平台会生成不同格式的数据, 只有了解这些格式,才能正确地读取和处理数据。

🔍

正确读取

避免读错数据或遗漏文件

高效处理

选择合适的工具和参数

🛠️

问题排查

快速定位数据相关问题

10x Genomics数据格式

10x Genomics是目前最常用的单细胞测序平台,其数据输出有特定的目录结构。 理解这个结构对于后续的数据处理至关重要。

标准目录结构

📁 filtered_feature_bc_matrix/
├── barcodes.tsv
├── features.tsv
└── matrix.mtx
📁 raw_feature_bc_matrix/
├── barcodes.tsv
├── features.tsv
└── matrix.mtx
📁 metrics_summary.csv
📁 possorted_genome_bam.bam
📝

关键目录说明

  • filtered_feature_bc_matrix: 过滤后的表达矩阵(常用)
  • raw_feature_bc_matrix: 原始表达矩阵(包含低质量细胞)
  • metrics_summary.csv: 质控指标汇总
  • possorted_genome_bam.bam: 比对后的BAM文件

核心文件详解

1. matrix.mtx - 表达矩阵文件

Matrix Market格式(.mtx)的稀疏矩阵文件,包含基因表达计数。

# Matrix Market format header
%%MatrixMarket matrix coordinate real general # 格式声明
%metadata_json: {"format_version": 2} # 元数据
32876 2700 2286842 # 基因数 细胞数 非零值数
1 1 5 # 行索引 列索引 表达值
2 1 1
3 1 0
...
💡

为什么使用稀疏矩阵?单细胞数据中大部分基因都不表达(值为0), 使用稀疏矩阵格式可以节省90%以上的存储空间和内存。

2. features.tsv - 基因注释文件

包含基因ID和基因名称的对应关系。

ENSG00000243485	MIR1302-2	Gene Expression
ENSG00000237613	MIR1302-10	Gene Expression
ENSG00000186092	OR4F5	Gene Expression
...
📝

三列含义:第一列是基因ID(Ensembl ID), 第二列是基因名称(Symbol),第三列是特征类型(通常为"Gene Expression")。

3. barcodes.tsv - 细胞条形码文件

包含所有细胞的条形码序列。

AAACATACAACCAC-1
AAACATTGAGCTAC-1
AAACATTGATCAGC-1
AAACCGTGCTTCCG-1
...
📝

条形码格式:通常为16bp碱基序列加上"-1"后缀。 每个条形码唯一对应一个细胞,用于识别测序reads来自哪个细胞。

数据读取方法

方法1:使用Seurat的Read10X函数

library(Seurat)
library(patchwork)

# 指定数据目录
data_dir <- "path/to/filtered_feature_bc_matrix"

# 读取10x数据
pbmc.data <- Read10X(data.dir = data_dir)

# 查看数据维度
dim(pbmc.data)
# [1] 32876  2700
# (基因 × 细胞)

# 查看前几个基因的表达
pbmc.data[c("CD3D", "TCL1A", "MS4A1"), 1:30]
💡

重要提示

文件命名必须严格:Read10X函数要求目录中的三个文件必须按照特定命名: barcodes.tsv、features.tsv、matrix.mtx。如果文件名不同,需要重命名或手动读取。

方法2:读取H5格式的数据

10x Genomics也支持H5格式的数据输出,这种格式更紧凑且读取速度更快。

library(Seurat)
library(h5)

# 读取H5文件
h5_file <- "filtered_feature_bc_matrix.h5"
pbmc.data <- Read10X_h5(filename = h5_file)

# 查看H5文件结构(可选)
h5::h5ls(h5_file)
#                    group  type       dfl       obs
#                   matrix H5I_GROUP          4      4
#              barcodes H5I_GROUP          2      2
#               features H5I_GROUP          3      3
#             indices H5I_GROUP          2      2
#               shape   H5I_DATASET 0 Scalar        3
📝

H5 vs MTX格式

  • H5格式: 单文件,读取快,但需要特殊工具查看内容
  • MTX格式: 多文件,通用性强,可用文本编辑器查看
  • • 推荐使用H5格式进行大规模数据处理

创建Seurat对象

# 创建Seurat对象
pbmc <- CreateSeuratObject(
  counts = pbmc.data,
  project = "pbmc3k",
  min.cells = 3,           # 至少在3个细胞中表达的基因
  min.features = 200        # 至少表达200个基因的细胞
)

# 查看对象信息
pbmc
# An object of class Seurat 
# 13714 features across 2700 samples within 1 assay 
# Active assay: RNA (13714 features, 0 variable features)

# 保存对象
saveRDS(pbmc, file = "pbmc3k_raw.rds")
⚠️

参数选择建议

  • min.cells: 通常设置为3-5,去除噪声基因
  • min.features: 根据平台设置,10x通常为200-500
  • • 这两个参数是初步质控,后续还会进一步筛选

其他平台数据格式

🔬 Smart-seq2

全长转录组测序,通常输出FASTQ文件,需要自行比对和定量。

# 读取已定量的数据
data <- read.table("counts.txt",
                      header = T,
                      row.names = 1)

# 创建Seurat对象
seurat <- CreateSeuratObject(
  counts = data,
  min.cells = 3
)

🧬 Drop-seq

类似10x格式,但使用不同的条形码系统。

# Drop-seq数据读取
library(DropSeq)
data <- readDropletMatrices(
  bam_file = "sample.bam",
  barcodes_file = "barcodes.txt"
)

seurat <- CreateSeuratObject(
  counts = data$counts
)

平台对比

平台 通量 覆盖率 数据格式 适用场景
10x Genomics 高(500-10000细胞) 3'-端或5'-端 MTX/H5 大规模细胞图谱
Smart-seq2 低(96-384细胞) 全长 FASTQ 深度转录组分析
Drop-seq 中(1000-10000细胞) 3'-端 BAM+MTX 成本敏感型研究

数据读取后的质控检查

必备质控步骤

# 1. 检查数据维度
dim(pbmc)
# 基因数 × 细胞数

# 2. 检查sparsity(稀疏度)
sparsity <- sum(pbmc[["RNA"]]@counts == 0) / prod(dim(pbmc))
# 通常在95%以上

# 3. 检查线粒体基因比例
pbmc[["percent.mt"]] <- PercentageFeatureSet(
  pbmc,
  pattern = "^MT-"
)

# 4. 可视化质控指标
VlnPlot(pbmc,
         features = c("nFeature_RNA", "nCount_RNA", "percent.mt"),
         ncol = 3)
💡

质控指标参考值

  • nFeature_RNA: 200-5000基因(根据组织调整)
  • nCount_RNA: 1000-50000reads
  • percent.mt: <5-20%(心肌/神经细胞可更高)
  • Sparsity: 通常>95%

常见问题与解决方案

❌ 问题:文件名不匹配

Read10X报错:"Error in Read10X : cannot open file"

解决:检查文件名是否严格按照barcodes.tsv、features.tsv、matrix.mtx命名

❌ 问题:H5读取失败

Read10X_h5报错:"Error in hdf5"

解决:安装h5包:install.packages("h5")

❌ 问题:数据维度异常

基因数或细胞数与预期不符

解决:检查是否使用了filtered而非raw目录,确认CreateSeuratObject的min参数

❌ 问题:内存不足

大规模数据读取时内存溢出

解决:使用H5格式,或在CreateSeuratObject中设置更严格的min.cells参数

相关教程