0f31a575a4aab5a27760676b40c71592217a61c8 braney Sun Nov 3 14:11:10 2019 -0800 if people ask for filters on fields that don't exist, special case a few field names that exist at standard locations diff --git src/hg/hgTracks/bigBedTrack.c src/hg/hgTracks/bigBedTrack.c index 1b45d8a..c380798 100644 --- src/hg/hgTracks/bigBedTrack.c +++ src/hg/hgTracks/bigBedTrack.c @@ -16,35 +16,51 @@ #include "localmem.h" #include "wigCommon.h" #include "bbiFile.h" #include "obscure.h" #include "bigWig.h" #include "bigBed.h" #include "bigWarn.h" #include "errCatch.h" #include "trackHub.h" #include "net.h" #include "bigPsl.h" #include "bigBedFilter.h" #include "bigBedLabel.h" #include "variation.h" +static int fixedField(char *field) +// sometimes we get bigBeds with the wrong field names. Try to guess what the user means +{ +if (sameString("score", field)) + return 4; +if (sameString("signalValue", field)) + return 6; +if (sameString("pValue", field)) + return 7; +if (sameString("qValue", field)) + return 8; +return -1; +} + static unsigned getFieldNum(struct bbiFile *bbi, char *field) // get field number for field name in bigBed. errAbort if field not found. { int fieldNum = bbFieldIndex(bbi, field); if (fieldNum < 0) + fieldNum = fixedField(field); +if (fieldNum < 0) errAbort("error building filter with field %s. Field not found.", field); return fieldNum; } struct bigBedFilter *bigBedMakeNumberFilter(struct cart *cart, struct bbiFile *bbi, struct trackDb *tdb, char *filter, char *defaultLimits, char *field) /* Make a filter on this column if the trackDb or cart wants us to. */ { struct bigBedFilter *ret = NULL; char *setting = trackDbSettingClosestToHome(tdb, filter); int fieldNum = getFieldNum(bbi, field); if (setting) { struct asObject *as = bigBedAsOrDefault(bbi); // All this isFloat conditional code is here because the cart