public static HashMap<String, Double> getOneWayAnovaPValues(ENode root) throws Exception {
    HashMap<String, Double> returnMap = new HashMap<String, Double>();
    HashMap<Float, List<ENode>> map = ReadCluster.getMapByLevel(root);
    System.out.println(map.size());

    for (Float f : map.keySet()) {
      File outFile =
          new File(
              ConfigReader.getETreeTestDir()
                  + File.separator
                  + "Mel74ColumnsAsTaxaFor"
                  + f
                  + ".txt");
      System.out.println(outFile.getAbsolutePath());
      PivotOut.pivotOut(map.get(f), outFile.getAbsolutePath());
      OtuWrapper wrapper = new OtuWrapper(outFile);
      List<List<Double>> list = wrapper.getDataPointsNormalizedThenLogged();

      for (int x = 0; x < wrapper.getOtuNames().size(); x++) {
        double pValue = 1;

        if (!wrapper.getOtuNames().get(x).equals(ETree.ROOT_NAME)) {
          List<Number> data = new ArrayList<Number>();
          List<String> factors = new ArrayList<String>();
          for (int y = 0; y < wrapper.getSampleNames().size(); y++) {
            if (!wrapper.getSampleNames().get(y).equals(ETree.ROOT_NAME)) {
              data.add(list.get(y).get(x));
              factors.add("" + stripSuffix(wrapper.getSampleNames().get(y)));
            }
          }

          OneWayAnova owa = new OneWayAnova(data, factors);

          if (map.containsKey(wrapper.getOtuNames().get(x))) throw new Exception("Duplicate");

          pValue = owa.getPValue();
        }

        returnMap.put(wrapper.getOtuNames().get(x), pValue);
      }
    }

    return returnMap;
  }