otoole : OSeMOSYS tools for energy work

https://travis-ci.com/OSeMOSYS/otoole.svg?branch=master https://coveralls.io/repos/github/OSeMOSYS/otoole/badge.svg?branch=master Documentation Status https://img.shields.io/badge/code%20style-black-000000.svg

A Python toolkit to support use of OSeMOSYS


otoole is a Python package which provides a command-line interface for users of OSeMOSYS.

The aim of the package is to provide a community resource which centralises the commonly used pre- and post-processing steps around the use of OSeMOSYS.


otoole aims to support different ways of storing input data and results, including csv files, databases, datapackages and Excel workbooks, as well as different implementations of the OSeMOSYS model.


otoole requires a number of dependencies, including pygraphviz, which can be difficult to install on Windows.

The easiest way to install the dependencies is to use miniconda.

  1. Obtain the miniconda package:
  2. Add the conda-forge channel conda config --add channels conda-forge
  3. Create a new Python environment conda create -n myenv python=3.7 networkx datapackage pandas graphviz=2.46.1 xlrd
  4. Activate the new environment conda activate myenv
  5. Use pip to install otoole pip install otoole


Install otoole using pip:

pip install otoole

To upgrade otoole using pip:

pip install otoole --upgrade


For detailed instructions of the use of the tool, run the command line help function:

otoole --help


A more detailed documentation of otoole can be found here: https://otoole.readthedocs.io/en/stable/index.html


New ideas and bugs should be submitted: to the repository Issue Tracker. Please do contribute by discussing and developing these ideas further, or by developing the codebase.

To contribute directly to the documentation of code development, you first need to install the package in develop mode:

git clone http://github.com/OSeMOSYS/otoole
cd otoole
git checkout <branch you wish to use>
python setup.py develop

Now, all changes made in the codebase will automatically be reflected in the installed Python version accessible on the command line or from importing otoole modules into other Python packages.

Getting Started

Install otoole using pip:

pip install otoole

Check the version installed:

otoole -V

Read an online OSeMOSYS datapackage and convert it to a modelfile:

wget https://zenodo.org/record/3707794/files/OSeMOSYS/simplicity-v0.2.1.zip
unzip simplicity-v0.2.1.zip -d simplicity
otoole convert datapackage datafile simplicity/OSeMOSYS-simplicity-11a3a26/datapackage.json ./simplicity.txt

Visualise the Reference Energy System:

otoole viz res https://zenodo.org/record/3707794/files/OSeMOSYS/simplicity-v0.2.1.zip res.png && open res.png

Convert an OSeMOSYS datafile to a datapackage:

otoole convert datafile datapackage simplicity.txt simplicity

Validate the names of technologies and fuels against the standard naming convention and identify isolated fuels, emissions and technologies:

otoole validate datapackage simplicity/datapackage.json

Indices and tables