专治疗懒病:GO、KEGG富集分析一体函数

news2024/11/25 6:45:32

之前我们写过GO、KEGG的富集分析,参见:补充更新:GO、KEGG(批量分组)分析及可视化。演示了差异基因KEGG或者GO的分析流程。其实差异基因的富集分析输入的文件只需要一组基因就可以了。所以我们发挥了专治懒病的优良传统,将KEGG、GO(BP、CC、MF)的分析封装为一个函数,您只需要提供gene,选择物种即可,只有human和mouse。而且一次性完成KEGG和GO分析结果,免去了分析两次的麻烦。这样应该也不会出错了吧。

函数内容如下:其中相关参数可按照自己的需求修改!

Enrichment_KEGGgo_analusis <- function(genes,                                       species=c('human','mouse')){  library(org.Hs.eg.db)   library(clusterProfiler)    if(species == 'human'){        genes_df <- bitr(genes,                      fromType="SYMBOL",                      toType="ENTREZID",                      OrgDb="org.Hs.eg.db",                      drop = TRUE)         organism = "hsa"    OrgDb = org.Hs.eg.db  }    if(species == 'mouse'){        genes_df <- bitr(genes,                      fromType="SYMBOL",                      toType="ENTREZID",                      OrgDb="org.Mm.eg.db",                      drop = TRUE)     organism = "mmu"    OrgDb = org.Mm.eg.db  }      colnames(genes_df) <- c("gene","EntrzID")            # KEGG  kegg.re <- enrichKEGG(gene = genes_df$EntrzID,                         organism  = organism,                         keyType = "kegg",                        pAdjustMethod = "fdr",                        pvalueCutoff = 0.05,                         qvalueCutoff = 0.05,                         minGSSize = 10,                        maxGSSize = 500)    if (is.null(kegg.re)) {} else {kegg.re <- setReadable(kegg.re, OrgDb = OrgDb, keyType="ENTREZID")}  print("kegg Done")    # GO  go.re1 <- enrichGO(gene = genes_df$EntrzID,                      keyType = "ENTREZID",                      OrgDb= OrgDb,                      ont="BP",                      pAdjustMethod = "fdr",                      pvalueCutoff  = 0.05,                      qvalueCutoff  = 0.05,                      minGSSize = 10,                     maxGSSize = 500,                      readable = TRUE);   print("GOBP Done")    go.re2 <- enrichGO(gene = genes_df$EntrzID,                      keyType = "ENTREZID",                      OrgDb= OrgDb,                      ont="CC",                      pAdjustMethod = "fdr",                      pvalueCutoff  = 0.05,                      qvalueCutoff  = 0.05,                      minGSSize = 10,                      maxGSSize = 500,                      readable = TRUE);   print("GOCC Done")    go.re3 <- enrichGO(gene = genes_df$EntrzID,                      keyType = "ENTREZID",                      OrgDb= OrgDb,                      ont="MF",                      pAdjustMethod = "fdr",                     pvalueCutoff  = 0.05,                      qvalueCutoff  = 0.05,                      minGSSize = 10,                      maxGSSize = 500,                      readable = TRUE);   print("GOMF Done")  
  enrich_list <- list(kegg.re, go.re1, go.re2, go.re3)  names(enrich_list) <- c("KEGG","GO_BP","GO_CC","GO_MF")  return(enrich_list)}

我们演示一下。这里我们直接用向量提供了基因。如果您的文件是差异基因,很好弄,只需要$符号传入gene symbol那一列即可。

genes <- c(c('MAST4','IL4R','SYT1','PRDM1','AUTS2','KNL1',             'CD79A', "PLXDC2","NKG7","NELL2","BACH2","DIAPH3",             "SYN3",  "NTNG1",  "ADAM23","SOX5","TMPO",             "ARHGAP6","FCRL1","CD19"))results <- Enrichment_KEGGgo_analusis(genes = genes,                                      species = 'human')                                                                            #运行日志载入需要的程辑包:AnnotationDbi
clusterProfiler v4.6.2  For help: https://yulab-smu.top/biomedical-knowledge-mining-book/
If you use clusterProfiler in published research, please cite:T Wu, E Hu, S Xu, M Chen, P Guo, Z Dai, T Feng, L Zhou, W Tang, L Zhan, X Fu, S Liu, X Bo, and G Yu. clusterProfiler 4.0: A universal enrichment tool for interpreting omics data. The Innovation. 2021, 2(3):100141
载入程辑包:‘clusterProfiler’
The following object is masked from ‘package:AnnotationDbi’:
    select
The following object is masked from ‘package:IRanges’:
    slice
The following object is masked from ‘package:S4Vectors’:
    rename
The following objects are masked from ‘package:plyr’:
    arrange, mutate, rename, summarise
The following object is masked from ‘package:stats’:
    filter
'select()' returned 1:1 mapping between keys and columnsReading KEGG annotation online: "https://rest.kegg.jp/link/hsa/pathway"...Reading KEGG annotation online: "https://rest.kegg.jp/list/pathway/hsa"...[1] "kegg Done"[1] "GOBP Done"[1] "GOCC Done"[1] "GOMF Done"Warning messages:1: 程辑包‘AnnotationDbi’是用R版本4.2.2 来建造的 2: In utils::download.file(url, quiet = TRUE, method = method, ...) :  the 'wininet' method is deprecated for http:// and https:// URLs3: In utils::download.file(url, quiet = TRUE, method = method, ...) :  the 'wininet' method is deprecated for http:// and https:// URLs                                                        

结果分别储存在list中,这样很方便了吧!

图片

有需要的可以试一下,总之是为了省时省力,那些在线的分析工具的底层原理也就是这样。觉得分享有用的点个赞、分享下再走呗!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】创建高级联结

目录 一、使用表别名 二、使用不同类型的联结 1.自联结 2.自然联结 3.外部联结 3.使用带聚集函数的联结 4.使用联结和联结条件 一、使用表别名 别名除了用于列名和计算字段外&#xff0c;SQL还允许给表名起别名。 起别名有两个好处&#xff1a; 一个是缩短SQL语句&am…

群晖6.X便捷的安装cpolar内网穿透

群晖6.X便捷的安装cpolar内网穿透 文章目录 群晖6.X便捷的安装cpolar内网穿透前言1. 下载cpolar的群晖套件1.1 打开群晖套件中心1.2 选择“手动安装”1.3 选择下载cpolar套件位置 2. 打开cpolar的Web-UI界面3. 注册会员 前言 随着硬件设备和软件技术的发展&#xff0c;以及数据…

ElasticsSearch基础概念和安装

ElasticSearch基础概念以及可视化界面安装 文章目录 ElasticSearch基础概念以及可视化界面安装1、引言2、基本概念3、倒排索引机制3.1、倒排索引 4、使用docker安装ElasticSearch4.1、下载镜像文件4.2 、创建实例,启动es 5.安装Kibana 1、引言 Elastic 的底层是开源库 Lucene。…

朋友圈点赞截图生成,制作朋友圈网页​

支持纯文字内容&#xff0c;图文内容&#xff0c;单图&#xff0c;多图。自定义点赞数量、自定义评论&#xff0c;随机头像和自定义头像。 这个工具基本支持我们所需要的所有功能。可以说是目前最全的朋友圈页面生成器。 朋友圈页面样式是Iphone pro 14上的效果&#xff0c;几…

OneFlow 中的 Softmax

Softmax 是深度学习模型中的常见算子。PyTorch 的 Softmax 算子直接调用 cuDNN 的接口。而 OneFlow 内部针对输入数据的类别数量&#xff0c;采用3个 kernel 来分别处理&#xff0c;在多数情况下都可以获得比 cuDNN 更优的性能表现。下面对其实现进行介绍。OneFlow 的静态分层结…

Leetcode24 两两交换链表相邻的节点

迭代解法&#xff1a; class Solution {public ListNode swapPairs(ListNode head) {ListNode dummyHead new ListNode(0);dummyHead.next head;ListNode temp dummyHead;while (temp.next ! null && temp.next.next ! null) {ListNode node1 temp.next;ListNode n…

谷粒商城第十一天-品牌管理中关联分类

目录 一、总述 二、前端部分 1. 调整查询调用 2. 关联分类 三、后端部分 四、总结 一、总述 之前是在商品的分类管理中直接使用的若依的逆向代码 有下面的几个问题&#xff1a; 1. 表格上面的参数填写之后&#xff0c;都是按照完全匹配进行搜索&#xff0c;没有模糊匹配…

化工行业案例 | 甄知科技助力万华化学重构IT服务价值,打造信息中心ERP!

随着科技的发展&#xff0c;新材料的应用领域与日俱增&#xff0c;近年来&#xff0c;全球化工新材料产业发展整体步入高技术引领、产品迭代速度快、产业规模和需求不断扩大的阶段。一体化协同与数字化转型策略是实现化工新材料生产原料自给、节能降耗、降低排放和物料成本的重…

验证码识别全流程实战

验证码的历史与发展 验证码&#xff0c;全称为 “Completely Automated Public Turing test to tell Computers and Humans Apart”&#xff0c;即全自动区分计算机和人类的图灵测试&#xff0c;Captcha。早在上个世纪 90 年代&#xff0c;为了防止恶意的网络机器人行为&#x…

matplotlib 笔记:hist2d 2D直方图

创建二维直方图&#xff0c;用于显示数据分布的图表将数据划分成不同的区间&#xff08;bin&#xff09;&#xff0c;并统计每个区间内数据点的数量 1 基本画法 默认bin的数量是10*10 N 1000 x np.random.randn(N) y np.random.randn(N) plt.hist2d(x, y) 2 修改bin的…

英特尔处理器被曝出“Downfall”漏洞:可窃取加密密钥

今日&#xff0c;谷歌的一位高级研究科学家利用一个漏洞设计了一种新的CPU攻击方法&#xff0c;该漏洞可影响多个英特尔微处理器系列&#xff0c;并允许窃取密码、加密密钥以及共享同一台计算机的用户的电子邮件、消息或银行信息等私人数据。 该漏洞被追踪为CVE-2022-40982&am…

nginx配置gzip

在 Nginx 中启用 Gzip 压缩可以大幅减少传输内容的大小&#xff0c;从而加快网页加载速度。 打开 Nginx 的配置文件&#xff0c;通常是 /etc/nginx/nginx.conf 或者 /etc/nginx/conf.d/default.conf。找到 http 配置块&#xff0c;在其中添加以下代码来开启 Gzip 压缩&#xff…

pikachu中RCE出现乱码的解决的方案

exec “ping” 输入127.0.0.1 这种乱码的解决办法就是在pikachu/vul/rce/rce_ping.php目录里面的第18行代码 header("Content-type:text/html; charsetgbk");的注释打开即可。 BUT但是吧&#xff01;又出现了其他的乱码&#xff01;但是搞完这个再把它给注释掉就行了…

pyscenic分析:视频教程

我们之前更新过pyscenic的教程&#xff1a;pySCENIC单细胞转录因子分析更新&#xff1a;数据库、软件更新。我们也说过&#xff0c;我们号是放弃R语言版的SCENIC的分析了&#xff0c;因为它比较耗费计算资源和时间&#xff0c;所以我们的单细胞转录因子分析教程都是基于pysceni…

轻松预约,尽享美食,详解餐厅预约小程序的设计与实现

随着智能手机的普及和人们生活水平的提高&#xff0c;餐厅预约已经成为人们日常生活中的一部分。为了更好地满足人们的需求&#xff0c;许多餐厅开始使用小程序来提供更方便快捷的预约服务。本文将介绍如何制作一款餐厅预约小程序的详细步骤。 1. 进入乔拓云网后台&#xff0c;…

JVM:对象的内存布局

对象的内存布局 对象在堆内存中的存储布局可以划分为三个部分&#xff1a;对象头&#xff08;Header&#xff09;、实例数据&#xff08;Instance Data&#xff09;和对齐填充&#xff08;Padding&#xff09;。 ps&#xff1a;这个对象所属类的方法信息&#xff0c;静态变量…

百度、NVIDIA、Intel……各大厂商集结,共话文心与飞桨共享生态下的大模型训推部署创新实践计划

由深度学习技术及应用国家工程研究中心主办、百度飞桨和文心大模型承办的WAVE SUMMIT 2023峰会重磅来袭&#xff01;本届峰会聚焦AI技术、产业生态、未来趋势等主要方向&#xff0c;产、学、研、用各界大咖将围绕深度学习及大模型技术的发展与未来&#xff0c;带来行业前瞻洞察…

【一】初步认识数据库

数据库概览数据库 缘起表(Table)的理解用表来定义数据库数据库系统的理解概念层次的理解实例层次的理解 数据库管理系统的理解从用户角度看从系统实现角度看典型的数据库管理系统 数据库语言数据库定义、操纵、控制语言数据库语言 VS 高级语言 内容回顾练习 数据库概览 走马观…

ORACLE行转列、列转行实现方式及案例

ORACLE行转列、列转行实现方式及案例 行转列案例方式1.PIVOT方式2.MAX和DECODE方式3.CASE WHEN和GROUP BY 列转行案例方式1.UNPIVOT方式2.UNION ALL 行转列 案例 假设我们有一个名为sales的表&#xff0c;其中包含了产品销售数据。表中有三列&#xff1a;product&#xff08;…

vue 设置了表单验证的el-input,在触发验证后无法继续输入的问题解决

问题表现 在项目中碰到的问题&#xff0c;说是input框出现验证提示后&#xff0c;该框就无法输入新的数据了 下面是我的代码&#xff1a; // dom结构 <el-form ref"addForm" :rules"addFormRules" :model"addForm" label-width"100px&…