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. */