Program: 149580
Project: 149580
Buggy source:
private void summariseResults(HashMap<Integer,FilterCandidates> filterCandidates){
  createTable();
  int tp=0, fp=0, tn=0, fn=0;
  int failP=0, failN=0;
  for (  FilterCandidates result : filterCandidates.values()) {
    tp+=result.tp;
    fp+=result.fp;
    tn+=result.tn;
    fn+=result.fn;
    for (int i=0; i < result.fitResult.length; i++) {
      if (result.fitResult[i].getStatus() != FitStatus.OK) {
        if (result.spots[i].match)         failP++;
 else         failN++;
      }
    }
  }
  ClassificationResult r=new ClassificationResult(tp,fp,tn,fn);
  StringBuilder sb=new StringBuilder();
  final double signal=(simulationParameters.minSignal + simulationParameters.maxSignal) * 0.5;
  final int n=results.size();
  sb.append(imp.getStackSize()).append("String_Node_Str");
  final int w=imp.getWidth();
  final int h=imp.getHeight();
  sb.append(w).append("String_Node_Str");
  sb.append(h).append("String_Node_Str");
  sb.append(n).append("String_Node_Str");
  double density=((double)n / imp.getStackSize()) / (w * h) / (simulationParameters.a * simulationParameters.a / 1e6);
  sb.append(Utils.rounded(density)).append("String_Node_Str");
  sb.append(Utils.rounded(signal)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.s)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.a)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.depth)).append("String_Node_Str");
  sb.append(simulationParameters.fixedDepth).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.gain)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.readNoise)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.b)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.b2)).append("String_Node_Str");
  double noise=simulationParameters.b2;
  if (simulationParameters.emCCD) {
    final double readVariance=noise - simulationParameters.b;
    noise=simulationParameters.b * 2 + readVariance;
  }
  sb.append(Utils.rounded(signal / Math.sqrt(noise))).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.s / simulationParameters.a)).append("String_Node_Str");
  sb.append(BenchmarkSpotFilter.filterName).append("String_Node_Str");
  add(sb,nP + nN);
  add(sb,nP);
  add(sb,nN);
  add(sb,PeakFit.getSolverName(config.getFitConfiguration()));
  add(sb,config.getFitting());
  add(sb,100.0 * r.getP() / nP);
  add(sb,100.0 * r.getN() / nN);
  add(sb,r.getTotal());
  add(sb,r.getP());
  add(sb,r.getN());
  add(sb,failP);
  add(sb,failN);
  add(sb,tp);
  add(sb,fp);
  add(sb,tn);
  add(sb,fn);
  add(sb,r.getTPR());
  add(sb,r.getTNR());
  add(sb,r.getPPV());
  add(sb,r.getNPV());
  add(sb,r.getFPR());
  add(sb,r.getFDR());
  add(sb,r.getAccuracy());
  add(sb,r.getFScore(1));
  add(sb,r.getJaccard());
  add(sb,r.getMCC());
  add(sb,r.getInformedness());
  add(sb,r.getMarkedness());
  summaryTable.append(sb.toString());
}

Fixed version (ground truth):
private void summariseResults(HashMap<Integer,FilterCandidates> filterCandidates){
  createTable();
  int tp=0, fp=0, tn=0, fn=0;
  int failP=0, failN=0;
  for (  FilterCandidates result : filterCandidates.values()) {
    tp+=result.tp;
    fp+=result.fp;
    tn+=result.tn;
    fn+=result.fn;
    for (int i=0; i < result.fitResult.length; i++) {
      if (result.fitResult[i].getStatus() != FitStatus.OK) {
        if (result.spots[i].match)         failP++;
 else         failN++;
      }
    }
  }
  ClassificationResult r=new ClassificationResult(tp,fp,tn,fn);
  StringBuilder sb=new StringBuilder();
  final double signal=(simulationParameters.minSignal + simulationParameters.maxSignal) * 0.5;
  final int n=results.size();
  sb.append(imp.getStackSize()).append("String_Node_Str");
  final int w=imp.getWidth();
  final int h=imp.getHeight();
  sb.append(w).append("String_Node_Str");
  sb.append(h).append("String_Node_Str");
  sb.append(n).append("String_Node_Str");
  double density=((double)n / imp.getStackSize()) / (w * h) / (simulationParameters.a * simulationParameters.a / 1e6);
  sb.append(Utils.rounded(density)).append("String_Node_Str");
  sb.append(Utils.rounded(signal)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.s)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.a)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.depth)).append("String_Node_Str");
  sb.append(simulationParameters.fixedDepth).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.gain)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.readNoise)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.b)).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.b2)).append("String_Node_Str");
  double noise=simulationParameters.b2;
  if (simulationParameters.emCCD) {
    final double readVariance=noise - simulationParameters.b;
    noise=simulationParameters.b * 2 + readVariance;
  }
  sb.append(Utils.rounded(signal / Math.sqrt(noise))).append("String_Node_Str");
  sb.append(Utils.rounded(simulationParameters.s / simulationParameters.a)).append("String_Node_Str");
  sb.append(spotFilter.getDescription()).append("String_Node_Str");
  add(sb,nP + nN);
  add(sb,nP);
  add(sb,nN);
  add(sb,PeakFit.getSolverName(config.getFitConfiguration()));
  add(sb,config.getFitting());
  add(sb,100.0 * r.getP() / nP);
  add(sb,100.0 * r.getN() / nN);
  add(sb,r.getTotal());
  add(sb,r.getP());
  add(sb,r.getN());
  add(sb,failP);
  add(sb,failN);
  add(sb,tp);
  add(sb,fp);
  add(sb,tn);
  add(sb,fn);
  add(sb,r.getTPR());
  add(sb,r.getTNR());
  add(sb,r.getPPV());
  add(sb,r.getNPV());
  add(sb,r.getFPR());
  add(sb,r.getFDR());
  add(sb,r.getAccuracy());
  add(sb,r.getFScore(1));
  add(sb,r.getJaccard());
  add(sb,r.getMCC());
  add(sb,r.getInformedness());
  add(sb,r.getMarkedness());
  summaryTable.append(sb.toString());
}