ISPyPSA

December 1, 2025 · View on GitHub

Continuous Integration and Deployment codecov pre-commit.ci status UV

An open-source capacity expansion modelling tool based on the methodology and assumptions used by the Australian Energy Market Operator (AEMO) to produce their Integrated System Plan (ISP). Built on PyPSA.

This README is a quick reference. For detailed instructions, tutorials, and API documentation, see the full documentation:

Installation

pip install ispypsa

Or with uv:

uv add ispypsa

Quick Start

  1. Download the example config and edit paths for your environment
  2. Run:
# Download ISP workbook and trace data
ispypsa config=ispypsa_config.yaml download_workbook
ispypsa config=ispypsa_config.yaml download_trace_data

# Run complete workflow (capacity expansion + operational model)
ispypsa config=ispypsa_config.yaml

CLI Reference

TaskDescription
download_workbookDownload IASR Excel workbook
download_trace_dataDownload wind/solar/demand traces
cache_required_iasr_workbook_tablesExtract workbook data to CSV cache
create_ispypsa_inputsGenerate ISPyPSA input tables
create_pypsa_friendly_inputsConvert to PyPSA format
create_and_run_capacity_expansion_modelBuild and solve capacity expansion
create_and_run_operational_modelBuild and solve operational model
create_capacity_expansion_plotsGenerate result plots
create_operational_plotsGenerate operational plots
listShow available tasks

Common Options

# Override config values on command line
ispypsa config=config.yaml create_plots=True create_and_run_capacity_expansion_model

# Skip optimisation (build network only)
ispypsa config=config.yaml run_optimisation=False create_and_run_capacity_expansion_model

# Force re-run even if up-to-date
ispypsa config=config.yaml -a create_ispypsa_inputs

Output Structure

<run_directory>/
└── <ispypsa_run_name>/
   ├── ispypsa_inputs/
   │   ├── build_costs.csv
   │   └── ...
   ├── pypsa_friendly/
   │   ├── buses.csv
   │   ├── ...
   │   ├── capacity_expansion_timeseries/
   │   │   ├── demand_traces/
   │   │   │   ├── CNSW.parquet
   │   │   │   └── ...
   │   │   ├── solar_traces/
   │   │   │   ├── Bomen Solar Farm.parquet
   │   │   │   └── ...
   │   │   └── wind_traces/
   │   │       ├── Ararat Wind Farm.parquet
   │   │       └── ...
   │   └── operational_timeseries/
   │       └── (same structure as capacity_expansion_timeseries)
   └── outputs/
       ├── capacity_expansion.nc
       ├── capacity_expansion_results_viewer.html
       ├── capacity_expansion_tables
       │   └── ...
       ├── capacity_expansion_plots
       │   └── ...
       ├── operational.nc
       ├── operational_results_viewer.html
       ├── operational_tables
       │   └── ...
       └── operational_plots
           └── ...

Contributing

Interested in contributing to the source code or adding table configurations? Check out the contributing instructions, which also includes steps to install ispypsa for development.

Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.

License

ispypsa was created as a part of the OpenISP project. It is licensed under the terms of GNU GPL-3.0-or-later licences.