数据挖掘 | Count数据去除批次效应后不是整数甚至还出现负值导致无法进行差异分析怎么办?

之前咱们介绍过数据挖掘 | 批次效应的鉴定与处理 | 附完整代码 + 注释 | 看完不会来揍我,但是很多小伙伴遇到了Count数据批次处理后不是整数甚至还出现负值的问题,这就导致无法使用某些包包进行差异分析(对差异分析感兴趣的小伙伴可以查看:看完还不会来揍/找我 | 差异分析三巨头 —— DESeq2、edgeR 和 limma 包 | 附完整代码 + 注释),如下所示:

那该怎么办呢?ComBat-seq帮你搞定!走!一起看看去!


  • 如果小伙伴们有需求的话,可以加入我们的交流群:一定要知道 | 永久免费的环境友好型生信学习交流群又双叒叕来啦!| 伴随不定期群友好物分享!在这里,你可以稍有克制地畅所欲言!

  • 超级建议大家在入群前或入群后可以看一下这个:干货满满 | 给生信小白的入门小建议 | 掏心掏肺版!绝对干货满满!让你不虚此看!

  • 如果有需要个性化定制分析服务的小伙伴,可以看看这里:你要的个性化生信分析服务今天正式开启啦!定制你的专属解决方案!全程1v1答疑!!绝对包你满意!


ComBat-seq介绍

其实咱们之前有浅浅提过一嘴,Count数据可以用ComBat_seq

但是没有细讲!咱们今天展开说说!

ComBat-seq是一种专门针对Count数据的批次效应处理工具,它是基于ComBat的改进版。

ComBat-seq发表于NAR Genomics and Bioinformatics,有兴趣的小伙伴们可以查看原文:ComBat-seq: batch effect adjustment for RNA-seq count data | NAR Genomics and Bioinformatics | Oxford Academic

原文链接:https://doi.org/10.1093/nargab/lqaa078

ComBat-seq接受未经转换的原始计数矩阵作为输入,与ComBat相同,它也需要批次信息(也就是你有几批数据,也就是不同的数据集,也就是不同的实验批次等等)。

ComBat-seq使用负二项回归模型来去除批次效应,通过将原始数据映射到预期分布来提供调整后的数据。与ComBat假设的高斯分布相比,这种方法更能捕捉RNA-Seq计数数据的特性。ComBat-seq去除批次效应后得到的数据保留了计数数据的整数特性,使其可以与常见差异分析工具(例如edgeR、DESeq2等,这些工具要求的输入数据为原始计数数据)的数据需求相兼容。

方法原理

Combat-seq的原理如下图所示:

有兴趣的小伙伴可以去看看原文!这里我就不展开说了哈哈哈哈哈哈!

代码实操

包的安装与加载

# 安装并加载包包
# devtools::install_github("zhangyuqing/sva-devel")
library(sva)

如果GitHub上的包安装出现问题,噢不,如果包的安装过程中出现任何问题,都可以查看:看完不会来揍我 | R包的下载与安装 | 再也没有一个包可以逃出你的手掌心啦

基本用法

ComBat_seq要求至少输入两个参数 —— 来自RNA-Seq的原始计数矩阵(不进行任何归一化或转换)以及批次信息

# 基本用法

# 生成一个50行8列的负二项分布矩阵
set.seed(0425)
count_matrix <- matrix(rnbinom(400, size = 10, prob = 0.1), nrow = 50, ncol = 8)
head(count_matrix)
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
# [1,]   93   73   50   54  100  107   90   81
# [2,]  104   85  142  112  146   99   89   71
# [3,]   79  121   83  110  126   66   60   95
# [4,]   61   71   99   85   85   53   84   55
# [5,]  117  143   55  101   76  115  103  129
# [6,]  106   71   47   84   71   85  107   75

# 都是整数嗷!

# 创建一个批次(batch)向量,一共8个样本,其中前4个样本属于批次1,后4个样本属于批次2
batch <- c(rep(1, 4), rep(2, 4))
head(batch)
# [1] 1 1 1 1 2 2

# 使用ComBat_seq函数进行批次效应的调整
adjusted <- ComBat_seq(count_matrix, batch = batch, group = NULL)
# count_matrix: 待调整的数据矩阵
# batch: 批次信息向量,指定每个样本所属的批次
# group: 不指定分组信息,因此默认使用批次作为调整的依据

指定单个原有生物学分组

样本中的有些分组,本身就是有差别的,不可以矫枉过正,所以我们在去除批次的同时,也需要保留它们原本生物学上的差异哟!数据挖掘 | 批次效应的鉴定与处理 | 附完整代码 + 注释 | 看完不会来揍我中有具体介绍过,ComBat函数的mod选项就是用来指定原有分组的,咱们这里的ComBat_seq函数用的是group选项。我们指定分组后,原有的生物学差异就会在调整后的数据中保留下来啦!

# 指定单个原有生物学分组

# 创建一个长度为8的分组(group)向量
group <- rep(c(0,1), 4)
head(group)
# [1] 0 1 0 1 0 1

# 使用ComBat_seq函数进行批次效应的调整,并加入分组信息作为调整的依据
adjusted_counts <- ComBat_seq(count_matrix, batch = batch, group = group)
# count_matrix: 待调整的数据矩阵
# batch: 批次信息向量,指定每个样本所属的批次
# group: 分组信息向量,用于更精细地调整数据

指定多个原有生物学分组

如果你希望指定多个生物学分组变量,可以将它们作为矩阵或数据框传递给参数covar_mod

# 指定多个原有生物学分组

# 创建两个长度为4的协变量向量
cov1 <- rep(c(0,1), 4)
cov2 <- c(0,0,1,1,0,0,1,1)

# 将这两个协变量合并成一个协变量矩阵
covar_mat <- cbind(cov1, cov2)
head(covar_mat)
# cov1 cov2
# [1,]    0    0
# [2,]    1    0
# [3,]    0    1
# [4,]    1    1
# [5,]    0    0
# [6,]    1    0

# 使用ComBat_seq函数进行批次效应的调整,并加入协变量信息作为调整的依据
adjusted_counts <- ComBat_seq(count_matrix, batch = batch, group = NULL, covar_mod = covar_mat)
# count_matrix: 待调整的数据矩阵
# batch: 批次信息向量,指定每个样本所属的批次
# group: 不指定分组信息,因为你已经把想要指定的分组信息放在covar_mat中啦!所以这里就不需要了!
# covar_mod: 协变量矩阵,用于更精细地调整数据

文末碎碎念

那今天的分享就到这里啦!我们下期再见哟!

最后顺便给自己推荐一下嘿嘿嘿!

如果我的分享对你有用的话,欢迎关注点赞在看转发分享阿巴阿巴阿巴阿巴巴巴!这可是我的第一原动力!

蟹蟹你们的喜欢和支持!!!

参考资料

  1. https://github.com/zhangyuqing/ComBat-seq
  2. https://doi.org/10.1093/nargab/lqaa078
  3. https://www.jianshu.com/p/ed8a1b1ab7b7

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/573932.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL中如何随机获取一条记录

点击上方蓝字关注我 随机获取一条记录是在数据库查询中常见的需求&#xff0c;特别在需要展示随机内容或者随机推荐的场景下。在 MySQL 中&#xff0c;有多种方法可以实现随机获取一条记录&#xff0c;每种方法都有其适用的情况和性能特点。在本文中&#xff0c;我们将探讨几种…

word添加行号

打开页面设置&#xff0c;找到行号

2018-2023年上市公司富时罗素ESG评分数据

2018-2023年上市公司富时罗素ESG评分数据 1、时间&#xff1a;2018-2023年 2、来源&#xff1a;整理自WIND 3、指标&#xff1a;证券代码、简称、ESG评分 4、范围&#xff1a;上市公司 5、指标解释&#xff1a; 富时罗素将公司绿色收入的界定和计算作为公司ESG 评级打分结…

「白嫖」开源的后果就是供应链攻击么?| 编码人声

「编码人声」是由「RTE开发者社区」策划的一档播客节目&#xff0c;关注行业发展变革、开发者职涯发展、技术突破以及创业创新&#xff0c;由开发者来分享开发者眼中的工作与生活。 面对网络安全威胁日益严重的今天&#xff0c;软件供应链安全已经成为开发者领域无法避免的焦点…

OpenWRT设置自动获取IP,作为二级路由器

前言 上一期咱们讲了在OpenWRT设置PPPoE拨号的教程&#xff0c;在光猫桥接的模式下&#xff0c;OpenWRT如果不设置PPPoE拨号&#xff0c;就无法正常上网。 OpenWRT设置PPPoE拨号教程 但现在很多新装的宽带&#xff0c;宽带师傅为了方便都会把光猫设置为路由模式。如果你再外…

【A-024】基于SSH的房屋租赁管理系统(含论文)

【A-024】基于SSH的房屋租赁管理系统&#xff08;含论文&#xff09; 开发环境&#xff1a; Jdk7(8)Tomcat7(8)MySQLIntelliJ IDEA(Eclipse) 数据库&#xff1a; MySQL 技术&#xff1a; SpringStruts2HiberanteBootstrapJquery 适用于&#xff1a; 课程设计&#xff0c;毕…

半波整流220V转正5V负-5V100mA恒压WT5101A

半波整流220V转正5V负-5V100mA恒压WT5101A WT5101A 是一款专为 Buck 和 Buck-Boost 拓扑而设计的高效、具有成本优势的离线恒压稳压器&#xff0c;内嵌有500V MOSFET。在降低系统成本的同时&#xff0c;这款稳压器只需少量的外部元件就能输出默认的5V电压。在轻负载条件下&…

Sping源码(七)—context: component-scan标签如何扫描、加载Bean

序言 简单回顾一下。上一篇文章介绍了从xml文件context component-scan标签的加载流程到ConfigurationClassPostProcessor的创建流程。 本篇会深入了解context component-scan标签底层做了些什么。 component-scan 早期使用Spring进行开发时&#xff0c;很多时候都是注解 标…

智能算法 | Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法

智能算法 | Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法 目录 智能算法 | Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法效果一览基本介绍程序设计参考资料效果一览 基本介绍 Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法 融合自适应…

ds18b20温度传感器驱动程序

ds18b20驱动程序 有了之前延时的方法&#xff0c;那么实现一个单总线数据传输的传感器驱动程序就非常简单了。下面我们套用杂项驱动框架来编写ds18b20驱动程序。 实现需要明确的是&#xff1a;**ds18b20驱动的本质是通过2440的gpio&#xff0c;通过给定的时序对ds18b20的读写数…

【介绍下WebStorm开发插件】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

保护你的网站:了解5种常见网络攻击类型及其防御方法

随着互联网的迅猛发展&#xff0c;针对网站的各种类型的网络攻击随之增加&#xff0c;网络攻击事件层出不穷&#xff0c;由此&#xff0c;如何保护网站安全成为每个网站所有者的重要议题。在下面的内容中&#xff0c;我们将探讨5种常见网络攻击类型及其防御方法&#xff0c;以帮…

SNETCracker--超级弱口令检查工具简介

一、简介 SNETCracker 超级弱口令检查工具是一款Windows平台的弱口令审计工具&#xff0c;支持批量多线程检查&#xff0c;可快速发现弱密码、弱口令账号&#xff0c;密码支持和用户名结合进行检查&#xff0c;大大提高成功率&#xff0c;支持自定义服务端口和字典。 二、SNE…

常见内网系统网络结构及nginx代理配置

系统网络结构图及nginx配置 1.系统网络结构图2.Nginx网络配置2.1请求从互联网区访问到内网区2.2 请求从内网访问互联网 1.系统网络结构图 传统公司服务部署网络都会分区&#xff0c;应用都部署在内网区&#xff0c;请求通过dmz区转出内网与互联网发生交互。 结构图详解&#…

springCloud集成activiti5.22.0流程引擎

springCloud集成activiti5.22.0流程引擎 点关注不迷路&#xff0c;欢迎再访&#xff01; 精简博客内容&#xff0c;尽量已行业术语来分享。 努力做到对每一位认可自己的读者负责。 帮助别人的同时更是丰富自己的良机。 小编最近工作需要涉及到流程&#xff0c;由于网络上5.22版…

CHARLS轻松发二区,只用了COX回归模型 | CHARLS CLHLS CFPS 公共数据库周报(4.3)...

零基础CHARLS发论文&#xff0c;不容错过&#xff01; 长期回放更新指导&#xff01;适合零基础&#xff0c;毕业论文&#xff0c;赠送2011-2020年CHARLS清洗后的数据全套代码&#xff01; CHARLS公共数据库 CHARLS数据库简介中国健康与养老追踪调查(China Health and Retireme…

C++初阶学习第三弹——类与对象(上)——初始类与对象

前言&#xff1a; 在前面&#xff0c;我们已经初步学习了C的一些基本语法&#xff0c;比如内敛函数、函数重载、缺省参数、引用等等&#xff0c;接下来我们就将正式步入C的神圣殿堂&#xff0c;首先&#xff0c;先给你找个对象 目录 一、类与对象是什么&#xff1f; 二、类的各…

ArtNeRF、Attention Control、Pixel is a Barrier、FilterPrompt

本文首发于公众号&#xff1a;机器感知 ArtNeRF、Attention Control、Pixel is a Barrier、FilterPrompt ArtNeRF: A Stylized Neural Field for 3D-Aware Cartoonized Face Synthesis Recent advances in generative visual models and neural radiance fields have greatly …

【笔试训练】day11

1.游游的水果大礼包 思路&#xff1a; 枚举。假设最后的答案是x个a礼包&#xff0c;y个b礼包&#xff0c;得到一个式子&#xff1a;ansa*xb*y 我们可以枚举x的数量&#xff0c;这样就能变相的把y的求出来。呃这就是鸡兔同笼问题嘛 x最大的范围是多少呢&#xff1f;也就是a礼…

【CouchDB 与 PouchDB】

CouchDB是什么 CouchDB&#xff0c;全名为Apache CouchDB&#xff0c;是一个开源的NoSQL数据库&#xff0c;由Apache软件基金会管理。CouchDB的主要特点是使用JSON作为存储格式&#xff0c;使用JavaScript作为查询语言&#xff08;通过MapReduce函数&#xff09;&#xff0c;并…