80daf93864f5609f6b7695766a78edd90cac0c1d braney Fri Jul 31 12:29:05 2026 -0700 quickLift: accept broadPeak tracks, and make lifted peak details right. refs #37970 Add broadPeak to the types validateOneTdb will lift; hgTracks already knew how to load one. Make hgc's encodePeak handler read the table out of the source assembly and lift the items, instead of looking in the destination assembly where the table does not exist and coming up empty. Lift peaks with a new quickLiftPeaks() rather than casting them to bed and calling quickLiftBeds(), whose thickStart and thickEnd assignments land on signalValue and pValue in struct encodePeak. diff --git src/hg/hgTracks/encode.c src/hg/hgTracks/encode.c index 74b869304d9..a35c45573f4 100644 --- src/hg/hgTracks/encode.c +++ src/hg/hgTracks/encode.c @@ -288,31 +288,31 @@ case broadPeak: loader = (ItemLoader2)broadPeakLoad; break; case gappedPeak: loader = (ItemLoader2)gappedPeakLoad; break; case encodePeak: loader = (ItemLoader2)encodePeakLoad; break; default: errAbort("bad value for peak type %d\n", pt); break; } struct encodePeak *peakList = (struct encodePeak *)quickLiftSql(conn, quickLiftFile, table, chromName, winStart, winEnd, NULL, NULL, (ItemLoader2)loader, 0, chainHash); - struct encodePeak *liftedPeaks = (struct encodePeak *)quickLiftBeds((struct bed *)peakList, chainHash, FALSE); + struct encodePeak *liftedPeaks = quickLiftPeaks(peakList, chainHash); for(; liftedPeaks; liftedPeaks = liftedPeaks->next) { struct linkedFeatures *lf = lfFromEncodePeak((struct slList *)liftedPeaks, tg->tdb, scoreMin, scoreMax); if (lf) slAddHead(&lfList, lf); } } hFreeConn(&conn); slReverse(&lfList); slSort(&lfList, linkedFeaturesCmp); tg->items = lfList; }