cb9de88c1e416860a1a69047f6e4c9b338a1cfec
braney
  Tue Jul 18 17:22:47 2023 -0700
first cut at liftOver on the fly

diff --git src/hg/lib/liftOver.c src/hg/lib/liftOver.c
index 6da453c..0e69235 100644
--- src/hg/lib/liftOver.c
+++ src/hg/lib/liftOver.c
@@ -1057,31 +1057,31 @@
 	}
     if (!sameString(chain->qName, chain->tName))
 	{
 	freeMem(bed->chrom);
 	bed->chrom = cloneString(chain->qName);
 	}
     bed->chromEnd = end;
     bed->thickStart = thickStart;
     bed->thickEnd = thickEnd;
     }
 slFreeList(&rangeList);
 slFreeList(&badRanges);
 *pRangeList = NULL;
 }
 
-static char *remapBlockedBed(struct hash *chainHash, struct bed *bed, 
+char *remapBlockedBed(struct hash *chainHash, struct bed *bed, 
                              double minMatch, double minBlocks, bool fudgeThick,
                              bool multiple, char *db, char *chainTable)
 /* Remap blocks in bed, and also chromStart/chromEnd.  If multiple, then bed->next may be
  * changed to point to additional newly allocated mapped beds, and bed's pointer members may
  * be free'd so be sure to pass in a properly allocated bed.
  * Return NULL on success, an error string on failure. */
 {
 char *error = NULL;
 
 struct binElement *binList = findRange(chainHash, bed->chrom, bed->chromStart, bed->chromEnd);
 if (binList == NULL)
     return "Deleted in new";
 
 /* Convert bed blocks to range list. */
 struct liftRange *rangeList = bedToRangeList(bed);