Пример #1
0
  /**
   * 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);
  }