private void saveGeneSetAnalysisResults(GeneSetAnalysis gsea, FunctionalDbDescriptor filterInfo) throws IOException { String fileName = filterInfo.getName() + ".txt"; String annotFileName = filterInfo.getName() + ".annot"; // save statistic results IOUtils.write(outdir + "/" + fileName, ListUtils.toString(gsea.resultsToStringList(), "\n")); result.addOutputItem( new Item( filterInfo.getName(), fileName, filterInfo.getTitle(), Item.TYPE.FILE, Arrays.asList(filterInfo.getPrefix().toUpperCase() + "_TERM"), new HashMap<String, String>(), "All results")); // save significant results int numberOfSignificantTerms; List<GeneSetAnalysisTestResult> significant; String formattedPValue; for (int i = 0; i < DEFAULT_PVALUES.length; i++) { formattedPValue = pvalueFormatter.format(DEFAULT_PVALUES[i]); significant = gsea.getSignificant(DEFAULT_PVALUES[i]); if (significant != null && significant.size() > 0) { IOUtils.write( outdir + "/significant_" + filterInfo.getName() + "_" + formattedPValue + ".txt", gsea.significantResultsToStringList(significant, DEFAULT_PVALUES[i])); numberOfSignificantTerms = significant.size(); } else { numberOfSignificantTerms = 0; } significantCount .get(i) .append(filterInfo.getTitle()) .append("\t") .append(numberOfSignificantTerms) .append("\n"); if (numberOfSignificantTerms > 0) { // go graph if (filterInfo.getPrefix().equalsIgnoreCase("go")) { try { String limitMessage = ""; boolean outOfbounds = createGseaGoGraph(significant, DEFAULT_PVALUES[i], filterInfo); if (outOfbounds) limitMessage = " just most 100 significant terms"; Item item = new Item( "go_graph_significant_" + filterInfo.getName() + "_" + formattedPValue, "go_graph_" + filterInfo.getName() + "_" + formattedPValue + "_graphimage.png", filterInfo.getTitle() + " DAG (significant terms, pvalue<" + formattedPValue + ") " + limitMessage, Item.TYPE.IMAGE, Arrays.asList("SIGNIFICANT,THUMBNAIL,GO_GRAPH_VIZ_JNLP"), new HashMap<String, String>(), "Significant Results." + filterInfo.getTitle()); item.setContext("pvalue==" + formattedPValue); result.getOutputItems().add(4, item); } catch (GoGraphException gge) { Item item = new Item( "go_graph_significant_" + filterInfo.getName() + "_" + formattedPValue, "Graph not found", filterInfo.getTitle() + " DAG (significant terms, pvalue<" + formattedPValue + ")", Item.TYPE.MESSAGE, Arrays.asList("ERROR"), new HashMap<String, String>(), "Significant Results." + filterInfo.getTitle()); item.setContext("pvalue==" + formattedPValue); result.getOutputItems().add(4, item); } } // table Item item = new Item( "significant_" + filterInfo.getName(), "significant_" + filterInfo.getName() + "_" + formattedPValue + ".txt", filterInfo.getTitle() + " significant terms (pvalue<" + formattedPValue + ")", Item.TYPE.FILE, Arrays.asList( "SIGNIFICANT", "TABLE", gsea.getMethod().toUpperCase() + "_TABLE", filterInfo.getPrefix().toUpperCase() + "_TERM"), new HashMap<String, String>(), "Significant Results." + filterInfo.getTitle()); item.setContext("pvalue==" + formattedPValue); result.getOutputItems().add(4, item); } else { Item item = new Item( "significant_" + filterInfo.getName(), "No significant terms for current pvalue " + formattedPValue, filterInfo.getTitle() + " significant terms (pvalue<" + formattedPValue + ")", Item.TYPE.MESSAGE, Arrays.asList("WARNING"), new HashMap<String, String>(), "Significant Results." + filterInfo.getTitle()); item.setContext("pvalue==" + formattedPValue); result.getOutputItems().add(4, item); } } // annotations report addAnnotationReport(gsea, filterInfo.getTitle()); // save annotations if (gsea.getAnnotations() != null && gsea.getAnnotations().size() > 0) { IOUtils.write(outdir + "/" + annotFileName, gsea.getAnnotations().toString()); result.addOutputItem( new Item( "annot_" + filterInfo.getName(), annotFileName, "Annotations for " + filterInfo.getTitle(), Item.TYPE.FILE, Arrays.asList("ANNOTATION"), new HashMap<String, String>(), "Annotation files")); } else { result.addOutputItem( new Item( "annot_" + filterInfo.getName(), "no annotations found for input ids", "Annotations for " + filterInfo.getTitle(), Item.TYPE.MESSAGE, Arrays.asList("WARNING"), new HashMap<String, String>(), "Annotation files")); } }