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/refFlat.as src/hg/lib/refFlat.as
index effec5f5a82..013852959c9 100644
--- src/hg/lib/refFlat.as
+++ src/hg/lib/refFlat.as
@@ -1,16 +1,16 @@
 table refFlat
 "A gene prediction with additional geneName field."
     (
     string  geneName;           "Name of gene as it appears in genome browser."
     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)"
     )