d87ef2fb8472135b899fd1a89434033d5895217a mspeir Thu Oct 1 15:31:26 2026 -0700 Add barChartReorder, a utility for changing the order of the bars in a barChart track, refs #37619 The bars of a barChart are drawn in the order their values appear in the expScores field, and nothing re-sorts them when the track is drawn, so the order is a property of the data file. Putting the bars in a different order means rewriting that field in every row, which is awkward enough by hand that we have twice done it for a data author instead of explaining it. This has come up on #36998 and #37001. barChartReorder takes the current bar order and the wanted order as two lists of names, rewrites expScores in every row, optionally puts a .categories file into the same order, and prints the barChartBars line for the track. It works on any barChart BED whatever produced it, so unlike the --groupOrderFile option of expMatrixToBarchartBed it does not assume the file was built here from an expression matrix. A bigBarChart is handled by converting it with bigBedToBed and rebuilding it afterwards, which the usage message spells out. It refuses to write a half-correct file: the two orders must name the same bars, every row must hold as many values as there are names, and a .categories file must have a row for each bar. Listed in USER_APP_SCRIPTS so it reaches hgdownload, and in the no-argument branch of mkREADME.sh so the README picks up its usage message rather than the argparse error that -verbose=2 would produce. Its tests are also wired into the test target directly. testAll iterates ALL_APPS, which does not include USER_APP_SCRIPTS, so none of these programs' tests have ever been reachable from "make test" - that is why the suite sitting next to expMatrixToBarchartBed never reported it was broken. The makefile already keeps a short list of directories testAll cannot reach, and this adds two more to it. Co-Authored-By: Claude Opus 5 (1M context) diff --git src/utils/barChartReorder/tests/in/test.bed src/utils/barChartReorder/tests/in/test.bed new file mode 100644 index 00000000000..b33faa2e22b --- /dev/null +++ src/utils/barChartReorder/tests/in/test.bed @@ -0,0 +1,4 @@ +#chr chromStart chromEnd name score strand name2 expCount expScores;adiposeSubcut breastMamTissue colonTransverse muscleSkeletal wholeBlood _offset _lineLength +chr14 95086227 95158010 ENSG00000100697.10 999 - DICER1 5 10.94,11.60,8.00,6.69,4.89 93153 26788 +chr14 95181939 95319906 ENSG00000165959.7 999 - CLMN 5 7.08,9.53,9.32,1.38,1.68 66148 27004 +chr14 95417493 95475836 ENSG00000176438.8 999 - SYNE3 5 7.29,3.73,0.74,0.35,1.39 38669 27478