2.1 基因ID转换

找到和下载注释数据库只是第一步,接下来GO/KEGG富集分析需要用到R包clusterProfiler和org.At.tair.db

先来看一下我们基因名是什么格式的:

很明显,我们的基因ID是TAIR类型(废话,我从TAIR下的),org.At.tair.db包可以转换基因ID类型

keytypes(org.At.tair.db)columns(org.At.tair.db)

转换基因ID代码如下:

1
2
3
4
5
6
7
8
library("org.At.tair.db")
columns(org.At.tair.db) # 查看能转换基因的ID类型
diffgen <- nDEGs[, 1] # 注意只需要基因名
diff_gen <- bitr(diffgen,
fromType = "TAIR",
toType = "ENTREZID", # 基因ID类型TAIR转换为ENTREZID
OrgDb = "org.At.tair.db") # 该函数是基于org.At.tair.db包的
diff_gen

这一步我的基因ID转换率只有60%左右,有将近一半的TAIR基因ID不能成功转换成ENTREZID,可能是Gene ID的版本问题,同一个基因在不同版本genecode中结果不一样,下载的注释文件原始版本我这里找不到了…暂时无法解决这个问题。只能不转换基因ID先跑一遍GO/KEGG富集分析。

enrichGO()

2.2 GO/KEGG分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
library("clusterProfiler")
# GO富集分析
enrich_GO <- enrichGO(gene = diffgen, # 基因名列表
OrgDb = 'org.At.tair.db', # 输入OrgDb数据库(注释对象信息)
keyType = 'TAIR', # 输入的基因名ID类型
ont = 'ALL', # 输出的GO分类
pAdjustMethod = 'fdr',
pvalueCutoff = 0.05,
qvalueCutoff = 0.2,
readable = TRUE)
GO_result <- enrich_GO@result
write.table(GO_result, 'GO_result.csv', sep = ',', quote = FALSE, row.names = FALSE)

# KEGG富集分析
enrich_KEGG <- enrichKEGG(gene = diffgen,
keyType = "kegg",
organism = "ath", # 输入的物种名
pvalueCutoff = 0.05,
qvalueCutoff = 0.2)
KEGG_result <- enrich_KEGG@result
write.table(KEGG_result, 'KEGG_result.csv', sep = ',', quote = FALSE, row.names = FALSE)

clusterProfiler这个包进行GO和KEGG富集分析就这两个函数

这里我的GO只富集到两条细胞组分的内容:

说一下各列代表的意思:

  • ONTOLOGY GO分类BP(生物学过程)、CC(细胞组分)或MF(分子功能)
  • ID 富集到的GO id号
  • Description 富集到的GO描述
  • GeneRatio和BgRatio 分别为富集到该GO条目中的基因数目/给定基因的总数目,以及该条目中背景基因总数目/该物种所有已知的GO功能基因数目
  • pvalue、p.adjust和qvalue p值、校正后p值和q值信息
  • geneID和Count,富集到该GO条目中的基因名称和数目

KEGG富集分析结果表如下:

  • ID和Description 分别代表富集到KEGG的ID和描述,其他和GO富集都类似

KEGG富集分析的时候有一点需要注意,输入的organism名称需要在官网的KEGG Organisms列表中能找到,否则是不能进行分析的!点击这里进入KEGG Organisms: Complete Genomes

organism = "Arabidopsis thaliana"organism = "ath"