18125243f8a0d219285fe081ed3f1eb8cd558ff2 max Sat Sep 26 17:59:16 2026 -0700 hgTracks: GenBank as a fourth format in the "Download Current Track Data" dialog The file holds the DNA of the region in view plus the selected track items as a GenBank feature table, so a region opens in the sequence editors people already use: SnapGene, Benchling, ApE and the rest. Blocks become join() locations, thickStart..thickEnd a CDS for the types that really carry a gene model, and an item running off the edge of the view gets the partial markers. Written in javascript beside the existing JSON/CSV/TSV converters, because the dialog is entirely client side: it adds one getData/sequence call to the getData/track call it already makes. Behind showGenbankDownload in hg.conf, default off, registered as a release gate in hgConfCatalog.py. Wiggle-type tracks have no GenBank equivalent and are greyed out while the format is selected, and the region is capped at 100 Mbp because the web browser has to build the whole file in memory. The dialog itself is reworked at the same time, for every format: the output format comes first, then the file name, the track list and the check-all buttons; it uses the page's font size and normal-height buttons instead of jquery-ui's smaller ones; and the position sits on its own line with the strand the Reverse button is showing. hgTracks.c adds organism and scientificName to jsonForClient, which the GenBank header needs. refs #38433 diff --git src/hg/utils/hgConfCatalog/hgConfCatalog.py src/hg/utils/hgConfCatalog/hgConfCatalog.py index 2f2d5856c66..2d20b413e0f 100755 --- src/hg/utils/hgConfCatalog/hgConfCatalog.py +++ src/hg/utils/hgConfCatalog/hgConfCatalog.py @@ -464,30 +464,52 @@ h("showManeInSearch", "flag", "hg/cgilib/cartJson.c", default="FALSE", role="gate", verified=True, ticket="38285", note="Pulls the MANE Select/Plus Clinical transcript out into its " "own section on the hgSearch disambiguation page, above an " "\"Other transcripts\" section for the rest. Applies when a " "gene-symbol + codon-range search (e.g. \"BRCA1 100-200\") " "returns many RefSeq isoform predictions merged onto one " "genomic footprint, which otherwise gives no indication of " "which transcript is the clinically relevant one. Read once, " "in hgPositionsJson(), and only reached at all when a hit's " "table is ncbiRefSeq* or refGene, so a typical search never " "pays for the check. Added in the current release, so it is " "doing exactly what a gate is supposed to do and has not " "earned a deadline yet. On in cgi-bin-max's hg.conf for " "testing; not yet turned on anywhere shared."), + h("showGenbankDownload", "flag", "hg/hgTracks/hgTracks.c", + default="FALSE", role="gate", verified=True, ticket="38433", + note="A GenBank flat file option in the \"Download Current Track " + "Data\" dialog, beside its JSON, CSV and TSV output. The file " + "holds the DNA of the region plus the selected track items as " + "a feature table, with blocks as join() locations and " + "thickStart..thickEnd as a CDS, so the region opens in " + "SnapGene, Benchling or ApE. Read once, and the flag is the " + "only door into the format: the writer in hgTracks.js runs " + "from one value of the format select, and the second api call " + "that fetches the sequence fires only for that value, so with " + "the flag off neither is reachable and the select offers the " + "three formats it always did. What the flag does not cover is " + "the dialog rework that came with the same ticket -- output " + "format first, page-sized font and buttons, the position on " + "its own line -- which is not GenBank-specific and lands for " + "everyone. Sits behind showDownloadUi, the gate on the dialog " + "itself, which has defaulted TRUE since v467. Added in the " + "current release, so it is doing exactly what a gate is " + "supposed to do and has not earned a deadline yet. On in " + "cgi-bin-max's hg.conf for testing; not yet turned on anywhere " + "shared."), # Gates whose default has flipped TRUE. These are the deletable ones: # the feature is public and the flag is now only an off switch. h("showTutorial", "flag", "hg/hgCustom/hgCustom.c", default="TRUE", role="gate", verified=True, note="The interactive tutorials. Public since v466, five call " "sites across four CGIs. Nothing is gating any more."), h("canDupTracks", "flag", "hg/lib/dupTrack.c", default="TRUE", role="gate", verified=True, note="Duplicate-track feature. Public since v443."), h("canSnake", "flag", "hg/hgc/hgc.c", default="TRUE", role="gate", verified=True, note="Snake display for chain and alignment tracks. Public since " "v467."), h("showDownloadUi", "flag", "hg/hgTracks/hgTracks.c", default="TRUE", role="gate", verified=True,