topGO是一个专门用于做GO富集分析的R包,它默认从 除了GO富集结果可视化这一特点,topGO还提供了多种富集分析的统计方法,示意如下 甚至支持自定义统计算法和模型,当然,常规情况下我们使用经典的费舍尔精确检验就可以了。 topGO的核心是构建一个
基因的列表在R中用向量存储,topGO会根据 > head(geneList)
1 2 3 9 10
1 0 1 0 1 第一行为names属性,这里为entrez id, 第二行为向量的内容。 基因的GO注释,可以从Bioconductor提供的注释包中获得,比如human就可以从 所有GO的分类和结构信息是从 用human基因构建topGOdata的代码如下 sampleGOdata <- new(
"topGOdata",
ontology = "BP",
allGenes = geneList,
nodeSize = 10,
annot = annFUN.org,
mapping = "org.Hs.eg.db",
ID = "entrez")
对于那些没有现成的注释包的物种,可以从文件中读取所有基因的GO注释信息,文件内容示例如下 121005 GO:0005576
155158 GO:0005488
160828 GO:0005488
105778 GO:0016021, GO:0016020
geneID2GO <- readMappings("geneid2go.map")
sampleGOdata <- new(
"topGOdata",
ontology = "BP",
allGenes = geneList,
annot = annFUN.gene2GO,
gene2GO = geneID2GO) 构建好topGOdata类型的对象后,可以直接进行富集分析,代码如下 # 运行富集分析
result <- runTest(
sampleGOdata,
algorithm = "classic",
statistic = "fisher")
# 提取显著富集的top100个GO
sig.tab <- GenTable(
sampleGOdata,
Fis = result,
topNodes = 100) 富集分析的结果如下 > head(sig.tab)
GO.ID Term Annotated Significant Expected Fis
1 GO:0006107 oxaloacetate metabolic process 12 3 0.20 0.00095
2 GO:0065008 regulation of biological quality 3551 82 60.27 0.00139
3 GO:0006116 NADH oxidation 4 2 0.07 0.00168
4 GO:0030837 negative regulation of actin filament po... 51 5 0.87 0.00169
5 GO:0048872 homeostasis of number of cells 233 11 3.95 0.00218
6 GO:0007010 cytoskeleton organization 1199 34 20.35 0.00226 构建富集GO的有向无环图有两种方式,第一种 showSigOfNodes(
sampleGOdata,
score(result),
firstSigNodes = 5,
useInfo = 'all')
GO编号是都会标注的,第二行为GO的描述信息,对应的值为 另外一种用法会在工作目录直接生成pdf文件,代码如下 printGraph(
sampleGOdata,
result,
firstSigNodes = 5,
fn.prefix = "tGO",
useInfo = "pval",
pdfSW = TRUE)
·end· |
|