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/htdocs/FAQ/FAQformat.html src/hg/htdocs/FAQ/FAQformat.html index 3c14911faaa..18d33e436d4 100755 --- src/hg/htdocs/FAQ/FAQformat.html +++ src/hg/htdocs/FAQ/FAQformat.html @@ -990,67 +990,69 @@ and amino acids when zoomed in to the base level.

Gene Predictions

The following definition is used for gene prediction tables. In alternative-splicing situations, each transcript has a row in this table.

table genePred
 "A gene prediction."
     (
     string  name;               "Name of gene"
     string  chrom;              "Chromosome name"
     char[1] strand;             "+ or - for strand"
     uint    txStart;            "Transcription start position"
     uint    txEnd;              "Transcription end position"
-    uint    cdsStart;           "Coding region start"
-    uint    cdsEnd;             "Coding region end"
+    uint    cdsStart;           "Coding region start; cdsStart == cdsEnd for non-coding transcripts"
+    uint    cdsEnd;             "Coding region end; cdsStart == cdsEnd for non-coding transcripts"
     uint    exonCount;          "Number of exons"
     uint[exonCount] exonStarts; "Exon start positions"
     uint[exonCount] exonEnds;   "Exon end positions"
     )
 

Gene Predictions (Extended)

The following definition is used for extended gene prediction tables. In alternative-splicing situations, each transcript has a row in this table. The refGene table is an example of the genePredExt format.

table genePredExt
 "A gene prediction with some additional info."
     (
     string name;        	"Name of gene (usually transcript_id from GTF)"
     string chrom;       	"Chromosome name"
     char[1] strand;     	"+ or - for strand"
     uint txStart;       	"Transcription start position"
     uint txEnd;         	"Transcription end position"
-    uint cdsStart;      	"Coding region start"
-    uint cdsEnd;        	"Coding region end"
+    uint cdsStart;      	"Coding region start; cdsStart == cdsEnd for non-coding transcripts"
+    uint cdsEnd;        	"Coding region end; cdsStart == cdsEnd for non-coding transcripts"
     uint exonCount;     	"Number of exons"
     uint[exonCount] exonStarts; "Exon start positions"
     uint[exonCount] exonEnds;   "Exon end positions"
     int score;            	"Score"
     string name2;       	"Alternate name (e.g. gene_id from GTF)"
     string cdsStartStat; 	"Status of CDS start annotation (none, unknown, incomplete, or complete)"
     string cdsEndStat;   	"Status of CDS end annotation (none, unknown, incomplete, or complete)"
     lstring exonFrames; 	"Exon frame offsets {0,1,2}"
     )
 

The fields cdsStartStat and cdsEndStat can have the following values: 'none' = none, 'unk' = unknown, 'incmpl' = incomplete, and 'cmpl' = complete. However, the values are not used for -our display and cannot be used to identify which genes are coding or non-coding. For most purposes, +our display and cannot be used to identify which genes are coding or non-coding. To determine +whether a transcript is non-coding, check whether cdsStart equals cdsEnd +(coding transcripts have cdsStart != cdsEnd). For most purposes, to get more information about a transcript, other tables will need to be used. For instance, in the case of hg38, the tables named wgEncodeGencodeAttrsVxx, where xx is the Gencode Version number. See this coding/non-coding genes FAQ for more information.

The exonFrames field: The field exonFrames is a comma-separated list of the numbers with the possible values 0, 1, 2 or -1, one per exon, in order of transcription. This is different than the exonStarts and exonEnds fields - if the transcript is on the negative strand, exonFrames are in the reverse order relative than exonStarts. Put differently, it means that the first value for a transcript on the minus (-) strand is the exon on the right of the screen on the Genome Browser. A value of zero means that the first codon of the exon starts at the first nucleotide of the exon. A value of one means that the first codon starts after the first nucleotide and a value of two means that it starts after the second nucleotide. @@ -1059,32 +1061,32 @@

Gene Predictions and RefSeq Genes with Gene Names

A version of genePred that associates the gene name with the gene prediction information. In alternative-splicing situations, each transcript has a row in this table.

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;              "Chromosome name"
     char[1] strand;             "+ or - for strand"
     uint    txStart;            "Transcription start position"
     uint    txEnd;              "Transcription end position"
-    uint    cdsStart;           "Coding region start"
-    uint    cdsEnd;             "Coding region end"
+    uint    cdsStart;           "Coding region start; cdsStart == cdsEnd for non-coding transcripts"
+    uint    cdsEnd;             "Coding region end; cdsStart == cdsEnd for non-coding transcripts"
     uint    exonCount;          "Number of exons"
     uint[exonCount] exonStarts; "Exon start positions"
     uint[exonCount] exonEnds;   "Exon end positions"
     )
 

Personal Genome SNP format

This format is for displaying SNPs from personal genomes. It is the same as is used for the Genome Variants and Population Variants tracks.

  1. chrom - The name of the chromosome (e.g. chr3, chrY, chr2_random) or scaffold (e.g. scaffold10671).