Skip to content

Class Definitions API

class_definitions

Network_Processor

Processes a PyPSA NetworkCollection against IAMC variable definitions.

Reads variable definitions from a definitions folder, executes the corresponding statistics functions to extract values from a given PyPSA NetworkCollection, and returns the results as a pyam.IamDataFrame.

Outputs are converted to the units of common definitions, set in the definitions variable in definitions_path via :meth:pyam.IamDataFrame.convert_unit if convert_units is True in config.

calculate_variables_values() -> None

Calculate values for all defined variables.

Iterates over all variables in self.dsd, calls :meth:_execute_function_for_variable for each one, and assembles the results.

When self.aggregate_per_year is True (default), assembles a single :class:pyam.IamDataFrame with one column per investment year and stores it in self.dsd_with_values.

When self.aggregate_per_year is False, stores a list[tuple[int, pyam.IamDataFrame]] in self.dsd_with_values, one entry per investment year. Each :class:pyam.IamDataFrame contains the full time-series for that year.

Applies aggregation based on self.aggregation_level config.

read_definitions() -> nomenclature.DataStructureDefinition

Read IAMC variable definitions from the definitions folder.

Populates dsd with a :class:nomenclature.DataStructureDefinition built from self.definitions_path and returns it.

Returns:

Type Description
DataStructureDefinition

The loaded data structure definition.

structure_pyam_from_pandas(df: pd.DataFrame) -> pyam.IamDataFrame

Creates a pyam.IamDataFrame from a pandas DataFrame.

Parameters:

Name Type Description Default
df DataFrame

DataFrame with IAMC variables as columns and years as index.

required

Returns:

Type Description
IamDataFrame

A pyam.IamDataFrame with IAMC variables as columns and years as index.

Notes

When aggregation_level="country", region labels are country codes by default. If map_country_codes_to_names is True in config, country codes are mapped to full names via :data:REGION_MAPPING. For country="all", the country column in df (populated by :meth:_aggregate_to_country) is used as the region dimension, one row per country. When aggregation_level="region", the location column in df is used directly.

write_output_to_xlsx() -> Path

Write the computed IAMC data to an Excel file (or files).

  • When aggregate_per_year=True: writes a single file <self.path_dsd_with_values>/PYPSA_{model}_{scenario}_{country}.xlsx.
  • When aggregate_per_year=False: creates a sub-folder <self.path_dsd_with_values>/PYPSA_timeseries_{model}_{scenario}_{country}/ and writes one file per investment year named PYPSA_{model}_{scenario}_{country}_{year}.xlsx.

Returns:

Type Description
Path

Path to the written file (aggregate_per_year=True) or to the folder containing all per-year files (aggregate_per_year=False).

Raises:

Type Description
RuntimeError

If :meth:calculate_variables_values has not been called yet.

format_timestamps(df: pd.DataFrame) -> pd.DataFrame

Normalize timestamp-like columns to tz-aware objects or formatted integers in UTC+00:00.

Parameters:

Name Type Description Default
df DataFrame

DataFrame whose columns may contain year strings, date strings, or timestamp-like values.

required

Returns:

Type Description
DataFrame

The same DataFrame with columns converted to Python datetime objects localized to +00:00 where possible for timeseries. For yearly aggregated data, columns are converted to integers.

Notes

Columns that cannot be parsed as timestamps are left unchanged. Values that can be parsed but cannot be localized are replaced with pd.NaT and reported via print warnings. Yearly aggregated data is identified by all column labels being 4-digit year strings only. In this case, the columns are converted to integers. For non-aggregated data, columns are converted to Python datetime objects localized to UTC+00:00.