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

本文主要是介绍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 最后,运行的时间有点长啊....

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

这篇关于scDEA一键汇总12种单细胞差异分析方法 DESeq2、edgeR、MAST、monocle、scDD、Wilcoxon的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/834618

相关文章

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

Mysql中InnoDB与MyISAM索引差异详解(最新整理)

《Mysql中InnoDB与MyISAM索引差异详解(最新整理)》InnoDB和MyISAM在索引实现和特性上有差异,包括聚集索引、非聚集索引、事务支持、并发控制、覆盖索引、主键约束、外键支持和物理存... 目录1. 索引类型与数据存储方式InnoDBMyISAM2. 事务与并发控制InnoDBMyISAM

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文