7a7a1a9c91289eeebd6923cba4ace8ef75f50388 markd Mon Apr 20 15:16:48 2015 -0700 Improve error message from gff3ToGenePred to make it easier to determine where bad GFF3 annotations created an invalid genePred. (no redmine) diff --git src/hg/lib/genePred.c src/hg/lib/genePred.c index d77e58a..f13f060 100644 --- src/hg/lib/genePred.c +++ src/hg/lib/genePred.c @@ -1481,33 +1481,33 @@ static void checkExon(FILE* errFh, int* errorCnt, char *desc, struct genePred* gp, int iExon) /* check one exon of a genePred */ { unsigned exonStart = gp->exonStarts[iExon]; unsigned exonEnd = gp->exonEnds[iExon]; if (exonStart >= exonEnd) gpError(errFh, errorCnt, "%s: %s exon %u start %u >= end %u", desc, gp->name, iExon, exonStart, exonEnd); if (exonStart < gp->txStart) gpError(errFh, errorCnt, "%s: %s exon %u start %u < txStart %u", desc, gp->name, iExon, exonStart, gp->txStart); if (exonEnd > gp->txEnd) gpError(errFh, errorCnt, "%s: %s exon %u end %u > txEnd %u", desc, gp->name, iExon, exonEnd, gp->txEnd); if (iExon > 0) { /* other than first exon */ - unsigned prevExonEnd = gp->exonEnds[iExon-1]; - if (exonStart < prevExonEnd) - gpError(errFh, errorCnt, "%s: %s exon %u overlaps previous exon", desc, gp->name, iExon); + if (exonStart < gp->exonEnds[iExon-1]) + gpError(errFh, errorCnt, "%s: %s exon %u (%s:%d-%d) overlaps previous exon (%s:%d-%d)", + desc, gp->name, iExon, gp->chrom, exonStart, exonEnd, gp->chrom, gp->exonStarts[iExon-1], gp->exonEnds[iExon-1]); } if (gp->optFields & genePredExonFramesFld) { int frame = gp->exonFrames[iExon]; if ((frame < -1) || (frame > 2)) gpError(errFh, errorCnt, "%s: %s invalid exonFrame: %d", desc, gp->name, frame); if ((exonEnd > gp->cdsStart) && (exonStart < gp->cdsEnd)) { if (frame == -1) gpError(errFh, errorCnt, "%s: %s no exonFrame on CDS exon %d", desc, gp->name, iExon); } else { if (frame != -1)