Question: GO enrichment significance
0
gravatar for Grimes Mark
7.1 years ago by
Grimes Mark40
United States
Grimes Mark40 wrote:
Dear People Paul Shannon suggested I submit the following question to this list. I am investigating clustering techniques and would like to know whether GO term enrichment can be used as an external evaluation to determine whether clusters are any different from a random selection of genes from my data set. I used the following code to determine the 'background' retrieval of GO terms from a set of random gene clusters. My conclusion is that a random sample of 11 to 34 genes from this gene set returns an average of 0.35 enriched GO terms per gene. Does this make sense to use as 'background' retrieval of GO terms? Thanks for your help, Mark Grimes University of Montana # # AUTHOR: MARK GRIMES (mark.grimes at mso.umt.edu) # # Question: what is the background for retrieval of GO terms from my data set? # data set is 2482 genes from proteomic data from lung cancer samples (data frame is cyf; genes are in GENE SYMBOL format) # I won't include the data here but this could be in principle tested with any gene list # set gene'universe' to this data set lcgenes <<- as.character (sapply (cyf$Gene.Name, function (id) org.Hs.egSYMBOL2EG [[id]])) # # random genes: 11 to 34 from this list: randgene.list <- as.list(NULL) rand.d=data.frame(NULL) for(i in (11:34)) { rand.temp=data.frame(NULL) rand.temp <- data.frame(as.character(cyf[sample(2482, i), "Gene.Name"])) rand.temp$group <- i names(rand.temp) <- c("Gene.Name", "genes") rand.d <- rbind(rand.d, rand.temp) } randgene.list <- dlply(rand.d, .(genes)) # GROUP LIST # Now fetch GO terms using a function written by Paul Shannon (pasted below) # Use randgenes.list to get gene IDs randgo.list <- as.list(NULL) randgo.df=data.frame(NULL) for(k in 1:length(randgenes.list)) { genes <- as.character (sapply (as.character(randgenes.list[[k]] $Gene.Name), function (id) org.Hs.egSYMBOL2EG [[id]])) tbl.go <<- tabular.go.enrichment (genes, ontology='BP', pvalue=0.01, geneUniverse=lcgenes) # If there is any enrichment, the number of genes for significant terms should be > 2 tbl.go2 <- tbl.go[tbl.go$Count>=2,] randgo.list[[k]] <- tbl.go2 randgo.df[k,1] <- length(unique(genes)) randgo.df[k,2] <- length(unique(tbl.go2$Term)) randgo.df[k,3] <- mean(unique(tbl.go2$Count)) randgo.df[k,4] <- mean(unique(tbl.go2$Count)/ unique(tbl.go2$Expected)) # } names(randgo.df) <- c("genes", "GO.terms", "mean.count", "mean.count.over.expected") randgo <- randgo.df randgo$mean.count[is.nan(randgo$mean.count)] <- 0 randgo$mean.count.over.expected[is.nan(randgo $mean.count.over.expected)] <- 0 mean(randgo$GO.terms) # 7.76 sd(randgo$GO.terms) # 8.747762 mean(randgo$mean.count) # 3.498667 sd(randgo$mean.count) # 2.06647 mean(randgo$mean.count.over.expected) # 18.34359 sd(randgo$mean.count.over.expected) # 10.89013 randgo$GOterms.per.gene <- randgo$GO.terms/randgo$genes mean(randgo$GOterms.per.gene) # 0.3478717 sd(randgo$GOterms.per.gene) # 0.3464063 # # Conclusion: a random sample of this gene set returns an average of 0.35 enriched GO terms per gene # Question Is this a resonable background number to test whether clusters that have real interactions are meaninful? # _______________________________________________________________ # functions thanks to Paul Shannon: tabular.go.enrichment <- function (genes, ontology, pvalue, geneUniverse=character (0)) { write (sprintf ('about to call go.enrichment with %d genes, ontolog= %s, pvalue=%s', length (genes), ontology, pvalue), stderr ()) hgr = go.enrichment (genes, ontology, geneUniverse, pvalue) write (sprintf ('back from call to go.enrichment'), stderr ()) tbl <<- summary (hgr) tbl <<- tbl [, c (7, 1, 2, 4, 5, 6)] colnames (tbl) [2] <<- 'GOID' rownames (tbl) <<- NULL virgin.tbl = TRUE sample.row = list (Term='bogus', GOID='bogus', Pvalue=0.0, Expected=0, Count=0, Size=0, ID='bogus', Gene='bogus') #, Depth=99) df = data.frame (sample.row, stringsAsFactors=FALSE) for (r in 1:nrow (tbl)) { #write (sprintf ('assembling gene-based table, summary row %d', r), stderr ()) # print (tbl [r,]) goTerm = tbl [r, 2] gene.ids = geneIdsByCategory (hgr) [[goTerm]] for gene.id in gene.ids) { old.row = tbl [r,] rownames (old.row) = NULL gene.symbol = geneSymbol gene.id) #depth = go.depth (goTerm) new.row = cbind (old.row, Id=gene.id, zz=gene.symbol, stringsAsFactors=FALSE) # Depth=depth, stringsAsFactors=FALSE) colnames (new.row) = c ('Term', 'GOID', 'Pvalue', 'Expected', 'Count', 'Size', 'ID', 'Gene') #, 'Depth') if (virgin.tbl) { df [1,] = new.row virgin.tbl = FALSE } else df = rbind (df, new.row) } # for gene.id } # for r return (df) } # go.enrichment = function (genes, ontology, universe=character(0), pvalue=0.05, annotation='org.Hs.eg.db', conditionalSearch=TRUE) { params = new ("GOHyperGParams", geneIds=genes, ontology=ontology, annotation=annotation, universeGeneIds=universe, pvalueCutoff = pvalue, conditional=conditionalSearch, testDirection = "over") hgr <<- hyperGTest (params) return (hgr) } # go.enrichment sessionInfo() R version 2.15.1 (2012-06-22) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] grid splines stats graphics grDevices utils datasets methods base other attached packages: [1] GOstats_2.22.0 Category_2.22.0 GO.db_2.7.1 rgl_0.92.879 gplots_2.10.1 KernSmooth_2.23-7 caTools_1.13 [8] bitops_1.0-4.1 gdata_2.8.2 gtools_2.6.2 tsne_0.1-2 vegan_2.0-3 permute_0.7-0 RUnit_0.4.26 [15] bio3d_1.1-3 RCytoscape_1.6.3 XMLRPC_0.2-4 graph_1.34.0 org.Hs.eg.db_2.7.1 RSQLite_0.11.1 DBI_0.2-5 [22] AnnotationDbi_1.18.0 Biobase_2.16.0 BiocGenerics_0.2.0 adegenet_1.3-4 ade4_1.4-17 MASS_7.3-18 cluster_1.14.2 [29] Hmisc_3.9-3 survival_2.36-14 plyr_1.7.1 loaded via a namespace (and not attached): [1] annotate_1.34.0 genefilter_1.38.0 GSEABase_1.18.0 IRanges_1.14.2 lattice_0.20-6 RBGL_1.32.0 RCurl_1.91-1 stats4_2.15.1 [9] tools_2.15.1 XML_3.9-4 xtable_1.7-0
go clustering cancer lung • 972 views
ADD COMMENTlink modified 7.1 years ago • written 7.1 years ago by Grimes Mark40
Answer: GO enrichment significance
0
gravatar for yao chen
7.1 years ago by
yao chen200
yao chen200 wrote:
Hi Mark, One thing you should notice is the hierarchy structure of Gene Ontoloty. You may find two different terms are actually child-parent terms. Therefore it may not be many "different" terms for genes within a cluster. You may use some software to find the specific term accounting for the hierarchy structure or use enrichment of KEGG instead. Jack 2012/7/11 Grimes Mark <mark.grimes@mso.umt.edu> > Jack > > Thank you. Since the genes are from one tissue, and are all modified by > tyrosine phosphorylation (this is a phosphoproteomic data set), they may be > expected to be already ontologically enriched against the whole genome. I > am finding that clustering methods return many clusters that have more GO > terms than that rate of 0.35 enriched GO terms per gene, but some are not > different from this. This number seems high to me, which is why I am > wondering if I have a reasonable method to determine the false discovery > rate for GO terms from my data set. > > Mark > > > On Jul 11, 2012, at 7:52 AM, Yao Chen wrote: > > Hi Mark, > > Yes. 'background' retrieval of GO terms" can be used as external > evaluation. I think the assumption is genes within the same cluster are > more likely enriched in the same function. Let's say you have 34 genes in > one cluster enriched in 3 GO terms. Then for randomly selected 34 genes, > they should be enriched in less GO terms (0 term usually). If you randomly > select 1000 times, you will get P values. > > Jack > > 2012/7/10 Grimes Mark <mark.grimes@mso.umt.edu> > >> Dear People >> >> Paul Shannon suggested I submit the following question to this list. I >> am investigating clustering techniques and would like to know whether GO >> term enrichment can be used as an external evaluation to determine whether >> clusters are any different from a random selection of genes from my data >> set. I used the following code to determine the 'background' retrieval of >> GO terms from a set of random gene clusters. My conclusion is that a random >> sample of 11 to 34 genes from this gene set returns an average of 0.35 >> enriched GO terms per gene. Does this make sense to use as 'background' >> retrieval of GO terms? >> >> Thanks for your help, >> >> Mark Grimes >> University of Montana >> >> # >> # AUTHOR: MARK GRIMES (mark.grimes@mso.umt.edu) >> # >> # Question: what is the background for retrieval of GO terms from my data >> set? >> # data set is 2482 genes from proteomic data from lung cancer samples >> (data frame is cyf; genes are in GENE SYMBOL format) >> # I won't include the data here but this could be in principle >> tested with any gene list >> # set gene'universe' to this data set >> lcgenes <<- as.character (sapply (cyf$Gene.Name, function (id) >> org.Hs.egSYMBOL2EG [[id]])) >> # >> # random genes: 11 to 34 from this list: >> randgene.list <- as.list(NULL) >> rand.d=data.frame(NULL) >> for(i in (11:34)) { >> rand.temp=data.frame(NULL) >> rand.temp <- data.frame(as.character(cyf[**sample(2482, >> i), "Gene.Name"])) >> rand.temp$group <- i >> names(rand.temp) <- c("Gene.Name", "genes") >> rand.d <- rbind(rand.d, rand.temp) >> } >> randgene.list <- dlply(rand.d, .(genes)) # GROUP LIST >> # Now fetch GO terms using a function written by Paul Shannon (pasted >> below) >> # Use randgenes.list to get gene IDs >> randgo.list <- as.list(NULL) >> randgo.df=data.frame(NULL) >> for(k in 1:length(randgenes.list)) { >> genes <- as.character (sapply >> (as.character(randgenes.list[[**k]]$Gene.Name), function (id) >> org.Hs.egSYMBOL2EG [[id]])) >> tbl.go <<- tabular.go.enrichment (genes, >> ontology='BP', pvalue=0.01, geneUniverse=lcgenes) >> # If there is any enrichment, the number of genes >> for significant terms should be > 2 >> tbl.go2 <- tbl.go[tbl.go$Count>=2,] >> randgo.list[[k]] <- tbl.go2 >> randgo.df[k,1] <- length(unique(genes)) >> randgo.df[k,2] <- >> length(unique(tbl.go2$Term)) >> randgo.df[k,3] <- >> mean(unique(tbl.go2$Count)) >> randgo.df[k,4] <- >> mean(unique(tbl.go2$Count)/**unique(tbl.go2$Expected)) >> # >> } >> names(randgo.df) <- c("genes", "GO.terms", >> "mean.count", "mean.count.over.expected") >> randgo <- randgo.df >> randgo$mean.count[is.nan(**randgo$mean.count)] >> <- 0 >> randgo$mean.count.over.** >> expected[is.nan(randgo$mean.**count.over.expected)] <- 0 >> mean(randgo$GO.terms) # 7.76 >> sd(randgo$GO.terms) # 8.747762 >> mean(randgo$mean.count) # 3.498667 >> sd(randgo$mean.count) # 2.06647 >> mean(randgo$mean.count.over.**expected) # >> 18.34359 >> sd(randgo$mean.count.over.**expected) # 10.89013 >> randgo$GOterms.per.gene <- >> randgo$GO.terms/randgo$genes >> mean(randgo$GOterms.per.gene) # 0.3478717 >> sd(randgo$GOterms.per.gene) # 0.3464063 >> # >> # Conclusion: a random sample of this gene set returns an average of >> 0.35 enriched GO terms per gene >> # Question Is this a resonable background number to test >> whether clusters that have real interactions are meaninful? >> # ______________________________**______________________________**___ >> # functions thanks to Paul Shannon: >> tabular.go.enrichment <- function (genes, ontology, pvalue, >> geneUniverse=character (0)) >> { >> write (sprintf ('about to call go.enrichment with %d genes, ontolog=%s, >> pvalue=%s', length (genes), ontology, pvalue), stderr ()) >> hgr = go.enrichment (genes, ontology, geneUniverse, pvalue) >> write (sprintf ('back from call to go.enrichment'), stderr ()) >> tbl <<- summary (hgr) >> tbl <<- tbl [, c (7, 1, 2, 4, 5, 6)] >> colnames (tbl) [2] <<- 'GOID' >> rownames (tbl) <<- NULL >> virgin.tbl = TRUE >> sample.row = list (Term='bogus', GOID='bogus', Pvalue=0.0, Expected=0, >> Count=0, Size=0, ID='bogus', Gene='bogus') #, Depth=99) >> df = data.frame (sample.row, stringsAsFactors=FALSE) >> >> for (r in 1:nrow (tbl)) { >> #write (sprintf ('assembling gene-based table, summary row %d', r), >> stderr ()) >> # print (tbl [r,]) >> goTerm = tbl [r, 2] >> gene.ids = geneIdsByCategory (hgr) [[goTerm]] >> for gene.id in gene.ids) { >> old.row = tbl [r,] >> rownames (old.row) = NULL >> gene.symbol = geneSymbol gene.id) >> #depth = go.depth (goTerm) >> new.row = cbind (old.row, Id=gene.id, zz=gene.symbol, >> stringsAsFactors=FALSE) # Depth=depth, stringsAsFactors=FALSE) >> colnames (new.row) = c ('Term', 'GOID', 'Pvalue', 'Expected', >> 'Count', 'Size', 'ID', 'Gene') #, 'Depth') >> if (virgin.tbl) { >> df [1,] = new.row >> virgin.tbl = FALSE >> } >> else >> df = rbind (df, new.row) >> } # for gene.id >> } # for r >> >> return (df) >> >> } >> # >> go.enrichment = function (genes, ontology, universe=character(0), >> pvalue=0.05, annotation='org.Hs.eg.db', conditionalSearch=TRUE) >> { >> params = new ("GOHyperGParams", geneIds=genes, ontology=ontology, >> annotation=annotation, >> universeGeneIds=universe, pvalueCutoff = pvalue, >> conditional=conditionalSearch, >> testDirection = "over") >> hgr <<- hyperGTest (params) >> return (hgr) >> >> } # go.enrichment >> >> >> sessionInfo() >> R version 2.15.1 (2012-06-22) >> Platform: x86_64-apple-darwin9.8.0/x86_**64 (64-bit) >> >> locale: >> [1] en_US.UTF-8/en_US.UTF-8/en_US.**UTF-8/C/en_US.UTF-8/en_US.UTF-**8 >> >> attached base packages: >> [1] grid splines stats graphics grDevices utils datasets >> methods base >> >> other attached packages: >> [1] GOstats_2.22.0 Category_2.22.0 GO.db_2.7.1 >> rgl_0.92.879 gplots_2.10.1 KernSmooth_2.23-7 caTools_1.13 >> [8] bitops_1.0-4.1 gdata_2.8.2 gtools_2.6.2 >> tsne_0.1-2 vegan_2.0-3 permute_0.7-0 RUnit_0.4.26 >> [15] bio3d_1.1-3 RCytoscape_1.6.3 XMLRPC_0.2-4 >> graph_1.34.0 org.Hs.eg.db_2.7.1 RSQLite_0.11.1 DBI_0.2-5 >> [22] AnnotationDbi_1.18.0 Biobase_2.16.0 BiocGenerics_0.2.0 >> adegenet_1.3-4 ade4_1.4-17 MASS_7.3-18 >> cluster_1.14.2 >> [29] Hmisc_3.9-3 survival_2.36-14 plyr_1.7.1 >> >> loaded via a namespace (and not attached): >> [1] annotate_1.34.0 genefilter_1.38.0 GSEABase_1.18.0 IRanges_1.14.2 >> lattice_0.20-6 RBGL_1.32.0 RCurl_1.91-1 stats4_2.15.1 >> [9] tools_2.15.1 XML_3.9-4 xtable_1.7-0 >> ______________________________**_________________ >> Bioconductor mailing list >> Bioconductor@r-project.org >> https://stat.ethz.ch/mailman/**listinfo/bioconductor<https: stat.e="" thz.ch="" mailman="" listinfo="" bioconductor=""> >> Search the archives: http://news.gmane.org/gmane.** >> science.biology.informatics.**conductor<http: news.gmane.org="" gmane="" .science.biology.informatics.conductor=""> >> > > > [[alternative HTML version deleted]]
ADD COMMENTlink written 7.1 years ago by yao chen200
Answer: GO enrichment significance
0
gravatar for Grimes Mark
7.1 years ago by
Grimes Mark40
United States
Grimes Mark40 wrote:
Jack The topGO and GOFunction libraries will install using biocLite after setting source to bioconductor as instructed on the bioconductor web pages for these packages. It doesn't work installing them directly from a CRAN mirror. However, for GOFunction I get the error: 'package "RGraphviz" could not be loaded.' Attempts to load RGraphviz directly from bioconductor also failed. Mark On Jul 16, 2012, at 7:50 AM, Yao Chen wrote: > Hi Mark, > > Try this one. http://svitsrv25.epfl.ch/R-doc/library/topGO/html /topGO-package.html > Here is the original paper: http://bioinformatics.oxfordjournals.org/content/22/13/1600.full > > Best, > > Jack > > 2012/7/13 Grimes Mark <mark.grimes@mso.umt.edu> > Jack > > I tried - unfortunately the GOFunction library is not working for R > 2.15.1! > > Mark > > > On Jul 13, 2012, at 11:52 AM, Yao Chen wrote: > >> Hi Mark, >> >> You can use that. I saw the instruction. It can deal with >> redundancy GO terms.I didn't use that package before. >> >> Best, >> >> Jack >> >> 2012/7/13 Grimes Mark <mark.grimes@mso.umt.edu> >> Jack >> >> Thank you, good suggestion. I looked up the Alexa paper and it >> seems sensible. I am not programmer (well, I use R, but I am only >> a humble cell biologist). I googled "decorrelating GO graph >> structure" with "bioconductor" and the GOFunction package was >> returned. Does this contain the algorithm that you recommend? I >> have not used this package. >> >> Best, >> >> Mark >> >> On Jul 12, 2012, at 9:41 AM, Yao Chen wrote: >> >>> Hi Mark, >>> >>> There are plenty of them in the Gene Ontology website:http://www.geneontology.org/GO.tools.shtml#slimmer >>> >>> Personally, because these algorithms were based on statistic >>> concern not biological meaning, it's hardly to say which one is >>> the best. I like this one:http://bioinformatics.oxfordjournals.org /content/22/13/1600.abstract >>> >>> Best, >>> >>> Jack >>> >>> >>> >>> 2012/7/12 Grimes Mark <mark.grimes@mso.umt.edu> >>> Yao (Jack) >>> >>> Thanks for that hint. I would appreciate suggestions for the >>> specific software (or commands) to investigate the hierarchy in >>> the way you describe. I am not familiar with what you describe. >>> >>> Mark >>> >>> On Jul 11, 2012, at 11:37 AM, Yao Chen wrote: >>> >>>> Hi Mark, >>>> >>>> One thing you should notice is the hierarchy structure of Gene >>>> Ontoloty. You may find two different terms are actually child- >>>> parent terms. Therefore it may not be many "different" terms for >>>> genes within a cluster. You may use some software to find the >>>> specific term accounting for the hierarchy structure or use >>>> enrichment of KEGG instead. >>>> >>>> Jack >>>> >>>> 2012/7/11 Grimes Mark <mark.grimes@mso.umt.edu> >>>> Jack >>>> >>>> Thank you. Since the genes are from one tissue, and are all >>>> modified by tyrosine phosphorylation (this is a phosphoproteomic >>>> data set), they may be expected to be already ontologically >>>> enriched against the whole genome. I am finding that clustering >>>> methods return many clusters that have more GO terms than that >>>> rate of 0.35 enriched GO terms per gene, but some are not >>>> different from this. This number seems high to me, which is why >>>> I am wondering if I have a reasonable method to determine the >>>> false discovery rate for GO terms from my data set. >>>> >>>> Mark >>>> >>>> >>>> On Jul 11, 2012, at 7:52 AM, Yao Chen wrote: >>>> >>>>> Hi Mark, >>>>> >>>>> Yes. 'background' retrieval of GO terms" can be used as >>>>> external evaluation. I think the assumption is genes within the >>>>> same cluster are more likely enriched in the same function. >>>>> Let's say you have 34 genes in one cluster enriched in 3 GO >>>>> terms. Then for randomly selected 34 genes, they should be >>>>> enriched in less GO terms (0 term usually). If you randomly >>>>> select 1000 times, you will get P values. >>>>> >>>>> Jack >>>>> >>>>> 2012/7/10 Grimes Mark <mark.grimes@mso.umt.edu> >>>>> Dear People >>>>> >>>>> Paul Shannon suggested I submit the following question to this >>>>> list. I am investigating clustering techniques and would like >>>>> to know whether GO term enrichment can be used as an external >>>>> evaluation to determine whether clusters are any different from >>>>> a random selection of genes from my data set. I used the >>>>> following code to determine the 'background' retrieval of GO >>>>> terms from a set of random gene clusters. My conclusion is that >>>>> a random sample of 11 to 34 genes from this gene set returns an >>>>> average of 0.35 enriched GO terms per gene. Does this make >>>>> sense to use as 'background' retrieval of GO terms? >>>>> >>>>> Thanks for your help, >>>>> >>>>> Mark Grimes >>>>> University of Montana >>>>> >>>>> # >>>>> # AUTHOR: MARK GRIMES (mark.grimes@mso.umt.edu) >>>>> # >>>>> # Question: what is the background for retrieval of GO terms >>>>> from my data set? >>>>> # data set is 2482 genes from proteomic data from lung cancer >>>>> samples (data frame is cyf; genes are in GENE SYMBOL format) >>>>> # I won't include the data here but this could be in >>>>> principle tested with any gene list >>>>> # set gene'universe' to this data set >>>>> lcgenes <<- as.character (sapply (cyf$Gene.Name, >>>>> function (id) org.Hs.egSYMBOL2EG [[id]])) >>>>> # >>>>> # random genes: 11 to 34 from this list: >>>>> randgene.list <- as.list(NULL) >>>>> rand.d=data.frame(NULL) >>>>> for(i in (11:34)) { >>>>> rand.temp=data.frame(NULL) >>>>> rand.temp <- >>>>> data.frame(as.character(cyf[sample(2482, i), "Gene.Name"])) >>>>> rand.temp$group <- i >>>>> names(rand.temp) <- c("Gene.Name", "genes") >>>>> rand.d <- rbind(rand.d, rand.temp) >>>>> } >>>>> randgene.list <- dlply(rand.d, .(genes)) # GROUP LIST >>>>> # Now fetch GO terms using a function written by Paul Shannon >>>>> (pasted below) >>>>> # Use randgenes.list to get gene IDs >>>>> randgo.list <- as.list(NULL) >>>>> randgo.df=data.frame(NULL) >>>>> for(k in 1:length(randgenes.list)) { >>>>> genes <- as.character (sapply >>>>> (as.character(randgenes.list[[k]]$Gene.Name), function (id) >>>>> org.Hs.egSYMBOL2EG [[id]])) >>>>> tbl.go <<- tabular.go.enrichment >>>>> (genes, ontology='BP', pvalue=0.01, geneUniverse=lcgenes) >>>>> # If there is any enrichment, the number >>>>> of genes for significant terms should be > 2 >>>>> tbl.go2 <- tbl.go[tbl.go >>>>> $Count>=2,] >>>>> randgo.list[[k]] <- tbl.go2 >>>>> randgo.df[k,1] <- >>>>> length(unique(genes)) >>>>> randgo.df[k,2] <- >>>>> length(unique(tbl.go2$Term)) >>>>> randgo.df[k,3] <- >>>>> mean(unique(tbl.go2$Count)) >>>>> randgo.df[k,4] <- >>>>> mean(unique(tbl.go2$Count)/unique(tbl.go2$Expected)) >>>>> # >>>>> } >>>>> names(randgo.df) <- c("genes", >>>>> "GO.terms", "mean.count", "mean.count.over.expected") >>>>> randgo <- randgo.df >>>>> randgo$mean.count[is.nan(randgo >>>>> $mean.count)] <- 0 >>>>> randgo >>>>> $mean.count.over.expected[is.nan(randgo >>>>> $mean.count.over.expected)] <- 0 >>>>> mean(randgo$GO.terms) # 7.76 >>>>> sd(randgo$GO.terms) # 8.747762 >>>>> mean(randgo$mean.count) # 3.498667 >>>>> sd(randgo$mean.count) # 2.06647 >>>>> mean(randgo$mean.count.over.expected) # >>>>> 18.34359 >>>>> sd(randgo$mean.count.over.expected) # >>>>> 10.89013 >>>>> randgo$GOterms.per.gene <- randgo >>>>> $GO.terms/randgo$genes >>>>> mean(randgo$GOterms.per.gene) # 0.3478717 >>>>> sd(randgo$GOterms.per.gene) # 0.3464063 >>>>> # >>>>> # Conclusion: a random sample of this gene set returns an >>>>> average of 0.35 enriched GO terms per gene >>>>> # Question Is this a resonable background number >>>>> to test whether clusters that have real interactions are >>>>> meaninful? >>>>> # _______________________________________________________________ >>>>> # functions thanks to Paul Shannon: >>>>> tabular.go.enrichment <- function (genes, ontology, pvalue, >>>>> geneUniverse=character (0)) >>>>> { >>>>> write (sprintf ('about to call go.enrichment with %d genes, >>>>> ontolog=%s, pvalue=%s', length (genes), ontology, pvalue), >>>>> stderr ()) >>>>> hgr = go.enrichment (genes, ontology, geneUniverse, pvalue) >>>>> write (sprintf ('back from call to go.enrichment'), stderr ()) >>>>> tbl <<- summary (hgr) >>>>> tbl <<- tbl [, c (7, 1, 2, 4, 5, 6)] >>>>> colnames (tbl) [2] <<- 'GOID' >>>>> rownames (tbl) <<- NULL >>>>> virgin.tbl = TRUE >>>>> sample.row = list (Term='bogus', GOID='bogus', Pvalue=0.0, >>>>> Expected=0, Count=0, Size=0, ID='bogus', Gene='bogus') #, >>>>> Depth=99) >>>>> df = data.frame (sample.row, stringsAsFactors=FALSE) >>>>> >>>>> for (r in 1:nrow (tbl)) { >>>>> #write (sprintf ('assembling gene-based table, summary row >>>>> %d', r), stderr ()) >>>>> # print (tbl [r,]) >>>>> goTerm = tbl [r, 2] >>>>> gene.ids = geneIdsByCategory (hgr) [[goTerm]] >>>>> for gene.id in gene.ids) { >>>>> old.row = tbl [r,] >>>>> rownames (old.row) = NULL >>>>> gene.symbol = geneSymbol gene.id) >>>>> #depth = go.depth (goTerm) >>>>> new.row = cbind (old.row, Id=gene.id, zz=gene.symbol, >>>>> stringsAsFactors=FALSE) # Depth=depth, stringsAsFactors=FALSE) >>>>> colnames (new.row) = c ('Term', 'GOID', 'Pvalue', >>>>> 'Expected', 'Count', 'Size', 'ID', 'Gene') #, 'Depth') >>>>> if (virgin.tbl) { >>>>> df [1,] = new.row >>>>> virgin.tbl = FALSE >>>>> } >>>>> else >>>>> df = rbind (df, new.row) >>>>> } # for gene.id >>>>> } # for r >>>>> >>>>> return (df) >>>>> >>>>> } >>>>> # >>>>> go.enrichment = function (genes, ontology, >>>>> universe=character(0), pvalue=0.05, annotation='org.Hs.eg.db', >>>>> conditionalSearch=TRUE) >>>>> { >>>>> params = new ("GOHyperGParams", geneIds=genes, >>>>> ontology=ontology, annotation=annotation, >>>>> universeGeneIds=universe, pvalueCutoff = >>>>> pvalue, conditional=conditionalSearch, >>>>> testDirection = "over") >>>>> hgr <<- hyperGTest (params) >>>>> return (hgr) >>>>> >>>>> } # go.enrichment >>>>> >>>>> >>>>> sessionInfo() >>>>> R version 2.15.1 (2012-06-22) >>>>> Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) >>>>> >>>>> locale: >>>>> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 >>>>> >>>>> attached base packages: >>>>> [1] grid splines stats graphics grDevices utils >>>>> datasets methods base >>>>> >>>>> other attached packages: >>>>> [1] GOstats_2.22.0 Category_2.22.0 >>>>> GO.db_2.7.1 rgl_0.92.879 gplots_2.10.1 >>>>> KernSmooth_2.23-7 caTools_1.13 >>>>> [8] bitops_1.0-4.1 gdata_2.8.2 >>>>> gtools_2.6.2 tsne_0.1-2 vegan_2.0-3 >>>>> permute_0.7-0 RUnit_0.4.26 >>>>> [15] bio3d_1.1-3 RCytoscape_1.6.3 >>>>> XMLRPC_0.2-4 graph_1.34.0 org.Hs.eg.db_2.7.1 >>>>> RSQLite_0.11.1 DBI_0.2-5 >>>>> [22] AnnotationDbi_1.18.0 Biobase_2.16.0 >>>>> BiocGenerics_0.2.0 adegenet_1.3-4 ade4_1.4-17 >>>>> MASS_7.3-18 cluster_1.14.2 >>>>> [29] Hmisc_3.9-3 survival_2.36-14 plyr_1.7.1 >>>>> >>>>> loaded via a namespace (and not attached): >>>>> [1] annotate_1.34.0 genefilter_1.38.0 GSEABase_1.18.0 >>>>> IRanges_1.14.2 lattice_0.20-6 RBGL_1.32.0 >>>>> RCurl_1.91-1 stats4_2.15.1 >>>>> [9] tools_2.15.1 XML_3.9-4 xtable_1.7-0 >>>>> _______________________________________________ >>>>> Bioconductor mailing list >>>>> Bioconductor@r-project.org >>>>> https://stat.ethz.ch/mailman/listinfo/bioconductor >>>>> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor >>>>> >>>> >>>> >>> >>> >> >> > > [[alternative HTML version deleted]]
ADD COMMENTlink written 7.1 years ago by Grimes Mark40
Answer: GO enrichment significance
0
gravatar for Grimes Mark
7.1 years ago by
Grimes Mark40
United States
Grimes Mark40 wrote:
Kasper Hansen RGraphviz failed to install with R 2.15.1 biocInstaller v 1.4.7 (see below). Mark Grimes library(GOFunction) Loading required package: Rgraphviz Error : .onLoad failed in loadNamespace() for 'Rgraphviz', details: call: value[[3L]](cond) error: unable to load shared object '/Library/Frameworks/ R.framework/Versions/2.15/Resources/library/Rgraphviz/libs/x86_64/ Rgraphviz.so': dlopen(/Library/Frameworks/R.framework/Versions/2.15/Resources/ library/Rgraphviz/libs/x86_64/Rgraphviz.so, 6): Library not loaded: / usr/local/lib/libgvc.5.dylib Referenced from: /Library/Frameworks/R.framework/Versions/2.15/ Resources/library/Rgraphviz/libs/x86_64/Rgraphviz.so Reason: image not found Check that (1) graphviz is installed on your system; (2) the installed version of graphviz matches '2.26.3'; this is the version used to build this Rgraphviz package; (3) graphviz is accessible to R, e.g., the path to the graphviz 'bin' directory is in the system 'PATH' variable. See additional instructions in the 'README' file of the Rgraphviz 'source' distribution, available at http://bioconductor.org/packages/release/bioc/html/Rgraphviz.html Ask further questions on the Bioconductor mailing list http://bioconductor.org/docs/mailList.html Error: package ‘Rgraphviz’ could not be loaded > install.packages('Rgraphviz') Warning message: package ‘Rgraphviz’ is not available (for R version 2.15.1) > biocLite("Rgraphviz") BioC_mirror: http://bioconductor.org Using R version 2.15, BiocInstaller version 1.4.7. Warning: unable to access index for repository http://brainarray.mbni. med.umich.edu/bioc/bin/macosx/leopard/contrib/2.15 Installing package(s) 'Rgraphviz' Warning: unable to access index for repository http://brainarray.mbni. med.umich.edu/bioc/bin/macosx/leopard/contrib/2.15 trying URL 'http://www.bioconductor.org/packages/2.10/bioc/bin/macosx/ leopard/contrib/2.15/Rgraphviz_1.34.1.tgz' Content type 'application/x-gzip' length 941884 bytes (919 Kb) opened URL ================================================== downloaded 919 Kb The downloaded binary packages are in /var/folders/p3/vs342gm97msfg0y_fsx79x880000gn/T//RtmpLjF7RP/ downloaded_packages Warning: unable to access index for repository http://brainarray.mbni. med.umich.edu/bioc/bin/macosx/leopard/contrib/2.15 > library(GOFunction) Loading required package: Rgraphviz Error : .onLoad failed in loadNamespace() for 'Rgraphviz', details: call: value[[3L]](cond) error: unable to load shared object '/Library/Frameworks/ R.framework/Versions/2.15/Resources/library/Rgraphviz/libs/x86_64/ Rgraphviz.so': dlopen(/Library/Frameworks/R.framework/Versions/2.15/Resources/ library/Rgraphviz/libs/x86_64/Rgraphviz.so, 6): Library not loaded: / usr/local/lib/libgvc.5.dylib Referenced from: /Library/Frameworks/R.framework/Versions/2.15/ Resources/library/Rgraphviz/libs/x86_64/Rgraphviz.so Reason: image not found Check that (1) graphviz is installed on your system; (2) the installed version of graphviz matches '2.26.3'; this is the version used to build this Rgraphviz package; (3) graphviz is accessible to R, e.g., the path to the graphviz 'bin' directory is in the system 'PATH' variable. See additional instructions in the 'README' file of the Rgraphviz 'source' distribution, available at http://bioconductor.org/packages/release/bioc/html/Rgraphviz.html Ask further questions on the Bioconductor mailing list http://bioconductor.org/docs/mailList.html Error: package ‘Rgraphviz’ could not be loaded On Jul 17, 2012, at 1:03 PM, Yao Chen wrote: > Hi Mark, > > You should email the package builder for the installing problem. It > seems you don't have the "RGpraphviz" package. You should install it > first. > > Best, > > Jack > > 2012/7/17 Grimes Mark <mark.grimes@mso.umt.edu> > Jack > > The topGO and GOFunction libraries will install using biocLite after > setting source to bioconductor as instructed on the bioconductor web > pages for these packages. It doesn't work installing them directly > from a CRAN mirror. However, for GOFunction I get the error: > 'package "RGraphviz" could not be loaded.' Attempts to load > RGraphviz directly from bioconductor also failed. > > > > Mark > > > > On Jul 16, 2012, at 7:50 AM, Yao Chen wrote: > >> Hi Mark, >> >> Try this one. http://svitsrv25.epfl.ch/R-doc/library/topGO/html /topGO-package.html >> Here is the original paper: http://bioinformatics.oxfordjournals.org/content/22/13/1600.full >> >> Best, >> >> Jack >> >> 2012/7/13 Grimes Mark <mark.grimes@mso.umt.edu> >> Jack >> >> I tried - unfortunately the GOFunction library is not working for R >> 2.15.1! >> >> Mark >> >> >> On Jul 13, 2012, at 11:52 AM, Yao Chen wrote: >> >>> Hi Mark, >>> >>> You can use that. I saw the instruction. It can deal with >>> redundancy GO terms.I didn't use that package before. >>> >>> Best, >>> >>> Jack >>> >>> 2012/7/13 Grimes Mark <mark.grimes@mso.umt.edu> >>> Jack >>> >>> Thank you, good suggestion. I looked up the Alexa paper and it >>> seems sensible. I am not programmer (well, I use R, but I am >>> only a humble cell biologist). I googled "decorrelating GO graph >>> structure" with "bioconductor" and the GOFunction package was >>> returned. Does this contain the algorithm that you recommend? I >>> have not used this package. >>> >>> Best, >>> >>> Mark >>> >>> On Jul 12, 2012, at 9:41 AM, Yao Chen wrote: >>> >>>> Hi Mark, >>>> >>>> There are plenty of them in the Gene Ontology website:http://www.geneontology.org/GO.tools.shtml#slimmer >>>> >>>> Personally, because these algorithms were based on statistic >>>> concern not biological meaning, it's hardly to say which one is >>>> the best. I like this one:http://bioinformatics.oxfordjournals.or g/content/22/13/1600.abstract >>>> >>>> Best, >>>> >>>> Jack >>>> >>>> >>>> >>>> 2012/7/12 Grimes Mark <mark.grimes@mso.umt.edu> >>>> Yao (Jack) >>>> >>>> Thanks for that hint. I would appreciate suggestions for the >>>> specific software (or commands) to investigate the hierarchy in >>>> the way you describe. I am not familiar with what you describe. >>>> >>>> Mark >>>> >>>> On Jul 11, 2012, at 11:37 AM, Yao Chen wrote: >>>> >>>>> Hi Mark, >>>>> >>>>> One thing you should notice is the hierarchy structure of Gene >>>>> Ontoloty. You may find two different terms are actually child- >>>>> parent terms. Therefore it may not be many "different" terms for >>>>> genes within a cluster. You may use some software to find the >>>>> specific term accounting for the hierarchy structure or use >>>>> enrichment of KEGG instead. >>>>> >>>>> Jack >>>>> >>>>> 2012/7/11 Grimes Mark <mark.grimes@mso.umt.edu> >>>>> Jack >>>>> >>>>> Thank you. Since the genes are from one tissue, and are all >>>>> modified by tyrosine phosphorylation (this is a phosphoproteomic >>>>> data set), they may be expected to be already ontologically >>>>> enriched against the whole genome. I am finding that clustering >>>>> methods return many clusters that have more GO terms than that >>>>> rate of 0.35 enriched GO terms per gene, but some are not >>>>> different from this. This number seems high to me, which is why >>>>> I am wondering if I have a reasonable method to determine the >>>>> false discovery rate for GO terms from my data set. >>>>> >>>>> Mark >>>>> >>>>> >>>>> On Jul 11, 2012, at 7:52 AM, Yao Chen wrote: >>>>> >>>>>> Hi Mark, >>>>>> >>>>>> Yes. 'background' retrieval of GO terms" can be used as >>>>>> external evaluation. I think the assumption is genes within >>>>>> the same cluster are more likely enriched in the same >>>>>> function. Let's say you have 34 genes in one cluster enriched >>>>>> in 3 GO terms. Then for randomly selected 34 genes, they should >>>>>> be enriched in less GO terms (0 term usually). If you randomly >>>>>> select 1000 times, you will get P values. >>>>>> >>>>>> Jack >>>>>> >>>>>> 2012/7/10 Grimes Mark <mark.grimes@mso.umt.edu> >>>>>> Dear People >>>>>> >>>>>> Paul Shannon suggested I submit the following question to this >>>>>> list. I am investigating clustering techniques and would like >>>>>> to know whether GO term enrichment can be used as an external >>>>>> evaluation to determine whether clusters are any different from >>>>>> a random selection of genes from my data set. I used the >>>>>> following code to determine the 'background' retrieval of GO >>>>>> terms from a set of random gene clusters. My conclusion is that >>>>>> a random sample of 11 to 34 genes from this gene set returns an >>>>>> average of 0.35 enriched GO terms per gene. Does this make >>>>>> sense to use as 'background' retrieval of GO terms? >>>>>> >>>>>> Thanks for your help, >>>>>> >>>>>> Mark Grimes >>>>>> University of Montana >>>>>> >>>>>> # >>>>>> # AUTHOR: MARK GRIMES (mark.grimes@mso.umt.edu) >>>>>> # >>>>>> # Question: what is the background for retrieval of GO terms >>>>>> from my data set? >>>>>> # data set is 2482 genes from proteomic data from lung cancer >>>>>> samples (data frame is cyf; genes are in GENE SYMBOL format) >>>>>> # I won't include the data here but this could be in >>>>>> principle tested with any gene list >>>>>> # set gene'universe' to this data set >>>>>> lcgenes <<- as.character (sapply (cyf$Gene.Name, >>>>>> function (id) org.Hs.egSYMBOL2EG [[id]])) >>>>>> # >>>>>> # random genes: 11 to 34 from this list: >>>>>> randgene.list <- as.list(NULL) >>>>>> rand.d=data.frame(NULL) >>>>>> for(i in (11:34)) { >>>>>> rand.temp=data.frame(NULL) >>>>>> rand.temp <- >>>>>> data.frame(as.character(cyf[sample(2482, i), "Gene.Name"])) >>>>>> rand.temp$group <- i >>>>>> names(rand.temp) <- c("Gene.Name", "genes") >>>>>> rand.d <- rbind(rand.d, rand.temp) >>>>>> } >>>>>> randgene.list <- dlply(rand.d, .(genes)) # GROUP LIST >>>>>> # Now fetch GO terms using a function written by Paul Shannon >>>>>> (pasted below) >>>>>> # Use randgenes.list to get gene >>>>>> IDs >>>>>> randgo.list <- as.list(NULL) >>>>>> randgo.df=data.frame(NULL) >>>>>> for(k in 1:length(randgenes.list)) { >>>>>> genes <- as.character (sapply >>>>>> (as.character(randgenes.list[[k]]$Gene.Name), function (id) >>>>>> org.Hs.egSYMBOL2EG [[id]])) >>>>>> tbl.go <<- >>>>>> tabular.go.enrichment (genes, ontology='BP', pvalue=0.01, >>>>>> geneUniverse=lcgenes) >>>>>> # If there is any enrichment, the number >>>>>> of genes for significant terms should be > 2 >>>>>> tbl.go2 <- tbl.go[tbl.go >>>>>> $Count>=2,] >>>>>> randgo.list[[k]] <- tbl.go2 >>>>>> randgo.df[k,1] <- >>>>>> length(unique(genes)) >>>>>> randgo.df[k,2] <- >>>>>> length(unique(tbl.go2$Term)) >>>>>> randgo.df[k,3] <- >>>>>> mean(unique(tbl.go2$Count)) >>>>>> randgo.df[k,4] <- >>>>>> mean(unique(tbl.go2$Count)/unique(tbl.go2$Expected)) >>>>>> # >>>>>> } >>>>>> names(randgo.df) <- c("genes", >>>>>> "GO.terms", "mean.count", "mean.count.over.expected") >>>>>> randgo <- randgo.df >>>>>> randgo$mean.count[is.nan(randgo >>>>>> $mean.count)] <- 0 >>>>>> randgo >>>>>> $mean.count.over.expected[is.nan(randgo >>>>>> $mean.count.over.expected)] <- 0 >>>>>> mean(randgo$GO.terms) # 7.76 >>>>>> sd(randgo$GO.terms) # 8.747762 >>>>>> mean(randgo$mean.count) # 3.498667 >>>>>> sd(randgo$mean.count) # 2.06647 >>>>>> mean(randgo$mean.count.over.expected) >>>>>> # 18.34359 >>>>>> sd(randgo$mean.count.over.expected) # >>>>>> 10.89013 >>>>>> randgo$GOterms.per.gene <- randgo >>>>>> $GO.terms/randgo$genes >>>>>> mean(randgo$GOterms.per.gene) # >>>>>> 0.3478717 >>>>>> sd(randgo$GOterms.per.gene) # 0.3464063 >>>>>> # >>>>>> # Conclusion: a random sample of this gene set returns an >>>>>> average of 0.35 enriched GO terms per gene >>>>>> # Question Is this a resonable background >>>>>> number to test whether clusters that have real interactions are >>>>>> meaninful? >>>>>> # _______________________________________________________________ >>>>>> # functions thanks to Paul Shannon: >>>>>> tabular.go.enrichment <- function (genes, ontology, pvalue, >>>>>> geneUniverse=character (0)) >>>>>> { >>>>>> write (sprintf ('about to call go.enrichment with %d genes, >>>>>> ontolog=%s, pvalue=%s', length (genes), ontology, pvalue), >>>>>> stderr ()) >>>>>> hgr = go.enrichment (genes, ontology, geneUniverse, pvalue) >>>>>> write (sprintf ('back from call to go.enrichment'), stderr ()) >>>>>> tbl <<- summary (hgr) >>>>>> tbl <<- tbl [, c (7, 1, 2, 4, 5, 6)] >>>>>> colnames (tbl) [2] <<- 'GOID' >>>>>> rownames (tbl) <<- NULL >>>>>> virgin.tbl = TRUE >>>>>> sample.row = list (Term='bogus', GOID='bogus', Pvalue=0.0, >>>>>> Expected=0, Count=0, Size=0, ID='bogus', Gene='bogus') #, >>>>>> Depth=99) >>>>>> df = data.frame (sample.row, stringsAsFactors=FALSE) >>>>>> >>>>>> for (r in 1:nrow (tbl)) { >>>>>> #write (sprintf ('assembling gene-based table, summary row >>>>>> %d', r), stderr ()) >>>>>> # print (tbl [r,]) >>>>>> goTerm = tbl [r, 2] >>>>>> gene.ids = geneIdsByCategory (hgr) [[goTerm]] >>>>>> for gene.id in gene.ids) { >>>>>> old.row = tbl [r,] >>>>>> rownames (old.row) = NULL >>>>>> gene.symbol = geneSymbol gene.id) >>>>>> #depth = go.depth (goTerm) >>>>>> new.row = cbind (old.row, Id=gene.id, zz=gene.symbol, >>>>>> stringsAsFactors=FALSE) # Depth=depth, stringsAsFactors=FALSE) >>>>>> colnames (new.row) = c ('Term', 'GOID', 'Pvalue', >>>>>> 'Expected', 'Count', 'Size', 'ID', 'Gene') #, 'Depth') >>>>>> if (virgin.tbl) { >>>>>> df [1,] = new.row >>>>>> virgin.tbl = FALSE >>>>>> } >>>>>> else >>>>>> df = rbind (df, new.row) >>>>>> } # for gene.id >>>>>> } # for r >>>>>> >>>>>> return (df) >>>>>> >>>>>> } >>>>>> # >>>>>> go.enrichment = function (genes, ontology, >>>>>> universe=character(0), pvalue=0.05, annotation='org.Hs.eg.db', >>>>>> conditionalSearch=TRUE) >>>>>> { >>>>>> params = new ("GOHyperGParams", geneIds=genes, >>>>>> ontology=ontology, annotation=annotation, >>>>>> universeGeneIds=universe, pvalueCutoff = >>>>>> pvalue, conditional=conditionalSearch, >>>>>> testDirection = "over") >>>>>> hgr <<- hyperGTest (params) >>>>>> return (hgr) >>>>>> >>>>>> } # go.enrichment >>>>>> >>>>>> >>>>>> sessionInfo() >>>>>> R version 2.15.1 (2012-06-22) >>>>>> Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) >>>>>> >>>>>> locale: >>>>>> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 >>>>>> >>>>>> attached base packages: >>>>>> [1] grid splines stats graphics grDevices utils >>>>>> datasets methods base >>>>>> >>>>>> other attached packages: >>>>>> [1] GOstats_2.22.0 Category_2.22.0 >>>>>> GO.db_2.7.1 rgl_0.92.879 gplots_2.10.1 >>>>>> KernSmooth_2.23-7 caTools_1.13 >>>>>> [8] bitops_1.0-4.1 gdata_2.8.2 >>>>>> gtools_2.6.2 tsne_0.1-2 vegan_2.0-3 >>>>>> permute_0.7-0 RUnit_0.4.26 >>>>>> [15] bio3d_1.1-3 RCytoscape_1.6.3 >>>>>> XMLRPC_0.2-4 graph_1.34.0 org.Hs.eg.db_2.7.1 >>>>>> RSQLite_0.11.1 DBI_0.2-5 >>>>>> [22] AnnotationDbi_1.18.0 Biobase_2.16.0 >>>>>> BiocGenerics_0.2.0 adegenet_1.3-4 ade4_1.4-17 >>>>>> MASS_7.3-18 cluster_1.14.2 >>>>>> [29] Hmisc_3.9-3 survival_2.36-14 plyr_1.7.1 >>>>>> >>>>>> loaded via a namespace (and not attached): >>>>>> [1] annotate_1.34.0 genefilter_1.38.0 GSEABase_1.18.0 >>>>>> IRanges_1.14.2 lattice_0.20-6 RBGL_1.32.0 >>>>>> RCurl_1.91-1 stats4_2.15.1 >>>>>> [9] tools_2.15.1 XML_3.9-4 xtable_1.7-0 >>>>>> _______________________________________________ >>>>>> Bioconductor mailing list >>>>>> Bioconductor@r-project.org >>>>>> https://stat.ethz.ch/mailman/listinfo/bioconductor >>>>>> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor >>>>>> >>>>> >>>>> >>>> >>>> >>> >>> >> >> > > [[alternative HTML version deleted]]
ADD COMMENTlink written 7.1 years ago by Grimes Mark40
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 16.09
Traffic: 104 users visited in the last hour