diff --git a/pyart/filters/gatefilter.py b/pyart/filters/gatefilter.py index 4d6218f837..975001cc87 100644 --- a/pyart/filters/gatefilter.py +++ b/pyart/filters/gatefilter.py @@ -637,6 +637,14 @@ def exclude_above( marked = self._get_fdata(field) > value return self._merge(marked, op, exclude_masked) + def exclude_above_toa(self, value, exclude_masked=True, op="or", inclusive=False): + """Exclude gates above a given toa value.""" + if inclusive: + marked = self._radar.gate_altitude["data"] >= value + else: + marked = self._radar.gate_altitude["data"] > value + return self._merge(marked, op, exclude_masked) + def exclude_inside( self, field, v1, v2, exclude_masked=True, op="or", inclusive=True ): diff --git a/tests/filters/test_gatefilter.py b/tests/filters/test_gatefilter.py index d12561c347..f8621d492a 100644 --- a/tests/filters/test_gatefilter.py +++ b/tests/filters/test_gatefilter.py @@ -103,6 +103,17 @@ def test_gatefilter_exclude_above(): assert gfilter.gate_excluded[0, -1] is np.True_ +def test_gatefilter_exclude_above_toa(): + gfilter = pyart.correct.GateFilter(radar) + gfilter.exclude_above_toa(211.0) + assert gfilter.gate_excluded[0, 0] is np.False_ + assert gfilter.gate_excluded[0, -1] is np.True_ + + assert gfilter.gate_excluded[0, -2] is np.False_ + gfilter.exclude_above_toa(211.0, inclusive=True) + assert gfilter.gate_excluded[0, -2] is np.True_ + + def test_gatefilter_exclude_inside(): gfilter = pyart.correct.GateFilter(radar) gfilter.exclude_inside("test_field", 2, 5, inclusive=False)