scanpy数据整合批次效应去除原理

简介: scanpy数据整合批次效应去除原理

1.scanpy.external.pp.mnn_correct**

第一步:将表达量按细胞进行归一化,计算细胞之间归一化后的Euclidean距离。

第二步:识别MNN(mutual nearest neighbors, 相互最近的邻居):假设两个batch,寻找batch1中每一个细胞的在batch2中最近的k个细胞(knn1),对batch2进行相同操作(knn2),knn1和knn2的关系的交集就是MNN。

关键1:一对MNN细胞的差异完全来源于批次效应;

关键2:三个假设a)两个批次中至少有1种相同的细胞类型, b) 批次效应与生物子空间(基因表达特征张成的空间)正交,c)批次效应变异远小于不同细胞类型之间的变异。

第三步:对于一个MNN对,计算pair-specific批次矫正向量:两个细胞的向量之差。

细胞特异性的batch-correction vector = 这些pair-specific批次矫正向量的加权平均

细胞表达量的转换策略来自 [Haghverdi et al., 2018]

微信截图_20230606162651.png

2.scanpy.external.pp.scanorama_integrate

关键:不限于两个数据集的MNN,而是发现多个数据集中的相似性,对数据的顺序不明感

降维后再找邻近关系,通过一些算法提升临近关系寻找的速度;

Scanorama同时完成整合和去除批次效应,通常只进行低维的整合

看一下这里的批次效应矫正是如何进行的:

假如有两个数据集Di,Dj,已经确定Mij是他们之间的MNN对,通过rij描述两个数据之间的总体匹配程度,匹配程度反应了两个数据集是否是同一个panorama

matching vectors是两个数据MNN对的差(长度为matchDi细胞数)

当想去除Di的批次效应的时候,计算Di中细胞与matchDi细胞的权重矩阵(Di细胞数 * matchDi细胞数)

用这个权重矩阵加权平均matching vectors = 就是转换向量 translation vector(这个类似于MNN矫正的过程)

每个细胞得到各自的转换向量,这个转换向量可以在高维基因表达的层面计算,也可以在降维后的层面计算

细胞表达量的转换策略来自 [Haghverdi et al., 2018]


3.scanpy.external.pp.harmony_integrate

矫正PCA

迭代两个互补的过程:聚类 + 线性模型批次矫正

微信截图_20230606162958.png

本质上不修改表达量


4.scanpy.external.pp.bbknn

在umap之前调整knn图,不做表达量的改变


顺便回顾一下SeuratV3的整合策略

第一步也是寻找anchor,anchor表示那些不同数据集中生物状态相同的细胞(FindTransferAnchors 函数)。

在降维过程中选用CCA (canonical correlation analysis) ,CCA的优势是发现两个数据集中共有的相关基因模块;PCA只能识别单个数据中的变异

根据降维的结果计算MNN,这里叫anchor,通过两步法过滤anchor;

计算anchor的权重矩阵,该矩阵描述每个query细胞和anchor细胞的关系,矩阵的构建依赖于:1query细胞和anchor细胞,2之前计算的anchor打分,这个权重矩阵的作用是不同细胞类型的anchor的区分。

细胞表达量转换的过程基于 [Haghverdi et al., 2018]

所以整合的方法已经够用了,关键按照研究目的选择最优的方法就好。

相关文章
|
2天前
|
数据可视化 测试技术
R语言线性混合效应模型(固定效应&随机效应)和交互可视化3案例
R语言线性混合效应模型(固定效应&随机效应)和交互可视化3案例
19 0
|
4天前
R语言中固定与随机效应Meta分析 - 效率和置信区间覆盖
R语言中固定与随机效应Meta分析 - 效率和置信区间覆盖
14 3
|
3月前
|
算法
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
|
8月前
|
机器学习/深度学习 算法 计算机视觉
舌体胖瘦的自动分析-曲线拟合-或许是最简单判断舌形的方案(六)
舌体胖瘦的自动分析-曲线拟合-或许是最简单判断舌形的方案(六)
69 0
|
10月前
|
数据采集 缓存 算法
m基于多属性决策判决算法的异构网络垂直切换matlab性能仿真,对比网络吞吐量,网络负载,平均切换次数,阻塞率,回报值
m基于多属性决策判决算法的异构网络垂直切换matlab性能仿真,对比网络吞吐量,网络负载,平均切换次数,阻塞率,回报值
180 0
|
10月前
10×一个样本测多少数据量(G)合适?
10×一个样本测多少数据量(G)合适?
|
PyTorch 算法框架/工具
torch 如何实现两点分布采样,要求采100个样本,其中20个样本为数字1,80个为数字2
可以使用 PyTorch 中的 torch.distributions 模块实现两点分布采样。具体来说,可以使用 Categorical 分布将数字1和数字2的概率分别设为0.2和0.8,然后调用 sample() 方法进行采样。可以先使用 torch.ones() 和 torch.zeros() 函数生成分别包含20个数字1和80个数字2的张量,然后使用 torch.cat() 函数将它们拼接在一起,再使用 torch.randperm() 函数对其进行打乱。
272 0
|
机器学习/深度学习 算法 数据处理
常见的降维技术比较:能否在不丢失信息的情况下降低数据维度
本文将比较各种降维技术在机器学习任务中对表格数据的有效性
227 0
常见的降维技术比较:能否在不丢失信息的情况下降低数据维度
|
机器学习/深度学习 算法 数据挖掘
通过随机采样和数据增强来解决数据不平衡的问题
通过随机采样和数据增强来解决数据不平衡的问题
252 0
通过随机采样和数据增强来解决数据不平衡的问题
|
C++
为什么要停止过度使用置换重要性来寻找特征(下)
为什么要停止过度使用置换重要性来寻找特征
125 0
为什么要停止过度使用置换重要性来寻找特征(下)