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

diff --git src/hg/hgTracks/bamTrack.c src/hg/hgTracks/bamTrack.c
index 8827217..bcf349e 100644
--- src/hg/hgTracks/bamTrack.c
+++ src/hg/hgTracks/bamTrack.c
@@ -10,30 +10,31 @@
 #include "hash.h"
 #include "linefile.h"
 #include "htmshell.h"
 #include "hui.h"
 #include "jksql.h"
 #include "hdb.h"
 #include "hgTracks.h"
 #include "cds.h"
 #include "hgBam.h"
 #include "wigCommon.h"
 #include "knetUdc.h"
 #include "udc.h"
 #include "bigWarn.h"
 #include "errCatch.h"
 #include "hgConfig.h"
+#include "chromAlias.h"
 
 
 struct bamTrackData
     {
     struct track *tg;
     struct hash *pairHash;
     int minAliQual;
     char *colorMode;
     char *grayMode;
     char *userTag;
     int aliQualShadeMin;
     int aliQualShadeMax;
     int baseQualShadeMin;
     int baseQualShadeMax;
     };
@@ -501,52 +502,62 @@
 	    errAbort("bamLoadItemsCore: can't find bigDataUrl for custom track %s", tg->track);
 	    }
 	else
 	    {
 	    struct sqlConnection *conn = hAllocConnTrack(database, tg->tdb);
 	    fileName = bamFileNameFromTable(conn, tg->table, chromName);
 	    hFreeConn(&conn);
 	    }
 	}
 
     char *fileName2 = hReplaceGbdb(fileName);
 
     char *baiFileOrUrl = hReplaceGbdb(trackDbSetting(tg->tdb, "bigDataIndex"));
 
     char posForBam[512];
-    safef(posForBam, sizeof(posForBam), "%s:%d-%d", chromName, winStart, winEnd);
     char *cacheDir =  cfgOption("cramRef");
     char *refUrl = trackDbSetting(tg->tdb, "refUrl");
+
+    struct slName *aliasList = chromAliasFindAliases(chromName);
+    struct slName *nativeName = newSlName(chromName);
+    slAddHead(&aliasList, nativeName);
+    for (; aliasList; aliasList = aliasList->next)
+        {
+        safef(posForBam, sizeof(posForBam), "%s:%d-%d", aliasList->name, winStart, winEnd);
         if (!isPaired)
             bamAndIndexFetchPlus(fileName2, baiFileOrUrl, posForBam, addBam, &btd, NULL, refUrl, cacheDir);
         else
             {
             char *setting = trackDbSettingClosestToHomeOrDefault(tg->tdb, "pairSearchRange", "20000");
             int pairSearchRange = atoi(setting);
             if (pairSearchRange > 0)
-	    safef(posForBam, sizeof(posForBam), "%s:%d-%d", chromName,
+                safef(posForBam, sizeof(posForBam), "%s:%d-%d", aliasList->name,
                       max(0, winStart-pairSearchRange), winEnd+pairSearchRange);
             bamAndIndexFetchPlus(fileName2, baiFileOrUrl, posForBam, addBamPaired, &btd, NULL, refUrl, cacheDir);
             struct hashEl *hel;
             struct hashCookie cookie = hashFirst(btd.pairHash);
             while ((hel = hashNext(&cookie)) != NULL)
                 {
                 struct linkedFeatures *lf = hel->val;
                 if (lf->start < winEnd && lf->end > winStart)
                     slAddHead(&(tg->items), lfsFromLf(lf));
                 }
             }
+
+        if (tg->items != NULL)
+            break;
+        }
     freez(&fileName2);
 
     if (tg->visibility != tvDense)
 	{
 	slReverse(&(tg->items));
 	if (isPaired)
 	    slSort(&(tg->items), linkedFeaturesSeriesCmp);
 	else if (sameString(colorMode, BAM_COLOR_MODE_STRAND))
 	    slSort(&(tg->items), linkedFeaturesCmpOri);
 	else if (sameString(colorMode, BAM_COLOR_MODE_GRAY) &&
 		 sameString(grayMode, BAM_GRAY_MODE_ALI_QUAL))
 	    slSort(&(tg->items), linkedFeaturesCmpScore);
 	else
 	    slSort(&(tg->items), linkedFeaturesCmpStart);
 	if (slCount(tg->items) > MAX_ITEMS_FOR_MAPBOX)