@Override
 public DataSet performFunction(DataSet input) {
   createMergeOutfile(infiles, outfilename);
   fillMergeOutfile(infiles, outfilename);
   if (hapmapFile != null) {
     myLogger.info("Calling SNPs in good reads.");
     ReadsByTaxa rbt = new ReadsByTaxa();
     rbt.readTBTFile(new File(outfilename));
     Clusters cls = new Clusters(rbt);
     cls
         .networkFilter(); // Really powerful, which generates 85% single locus SNPs in 282 maize
                           // lines
     cls.alleleFrequencyFileter(
         rbt,
         (double) 0.20,
         (double) 0.30); // Only for linkage pop which has allele frequency peaks
     cls.heteozygoteFilter(rbt); // Seems not useful, need to be refined or removed
     cls.writeHapMap(rbt, hapmapFile.getAbsolutePath(), (float) 0.9);
   }
   return null;
 }