in src/filters.ts [44:72]
function filter_range(data: FilterRange): (dp: Datapoint) => boolean {
if (data.type == ParamType.CATEGORICAL) {
console.assert(typeof data.min == typeof data.max, data.min, data.max);
return function(dp: Datapoint) {
var value = dp[data.col];
if (value === undefined) {
return false;
}
value = convert_to_categorical_input(value);
return data.min <= value && value <= data.max;
}
}
return function(dp: Datapoint) {
var value = dp[data.col];
if (value === undefined) {
return false;
}
value = parseFloat(value);
if (data.min <= value && value <= data.max) {
// Easy, in range
return true;
} else if (data.include_infnans) {
// Not in `[min, max]`, but we also include inf and nans
return Number.isNaN(value) || !Number.isFinite(value);
} else {
return false;
}
}
};