[ReportingTools] and DESeq2 results, publish DESeqDataSet using resultsNames other than the default
2
0
Entering edit mode
@dimitra-alexopoulou-6348
Last seen 6.9 years ago
Germany
Dear all, I've been happily using ReportingTools to publish an html report of my DESeq2 results so far having only two conditions to compare (i.e. WT to KO). I now have one Ctrl condition and three different mutations (say Mut1, Mut2 and Mut3): levels(condition) # my 4 different conditions # [1] "Ctrl" "Mut1" "Mut2" "Mut3" dds # my DESeqDataset, including the results # class: DESeqDataSet # dim: 24791 12 # exptData(0): # assays(3): counts mu cooks # rownames(24791): ENSMUSG00000000001 ENSMUSG00000000028 ... ENSMUSG00000093778 ENSMUSG00000093789 # rowData metadata column names(31): baseMean baseVar ... deviance maxCooks # colnames(12): Ctrl_1 Ctrl_2 ... Mut3_2 Mut3_3 # colData names(2): condition sizeFactor resultsNames(dds) # the results I have from DESeq2 saved in the dds # [1] "Intercept" "condition_Mut1_vs_Ctrl" "condition_Mut2_vs_Ctrl" "condition_Mut3_vs_Ctrl" When I want to create the html report of the DESeq2 results obtained, I do the following: # Creating the html report using ReportingTools: desReport <- HTMLReport(shortName = "Blah_over_Ctrl_DEGs", title = 'Blah detailed results', basePath = myOutdir, reportDirectory = "./DEreports" ) publish(dds, desReport, pvalueCutoff=0.1, factor = colData(dds)$condition) finish(desReport) The above returns by default results for the last coefficient from resultsNames, in my case: "condition_Mut3_vs_Ctrl". Is there a way to by-pass this default behaviour and output either: a. all results in one report, or b. each one of the results in a separate report, specifying this somehow to publish(), e.g.: publish(dds,name="condition_Mut2_vs_Ctrl", desReport, pvalueCutoff=0.1, factor=colData(dds)$condition) Or do I need to create a new dds_Mut2_over_Ctrl, subsetting the initial dds (which I don't know how to do and this would be my next question, especially to the DESeq2 people). I would like to avoid breaking the analysis into 3 comparisons from the beginning (meaning constructing 3 different DESeqDataSets and running the differential expression analysis on them). Thanks in advance, Dimitra -- Dimitra Alexopoulou, PhD Deep Sequencing Group - SFB655 Affiliation: DFG Research Center for Regenerative Therapies (CRTD) Biotechnology Center (Biotec) Technische Universit?t Dresden postal address: Deep Sequencing Group - SFB655 c/o DFG-Center for Regenerative Therapies Dresden Cluster of Excellence / TU Dresden Fetscherstra?e 105 01307 Dresden Phone: +49 (351) 458 82362 Email: dimitraa(at)biotec.tu-dresden.de Web: http://www.biotec.tu-dresden.de/ we are supported by: SFB 655, CRTD, Biotec, EU FP7, EFRE
0
Entering edit mode
@mikelove
Last seen 1 hour ago
United States
hi Dimitra, Please always include the output of sessionInfo(), so that we know what versions of packages you are using. I'm adding one of the ReportingTools authors. He might have a better answer for what can be done in the current release. Side note: we have been discussing how to handle the tradeoff better in the next release, and from the DESeq2 side, we have created a simple class 'DESeqResults' for the object returned by results(). This way other package authors can write methods for this object, so that all the arguments of the results() function are accessible. Mike On Wed, Jan 22, 2014 at 6:29 AM, Dimitra Alexopoulou < dimitra.alexopoulou@biotec.tu-dresden.de> wrote: > Dear all, > > I've been happily using ReportingTools to publish an html report of my > DESeq2 results so far having only two conditions to compare (i.e. WT to KO). > I now have one Ctrl condition and three different mutations (say Mut1, > Mut2 and Mut3): > > levels(condition) # my 4 different conditions > # [1] "Ctrl" "Mut1" "Mut2" "Mut3" > > dds # my DESeqDataset, including the results > # class: DESeqDataSet > # dim: 24791 12 > # exptData(0): > # assays(3): counts mu cooks > # rownames(24791): ENSMUSG00000000001 ENSMUSG00000000028 ... > ENSMUSG00000093778 ENSMUSG00000093789 > # rowData metadata column names(31): baseMean baseVar ... deviance maxCooks > # colnames(12): Ctrl_1 Ctrl_2 ... Mut3_2 Mut3_3 > # colData names(2): condition sizeFactor > > resultsNames(dds) # the results I have from DESeq2 saved in the dds > # [1] "Intercept" "condition_Mut1_vs_Ctrl" > "condition_Mut2_vs_Ctrl" "condition_Mut3_vs_Ctrl" > > > When I want to create the html report of the DESeq2 results obtained, I do > the following: > > # Creating the html report using ReportingTools: > desReport <- HTMLReport(shortName = "Blah_over_Ctrl_DEGs", > title = 'Blah detailed results', > basePath = myOutdir, > reportDirectory = "./DEreports" > ) > publish(dds, desReport, pvalueCutoff=0.1, factor = colData(dds)$condition) > finish(desReport) > > The above returns by default results for the last coefficient from > resultsNames, in my case: "condition_Mut3_vs_Ctrl". > > Is there a way to by-pass this default behaviour and output either: > a. all results in one report, or > b. each one of the results in a separate report, specifying this somehow > to publish(), e.g.: > publish(dds,name="condition_Mut2_vs_Ctrl", desReport, pvalueCutoff=0.1, > factor=colData(dds)$condition) > Or do I need to create a new dds_Mut2_over_Ctrl, subsetting the initial > dds (which I don't know how to do and this would be my next question, > especially to the DESeq2 people). > I would like to avoid breaking the analysis into 3 comparisons from the > beginning (meaning constructing 3 different DESeqDataSets and running the > differential expression analysis on them). > > Thanks in advance, > Dimitra > > -- > Dimitra Alexopoulou, PhD > Deep Sequencing Group - SFB655 > Affiliation: > DFG Research Center for Regenerative Therapies (CRTD) > Biotechnology Center (Biotec) > Technische UniversitÃ¤t Dresden > > postal address: > Deep Sequencing Group - SFB655 > c/o > DFG-Center for Regenerative Therapies Dresden > Cluster of Excellence / TU Dresden > FetscherstraÃe 105 > 01307 Dresden > > Phone: +49 (351) 458 82362 > Email: dimitraa(at)biotec.tu-dresden.de > Web: http://www.biotec.tu-dresden.de/ > > we are supported by: > SFB 655, CRTD, Biotec, EU FP7, EFRE > > _______________________________________________ > 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]]
0
Entering edit mode
Hi Michael, here is my sessionInfo(), I realized I had forgotten it when I had already pressed the Send button, sorry :S R version 3.0.2 (2013-09-25) Platform: x86_64-pc-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] parallel stats graphics grDevices utils datasets methods base other attached packages: [1] genefilter_1.44.0 biomaRt_2.18.0 *ReportingTools_2.2.0 * AnnotationDbi_1.24.0 [5] RSQLite_0.11.4 DBI_0.2-7 knitr_1.5 vsn_3.30.0 [9] Biobase_2.22.0 FactoMineR_1.25 leaps_2.9 scatterplot3d_0.3-34 [13] cluster_1.14.4 lattice_0.20-24 ellipse_0.3-8 car_2.0-19 [17] PerformanceAnalytics_1.1.0 xts_0.9-7 zoo_1.7-10 *DESeq2_1.2.8* [21] RcppArmadillo_0.3.920.3 Rcpp_0.10.6 GenomicRanges_1.14.3 XVector_0.2.0 [25] IRanges_1.20.6 BiocGenerics_0.8.0 gplots_2.12.1 plotrix_3.5-2 [29] scales_0.2.3 RColorBrewer_1.0-5 reshape2_1.2.2 plyr_1.8 loaded via a namespace (and not attached): [1] affy_1.40.0 affyio_1.30.0 annotate_1.40.0 AnnotationForge_1.4.4 BiocInstaller_1.12.0 [6] Biostrings_2.30.1 biovizBase_1.10.5 bitops_1.0-6 BSgenome_1.30.0 Category_2.28.0 [11] caTools_1.16 colorspace_1.2-4 dichromat_2.0-0 digest_0.6.4 edgeR_3.4.2 [16] evaluate_0.5.1 formatR_0.10 Formula_1.1-1 gdata_2.13.2 GenomicFeatures_1.14.2 [21] ggbio_1.10.10 ggplot2_0.9.3.1 GO.db_2.10.1 GOstats_2.28.0 graph_1.40.0 [26] grid_3.0.2 gridExtra_0.9.1 GSEABase_1.24.0 gtable_0.1.2 gtools_3.1.1 [31] Hmisc_3.13-0 hwriter_1.3 KernSmooth_2.23-10 labeling_0.2 limma_3.18.5 [36] locfit_1.5-9.1 MASS_7.3-29 Matrix_1.1-1.1 munsell_0.4.2 nnet_7.3-7 [41] PFAM.db_2.10.1 preprocessCore_1.24.0 proto_0.3-10 RBGL_1.38.0 RCurl_1.95-4.1 [46] R.methodsS3_1.5.2 R.oo_1.15.8 Rsamtools_1.14.2 rtracklayer_1.22.0 R.utils_1.28.4 [51] splines_3.0.2 stats4_3.0.2 stringr_0.6.2 survival_2.37-4 tools_3.0.2 [56] VariantAnnotation_1.8.7 XML_3.98-1.1 xtable_1.7-1 zlibbioc_1.8.0 On 01/22/2014 03:20 PM, Michael Love wrote: > hi Dimitra, > > Please always include the output of sessionInfo(), so that we know > what versions of packages you are using. > > I'm adding one of the ReportingTools authors. He might have a better > answer for what can be done in the current release. > > Side note: we have been discussing how to handle the tradeoff better > in the next release, and from the DESeq2 side, we have created a > simple class 'DESeqResults' for the object returned by results(). This > way other package authors can write methods for this object, so that > all the arguments of the results() function are accessible. > > Mike > > > On Wed, Jan 22, 2014 at 6:29 AM, Dimitra Alexopoulou > <dimitra.alexopoulou@biotec.tu-dresden.de> <mailto:dimitra.alexopoulou@biotec.tu-dresden.de>> wrote: > > Dear all, > > I've been happily using ReportingTools to publish an html report > of my DESeq2 results so far having only two conditions to compare > (i.e. WT to KO). > I now have one Ctrl condition and three different mutations (say > Mut1, Mut2 and Mut3): > > levels(condition) # my 4 different conditions > # [1] "Ctrl" "Mut1" "Mut2" "Mut3" > > dds # my DESeqDataset, including the results > # class: DESeqDataSet > # dim: 24791 12 > # exptData(0): > # assays(3): counts mu cooks > # rownames(24791): ENSMUSG00000000001 ENSMUSG00000000028 ... > ENSMUSG00000093778 ENSMUSG00000093789 > # rowData metadata column names(31): baseMean baseVar ... deviance > maxCooks > # colnames(12): Ctrl_1 Ctrl_2 ... Mut3_2 Mut3_3 > # colData names(2): condition sizeFactor > > resultsNames(dds) # the results I have from DESeq2 saved in the dds > # [1] "Intercept" "condition_Mut1_vs_Ctrl" > "condition_Mut2_vs_Ctrl" "condition_Mut3_vs_Ctrl" > > > When I want to create the html report of the DESeq2 results > obtained, I do the following: > > # Creating the html report using ReportingTools: > desReport <- HTMLReport(shortName = "Blah_over_Ctrl_DEGs", > title = 'Blah detailed results', > basePath = myOutdir, > reportDirectory = "./DEreports" > ) > publish(dds, desReport, pvalueCutoff=0.1, factor = > colData(dds)$condition) > finish(desReport) > > The above returns by default results for the last coefficient from > resultsNames, in my case: "condition_Mut3_vs_Ctrl". > > Is there a way to by-pass this default behaviour and output either: > a. all results in one report, or > b. each one of the results in a separate report, specifying this > somehow to publish(), e.g.: > publish(dds,name="condition_Mut2_vs_Ctrl", desReport, > pvalueCutoff=0.1, factor=colData(dds)$condition) > Or do I need to create a new dds_Mut2_over_Ctrl, subsetting the > initial dds (which I don't know how to do and this would be my > next question, especially to the DESeq2 people). > I would like to avoid breaking the analysis into 3 comparisons > from the beginning (meaning constructing 3 different DESeqDataSets > and running the differential expression analysis on them). > > Thanks in advance, > Dimitra > > -- > Dimitra Alexopoulou, PhD > Deep Sequencing Group - SFB655 > Affiliation: > DFG Research Center for Regenerative Therapies (CRTD) > Biotechnology Center (Biotec) > Technische UniversitÃ¤t Dresden > > postal address: > Deep Sequencing Group - SFB655 > c/o > DFG-Center for Regenerative Therapies Dresden > Cluster of Excellence / TU Dresden > FetscherstraÃe 105 > 01307 Dresden > > Phone: +49 (351) 458 82362 <tel:%2b49%20%28351%29%20458%2082362> > Email: dimitraa(at)biotec.tu-dresden.de <http: biotec.tu-="" dresden.de=""> > Web: http://www.biotec.tu-dresden.de/ > > we are supported by: > SFB 655, CRTD, Biotec, EU FP7, EFRE > > _______________________________________________ > Bioconductor mailing list > Bioconductor@r-project.org <mailto:bioconductor@r-project.org> > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: > http://news.gmane.org/gmane.science.biology.informatics.conductor > > -- Dimitra Alexopoulou, PhD Deep Sequencing Group - SFB655 Affiliation: DFG Research Center for Regenerative Therapies (CRTD) Biotechnology Center (Biotec) Technische UniversitÃ¤t Dresden postal address: Deep Sequencing Group - SFB655 c/o DFG-Center for Regenerative Therapies Dresden Cluster of Excellence / TU Dresden FetscherstraÃe 105 01307 Dresden Phone: +49 (351) 458 82362 Email: dimitraa(at)biotec.tu-dresden.de Web: http://www.biotec.tu-dresden.de/ we are supported by: SFB 655, CRTD, Biotec, EU FP7, EFRE [[alternative HTML version deleted]]
0
Entering edit mode
@james-w-macdonald-5106
Last seen 1 day ago
United States
Hi Dimitra, On 1/22/2014 6:29 AM, Dimitra Alexopoulou wrote: > Dear all, > > I've been happily using ReportingTools to publish an html report of my > DESeq2 results so far having only two conditions to compare (i.e. WT > to KO). > I now have one Ctrl condition and three different mutations (say Mut1, > Mut2 and Mut3): > > levels(condition) # my 4 different conditions > # [1] "Ctrl" "Mut1" "Mut2" "Mut3" > > dds # my DESeqDataset, including the results > # class: DESeqDataSet > # dim: 24791 12 > # exptData(0): > # assays(3): counts mu cooks > # rownames(24791): ENSMUSG00000000001 ENSMUSG00000000028 ... > ENSMUSG00000093778 ENSMUSG00000093789 > # rowData metadata column names(31): baseMean baseVar ... deviance > maxCooks > # colnames(12): Ctrl_1 Ctrl_2 ... Mut3_2 Mut3_3 > # colData names(2): condition sizeFactor > > resultsNames(dds) # the results I have from DESeq2 saved in the dds > # [1] "Intercept" "condition_Mut1_vs_Ctrl" "condition_Mut2_vs_Ctrl" > "condition_Mut3_vs_Ctrl" > > > When I want to create the html report of the DESeq2 results obtained, > I do the following: > > # Creating the html report using ReportingTools: > desReport <- HTMLReport(shortName = "Blah_over_Ctrl_DEGs", > title = 'Blah detailed results', > basePath = myOutdir, > reportDirectory = "./DEreports" > ) > publish(dds, desReport, pvalueCutoff=0.1, factor = > colData(dds)$condition) From ?publish: DESeqDataSet: ?publish(object, publicationType, factor = NULL, n = 1000, pvalueCutoff = 0.01, lfc = 0, coef = NULL, make.plots = TRUE, ..., name)? To coerce a ?DESeqDataSet? to a ?data.frame?, we use the ?results? function from the ?DESeq2? package, therefore one of ?DESeq?, or something similar must be run prior to ?publish?. By default, the last coefficient from ?resultsNames? is reported. Log fold changes, p-values and adjusted p-values are taken directly from the DESeqDataSet. Stripplots showing the expression values for each transcript are produced based on the normalized counts from the ?DESeqDataSet?, grouped by the levels in ?factor?. So you want to do the paradigmatic html <- HTMLReport(args go here) publish(object, html, coef=2) finish(html) html <- HTMLReport(args go here) publish(object, html, coef=3) finish(html) and like that until you have done all coefficients. Alternatively, you can construct a vector of the short names for the html pages, and the more descriptive names and run through using lapply(): sn <- resultNames(dds)[-1] ln <- paste("Mutation", 1:3, "versus Control") out <- lapply(1:3, function(x) { tmp <- HTMLReport(sn[x], ln[x], basePath = myOutdir, reportDirectory = "./DEreports") publish(dds, tmp, coef = x+1, pvalueCutoff=0.1, factor = colData(dds)$condition) return(finish(tmp))}) Then you can make an index page to tie it all together indx <- HTMLReport("index", "Look at these sweet results!") publish(Link(out, report = indx), indx) finish(index) Best, Jim > finish(desReport) > > The above returns by default results for the last coefficient from > resultsNames, in my case: "condition_Mut3_vs_Ctrl". > > Is there a way to by-pass this default behaviour and output either: > a. all results in one report, or > b. each one of the results in a separate report, specifying this > somehow to publish(), e.g.: > publish(dds,name="condition_Mut2_vs_Ctrl", desReport, > pvalueCutoff=0.1, factor=colData(dds)$condition) > Or do I need to create a new dds_Mut2_over_Ctrl, subsetting the > initial dds (which I don't know how to do and this would be my next > question, especially to the DESeq2 people). > I would like to avoid breaking the analysis into 3 comparisons from > the beginning (meaning constructing 3 different DESeqDataSets and > running the differential expression analysis on them). > > Thanks in advance, > Dimitra > -- James W. MacDonald, M.S. Biostatistician University of Washington Environmental and Occupational Health Sciences 4225 Roosevelt Way NE, # 100 Seattle WA 98105-6099 ADD COMMENT 0 Entering edit mode Hi Dimitra, Jim is completely correct about using coef' to pull out the different terms from your model. I just wanted to add that in addition to the one page-per result workflow he showed, you can call publish multiple times on the same object and same report using the different coefficients, ending up with one page with multiple tables. So instead of this: > So you want to do the paradigmatic > > html <- HTMLReport(args go here) > publish(object, html, coef=2) > finish(html) > > html <- HTMLReport(args go here) > publish(object, html, coef=3) > finish(html) > You can just do: html <- HTMLReport(args go here) publish(object, html, coef = 2) publish(object, html, coef = 3) finish(html) Hope that's helpful, Jason > and like that until you have done all coefficients. Alternatively, you can > construct a vector of the short names for the html pages, and the more > descriptive names and run through using lapply(): > > sn <- resultNames(dds)[-1] > ln <- paste("Mutation", 1:3, "versus Control") > > out <- lapply(1:3, function(x) { > tmp <- HTMLReport(sn[x], ln[x], basePath = myOutdir, > reportDirectory = "./DEreports") > publish(dds, tmp, coef = x+1, pvalueCutoff=0.1, factor = > colData(dds)$condition) > return(finish(tmp))}) > > Then you can make an index page to tie it all together > > indx <- HTMLReport("index", "Look at these sweet results!") > publish(Link(out, report = indx), indx) > finish(index) > > Best, > > Jim > > > > > finish(desReport) >> >> The above returns by default results for the last coefficient from >> resultsNames, in my case: "condition_Mut3_vs_Ctrl". >> >> Is there a way to by-pass this default behaviour and output either: >> a. all results in one report, or >> b. each one of the results in a separate report, specifying this somehow >> to publish(), e.g.: >> publish(dds,name="condition_Mut2_vs_Ctrl", desReport, pvalueCutoff=0.1, >> factor=colData(dds)$condition) >> Or do I need to create a new dds_Mut2_over_Ctrl, subsetting the initial >> dds (which I don't know how to do and this would be my next question, >> especially to the DESeq2 people). >> I would like to avoid breaking the analysis into 3 comparisons from the >> beginning (meaning constructing 3 different DESeqDataSets and running the >> differential expression analysis on them). >> >> Thanks in advance, >> Dimitra >> >> > -- > James W. MacDonald, M.S. > Biostatistician > University of Washington > Environmental and Occupational Health Sciences > 4225 Roosevelt Way NE, # 100 > Seattle WA 98105-6099 > > > _______________________________________________ > 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 > -- Jason A. Hackney, Ph.D. Bioinformatics and Computational Biology Genentech hackney.jason@gene.com 650-467-5084 On Wed, Jan 22, 2014 at 7:02 AM, James W. MacDonald <jmacdon@uw.edu> wrote: > Hi Dimitra, > > > > On 1/22/2014 6:29 AM, Dimitra Alexopoulou wrote: > >> Dear all, >> >> I've been happily using ReportingTools to publish an html report of my >> DESeq2 results so far having only two conditions to compare (i.e. WT to KO). >> I now have one Ctrl condition and three different mutations (say Mut1, >> Mut2 and Mut3): >> >> levels(condition) # my 4 different conditions >> # [1] "Ctrl" "Mut1" "Mut2" "Mut3" >> >> dds # my DESeqDataset, including the results >> # class: DESeqDataSet >> # dim: 24791 12 >> # exptData(0): >> # assays(3): counts mu cooks >> # rownames(24791): ENSMUSG00000000001 ENSMUSG00000000028 ... >> ENSMUSG00000093778 ENSMUSG00000093789 >> # rowData metadata column names(31): baseMean baseVar ... deviance >> maxCooks >> # colnames(12): Ctrl_1 Ctrl_2 ... Mut3_2 Mut3_3 >> # colData names(2): condition sizeFactor >> >> resultsNames(dds) # the results I have from DESeq2 saved in the dds >> # [1] "Intercept" "condition_Mut1_vs_Ctrl" "condition_Mut2_vs_Ctrl" >> "condition_Mut3_vs_Ctrl" >> >> >> When I want to create the html report of the DESeq2 results obtained, I >> do the following: >> >> # Creating the html report using ReportingTools: >> desReport <- HTMLReport(shortName = "Blah_over_Ctrl_DEGs", >> title = 'Blah detailed results', >> basePath = myOutdir, >> reportDirectory = "./DEreports" >> ) >> publish(dds, desReport, pvalueCutoff=0.1, factor = colData(dds)$condition) >> > > From ?publish: > > DESeqDataSet: > publish(object, publicationType, factor = NULL, n = 1000, > pvalueCutoff = 0.01, lfc = 0, coef = NULL, make.plots = TRUE, > ..., name) To coerce a DESeqDataSet to a data.frame, we > use the results function from the DESeq2 package, > therefore one of DESeq, or something similar must be run > prior to publish. By default, the last coefficient from > resultsNames is reported. Log fold changes, p-values and > adjusted p-values are taken directly from the DESeqDataSet. > Stripplots showing the expression values for each transcript > are produced based on the normalized counts from the > DESeqDataSet, grouped by the levels in factor. > > So you want to do the paradigmatic > > html <- HTMLReport(args go here) > publish(object, html, coef=2) > finish(html) > > html <- HTMLReport(args go here) > publish(object, html, coef=3) > finish(html) > > and like that until you have done all coefficients. Alternatively, you can > construct a vector of the short names for the html pages, and the more > descriptive names and run through using lapply(): > > sn <- resultNames(dds)[-1] > ln <- paste("Mutation", 1:3, "versus Control") > > out <- lapply(1:3, function(x) { > tmp <- HTMLReport(sn[x], ln[x], basePath = myOutdir, > reportDirectory = "./DEreports") > publish(dds, tmp, coef = x+1, pvalueCutoff=0.1, factor = > colData(dds)$condition) > return(finish(tmp))}) > > Then you can make an index page to tie it all together > > indx <- HTMLReport("index", "Look at these sweet results!") > publish(Link(out, report = indx), indx) > finish(index) > > Best, > > Jim > > > > > finish(desReport) >> >> The above returns by default results for the last coefficient from >> resultsNames, in my case: "condition_Mut3_vs_Ctrl". >> >> Is there a way to by-pass this default behaviour and output either: >> a. all results in one report, or >> b. each one of the results in a separate report, specifying this somehow >> to publish(), e.g.: >> publish(dds,name="condition_Mut2_vs_Ctrl", desReport, pvalueCutoff=0.1, >> factor=colData(dds)$condition) >> Or do I need to create a new dds_Mut2_over_Ctrl, subsetting the initial >> dds (which I don't know how to do and this would be my next question, >> especially to the DESeq2 people). >> I would like to avoid breaking the analysis into 3 comparisons from the >> beginning (meaning constructing 3 different DESeqDataSets and running the >> differential expression analysis on them). >> >> Thanks in advance, >> Dimitra >> >> > -- > James W. MacDonald, M.S. > Biostatistician > University of Washington > Environmental and Occupational Health Sciences > 4225 Roosevelt Way NE, # 100 > Seattle WA 98105-6099 > > > _______________________________________________ > 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 > -- Jason A. Hackney, Ph.D. Bioinformatics and Computational Biology Genentech hackney.jason@gene.com 650-467-5084 [[alternative HTML version deleted]]
0
Entering edit mode
Dear Jason and Jim, thanks for the fast reply, but although there are three tables successfully created in the report, all three contain the exact same results, which is the results of the last coefficient. I have tried this both on a DESeq2 result including results coming from running dds <- DESeq(dds), but also from ddsNoPrior <- DESeq(dds, betaPrior=FALSE) and I'm still getting the same behaviour :-/ Do you have any idea why this is happening? Or do you have some mock RNA-seq data where it has worked for you (more than 2 conditions) that I could test it on? Additionally, when I was mentioning having all results in one report, I did not clarify I meant having all results in one table. What many scientists I have been analyzing RNAseq data for keep requesting is one big table that contains all common expressed genes between different tests, say like: Gene_ID (incl. some additional info from biomart), Mut1/Ctrl (incl. logFC, p-value, padj), Mut2/Ctrl (incl. logFC, p-value, padj), Mut3/Ctrl (incl. logFC, p-value, padj) Once they have this, they can easily click through it and add their additional filters (e.g., look for genes that are upregulated in Mut1/Ctrl and downregulated in Mut2/Ctrl, but do not change expression level in Mut3/Ctrl), like they are doing so far in Excel. Do you think this would be something implemented in the future (input to pubilsh() a DESeqDataSet dds and an option for presenting all results in one table)? In fact, I have such a data frame which I could publish at the end of the day (instead of the dds object), but I still like the boxplots that are generated when using the dds object as input. Is there a way of adding such boxplots once a data frame is used as input to publish()? Thanks again for your help, Dimitra On 01/22/2014 05:58 PM, Jason Hackney wrote: > Hi Dimitra, > > Jim is completely correct about using coef' to pull out the different > terms from your model. I just wanted to add that in addition to the > one page-per result workflow he showed, you can call publish multiple > times on the same object and same report using the different > coefficients, ending up with one page with multiple tables. So instead > of this: > > > So you want to do the paradigmatic > > html <- HTMLReport(args go here) > publish(object, html, coef=2) > finish(html) > > html <- HTMLReport(args go here) > publish(object, html, coef=3) > finish(html) > > > You can just do: > html <- HTMLReport(args go here) > publish(object, html, coef = 2) > publish(object, html, coef = 3) > finish(html) > > Hope that's helpful, > > Jason > > > and like that until you have done all coefficients. Alternatively, > you can construct a vector of the short names for the html pages, > and the more descriptive names and run through using lapply(): > > sn <- resultNames(dds)[-1] > ln <- paste("Mutation", 1:3, "versus Control") > > out <- lapply(1:3, function(x) { > tmp <- HTMLReport(sn[x], ln[x], basePath = myOutdir, > reportDirectory = "./DEreports") > publish(dds, tmp, coef = x+1, pvalueCutoff=0.1, factor = > colData(dds)$condition) > return(finish(tmp))}) > > Then you can make an index page to tie it all together > > indx <- HTMLReport("index", "Look at these sweet results!") > publish(Link(out, report = indx), indx) > finish(index) > > Best, > > Jim > > > > > finish(desReport) > > The above returns by default results for the last coefficient > from resultsNames, in my case: "condition_Mut3_vs_Ctrl". > > Is there a way to by-pass this default behaviour and output > either: > a. all results in one report, or > b. each one of the results in a separate report, specifying > this somehow to publish(), e.g.: > publish(dds,name="condition_Mut2_vs_Ctrl", desReport, > pvalueCutoff=0.1, factor=colData(dds)$condition) > Or do I need to create a new dds_Mut2_over_Ctrl, subsetting > the initial dds (which I don't know how to do and this would > be my next question, especially to the DESeq2 people). > I would like to avoid breaking the analysis into 3 comparisons > from the beginning (meaning constructing 3 different > DESeqDataSets and running the differential expression analysis > on them). > > Thanks in advance, > Dimitra > > > -- > James W. MacDonald, M.S. > Biostatistician > University of Washington > Environmental and Occupational Health Sciences > 4225 Roosevelt Way NE, # 100 > Seattle WA 98105-6099 > > > _______________________________________________ > Bioconductor mailing list > Bioconductor@r-project.org <mailto:bioconductor@r-project.org> > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: > http://news.gmane.org/gmane.science.biology.informatics.conductor > > > > > -- > Jason A. Hackney, Ph.D. > Bioinformatics and Computational Biology > Genentech > hackney.jason@gene.com <mailto:hackney.jason@gene.com> > 650-467-5084 > > > > > On Wed, Jan 22, 2014 at 7:02 AM, James W. MacDonald <jmacdon@uw.edu> <mailto:jmacdon@uw.edu>> wrote: > > Hi Dimitra, > > > > On 1/22/2014 6:29 AM, Dimitra Alexopoulou wrote: > > Dear all, > > I've been happily using ReportingTools to publish an html > report of my DESeq2 results so far having only two conditions > to compare (i.e. WT to KO). > I now have one Ctrl condition and three different mutations > (say Mut1, Mut2 and Mut3): > > levels(condition) # my 4 different conditions > # [1] "Ctrl" "Mut1" "Mut2" "Mut3" > > dds # my DESeqDataset, including the results > # class: DESeqDataSet > # dim: 24791 12 > # exptData(0): > # assays(3): counts mu cooks > # rownames(24791): ENSMUSG00000000001 ENSMUSG00000000028 ... > ENSMUSG00000093778 ENSMUSG00000093789 > # rowData metadata column names(31): baseMean baseVar ... > deviance maxCooks > # colnames(12): Ctrl_1 Ctrl_2 ... Mut3_2 Mut3_3 > # colData names(2): condition sizeFactor > > resultsNames(dds) # the results I have from DESeq2 saved in > the dds > # [1] "Intercept" "condition_Mut1_vs_Ctrl" > "condition_Mut2_vs_Ctrl" "condition_Mut3_vs_Ctrl" > > > When I want to create the html report of the DESeq2 results > obtained, I do the following: > > # Creating the html report using ReportingTools: > desReport <- HTMLReport(shortName = "Blah_over_Ctrl_DEGs", > title = 'Blah detailed results', > basePath = myOutdir, > reportDirectory = "./DEreports" > ) > publish(dds, desReport, pvalueCutoff=0.1, factor = > colData(dds)$condition) > > > From ?publish: > > DESeqDataSet: > publish(object, publicationType, factor = NULL, n = 1000, > pvalueCutoff = 0.01, lfc = 0, coef = NULL, make.plots = TRUE, > ..., name) To coerce a DESeqDataSet to a data.frame, we > use the results function from the DESeq2 package, > therefore one of DESeq, or something similar must be run > prior to publish. By default, the last coefficient from > resultsNames is reported. Log fold changes, p-values and > adjusted p-values are taken directly from the DESeqDataSet. > Stripplots showing the expression values for each transcript > are produced based on the normalized counts from the > DESeqDataSet, grouped by the levels in factor. > > So you want to do the paradigmatic > > html <- HTMLReport(args go here) > publish(object, html, coef=2) > finish(html) > > html <- HTMLReport(args go here) > publish(object, html, coef=3) > finish(html) > > and like that until you have done all coefficients. Alternatively, > you can construct a vector of the short names for the html pages, > and the more descriptive names and run through using lapply(): > > sn <- resultNames(dds)[-1] > ln <- paste("Mutation", 1:3, "versus Control") > > out <- lapply(1:3, function(x) { > tmp <- HTMLReport(sn[x], ln[x], basePath = myOutdir, > reportDirectory = "./DEreports") > publish(dds, tmp, coef = x+1, pvalueCutoff=0.1, factor = > colData(dds)$condition) > return(finish(tmp))}) > > Then you can make an index page to tie it all together > > indx <- HTMLReport("index", "Look at these sweet results!") > publish(Link(out, report = indx), indx) > finish(index) > > Best, > > Jim > > > > > finish(desReport) > > The above returns by default results for the last coefficient > from resultsNames, in my case: "condition_Mut3_vs_Ctrl". > > Is there a way to by-pass this default behaviour and output > either: > a. all results in one report, or > b. each one of the results in a separate report, specifying > this somehow to publish(), e.g.: > publish(dds,name="condition_Mut2_vs_Ctrl", desReport, > pvalueCutoff=0.1, factor=colData(dds)$condition) > Or do I need to create a new dds_Mut2_over_Ctrl, subsetting > the initial dds (which I don't know how to do and this would > be my next question, especially to the DESeq2 people). > I would like to avoid breaking the analysis into 3 comparisons > from the beginning (meaning constructing 3 different > DESeqDataSets and running the differential expression analysis > on them). > > Thanks in advance, > Dimitra > > > -- > James W. MacDonald, M.S. > Biostatistician > University of Washington > Environmental and Occupational Health Sciences > 4225 Roosevelt Way NE, # 100 > Seattle WA 98105-6099 > > > _______________________________________________ > Bioconductor mailing list > Bioconductor@r-project.org <mailto:bioconductor@r-project.org> > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: > http://news.gmane.org/gmane.science.biology.informatics.conductor > > > > > -- > Jason A. Hackney, Ph.D. > Bioinformatics and Computational Biology > Genentech > hackney.jason@gene.com <mailto:hackney.jason@gene.com> > 650-467-5084 > > -- Dimitra Alexopoulou, PhD Deep Sequencing Group - SFB655 Affiliation: DFG Research Center for Regenerative Therapies (CRTD) Biotechnology Center (Biotec) Technische Universität Dresden postal address: Deep Sequencing Group - SFB655 c/o DFG-Center for Regenerative Therapies Dresden Cluster of Excellence / TU Dresden Fetscherstraße 105 01307 Dresden Phone: +49 (351) 458 82362 Email: dimitraa(at)biotec.tu-dresden.de Web: http://www.biotec.tu-dresden.de/ we are supported by: SFB 655, CRTD, Biotec, EU FP7, EFRE [[alternative HTML version deleted]] ADD REPLY 0 Entering edit mode Dimitra, I helped design the API for ReportingTools (2.0+), but I am not an expert in using BioC object, so please forgive the handwavy stuff on that subject. You can completely override how R objects are transformed into the tables that are inserted into the report, and the methods used by default are available to you, so this is something you can (relatively) easily cobble together yourself. The transformation comes in two parts: R obj->data frame and data frame -> HTML table. The relevant bit here is the first of these, which we can override via the .toDF argument to publish. So, if I understand you correctly, and you can get each of the tables you want separately, we can simply do: myNewToDF = function(obj, argsList, ...) { #generate each of the result objects based on your criteria and put them all in resList (a list) <...> #call toReportDF on each to get the nice plots, etc with arguments for each function # object stored in argsList rows = mapply(function(obj, args) do.call(toReportDF, c(obj, args)), obj = resList, args = argsList) #consolidate into a single data.frame and return it. It will be passed to objectToHTML to generate the actual HTML markup and inserted into your report #if they all have the same columns we can just use rbind, otherwise a bit of fiddling on your part to get the DF you want do.call(rbind, rows) } publish(dds, myRep, .toDF = myNewToDF, argsList = argsList) I hope that helps, and I'm glad you're enjoying the package. Apologies if I misunderstood what you want. ~G On Thu, Jan 23, 2014 at 7:31 AM, Dimitra Alexopoulou < dimitra.alexopoulou@biotec.tu-dresden.de> wrote: > Dear Jason and Jim, > > thanks for the fast reply, but although there are three tables > successfully created in the report, all three contain the exact same > results, which is the results of the last coefficient. > I have tried this both on a DESeq2 result including results coming from > running dds <- DESeq(dds), but also from ddsNoPrior <- DESeq(dds, > betaPrior=FALSE) and I'm still getting the same behaviour :-/ > Do you have any idea why this is happening? Or do you have some mock > RNA-seq data where it has worked for you (more than 2 conditions) that I > could test it on? > > Additionally, when I was mentioning having all results in one report, I > did not clarify I meant having all results in one table. > What many scientists I have been analyzing RNAseq data for keep > requesting is one big table that contains all common expressed genes > between different tests, say like: > > Gene_ID (incl. some additional info from biomart), Mut1/Ctrl (incl. > logFC, p-value, padj), Mut2/Ctrl (incl. logFC, p-value, padj), Mut3/Ctrl > (incl. logFC, p-value, padj) > > Once they have this, they can easily click through it and add their > additional filters (e.g., look for genes that are upregulated in > Mut1/Ctrl and downregulated in Mut2/Ctrl, but do not change expression > level in Mut3/Ctrl), like they are doing so far in Excel. > Do you think this would be something implemented in the future (input to > pubilsh() a DESeqDataSet dds and an option for presenting all results in > one table)? > > In fact, I have such a data frame which I could publish at the end of > the day (instead of the dds object), but I still like the boxplots that > are generated when using the dds object as input. > Is there a way of adding such boxplots once a data frame is used as > input to publish()? > > Thanks again for your help, > Dimitra > > > > On 01/22/2014 05:58 PM, Jason Hackney wrote: > > Hi Dimitra, > > > > Jim is completely correct about using coef' to pull out the different > > terms from your model. I just wanted to add that in addition to the > > one page-per result workflow he showed, you can call publish multiple > > times on the same object and same report using the different > > coefficients, ending up with one page with multiple tables. So instead > > of this: > > > > > > So you want to do the paradigmatic > > > > html <- HTMLReport(args go here) > > publish(object, html, coef=2) > > finish(html) > > > > html <- HTMLReport(args go here) > > publish(object, html, coef=3) > > finish(html) > > > > > > You can just do: > > html <- HTMLReport(args go here) > > publish(object, html, coef = 2) > > publish(object, html, coef = 3) > > finish(html) > > > > Hope that's helpful, > > > > Jason > > > > > > and like that until you have done all coefficients. Alternatively, > > you can construct a vector of the short names for the html pages, > > and the more descriptive names and run through using lapply(): > > > > sn <- resultNames(dds)[-1] > > ln <- paste("Mutation", 1:3, "versus Control") > > > > out <- lapply(1:3, function(x) { > > tmp <- HTMLReport(sn[x], ln[x], basePath = myOutdir, > > reportDirectory = "./DEreports") > > publish(dds, tmp, coef = x+1, pvalueCutoff=0.1, factor = > > colData(dds)$condition) > > return(finish(tmp))}) > > > > Then you can make an index page to tie it all together > > > > indx <- HTMLReport("index", "Look at these sweet results!") > > publish(Link(out, report = indx), indx) > > finish(index) > > > > Best, > > > > Jim > > > > > > > > > > finish(desReport) > > > > The above returns by default results for the last coefficient > > from resultsNames, in my case: "condition_Mut3_vs_Ctrl". > > > > Is there a way to by-pass this default behaviour and output > > either: > > a. all results in one report, or > > b. each one of the results in a separate report, specifying > > this somehow to publish(), e.g.: > > publish(dds,name="condition_Mut2_vs_Ctrl", desReport, > > pvalueCutoff=0.1, factor=colData(dds)$condition) > > Or do I need to create a new dds_Mut2_over_Ctrl, subsetting > > the initial dds (which I don't know how to do and this would > > be my next question, especially to the DESeq2 people). > > I would like to avoid breaking the analysis into 3 comparisons > > from the beginning (meaning constructing 3 different > > DESeqDataSets and running the differential expression analysis > > on them). > > > > Thanks in advance, > > Dimitra > > > > > > -- > > James W. MacDonald, M.S. > > Biostatistician > > University of Washington > > Environmental and Occupational Health Sciences > > 4225 Roosevelt Way NE, # 100 > > Seattle WA 98105-6099 > > > > > > _______________________________________________ > > Bioconductor mailing list > > Bioconductor@r-project.org <mailto:bioconductor@r-project.org> > > https://stat.ethz.ch/mailman/listinfo/bioconductor > > Search the archives: > > http://news.gmane.org/gmane.science.biology.informatics.conductor > > > > > > > > > > -- > > Jason A. Hackney, Ph.D. > > Bioinformatics and Computational Biology > > Genentech > > hackney.jason@gene.com <mailto:hackney.jason@gene.com> > > 650-467-5084 > > > > > > > > > > On Wed, Jan 22, 2014 at 7:02 AM, James W. MacDonald <jmacdon@uw.edu> > <mailto:jmacdon@uw.edu>> wrote: > > > > Hi Dimitra, > > > > > > > > On 1/22/2014 6:29 AM, Dimitra Alexopoulou wrote: > > > > Dear all, > > > > I've been happily using ReportingTools to publish an html > > report of my DESeq2 results so far having only two conditions > > to compare (i.e. WT to KO). > > I now have one Ctrl condition and three different mutations > > (say Mut1, Mut2 and Mut3): > > > > levels(condition) # my 4 different conditions > > # [1] "Ctrl" "Mut1" "Mut2" "Mut3" > > > > dds # my DESeqDataset, including the results > > # class: DESeqDataSet > > # dim: 24791 12 > > # exptData(0): > > # assays(3): counts mu cooks > > # rownames(24791): ENSMUSG00000000001 ENSMUSG00000000028 ... > > ENSMUSG00000093778 ENSMUSG00000093789 > > # rowData metadata column names(31): baseMean baseVar ... > > deviance maxCooks > > # colnames(12): Ctrl_1 Ctrl_2 ... Mut3_2 Mut3_3 > > # colData names(2): condition sizeFactor > > > > resultsNames(dds) # the results I have from DESeq2 saved in > > the dds > > # [1] "Intercept" "condition_Mut1_vs_Ctrl" > > "condition_Mut2_vs_Ctrl" "condition_Mut3_vs_Ctrl" > > > > > > When I want to create the html report of the DESeq2 results > > obtained, I do the following: > > > > # Creating the html report using ReportingTools: > > desReport <- HTMLReport(shortName = "Blah_over_Ctrl_DEGs", > > title = 'Blah detailed results', > > basePath = myOutdir, > > reportDirectory = "./DEreports" > > ) > > publish(dds, desReport, pvalueCutoff=0.1, factor = > > colData(dds)$condition) > > > > > > From ?publish: > > > > DESeqDataSet: > > 'publish(object, publicationType, factor = NULL, n = 1000, > > pvalueCutoff = 0.01, lfc = 0, coef = NULL, make.plots = TRUE, > > ..., name)' To coerce a 'DESeqDataSet' to a 'data.frame', we > > use the 'results' function from the 'DESeq2' package, > > therefore one of 'DESeq', or something similar must be run > > prior to 'publish'. By default, the last coefficient from > > 'resultsNames' is reported. Log fold changes, p-values and > > adjusted p-values are taken directly from the DESeqDataSet. > > Stripplots showing the expression values for each transcript > > are produced based on the normalized counts from the > > 'DESeqDataSet', grouped by the levels in 'factor'. > > > > So you want to do the paradigmatic > > > > html <- HTMLReport(args go here) > > publish(object, html, coef=2) > > finish(html) > > > > html <- HTMLReport(args go here) > > publish(object, html, coef=3) > > finish(html) > > > > and like that until you have done all coefficients. Alternatively, > > you can construct a vector of the short names for the html pages, > > and the more descriptive names and run through using lapply(): > > > > sn <- resultNames(dds)[-1] > > ln <- paste("Mutation", 1:3, "versus Control") > > > > out <- lapply(1:3, function(x) { > > tmp <- HTMLReport(sn[x], ln[x], basePath = myOutdir, > > reportDirectory = "./DEreports") > > publish(dds, tmp, coef = x+1, pvalueCutoff=0.1, factor = > > colData(dds)$condition) > > return(finish(tmp))}) > > > > Then you can make an index page to tie it all together > > > > indx <- HTMLReport("index", "Look at these sweet results!") > > publish(Link(out, report = indx), indx) > > finish(index) > > > > Best, > > > > Jim > > > > > > > > > > finish(desReport) > > > > The above returns by default results for the last coefficient > > from resultsNames, in my case: "condition_Mut3_vs_Ctrl". > > > > Is there a way to by-pass this default behaviour and output > > either: > > a. all results in one report, or > > b. each one of the results in a separate report, specifying > > this somehow to publish(), e.g.: > > publish(dds,name="condition_Mut2_vs_Ctrl", desReport, > > pvalueCutoff=0.1, factor=colData(dds)$condition) > > Or do I need to create a new dds_Mut2_over_Ctrl, subsetting > > the initial dds (which I don't know how to do and this would > > be my next question, especially to the DESeq2 people). > > I would like to avoid breaking the analysis into 3 comparisons > > from the beginning (meaning constructing 3 different > > DESeqDataSets and running the differential expression analysis > > on them). > > > > Thanks in advance, > > Dimitra > > > > > > -- > > James W. MacDonald, M.S. > > Biostatistician > > University of Washington > > Environmental and Occupational Health Sciences > > 4225 Roosevelt Way NE, # 100 > > Seattle WA 98105-6099 > > > > > > _______________________________________________ > > Bioconductor mailing list > > Bioconductor@r-project.org <mailto:bioconductor@r-project.org> > > https://stat.ethz.ch/mailman/listinfo/bioconductor > > Search the archives: > > http://news.gmane.org/gmane.science.biology.informatics.conductor > > > > > > > > > > -- > > Jason A. Hackney, Ph.D. > > Bioinformatics and Computational Biology > > Genentech > > hackney.jason@gene.com <mailto:hackney.jason@gene.com> > > 650-467-5084 > > > > > > > -- > Dimitra Alexopoulou, PhD > Deep Sequencing Group - SFB655 > Affiliation: > DFG Research Center for Regenerative Therapies (CRTD) > Biotechnology Center (Biotec) > Technische Universität Dresden > > postal address: > Deep Sequencing Group - SFB655 > c/o > DFG-Center for Regenerative Therapies Dresden > Cluster of Excellence / TU Dresden > Fetscherstraße 105 > 01307 Dresden > > Phone: +49 (351) 458 82362 > Email: dimitraa(at)biotec.tu-dresden.de > Web: http://www.biotec.tu-dresden.de/ > > we are supported by: > SFB 655, CRTD, Biotec, EU FP7, EFRE > > > [[alternative HTML version deleted]] > > > _______________________________________________ > 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 > -- Gabriel Becker Graduate Student Statistics Department University of California, Davis [[alternative HTML version deleted]]
0
Entering edit mode
Hi Dimitra, Gabe is correct that if you want a report that includes all three coefficients in the same table, you'll have to design a function to select results from each coefficient and make a data.frame from them. Unfortunately, I don't have a quick piece of code to drop in. Now for your other problem... > > thanks for the fast reply, but although there are three tables > successfully created in the report, all three contain the exact same > results, which is the results of the last coefficient. > I have tried this both on a DESeq2 result including results coming from > running dds <- DESeq(dds), but also from ddsNoPrior <- DESeq(dds, > betaPrior=FALSE) and I'm still getting the same behaviour :-/ > Do you have any idea why this is happening? Or do you have some mock > RNA-seq data where it has worked for you (more than 2 conditions) that I > could test it on? This is a bug in ReportingTools. I've fixed this in version 2.3.4, so you'll need to update your version to the latest. In the mean time, you can use the parameter resultName' instead of `coef' in the publish call, though this is guaranteed to break when you update your version of ReportingTools. Thanks for finding this, and sorry for the confusion, Best, Jason -- Jason A. Hackney, Ph.D. Bioinformatics and Computational Biology Genentech, Inc. hackney.jason@gene.com 650-467-5084 [[alternative HTML version deleted]]