Skip to content

Commit 0d6335b

Browse files
committed
fixses some linter issues
1 parent 4ea685d commit 0d6335b

File tree

4 files changed

+146
-136
lines changed

4 files changed

+146
-136
lines changed

climada/trajectories/risk_trajectory.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ def risk_periods(self) -> list:
156156

157157
return self._risk_periods_calculators
158158

159-
def _calc_risk_periods(self, snapshots):
159+
def _calc_risk_periods(self, snapshots: list[Snapshot]) -> list[CalcRiskPeriod]:
160160
def pairwise(container: list):
161161
"""
162162
Generate pairs of successive elements from an iterable.
@@ -280,8 +280,10 @@ def risk_components_metrics(self, npv=True):
280280
metric_meth="calc_risk_components_metric",
281281
)
282282

283-
def all_risk_metrics(self, return_periods=[50, 100, 500], npv=True):
284-
if not self._metrics_up_to_date:
283+
def all_risk_metrics(
284+
self, return_periods=[50, 100, 500], npv=True
285+
) -> pd.DataFrame | pd.Series:
286+
if not self._metrics_up_to_date or self._all_risk_metrics is None:
285287
aai = self.aai_metrics()
286288
rp = self.return_periods_metrics(return_periods)
287289
aai_per_group = self.aai_per_group_metrics()
@@ -304,7 +306,9 @@ def _get_risk_periods(
304306
]
305307

306308
@classmethod
307-
def _per_period_risk(cls, df: pd.DataFrame, time_unit="year", colname="risk"):
309+
def _per_period_risk(
310+
cls, df: pd.DataFrame, time_unit="year", colname="risk"
311+
) -> pd.DataFrame | pd.Series:
308312
def identify_continuous_periods(group, time_unit):
309313
# Calculate the difference between consecutive dates
310314
if time_unit == "year":
@@ -357,11 +361,11 @@ def per_date_risk_metrics(self) -> pd.DataFrame | pd.Series:
357361
return self._prepare_risk_metrics(total=False, npv=True)
358362

359363
@property
360-
def total_risk_metrics(self):
364+
def total_risk_metrics(self) -> pd.DataFrame | pd.Series:
361365
"""Returns a tidy dataframe of the risk metrics with the total for each different period."""
362366
return self._prepare_risk_metrics(total=True, npv=True)
363367

364-
def _prepare_risk_metrics(self, total=False, npv=True):
368+
def _prepare_risk_metrics(self, total=False, npv=True) -> pd.DataFrame | pd.Series:
365369
df = self.all_risk_metrics(npv=npv)
366370
if total:
367371
return self._per_period_risk(df)

climada/trajectories/riskperiod.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import pandas as pd
2929
from scipy.sparse import lil_matrix
3030

31+
from climada.engine.impact import Impact
3132
from climada.engine.impact_calc import ImpactCalc
3233
from climada.entity.measures.base import Measure
3334
from climada.trajectories.snapshot import Snapshot
@@ -65,6 +66,8 @@ def interpolate(self, imp_E0, imp_E1, time_points: int):
6566
raise ValueError(
6667
"Interpolation between impact matrices of different shapes"
6768
)
69+
else:
70+
raise e
6871

6972
@staticmethod
7073
def interpolate_imp_mat(imp0, imp1, time_points):
@@ -114,8 +117,8 @@ class ImpactComputationStrategy(ABC):
114117
@abstractmethod
115118
def compute_impacts(
116119
self,
117-
snapshot0,
118-
snapshot1,
120+
snapshot0: Snapshot,
121+
snapshot1: Snapshot,
119122
risk_transf_attach: float | None,
120123
risk_transf_cover: float | None,
121124
calc_residual: bool,
@@ -128,8 +131,8 @@ class ImpactCalcComputation(ImpactComputationStrategy):
128131

129132
def compute_impacts(
130133
self,
131-
snapshot0,
132-
snapshot1,
134+
snapshot0: Snapshot,
135+
snapshot1: Snapshot,
133136
risk_transf_attach: float | None,
134137
risk_transf_cover: float | None,
135138
calc_residual: bool = False,
@@ -140,7 +143,9 @@ def compute_impacts(
140143
)
141144
return impacts
142145

143-
def _calculate_impacts_for_snapshots(self, snapshot0, snapshot1):
146+
def _calculate_impacts_for_snapshots(
147+
self, snapshot0: Snapshot, snapshot1: Snapshot
148+
):
144149
"""Calculate impacts for the given snapshots and impact function set."""
145150
imp_E0H0 = ImpactCalc(
146151
snapshot0.exposure, snapshot0.impfset, snapshot0.hazard
@@ -158,7 +163,7 @@ def _calculate_impacts_for_snapshots(self, snapshot0, snapshot1):
158163

159164
def _apply_risk_transfer(
160165
self,
161-
impacts,
166+
impacts: tuple[Impact, Impact, Impact, Impact],
162167
risk_transf_attach: float | None,
163168
risk_transf_cover: float | None,
164169
calc_residual: bool,
@@ -249,8 +254,8 @@ class CalcRiskPeriod:
249254

250255
def __init__(
251256
self,
252-
snapshot0,
253-
snapshot1,
257+
snapshot0: Snapshot,
258+
snapshot1: Snapshot,
254259
interval_freq: str | None = "YS",
255260
time_points: int | None = None,
256261
interpolation_strategy: InterpolationStrategy | None = None,
@@ -266,11 +271,11 @@ def __init__(
266271
snapshot0.date,
267272
snapshot1.date,
268273
periods=time_points,
269-
freq=interval_freq,
274+
freq=interval_freq, # type: ignore
270275
name="date",
271276
)
272277
self.time_points = len(self.date_idx)
273-
self.interval_freq = self.date_idx.inferred_freq
278+
self.interval_freq = pd.infer_freq(self.date_idx)
274279
self.measure = measure
275280
self._prop_H1 = np.linspace(0, 1, num=self.time_points)
276281
self._prop_H0 = 1 - self._prop_H1
@@ -485,7 +490,9 @@ def calc_aai_metric(self):
485490

486491
def calc_aai_per_group_metric(self):
487492
aai_per_group_df = []
488-
for group in np.unique(np.concatenate([self._group_id_E0, self._group_id_E1])):
493+
for group in np.unique(
494+
np.concatenate(np.array([self._group_id_E0, self._group_id_E1]), axis=0)
495+
):
489496
group_idx_E0 = np.where(self._group_id_E0 != group)
490497
group_idx_E1 = np.where(self._group_id_E1 != group)
491498
per_date_aai_H0, per_date_aai_H1 = (

climada/trajectories/snapshot.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323
import copy
2424
import datetime
25-
import itertools
2625
import logging
2726

2827
from climada.entity.exposures import Exposures

climada/trajectories/timeseries.py

Lines changed: 118 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -18,121 +18,121 @@
1818
1919
"""
2020

21-
import copy
22-
from datetime import datetime
23-
24-
import numpy as np
25-
26-
from climada.hazard.base import Hazard
27-
28-
29-
def get_dates(haz: Hazard):
30-
"""
31-
Convert ordinal dates from a Hazard object to datetime objects.
32-
33-
Parameters
34-
----------
35-
haz : Hazard
36-
A Hazard instance with ordinal date values.
37-
38-
Returns
39-
-------
40-
list of datetime
41-
List of datetime objects corresponding to the ordinal dates in `haz`.
42-
43-
Example
44-
-------
45-
>>> haz = Hazard(...)
46-
>>> get_dates(haz)
47-
[datetime(2020, 1, 1), datetime(2020, 1, 2), ...]
48-
"""
49-
return [datetime.fromordinal(date) for date in haz.date]
50-
51-
52-
def get_years(haz: Hazard):
53-
"""
54-
Extract unique years from ordinal dates in a Hazard object.
55-
56-
Parameters
57-
----------
58-
haz : Hazard
59-
A Hazard instance containing ordinal date values.
60-
61-
Returns
62-
-------
63-
np.ndarray
64-
Array of unique years as integers, derived from the ordinal dates in `haz`.
65-
66-
Example
67-
-------
68-
>>> haz = Hazard(...)
69-
>>> get_years(haz)
70-
array([2020, 2021, ...])
71-
"""
72-
return np.unique(np.array([datetime.fromordinal(date).year for date in haz.date]))
73-
74-
75-
def grow_exp(exp, exp_growth_rate, elapsed):
76-
"""
77-
Apply exponential growth to the exposure values over a specified period.
78-
79-
Parameters
80-
----------
81-
exp : Exposures
82-
The initial Exposures object with values to be grown.
83-
exp_growth_rate : float
84-
The annual growth rate to apply (in decimal form, e.g., 0.01 for 1%).
85-
elapsed : int
86-
Number of years over which to apply the growth.
87-
88-
Returns
89-
-------
90-
Exposures
91-
A deep copy of the original Exposures object with grown exposure values.
92-
93-
Example
94-
-------
95-
>>> exp = Exposures(...)
96-
>>> grow_exp(exp, 0.01, 5)
97-
Exposures object with values grown by 5%.
98-
"""
99-
exp_grown = copy.deepcopy(exp)
100-
# Exponential growth
101-
exp_growth_rate = 0.01
102-
exp_grown.gdf.value = exp_grown.gdf.value * (1 + exp_growth_rate) ** elapsed
103-
return exp_grown
104-
105-
106-
class TBRTrajectories:
107-
108-
# Compute impacts for trajectories with present exposure and future exposure and interpolate in between
109-
#
110-
111-
@classmethod
112-
def create_hazard_yearly_set(cls, haz: Hazard):
113-
haz_set = {}
114-
years = get_years(haz)
115-
for year in range(years.min(), years.max(), 1):
116-
haz_set[year] = haz.select(
117-
date=[f"{str(year)}-01-01", f"{str(year+1)}-01-01"]
118-
)
119-
120-
return haz_set
121-
122-
@classmethod
123-
def create_exposure_set(cls, snapshot_years, exp1, exp2=None, growth=None):
124-
exp_set = {}
125-
year_0 = snapshot_years.min()
126-
if exp2 is None:
127-
if growth is None:
128-
raise ValueError("Need to specify either final exposure or growth.")
129-
else:
130-
exp_set = {
131-
year: grow_exp(exp1, growth, year - year_0)
132-
for year in snapshot_years
133-
}
134-
else:
135-
exp_set = {
136-
year: np.interp(exp1, exp2, year - year_0) for year in snapshot_years
137-
}
138-
return exp_set
21+
# import copy
22+
# from datetime import datetime
23+
24+
# import numpy as np
25+
26+
# from climada.hazard.base import Hazard
27+
28+
29+
# def get_dates(haz: Hazard):
30+
# """
31+
# Convert ordinal dates from a Hazard object to datetime objects.
32+
33+
# Parameters
34+
# ----------
35+
# haz : Hazard
36+
# A Hazard instance with ordinal date values.
37+
38+
# Returns
39+
# -------
40+
# list of datetime
41+
# List of datetime objects corresponding to the ordinal dates in `haz`.
42+
43+
# Example
44+
# -------
45+
# >>> haz = Hazard(...)
46+
# >>> get_dates(haz)
47+
# [datetime(2020, 1, 1), datetime(2020, 1, 2), ...]
48+
# """
49+
# return [datetime.fromordinal(date) for date in haz.date]
50+
51+
52+
# def get_years(haz: Hazard):
53+
# """
54+
# Extract unique years from ordinal dates in a Hazard object.
55+
56+
# Parameters
57+
# ----------
58+
# haz : Hazard
59+
# A Hazard instance containing ordinal date values.
60+
61+
# Returns
62+
# -------
63+
# np.ndarray
64+
# Array of unique years as integers, derived from the ordinal dates in `haz`.
65+
66+
# Example
67+
# -------
68+
# >>> haz = Hazard(...)
69+
# >>> get_years(haz)
70+
# array([2020, 2021, ...])
71+
# """
72+
# return np.unique(np.array([datetime.fromordinal(date).year for date in haz.date]))
73+
74+
75+
# def grow_exp(exp, exp_growth_rate, elapsed):
76+
# """
77+
# Apply exponential growth to the exposure values over a specified period.
78+
79+
# Parameters
80+
# ----------
81+
# exp : Exposures
82+
# The initial Exposures object with values to be grown.
83+
# exp_growth_rate : float
84+
# The annual growth rate to apply (in decimal form, e.g., 0.01 for 1%).
85+
# elapsed : int
86+
# Number of years over which to apply the growth.
87+
88+
# Returns
89+
# -------
90+
# Exposures
91+
# A deep copy of the original Exposures object with grown exposure values.
92+
93+
# Example
94+
# -------
95+
# >>> exp = Exposures(...)
96+
# >>> grow_exp(exp, 0.01, 5)
97+
# Exposures object with values grown by 5%.
98+
# """
99+
# exp_grown = copy.deepcopy(exp)
100+
# # Exponential growth
101+
# exp_growth_rate = 0.01
102+
# exp_grown.gdf.value = exp_grown.gdf.value * (1 + exp_growth_rate) ** elapsed
103+
# return exp_grown
104+
105+
106+
# class TBRTrajectories:
107+
108+
# # Compute impacts for trajectories with present exposure and future exposure and interpolate in between
109+
# #
110+
111+
# @classmethod
112+
# def create_hazard_yearly_set(cls, haz: Hazard):
113+
# haz_set = {}
114+
# years = get_years(haz)
115+
# for year in range(years.min(), years.max(), 1):
116+
# haz_set[year] = haz.select(
117+
# date=[f"{str(year)}-01-01", f"{str(year+1)}-01-01"]
118+
# )
119+
120+
# return haz_set
121+
122+
# @classmethod
123+
# def create_exposure_set(cls, snapshot_years, exp1, exp2=None, growth=None):
124+
# exp_set = {}
125+
# year_0 = snapshot_years.min()
126+
# if exp2 is None:
127+
# if growth is None:
128+
# raise ValueError("Need to specify either final exposure or growth.")
129+
# else:
130+
# exp_set = {
131+
# year: grow_exp(exp1, growth, year - year_0)
132+
# for year in snapshot_years
133+
# }
134+
# else:
135+
# exp_set = {
136+
# year: np.interp(exp1, exp2, year - year_0) for year in snapshot_years
137+
# }
138+
# return exp_set

0 commit comments

Comments
 (0)