GWAS分析中的GO和KEGG富集分析

news2024/11/18 13:49:52

上一次,我们介绍如何根据显著性snp,使用bedtools根据上下游距离,根据gff文件注释基因。

这一次,介绍一下如何根据注释的基因,进行富集分析,主要是看一下GWAS定位的基因有没有某一个趋势,也算是一种验证的方法。比如籽粒大小找到的30个候选基因,如果都与籽粒发育相关的生化途径一致,那就说明找到的都是相关的基因。

之前用于注释基因需要的gff文件:


上面红框中就是基因的名字,这里,我们已经注释到的基因,形成一个txt文件,内容如下:

1. R包依赖

下面先载入需要的R包,如果没有安装,需要安装一下:

  library(clusterProfiler)
  library(enrichplot)
  library(topGO)
  library(Rgraphviz)
  library(openxlsx)
  library(ggplot2)

2. 下载数据库

到Bioconductor中(https://www.bioconductor.org/),检索该物种的数据库:

在这里插入图片描述
常见的物种数据库如下:直接在Bioconductor中安装OrgDB的名称就行了。

这里,我们用的是水稻的数据库,名称为:org.Osativa.eg.db

3. 载入数据库和读取基因名文件

载入数据库

library(org.Osativa.eg.db)
db <- org.Osativa.eg.db 
organism <- "dosa" # 物种的名称

读取基因型文件

geneid = read.csv("gene_total.txt",header = F)
head(geneid)

4. 将ID匹配GID

将geneID,替换为数据库中的GID

map_id = AnnotationDbi::select(db, keys = geneid, columns=c("GID"), keytype = "RAP")
head(map_id)

5. 对基因列表进行GO注释

GO注释包括:

  • MF注释
  • CC注释
  • BP注释

MF注释:

go_MF =enrichGO(map_id$GID, 
                 OrgDb=db,
                 keyType = "GID",
                 ont="MF", 
                 pvalueCutoff=1,
                 qvalueCutoff=1, 
                 pAdjustMethod="none")
write.xlsx(go_MF,"go_MF.xlsx")
dotplot(go_MF,color="pvalue")
ggsave("go_MF_dotplot.pdf",width=12,height=6)

结果文件:


同样的,CC和BP的GO注释,将ont后面的改为CC和BP即可。

CC的GO注释:

## CC
go_CC =enrichGO(map_id$GID, 
                OrgDb=db,
                keyType = "GID",
                ont="CC", 
                pvalueCutoff=1,
                qvalueCutoff=1, 
                pAdjustMethod="none")
write.xlsx(go_CC,"go_CC.xlsx")
dotplot(go_CC,color="pvalue")
ggsave("go_CC_dotplot.pdf",width=12,height=6)

在这里插入图片描述

BP的GO注释:

## BP
go_BP =enrichGO(map_id$GID, 
                 OrgDb=db,
                 keyType = "GID",
                 ont="BP", 
                 pvalueCutoff=1,
                 qvalueCutoff=1, 
                 pAdjustMethod="none")
write.xlsx(go_BP,"go_BP.xlsx")
dotplot(go_BP,color="pvalue")
ggsave("go_BP_dotplot.pdf",width=12,height=6)


在这里插入图片描述
其它类型的图:

## 其它类型的图:
barplot(go_BP)
heatplot(go_BP)

在这里插入图片描述

在这里插入图片描述

6. KEGG富集分析

把基因型的ID后面加上“-01”,并且把g变为t

rap_id <- paste0(geneid, "-01")
rap_id <- gsub("g","t",rap_id)
head(rap_id)

在这里插入图片描述

富集分析:

geneid = read.csv("a1.txt",header = F)$V1
rap_id <- paste0(geneid, "-01")
rap_id <- gsub("g","t",rap_id)
head(rap_id)
kegg <- enrichKEGG(
  gene = rap_id,  #基因列表文件中的基因名称
  keyType = 'kegg',  
  organism = 'dosa', 
  pAdjustMethod = 'fdr',  #指定 p 值校正方法
  pvalueCutoff = 1,  
  qvalueCutoff = 1)  

运行日志:
在这里插入图片描述
作图:

barplot(kegg)
dotplot(kegg)

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Python泰裤辣丨520写一个自动换壁纸软件,将女友照骗放进去送给她

Python泰裤辣!520写一个自动换壁纸软件&#xff0c;将女友照骗放进去送给她! 准备工作1、环境2、使用的模块3、如何配置pycharm里面的python解释器?4、pycharm如何安装插件? 代码实战1、获取壁纸 自动更换壁纸程序最后 话说兄弟们&#xff0c;今天520你们都送给女朋友啥礼物了…

文件上传之,waf绕过(24)

上传参数名解析&#xff1a;明确哪些东西可以修改 content-disposition:一般可更改 表单的数据 name:表单参数值&#xff0c;不能更改 表单提交的值 filename&#xff1a;文件名&#xff0c;可以修改 上传的文件名 content-type&#xff1a;文件mime&#xff0c;…

算法学习(数组和字符串) 之数组简介

集合、列表和数组 1.集合&#xff1a; 集合一般被定义为由一个或多个确定的元素所构成的整体。通俗来讲&#xff0c;集合就是将一组事物组合在一起。你可以将商店里的所有物品当成一个集合。 特点&#xff1a; 集合里的元素没有顺序集合里的元素类型不一定相同 2.列表&…

【Python入门篇】——Python中循环语句(for循环的基础语法)

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

Foley Sound——DECASE项目——项目复现

文章目录 概述项目复现配置环境下载并配置文件运行代码第一阶段&#xff0c;训练提取DTFR特征的模型资料搜集 train_vqvae.py 第二阶段&#xff0c;使用训练好的模型提取声音的DTFR特征torch.cuda.OutOfMemoryError: CUDA out of memory. 第三阶段&#xff0c;基于特征训练合成…

学习Netty BootStrap的核心知识,成为网络编程高手!

0 定义 深入 ChannelPipeline、ChannelHandler 和 EventLoop 后&#xff0c;如何将这些部分组织起来&#xff0c;成为可运行的应用程序&#xff1f; 引导&#xff08;Bootstrapping&#xff09;&#xff01;引导一个应用程序是指对它进行配置&#xff0c;并使它运行起来的过程…

AcWing算法提高课-1.3.8多重背包问题 III

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 有 N N N 种物品和一个容量是 V V V 的背包。 第 i i i 种物品最多有 s i s_i si​ 件&#xff0c;每件体积是 v i v_i vi​…

我们到底该怎么入门网络安全?一般人还真不行

我之前写了不少网络安全技术相关的故事文章&#xff0c;不少读者朋友知道我是从事网络安全相关的工作&#xff0c;于是经常有人在微信里问我&#xff1a;&#xff08;文末入门福利&#xff09; 我刚入门网络安全&#xff0c;该怎么学&#xff1f; 要学哪些东西&#xff1f; …

linux系统打包压缩与搜索命令

1、tar命令 在linux系统中&#xff0c;常见的文件格式比较多&#xff0c;其中主要使用使用的tar和zip来压缩文件&#xff0c;tar命令的参数比较多&#xff0c;这里呢我一般只会记得几个比较常用的。 -c创建压缩文件-x解开压缩文件-z用Gzip压缩或解压-v显示压缩或者解压的过程-…

C语言—自定义类型(结构体、枚举、联合)

自定义类型 结构体结构体的声明特殊的声明结构的自引用结构体变量的定义和初始化结构体内存对齐修改默认对齐数offsetof宏 结构体传参 位段位段的定义&#xff08;声明&#xff09;位段的内存分配位段的跨平台问题位段的应用 枚举枚举类型的定义及使用枚举的优点 联合&#xff…

第02章 变量与运算符

一 关键字&#xff08;keyword&#xff09; 定义&#xff1a;被Java语言赋予了特殊含义&#xff0c;用做专门用途的字符串&#xff08;或单词&#xff09; HelloWorld案例中&#xff0c;出现的关键字有 class、public 、 static 、 void 等&#xff0c;这些单词已经被Java定义…

Linux设备驱动模型(二)

基于linux-3.14.16 设备模型&#xff08;LDM&#xff09;包括&#xff0c;总线、驱动、设备 一、总线及其api 1、注册一个总线 以i2c总线为例&#xff0c;下面基本表现出了注册一个总线的过程。 1、定义一个总线bus_type&#xff0c;填充几个回调 2、调用bus_register注册总线…

【STM32系列】硬件介绍及固件安装

【STM32系列】硬件介绍及固件安装 硬件介绍应用领域 固件安装进入DFU模式安装固件退出DFU&#xff0c;进入U盘模式 演讲稿 欢迎收看由咸鱼菌工作室出品的STM32系列教程。本篇内容主要是设备介绍及环境安装 硬件介绍 本系列所选硬件ZTMR(STM32)开发板 &#xff0c;选用STM32芯片…

新手如何学习挖SRC漏洞?【网络安全】

前言 有不少阅读过我文章的伙伴都知道&#xff0c;我从事网络安全行业已经好几年&#xff0c;积累了丰富的经验和技能。在这段时间里&#xff0c;我参与了多个实际项目的规划和实施&#xff0c;成功防范了各种网络攻击和漏洞利用&#xff0c;提高了安全防护水平。 也有很多小…

【ProtoBuf】1.初识ProtoBuf

————————————每一个不曾起舞的日子都是对生命的辜负。 初识ProtoBuf 一. 序列化概念二. ProtoBuf1. 什么是ProtoBuf2. ProtoBuf的特点3. ProtoBuf进行序列化反序列化的流程 三. 本章总结 一. 序列化概念 日常生活中&#xff0c;手机上收到的语音消息在网络中不能直…

多线技术:TDI时间延迟积分

多线技术&#xff1a;TDI时间延迟积分 在比较暗的环境下拍照&#xff0c;清晰成像的条件&#xff0c;是CMOS芯片获取足够的光。而获得足够光的方法有&#xff1a; 方案1.增加单位时间的光照强度&#xff08;光源、大镜头收集光&#xff09; 方案2.增加CMOS感光时长&#xf…

国潮还能怎么玩?小红书用户画像速看!

所谓“国潮”&#xff0c;概括来说就是“国风潮流”。主要有两层含义&#xff1a;其一&#xff0c;有中国文化和传统的基因&#xff1b;其二&#xff0c;能将传统文化与时下潮流相融合&#xff0c;使产品更具时尚感。在“国潮”元年之前&#xff0c;“国潮”大多指狭义上的特定…

macOS Ventura 13.5beta (22G5027e)发布

系统介绍 黑果魏叔 5 月 20 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5 开发者预览版 Beta 更新&#xff08;内部版本号&#xff1a;22G5027e&#xff09;&#xff0c;本次更新距离上次发布隔了 17 天。 macOS Ventura 带来了台前调度、连续互通相机、Face…

四象限法进程调度

周二收到一篇推送 一次云上网络毫秒级的优化与实践&#xff0c;很有意义的实践和探索&#xff0c;建议阅读&#xff0c;文章不长&#xff0c;没有冗长的源码分析&#xff0c;结论很清晰。 谈谈我的看法。 多少有种感觉&#xff0c;Linux 越来越像个响应系统而不是服务器。 虚…

TimesNet:用于一般时间序列分析的时间二维变化模型(代码解析)

前言 TimesNet&#xff1a;用于一般时间序列分析的时间二维变化模型论文下载地址&#xff0c;Github项目地址&#xff0c;论文解读系列本文针对TimesNet模型参数与模型架构开源代码进行讲解&#xff0c;本人水平有限&#xff0c;若出现解读错误&#xff0c;欢迎指出开源代码中…