单细胞数据大爆发增长
很多时候会对多种样本,不同平台来源的细胞进行整合分析,查看细胞之间,基因表达等等方面的具体差异。
现阶段单细胞数据整合的方法有很多种,常用的CCA, Harmony, Scanorama和 scMerge。
今天就针对这几个方法逐一说明。
1、CCA(Seurat数据整合简介)
CCA是Seurat自带的方法,说实话也是我个人最常用的方法。
CCA可以校正实验的批次效应,还能整合跨平台数据。
例如将10x单细胞数据、BD单细胞数据和SMART单细胞数据;
也能整合单细胞多组学数据,例如将单细胞ATAC、空间转录组与单细胞转录组数据整合在一起。
1.1、使用CCA分析将两个数据集降维到同一个低维空间,因为CCA降维之后的空间距离不是相似性而是相关性,所以相同类型与状态的细胞可以克服技术偏倚重叠在一起。
1.2、CCA降维之后细胞在低维空间有了可以度量的“距离”,MNN(mutual nearest neighbor)算法以此找到两个数据集之间互相“距离”最近的细胞,Seurat将这些相互最近邻细胞称为“锚点细胞”。
1.3、理想情况下相同类型和状态的细胞才能构成配对锚点细胞,但是异常的情况也会出现,如上图中query数据集中黑色的细胞团。它在reference数据集没有相同类型的细胞,但是它也找到了锚点配对细胞(红色连线)。
1.3.1、在CCA低维空间找到的锚点,返回到基因表达数据构建的高维空间中验证,如果它们的转录特征相似性高则保留,否则过滤此锚点。
1.3.2、检查锚点细胞所在数据集最邻近的30个细胞,查看它们重叠的锚点配对细胞的数量,重叠越多分值越高,代表锚点可靠性更高。
1.4、经过层层过滤剩下的锚点细胞对,可以认为它们是相同类型和状态的细胞,它们之间的基因表达差异是技术偏倚引起的。Seurat计算它们的差异向量,然后用此向量校正这个锚点锚定的细胞子集的基因表达值。校正后的基因表达值即消除了技术偏倚,实现了两个单细胞数据集的整合。
代码实现:
scRNA.anchors <- FindIntegrationAnchors(object.list = scRNAlist)
##利用锚点整合数据,运行时间较长
scRNA <- IntegrateData(anchorset = scRNA.anchors)
2、Harmony整合(Harmony原理介绍)
按照文章描述主要分为以下几个步骤:
2.1、先将所有的细胞随机的分为多个群(cluster),并且要保证每个群里面细胞的多样性要足够高;
2.2、寻找每个cluster的中心点,以及每个dataset的中心点;
2.3、在每一个cluster当中,根据上一步骤的两个中心点,计算每一个dataset的校正因子;
2.4、对数据集中的每一个细胞使用细胞特异的校正因子进行校正。细胞特异的校正因子是由上一步计算得到的dataset的校正因子和2.1步骤中随机聚类的矩阵得到的;
2.5、重复2.1到2.4这个步骤,直到数据呈现收敛状态。
代码实现:
scRNA <- RunHarmony(scRNA, "dataset_name", plot_convergence=T)
批次处理之后的结果保存在scRNA@reductions$harmony当中。
3、Scanorama整合(Scanorama高效整合异质单细胞转录组)
根据文献描述这种方法是类似于全景拼接的方法。
首先,找到有重叠内容的图像,然后将这些图像合并到更大的全景中。
放在单细胞数据中就是寻找具有类似转录组表达谱细胞的数据集,算了,解释的太复杂了。
简单说,就是把每个数据集作为一个整体,然后去逐个比对,最后选择最像的,再把里面的细胞给放一起就行了。
说实话没咋用过。
代码实现:
search by yourself. ^-^
4、scMerge整合
今天太累了,改天更新。。。。