MetaNeighbor论文解读

Posted by 孙睿 on March 22, 2024

这篇博客简单记录下18年发表在nature communications上的一个工作,Characterizing the replicability of cell types defined by single cell RNA-sequencing data using MetaNeighbor的建模思路.作者后续使用这个工具做分析,陆续发表了一篇nature protocols, 一篇nature, 一篇nature ecology&evolution.后面两篇分析类型的文章都关注的是跨物种单细胞进化分析,这和自己最近在做的工作有很强的关联,因此写这篇博客记录MetaNeighbor的建模思路,从底层原理上指导后续的使用或改进。

动机

单细胞技术存在固有的技术偏差,包括测序平台本身的差异、生物样本的差异等等。这些差异促成了大量单细胞整合技术的设计,例如Harmony,scVI,CCA等等。单细胞整合将不同的测序样本嵌入在相同的隐空间,使得来自不同样本的相似的细胞在UMAP图中处于相近的位置。但是这种整合技术相对来讲缺乏一个量化的标准,评估两个cluster是否一致通常是通过UMAP图的目测,看到存在差异后再去找可靠的生物学证据支撑整合后观测到的差异真实存在。

基于上述问题,作者提出MetaNeighbord这一方法,定量的回答这样一个问题,对于来自样本1的细胞类型$i$和来自样本2的细胞类型$j$。这两类细胞之间的相似性,或者说可复制性(replicability)是多少?

问题建模

考虑如下问题,给定$K$个样本$X_{i} \in R^{N_{i} \times G }. \;\; i=1,2,…K$。每个样本中都注释$L$种细胞类型$Y_{i} \in R^{N_{i} \times L} $.这里标签$Y$是$0-1$矩阵,对每个细胞只有一个细胞类型,有的样本中可能某种细胞类型缺失,对应的列为0.希望输出一个大小为$(KL,KL)$ 的矩阵,矩阵中的元素告诉我们来自样本$i$的细胞类型$j$与来自样本$k$的细胞类型$l$的相似性是多少。

MetaNeighbor使用了neighbor voting的算法来实现。算法的底层原理是,相同的细胞类型应该有相似的表达谱,因此若使用与$i$相近的细胞类型$j$去预测,预测得到的标签分布应该和$i$真实的标签分布相近。下面是原作者的表述:


方法解析

原论文表述可能并不足够清晰,下面用一个简单的示例来说明具体计算。只考虑两个数据,$X^{1},X^{2}$,分别有$n_{1},n_{2}$个细胞。

  1. 计算细胞相似性。这里构建一个二部图,顶点集分别是两个数据中的细胞,然后对来自不同数据集的细胞连边,边的权重度量两个细胞之间的相似性,得到邻接矩阵$G^{(1,2)} \in R^{n_1 \times n_2}$。之后对边的权重做标准化处理。
  2. 现在想评估$X^{1}$中细胞类型$i$与$X^{2}$中细胞类型$j$的相似性。将$X^{1}[i]$视为测试集,将$X^{2}$视为训练集,其中细胞类型$j$看作正例,标签为1,其余细胞看作负例,标签为0.也就是$Y^{2}$中第$j$列,预测得到$\hat{Y^{1}}[:,j]$,比较$Y^{1}[:,i]$与$\hat{Y^{1}}[:,j]$的相似性。
  3. 定义$X^1$中细胞$k$的预测,$\hat{Y^{1}}_{k,j}$为

    \[\begin{equation} \begin{aligned} \hat{Y^{1}}_{k,j} &= \frac{1}{deg(k)} G_{k,:}^{1,2}Y_{:,j}^{2} \\ &= \frac{1}{deg(k)} \sum_{l=1}^{n_2} G_{k,l}^{1,2}Y_{l,j}^{2} \\ &= \frac{1}{deg(k)} \sum_{l\in C_{j}} G_{k,l}^{1,2} \end{aligned} \end{equation}\]

    其中$deg(k)$是细胞$k$所有连边的权重之和,主要是做标准化。对$k$的预测,就是用$X^{2}$中的所有细胞做了一个neighbor voting,最后的$C_{j}$是样本2中属于细胞类型$j$的细胞集合。

    可以看到,如果细胞$k$和细胞类型$j$很像,那么$G_{k,l}^{1,2}$应该较大,接近于细胞$k$的原始标签1,从而说明细胞$k$所属的细胞类型$i$和细胞类型$j$很像。

    最后,把上面一段的定性描述给定量化表述,对$\forall k \in {1,2,…n_{1}}$,我们都有上面这个分数,从而得到样本2中细胞类型$j$对样本1中所有细胞的预测$\hat{Y^{1}}[:,j]$。注意到,如果1中的细胞类型$i$与$j$相似,与样本2中其他细胞类型都不相似,那么$\hat{Y^{1}}[:,j]$中细胞类型$i$的分数应该显著高于其他细胞类型,最理想的情形是,将$\hat{Y^{1}}[:,j]$升序排列,记$N$为样本1中细胞类型$i$的数目,$N_{neg}$为样本1中其他细胞类型的数目。细胞类型$i$的打分应该排在最后的$N$个位置,和$Y^{1}[:,i]$的排序一致。

    基于这种思想,给出$AUROC_{j}$来量化$Y^{1}[:,i]$与$\hat{Y^{1}}[:,j]$的相似性:

    \[AUROC_{j} = \sum_{l=1}^{N} \frac{Rank(s_{l})}{N*N_{neg}} - \frac{N+1}{2*N_{neg}}\]

    这里$s_{i}$是样本1中属于细胞类型$i$的细胞。可以验证AUROC最小为0,最高为1,数值越高说明两种细胞类型相似性越好。

  4. 小结:基于上述讨论,我们最后会得到$\hat{Y^{1}} = \frac{1}{deg^{1}}G^{(1,2)}Y^{2} \in R^{n_{1},L}, \hat{Y^{2}} = \frac{1}{deg^{2}}G^{(2,1)}Y^{1} \in R^{n_{2},L}$.之后分别与原始的两个标签比较,最终得到大小为$(2L,2L)$的打分矩阵,记录了来自样本$1$的细胞类型$j$与来自样本$2$的细胞类型$l$的相似性是多少。实现起来也很容易,只要理清了上面的计算细节,都可以通过矩阵乘法快速实现。

总结

总的来说MetaNeighbor是一个思路清晰的工作,从作者后续的工作来看表现也还不错。但是具体应用起来还是有很多需要考虑的地方,比如说MetaNeighbor是不做数据整合的,直接用两个数据的原始count去处理,虽然使用了rank这种方法来消除数值绝对大小的影响,但是使用同一个隐空间中的嵌入向量去做会不会表现更好?另外如果迁移到单细胞多组学上,怎样处理?但看起来还是一个挺好的框架,可以往上灵活的加点东西。

{/% if page.mathjax %}{/% include mathjax_support.html %}{/% endif %}