From fc10cf422cf0a5602b591079af5729de4d01d449 Mon Sep 17 00:00:00 2001 From: Robert Jackson Date: Thu, 13 Apr 2023 13:24:04 -0500 Subject: [PATCH 1/2] FIX: GateMapper will now map source field to destination radar even if field does not exist in destination. --- pyart/map/gate_mapper.py | 12 +++++++++--- tests/map/test_gatemapper.py | 16 ++++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/pyart/map/gate_mapper.py b/pyart/map/gate_mapper.py index 7467a6865b..f1bfb6c9bc 100644 --- a/pyart/map/gate_mapper.py +++ b/pyart/map/gate_mapper.py @@ -222,9 +222,15 @@ def mapped_radar(self, field_list): src_fields = {} for field in field_list: - mapped_radar.fields[field]["data"] = np.ma.masked_where( - True, mapped_radar.fields[field]["data"] - ) + if field in list(mapped_radar.fields.keys()): + mapped_radar.fields[field]["data"] = np.ma.masked_where( + True, mapped_radar.fields[field]["data"] + ) + else: + mapped_radar.fields[field] = deepcopy(self.src_radar.fields[field]) + mapped_radar.fields[field]["data"] = np.ma.masked_where( + True, np.ma.zeros((mapped_radar.nrays, mapped_radar.ngates)) + ) src_fields[field] = np.ma.masked_where( self.gatefilter_src.gate_excluded, self.src_radar.fields[field]["data"] ) diff --git a/tests/map/test_gatemapper.py b/tests/map/test_gatemapper.py index 719fbb5487..2bf54492e8 100644 --- a/tests/map/test_gatemapper.py +++ b/tests/map/test_gatemapper.py @@ -11,18 +11,26 @@ def test_gatemapper(): new_radar = deepcopy(old_radar) new_radar.latitude["data"] = old_radar.latitude["data"] + 0.001 new_radar.longitude["data"] = old_radar.longitude["data"] + 0.001 - gate_mapper = pyart.map.GateMapper(new_radar, old_radar) + old_radar.fields["reflectivity_copy"] = old_radar.fields["reflectivity"] + gate_mapper = pyart.map.GateMapper(old_radar, new_radar) mapped_radar = gate_mapper.mapped_radar(["reflectivity"]) # Test point outside of 1 min tolerance assert gate_mapper[20, 20] == (None, None) - assert gate_mapper[4, 4] == (26, 11) + assert gate_mapper[40, 40] == (40, 33) assert ( - mapped_radar.fields["reflectivity"]["data"][26, 11] - == old_radar.fields["reflectivity"]["data"][4, 4] + mapped_radar.fields["reflectivity"]["data"][40, 33] + == old_radar.fields["reflectivity"]["data"][40, 40] ) + # Check case where source radar has field destination doesn't + mapped_radar = gate_mapper.mapped_radar(["reflectivity_copy"]) + assert ( + mapped_radar.fields["reflectivity_copy"]["data"][40, 33] + == old_radar.fields["reflectivity_copy"]["data"][40, 40] + ) + def test_gatemapper_gatefilter(): # Make fake radar with target old_radar = pyart.testing.make_target_radar() From 2b96a66e1b373bb47f2c56b47003452648e43236 Mon Sep 17 00:00:00 2001 From: Robert Jackson Date: Thu, 13 Apr 2023 13:31:34 -0500 Subject: [PATCH 2/2] FIX: Whitespace --- tests/map/test_gatemapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/map/test_gatemapper.py b/tests/map/test_gatemapper.py index 2bf54492e8..d7ad0a7280 100644 --- a/tests/map/test_gatemapper.py +++ b/tests/map/test_gatemapper.py @@ -30,7 +30,7 @@ def test_gatemapper(): == old_radar.fields["reflectivity_copy"]["data"][40, 40] ) - + def test_gatemapper_gatefilter(): # Make fake radar with target old_radar = pyart.testing.make_target_radar()