goseq是一個R包,用於尋找GO terms,即基因富集分析。
GO terms是標准化描述基因或基因產物的詞匯,包括三方面,cellular component,molecular funciton,biological process。
每個GO term都有一個GO ID,比如 GO:006260,每個GO term背后都有一系列的相關基因。
GO分析的目的:在差異性基因分析后,我們可能得到很多差異基因,這些基因里的一部分可能跟某個生物過程相關,或幾個生物過程相關。經過GO分析后,我們就能將差異性基因具體的生物功能展示出來,為下一步研究做准備。
GOseq需要輸入的文件:
1.所有有count的genes。
2.差異性表達的genes。
3.genome信息,基因長度信息。#對於許多模式基因組來說,這些內容都被做成了獨立的R包。
4.GO terms包。
>source("http://bioconductor.org/biocLite.R") >biocLite("goseq") >biocLite("geneLenDataBase")#genome,genes信息 >biocLite("org.Dm.eg.db")#果蠅的GO categories, (org,<Genome>,<GeneID>,db) >library("goseq") >library("geneLenDataBase") >library("org.Dm.eg.db") >DEG<-read.table("DEG",header=FALSE) >ALL<-read.table("ALL",header=FALSE) #DEG:差異性基因表 ALL:所有基因表(數據框格式) >DEG.vector<-c(t(DEG)) >ALL.vector<-c(t(ALL)) #把數據格式轉化為vector,便於下步操作 >gene.vector=as.integer(ALL.vector%in%DEG.vector) #生成二進制的gene vector(1代表差異性基因,0代表非差異性基因) >names(gene.vector)<-ALL.vector >pwf=nullp(gene.vector,"dm3","ensGene") #生成probability weighting function."dm3"是基因組,"ensgGene"是基因IDs。 >GO.wall=goseq(pwf,"dm3","ensGene") #生成GO terms ID 。這邊的疑問:genes 沒有mapping 到GO categories。 goseq函數有一個選項:gene2cat,如果gene2cat=NULL,則goseq會自動調用getgo函數實現mapping功能,並將輸出值gene2cat。 >enriched.GO=GO.wall$category[GO.wall$over_represented_pvalue<.05] #生成差異性 GO terms ID >library(GO.db) >capture.output(for(go in enriched.GO[1:length(enriched.GO)]){ print(GOTERM[go]) cat("___________") } ,file="SigGo.txt") #生成具體的GO TERM詳解