a8b15f82bbcff0d7953bae0da7df49363939f85a
lrnassar
  Wed Aug 5 16:59:54 2026 -0700
Add tests for every maf sequence-name form, and describe the splitting in the usage messages. refs #37928

The existing testDot and testPipe inputs are identical copies of each other and both use
pipe-form query names, so the dot path was never exercised in either tool. That is how
the break in ae63ce5 shipped even though a test suite existed, and why the suite could
not have caught the mafToBigMafSummary divergence either.

New inputs in both tests directories cover an ordinary db.chrom, a species name with a
dotted chrom, both GenArk accession forms, a GenArk accession with no chrom after the
version, a pipe with a dotted chrom, a name with no separator, a reference assembly
whose own name contains a dot, and a name where the reference db is a strict prefix of
another assembly. Every rule in the splitter is now load-bearing: breaking any one of
them fails a target.

Also adds mafToBigMafSummary to TEST_DIRS in hg/utils, since nothing above the directory
was running its suite, and adds a short note to both usage messages describing how a
sequence name is split into assembly and sequence.

diff --git src/hg/utils/mafToBigMafSummary/mafToBigMafSummary.c src/hg/utils/mafToBigMafSummary/mafToBigMafSummary.c
index 4d6a82d8299..d5b3cc6a510 100644
--- src/hg/utils/mafToBigMafSummary/mafToBigMafSummary.c
+++ src/hg/utils/mafToBigMafSummary/mafToBigMafSummary.c
@@ -28,30 +28,34 @@
 int minSize = 10000;
 int maxSize = 50000;
 int minSeqSize = 1;
 char *referenceDb = NULL;
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
 "mafToBigMafSummary - Convert a maf into the bed3+4 input for a bigMaf summary file\n"
   "usage:\n"
   "   mafToBigMafSummary referenceDb input.maf out.bed\n"
   "Pipe the output through 'sort -k1,1 -k2,2n', then run bedToBigBed:\n"
   "   bedToBigBed -type=bed3+4 -as=mafSummary.as -tab out.sorted.bed \\\n"
   "       referenceDb.chrom.sizes bigMafSummary.bb\n"
+  "Sequence names are split into assembly and sequence at a pipe if one is present,\n"
+  "otherwise right after the reference assembly you supply if the name starts with it,\n"
+  "otherwise at the first dot, except for GCA_/GCF_ accessions where the assembly\n"
+  "keeps its version (GCF_000001405.40.NC_000001.11 -> GCF_000001405.40).\n"
   "options:\n"
   "   -mergeGap=N   max size of gap to merge regions (default %d)\n"
   "   -minSize=N    merge blocks smaller than N (default %d)\n"
   "   -maxSize=N    break up blocks larger than N (default %d)\n"
   "   -minSeqSize=N skip alignments when reference sequence is less than N\n"
   "                 (default %d)\n",
 mergeGap, minSize, maxSize, minSeqSize
   );
 }
 
 double scorePairwise(struct mafAli *maf)
 /* generate score from 0.0 to 1.0 for an alignment pair */
 /* Adapted from multiz scoring in hgTracks/mafTrack.c */
 {
 int endB;       /* end in the reference (master) genome */