在单细胞数据中,整合方法是我们用到的最常用的算法,至于函数当然是FindIntegrationAnchors,但是其中有些内容我们需要深入了解一下,anchor是怎么找的?
k.anthor、k.filter、k.score与寻找锚点有什么关系
在这里我们就需要来弄明白整合的一个分析原理。
首先第一步:找anchor
我们在做整合分析的时候,对每个seurat对象都进行了Normalize和FindVariableFeatures,而找到的高变基因就是我们寻找anthor的基础。(默认是2000),当然每个样本找到的高变基因不完全相同,也可以人为指定。对于多个样本的整合,也是重复两个样本的整合,就是对两个的高变基因取交集,进行anthor的查找。(anchor也就是MNN)。
对于anchor寻找的原理,以下图为例:
蓝点表示一个样本的细胞,红点表示另外一个样本的细胞,在查找的过程中,蓝点细胞去寻找红点样本中的k个邻居(Seurat里面默认是5),而红点细胞取寻找蓝点样本中的k个邻居,如果此时有双向邻居,则定义为一个anchor(锚点)。这样在数据集中会找到很多的anchor。
第二步:过滤不可靠的anchor。
不是所有的anthor都可以拿来用的。
在过滤阶段,过滤条件需要放宽,也不要求必须是双向邻居,单向邻居就够了(k.filter: How many neighbors (k) to use when filtering anchors)。这里默认参数是200。200个邻居内所有的anthor都会保留,确定可靠的邻居对。
图片.png
第三步:量化邻居对的可靠程度,采用的是共享邻居的比例。参数是30