scDEA一键汇总12种单细胞差异分析方法 DESeq2、edgeR、MAST、monocle、scDD、Wilcoxon

问题来源

单细胞可以做差异分析,但是究竟选择哪种差异分析方法最靠谱呢?

解决办法

于是我去检索文献,是否有相关研究呢?

https://academic.oup.com/bib/article/23/1/bbab402/6375516

文章指出,现有的差异分析方法(包括用于 bulk RNA-seq 和 scRNA-seq 的方法),它们都对样本量和批次效应敏感。

于是本研究没有执着于寻找现有技术中的最佳方法,也没有执着于开发一种新的高精度和稳健的方法,而是借鉴了现有算法的优势,开发了一种基于集成学习的 scRNA-seq 数据差异表达分析方法,名为 scDEAscDEA 利用 Lancaster 组合概率测试方法,整合了来自 12 种独立方法( 既涵盖 bulk RNA-seq 也涵盖 scRNA-seq 数据) 的分析结果,从而得出一个准确且稳健的共识结果。

scDEA 在控制 I 型错误率、富集特定生物功能的差异表达基因检测、以及对不同样本量和不同实验批次的数据集识别出的一致性差异表达基因方面,都优于单个的差异表达分析方法。为了提供用户友好的工具,作者还开发了一个 R 软件包来实现集成分析过程 (https://github.com/Zhangxf-ccnu/scDEA)。此外,还开发了一个 Shiny 应用,以方便用户更轻松地实施和可视化分析结果 (https://github.com/Zhangxf-ccnu/scDEA-shiny)

.scDEA 的工作原理

scDEA 主要包含以下四个步骤:

  1. 对原始计数矩阵进行归一化,以满足各个差异表达分析方法的要求

  2. 运行 12 种差异表达分析方法,并为每个基因生成 p 值

  3. 整合各个方法生成的 p 值,以获得一致的结果

  4. 对整合后的 p 值进行调整,以解决多重检验问题

注意,对于scDEA,我们需要使用counts矩阵哦:

由于一些差异表达分析框架只接受原始计数矩阵,而其他方法则需要归一化表达矩阵作为输入,为了给所有 12 种独立的差异表达分析方法构建统一的输入,scDEA 首先将原始计数矩阵转换为每百万 (CPM) 比对 reads,然后将原始计数矩阵、CPM 归一化表达矩阵和细胞类型标签一起集成,并使用 R 软件包 SingleCellExperiment [20] 保存为一个 SingleCellExperiment 对象。

scDEA R包安装

.scDEA 软件包的依赖

scDEA 软件包依赖以下 R 软件包:BPSC、DEsingle、DESeq2、edgeR、MAST、monocle、scDD、limma、Seurat、zingeR、SingleCellExperiment、scater 和 aggregation。安装 scDEA 时,它可以加载大部分的依赖包。但是,如果依赖项没有正确安装,则需要您自己手动安装。

.Windows 系统上的注意事项

根据经验,scDEA 在 Windows 系统上无法自动安装 BPSC、DEsingle 和 zingeR 软件包,但是在 Ubuntu 16.04 系统上可以加载所有依赖包。因此,如果您在 Windows 系统上使用 scDEA,建议 首先先安装 BPSC、DEsingle 和 zingeR 软件包。

devtools::install_github("nghiavtr/BPSC")BiocManager::install("DEsingle")devtools::install_github("statOmics/zingeR")devtools::install_github("Zhangxf-ccnu/scDEA")

成功安装:

但是,官方教程太简陋了

data("Grun.counts.hvg")data("Grun.group.information")Pvals <- scDEA_individual_methods(raw.count = Grun.counts.hvg, cell.label = Grun.group.information)combination.Pvals <- lancaster.combination(Pvals, weight = TRUE, trimmed = 0.2)adjusted.Pvals <- scDEA.p.adjust(combination.Pvals, adjusted.method = "bonferroni")

还好,示例数据是可以运行的,激动!

最后每个基因都能得到一个p值,但是奇怪的是,作者并没有给出差异基因的表格(我已经问了作者,静候回复)。但是我们可以退而求其次,把findmarker得到的结果和这个p值取交集,进而得到差异基因。

作者说scDEA这种方法可以减少一类错误,减少细胞数目的影响,减少批次效应的影响......

.下面,我使用自己的pbmc数据测试一下.

如果你对示例数据不熟悉,可以参考我之前的推文与直播

1 20231126单细胞直播一理解pbmc处理流程与常用R技巧   

2 单细胞直播一理解seurat数据结构与pbmc处理流程  

3 单细胞数据pbmc数据下载,标准处理流程获取seurat对象

scDEA 主要包含以下四个步骤:

  1. 对原始计数矩阵进行归一化,以满足各个差异表达分析方法的要求

  2. 运行 12 种差异表达分析方法,并为每个基因生成 p 值

  3. 整合各个方法生成的 p 值,以获得一致的结果

  4. 对整合后的 p 值进行调整,以解决多重检验问题

library(scDEA)load("~/gzh/pbmc3k_final_v4.rds")head(pbmc@meta.data)as.matrix(pbmc@assays$RNA@counts)[1:4,1:4]Pvals <- scDEA_individual_methods(raw.count =as.matrix(pbmc@assays$RNA@counts), #此处必须把稀疏矩阵转为常见的矩阵才可以运行----                                  cell.label = pbmc@meta.data$group )combination.Pvals <- lancaster.combination(Pvals, weight = TRUE, trimmed = 0.2)adjusted.Pvals <- scDEA.p.adjust(combination.Pvals, adjusted.method = "bonferroni")

在我自己的数据种,这段代码也是可以运行的哦

后记

1 作者说scDEA这种方法可以减少一类错误,减少细胞数目的影响,减少批次效应的影响......但是,我跑完了他的整个流程,感觉就是真的这么厉害吗

2 另外,为啥实例教程使用hvg呢,而不是使用整个counts?

3 最后,运行的时间有点长啊....

看完记得顺手点个“在看”哦!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java推荐算法——特征加权推荐算法(以申请学校为例)

加权推荐算法 文章目录 加权推荐算法1.推荐算法的简单介绍2.加权推荐算法详细介绍3.代码实现4.总结 1.推荐算法的简单介绍 众所周知&#xff0c;推荐算法有很多种&#xff0c;例如&#xff1a; 1.加权推荐&#xff1a;分为简单的特征加权&#xff0c;以及复杂的混合加权。主要…

23 OpenCV 直方图比较

文章目录 直方图比较的目的相关性计算 (CV_COMP_CORREL)卡方计算 (CV_COMP_CHISQR)十字计算(CV_COMP_INTERSECT)巴氏距离计算 (CV_COMP_BHATTACHARYYA )compareHist 直方图比较算子示例 直方图比较的目的 直方图比较的目的是衡量两幅图像之间的相似度或差异度。通过计算图像的颜…

Vue 3中实现基于角色的权限认证实现思路

一、基于角色的权限认证主要步骤 在Vue 3中实现基于角色的权限认证通常涉及以下几个主要步骤&#xff1a; 定义角色和权限&#xff1a;首先需要在后端服务定义不同的角色和它们对应的权限。权限可以是对特定资源的访问权限&#xff0c;比如读取、写入、修改等。用户认证&#…

C#非强签名dll搜索顺序

由于不是强签名dll&#xff0c;所以无效考虑全局程序集缓存 (GAC)。 预备工作 新建解决方案ClassLibrary1,新建类库ClassLibrary1,新建控制台程序ShowDllLoc。 利用VS添加引用。 一&#xff0c;利用app.config设置codebase&#xff0c;设置dll的加载路径为&#xff1a;code…

前后端分离项目springsecurity实现用户登录认证快速使用

目录 1、引入依赖 2、创建类继承WebSecurityConfigurerAdapter &#xff08;1&#xff09;重写里面的configure(HttpSecurity http)方法 &#xff08;2&#xff09;重写AuthenticationManager authenticationManagerBean() &#xff08;3&#xff09;密码加密工具 3、继承…

市场复盘总结 20240321

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 23% 最常用的…

算法体系-14 第十四 贪心算法(上)

一 、 递归套路解决判断完全二叉树 1.1 描述 1.2 分析 1.3 代码 public static boolean isCBT2(Node head) {return process(head).isCBT;}public static class Info {public boolean isFull;public boolean isCBT;public int height;public Info(boolean full, boolean cbt…

JNDI注入原理及利用IDEA漏洞复现

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

【题目】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷

极安云科专注职业教育技能竞赛培训4年&#xff0c;包含信息安全管理与评估、网络系统管理、网络搭建等多个赛项及各大CTF模块培训学习服务。本团队基于赛项知识点&#xff0c;提供完整全面的系统性理论教学与技能培训&#xff0c;成立至今持续优化教学资源与讲师结构&#xff0…

ResNet《Deep Residual Learning for Image Recognition》

ResNet论文学习 引言Deep Residual Learning 深度残差学习Residual Learning 残差学习Identity Mapping by Shortcuts 通过捷径来恒等映射网络结构Plain NetworkResidual Network实现细节 实验总结代码复现Building blockBottleneckResnet 18Resnet 34Resnet 50 引言 深度网络…

(vue)新闻列表与图片对应显示,体现选中、移入状态

(vue)新闻列表与图片对应显示&#xff0c;体现选中、移入状态 项目背景&#xff1a;郑州院XX项目首页-新闻展示模块&#xff0c;鼠标移入显示对应图片&#xff0c;且体现选中和移入状态 首次加载&#xff1a; 切换列表后&#xff1a; html: <el-row :gutter"20"…

vue/vite添加地图

最简单的方式&#xff0c;不论vue2、vue3、vite均适用&#xff0c;例如以高德为例&#xff1a; index.html 引入 <scriptsrc"https://webapi.amap.com/maps?v1.4.15&key您的key&pluginAMap.ToolBar,AMap.MouseTool,AMap.DistrictSearch,AMap.ControlBar&quo…

IP代理技术革新:探索数据采集的新路径

引言&#xff1a; 随着全球化进程不断加深&#xff0c;网络数据采集在企业决策和市场分析中扮演着愈发重要的角色。然而&#xff0c;地域限制和IP封锁等问题常常给数据采集工作带来了巨大挑战。亿牛云代理服务凭借其强大的网络覆盖和真实住宅IP资源&#xff0c;成为解决这些问…

ElasticSearch使用(一)

文章目录 一、简介1. 数据类型2. 倒排索引3. Lucene4. ElasticSearch5. Solar VS ElasticSearch 二、ElasticSearch入门1. 简介2. 分词器3. 索引操作4. 文档操作5. ES文档批量操作 二、ElasticSearch的DSL1. 文档映射Mapping2. Index Template3. DSL 一、简介 1. 数据类型 结…

API(时间类)

一、Date类 java.util.Date类 表示特定的瞬间&#xff0c;精确到毫秒。 Date常用方法&#xff1a; public long getTime() 把日期对象转换成对应的时间毫秒值。 public void setTime(long time) 把方法参数给定的毫秒值设…

TikTok账号用什么IP代理比较好?

对于运营TikTok的从业者来说&#xff0c;IP的重要性自然不言而喻。 在其他条件都正常的情况下&#xff0c;拥有一个稳定&#xff0c;纯净的IP&#xff0c;你的视频起始播放量很可能比别人高出不少&#xff0c;而劣质的IP轻则会限流&#xff0c;重则会封号。那么&#xff0c;如何…

实时数仓之实时数仓架构(Doris)

目前比较流行的实时数仓架构有两类,其中一类是以Flink+Doris为核心的实时数仓架构方案;另一类是以湖仓一体架构为核心的实时数仓架构方案。本文针对Flink+Doris架构进行介绍,这套架构的特点是组件涉及相对较少,架构简单,实时性更高,且易于Lambda架构实现,Doris本身可以支…

供应链投毒预警 | 开源供应链投毒202402月报发布啦

概述 悬镜供应链安全情报中心通过持续监测全网主流开源软件仓库&#xff0c;结合程序动静态分析方式对潜在风险的开源组件包进行动态跟踪和捕获&#xff0c;发现大量的开源组件恶意包投毒攻击事件。在2024年2月份&#xff0c;悬镜供应链安全情报中心在NPM官方仓库&#xff08;…

软考高级:软件架构评估-质量属性:可用性概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

Spark Rebalance hint的倾斜的处理(OptimizeSkewInRebalancePartitions)

背景 本文基于Spark 3.5.0 目前公司在做小文件合并的时候用到了 Spark Rebalance 这个算子&#xff0c;这个算子的主要作用是在AQE阶段的最后写文件的阶段进行小文件的合并&#xff0c;使得最后落盘的文件不会太大也不会太小&#xff0c;从而达到小文件合并的作用&#xff0c;…