059927383e72afe59202535b4863fc016463127a max Thu Sep 3 15:04:05 2026 -0700 Document that cdsStart == cdsEnd marks a non-coding transcript in genePred format, refs #38245 This convention was previously only documented indirectly, as a SQL filtering tip on the Gene tracks FAQ page. Add it next to the cdsStart/cdsEnd field declarations in genePred.as, genePredExt.as, sangerGene.as, ensGene.as, knownGene.as, refFlat.as, genePred.h and sangerGene.h, and mention it in FAQformat.html and bigGenePred.html (via the equivalent thickStart == thickEnd check). diff --git src/hg/inc/genePred.h src/hg/inc/genePred.h index 12eceb05a9e..1781da3deb4 100644 --- src/hg/inc/genePred.h +++ src/hg/inc/genePred.h @@ -66,32 +66,32 @@ genePredName2Fld = 0x02, /* name2 field */ genePredCdsStatFld = 0x04, /* cdsStart/EndStat fields */ genePredExonFramesFld = 0x08, /* exonFrames field */ genePredAllFlds = 0xFF /* include all extended fields */ }; struct genePredExt /* A gene prediction, with extended fields. */ { struct genePredExt *next; /* Next in singly linked list. */ char *name; /* Name of loci, transcript, mRNA, etc */ char *chrom; /* Chromosome name */ char strand[2]; /* + or - for strand */ unsigned txStart; /* Transcription start position */ unsigned txEnd; /* Transcription end position */ - unsigned cdsStart; /* Coding region start */ - unsigned cdsEnd; /* Coding region end */ + unsigned cdsStart; /* Coding region start; cdsStart == cdsEnd for non-coding transcripts */ + unsigned cdsEnd; /* Coding region end; cdsStart == cdsEnd for non-coding transcripts */ unsigned exonCount; /* Number of exons */ unsigned *exonStarts; /* Exon start positions */ unsigned *exonEnds; /* Exon end positions */ /* optional fields */ unsigned optFields; /* which optional fields are used (not in * database) */ int score; /* score */ char *name2; /* Secondary name. (e.g. name of gene), or * empty if none, NULL if field not * requested */ enum cdsStatus cdsStartStat; /* Status of cdsStart annotation */ enum cdsStatus cdsEndStat; /* Status of cdsEnd annotation */ int *exonFrames; /* Reading frame of the start of the CDS region * of the exon, in the direction of transcription @@ -100,32 +100,32 @@ char *type; char *geneName; char *geneName2; char *geneType; }; struct genePred /* A gene prediction, with optional fields. */ { struct genePred *next; /* Next in singly linked list. */ char *name; /* Name of loci, transcript, mRNA, etc */ char *chrom; /* Chromosome name */ char strand[2]; /* + or - for strand */ unsigned txStart; /* Transcription start position */ unsigned txEnd; /* Transcription end position */ - unsigned cdsStart; /* Coding region start */ - unsigned cdsEnd; /* Coding region end */ + unsigned cdsStart; /* Coding region start; cdsStart == cdsEnd for non-coding transcripts */ + unsigned cdsEnd; /* Coding region end; cdsStart == cdsEnd for non-coding transcripts */ unsigned exonCount; /* Number of exons */ unsigned *exonStarts; /* Exon start positions */ unsigned *exonEnds; /* Exon end positions */ /* optional fields */ unsigned optFields; /* which optional fields are used (not in * database) */ int score; /* score */ char *name2; /* Secondary name. (e.g. name of gene), or * empty if none, NULL if field not * requested */ enum cdsStatus cdsStartStat; /* Status of cdsStart annotation */ enum cdsStatus cdsEndStat; /* Status of cdsEnd annotation */ int *exonFrames; /* List of frame for each exon, or -1 * if no frame or not known. NULL if not