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.adjust
    GO:0002769       BP GO:0002769                   natural killer cell inhibitory signaling pathway   34/3402  36/21288 3.281964e-25 2.102098e-21
    GO:0002765       BP GO:0002765                     immune response-inhibiting signal transduction   35/3402  63/21288 6.761106e-13 2.165244e-09
    GO:0002767       BP GO:0002767 immune response-inhibiting cell surface receptor signaling pathway   34/3402  61/21288 1.268932e-12 2.709170e-09
    GO:0022904       BP GO:0022904                               respiratory electron transport chain   55/3402 140/21288 2.577823e-11 4.127739e-08
    GO:0042773       BP GO:0042773                           ATP synthesis coupled electron transport   48/3402 117/21288 7.858191e-11 8.388619e-08
                     qvalue
    GO:0002769 1.719058e-21
    GO:0002765 1.770698e-09
    GO:0002767 2.215511e-09
    GO:0022904 3.375592e-08
    GO:0042773 6.860063e-08
                                                                                                                                                                                                                                                                      geneID
    GO:0002769                                                                                                                                                                                                                                                       KIR2DL1
    GO:0002765                                                                                                                                                                                                                                                  CD33/KIR2DL1
    GO:0002767                                                                                                                                                                                                                                                       KIR2DL1
    GO: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/COX5B
    GO: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/COX5B
               Count
    GO:0002769     1
    GO:0002765     2
    GO:0002767     1
    GO:0022904    38
    GO: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   BgRatio
    GO:0002769       BP GO:0002769                   natural killer cell inhibitory signaling pathway   34/3402  36/21288
    GO:0002765       BP GO:0002765                     immune response-inhibiting signal transduction   35/3402  63/21288
    GO:0002767       BP GO:0002767 immune response-inhibiting cell surface receptor signaling pathway   34/3402  61/21288
    GO:0022904       BP GO:0022904                               respiratory electron transport chain   55/3402 140/21288
    GO: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)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值