1. 单细胞RNA-seq基础:细胞捕获、建库与测序原理,UMI与基因表达矩阵生成

说到单细胞RNA-seq,很多人第一反应是「哇,一个细胞一个细胞测,怎么做到的?」别急,咱们今天就把这层窗户纸捅破。我最早接触这个领域时,也以为是把单个细胞捞出来单独建库测序,后来发现——没那么简单,但也没那么玄乎。

说白了,单细胞RNA-seq的核心就三件事:捕获单个细胞、给每个细胞的RNA贴上身份证、通过测序把这些身份证读出来。整个过程就像给每个细胞发一个独一无二的二维码,然后一次性扫码读出所有信息。下面我按实验流程一步步拆开讲。

本章核心脉络:从组织到细胞悬液 → 细胞捕获 → 逆转录添加UMI/Barcode → 文库构建 → 测序 → 生成基因表达矩阵。每一步都会直接影响最终数据质量。

1.1 细胞捕获技术:让每个细胞进自己独立的「小房间」

单细胞实验的第一步,是把成千上万个细胞隔离开来,每个细胞独占一个反应容器。目前主流方案有两类:微流控液滴法和微孔板法。

液滴法——10x Genomics是典型代表。细胞、凝胶微珠(上面带有Barcode和UMI)、酶混合液一起被油相包裹,形成一个个微小的液滴,每个液滴就是一个「独立反应室」。我去年跑过一个10x项目,一次跑8个样本,每个样本5000个细胞,从组织解离到上机捕获大约4小时。嗯,时间主要花在设备调试上——液滴生成器的压力稍微不稳就会导致细胞双胞率高。

微孔板法——像Smart-seq2这类方案,把细胞逐个分到96孔或384孔板中。优点是全长转录本覆盖、灵敏度高;缺点是通量低、成本高。我个人习惯在需要做异构体分析或需要高灵敏度检测低表达基因时用板式方案,大样本队列则首选液滴法。

方案代表平台通量优缺点
液滴法10x Chromium, Drop-seq每次数千~数万细胞通量高、成本低;3'或5'端偏倚
微孔板法Smart-seq2, MARS-seq每次数百细胞全长覆盖、灵敏度高;通量低、耗时久
组合标记法Sci-RNA-seq, Drop-seq变异体数十万细胞超高通量;需要多次拆分组合,操作复杂

避坑提醒:不论用哪种捕获方式,细胞悬液的质量是关键。我曾经因为组织解离过度,导致细胞碎片太多,液滴里包进了大量破裂的细胞质,数据里背景RNA污染严重。建议每次解离后做台盼蓝染色确认活细胞比例>85%。

1.2 建库与测序原理:在逆转录步骤植入细胞条形码和UMI

捕获到单个细胞后,接下来要完成两件事:把mRNA逆转录成cDNA,并在过程中给每个转录本分子贴上唯一分子标识符(UMI)和细胞条形码(Cell Barcode)。

为什么一定要加这些标签?你想想看,测序仪一次跑几亿条reads,如果没有细胞条形码,你根本不知道哪条read来自哪个细胞。如果没有UMI,你没法区分一个基因的多个reads到底是来自同一个原始mRNA分子的PCR扩增副本,还是来自多个不同的原始mRNA分子。UMI就是干这个用的——每个mRNA分子在逆转录时被随机分配一个独一无二的标签序列(通常是8~12bp),之后无论PCR扩增多少轮,只要UMI相同,就认为是同一个原始分子。

具体到实验流程(以10x液滴法为例):

  1. 液滴内:细胞裂解 → mRNA与凝胶微珠上的poly-dT引物结合,引物上已携带细胞条形码和UMI
  2. 逆转录:生成cDNA第一链,UMI和细胞条形码被复制到cDNA中
  3. 破乳:打破液滴,收集所有cDNA混合在一起
  4. cDNA扩增:PCR扩增富集足够量的cDNA
  5. 文库构建:片段化、末端修复、加A、连接测序接头
  6. 测序:双端测序,一端读细胞条形码和UMI,另一端读cDNA插入片段

我见过不少初学同学问:UMI的长度够不够?会不会撞车?理论上48=65536种UMI,对于一个单个细胞中某个基因的mRNA分子数(通常几十到几百个),碰撞概率极低。但假如细胞中某个基因表达量极高(比如>1000个分子),则可能出现两分子拿到同一UMI——这叫UMI饱和。实际算法会做校正,但我建议测序深度别太狠,否则浪费钱。

注意:细胞条形码与UMI的序列设计需要满足汉明距离≥3,以便后续纠正测序错误。千万不要自己随便编一串随机碱基就当条形码用——我在一个项目中吃过亏,那个团队自己设计的条码碰撞率高达3%,导致细胞鉴定混乱。标准平台(如10x)的barcode是经过优化的,能用现成就用现成。

1.3 UMI与基因表达矩阵生成:从fastq到数字矩阵

测序下机后,我们得到一对fastq文件:R1包含细胞条形码和UMI,R2包含cDNA序列。接下来要经历一系列数据处理步骤,最终输出一个基因表达矩阵——行是基因,列是细胞,每个元素代表该基因在该细胞中检测到的mRNA分子数(经过UMI去重)。

我常用的处理流程(以Cell Ranger为例):

# 典型处理命令(单样本)
cellranger count --id=sample1 \
  --fastqs=/path/to/fastq_dir \
  --sample=mysample \
  --transcriptome=/path/to/refdata-gex-GRCh38-2020-A \
  --expect-cells=5000 \
  --nosecondary

# 参数说明:
# --id:输出目录名
# --fastqs:fastq文件所在目录
# --sample:样本标识(自动匹配fastq文件名)
# --transcriptome:参考基因组索引
# --expect-cells:期望捕获细胞数,用于自动调整barcode过滤阈值

流程背后的核心逻辑分为几步:

  1. barcode处理:从R1中提取细胞条形码和UMI,先做白名单过滤(只保留与已知barcode集合匹配的序列),单碱基错误可纠正。
  2. 比对:将R2序列比对到参考基因组/转录组,确定每个read来自哪个基因。
  3. UMI去重:同一个细胞、同一个基因、同一个UMI的多条reads,只计为1个分子。注意要去除PCR重复和测序错误。
  4. 细胞鉴定:通过barcode的UMI分布(通常是降序曲线拐点)区分哪些barcode对应真实细胞,哪些是空液滴。
  5. 生成矩阵:聚合所有细胞-基因-UMI计数,输出为标准的Matrix Market格式(或h5)。

最终生成的表达矩阵样子如下(稀疏格式):

%%MatrixMarket matrix coordinate integer general
%% 基因数 细胞数 非零元素数
33694 8567 4821573
1 1 7
1 2 0
1 3 2
...
(具体每行:基因索引 细胞索引 分子计数)

关键指标:一个高质量的单细胞样本,通常每个细胞检测到的中位基因数在2000~4000之间,UMI中位数在5000~20000。如果你看到中位基因数只有500,大概率是细胞捕获效率低或建库失败。

下面这张流程图能帮你看清整个实验到数据的全貌:

单细胞RNA-seq实验与数据处理流程 组织解离 细胞捕获 逆转录+UMI标记 cDNA扩增 文库构建 测序 数据处理→基因表达矩阵 核心分子标签 Cell Barcode:标识细胞来源 UMI:标识原始mRNA分子 Poly-dT:捕获mRNA尾部

个人经验:处理完第一步fastq到表达矩阵后,我通常会在R里快速画一个质量概览图——UMI总数 vs 基因数散点图,看看有没有明显的异常细胞群。如果发现某个barcode的UMI数特别低(比如<500)却有很多基因,那很可能是空液滴混入背景RNA,要果断排除。

1.4 常见问题与质量指标速查

最后,我把做单细胞实验时经常遇到的质量问题整理了一张速查表,面试或实际排错时都能用上:

问题现象可能原因建议措施
细胞数量远低于预期捕获效率低;解离后细胞团块堵塞芯片过滤悬液、调整进样浓度
每个细胞UMI太少逆转录效率低;mRNA降解加RNase抑制剂、缩短操作时间
双胞率偏高进样密度过大;液滴生成不稳定降低细胞浓度、检查油路
UMI碰撞导致基因表达被低估测序深度过高或基因表达极强用算法校正(如sctransform),或降测序量
细胞条形码错误率高PCR保真度不足;测序质量差使用高保真酶、提高Q30比例

嗯,到这里,单细胞RNA-seq的基础部分就差不多了。你现在应该对实验的每个环节、为什么需要UMI和Barcode、最终数据长什么样有了清晰认识。这些东西看着琐碎,但理解扎实了,后面做批次校正、降维聚类时才能对症下药,不至于数据有问题还硬往下堆分析。