scenario_packer
scenario_packer
Scenario packing utilities for creating multiple scenario variations.
Classes
ScenarioPacker
Bases: BaseModel
Packs one or multiple scenarios for export to dataframes or excel
Functions
add
Add scenarios to all packs. Supports Sessions and Scenarios
Source code in src/pyetm/models/scenario_packer.py
main_info
Create main info DataFrame with scenarios as rows.
Returns DataFrame with scenarios as rows. The scenario_id column contains scenario identifiers, and the DataFrame index is set to match for proper Excel export. The session_id and saved_scenario_id columns from _to_dataframe() provide the export-friendly IDs.
Source code in src/pyetm/models/scenario_packer.py
custom_curves
Get custom curves for all scenarios.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
as_dict
|
bool
|
If True, returns dict[curve_name, dict[scenario_id, DataFrame]]. If False (default), returns concatenated DataFrame for backward compatibility. |
False
|
curves
|
Optional[Sequence[str]]
|
Optional filter for specific curve names (only used when as_dict=True) |
None
|
Returns:
| Type | Description |
|---|---|
DataFrame | dict[str, dict[str, DataFrame]]
|
DataFrame (default) or dict depending on as_dict parameter |
Source code in src/pyetm/models/scenario_packer.py
hourly_output_curves
Get hourly output curves for all scenarios, organized by curve name.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
curves
|
Optional[Sequence[str]]
|
Specific curve names to retrieve. If provided, carrier_type is ignored. |
None
|
carrier_type
|
Optional[CarrierType]
|
Carrier type to get all associated curves for. One of: "electricity", "heat", "hydrogen", "methane" |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, dict[str, DataFrame]]
|
Dict mapping curve names to dicts of {scenario_title: DataFrame} |
Note
For concatenated DataFrame format, use: packer._hourly_output_curves.to_dataframe(curves)
Source code in src/pyetm/models/scenario_packer.py
annual_exports
Get annual exports for all scenarios, organized by export type.
Source code in src/pyetm/models/scenario_packer.py
collect_export_data
collect_export_data(*, hourly_curves=None, include_inputs=None, include_sortables=None, include_custom_curves=None, include_gqueries=None, include_hourly_curves=None, include_input_defaults=None, include_input_min_max=None, include_users=None, include_annual_exports=None)
Collect export data in format-agnostic structure.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
hourly_curves
|
Optional[Sequence[str]]
|
Carrier types for hourly output curves (e.g., ["electricity", "heat"]). Only used if include_hourly_curves is True. |
None
|
include_inputs
|
Optional[bool]
|
Include input parameters. Defaults based on scenario export config. |
None
|
include_sortables
|
Optional[bool]
|
Include sortable technologies. Defaults to False. |
None
|
include_custom_curves
|
Optional[bool]
|
Include custom curves. Defaults to False. |
None
|
include_gqueries
|
Optional[bool]
|
Include query results. Defaults to False. |
None
|
include_hourly_curves
|
Optional[bool]
|
Include hourly output curves. Defaults to False. |
None
|
include_input_defaults
|
Optional[bool]
|
Include default values for inputs. Defaults to False. |
None
|
include_input_min_max
|
Optional[bool]
|
Include min/max bounds for inputs. Defaults to False. |
None
|
include_users
|
Optional[bool]
|
Include user permissions. Defaults to False. |
None
|
include_annual_exports
|
Optional[Sequence[str]]
|
List of annual export names to include. Examples: ["energy_flow", "sankey", "production_parameters"] Defaults to None (no annual exports). |
None
|
Returns:
| Type | Description |
|---|---|
ExportDataCollection
|
ExportDataCollection containing all requested data in format-agnostic structures |
Source code in src/pyetm/models/scenario_packer.py
to_excel
to_excel(path, *, hourly_curves=None, include_inputs=None, include_sortables=None, include_custom_curves=None, include_gqueries=None, include_hourly_curves=None, include_input_defaults=None, include_input_min_max=None, include_users=None, include_annual_exports=None)
Export scenarios to Excel file.
Source code in src/pyetm/models/scenario_packer.py
from_excel
classmethod
Import scenarios from Excel file.
Uses per-row 'session' column to determine loader type for each scenario.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
xlsx_path
|
PathLike[str] | str
|
Path to Excel file |
required |
update
|
bool | List[str]
|
Whether to upload data to ETM. Can be: - False (default): Load data locally without uploading - True: Upload all data types (user_values, custom_curves, sortables, users) - List of types: Upload only specified types (e.g., ['user_values', 'users']) |
False
|
Source code in src/pyetm/models/scenario_packer.py
clear
remove_scenario
Remove a specific scenario from all collections.