9541aea4204c8079ea2e464403f2225f6aa33cfd
max
  Mon Sep 14 07:59:00 2026 -0700
uniprot: show the splice variant track, and filter the CAT alignments

Two things that were quietly missing.

unipSplice has been built since the pipeline rewrite in #19351 and never had a
trackDb stanza - "git log -S unipSplice" on uniprot.ra returns nothing, so it was
never wired up rather than deliberately dropped. It holds UniProt's splice variant
features, 28962 of them on hg38 and 29195 on hs1, and has been invisible on every
assembly for years. Added to uniprot.ra and to the archive/contrib template, which
is where the hub-served assemblies get their trackDb. The file exists on the same
131 assemblies as unipDomain.bb, so no stanza points at anything missing.

The alignments on a CAT assembly were not being filtered with pslSelect. That
filter maps a UniProt accession to the transcripts UniProt cross-references for it,
and the README is blunt about how much it matters for protein families with nearly
identical transcripts. It understood two kinds of id, Ensembl and RefSeq, and CAT
names a transcript after its source gene, so hs1 matched neither and fell through
unfiltered. Every row of the CAT bigBed carries the Ensembl transcript it was lifted
from, so catSourceTransMap joins on that and UniProt's Ensembl cross-reference does
the rest.

The mapping had to become one-to-many for this: one Ensembl transcript can name
several of ours, both because paralogs are lifted from the same source and because
duplicate CAT names were given -dup suffixes earlier. It reproduces those suffixes
by walking the bigBed in the same order rather than attaching every paralog to every
source, which measured 234903 of 234903 hs1 transcripts mapped, no duplicates,
against 330749 for the loose version. For every other gene track the lists hold one
element and the behaviour is unchanged, which is checked: a single-valued entry
still writes exactly one pair line and still counts a version difference, a
multi-valued one writes a line per transcript, and an id we do not have is still
skipped so pslSelect -qPass passes it through.

refs #38300

diff --git src/hg/utils/otto/uniprot/trackDb.template.txt src/hg/utils/otto/uniprot/trackDb.template.txt
index 173f1998fac..6457125e861 100644
--- src/hg/utils/otto/uniprot/trackDb.template.txt
+++ src/hg/utils/otto/uniprot/trackDb.template.txt
@@ -1,224 +1,235 @@
 # this file is used for building the archive track hub, it is template, not the final file.
 # doUniprot builds the final file.
 # if you modify this file, make sure that you also modify the original of the native track in trackDb/uniprot.ra
 
 track uniprot$VER
 shortLabel UniProt $VER
 longLabel UniProt SwissProt/TrEMBL Protein Annotations, release $VER
 #group genes
 visibility hide
 type bigBed 12 +
 exonNumbers off
 compositeTrack on
 allButtonPair on
 mouseOverField comments
 urls uniProtId="http://www.uniprot.org/uniprot/$$#section_features" pmids="https://www.ncbi.nlm.nih.gov/pubmed/$$"
 itemRgb on
 #dataVersion /gbdb/$D/uniprot/version.txt
 hideEmptySubtracks on
 
         track unipAliSwissprot$VER
         shortLabel SwissProt Aln.
         longLabel UCSC alignment of SwissProt proteins to genome - $VER
         priority 1
         parent uniprot$VER
         visibility hide
         type bigPsl
         bigDataUrl $VER/unipAliSwissprot.bb
         searchIndex name,acc
         urls acc="http://www.uniprot.org/uniprot/$$" hgncId="https://www.genenames.org/cgi-bin/gene_symbol_report?hgnc_id=$$" 
         labelFields acc,uniprotName,geneName,hgncSym,refSeq,refSeqProt,ensProt,uniprotName
         mouseOverField protFullNames
         itemRgb off
         color 2,12,120
         indelDoubleInsert on
         indelQueryInsert on
         baseColorTickColor contrastingColor
         baseColorUseCds given
         baseColorDefault genomicCodons
         showDiffBasesAllScales on
 
         track unipAliTrembl$VER
         shortLabel TrEMBL Aln.
         longLabel UCSC alignment of TrEMBL proteins to genome - $VER
         priority 2
         parent uniprot$VER
         visibility dense
         type bigPsl
         bigDataUrl $VER/unipAliTrembl.bb
         searchIndex name,acc
         urls acc="http://www.uniprot.org/uniprot/$$" hgncId="https://www.genenames.org/cgi-bin/gene_symbol_report?hgnc_id=$$" 
         labelFields acc,uniprotName,geneName,hgncSym,refSeq,refSeqProt,ensProt,uniprotName
         mouseOverField protFullNames
         itemRgb off
         color 0,150,250
         indelDoubleInsert on
         indelQueryInsert on
         baseColorTickColor contrastingColor
         baseColorUseCds given
         baseColorDefault genomicCodons
         showDiffBasesAllScales on
 
         track unipLocSignal$VER
         shortLabel Signal Peptide
         longLabel UniProt Signal Peptides - $VER
         priority 3
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipLocSignal.bb
         color 255,0,150
         itemRgb off
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipLocExtra$VER
         shortLabel Extracellular
         longLabel UniProt Extracellular Domain - $VER
         priority 4
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipLocExtra.bb
         color 0,150,255
         itemRgb off
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipLocTransMemb$VER
         shortLabel Transmembrane
         longLabel UniProt Transmembrane Domains - $VER
         priority 5
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipLocTransMemb.bb
         color 0,150,0
         itemRgb off
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipLocCytopl$VER
         shortLabel Cytoplasmic
         longLabel UniProt Cytoplasmic Domains - $VER
         priority 6
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipLocCytopl.bb
         color 255,150,0
         itemRgb off
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipChain$VER
         shortLabel Chains
         longLabel UniProt Mature Protein Products (Polypeptide Chains) - $VER
         priority 7
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipChain.bb
         urls uniProtId="http://www.uniprot.org/uniprot/$$#ptm_processing" pmids="https://www.ncbi.nlm.nih.gov/pubmed/$$"
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipInterest$VER
         shortLabel Interest
         longLabel UniProt Regions of Interest - $VER
         priority 4
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipInterest.bb
         itemRgb off
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipDomain$VER
         shortLabel Domains
         longLabel UniProt Domains - $VER
         priority 8
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipDomain.bb
         urls uniProtId="http://www.uniprot.org/uniprot/$$#family_and_domains" pmids="https://www.ncbi.nlm.nih.gov/pubmed/$$"
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipDisulfBond$VER
         shortLabel Disulf. Bonds
         longLabel UniProt Disulfide Bonds - $VER
         priority 8
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipDisulfBond.bb
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipModif$VER
         shortLabel AA Modifications
         longLabel UniProt Amino Acid Modifications - $VER
         priority 9
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipModif.bb
         urls uniProtId="http://www.uniprot.org/uniprot/$$#aaMod_section" pmids="https://www.ncbi.nlm.nih.gov/pubmed/$$"
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipMut$VER
         shortLabel Mutations
         longLabel UniProt Amino Acid Mutations - $VER
         priority 10
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipMut.bb
         urls uniProtId="http://www.uniprot.org/uniprot/$$#pathology_and_biotech" pmids="https://www.ncbi.nlm.nih.gov/pubmed/$$" variationId="http://www.uniprot.org/uniprot/$$"
 
         track unipStruct$VER
         shortLabel Structure
         longLabel UniProt Protein Primary/Secondary Structure Annotations - $VER
         priority 11
         parent uniprot$VER
         visibility hide
         type bigBed 12 +
         bigDataUrl $VER/unipStruct.bb
         urls uniProtId="http://www.uniprot.org/uniprot/$$#structure" pmids="https://www.ncbi.nlm.nih.gov/pubmed/$$"
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipOther$VER
         shortLabel Other Annot.
         longLabel UniProt Other Annotations - $VER
         priority 11
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipOther.bb
         urls uniProtId="http://www.uniprot.org/uniprot/$$#family_and_domains" pmids="https://www.ncbi.nlm.nih.gov/pubmed/$$"
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipRepeat$VER
         shortLabel Repeats
         longLabel UniProt Repeats - $VER
         priority 12
         parent uniprot$VER
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipRepeat.bb
         urls uniProtId="http://www.uniprot.org/uniprot/$$#family_and_domains" pmids="https://www.ncbi.nlm.nih.gov/pubmed/$$"
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
         track unipConflict$VER
         shortLabel Seq. Conflicts
         longLabel UniProt Sequence Conflicts - $VER
         priority 13
         parent uniprot$VER off
         visibility dense
         type bigBed 12 +
         bigDataUrl $VER/unipConflict.bb
         urls uniProtId="http://www.uniprot.org/uniprot/$$#Sequence_conflict_section" pmids="https://www.ncbi.nlm.nih.gov/pubmed/$$"
         filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
 
+        track unipSplice$VER
+        shortLabel Splice Variants
+        longLabel UniProt Splice Variants - $VER
+        priority 14
+        parent uniprot$VER off
+        visibility dense
+        type bigBed 12 +
+        bigDataUrl $VER/unipSplice.bb
+        urls uniProtId="http://www.uniprot.org/uniprot/$$#sequences" pmids="https://www.ncbi.nlm.nih.gov/pubmed/$$"
+        filterValues.status Manually reviewed (Swiss-Prot),Unreviewed (TrEMBL)
+
 #searchTable unipAliSwissprot
 #searchType bigBed
 #searchDescription UniProt/SwissProt manually curated Proteins mapped to the genome by UCSC
 
 #searchTable unipAliTrembl
 #searchType bigBed
 #searchDescription UniProt/TrEMBL predicted Proteins mapped to the genome by UCSC