Skip to content

ValueError in add_storage_and_grids function of prepare_sector_network.py when existing gas network already connects all nodes #1777

@jonathan-peel

Description

@jonathan-peel

Version Checks (indicate both or one)

  • I have confirmed this bug exists on the lastest release of PyPSA-Eur.

  • I have confirmed this bug exists on the current master branch of PyPSA-Eur.

Issue Description

When running the sector-coupled pypsa-eur with few nodes, there is a high risk of this error. It occurs under rule prepare_sector_network within prepare_sector_network.py in function add_storage_and_grids. The error line is

complement_edges["length"] = complement_edges.apply(, axis=1, args=(n,))

and the error message is

ValueError: Cannot set a DataFrame with multiple columns to the single column length.

The cause is that the previous line,

complement_edges = pd.DataFrame(complement(G).edges, columns=["bus0", "bus1"]),

will return an empty dataframe for complement_edges if all the nodes of the network are already connected by existing gas lines. This is because complement(G) returns the complement graph of G, and if G already has all of its nodes connected by edges, the complement will have all the nodes, but no edges.

The fix should be to only "add candidates for new gas pipelines to achieve full connectivity" if the complement of G actually contains any edges.

The full error report is as follows.

Details
Set parameter Username
Academic license - for non-commercial use only - expires 2026-02-17
The flag 'directory' used in rule all is only valid for outputs, not inputs.
The flag 'directory' used in rule all is only valid for outputs, not inputs.
Assuming unrestricted shared filesystem usage.
host: staff-net-cx-2784.intern.ethz.ch
Building DAG of jobs...
Using shell: /bin/bash
Provided cores: 10
Rules claiming more threads will be scaled down.
Conda environments: ignored
Job stats:
job                       count
----------------------  -------
prepare_sector_network        1
total                         1

Select jobs to execute...
Execute 1 jobs...

[Mon Jul 28 17:02:03 2025]
localrule prepare_sector_network:
    input: resources/profile_2_offwind-ac.nc, resources/profile_2_offwind-dc.nc, resources/profile_2_offwind-float.nc, resources/gas_network_base_s_2.csv, resources/gas_input_locations_s_2.geojson, 
resources/gas_input_locations_s_2_simplified.csv, resources/snapshot_weightings_base_s_2_elec__Co2L0-730H.csv, resources/biomass_transport_costs.csv, resources/co2_sequestration_potential_base_s_2.csv, resources/networks/base_s_2_elec_.nc, data/eurostat/Balances-April2023, resources/pop_weighted_energy_totals_s_2.csv, resources/pop_weighted_heat_totals_s_2.csv, resources/shipping_demand_s_2.csv, resources/transport_demand_s_2.csv, resources/transport_data_s_2.csv, resources/avail_profile_s_2.csv, resources/dsm_profile_s_2.csv, resources/co2_totals.csv, data/bundle/eea/UNFCCC_v23.csv, resources/biomass_potentials_s_2_2050.csv, resources/costs_2050.csv, resources/salt_cavern_potentials_s_2.csv, resources/busmap_base_s.csv, resources/busmap_base_s_2.csv, resources/pop_layout_base_s_2.csv, resources/industrial_energy_demand_base_s_2_2050.csv, resources/hourly_heat_demand_total_base_s_2.nc, resources/industrial_production_base_s_2_2050.csv, resources/district_heat_share_base_s_2_2050.csv, resources/heating_efficiencies.csv, resources/temp_soil_total_base_s_2.nc, resources/temp_air_total_base_s_2.nc, resources/cop_profiles_base_s_2_2050.nc, resources/ptes_e_max_pu_profiles_base_s_2_2050.nc, resources/solar_thermal_total_base_s_2.nc, resources/solar_rooftop_potentials_s_2.csv, resources/direct_heat_source_utilisation_profiles_base_s_2_2050.nc                                 output: resources/networks/base_s_2__Co2L0-730H_2050.nc
    log: logs/prepare_sector_network_base_s_2__Co2L0-730H_2050.log
    jobid: 0
    benchmark: benchmarks/prepare_sector_network/base_s_2__Co2L0-730H_2050
    reason: Missing output files: resources/networks/base_s_2__Co2L0-730H_2050.nc
    wildcards: clusters=2, opts=, sector_opts=Co2L0-730H, planning_horizons=2050
    resources: tmpdir=/var/folders/cd/3symzw7d0833vd8qj4shbrl80000gp/T, mem_mb=2000, mem_mib=1908
WARNING:pypsa.network.io:Importing network from PyPSA version v0.0.0 while current version is v0.35.1. Read the release notes at https://pypsa.readthedocs.io/en/latest/release_notes.html to prepare 
your network for import.                                                                                                                                                                              INFO:pypsa.network.io:Imported network '' has buses, carriers, generators, lines, links, loads, storage_units, stores
INFO:scripts.add_electricity:Overwriting marginal_cost with:
solar                        0.010
onwind                       0.015
offwind                      0.015
hydro                        0.000
H2                           0.000
electrolysis                 0.000
fuel cell                    0.000
battery                      0.000
battery inverter             0.000
home battery storage         0.000
water tank charger           0.030
central water pit charger    0.025
dtype: float64
INFO:__main__:Removing buses with carrier ['H2', 'battery']
INFO:__main__:Removing links with carrier ['H2 electrolysis', 'H2 fuel cell', 'battery charger', 'battery discharger']
INFO:__main__:Removing generators with carrier ['CCGT', 'OCGT', 'biomass', 'coal', 'lignite', 'nuclear', 'oil']
INFO:__main__:Removing storage_units with carrier ['hydro']
INFO:__main__:Removing stores with carrier ['H2', 'battery']
INFO:__main__:Added connection cost of 6561-7164 Eur/MW/a to offwind-ac
INFO:__main__:Added connection cost of 14825-27587 Eur/MW/a to offwind-dc
INFO:__main__:Added connection cost of 8539-40836 Eur/MW/a to offwind-float
INFO:__main__:Adding electricity generation
INFO:__main__:Add hydrogen storage
INFO:__main__:Adding hydrogen fuel cell for re-electrification.
INFO:__main__:Adding hydrogen turbine for re-electrification. Assuming OCGT technology costs.
INFO:__main__:Add hydrogen underground storage
INFO:__main__:Add natural gas infrastructure, incl. LNG terminals, production, storage and entry-points.
ERROR:root:Uncaught exception
Traceback (most recent call last):
  File "/Users/jopeel/Documents/Code/Development/preferred-systems/preferred-energy-systems/pypsa-eur/.snakemake/scripts/tmp_acg3o3g.prepare_sector_network.py", line 6253, in <module>
    add_storage_and_grids(
  File "/Users/jopeel/Documents/Code/Development/preferred-systems/preferred-energy-systems/pypsa-eur/.snakemake/scripts/tmp_acg3o3g.prepare_sector_network.py", line 2004, in add_storage_and_grids
    complement_edges["length"] = complement_edges.apply(
    ~~~~~~~~~~~~~~~~^^^^^^^^^^
  File "/Users/jopeel/miniconda3/envs/pypsa-eur/lib/python3.12/site-packages/pandas/core/frame.py", line 4306, in __setitem__
    self._set_item_frame_value(key, value)
  File "/Users/jopeel/miniconda3/envs/pypsa-eur/lib/python3.12/site-packages/pandas/core/frame.py", line 4464, in _set_item_frame_value
    raise ValueError(
ValueError: Cannot set a DataFrame with multiple columns to the single column length
RuleException:
CalledProcessError in file "/Users/jopeel/Documents/Code/Development/preferred-systems/preferred-energy-systems/pypsa-eur/rules/build_sector.smk", line 1443:
Command 'set -euo pipefail;  /Users/jopeel/miniconda3/envs/pypsa-eur/bin/python3.12 /Users/jopeel/Documents/Code/Development/preferred-systems/preferred-energy-systems/pypsa-eur/.snakemake/scripts/t
mp_acg3o3g.prepare_sector_network.py' returned non-zero exit status 1.                                                                                                                                [Mon Jul 28 17:02:07 2025]
Error in rule prepare_sector_network:
    message: None
    jobid: 0
    input: resources/profile_2_offwind-ac.nc, resources/profile_2_offwind-dc.nc, resources/profile_2_offwind-float.nc, resources/gas_network_base_s_2.csv, resources/gas_input_locations_s_2.geojson, 
resources/gas_input_locations_s_2_simplified.csv, resources/snapshot_weightings_base_s_2_elec__Co2L0-730H.csv, resources/biomass_transport_costs.csv, resources/co2_sequestration_potential_base_s_2.csv, resources/networks/base_s_2_elec_.nc, data/eurostat/Balances-April2023, resources/pop_weighted_energy_totals_s_2.csv, resources/pop_weighted_heat_totals_s_2.csv, resources/shipping_demand_s_2.csv, resources/transport_demand_s_2.csv, resources/transport_data_s_2.csv, resources/avail_profile_s_2.csv, resources/dsm_profile_s_2.csv, resources/co2_totals.csv, data/bundle/eea/UNFCCC_v23.csv, resources/biomass_potentials_s_2_2050.csv, resources/costs_2050.csv, resources/salt_cavern_potentials_s_2.csv, resources/busmap_base_s.csv, resources/busmap_base_s_2.csv, resources/pop_layout_base_s_2.csv, resources/industrial_energy_demand_base_s_2_2050.csv, resources/hourly_heat_demand_total_base_s_2.nc, resources/industrial_production_base_s_2_2050.csv, resources/district_heat_share_base_s_2_2050.csv, resources/heating_efficiencies.csv, resources/temp_soil_total_base_s_2.nc, resources/temp_air_total_base_s_2.nc, resources/cop_profiles_base_s_2_2050.nc, resources/ptes_e_max_pu_profiles_base_s_2_2050.nc, resources/solar_thermal_total_base_s_2.nc, resources/solar_rooftop_potentials_s_2.csv, resources/direct_heat_source_utilisation_profiles_base_s_2_2050.nc                                 output: resources/networks/base_s_2__Co2L0-730H_2050.nc
    log: logs/prepare_sector_network_base_s_2__Co2L0-730H_2050.log (check log file(s) for error details)
Shutting down, this might take some time.
Exiting because a job execution failed. Look below for error messages
[Mon Jul 28 17:02:07 2025]
Error in rule prepare_sector_network:
    message: None
    jobid: 0
    input: resources/profile_2_offwind-ac.nc, resources/profile_2_offwind-dc.nc, resources/profile_2_offwind-float.nc, resources/gas_network_base_s_2.csv, resources/gas_input_locations_s_2.geojson, 
resources/gas_input_locations_s_2_simplified.csv, resources/snapshot_weightings_base_s_2_elec__Co2L0-730H.csv, resources/biomass_transport_costs.csv, resources/co2_sequestration_potential_base_s_2.csv, resources/networks/base_s_2_elec_.nc, data/eurostat/Balances-April2023, resources/pop_weighted_energy_totals_s_2.csv, resources/pop_weighted_heat_totals_s_2.csv, resources/shipping_demand_s_2.csv, resources/transport_demand_s_2.csv, resources/transport_data_s_2.csv, resources/avail_profile_s_2.csv, resources/dsm_profile_s_2.csv, resources/co2_totals.csv, data/bundle/eea/UNFCCC_v23.csv, resources/biomass_potentials_s_2_2050.csv, resources/costs_2050.csv, resources/salt_cavern_potentials_s_2.csv, resources/busmap_base_s.csv, resources/busmap_base_s_2.csv, resources/pop_layout_base_s_2.csv, resources/industrial_energy_demand_base_s_2_2050.csv, resources/hourly_heat_demand_total_base_s_2.nc, resources/industrial_production_base_s_2_2050.csv, resources/district_heat_share_base_s_2_2050.csv, resources/heating_efficiencies.csv, resources/temp_soil_total_base_s_2.nc, resources/temp_air_total_base_s_2.nc, resources/cop_profiles_base_s_2_2050.nc, resources/ptes_e_max_pu_profiles_base_s_2_2050.nc, resources/solar_thermal_total_base_s_2.nc, resources/solar_rooftop_potentials_s_2.csv, resources/direct_heat_source_utilisation_profiles_base_s_2_2050.nc                                 output: resources/networks/base_s_2__Co2L0-730H_2050.nc
    log: logs/prepare_sector_network_base_s_2__Co2L0-730H_2050.log (check log file(s) for error details)
Complete log(s): /Users/jopeel/Documents/Code/Development/preferred-systems/preferred-energy-systems/pypsa-eur/.snakemake/log/2025-07-28T170158.079321.snakemake.log
WorkflowError:
At least one job did not complete successfully.

Reproducible Example

In config.default.yaml, change
...

scenario:
    clusters:
    - 2
    ...

...

countries:
- DE

...

In terminal,
(pypsa-eur) me@my-net-cx-XXXX pypsa-eur % snakemake resources/networks/base_s_2__Co2L0-730H_2050.nc --cores 'all'

Expected Behavior

Successful creation of file resources/networks/base_s_2__Co2L0-730H_2050.nc without error.

Installed Versions

Details name: pypsa-eur channels: - bioconda - conda-forge - http://conda.anaconda.org/gurobi - https://conda.anaconda.org/gurobi - defaults - https://repo.anaconda.com/pkgs/main - https://repo.anaconda.com/pkgs/r dependencies: - _python_abi3_support=1.0=hd8ed1ab_2 - adwaita-icon-theme=48.1=unix_0 - affine=2.4.0=pyhd8ed1ab_1 - ampl-asl=1.0.0=h286801f_2 - amply=0.1.6=pyhd8ed1ab_1 - anyio=4.9.0=pyh29332c3_0 - appdirs=1.4.4=pyhd8ed1ab_1 - appnope=0.1.4=pyhd8ed1ab_1 - argon2-cffi=25.1.0=pyhd8ed1ab_0 - argon2-cffi-bindings=21.2.0=py312h024a12e_5 - argparse-dataclass=2.0.0=pyhd8ed1ab_0 - arrow=1.3.0=pyhd8ed1ab_1 - astroid=3.3.10=py312h81bd7bf_0 - asttokens=3.0.0=pyhd8ed1ab_1 - async-lru=2.0.5=pyh29332c3_0 - atk-1.0=2.38.0=hd03087b_2 - atlite=0.4.1=pyhd8ed1ab_0 - attrs=25.3.0=pyh71513ae_0 - aws-c-auth=0.9.0=hb5b73c5_15 - aws-c-cal=0.9.2=h03444cf_0 - aws-c-common=0.12.3=h5505292_0 - aws-c-compression=0.3.1=hca07070_5 - aws-c-event-stream=0.5.5=h40449bf_0 - aws-c-http=0.10.2=hb5bd760_2 - aws-c-io=0.20.1=hf355ecc_0 - aws-c-mqtt=0.13.1=h923d298_3 - aws-c-s3=0.8.3=h78ecdd8_0 - aws-c-sdkutils=0.2.4=hca07070_0 - aws-checksums=0.2.7=hca07070_1 - aws-crt-cpp=0.32.10=h19250b4_2 - aws-sdk-cpp=1.11.510=h3a747ed_13 - azure-core-cpp=1.14.0=hd50102c_0 - azure-identity-cpp=1.10.0=hc602bab_0 - azure-storage-blobs-cpp=12.13.0=h7585a09_1 - azure-storage-common-cpp=12.8.0=h9ca1f76_1 - azure-storage-files-datalake-cpp=12.12.0=hcdd55da_1 - babel=2.17.0=pyhd8ed1ab_0 - beautifulsoup4=4.13.4=pyha770c72_0 - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - blinker=1.9.0=pyhff2d567_0 - blosc=1.21.6=h7dd00d9_1 - bokeh=3.7.3=pyhd8ed1ab_0 - bottleneck=1.5.0=py312he0011b7_0 - branca=0.8.1=pyhd8ed1ab_0 - brotli=1.1.0=h5505292_3 - brotli-bin=1.1.0=h5505292_3 - brotli-python=1.1.0=py312hd8f9ff3_3 - bzip2=1.0.8=h99b78c6_7 - c-ares=1.34.5=h5505292_0 - c-blosc2=2.19.0=h9cbb436_0 - ca-certificates=2025.6.15=hbd8a1cb_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - cairo=1.18.4=h6a3b0d2_0 - cartopy=0.24.0=py312hcd31e36_0 - cdsapi=0.7.6=pyhd8ed1ab_0 - certifi=2025.6.15=pyhd8ed1ab_0 - cffi=1.17.1=py312h0fad829_0 - cfgv=3.3.1=pyhd8ed1ab_1 - cftime=1.6.4=py312h755e627_1 - charset-normalizer=3.4.2=pyhd8ed1ab_0 - click=8.2.1=pyh707e725_0 - click-plugins=1.1.1.2=pyhd8ed1ab_0 - cligj=0.7.2=pyhd8ed1ab_2 - cloudpickle=3.1.1=pyhd8ed1ab_0 - coin-or-cbc=2.10.12=h8ec3750_2 - coin-or-cgl=0.60.9=h7ef17a8_4 - coin-or-clp=1.17.10=h73553b4_1 - coin-or-osi=0.108.11=h1c7c69d_4 - coin-or-utils=2.11.12=h38baedf_2 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.2=pyhd8ed1ab_1 - conda-inject=1.3.2=pyhd8ed1ab_0 - configargparse=1.7.1=pyhe01879c_0 - connection_pool=0.0.3=pyhd3deb0d_0 - contourpy=1.3.2=py312hb23fbb9_0 - country_converter=1.2=pyhd8ed1ab_0 - cppad=20250000.2=h286801f_0 - cpython=3.12.11=py312hd8ed1ab_0 - cryptography=45.0.5=py312hf9bd80e_0 - cycler=0.12.1=pyhd8ed1ab_1 - cytoolz=1.0.1=py312hea69d52_0 - dask=2025.5.1=pyhd8ed1ab_0 - dask-core=2025.5.1=pyhd8ed1ab_0 - debugpy=1.8.14=py312hd8f9ff3_0 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecation=2.1.0=pyh9f0ad1d_0 - descartes=1.1.0=pyhd8ed1ab_5 - dill=0.4.0=pyhd8ed1ab_0 - distlib=0.3.9=pyhd8ed1ab_1 - distributed=2025.5.1=pyhd8ed1ab_0 - docutils=0.21.2=pyhd8ed1ab_1 - dpath=2.2.0=pyha770c72_0 - ecmwf-datastores-client=0.2.0=pyhd8ed1ab_0 - entsoe-py=0.7.0=pyhd8ed1ab_0 - epoxy=1.5.10=h1c322ee_1 - et_xmlfile=2.0.0=pyhd8ed1ab_1 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - executing=2.2.0=pyhd8ed1ab_0 - filelock=3.18.0=pyhd8ed1ab_0 - fiona=1.10.1=py312hfd5e53c_3 - folium=0.20.0=pyhd8ed1ab_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 - font-ttf-ubuntu=0.83=h77eed37_3 - fontconfig=2.15.0=h1383a14_1 - fonts-conda-ecosystem=1=0 - fonts-conda-forge=1=0 - fonttools=4.58.5=py312h998013c_0 - fqdn=1.5.1=pyhd8ed1ab_1 - freetype=2.13.3=hce30654_1 - freexl=2.0.0=h3ab3353_2 - fribidi=1.0.10=h27ca646_0 - fsspec=2025.5.1=pyhd8ed1ab_0 - gdk-pixbuf=2.42.12=h7ddc832_0 - geographiclib=2.0=pyhd8ed1ab_1 - geojson=3.2.0=pyhd8ed1ab_0 - geopandas=1.1.1=pyhd8ed1ab_0 - geopandas-base=1.1.1=pyha770c72_0 - geopy=2.4.1=pyhd8ed1ab_2 - geos=3.13.1=hc9a1286_0 - geotiff=1.7.4=h1d7e6e1_2 - gflags=2.2.2=hf9b8971_1005 - giflib=5.2.2=h93a5062_0 - gitdb=4.0.12=pyhd8ed1ab_0 - gitpython=3.1.44=pyhff2d567_0 - glib-tools=2.84.2=h1dc7a0c_0 - glog=0.7.1=heb240a5_0 - glpk=5.0=h6d7a090_0 - gmp=6.3.0=h7bae524_2 - graphite2=1.3.14=h286801f_0 - graphviz=13.1.0=haeab78c_0 - gtk3=3.24.43=h07173f4_5 - gts=0.7.6=he42f4ea_4 - h11=0.16.0=pyhd8ed1ab_0 - h2=4.2.0=pyhd8ed1ab_0 - harfbuzz=11.2.1=hab40de2_0 - hdf4=4.2.15=h2ee6834_7 - hdf5=1.14.6=nompi_ha698983_101 - hicolor-icon-theme=0.17=hce30654_2 - highspy=1.11.0=np20py312h4049357_0 - hpack=4.1.0=pyhd8ed1ab_0 - httpcore=1.0.9=pyh29332c3_0 - httpx=0.28.1=pyhd8ed1ab_0 - humanfriendly=10.0=pyh707e725_8 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=hfee45f7_0 - identify=2.6.12=pyhd8ed1ab_0 - idna=3.10=pyhd8ed1ab_1 - immutables=0.21=py312hea69d52_1 - importlib-metadata=8.7.0=pyhe01879c_1 - importlib_resources=6.5.2=pyhd8ed1ab_0 - iniconfig=2.0.0=pyhd8ed1ab_1 - ipopt=3.14.17=h945cc1c_2 - ipykernel=6.29.5=pyh57ce528_0 - ipython=9.4.0=pyhfa0c392_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - ipywidgets=8.1.7=pyhd8ed1ab_0 - isoduration=20.11.0=pyhd8ed1ab_1 - isort=6.0.1=pyhd8ed1ab_1 - jedi=0.19.2=pyhd8ed1ab_1 - jinja2=3.1.6=pyhd8ed1ab_0 - joblib=1.5.1=pyhd8ed1ab_0 - jpype1=1.5.2=py312hb23fbb9_0 - json-c=0.18=he4178ee_0 - json5=0.12.0=pyhd8ed1ab_0 - jsonpointer=3.0.0=py312h81bd7bf_1 - jsonschema=4.24.0=pyhd8ed1ab_0 - jsonschema-specifications=2025.4.1=pyh29332c3_0 - jsonschema-with-format-nongpl=4.24.0=hd8ed1ab_0 - jupyter=1.1.1=pyhd8ed1ab_1 - jupyter-lsp=2.2.5=pyhe01879c_2 - jupyter_client=8.6.3=pyhd8ed1ab_1 - jupyter_console=6.6.3=pyhd8ed1ab_1 - jupyter_core=5.8.1=pyh31011fe_0 - jupyter_events=0.12.0=pyh29332c3_0 - jupyter_server=2.16.0=pyhe01879c_0 - jupyter_server_terminals=0.5.3=pyhd8ed1ab_1 - jupyterlab=4.4.4=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_server=2.27.3=pyhd8ed1ab_1 - jupyterlab_widgets=3.0.15=pyhd8ed1ab_0 - kiwisolver=1.4.8=py312hb23fbb9_1 - krb5=1.21.3=h237132a_0 - lcms2=2.17=h7eeda09_0 - lerc=4.0.0=hd64df32_1 - libabseil=20250127.1=cxx17_h07bc746_0 - libaec=1.1.4=h51d1e36_0 - libarchive=3.8.1=gpl_h46e8061_100 - libarrow=20.0.0=hd5f8272_8_cpu - libarrow-acero=20.0.0=hf07054f_8_cpu - libarrow-dataset=20.0.0=hf07054f_8_cpu - libarrow-substrait=20.0.0=he749cb8_8_cpu - libblas=3.9.0=32_h10e41b3_openblas - libbrotlicommon=1.1.0=h5505292_3 - libbrotlidec=1.1.0=h5505292_3 - libbrotlienc=1.1.0=h5505292_3 - libcblas=3.9.0=32_hb3479ef_openblas - libcrc32c=1.1.2=hbdafb3b_0 - libcurl=8.14.1=h73640d1_0 - libcxx=20.1.7=ha82da77_0 - libdeflate=1.24=h5773f1b_0 - libedit=3.1.20250104=pl5321hafb1f1b_0 - libev=4.33=h93a5062_2 - libevent=2.1.12=h2757513_1 - libexpat=2.7.0=h286801f_0 - libffi=3.4.6=h1da3d7d_1 - libfreetype=2.13.3=hce30654_1 - libfreetype6=2.13.3=h1d14073_1 - libgd=2.3.3=hb2c3a21_11 - libgdal-core=3.10.3=h976ba99_11 - libgdal-hdf4=3.10.3=h6769f21_11 - libgdal-hdf5=3.10.3=haed1158_11 - libgdal-netcdf=3.10.3=hf10a186_11 - libgfortran=5.0.0=14_2_0_h6c33f7e_103 - libgfortran5=14.2.0=h6c33f7e_103 - libglib=2.84.2=hbec27ea_0 - libgoogle-cloud=2.36.0=h9484b08_1 - libgoogle-cloud-storage=2.36.0=h7081f7f_1 - libgrpc=1.71.0=h857da87_1 - libhwloc=2.11.2=default_hbce5d74_1001 - libiconv=1.18=hfe07756_1 - libintl=0.25.1=h493aca8_0 - libjpeg-turbo=3.1.0=h5505292_0 - libkml=1.3.0=he250239_1021 - liblapack=3.9.0=32_hc9a63f6_openblas - liblapacke=3.9.0=32_hbb7bcf8_openblas - liblzma=5.8.1=h39f12f2_2 - libnetcdf=4.9.2=nompi_h3352478_117 - libnghttp2=1.64.0=h6d7220d_0 - libopenblas=0.3.30=openmp_hf332438_0 - libopentelemetry-cpp=1.21.0=h0181452_0 - libopentelemetry-cpp-headers=1.21.0=hce30654_0 - libparquet=20.0.0=h636d7b7_8_cpu - libpng=1.6.50=h3783ad8_0 - libprotobuf=5.29.3=hccd9074_1 - libre2-11=2025.06.26=hd41c47c_0 - librsvg=2.58.4=h266df6f_3 - librttopo=1.1.0=h26cc057_18 - libscotch=7.0.6=he56f69b_1 - libsodium=1.0.20=h99b78c6_0 - libspatialite=5.1.0=hea0a7cd_14 - libsqlite=3.50.2=h6fb428d_0 - libssh2=1.11.1=h1590b86_0 - libthrift=0.21.0=h64651cc_0 - libtiff=4.7.0=h2f21f7c_5 - libutf8proc=2.10.0=h74a6958_0 - libwebp-base=1.5.0=h2471fea_0 - libxcb=1.17.0=hdb1d25a_0 - libxml2=2.13.8=h52572c6_0 - libxslt=1.1.39=h223e5b9_0 - libzip=1.11.2=h1336266_0 - libzlib=1.3.1=h8359307_2 - linopy=0.5.5=pyhd8ed1ab_0 - llvm-openmp=20.1.7=hdb05f8b_0 - locket=1.0.0=pyhd8ed1ab_0 - lxml=6.0.0=py312hc2c121e_0 - lz4=4.4.4=py312hf263c89_0 - lz4-c=1.10.0=h286801f_1 - lzo=2.10=h93a5062_1001 - mapclassify=2.9.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py312h998013c_1 - matplotlib=3.10.3=py312h1f38498_0 - matplotlib-base=3.10.3=py312hdbc7e53_0 - matplotlib-inline=0.1.7=pyhd8ed1ab_1 - mccabe=0.7.0=pyhd8ed1ab_1 - memory_profiler=0.61.0=pyhd8ed1ab_1 - metis=5.1.0=h15f6cfe_1007 - minizip=4.0.10=hff1a8ea_0 - mistune=3.1.3=pyh29332c3_0 - mpfr=4.2.1=hb693164_3 - msgpack-python=1.1.1=py312hb23fbb9_0 - multiurl=0.3.5=pyhd8ed1ab_0 - mumps-include=5.7.3=h8c5b6c6_10 - mumps-seq=5.7.3=h390d176_10 - munkres=1.1.4=pyhd8ed1ab_1 - narwhals=1.45.0=pyhe01879c_0 - nbclient=0.10.2=pyhd8ed1ab_0 - nbconvert-core=7.16.6=pyh29332c3_0 - nbformat=5.10.4=pyhd8ed1ab_1 - ncurses=6.5=h5e97a16_3 - nest-asyncio=1.6.0=pyhd8ed1ab_1 - netcdf4=1.7.2=nompi_py312h3abf214_102 - networkx=3.5=pyhe01879c_0 - nlohmann_json=3.12.0=ha1acc90_0 - nodeenv=1.9.1=pyhd8ed1ab_1 - notebook=7.4.4=pyhd8ed1ab_0 - notebook-shim=0.2.4=pyhd8ed1ab_1 - numexpr=2.10.2=py312hbbbb429_0 - numpy=1.26.4=py312h8442bc7_0 - oauthlib=3.3.1=pyhd8ed1ab_0 - openjpeg=2.5.3=h8a3d83b_0 - openpyxl=3.1.5=py312hf6e0af7_1 - openssl=3.5.1=h81ee809_0 - orc=2.1.2=hd90e43c_0 - overrides=7.7.0=pyhd8ed1ab_1 - packaging=25.0=pyh29332c3_1 - pandas=2.3.0=py312hcb1e3ce_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - pango=1.56.4=h875632e_0 - parso=0.8.4=pyhd8ed1ab_1 - partd=1.4.2=pyhd8ed1ab_0 - patsy=1.0.1=pyhd8ed1ab_1 - pcre2=10.45=ha881caa_0 - pexpect=4.9.0=pyhd8ed1ab_1 - pickleshare=0.7.5=pyhd8ed1ab_1004 - pillow=11.3.0=py312h50aef2c_0 - pip=25.1.1=pyh8b19718_0 - pixman=0.46.2=h2f9eb0b_0 - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_2 - plac=1.4.5=pyhd8ed1ab_0 - platformdirs=4.3.8=pyhe01879c_0 - plotly=6.2.0=pyhd8ed1ab_0 - pluggy=1.6.0=pyhd8ed1ab_0 - polars=1.31.0=default_h56a14c1_0 - polars-default=1.31.0=py39h6da47c3_0 - powerplantmatching=0.7.1=pyhd8ed1ab_0 - pre-commit=4.2.0=pyha770c72_0 - progressbar2=4.5.0=pyhd8ed1ab_1 - proj=9.6.2=h1318a7e_0 - prometheus-cpp=1.3.0=h0967b3e_0 - prometheus_client=0.22.1=pyhd8ed1ab_0 - prompt-toolkit=3.0.51=pyha770c72_0 - prompt_toolkit=3.0.51=hd8ed1ab_0 - psutil=7.0.0=py312hea69d52_0 - pthread-stubs=0.4=hd74edd7_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pulp=2.8.0=py312h38bd297_2 - pure_eval=0.2.3=pyhd8ed1ab_1 - py-cpuinfo=9.0.0=pyhd8ed1ab_1 - pyarrow=20.0.0=py312h1f38498_0 - pyarrow-core=20.0.0=py312hc40f475_0_cpu - pycountry=24.6.1=pyhd8ed1ab_0 - pycparser=2.22=pyh29332c3_1 - pygments=2.19.2=pyhd8ed1ab_0 - pyjwt=2.10.1=pyhd8ed1ab_0 - pylint=3.3.7=pyhe01879c_0 - pyobjc-core=11.1=py312h4c66426_0 - pyobjc-framework-cocoa=11.1=py312hb9d441b_0 - pyogrio=0.11.0=py312hfd5e53c_0 - pyparsing=3.2.3=pyhd8ed1ab_1 - pyproj=3.7.1=py312h237c406_1 - pypsa=0.35.1=pyhd8ed1ab_0 - pyscipopt=5.5.0=py312hd8f9ff3_0 - pyshp=2.3.1=pyhd8ed1ab_1 - pysocks=1.7.1=pyha55dd90_7 - pytables=3.10.2=py312h599e418_6 - pytest=8.4.1=pyhd8ed1ab_0 - python=3.12.11=hc22306f_0_cpython - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-fastjsonschema=2.21.1=pyhd8ed1ab_0 - python-gil=3.12.11=hd8ed1ab_0 - python-json-logger=2.0.7=pyhd8ed1ab_0 - python-tzdata=2025.2=pyhd8ed1ab_0 - python-utils=3.9.1=pyhff2d567_1 - python_abi=3.12=7_cp312 - pytz=2025.2=pyhd8ed1ab_0 - pyxlsb=1.0.10=pyhd8ed1ab_0 - pyyaml=6.0.2=py312h998013c_2 - pyzmq=27.0.0=py312hf4875e0_0 - qhull=2020.2=h420ef59_5 - rasterio=1.4.3=py312h4623290_1 - re2=2025.06.26=h6589ca4_0 - readline=8.2=h1d1bf99_2 - referencing=0.36.2=pyh29332c3_0 - requests=2.32.4=pyhd8ed1ab_0 - requests-oauthlib=1.4.0=pyhd8ed1ab_0 - reretry=0.11.8=pyhd8ed1ab_1 - rfc3339-validator=0.1.4=pyhd8ed1ab_1 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rioxarray=0.19.0=pyhd8ed1ab_0 - rpds-py=0.26.0=py312hd3c0895_0 - ruff=0.12.2=h412e174_0 - scikit-learn=1.7.0=py312h39203ce_1 - scip=9.2.2=hdf0ad90_2 - scipy=1.15.2=py312h99a188d_0 - seaborn=0.13.2=hd8ed1ab_3 - seaborn-base=0.13.2=pyhd8ed1ab_3 - send2trash=1.8.3=pyh31c8845_1 - setuptools=80.9.0=pyhff2d567_0 - shapely=2.0.7=py312hf733f26_1 - six=1.17.0=pyhd8ed1ab_0 - smart_open=7.3.0=pyhe01879c_0 - smmap=5.0.2=pyhd8ed1ab_0 - snakemake-executor-plugin-cluster-generic=1.0.9=pyhdfd78af_0 - snakemake-executor-plugin-slurm=1.4.0=pyhdfd78af_0 - snakemake-executor-plugin-slurm-jobstep=0.3.0=pyhdfd78af_0 - snakemake-interface-common=1.20.1=pyhdfd78af_0 - snakemake-interface-executor-plugins=9.3.7=pyhdfd78af_0 - snakemake-interface-logger-plugins=1.2.3=pyhdfd78af_0 - snakemake-interface-report-plugins=1.1.0=pyhdfd78af_0 - snakemake-interface-storage-plugins=4.2.1=pyhdfd78af_0 - snakemake-minimal=9.7.1=pyhdfd78af_0 - snakemake-storage-plugin-http=0.3.0=pyhdfd78af_0 - snappy=1.2.1=h98b9ce2_1 - sniffio=1.3.1=pyhd8ed1ab_1 - snuggs=1.4.7=pyhd8ed1ab_2 - sortedcontainers=2.4.0=pyhd8ed1ab_1 - soupsieve=2.7=pyhd8ed1ab_0 - sqlite=3.50.2=hc23dd5f_0 - stack_data=0.6.3=pyhd8ed1ab_1 - statsmodels=0.14.4=py312hcde60ef_2 - tabulate=0.9.0=pyhd8ed1ab_2 - tbb=2022.1.0=h9541205_0 - tblib=3.1.0=pyhd8ed1ab_0 - terminado=0.18.1=pyh31c8845_0 - threadpoolctl=3.6.0=pyhecae5ae_0 - throttler=1.2.2=pyhd8ed1ab_0 - tinycss2=1.4.0=pyhd8ed1ab_0 - tk=8.6.13=h892fb3f_2 - tomli=2.2.1=pyhd8ed1ab_1 - tomlkit=0.13.3=pyha770c72_0 - toolz=1.0.0=pyhd8ed1ab_1 - tornado=6.5.1=py312hea69d52_0 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - types-python-dateutil=2.9.0.20250516=pyhd8ed1ab_0 - typing-extensions=4.14.1=h4440ef1_0 - typing_extensions=4.14.1=pyhe01879c_0 - typing_utils=0.1.0=pyhd8ed1ab_1 - tzdata=2025b=h78e105d_0 - ukkonen=1.0.1=py312h6142ec9_5 - unicodedata2=16.0.0=py312hea69d52_0 - unidecode=1.3.8=pyh29332c3_1 - uri-template=1.3.0=pyhd8ed1ab_1 - uriparser=0.9.8=h00cdb27_0 - urllib3=2.5.0=pyhd8ed1ab_0 - validators=0.35.0=pyhd8ed1ab_0 - virtualenv=20.31.2=pyhd8ed1ab_0 - wcwidth=0.2.13=pyhd8ed1ab_1 - webcolors=24.11.1=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_3 - websocket-client=1.8.0=pyhd8ed1ab_1 - wheel=0.45.1=pyhd8ed1ab_1 - widgetsnbextension=4.0.14=pyhd8ed1ab_0 - wrapt=1.17.2=py312hea69d52_0 - xarray=2025.6.1=pyhd8ed1ab_1 - xerces-c=3.2.5=h92fc2f4_2 - xlrd=2.0.1=pyhd8ed1ab_3 - xorg-libxau=1.0.12=h5505292_0 - xorg-libxdmcp=1.1.5=hd74edd7_0 - xyzservices=2025.4.0=pyhd8ed1ab_0 - yaml=0.2.5=h3422bc3_2 - yte=1.8.1=pyha770c72_0 - zeromq=4.3.5=hc1bb282_7 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - zlib=1.3.1=h8359307_2 - zlib-ng=2.2.4=h13dfb9a_0 - zstandard=0.23.0=py312hea69d52_2 - zstd=1.5.7=h6491c7d_2 - pip: - gurobipy==12.0.2 - ply==3.11 - pyomo==6.9.2 - tsam==2.3.9

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions