@@ -151,6 +151,8 @@ def __init__(
151151 It can be anything registered with
152152 :py:func:`@register_production<muse.production.register_production>`.
153153 """
154+ self .output_data : xr .Dataset
155+ """Full supply, consumption and costs data for the most recent year."""
154156
155157 @property
156158 def forecast (self ):
@@ -232,29 +234,19 @@ def group_assets(x: xr.DataArray) -> xr.DataArray:
232234 technologies , market , time_period = time_period , current_year = current_year
233235 )
234236
235- # > output to mca
237+ # Full output data
236238 supply , consume , costs = self .market_variables (market , technologies )
237-
238- output_data = xr .Dataset (
239+ self .output_data = xr .Dataset (
239240 dict (
240241 supply = supply ,
241242 consumption = consume ,
242243 costs = costs ,
243244 )
244245 )
245246
246- # < output to mca
247- self .outputs (output_data , self .capacity , technologies )
248-
247+ # Output data for MCA (aggregated over assets)
249248 if len (supply .region .dims ) == 0 :
250- output_data = xr .Dataset (
251- dict (
252- supply = supply ,
253- consumption = consume ,
254- costs = costs ,
255- )
256- )
257- output_data = output_data .sum ("asset" )
249+ output_data = self .output_data .sum ("asset" )
258250 output_data = output_data .expand_dims (region = [output_data .region .values ])
259251 else :
260252 output_data = xr .Dataset (
@@ -265,9 +257,7 @@ def group_assets(x: xr.DataArray) -> xr.DataArray:
265257 )
266258 )
267259
268- # > to mca timeslices
269260 result = output_data .copy (deep = True )
270-
271261 if "dst_region" in result :
272262 exclude = ["dst_region" , "commodity" , "year" , "timeslice" ]
273263 prices = market .prices .expand_dims (dst_region = market .prices .region .values )
@@ -299,9 +289,12 @@ def group_assets(x: xr.DataArray) -> xr.DataArray:
299289 result = self .convert_market_timeslice (result , mca_market .timeslice )
300290 result ["comm_usage" ] = technologies .comm_usage .sel (commodity = result .commodity )
301291 result .set_coords ("comm_usage" )
302- # < to mca timeslices
303292 return result
304293
294+ def save_outputs (self ) -> None :
295+ """Calls the outputs function with the current output data."""
296+ self .outputs (self .output_data , self .capacity )
297+
305298 def market_variables (self , market : xr .Dataset , technologies : xr .Dataset ) -> Any :
306299 """Computes resulting market: production, consumption, and costs."""
307300 from muse .commodities import is_pollutant
0 commit comments