Program: 169290
Project: 169290
Buggy source:
public static void main(String[] args) throws Exception {
  String inFile=null;
  int kmerSize=DEFAULT_KMER_SIZE;
  int threshold=DEFAULT_THRESHOLD;
  int numWords=DEFAULT_NUM_WORDS;
  int maxSkip=DEFAULT_SKIP;
  for (int i=0; i < args.length; i++) {
    if (args[i].trim().equalsIgnoreCase("String_Node_Str")) {
      kmerSize=Integer.parseInt(args[++i]);
    }
 else     if (args[i].trim().equalsIgnoreCase("String_Node_Str")) {
      inFile=args[++i];
    }
 else     if (args[i].trim().equalsIgnoreCase("String_Node_Str")) {
      numWords=Integer.parseInt(args[++i]);
    }
 else     if (args[i].trim().equalsIgnoreCase("String_Node_Str")) {
      threshold=Integer.parseInt(args[++i]);
    }
 else     if (args[i].trim().equalsIgnoreCase("String_Node_Str")) {
      maxSkip=Integer.parseInt(args[++i]);
    }
  }
  if (inFile == null) {
    printUsage("String_Node_Str");
  }
  System.err.println("String_Node_Str" + inFile);
  System.err.println("String_Node_Str" + kmerSize);
  System.err.println("String_Node_Str" + threshold);
  System.err.println("String_Node_Str" + numWords);
  System.err.println("String_Node_Str" + maxSkip);
  LogManager.getLogManager().reset();
  double kmerError=MinHashSearch.probabilityKmerMatches(DEFAULT_DATA_ERROR,kmerSize);
  System.out.println("String_Node_Str" + kmerError);
  long startTime=System.nanoTime();
  FastaData data=new FastaData(inFile,fastaSuffix,kmerSize);
  System.out.println("String_Node_Str" + data.size() + "String_Node_Str");
  System.err.println("String_Node_Str" + (System.nanoTime() - startTime) * 1.0e-9);
  MinHashSearch hashSearch=new MinHashSearch(kmerSize,numWords);
  hashSearch.addData(data);
  System.err.println("String_Node_Str" + (System.nanoTime() - startTime) * 1.0e-9);
  startTime=System.nanoTime();
  ArrayList<MatchResult> results=hashSearch.findMatches(Double.NEGATIVE_INFINITY);
  System.err.println("String_Node_Str" + (System.nanoTime() - startTime) * 1.0e-9);
  ArrayList<MatchResult> mixedResults=new ArrayList<MatchResult>();
  Collections.sort(results);
  mixedResults.addAll(results.subList(0,Math.min(results.size(),100)));
  mixedResults.addAll(results.subList(Math.max(0,results.size() - 20),results.size()));
  System.out.println("String_Node_Str" + results.size() + "String_Node_Str");
  Matrix matrix=MatrixLoader.load("String_Node_Str");
  int count=0;
  double mean=0;
  for (  MatchResult match : mixedResults) {
    Sequence s1=data.getSequence(match.getFromId());
    Sequence s2=data.getSequence(match.getToId());
    if (!match.getFromId().isForward())     s1=s1.getReverseCompliment();
    if (!match.getToId().isForward())     s2=s2.getReverseCompliment();
    double score=computeAlignment(s1,s2,matrix);
    System.out.format("String_Node_Str",match.getScore(),score,match.getFromId().toStringInt(),match.getToId().toStringInt(),match.getFromShift());
    mean+=match.getScore();
    count++;
    if (count > 200)     break;
  }
  mean=mean / count;
  System.out.println("String_Node_Str" + mean);
}

Fixed version (ground truth):
public static void main(String[] args) throws Exception {
  String inFile=null;
  int kmerSize=DEFAULT_KMER_SIZE;
  int threshold=DEFAULT_THRESHOLD;
  int numWords=DEFAULT_NUM_WORDS;
  int maxSkip=DEFAULT_SKIP;
  for (int i=0; i < args.length; i++) {
    if (args[i].trim().equalsIgnoreCase("String_Node_Str")) {
      kmerSize=Integer.parseInt(args[++i]);
    }
 else     if (args[i].trim().equalsIgnoreCase("String_Node_Str")) {
      inFile=args[++i];
    }
 else     if (args[i].trim().equalsIgnoreCase("String_Node_Str")) {
      numWords=Integer.parseInt(args[++i]);
    }
 else     if (args[i].trim().equalsIgnoreCase("String_Node_Str")) {
      threshold=Integer.parseInt(args[++i]);
    }
 else     if (args[i].trim().equalsIgnoreCase("String_Node_Str")) {
      maxSkip=Integer.parseInt(args[++i]);
    }
  }
  if (inFile == null) {
    printUsage("String_Node_Str");
  }
  System.err.println("String_Node_Str" + inFile);
  System.err.println("String_Node_Str" + kmerSize);
  System.err.println("String_Node_Str" + threshold);
  System.err.println("String_Node_Str" + numWords);
  System.err.println("String_Node_Str" + maxSkip);
  LogManager.getLogManager().reset();
  double kmerError=MinHashSearch.probabilityKmerMatches(DEFAULT_DATA_ERROR,kmerSize);
  System.out.println("String_Node_Str" + kmerError);
  long startTime=System.nanoTime();
  FastaData data=new FastaData(inFile,fastaSuffix,kmerSize);
  System.out.println("String_Node_Str" + data.size() + "String_Node_Str");
  System.err.println("String_Node_Str" + (System.nanoTime() - startTime) * 1.0e-9);
  MinHashSearch hashSearch=new MinHashSearch(kmerSize,numWords);
  hashSearch.addData(data);
  System.err.println("String_Node_Str" + (System.nanoTime() - startTime) * 1.0e-9);
  startTime=System.nanoTime();
  ArrayList<MatchResult> results=hashSearch.findMatches(0.07);
  System.err.println("String_Node_Str" + (System.nanoTime() - startTime) * 1.0e-9);
  ArrayList<MatchResult> mixedResults=new ArrayList<MatchResult>();
  Collections.sort(results);
  mixedResults.addAll(results.subList(0,Math.min(results.size(),100)));
  mixedResults.addAll(results.subList(Math.max(0,results.size() - 50),results.size()));
  System.out.println("String_Node_Str" + results.size() + "String_Node_Str");
  Matrix matrix=MatrixLoader.load("String_Node_Str");
  int count=0;
  double mean=0;
  for (  MatchResult match : mixedResults) {
    Sequence s1=data.getSequence(match.getFromId());
    Sequence s2=data.getSequence(match.getToId());
    double score=computeAlignment(s1,s2,matrix);
    System.out.format("String_Node_Str",match.getScore(),score,match.getFromId().toStringInt(),match.getToId().toStringInt(),match.getFromShift());
    mean+=match.getScore();
    count++;
    if (count > 200)     break;
  }
  mean=mean / count;
  System.out.println("String_Node_Str" + mean);
}