da43847aab52991e91bfec700b16038710710038
max
  Sat Sep 26 21:56:05 2026 -0700
VCF tracks: new trackDb setting excludeFilterValues, a comma-separated list of FILTER values that are hidden by default; they show up pre-checked in the existing Exclude variants with these FILTER values list, refs #38424

diff --git src/hg/hgTracks/vcfTrack.c src/hg/hgTracks/vcfTrack.c
index c176761b7b8..4aa9645eeda 100644
--- src/hg/hgTracks/vcfTrack.c
+++ src/hg/hgTracks/vcfTrack.c
@@ -45,40 +45,48 @@
     }
 return FALSE;
 }
 
 static boolean minQualFail(struct vcfRecord *record, double minQual)
 /* Return TRUE if record's QUAL column value is non-numeric or is less than minQual. */
 {
 if (isEmpty(record->qual) ||
     (record->qual[0] != '-' && !isdigit(record->qual[0])) ||
     atof(record->qual) < minQual)
     return TRUE;
 return FALSE;
 }
 
 static boolean getFilterValues(struct trackDb *tdb, struct slName **retValues)
-/* Return TRUE and set retValues if cart contains FILTER column values to exclude */
+/* Return TRUE and set retValues if cart, or else trackDb, contains FILTER column values to
+ * exclude */
 {
 if (cartListVarExistsAnyLevel(cart, tdb, FALSE, VCF_EXCLUDE_FILTER_VAR))
     {
     struct slName *selectedValues = cartOptionalSlNameListClosestToHome(cart, tdb, FALSE,
 									VCF_EXCLUDE_FILTER_VAR);
     if (retValues != NULL)
 	*retValues = selectedValues;
     return TRUE;
     }
+char *tdbDefault = trackDbSettingClosestToHome(tdb, VCF_EXCLUDE_FILTER_VAR);
+if (isNotEmpty(tdbDefault))
+    {
+    if (retValues != NULL)
+	*retValues = slNameListFromComma(tdbDefault);
+    return TRUE;
+    }
 return FALSE;
 }
 
 static boolean filterColumnFail(struct vcfRecord *record, struct slName *filterValues)
 /* Return TRUE if record's FILTER column value(s) matches one of filterValues (from cart). */
 {
 int i;
 for (i = 0;  i < record->filterCount;  i++)
     if (slNameInList(filterValues, record->filters[i]))
 	return TRUE;
 return FALSE;
 }
 
 static boolean getMinFreq(struct trackDb *tdb, double *retMinFreq)
 /* Return TRUE and set retMinFreq if cart contains nonzero minimum minor allele frequency. */