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/lib/genePred.as src/hg/lib/genePred.as
index 4b0df192f2c..4775fbf1f7d 100644
--- src/hg/lib/genePred.as
+++ src/hg/lib/genePred.as
@@ -1,14 +1,14 @@
 table genePred
 "A gene prediction."
     (
     string name;	"Name of gene"
     string chrom;	"Reference sequence chromosome or scaffold"
     char[1] strand;     "+ or - for strand"
     uint txStart;	"Transcription start position (or end position for minus strand item)"
     uint txEnd;         "Transcription end position (or start position for minus strand item)"
-    uint cdsStart;	"Coding region start (or end position for minus strand item)"
-    uint cdsEnd;        "Coding region end (or start position for minus strand item)"
+    uint cdsStart;	"Coding region start (or end position for minus strand item); cdsStart == cdsEnd for non-coding transcripts"
+    uint cdsEnd;        "Coding region end (or start position for minus strand item); cdsStart == cdsEnd for non-coding transcripts"
     uint exonCount;     "Number of exons"
     uint[exonCount] exonStarts; "Exon start positions (or end positions for minus strand item)"
     uint[exonCount] exonEnds;   "Exon end positions (or start positions for minus strand item)"
     )