d972170022c5cbf6be7c1fdf31afba23d826608b braney Tue Jan 20 10:33:00 2026 -0800 when quickLifting SQL genepreds be a little more forgiving of the alignment no RM diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index 8e585734aa4..0efe64bf5c4 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -6296,38 +6296,40 @@ liftDb = CUSTOM_TRASH; table = trackDbSetting(tg->tdb, "dbTableName"); } else table = tg->table; struct hash *chainHash = newHash(8); struct sqlConnection *conn = hAllocConn(liftDb); char *quickLiftFile = cloneString(trackDbSetting(tg->tdb, "quickLiftUrl")); // using this loader on genePred tables with less than 15 fields may be a problem. extern struct genePred *genePredExtLoad15(char **row); struct genePred *gpList = (struct genePred *)quickLiftSql(conn, quickLiftFile, table, chromName, winStart, winEnd, NULL, NULL, (ItemLoader2)genePredExtLoad15, 0, chainHash); hFreeConn(&conn); - calcLiftOverGenePreds( gpList, chainHash, 0.0, 1.0, TRUE, NULL, NULL, TRUE, FALSE); + calcLiftOverGenePreds( gpList, chainHash, 0.0, 0.0, TRUE, NULL, NULL, TRUE, FALSE); struct genePred *gp = gpList; struct linkedFeatures *lfList = NULL; for(;gp; gp = gp->next) { if (gp->chrom == NULL) // if the lift failed, ignore this one continue; + if (positiveRangeIntersection(winStart, winEnd, gp->txStart, gp->txEnd) == 0) + continue; // we need to reverse the order of the exon frames if the quickLift changed the strand if (quickLiftFile && (gp->strand[0] != gp->origStrand) && (gp->exonCount > 1)) { int *reorderFrames; AllocArray(reorderFrames, gp->exonCount); int ii; for(ii=0; ii < gp->exonCount; ii++) reorderFrames[ii] = gp->exonFrames[(gp->exonCount - 1) - ii]; gp->exonFrames = reorderFrames; } slAddHead(&lfList, linkedFeaturesFromGenePred(tg, gp, TRUE)); } slReverse(&lfList);