2. 单细胞转录组测序技术概述:10x Genomics原理、原始数据格式、表达矩阵构建

好,咱们直接切入正题。做拟时序分析,你手里得有数据吧?数据怎么来的?说白了,大部分单细胞转录组数据都是靠 10x Genomics 平台跑出来的。我刚开始接触单细胞时,心里也有个疑问:这玩意儿到底是怎么把一个一个细胞“分开”测序的?

这一章,我就把这背后的逻辑给你捋清楚。搞懂了数据源头,后面用 Monocle 做分析,你才知道每个参数在控制什么。

2.1 10x Genomics 的核心原理:微流控与 Barcode

10x 平台最聪明的地方,就是用了 微流控 技术。它能让单个细胞和带有独特标签的凝胶微珠(Gel Bead)一起,被油滴包裹起来,形成一个微小的反应室——我们叫它 GEMs(Gel Bead in Emulsion)。

每个凝胶微珠上,都附着了几百万条相同的寡核苷酸序列。这条序列包含了几个关键部分:

  • Illumina P5/P7 序列:用于后续测序的接头。
  • 10x Barcode:一个 16bp 的独特序列。同一个微珠上的所有序列,Barcode 都一样。这就是你区分不同细胞的“身份证”。
  • UMI(Unique Molecular Identifier):一段 10-12bp 的随机序列,用来标记原始 mRNA 分子。同一个基因的转录本,如果 UMI 不一样,就意味着它们是不同的原始分子。
  • Poly-dT 序列:用来捕获带有 poly-A 尾的 mRNA。

嗯,这里要特别留意:Barcode 是用来区分细胞的,UMI 是用来区分分子的。这两个概念一旦混淆,你的分析结果就会出大问题。我在一次项目中,发现一个样本的细胞数异常高,后来排查日志才发现,是 Barcode 和 UMI 的读取顺序在配置文件中写反了。那个坑,我踩过。

关键点:10x 微流控技术通过 Barcode 给每个细胞“贴标签”,通过 UMI 给每个 mRNA 分子“贴标签”,从而实现高通量、低成本的单细胞分析。

2.2 原始数据格式:从 BCL 到 FASTQ

测序仪出来的原始数据,是 BCL(Base Call)格式的。你拿到手肯定不是这个,因为下游软件没法直接读它。需要用 cellranger mkfastq 这个命令,把它转换成通用的 FASTQ 格式。

一次标准的 10x 3' 单细胞测序,会产生两个主要的 FASTQ 文件(R1 和 R2):

  • R1:包含 16bp 的 Barcode 和 10bp 的 UMI。
  • R2:包含 转录本的 cDNA 序列(实际的基因序列)。

你们在公共数据库(比如 GEO)下载数据时,看到的文件大概长这样:

Sample_S1_L001_R1_001.fastq.gz
Sample_S1_L001_R2_001.fastq.gz

_R1_ 就是带细胞身份证的文件,_R2_ 是基因序列。千万别搞混。我见过有人把 R1 和 R2 当成两个生物学重复来分析,结果整了半个月发现数据对不上。那个表情,相当精彩。

注意:某些文库类型(如 5' 或 VDJ)的 FASTQ 结构可能不同,R1 可能只包含 Barcode,UMI 会被放在 R2 的开头。使用前务必查阅对应试剂盒的文献说明。

2.3 表达矩阵的构建:cellranger count

有了 FASTQ,接下来就要用 10x 官方的核心工具——cellranger count——来生成表达矩阵。这个命令会执行三个主要步骤:

  1. 比对(Alignment):把 R2 中的 cDNA 序列比对到参考基因组上。
  2. Barcode 校正与 UMI 去重:校正错误的 Barcode,并去除因 PCR 扩增产生的重复 UMI。
  3. 定量:统计每个细胞(Barcode)中,每个基因被检测到的 UMI 数量。

最终输出的三个核心文件,都在 outs/ 目录下:

文件名 格式 内容说明
filtered_feature_bc_matrix.h5 HDF5 过滤后的细胞-基因表达矩阵,二进制格式,加载快。
filtered_feature_bc_matrix/ MTX + CSV 文本格式的过滤矩阵,包含三个文件:barcodes.tsv.gz, features.tsv.gz, matrix.mtx.gz。
metrics_summary.csv CSV 分析报告,包含测序饱和度、细胞数、基因检出率等关键质控指标。

我个人习惯,在正式做 Monocle 分析前,一定会先看一眼 metrics_summary.csv 文件。如果测序饱和度低于 50%,或者细胞数跟预期差太多,我会直接回到这一步重新检查参数。

小技巧:MTX 格式的文件虽然用起来稍麻烦(需要读三个文件),但它是 R 语言(Seurat、Monocle)和 Python 环境通用的标准格式。如果你要在多个工具间切换,用 MTX 最稳妥。

你看,整个流程听起来复杂,其实核心就是三个词:Barcode(给细胞编号)、UMI(给分子编号)、比对定量(算账)。搞懂这三步,你手里的表达矩阵就不是一个黑盒了。

为了让你理解得更直观,我画了一张流程图,帮你把今天讲的内容串起来。

10x Genomics 单细胞转录组测序流程 单细胞悬液 + 凝胶微珠 GEMs 形成(油包水) mRNA 逆转录 + Barcode 标记 Illumina 测序 → BCL 数据 cellranger count → 表达矩阵 关键概念 1. 每个 GEM 最多包裹 1 个细胞。 2. Barcode:16bp, 区分不同细胞。 3. UMI:10-12bp, 区分分子来源。 4. 输出文件分布: outs/ └── filtered_feature └── _bc_matrix ├── barcodes.tsv.gz ├── features.tsv.gz └── matrix.mtx.gz └── metrics_summary.csv

嗯,这张图基本把上午我们聊的流程都概括了。从细胞悬液到最终的表达矩阵,每一步都有它存在的意义。很多新手觉得单细胞分析就是跑个软件,但我还是那句话:理解数据怎么来的,比会跑命令重要得多。