Skip to content

Commit 480070b

Browse files
author
JMGilbert
committed
Add menu run functionality
1 parent 9e7ed01 commit 480070b

File tree

2 files changed

+47
-102
lines changed

2 files changed

+47
-102
lines changed

dscim/menu/main_recipe.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ def damage_function():
285285
def scc():
286286
damage_function()
287287
self.global_consumption
288+
self.global_consumption_no_pulse
288289
self.logger.info("Processing SCC calculation ...")
289290
if self.fit_type == "quantreg":
290291
self.full_uncertainty_iqr
@@ -293,6 +294,8 @@ def scc():
293294
self.stream_discount_factors
294295
self.calculate_scc
295296
self.uncollapsed_sccs
297+
self.uncollapsed_marginal_damages
298+
self.uncollapsed_discount_factors
296299

297300
course_dict = {"damage_function": damage_function, "scc": scc}
298301

@@ -928,6 +931,7 @@ def gmsl_max(self):
928931
return gmsl_max
929932

930933
@cachedproperty
934+
@save(name="global_consumption_no_pulse")
931935
def global_consumption_no_pulse(self):
932936
"""Global consumption under FAIR control scenario."""
933937

@@ -1306,6 +1310,41 @@ def stream_discount_factors(self):
13061310
discounting_type=self.discounting_type,
13071311
fair_aggregation=self.fair_aggregation,
13081312
)
1313+
1314+
@cachedproperty
1315+
@save("uncollapsed_discount_factors")
1316+
def uncollapsed_discount_factors(self):
1317+
pop = self.collapsed_pop.sum("region")
1318+
pop = pop.reindex(
1319+
year=range(pop.year.min().values, self.ext_end_year + 1),
1320+
method="ffill",
1321+
)
1322+
f = self.calculate_discount_factors(
1323+
self.global_consumption_no_pulse / pop
1324+
).to_dataset(name="discount_factor")
1325+
for var in f.variables:
1326+
f[var].encoding.clear()
1327+
1328+
return f
1329+
1330+
@cachedproperty
1331+
@save("uncollapsed_marginal_damages")
1332+
def uncollapsed_marginal_damages(self):
1333+
1334+
md = (
1335+
(
1336+
(self.global_consumption_no_pulse - self.global_consumption_pulse)
1337+
* self.climate.conversion
1338+
)
1339+
.rename("marginal_damages")
1340+
.to_dataset()
1341+
)
1342+
1343+
for var in md.variables:
1344+
md[var].encoding.clear()
1345+
1346+
return md
1347+
13091348

13101349
def ce(self, obj, dims):
13111350
"""Rechunk data appropriately and apply the certainty equivalence

dscim/utils/menu_runs.py

Lines changed: 8 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -115,58 +115,11 @@ def run_ssps(
115115
f"{save_path}/{menu_option}_{discount_type}_eta{menu_item.eta}_rho{menu_item.rho}_global_consumption.nc4"
116116
)
117117

118-
if marginal_damages:
119-
md = (
120-
menu_item.global_consumption_no_pulse
121-
- menu_item.global_consumption_pulse
122-
) * menu_item.climate.conversion
123-
md = md.rename("marginal_damages").to_dataset()
124-
for var in md.variables:
125-
md[var].encoding.clear()
126-
md.chunk(
127-
{
128-
"discount_type": 1,
129-
"weitzman_parameter": 1,
130-
"ssp": 1,
131-
"model": 1,
132-
"gas": 1,
133-
"year": 10,
134-
}
135-
).to_zarr(
136-
f"{save_path}/{menu_option}_{discount_type}_eta{menu_item.eta}_rho{menu_item.rho}_uncollapsed_marginal_damages.zarr",
137-
consolidated=True,
138-
mode="w",
139-
)
140-
141-
if factors:
142-
143-
# holding population constant
144-
# from 2100 to 2300 with 2099 values
145-
pop = menu_item.collapsed_pop.sum("region")
146-
pop = pop.reindex(
147-
year=range(pop.year.min().values, menu_item.ext_end_year + 1),
148-
method="ffill",
149-
)
118+
if marginal_damages == True:
119+
md = menu_item.uncollapsed_marginal_damages
150120

151-
df = menu_item.calculate_discount_factors(
152-
menu_item.global_consumption_no_pulse / pop
153-
).to_dataset(name="discount_factor")
154-
for var in df.variables:
155-
df[var].encoding.clear()
156-
df.chunk(
157-
{
158-
"discount_type": 1,
159-
"weitzman_parameter": 1,
160-
"ssp": 1,
161-
"model": 1,
162-
# "gas":1,
163-
"year": 10,
164-
}
165-
).to_zarr(
166-
f"{save_path}/{menu_option}_{discount_type}_eta{menu_item.eta}_rho{menu_item.rho}_uncollapsed_discount_factors.zarr",
167-
consolidated=True,
168-
mode="w",
169-
)
121+
if factors == True:
122+
df = menu_item.uncollapsed_discount_factors
170123

171124

172125
def run_rff(
@@ -235,55 +188,8 @@ def run_rff(
235188
f"{save_path}/{menu_option}_{discount_type}_eta{menu_item.eta}_rho{menu_item.rho}_global_consumption.nc4"
236189
)
237190

238-
if marginal_damages:
239-
md = (
240-
(
241-
(
242-
menu_item.global_consumption_no_pulse
243-
- menu_item.global_consumption_pulse
244-
)
245-
* menu_item.climate.conversion
246-
)
247-
.rename("marginal_damages")
248-
.to_dataset()
249-
)
250-
251-
for var in md.variables:
252-
md[var].encoding.clear()
253-
254-
md.chunk(
255-
{
256-
"discount_type": 1,
257-
"weitzman_parameter": 14,
258-
"runid": 10000,
259-
"gas": 1,
260-
"year": 10,
261-
}
262-
).to_zarr(
263-
f"{save_path}/{menu_option}_{discount_type}_eta{menu_item.eta}_rho{menu_item.rho}_uncollapsed_marginal_damages.zarr",
264-
consolidated=True,
265-
mode="w",
266-
)
267-
if factors:
268-
269-
f = menu_item.calculate_discount_factors(
270-
menu_item.global_consumption_no_pulse / menu_item.pop
271-
).to_dataset(name="discount_factor")
272-
273-
for var in f.variables:
274-
f[var].encoding.clear()
191+
if marginal_damages == True:
192+
md = menu_item.uncollapsed_marginal_damages
275193

276-
f.chunk(
277-
{
278-
"discount_type": 1,
279-
"weitzman_parameter": 14,
280-
"runid": 10000,
281-
"gas": 1,
282-
"region": 1,
283-
"year": 10,
284-
}
285-
).to_zarr(
286-
f"{save_path}/{menu_option}_{discount_type}_eta{menu_item.eta}_rho{menu_item.rho}_uncollapsed_discount_factors.zarr",
287-
consolidated=True,
288-
mode="w",
289-
)
194+
if factors == True:
195+
f = menu_item.uncollapsed_discount_factors

0 commit comments

Comments
 (0)