Program: 37725
Project: 37725
Buggy source:
public static void iterateSpliceIsoforms(File assembly_gtf,GTFWriter isoform_gtf,PrintStream skipped,Integer max_paths) throws FileNotFoundException {
  TranscriptIterator ti=new TranscriptIterator(assembly_gtf);
  StrandedGenomicIntervalTree<Map<String,Object>> exon_5p=new StrandedGenomicIntervalTree<Map<String,Object>>();
  StrandedGenomicIntervalTree<Map<String,Object>> exon_3p=new StrandedGenomicIntervalTree<Map<String,Object>>();
  StrandedGenomicIntervalTree<Map<String,Object>> sj5p=new StrandedGenomicIntervalTree<Map<String,Object>>();
  MapCounter<String> isoform_count=new MapCounter<String>();
  for (  AnnotatedRegion r : ti) {
    if (r.annotation.equals("String_Node_Str")) {
      if (r.getAttribute("String_Node_Str").equals("String_Node_Str")) {
        exon_5p.add(r.chr,r.start,r.end,r.strand,r.attributes);
      }
 else {
        exon_3p.add(r.chr,r.start,r.end,r.strand,r.attributes);
      }
    }
    if (r.annotation.equals("String_Node_Str")) {
      Map<String,Object> attributes=r.attributes;
      attributes.put("String_Node_Str",r.get3Prime());
      sj5p.add(r.chr,r.get5Prime(),r.get5Prime(),r.strand,attributes);
    }
  }
  Set<String> skipped_ids=new HashSet<String>();
  for (  AnnotatedRegion r : exon_5p) {
    if (max_paths == null || countPaths(r,exon_3p,sj5p) < max_paths) {
      Stack<AnnotatedRegion> isoform_exons=new Stack<AnnotatedRegion>();
      iterateIsoforms(isoform_count,isoform_exons,r,exon_3p,sj5p,isoform_gtf);
    }
 else {
      String locus_id=(String)r.getAttribute("String_Node_Str");
      if (!skipped_ids.contains(locus_id)) {
        skipped.println(locus_id);
        skipped_ids.add(locus_id);
      }
    }
  }
}

Fixed version (ground truth):
public static void iterateSpliceIsoforms(File assembly_gtf,GTFWriter isoform_gtf,PrintStream skipped,Integer max_paths) throws FileNotFoundException {
  TranscriptIterator ti=new TranscriptIterator(assembly_gtf);
  StrandedGenomicIntervalTree<Map<String,Object>> exon_5p=new StrandedGenomicIntervalTree<Map<String,Object>>();
  StrandedGenomicIntervalTree<Map<String,Object>> exon_3p=new StrandedGenomicIntervalTree<Map<String,Object>>();
  StrandedGenomicIntervalTree<Map<String,Object>> sj5p=new StrandedGenomicIntervalTree<Map<String,Object>>();
  MapCounter<String> isoform_count=new MapCounter<String>();
  for (  AnnotatedRegion r : ti) {
    if (r.annotation.equals("String_Node_Str")) {
      if (r.getAttribute("String_Node_Str").equals("String_Node_Str")) {
        exon_5p.add(r.chr,r.start,r.end,r.strand,r.attributes);
      }
 else {
        exon_3p.add(r.chr,r.start,r.end,r.strand,r.attributes);
      }
    }
    if (r.annotation.equals("String_Node_Str")) {
      Map<String,Object> attributes=r.attributes;
      attributes.put("String_Node_Str",r.get3Prime());
      sj5p.add(r.chr,r.get5Prime(),r.get5Prime(),r.strand,attributes);
    }
  }
  Set<String> skipped_ids=new HashSet<String>();
  for (  AnnotatedRegion r : exon_5p) {
    if (max_paths == null || countPaths(r,exon_3p,sj5p).compareTo(new BigInteger(String.format("String_Node_Str",max_paths))) < 0) {
      Stack<AnnotatedRegion> isoform_exons=new Stack<AnnotatedRegion>();
      iterateIsoforms(isoform_count,isoform_exons,r,exon_3p,sj5p,isoform_gtf);
    }
 else {
      String locus_id=(String)r.getAttribute("String_Node_Str");
      if (!skipped_ids.contains(locus_id)) {
        skipped.println(locus_id);
        skipped_ids.add(locus_id);
      }
    }
  }
}