欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

共识:MNN 互近邻搜索算法可纠正 scRNA-seq 批量效应

最编程 2024-03-21 20:20:51
...

MNN来源:Batch effects in single-cell RNA sequencing data are corrected by matching mutual nearest neighbors


我本人也是刚接触scRNA-seq,所以写的东西可能比较小白,还请大家多指导。最近阅读的一篇nb上的文章,写一点东西,一方面给自己,一方面大家一起交流,闷着肯定不行。

MNN,英文全称mutual nearest neighbor,互近邻,互就是互相的,近邻就是最近的邻居。这个MNN用在这里还是非常的贴切。MNN主要思想就是找到不同批次中相同的细胞类型,然后计算同种细胞类型的基因表达的差异,这部分东西就是当作批次效应了。文中提到的表达谱信息就是表达矩阵了,通常行为基因,列为细胞。

MNN主要实现步骤:

假如我们有两个批次:批次1(m个细胞)和批次2(n个细胞)的scRNA-seq的基因表达数据

(1)将不同批次的基因表达谱信息按细胞进行余弦标准化(cosine normalization);

(2)依次计算批次1中每个细胞B1i到批次2中所有细胞的欧式距离,其实际等同于表达数据标准化前的余弦距离。这样我们就得到m个向量存放欧式距离,每个向量里存放了n个欧式距离,再保存每个向量中ki个具有最小欧式距离的细胞对(nearest neighbor,NN)。比如批次1中细胞1,计算出n个欧式距离,里面有10个细胞具有最小欧式距离,我们就保存这10个细胞对(NNs)。再依次保存剩下的m-1个中具有最小欧式距离的细胞对(k1_1, k1_2, k1_3, k1_i..., k1_m)。k1_i表示每个欧式距离向量中具有最小的欧式距离的细胞对的数量。

(3)接下来,反过来对批次2,执行相同的步骤(2)。计算批次2中每个细胞到批次1中所有细胞的欧式距离,得到n个向量,每个向量里存放了m个欧式距离。然后,再保存每个欧式距离向量中具有最小欧式距离的细胞对(k2_1, k2_2, k2_3, k2_i, ..., k2_n)。k2_i表示具有最小的欧式距离的细胞对的数量。

(4)这样,我们比较这些配对的细胞,如果发现批次1和批次2中细胞互相配对的时候,那么,嘿嘿嘿,我们就保存这种细胞对,也称作互为邻接对(MNNs)。这种MNN的细胞,在本文中就被认为是同一类型的细胞了。

(5)利用MNN细胞对的表达信息,计算两两细胞间的基因表达差值,得到表达差异向量,也称为配对特异的批次效应校正向量(pair-specific batch convection vector)。同一种细胞,基因的表达模式应该相同或接近,那么这种表达差异向量就源于批次效应了。

(6)计算出来的所有的pair-specific 批次效应校正向量,利用高斯核函数,计算它们的加权平均数作为最后的批次效应校正向量,该向量就是唯一一个,长度为基因的个数。最后将其应用到批次2的所有细胞(不管属不属于MNNs的细胞)中进行批次效应的校正。



最后附上文章的示意图。