Skip to content

Commit a9998f9

Browse files
authored
Merge pull request #80 from rubisco-sfa/moar-ref
FIX: bugs related to REF executions
2 parents c305d4c + b0ce7a0 commit a9998f9

File tree

2 files changed

+33
-15
lines changed

2 files changed

+33
-15
lines changed

ilamb3/analysis/relationship.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -206,12 +206,12 @@ def to_dataset(self) -> xr.Dataset:
206206
"""
207207
ds = xr.Dataset(
208208
data_vars={
209-
f"distribution_{self.ind_var}": (
209+
f"distribution-{self.ind_var}": (
210210
[self.dep_var, self.ind_var],
211211
self._dist2d,
212212
),
213-
f"response_{self.ind_var}": ([self.ind_var], self._response_mean),
214-
f"response_{self.ind_var}_variability": (
213+
f"response-{self.ind_var}": ([self.ind_var], self._response_mean),
214+
f"response-{self.ind_var}-variability": (
215215
[self.ind_var],
216216
self._response_std,
217217
),
@@ -227,8 +227,8 @@ def to_dataset(self) -> xr.Dataset:
227227
),
228228
},
229229
)
230-
ds[f"response_{self.ind_var}"].attrs = {
231-
"ancillary_variables": f"response_{self.ind_var}_variability"
230+
ds[f"response-{self.ind_var}"].attrs = {
231+
"ancillary_variables": f"response-{self.ind_var}-variability"
232232
}
233233
ds[self.ind_var].attrs = {"standard_name": self.ind_label}
234234
ds[self.dep_var].attrs = {"standard_name": self.dep_label}
@@ -393,16 +393,16 @@ def plots(
393393
# Build up a dataframe of matplotlib axes, first the distribution plots
394394
axs = [
395395
{
396-
"name": f"distribution_{self.ind_variable}",
396+
"name": f"distribution-{self.ind_variable}",
397397
"title": f"{self.dep_variable} vs. {self.ind_variable}",
398398
"region": region,
399399
"source": source,
400400
"axis": (
401401
plt.plot_distribution(
402-
ds[f"distribution_{self.ind_variable}_{region}"],
402+
ds[f"distribution-{self.ind_variable}_{region}"],
403403
title=f"{source} {self.dep_variable} vs. {self.ind_variable}",
404404
)
405-
if f"distribution_{self.ind_variable}_{region}" in ds
405+
if f"distribution-{self.ind_variable}_{region}" in ds
406406
else pd.NA
407407
),
408408
}
@@ -412,20 +412,20 @@ def plots(
412412
com.pop("Reference")
413413
axs += [
414414
{
415-
"name": f"response_{self.ind_variable}",
415+
"name": f"response-{self.ind_variable}",
416416
"title": f"{self.dep_variable} vs. {self.ind_variable}",
417417
"region": region,
418418
"source": source,
419419
"axis": (
420420
plt.plot_response(
421-
ref[f"response_{self.ind_variable}_{region}"],
422-
ref[f"response_{self.ind_variable}_variability_{region}"],
423-
ds[f"response_{self.ind_variable}_{region}"],
424-
ds[f"response_{self.ind_variable}_variability_{region}"],
421+
ref[f"response-{self.ind_variable}_{region}"],
422+
ref[f"response-{self.ind_variable}-variability_{region}"],
423+
ds[f"response-{self.ind_variable}_{region}"],
424+
ds[f"response-{self.ind_variable}-variability_{region}"],
425425
source,
426426
title=f"{source} {self.dep_variable} vs. {self.ind_variable}",
427427
)
428-
if f"response_{self.ind_variable}_{region}" in ds
428+
if f"response-{self.ind_variable}_{region}" in ds
429429
else pd.NA
430430
),
431431
}

ilamb3/plot.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,22 @@ def plot_map(da: xr.DataArray, **kwargs):
174174
return ax
175175

176176

177+
def _pick_convert_calendar_align_on_option(da: xr.DataArray) -> None | str:
178+
"""
179+
Resturn the best option based on guidance in the xarray documentation.
180+
"""
181+
t = da[dset.get_dim_name(da, "time")]
182+
if (hasattr(t, "dt") and t.dt.calendar == "360_day") or (
183+
"calendar" in t.attrs and t.attrs["calendar"] == "360_day"
184+
):
185+
dt = dset.get_mean_time_frequency(da)
186+
if dt < 1:
187+
return "year"
188+
else:
189+
return "date"
190+
return None
191+
192+
177193
def plot_curve(dsd: dict[str, xr.Dataset], varname: str, **kwargs):
178194
# Parse some options
179195
vmin = kwargs.pop("vmin") if "vmin" in kwargs else None
@@ -195,7 +211,9 @@ def plot_curve(dsd: dict[str, xr.Dataset], varname: str, **kwargs):
195211
# Convert to single calendar for plotting
196212
dad = {
197213
source: (
198-
ds[varname].convert_calendar("noleap")
214+
ds[varname].convert_calendar(
215+
"noleap", align_on=_pick_convert_calendar_align_on_option(ds[varname])
216+
)
199217
if "time" in ds[varname].dims
200218
else ds[varname]
201219
)

0 commit comments

Comments
 (0)