/** * key is Element (Sequence/OTU/tree leaf), value is LCA, taxid, rank if ranks = null, then no * rank column * * @param outFilePath * @param elementTaxonMap * @param ranks * @throws java.io.IOException */ public static void writeElementTaxonomyMap( Path outFilePath, SortedMap<String, Taxon> elementTaxonMap, Rank... ranks) throws IOException { BufferedWriter writer = getWriter(outFilePath, "taxonomic mapping" + (ranks == null ? "" : " and assignment")); int total = 0; for (Map.Entry<String, Taxon> entry : elementTaxonMap.entrySet()) { Taxon taxon = entry.getValue(); writer.write(entry.getKey() + "\t" + (taxon == null ? "" : taxon.getScientificName())); writer.write( "\t" + (taxon == null ? "" : taxon.getTaxId()) + "\t" + (taxon == null ? "" : taxon.getRank())); if (taxon != null && ranks != null) { for (Rank rank : ranks) { Taxon t = taxon.getParentTaxonOn(rank); String str = ("no " + rank.toString()).toLowerCase(); writer.write("\t" + (t == null ? str : t.getScientificName())); writer.write( "\t" + (t == null ? str : t.getTaxId()) + "\t" + (t == null ? str : t.getRank())); } } writer.write("\n"); total++; } writer.flush(); writer.close(); MyLogger.debug("Total entry in ElementTaxonomyMap = " + total); }