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/sangerGene.h src/hg/inc/sangerGene.h index 77e1626fe86..4dbd4c39ad1 100644 --- src/hg/inc/sangerGene.h +++ src/hg/inc/sangerGene.h @@ -7,32 +7,32 @@ #ifndef SANGERGENE_H #define SANGERGENE_H #define SANGERGENE_NUM_COLS 11 struct sangerGene /* GenePred table with proteinID field for WormBase Genes. */ { struct sangerGene *next; /* Next in singly linked list. */ char *name; /* Name of gene */ 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 */ char *proteinID; /* Swiss-Prot protein ID */ }; struct sangerGene *sangerGeneLoad(char **row); /* Load a sangerGene from row fetched with select * from sangerGene * from database. Dispose of this with sangerGeneFree(). */ struct sangerGene *sangerGeneLoadAll(char *fileName); /* Load all sangerGene from whitespace-separated file. * Dispose of this with sangerGeneFreeList(). */ struct sangerGene *sangerGeneLoadAllByChar(char *fileName, char chopper);