当前位置: 首页 > news >正文

R包fastEnrich预开发一 -- 快速GO富集分析、自动化报告、优化气泡图

开发背景

  • 生信分析中, 富集分析是非常常见的分析之一, 而且种类繁多, 至少包括通路富集分析、GSEA、单基因GSEA、GSVA、ssGSEA
  • 而且基因ID的准备也需要转来转去, 很是麻烦
  • 其次可视化的方式也非常多, 美观度参差不齐
  • 最后对与富集结果的报告, 每次要复制粘贴翻译编辑很少麻烦
  • 因此, 很久之前就准备开发个R包, 专门实现和可视化所有的富集分析相关的分析
  • 虽然很多函数我都编写好了, 但要开发成R包且把我所有的想法都集成起来, 并编写好教学文档和函数文档, 还是非常费时间的
  • 所以我就先一点点地开发吧, 先实现基础的GO富集分析和气泡图的美化
  • 后续会慢慢开发, 【目前定价是50】, 微信 【直接转账】 给我即可
  • 买过我的R包fastGEO V1.8.0 快速下游分析,多数据集批量下载处理,火山图优化都知道, R包的价格会随之更新的内容增加而上调了, 由20调到50再到100。
  • 所以, 后续的R包也是一样, 越早买越便宜, 可永久免费获取最新版本!并且有交流群
# # 载入富集分析函数, 作者测试用的
# fun_dir = "W:/02_Study/R_build/build/05_fastEnrich/functions"
# invisible(sapply(lf("rf", fun_dir), source))
# 加载R包
library(fastEnrich)
    ========================================欢迎使用 fastEnrich (版本 1.0.0)- 作者: 生信摆渡- 微信: bioinfobaidu1- 帮助文档: help(package = fastEnrich)========================================

功能演示

run_GO - 快速GO富集分析

  • 首先解决的就是ID自动转换问题

  • 我们常用的是SYMBOL, 而GO要使用ENSEMBL, KEGG要使用ENTREZID 。。。

  • run_GO和run_KEGG可以根据输入基因的特征自动判断并转换ID, 无需再手动转换

  • 需要注意的是目前只支持人和小鼠的自动富集分析, 因为我不做其他的物种

  • 之后就是使用clusterProfiler进行富集分析了

  • 然后解决的就是输出表格geneID这一列了, 原始表格依然是ENSEMBL或者ENTREZID, 然而我们还是需要SYMBOL进行快速查看, 所以就再给它转回去。。。

  • 最后就是富集结果报告的自动生成, 报告富集到了多少通路, BP CC MF分别有多少,top5是哪些通路,并且进行翻译和文本拼接

  • 这里使用limma的差异表达结果的差异基因进行测试

DEG_tb = read.csv("./test/01_GO/DEG_tb.csv", row.names = 1)
DEGs = rownames(DEG_tb)[DEG_tb$DEG != "Not_Change"]
hd(DEGs)
    Type: character  Dim: 3702 [1] "MMP1"   "SPP1"   "BPIFB1" "CP"     "ND6"   
ego = run_GO(DEGs, out_name = "./test/01_GO/01_GO")
    Check packages ...Convert gene id ...Run GO ONTOLOGY: ALL ...Build report ...Finished! 727 terms enriched, BP:559 CC:93 MF:75 
hd(ego, 5, 10)
    Type: data.frame  Dim: 727 × 10 ONTOLOGY         ID                                                        Description GeneRatio   BgRatio       pvalue     p.adjustGO:0002769       BP GO:0002769                   natural killer cell inhibitory signaling pathway   34/3402  36/21288 3.281964e-25 2.102098e-21GO:0002765       BP GO:0002765                     immune response-inhibiting signal transduction   35/3402  63/21288 6.761106e-13 2.165244e-09GO:0002767       BP GO:0002767 immune response-inhibiting cell surface receptor signaling pathway   34/3402  61/21288 1.268932e-12 2.709170e-09GO:0022904       BP GO:0022904                               respiratory electron transport chain   55/3402 140/21288 2.577823e-11 4.127739e-08GO:0042773       BP GO:0042773                           ATP synthesis coupled electron transport   48/3402 117/21288 7.858191e-11 8.388619e-08qvalueGO:0002769 1.719058e-21GO:0002765 1.770698e-09GO:0002767 2.215511e-09GO:0022904 3.375592e-08GO:0042773 6.860063e-08geneIDGO:0002769                                                                                                                                                                                                                                                       KIR2DL1GO:0002765                                                                                                                                                                                                                                                  CD33/KIR2DL1GO:0002767                                                                                                                                                                                                                                                       KIR2DL1GO:0022904 ND6/DLD/NDUFA5/CCNB1/VPS54/NDUFS1/ETFDH/SLC25A12/PUM2/GPD2/SDHD/NDUFA7/NDUFS4/NDUFB4/COX4I2/COX7A2/COX4I1/NDUFB9/NDUFA12/GPD1/NDUFS5/NDUFB10/SDHB/NDUFA3/COX7A1/NDUFC2/DGUOK/NDUFA6/UQCR10/SDHC/NDUFS7/COX6B1/NDUFC2-KCTD14/DNAJC15/NDUFA2/COX6A1/COX8A/COX5BGO:0042773                                     ND6/DLD/NDUFA5/CCNB1/NDUFS1/SDHD/NDUFA7/NDUFS4/NDUFB4/COX4I2/COX7A2/COX4I1/NDUFB9/NDUFA12/NDUFS5/NDUFB10/SDHB/NDUFA3/COX7A1/NDUFC2/DGUOK/NDUFA6/UQCR10/SDHC/NDUFS7/COX6B1/NDUFC2-KCTD14/DNAJC15/NDUFA2/COX6A1/COX8A/COX5BCountGO:0002769     1GO:0002765     2GO:0002767     1GO:0022904    38GO:0042773    32

report_pathway - 自动化报告

  • run_GO会自动调用report_pathway_GO, 而后者调用的是report_pathway
# 查看报告
readLines("./test/01_GO/01_GO_report.txt")

‘GO富集分析表明,共富集到727个通路。其中BP共富集到559个通路,富集的top5通路分别为:自然杀伤细胞抑制信号通路(natural killer cell inhibitory signaling pathway)、免疫反应抑制信号转导(immune response-inhibiting signal transduction)、免疫反应抑制剂细胞表面受体信号通路(immune response-inhibiting cell surface receptor signaling pathway)、呼吸电子传递链(respiratory electron transport chain)和ATP合成偶联电子传递(ATP synthesis coupled electron transport)。MF共富集到75个通路,富集的top5通路分别为:NAD(P)H脱氢酶(醌)活性(NAD§H dehydrogenase (quinone) activity)、NADH脱氢酶活性(NADH dehydrogenase activity)、NADH-脱氢酶(泛醌)活性(NADH dehydrogenase (ubiquinone) activity)、ATP水解活性(ATP hydrolysis activity)和NADH-脱氢酶(醌(NADH dehydrogenase (quinone) activity)。CC共富集到93个通路,富集的top5通路分别为:呼吸链复合体(respiratory chain complex)、线粒体呼吸体(mitochondrial respirasome)、线粒体呼吸链复合体I(mitochondrial respiratory chain complex I)、NADH脱氢酶复合体(NADH dehydrogenase complex)和呼吸链复合体I(respiratory chain complex I)。’

  • 直接粘贴进分析报告就行了, 手动整理就问你得多久,逆天功能!
  • 当然翻译是务必需要人工矫正的。。。

气泡图

  • 默认每个ONTOLOGY绘制10个, 也可以选择绘制所有的, 当然这种情况是你已经对ego做了筛选, 不然一般会很多

  • 自动化输出图片有个问题是图片宽度的设置, 这里也自动根据字符长度最长的通路进行自动调整宽度了, 当然如果我自动调整的不合适你可以再指定参数w

  • 设置out_name指定输出文件名, 不带后缀

  • 由于有的通路名实在太长, 放在文章里实在不合适, 但又不想删掉, 解决策略就是省略后面一部分, 所以自动设置了最长显示字符宽度为60, 可以通过max_omit调整和omit = FALSE进行关闭自动省略字符功能。

  • 默认参数

set_image(10, 8) # set_image仅控制在jupyter里图片的宽度, 不影响Rstudio的显示和文件的输出
dotplot_GO(ego, out_name = "test/01_GO/02_GO_dotplot")



  • 如果想少一些, 调整ntop
set_image(10, 8) # set_image仅控制在jupyter里图片的宽度, 不影响Rstudio的显示和文件的输出
dotplot_GO(ego, out_name = "test/01_GO/02_GO_dotplot2", ntop = 5)



  • 不进行字符省略
set_image(13, 8)
dotplot_GO(ego, out_name = "test/01_GO/02_GO_dotplot3", omit = FALSE)



  • 虽然气泡按Gene ratio排序会更好看, 但是我们关注的还是p值
  • 所以你也可以选择用P值进行排序
set_image(10, 8)
dotplot_GO(ego, out_name = "test/01_GO/02_GO_dotplot4", sort = "pvalue")



  • 自定义气泡颜色, 颜色支持英文和十六进制
set_image(10, 8)
dotplot_GO(ego, out_name = "test/01_GO/02_GO_dotplot5", color_high = "orange", color_low = "#FBFFD4")



  • 高亮感兴趣的通路, 并自定义颜色
highlight_paths = c("immune response-inhibiting signal transduction", "MHC class II protein complex", "NADH dehydrogenase complex", "MHC protein complex binding","mRNA splicing, via spliceosome")
dotplot_GO(ego, out_name = "test/01_GO/02_GO_dotplot5", color_high = "orange", color_low = "#FBFFD4", highlight = highlight_paths, highlight_color = "#FFA700")



  • 还可以添加title, 不过这些基础的ggplot操作都可以后续自由发挥
  • 如果有多个气泡图同时展示时, 比如不同的细胞类型、亚群、比较组别, 分别指定不同的颜色排列在一起会好看很多
dotplot_GO(ego, out_name = "test/01_GO/02_GO_dotplot6", color_high = "orange", color_low = "#FBFFD4", highlight = highlight_paths, highlight_color = "orange",title = "A vs B")



  • 也可以手动挑选想要展示的通路, 这时候就不是展示前10了,而是给哪些展示哪些, 设置show = "all"
# 三种ONTOLOGY分别取 15 10 5进行展示
neach = c(15, 10, 5)
ego2 = Reduce(rbind, lapply(1:length(neach), function(i) split(ego, f = ego$ONTOLOGY)[[i]][1:neach[i], ]))
hd(ego2)
    Type: data.frame  Dim: 30 × 10 ONTOLOGY         ID                                                        Description GeneRatio   BgRatioGO:0002769       BP GO:0002769                   natural killer cell inhibitory signaling pathway   34/3402  36/21288GO:0002765       BP GO:0002765                     immune response-inhibiting signal transduction   35/3402  63/21288GO:0002767       BP GO:0002767 immune response-inhibiting cell surface receptor signaling pathway   34/3402  61/21288GO:0022904       BP GO:0022904                               respiratory electron transport chain   55/3402 140/21288GO:0042773       BP GO:0042773                           ATP synthesis coupled electron transport   48/3402 117/21288
dotplot_GO(ego2, out_name = "test/01_GO/02_GO_dotplot7", color_high = "orange", color_low = "#FBFFD4", highlight = highlight_paths, highlight_color = "orange",show = "all",title = "A vs B")



软件安装

公共依赖包

  • 依赖包自己安装一下好吧, 无非是那几种安装方法

  • install.packages、BiocManager::install、remotes::install_github

  • 软件安装问题不免费答疑, 这是基本功, 也跟我的开发关系不大

  • ggplot2 (>= 3.5.2),

  • ggthemes (>= 5.1.0),

  • ggtext (>= 0.1.2),

  • grid (>= 4.4.1),

  • clusterProfiler (>= 4.12.3),

  • org.Hs.eg.db (>= 3.19.1),

  • rvest (>= 1.0.4),

自研依赖包

  • 当然也依赖我自己开发的一些R包, 在这里提供了压缩包, 直接运行可快速安装
  • fanyi2 (>= 1.0.0)
  • fastR (>= 1.5.0)
# 安装 fastR
file_fastR = grep("^fastR.*.gz", dir(), value = TRUE)
install.packages(file_fastR, repos = NULL, upgrade = FALSE, force = TRUE)
# 安装 fanyi2
file_fanyi2 = grep("^fanyi2.*.gz", dir(), value = TRUE)
install.packages(file_fanyi2, repos = NULL, upgrade = FALSE, force = TRUE)
http://www.dtcms.com/a/613483.html

相关文章:

  • 企业做网站设置哪些模块网站存储空间
  • Java 集合面试核心:ArrayList/LinkedList 底层数据结构,HashMap扩容机制详解
  • 突破AI视频一致性瓶颈:“无废话”四步电影级工作流
  • Python 编程实战 · 实用工具与库 — Django 项目结构简介
  • Dify-SSE流式及速率限制实现
  • 【ros2】ROS2中添加资源文件(图片、声音、视频等)的完整指南
  • 数据分析笔记08:Python编程基础-数据类型与变量
  • 北仑网站网页建设个人网站实现与设计论文
  • 网站在线留言怎么做做网站大优惠
  • 温州做网站哪家比较好镇江公司网站建设
  • QT/C++使用QMessageBox实现一个简单的登陆窗口
  • 前端CI/CD 流程
  • Visual Basic 挑选颜色
  • Java性能调优工具篇:JMH基准测试与Profiler(JProfiler/Async-Profiler)使用指南
  • ASC学习笔记0020:用于定义角色或Actor的默认属性值
  • 第十篇 扫雷游戏 下(末版·精简)
  • 开发者获取Claude API Key 申请指南:从注册到 Python 调用的实战教程
  • pyinstaller 介绍
  • 建设网站与服务器专业网页设计哪家好
  • 【大语言模型 125】开放域对话实战:自然流畅的闲聊系统完全指南
  • FastAPI基础项目:实现用户管理系统,实现基本的搜索和增删改查功能
  • 小众做的好的网站手机下载工具app
  • Qt for HarmonyOS 3D图片轮播组件开源鸿蒙开发实战
  • Evolution_07_环境
  • MinIO 不再“开放”,RustFS 能否成为更优选择?
  • DMLDCL
  • 大型ERP管理系统多语言分层架构设计
  • WordPress网站404公益页面公司网站建设策划书
  • B-树分析
  • 关于做网站建设公司你应该知道的宣传网站建设方案