3d865319000102f6164e546ddd9c959f67c664ce
braney
  Wed Mar 30 13:09:30 2022 -0700
add chromAlias support to bam support

diff --git src/hg/hgTables/bam.c src/hg/hgTables/bam.c
index 02a262a..8a42df6 100644
--- src/hg/hgTables/bam.c
+++ src/hg/hgTables/bam.c
@@ -16,30 +16,31 @@
 #include "hdb.h"
 #include "trackDb.h"
 #include "obscure.h"
 #include "hmmstats.h"
 #include "correlate.h"
 #include "asParse.h"
 #include "bbiFile.h"
 #include "bigBed.h"
 #include "hubConnect.h"
 #include "trackHub.h"
 #include "hgTables.h"
 #include "asFilter.h"
 #include "xmlEscape.h"
 #include "hgBam.h"
 #include "hgConfig.h"
+#include "chromAlias.h"
 
 boolean isBamTable(char *table)
 /* Return TRUE if table corresponds to a BAM file. */
 {
 if (isHubTrack(table))
     {
     struct trackDb *tdb = hashFindVal(fullTableToTdbHash, table);
     return startsWithWord("bam", tdb->type);
     }
 else
     return trackIsType(database, table, curTrack, "bam", ctLookupName);
 }
 
 char *bamFileName(char *table, struct sqlConnection *conn, char *seqName)
 /* Return file name associated with BAM.  This handles differences whether it's
@@ -172,32 +173,44 @@
     }
 
 /* Loop through outputting each region */
 struct region *region, *regionList = getRegions();
 
 struct trackDb *tdb = findTdbForTable(db, curTrack, table, ctLookupName);
 int maxOut = bigFileMaxOutput();
 char *cacheDir =  cfgOption("cramRef");
 char *refUrl = trackDbSetting(tdb, "refUrl");
 for (region = regionList; region != NULL && (maxOut > 0); region = region->next)
     {
     struct lm *lm = lmInit(0);
     char *fileName = bamFileName(table, conn, region->chrom);
     char *baiUrl = bigDataIndexFromCtOrHub(table, conn);
 
-    struct samAlignment *sam, *samList = bamAndIndexFetchSamAlignmentPlus(fileName, baiUrl, region->chrom,
+    struct samAlignment *sam, *samList = NULL;
+
+    struct slName *aliasList = chromAliasFindAliases(region->chrom);
+    struct slName *nativeName = newSlName(region->chrom);
+    slAddHead(&aliasList, nativeName);
+
+    for (; aliasList; aliasList = aliasList->next)
+        {
+        samList = bamAndIndexFetchSamAlignmentPlus(fileName, baiUrl, aliasList->name,
             region->start, region->end, lm, refUrl, cacheDir);
+        if (samList)
+            break;
+        }
+
     char *row[SAMALIGNMENT_NUM_COLS];
     char numBuf[BAM_NUM_BUF_SIZE];
     for (sam = samList; sam != NULL && (maxOut > 0); sam = sam->next)
         {
 	samAlignmentToRow(sam, numBuf, row);
 	if (asFilterOnRow(filter, row))
 	    {
 	    /* if we're looking for identifiers, check if this matches */
 	    if ((idHash != NULL)&&(hashLookup(idHash, row[idFieldNum]) == NULL))
 		continue;
 
 	    int i;
             if (outSep == ',') fputc('"', f);
 	    fprintf(f, "%s", row[columnArray[0]]);
             if (outSep == ',') fputc('"', f);