private PhyloClusterAnalysis getPhyloAnalysis(String genusId, String typeId, Region region) throws IOException, ParameterProblemException, FileFormatException { String alignmentId = genusId; if (region != null) alignmentId += "-" + region.getName(); String analysisId; if (typeId != null) analysisId = "phylo-minor-" + typeId; else analysisId = "phylo-major"; PhyloClusterAnalysis result = phyloAnalyses.get(alignmentId + "-" + analysisId); if (result == null) { String f = "phylo-" + alignmentId + ".xml"; if (new File(getXmlPathAsString() + f).canRead()) { AlignmentAnalyses analyses = readAnalyses(getXmlPathAsString() + f, getWorkingDir()); analyses.setRegion(region); if (analyses.haveAnalysis(analysisId)) { result = (PhyloClusterAnalysis) analyses.getAnalysis(analysisId); phyloAnalyses.put(alignmentId + "-" + analysisId, result); } } } return result; }