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

news/2024/11/15 4:08:09/

上一次,我们介绍如何根据显著性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.ppmy.cn/news/75703.html

相关文章

【JavaSE】Java基础语法(五):数组详解

文章目录 &#x1f378;1.1 数组介绍&#x1f378;1.2 数组的动态初始化1.2.1 什么是动态初始化1.2.2 动态初始化格式&#x1f378;1.3 数组元素访问1.3.1 什么是索引1.3.2 访问数组元素格式1.3.3 示例代码 &#x1f378;1.4 内存分配1.4.1 内存概述1.4.2 java中的内存分配 &am…

【数据库】事务与并发控制

文章目录 事务什么是事务事务的主要特征事务分类隐式事务显示事务事务与并发控制锁死锁事务 什么是事务 宏观上看,事务就是一次完整的操作过程;程序角度看,事务是用户自定义的数据操作系统,由多条命令组成,内部所有命令语句要被当成一个整体,要么全部被执行,要么全部不…

HACKABLE: III

文章目录 HACKABLE: III实战演练一、前期准备1、相关信息 二、信息收集1、端口扫描2、访问网站3、查看网站源码4、扫描目录5、访问网址6、查看并下载7、访问网站8、查看文件9、解密10、访问网站11、访问网站12、查看文件13、解密14、访问网站15、访问网站16、下载图片17、隐写1…

MySQL数据库基础4-内置函数

文章目录 日期函数字符串函数数学函数其他函数 日期函数 函数名称描述current date()当前日期current time()当前时间current timestamp()当前时间戳date(datetime)返回datetime参数的日期部分date add(date, interval d_value type)在date中添加日期或时间&#xff0c;interv…

新手如何学习挖漏洞?看这篇就够了【网络安全】

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

【react 全家桶】react-Hook(上)

本人大二学生一枚&#xff0c;热爱前端&#xff0c;欢迎来交流学习哦&#xff0c;一起来学习吧。 <专栏推荐> &#x1f525;&#xff1a;js专栏 &#x1f525;&#xff1a;vue专栏 &#x1f525;&#xff1a;react专栏 文章目录 14【react-Hook &#xff08;上&#x…

一些好用的软件推荐给你

软件一&#xff1a;nTrun nTrun 是一款非常实用的快速启动工具&#xff0c;它可以帮助用户快速启动各种常用的应用程序、网站和文件。此外&#xff0c;nTrun 还具有以下强大的功能&#xff1a; 自定义快捷键&#xff1a;用户可以根据自己的需求为每个应用程序、网站或文件设置…

Java实现天气预报功能

如果要实现类似百度天气、手机App这样的天气预报功能该如何实现&#xff1f;首先想到的是百度... 背景&#xff1a; 最近公司做了一个项目&#xff0c;天气预报的功能也做上去了&#xff0c;不仅有实时天气、未来7天预报的功能、还有气象预警的功能。 天气包括基本天气、白天夜…