课程导论:单细胞RNA-seq技术简介、批次效应的来源与影响、批次校正方法的分类与选型

各位同学好,我是老张。做了六七年单细胞数据分析,踩坑无数。今天开始讲批次校正,这是实战中最头疼、也最绕不开的一关。你想想看,同一套实验,分两批上机,结果跑出来UMAP图居然分成了两坨——这到底是谁的锅?

这节课我们先打好地基。搞明白单细胞RNA-seq的基本流程,批次效应从哪来,以及市面上那么多校正方法该怎么选。


1.1 单细胞RNA-seq技术:一张细胞“食谱”

单细胞RNA测序,说白了就是把每一个细胞里的基因表达量都测出来。传统bulk RNA-seq测的是组织平均值,就像你炒了一锅菜,然后说“嗯,这锅菜有辣味”,但你分不清是哪根辣椒贡献的辣。单细胞就不一样了,它能把每根辣椒的辣度都列出来。

我习惯把单细胞数据看成一张巨大的表格:

细胞ID基因1基因2…基因20000
Cell_001120…5
Cell_00208…0
……………

行是细胞,列是基因。数值代表该基因在这个细胞中检测到的UMI(Unique Molecular Identifier)计数。数字越大,表示该基因越活跃。

常见的平台有10x Genomics、Smart-seq2、Drop-seq等。10x是目前最主流的,一次能跑几千到几万个细胞。我遇到过不少新人,拿了10x的原始数据就急着跑Scanpy,结果连filter_genes和filter_cells都没做——嗯,那次我帮改代码改到凌晨两点。

单细胞分析的标准流程大概是:

  1. 质控过滤(基因、细胞、线粒体比例)
  2. 标准化与对数化
  3. 高变基因选择
  4. 降维(PCA)
  5. 聚类与可视化(UMAP/t-SNE)
  6. 批次校正——这是今天的重头戏
  7. 差异表达分析与注释

你看,批次校正嵌在降维和聚类之间。它直接影响你能不能看到真实的细胞亚群。

1.2 批次效应:它的“身世”与危害

什么叫批次效应?简单说:不同批次实验带来的系统性偏差,掩盖了真实的生物学差异。

“批次”可以从哪些地方来?

  • 不同日期制备的文库
  • 不同操作员的手艺差异
  • 不同试剂盒、不同chip、不同测序lane
  • 甚至同一个人上午做和下午做,环境温度变了,结果都可能不一样

我曾经接过一个项目,同一个研究所有两个实验员,一人做了一批鼠脑样本。合并后一看,UMAP图上细胞分成左右两团,正好对应两个实验员——可这两批样本明明来自同品系、同周龄的小鼠啊!这就是典型的批次效应,而且强度大到完全掩盖了生物学差异。

注意!批次效应不等于生物学差异。千万别把批次混入当成新的细胞亚型来注释。我见过有人把两个批次的细胞群分别注释成“神经元A”和“神经元B”,结果后来发现只是测序深度不同——白写了一篇论文的讨论部分。

怎么识别批次效应?

  • 绘制UMAP/t-SNE图,用批次编号着色:如果相同批次的细胞聚在一起,不同批次明显分开,八成有批次效应。
  • PCA散点图上,前几个主成分能被批次变量解释。
  • 或者用简单的相关性检验——不同批次间同一细胞类型的表达谱相关性应该很高,如果很低,有问题。

但我也要提醒两点:第一,轻微批次效应有时不影响下游注释;第二,某些情况下批次效应和真实生物学效应可能混杂在一起(比如批次对应不同的疾病组),这时候校正要格外小心,不能把生物学差异一起抹掉。

1.3 批次校正“武器库”:分类与选型

市面上校正方法几十种,我按自己的经验把它们分成三类。你可以照着这个表快速选型:

类别代表方法核心思路适用场景我的建议
对齐型BBKNN, MNN, Seurat CCA在低维空间找到相互匹配的细胞对,然后拉近数据量较大,细胞类型已知部分重叠,快速探索新手首选BBKNN,参数少,跑得快
回归型ComBat, limma, regress_out用线性/广义线性模型拟合批次变量,直接减掉批次变量已知,样本量均衡,无明显非线性的情况适合芯片数据,单细胞数据慎用
深度生成型scVI, scANVI, SAUCIE用变分自编码器学习潜在表示,同时估计批次变量数据量大、批次多、有复杂非线性结构scVI是目前最稳的,我大多数项目都用它

选型的关键是搞清楚你的数据规模、批次数量、以及你更关注“保留原始表达值”还是“只对齐低维空间”。

小经验:如果你的数据只有两三个批次、细胞总数小于5万,可以先试试BBKNN。如果超过10万细胞、批次超过5个,直接上scVI,别犹豫。我曾在一个8批次、30万细胞的T细胞数据上试过几种方法,BBKNN跑完UMAP还是有些许残余批次,scVI出来的图干净得像P过一样。

另外,校正之后一定要做质量评估。我的习惯是:

  1. 看UMAP是否按批次混杂(理想状态是各个批次均匀分布在每个细胞群中)
  2. 计算批次间的批次熵(batch entropy)
  3. 计算生物学差异保留度(如ARI)

只图好看不行,还得保真。

下面这张图总结了批次校正的核心流程和三种方法的关系:

单细胞数据批次校正核心流程与选型 多批次表达矩阵 (批次A, B, C...) 质控 → 标准化 对齐型(BBKNN) kNN图 → 批次感知图 回归型(ComBat) 线性模型移除批次 深度生成(scVI) 变分自编码器 聚类 + 可视化 + 注释 (UMAP/t-SNE) 选型口诀: 小数据用BBKNN,大数据上scVI
记住这个原则:批次校正不是为了消除所有差异,而是去除仪器/操作/时间等非生物学变异。真实存在的细胞类型差异、疾病状态差异,必须保留。做校正之前,先问问自己:这个批次差异,我能从实验设计上解释吗?如果不能,那大概率是你要去除的东西。

好了,这章就是打底。后面两章我们分别手把手教你跑BBKNN和scVI。学完这章,你应该能回答:单细胞数据长什么样、批次效应是什么、什么时候该校正、三大类方法各自适合什么场景。如果你现在脑子里能浮现出那张流程图,那就对了。