之前我有测试过很多整合去批次的算法,例如CCA,RPCA,harmony,LIGER等: CCA单细胞多样本整合和插槽选择(一) 单细胞多样本整合之RPCA 单细胞多样本整合之Harmony,LIGER
三 多样本合并 多样本的单细胞数据合并的时候需要考虑 (1)是否去批次 ? (2)使用何种方式去批次 ? 这里简单的介绍 不考虑批次直接Merge 以及 使用harmony方法去批次 这2种方式,为了直观的对比一下区别。 可以看到转移组和原发组的样本分布区别很大,就需要考虑是否去批次。 原文中是转移组和原发组分别单独分析,没有去批次。 2 harmony 去批次 去批次的方法有很多,本文对比展示使用harmony去批次分析。后续会介绍其他去批次的方法。 关于是否需要去批次以及使用什么方法去批次 ,需要根据数据 以及 组织背景的真实情况来选择。
正是因为这些非生物学的因素存在就有可能会导致我们的结果偏离真实的情况,那么实际分析的过程中研究者应当评估是否存在批次效应,并决定是否要进行去批次处理。 值得注意的是,即使使用了所谓的去批次效应的工具,批次效应仍不能被完全消除,只是尽可能的减少了批次带来的干扰! combat去批次-可视化# 官方展示了三种函数设置方式# combat_edata1 = ComBat(dat=edata, batch=batch, mod=NULL, par.prior=TRUE combat-seq去批次# 官方展示了三种函数设置方式# adjusted <- ComBat_seq(count_matrix, batch=batch, group=NULL)# group=NULL removeBatchEffect去批次# 设置批次信息batch <- pheno$batch # 批次# 设置生物学分类,告诉函数不要把生物学差异整没了 pheno$cancer <- factor
上一节我们基于seucat框架学习了单细胞转录组单样本分析,本节我们学习多样本整合去批次的内容。 首先要清楚的是不同的批次效应算法适用于不同的场景。 从而更直观的理解去批次效应。 去批次模型 我们首先尝试基于全局模型的combat: adata_combat = ov.single.batch_correction(adata, batch_key='batch', basis='X_mde_combat', frameon='small', color=['batch', 'cell_type'], show=False) 结果图: 从结果图中可以看出,去批次的效果并不好 总结: 本节我们使用三个样本的骨髓数据,测试了去批次效应的模型,总体分为降维、建模并消除批次效应、嵌入三个步骤。
SAP QM 物料主数据分类视图维护了批次分类特性值以后,不允许去批次主数据里覆盖了? 业务场景:某物料的某个特性,有标准值,然后每个批次也有该特性的不同的值。 笔者试图如下方式来满足这个业务场景的需求:1)物料主数据分类视图023分类的特性里维护标准值;2)批次主数据里分类视图的该特性里维护这个批次的实际值。 经过项目实践证明,这个思路是行不通的。 1,如下的物料, 在分类视图里,我为某个特性值维护了一个数值,如下图: 2, MSC1N 去创建一个新的批次,在批次分类视图里,维护该批次这个特性的值,比如99,系统报错, 只能维护一个跟物料主数据里该特性值相同的值 ,比如100, 3, 该特性的值是single value, 这也是为啥项目实践中,物料主数据里的批次分类(class type 023)的特性值多是空的原因。 因为一旦在物料主数据里设置了特性值,就不能在批次主数据的分类视图里维护不同的特性值了。这是SAP标准行为。 2020-12-20 写于苏州市。
其中有亮点问题没有涉及到,一个是多样本去批次问题(事实证明,我们演示的数据没有批次效应,这里我们仅仅是演示,么有意义),一个是类似于R中那样进行下采样分析,因为visium HD数据太大了,虽然服务器python sketched_adata = sc.concat(sketched_adatas)#合并进行后续降维分析 sc.tl.pca(sketched_adata) #这里直接演示使用harmony进行批次矫正 random_state=0) sc.tl.umap(sketched_adata,min_dist=0.5, spread=2, random_state=0) # Plot UMAP #这个结果起来批次矫枉过正了
去批次这个分析在我们组学数据分析领域非常常见, 可以提高数据质量,确保分析结果的准确性和可靠性。 然而,去批次效应并不总是完美的,需要结合具体的数据特点和生物学背景,选择合适的方法,并进行仔细的验证和解释。 如果不进行去批次效应处理,可能会对后续的数据分析和生物学解释产生误导。 统计分析:批次效应可能会掩盖或模糊化真实的生物学变异,使得统计分析的结果不准确。去除批次效应可以提高统计检验的可靠性。 机器学习:在利用机器学习算法进行模式识别或分类时,批次效应可能会引入噪声,影响模型的性能。去批次效应可以提高模型的泛化能力和预测准确性。 DESeq2包本来就是可以把批次这个变量考虑进去 我们拿常规的转录组数据分析"去批次效应"(batch effect removal)这个操作举例来说明,详见:转录组测序的count矩阵如何去批次呢(sva
Stanford 大学 在MOOC上面的公开课:PH525x series - Biomedical Data Science 还专门抽一个章节来讲解这个问题,足以见它的重要性。 http://genomicsclass.github.io/book/
这个工具除了基本的批次效应矫正,还可以对数据之间的批次影响的情况进行检测。 在这个数据库当中,主要是通过PVCA算法来评估批次对于分组的影响。 通过UMAP来可视化批次效应的影响,然后通过SVA包当中的Combat算法来去除批次效应。 在这里我们可以选择PCVA算法来数据来评估各个批次效应的影响程度。也可以选择UMAP 来计算可视化批次效应的影响。 需要注意的是,PCVA根据作者的介绍这个是用来评价芯片数据的批次效应的。 结果主要是包括三个内容 批次去除之后的热图 批次效应去除后的表达数据 批次效应去除后,差异表达分析的结果。 总的来说 以上就是两个用来去除批次效应的工具。其中 Batch Server使用的是经典的算法。除了基本的批次效应去除还可以在前期检测批次效应和后期检测去除后的结果。
目前我们还是就纯粹的count矩阵即可,如果大家的count矩阵来源于多个数据集,理论上就需要去批次啦。 dat2,dat3,dat4,common_rows,Group,exp,file = "Rdata/exp.Rdata") 然后使用sva包的ComBat_seq函数针对转录组测序的count矩阵去批次 如下所示的代码: rm(list = ls()) load("Rdata/exp.Rdata") #处理批次效应(combat) library(sva) #ComBat_seq是基于ComBat框架的改进模型
以往的推文中我们没有对批次效应有个量化的概念,往往是画个PCA或者单细胞中做个UMAP、tSNE肉眼看看,上周组会我注意到师兄讲文献提到了这个(使用kBET检测批次效应)方法但没有解释,刚好我就自己学习学习 (Abstract) 使用kBET来评估常用的批次回归和归一化方法,并量化它们在保留生物变异性的同时消除批次效应的程度 ... 观察到的拒绝率使用样品的实际批次标签,并描述了批次效应引起的偏差。默认情况下,kBET只测试样本的一个子集的良好混合性,并重复过程“n_repeat”次以创建显示的统计数据。 在这里,我们进一步显示一名患者的摘要信息: kBET中的零模型(null model)包括随机排列批次标签以估计预期的拒绝率,而观察到的拒绝率使用实际的批次标签来测量批次效应引起的偏差 我个人理解就是非参数方法 后面的部分作者使用kBET来评估常用的批次回归和归一化方法,并量化它们在保留生物变异性的同时消除批次效应的程度 得出normalization方法使得表达谱同分布来解决批次效应会下游分析产生不利影响,
这意味着,对于启用了批次管理的物料,所有的库存移动都需要录入批次号(自动或人工指定),当为收入时还需要指定批次属性。 通常,批次管理依赖于分类系统保存批次属性,简单的配置过程如下 ? 1、激活批次管理并指定批次的级别:在此处激活系统的批次管理功能;批次级别是指批次号的生产范围,由小到大可以选择是工厂级别、物料级别或客户端级别,意义就是批次号在哪个级别是唯一的,比如选择了物料级别,那么当接受到物料时生产一个批次号 1.复制生产订单号至批次号码上。 2.复制销售订单号至批次号码上。 3.批次号码按物料类型来分配。 4.批次号码按物料号码来分配。 5.批次号码包括日期。 6.批次号码包括工厂号码。 Batch Splits:批次分割 a. No.of splits:分割的数量。数量决定了满足目标数量需要最多多少个批次,如果该数量下的批次总数还不能满足的话,系统不会自动去分配下一个批次。 在上述不能满足的情况下,可以手动去增加或减少分割的数量。 c. OverDel allowed,分割后,总数量是否可以超过目标数量。 不选择的话,系统会提示一个 Warning信息。
V5的升级部分主要体现在以下4个方面(https://satijalab.org/seurat/articles/get_started_v5_new),本次先介绍第一个:Seurat V5中去批次方法的集成 Seurat v5引入了更加灵活和精简的基础架构,可以用一行代码完成不同的集成去批次算法,极大的减少了不同方法的环境准备和数据处理时间,可以更聚焦在使用哪种方法效果更好。 Seurat v5中的integratelayer函数支持一行代码完成去批次集成分析,当前支持以下五种主流的单细胞集成去批次方法。 4,确定去批次方法 4.1 ,umap展示 这里用CCA 和 RPCA 示例,其他的两种同样的方式,注意修改reduction.name 。 三 FindMarker 分析 确定去批次方法后,就可以进行FindMarker 以及注释。
SAP 序列号里'主批次'与'库存批次'不同,如何修改? 如下的序列号,'主批次'与'库存批次'字段值不相同, 这是错误的数据,会带来后续的发货过账,POD等报错。 简单的使用IQ02去修改的话,是不能成功的。 如下图: 把主批次也改成4211913013,然后保存, 保存,系统报错,如下图: 必须使用如下方式修改, 选择'从库存',回车,进入如下界面, 修改主批次字段值,跟库存批次字段值保持一致,保存, 点击按钮 继续IQ02, 输入物料号和批次号,进入修改界面, 选择'库存'选项, 然后回车, 啥都不做,直接保存, 再次提示序列号已被更改。 此时,才算是修改好了,'主批次'与'库存批次'字段值保持一致了,如下图: 2019-03-05 写于苏州市高新区。
(harmony) library(patchwork) library(tidyr) library(ggplot2) library(Seurat) pbmc.stim, pbmc.ctrl是2个批次的单细胞数据 ## 未进行批次效应校正 library(cowplot) options(repr.plot.height = 5, repr.plot.width = 12) p1 <- DimPlot(object bacth就是分组变量,相当于2个批次效应的单细胞数据分组信息pbmc@meta.data$bacth。 示例:如果数据集包含批次信息和其他变量,可以将批次信息放在一个变量中,并将该变量传递给group.by.vars参数,以便根据批次信息对数据进行整合。 harmony_embeddings <- Embeddings(pbmc, 'harmony') harmony_embeddings[1:4, 1:4] (7) 去除批次效应后的可视化 options
本周收到业务的一个问题,MIGO投料的时候批次确定功能建议的数量不准确。在批次确定界面里,每个批次的可用数量都是无穷大,如下图示: ? 尽管如此,我还是着了开发同事帮忙以debug的方式去查原因。最后得到了开发同事的反馈,说是不是因为增强导致的,而是系统的后台配置导致的。 具体的配置点如下, ? ? 去掉后的测试效果如下, ? 经验证批次可用数量都是正确的,看MMBE报表结果, ? 这让笔者很是意外,觉得很有总结的价值,是故写下这篇文字。 2019-03-15 写于苏州市。
1 <概述> <在一些行业的生产过程中,产品按照批次进行生产。WinCC 在批次生产过程中会对一些生产数据进行归档,以便于后期对批次生产进行分析或者追溯。 这就给这种希望根据批次名称进行批次数据查询的应用带来了一些不便。为了解决这个问题,本文将介绍如何能够通过生产批次名称来进行批次数据过滤查询的组态编程方法。 那么也就意味着只要能够在 WinCC 中归档批次名称的同时,将该批次的开始生产时间以及结束生产时间与批次名称一同进行归档。 当选择了需要查询的批次名称的时候也就能够获取到该批次的生产起始以及结束时间,再根据这两个时间即可过滤查询出该批次生 产过程中归档的所有历史数据。 2.5 <编辑按钮> <如图 06 添加 3 个按钮,开始批次生产、结束批次生产以及选择并查询。 为开始批次生产按钮编写脚本如图 07。 为结束批次生产按钮编写脚本如图 08。
01 前言 正如我们所知道的,在系统还没有任何批次数据前,可以按需要指定批次级别,而无须特殊的转换操作: ? 通常来说,项目中常用的级别是工厂级或物料级。 其中,工厂级指的是可以按工厂来设置物料是否进行批次管理,且同一物料在不同工厂的批次主数据可以是不一样的;而物料级则仅能按物料来设置是否进行批次管理,即对于某个物料,一旦需要启用批次则需要在所有工厂中同时启用批次 ,而且同一批次在不同工厂下的批次主数据是一致的。 在全新的系统中批次级别默认为物料级。通常来说,即使发生了业务,也可以将批次级别从工厂级转换为物料级,但反之则不允许。 以下是将批次级别从物料级转为工厂级的的测试,测试在具有批次数据的环境中执行。 02 转换程序 1、按NOTES:41715的要求准备程序:ZCHTCUCH、ZM07CHDX_TEXT。
小洁老师在去除批次效应的探索文件里给出了两种方法,一个是用R包limma中的函数removeBatchEffect(),另一个是R包SVA中的函数ComBat()。 区别就在于,是先进行样本整合,然后去除批次效应,最后进行差异分析;还是,对每个数据集进行独立分析,然后RRA整合DEG,拿到多个数据集共有的DEG,所以我尝试比较了接触到的这两种方法的结果差异。 先整合所有数据集,然后用limma去除批次效应,再进行差异分析,然后拿top10 上下调基因与文章中给出top10进行对比,结果如下(带星标的为一致的基因): ? 这么看起来,似乎是 我们的用limma去除批次效应,再进行差异分析,然后拿top10 上下调基因与文章的结果一致性好一点哦。
SVA适用于高维数据的批次效应校正,支持以下数据 1. 基因芯片 2. RNA-seq 3. 甲基化表达谱 4. 其他表达量数据 提供了两种方法来处理不同的批次效应 1. 识别未知的batch effect,并校正,使用sva函数 需要注意的是,在校正批次效应之前,表达量数据必须经过归一化操作,而且去除了缺失的基因,比如在80%的样本中没有表达量的基因。 除了表达量矩阵外,还要求提供以下两种设计矩阵model matrix 1. null model,只包含adjustment variable, 即需要校正批次效应的变量 2. full model, 1.678983e-04 5.652893e-01 2.466591e-04 8.168562e-08 1294_at 2.035400e-02 通过这两种方法,可以快速的校正数据中存在的批次效应