b62b7ebcba1539338903f821930af33f823a1513
braney
  Wed Jan 21 13:18:29 2026 -0800
enable bigBeds with 3 or 4 fields to still use bigBed filters refs #28501

diff --git src/hg/lib/trackDbCustom.c src/hg/lib/trackDbCustom.c
index 605a027e680..22f7b9ef258 100644
--- src/hg/lib/trackDbCustom.c
+++ src/hg/lib/trackDbCustom.c
@@ -749,30 +749,37 @@
 // point are assumed to be flavors of bigBed.
 else if (startsWith("bed ", type) || startsWith("big", type) || startsWith("bedDetail", type))
     {
     if (trackDbSetting(tdb, "bedFilter") != NULL)
         cType = cfgBedFilt;
     else if (!startsWith("big", type) || startsWith("bigBed", type))
         {
         char *words[3];
         int wordCount = chopLine(cloneString( type), words);
         if (sameString("bigBed", type) && (wordCount == 1)) // no following words
             {
             cType = cfgBedScore;
 	    if (!bedHasFilters(tdb))
 		cType = cfgNone;
             }
+        // bigBeds with 3 or 4 fields specified in trackDb will get the filter UI if they have bigBed filters 
+        else if ((wordCount > 1) && ((atoi(words[1]) == 3) || atoi(words[1]) == 4))
+            {
+            cType = cfgBedScore;
+            if (!bedHasFilters(tdb))
+                cType = cfgNone;
+            }
         else if ((  ((wordCount > 1) && (atoi(words[1]) >= 5))
             || trackDbSetting(tdb, "scoreMin") != NULL)
         &&  // Historically needed 'bed n .' but encode didn't follow bed n .
             (  (wordCount >= 3)
             || (!tdbIsTrackUiTopLevel(tdb) && trackDbSettingClosestToHome(tdb, "wgEncode"))))
             {
             cType = cfgBedScore;
 
 	    if (!bedScoreHasCfgUi(tdb))
 		cType = cfgNone;
 
 	    // FIXME: UGLY SPECIAL CASE should be handled in trackDb!
 	    else if (startsWith("encodeGencodeIntron", tdb->track))
 		cType = cfgNone;
 	    }