问题背景
- 由于生物技术限制,有时一次实验可以测得的数据较少,我们需要将几个批次的细胞数据合并进行下游分析;
- 数据合并时会出现批次效应(Batch effects),不同实验人员、测序平台、时间等因素会给测序带去技术噪音,干扰聚类等单细胞分析流程;
-
多组学的联合分析是单细胞测序分析的趋势,今后有可能需要整合多种类型数据。
方法
Batch effects corrected by matching mutual nearest neighbors (MNN)
-
MNN (互近邻搜索算法)
如上图,例如红色圆圈代表批次1的细胞,蓝色圆圈代表批次2的细胞,当某个红色细胞和蓝色细胞互为最近邻时,将其作为一对最近邻细胞,计算两者间的欧氏距离。
- 算法流程
- 对细胞的基因表达计数余弦标准化;
- 计算批次1和批次2中每一对细胞的欧式距离;
- 设置最近邻区域大小为k,找出所有最近邻细胞对(此文章假设最近邻细胞对属于同一种细胞类型);
- 计算细胞对的距离向量,用高斯核函数计算最终的两个批次之间的距离,这个向量的长度等于原数据中基因的个数;
- 将批次2的细胞统一减去此距离向量,投射在批次1细胞所在平面;
-
如果有批次3进来,循环1~5流程。
用法
此方法在R语言中可调用mnnCorrect()函数,需要先加载batchelor包。
library(batchelor)
B1 <- matrix(rnorm(10000), ncol = 50) # Batch 1
B2 <- matrix(rnorm(10000), ncol = 50) # Batch 2
out <- mnnCorrect(B1, B2) # corrected values
校正后,总细胞个数为各批次之和,基因和原各批次相同。
原文Link: Batch effects in single-cell RNA-sequencing data are corrected by matching mutual nearest neighbors