第一课:单细胞测序简介——从细胞悬液到表达矩阵

各位好,我是老张。在单细胞数据分析这行摸爬滚打了快十年,今天咱们聊聊质控指标的设计。

很多人觉得质控就是设几个阈值,把不合格的细胞过滤掉就完事了。其实不然。我见过太多人因为不了解数据是怎么来的,导致阈值设得毫无道理。你想想看,连数据产生过程都不清楚,怎么定质控标准?

所以这第一课,咱们先把基础打牢。重点讲透三件事:scRNA-seq的技术原理、实验流程的完整链路、从细胞悬液到表达矩阵的数据流。说白了,就是搞清楚你手里那份表达矩阵,到底是怎么折腾出来的。

单细胞测序数据产生全流程 组织解离 获取单细胞悬液 细胞分离与捕获 微流控/微孔板/液滴 文库构建 逆转录 + 扩增 + 加接头 高通量测序 Illumina / MGI 数据预处理 bcl2fastq / Cell Ranger 比对 + UMI计数 STAR / kallisto / alevin 表达矩阵 基因 × 细胞 计数矩阵 核心概念 Barcode: 细胞身份标签 UMI: 分子唯一标识符 生成基因×细胞矩阵

1.1 为什么需要做单细胞测序

我最早是做传统RNA-seq的,那时候一次实验下来拿到的是成千上万细胞的平均表达量,就是所谓的“bulk”信号。结果嘛,平均完,稀有的细胞亚群直接消失在了噪声里。

举个例子,肿瘤微环境里的某些免疫细胞,可能只占整个样品的1%。用bulk RNA-seq测,根本看不到它们的影子。而单细胞测序可以一个细胞一个细胞地看,这事就好办了。

所以,单细胞测序的核心能力就两个:分辨率和异质性解析。

维 度Bulk RNA-seqscRNA-seq
检测对象组织/细胞群体单个细胞
表达值总体平均值单个细胞表达谱
数据维度1个样本1个值1个样本N个细胞 × M个基因
适用场景差异表达、通路分析细胞分群、稀有细胞鉴定、发育轨迹

1.2 scRNA-seq的技术原理

主流平台怎么区分细胞?靠的是 barcode 。每个细胞捕获时,会被分配一段独特的DNA序列作为标签,就像给每个人发一个身份证号。之后所有来自这个细胞的转录本,都带这个标签。

但还有一个更关键的概念——UMI (Unique Molecular Identifier)。UMI是一段随机序列,用来标记每一条mRNA分子。为什么需要这玩意?因为PCR扩增会引入偏差,同一条mRNA分子扩增后会产生大量拷贝,但通过UMI我们可以准确知道:原来它们都来自同一条分子。

核心要点:Barcode标记细胞,UMI标记分子。两者结合,才能从测序数据精确还原每个细胞的基因表达量。

1.3 典型实验流程

我习惯把整个实验流程分四个大阶段来讲,这样好记。

阶段一:单细胞悬液制备

这一步最容易被忽视,但实际出问题最多的就是它。我曾经碰到过一个项目,做了三次都拿不到合格的数据,后来发现是组织解离过度,细胞都碎了,基质里全是游离的RNA。

  • 组织剪碎 + 酶消化(胶原酶、胰蛋白酶等)
  • 过滤去除细胞团块和碎片
  • 细胞计数和活性检测(一般要求活性 > 80%)

阶段二:细胞捕获与建库

以最流行的10x Genomics平台为例,用的是油包水液滴技术。细胞悬液和带有barcode、UMI的凝胶微珠被包裹进液滴里,在液滴内完成细胞裂解、mRNA捕获和逆转录。

  • 微流控芯片生成GEMs(凝胶微珠乳浊液)
  • 液滴内mRNA与微珠上的捕获序列结合
  • 逆转录生成cDNA,带上barcode和UMI
  • 打破油滴,收集cDNA进行PCR扩增
  • 酶切打断,加上Illumina测序接头

阶段三:高通量测序

建好的文库上机测序。一般双端测序:Read 1 读barcode和UMI,Read 2 读cDNA片段序列。


10x 测序读段结构示例:
Read 1: 26bp(10x Barcode + UMI)+ 1bp 间隔
Read 2: 98bp(cDNA insert)
Index: 8bp(样本标签)

阶段四:数据预处理

测序仪出来的原始数据是BCL格式,需要转换成FASTQ。然后跑标准的处理流程进行比对、定量、生成表达矩阵。

我的建议:如果你用10x数据,建议直接上Cell Ranger。它把所有步骤打包好了,你只需要提供FASTQ文件和参考基因组。新手先用官方pipeline跑通数据再说。

1.4 数据产生过程:从FASTQ到表达矩阵

这是整节课的硬核部分。我看过不少人的分析代码,发现他们直接跳过这一步,上来就用原始矩阵做质控。嗯,这里要注意,很多管线里的默认参数不一定适合你的数据。

标准的流程分为四步:

  1. barcode处理:从Read 1中提取barcode序列,校正barcode(允许1~2个碱基错配),分配每个读段到对应细胞。
  2. UMI处理:从Read 1中提取UMI序列,记录每个转录本的分子身份。
  3. 比对:Read 2与参考转录组比对,确定基因来源。
  4. 定量:对每个细胞中的每个基因,统计检测到几个不同的UMI,生成计数矩阵。

如果你用10x的 Cell Ranger,一条命令就能跑完:


cellranger count --id=Sample1 \
                --transcriptome=/path/to/ref/refdata-gex-GRCh38-2020-A \
                --fastqs=/path/to/fastqs \
                --sample=Sample1 \
                --localcores=8 \
                --localmem=64

跑完后,找到 outs/filtered_feature_bc_matrix 目录,里面有三个文件:

  • matrix.mtx:表达矩阵(坐标格式)
  • barcodes.tsv:细胞barcode列表(每一行一个细胞ID)
  • features.tsv:基因注释(每一行一个基因ID和名字)

避坑提示:Cell Ranger默认有两个矩阵:raw_feature_bc_matrix 和 filtered_feature_bc_matrix。前者包含所有捕获到的barcode,后者仅保留它认为是细胞的那些。我建议你质控时尽量用raw矩阵从头处理,不要把别人的过滤标准当作真理。我曾经在两次分析中用了filtered矩阵,结果有些真实细胞被误杀了。

1.5 最终产品:表达矩阵长什么样

说白了,你最后拿到的东西就是一张表格。行是基因(大约20,000~30,000个),列是细胞(几千到几万个不等),每个格子表示某个基因在某个细胞中检测到的UMI数量。

举个例子,一个简单的小矩阵:


        Cell_001  Cell_002  Cell_003
GAPDH       142        89       203
ACTB        231       156       312
MALAT1     1089       825      1432
TP53          0         2         0
CD3E          0        45         1

注意看,大部分基因为0。一个典型的单细胞样本里,90%以上的格子都是0。这就是所谓的dropout事件,技术原因也好,生物学原因也好,拿到数据后你会面对一个极其稀疏的矩阵。

关键认识:单细胞表达矩阵的稀疏性、零膨胀特性,决定了后续质控指标的设计不能简单套用bulk RNA-seq的方法。这就是为什么我们要专门讲基因数和UMI阈值的设定。

好了,第一课到这里。你理解了数据是怎么产生的,下一课我们就能开始动手看看怎么评估每个细胞的质量了。记住一句话:质控不是随便设一个阈值,而是理解数据生成过程后,做出的合理选择。