a2967835db0f5a17f28486f11a48c1a7d317bfe7
braney
  Wed Mar 6 10:16:46 2024 -0800
get CRAM custom tracks to work, especially on hs1

diff --git src/hg/lib/customFactory.c src/hg/lib/customFactory.c
index 5449802..21246de 100644
--- src/hg/lib/customFactory.c
+++ src/hg/lib/customFactory.c
@@ -3054,31 +3054,31 @@
 /* Factory for bigBed tracks */
     {
     NULL,
     "bigBed",
     bigBedRecognizer,
     bigBedLoader,
     };
 
 
 /*** BAM Factory - for client-side BAM alignment files ***/
 
 static boolean bamRecognizer(struct customFactory *fac,	struct customPp *cpp, char *type,
 			     struct customTrack *track)
 /* Return TRUE if looks like we're handling a bam track */
 {
-return (sameType(type, "bam"));
+return (sameType(type, "bam") || sameType(type, "cram"));
 }
 
 static struct customTrack *bamLoader(struct customFactory *fac, struct hash *chromHash,
 				     struct customPp *cpp, struct customTrack *track,
 				     boolean dbRequested)
 /* Process the bam track line. */
 {
 struct hash *settings = track->tdb->settingsHash;
 char *bigDataUrl = hashFindVal(settings, "bigDataUrl");
 char *bigDataIndexUrl = hashFindVal(settings, "bigDataIndex");
 
 struct dyString *dyErr = dyStringNew(0);
 requireBigDataUrl(bigDataUrl, fac->name, track->tdb->shortLabel);
 
 checkAllowedBigDataUrlProtocols(bigDataUrl);
@@ -4249,31 +4249,31 @@
         {
 	errAbort("Expecting 'track' line, got %s\nline %d of %s",
 		line, lf->lineIx, lf->fileName);
 	}
     if (!track)
         continue;
 
     lazarusLives(20 * 60);   // extend keep-alive time. for big uploads on slow connections.
 
     /* verify database for custom track */
     char *ctDb = ctGenome(track);
     if (mustBeCurrentDb)
 	{
 	if (ctDb == NULL)
 	    ctDb = genomeDb;
-	else if (differentString(ctDb, genomeDb))
+	else if (differentString(ctDb, trackHubSkipHubName(genomeDb)))
 	    errAbort("can't load %s data into %s custom tracks",
 		     ctDb, genomeDb);
 	}
     struct customTrack *oneList = NULL, *oneTrack;
 
     if (track->dbDataLoad)
     /* Database tracks already mostly loaded, just check that table
      * still exists (they are removed when not accessed for a while). */
         {
 	if (ctConn && !ctDbTableExists(ctConn, track->dbTableName))
 	    continue;
 	if (!ctConn && ctConnErrMsg)
 	    track->networkErrMsg = ctConnErrMsg;
 	if ( startsWith("maf", track->tdb->type))
 	    {