Skip to content

Commit 54bb592

Browse files
Change leadtime from datetime to timedelta (#1172)
* change leadtime to timedelta * adapt impactforecast docstrings and tests * Remove stray comment --------- Co-authored-by: Lukas Riedel <[email protected]>
1 parent 35f9517 commit 54bb592

File tree

5 files changed

+14
-16
lines changed

5 files changed

+14
-16
lines changed

climada/engine/impact_forecast.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ def __init__(
4545
Parameters
4646
----------
4747
lead_time : np.ndarray, optional
48-
The lead time associated with each event entry
48+
The lead time associated with each event entry, given as timedelta64 type
4949
member : np.ndarray, optional
50-
The ensemble member associated with each event entry
50+
The ensemble member associated with each event entry, given as integers
5151
impact_kwargs
5252
Keyword-arguments passed to ~:py:class`climada.engine.impact.Impact`.
5353
"""
@@ -65,9 +65,9 @@ def from_impact(
6565
impact : climada.engine.impact.Impact
6666
The impact object whose data to use in the forecast object
6767
lead_time : np.ndarray, optional
68-
The lead time associated with each event entry
68+
The lead time associated with each event entry, given as timedelta64 type
6969
member : np.ndarray, optional
70-
The ensemble member associated with each event entry
70+
The ensemble member associated with each event entry, given as integers
7171
"""
7272
with log_level("WARNING", "climada.engine.impact"):
7373
return cls(

climada/engine/test/test_impact_forecast.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def assert_impact_kwargs(impact: Impact, **kwargs):
5252

5353

5454
class TestImpactForecastInit:
55-
lead_time = pd.date_range("2000-01-01", "2000-01-02", periods=6).to_numpy()
55+
lead_time = pd.timedelta_range(start="1 day", periods=6).to_numpy()
5656
member = np.arange(6)
5757

5858
def test_impact_forecast_init(self, impact_kwargs):

climada/hazard/test/test_forecast.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
from climada.hazard.forecast import HazardForecast
3030
from climada.hazard.test.test_base import hazard_kwargs
3131

32-
# --- Examples for fixtures and test organization --- #
33-
3432

3533
@pytest.fixture
3634
def haz_kwargs():

climada/util/forecast.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ class Forecast:
2828
Attributes
2929
----------
3030
lead_time : np.ndarray
31-
Array of forecast lead times, given as datetime64 objects.
32-
Represents the time points for which forecasts are made.
31+
Array of forecast lead times, given as timedelta64 objects.
32+
Represents the lead times of the forecasts.
3333
member : np.ndarray
3434
Array of ensemble member identifiers, given as integers.
3535
Represents different forecast ensemble members.

climada/util/test/test_forecast.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import numpy as np
2323
import numpy.testing as npt
24+
import pandas as pd
2425

2526
from climada.util.forecast import Forecast
2627

@@ -34,19 +35,18 @@ def test_forecast_init():
3435
forecast = Forecast(member=np.array([1, 2]))
3536
npt.assert_array_equal(forecast.member, np.array([1, 2]), strict=True)
3637

37-
forecast = Forecast(lead_time=np.array([1, 2]))
38-
npt.assert_array_equal(forecast.lead_time, np.array([1, 2]), strict=True)
38+
forecast = Forecast(lead_time=np.array([6, 12], dtype="timedelta64[h]"))
39+
npt.assert_array_equal(
40+
forecast.lead_time, np.array([6, 12], dtype="timedelta64[h]"), strict=True
41+
)
3942

4043
forecast = Forecast(lead_time=np.array([1, 2]), member=[3, 4])
4144
npt.assert_array_equal(forecast.lead_time, np.array([1, 2]), strict=True)
4245
npt.assert_array_equal(forecast.member, np.array([3, 4]), strict=True)
4346
assert isinstance(forecast.member, np.ndarray)
4447

4548
# Test with datetime64 including seconds
46-
lead_times_seconds = np.array(
47-
["2024-01-01T00:00:00", "2024-01-01T00:01:00", "2024-01-01"],
48-
dtype="datetime64[s]",
49-
)
49+
lead_times_seconds = pd.timedelta_range(start="1 day", periods=4).to_numpy()
5050
forecast = Forecast(lead_time=lead_times_seconds, member=[1, 2, 3])
5151
npt.assert_array_equal(forecast.lead_time, lead_times_seconds, strict=True)
52-
assert forecast.lead_time.dtype == np.dtype("datetime64[s]")
52+
assert forecast.lead_time.dtype == np.dtype("timedelta64[ns]")

0 commit comments

Comments
 (0)