Skip to content

Commit

Permalink
FIX: Fixed some tests and to_xarray() function
Browse files Browse the repository at this point in the history
  • Loading branch information
syedhamidali committed Aug 30, 2024
1 parent 712130f commit ebcf031
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 26 deletions.
49 changes: 25 additions & 24 deletions pyart/core/grid.py
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ def to_xarray(self):
def _process_radar_name(radar_name):
"""Process radar_name to handle different formats."""
if radar_name.dtype.kind in {"S", "U"} and radar_name.ndim > 1:
return np.array([b"".join(radar_name.flatten())])
return radar_name.flatten()
return radar_name

lon, lat = self.get_point_longitude_latitude()
Expand Down Expand Up @@ -388,10 +388,22 @@ def _process_radar_name(radar_name):
attrs=projection,
)

# Handle origin and radar attributes with appropriate dimensions
for attr_name in [
"origin_latitude",
"origin_longitude",
"origin_altitude",
]:
if hasattr(self, attr_name):
attr_data = getattr(self, attr_name)
if attr_data is not None:
attr_value = np.ma.expand_dims(attr_data["data"][0], 0)
ds.coords[attr_name] = xarray.DataArray(
attr_value, dims=("time",), attrs=get_metadata(attr_name)
)

# Radar-specific attributes that should have the nradar dimension
for attr_name in [
"radar_altitude",
"radar_latitude",
"radar_longitude",
Expand All @@ -400,41 +412,30 @@ def _process_radar_name(radar_name):
if hasattr(self, attr_name):
attr_data = getattr(self, attr_name)
if attr_data is not None:
dims = ("time",) if "origin_" in attr_name else ("nradar",)
attr_value = (
np.ma.expand_dims(attr_data["data"][0], 0)
if "radar_time" not in attr_name
else [
np.array(
num2date(
attr_data["data"][0], units=attr_data["units"]
),
dtype="datetime64[ns]",
)
]
)
ds.coords[attr_name] = xarray.DataArray(
attr_value, dims=dims, attrs=get_metadata(attr_name)
attr_data["data"],
dims=("nradar",),
attrs=get_metadata(attr_name),
)

if "radar_time" in ds.variables:
ds.radar_time.attrs.pop("calendar")

# Handle radar_name and ensure it has the correct dimension
if self.radar_name is not None:
radar_name = _process_radar_name(self.radar_name["data"])
ds.coords["radar_name"] = xarray.DataArray(
radar_name, dims=("nradar"), attrs=get_metadata("radar_name")
radar_name, dims=("nradar",), attrs=get_metadata("radar_name")
)
else:
radar_name = np.array(
["ExampleRadar"], dtype="S"
) # or use 'U' for unicode strings
radar_name = np.array(["ExampleRadar"], dtype="U")
ds.coords["radar_name"] = xarray.DataArray(
radar_name, dims=("nradar",), attrs=get_metadata("radar_name")
)

# Add radar_name to attributes, defaulting to 'ExampleRadar' if radar_name doesn't exist or is empty
ds.attrs["radar_name"] = (
radar_name.item() if radar_name.size > 0 else "ExampleRadar"
)
ds.attrs["nradar"] = self.nradar
# Add radar_name to attributes
ds.attrs["radar_name"] = radar_name if radar_name.size > 0 else "ExampleRadar"
ds.attrs["nradar"] = radar_name.size
ds.attrs.update(self.metadata)
for key in ds.attrs:
try:
Expand Down
2 changes: 1 addition & 1 deletion tests/core/test_grid.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ def test_grid_to_xarray():

# Check radar-specific attributes
assert ds.attrs["nradar"] == 1
assert ds.attrs["radar_name"] == "ExampleRadar"
assert ds.attrs["radar_name"][0] == "ExampleRadar"


def _check_dicts_similar(dic1, dic2):
Expand Down
4 changes: 3 additions & 1 deletion tests/retrieve/test_qvp.py
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,9 @@ def test_find_nearest_gate(test_radar):
assert ind_ray == 141.0
assert ind_rng == 145.0
assert azi == 141.0
assert rng == 14514.514
assert (
abs(rng - 14514.514) < 1e-3
) # Allow for a small tolerance in floating-point comparison


def test_find_neighbour_gates(test_radar):
Expand Down

0 comments on commit ebcf031

Please sign in to comment.