Python wrapper for the Hector simple climate model
Project description
pyhector is a Python interface for the simple global climate carbon-cycle model Hector.
pyhector makes the simple climate model Hector easily installable and usable from Python and can for example be used in the analysis of mitigation scenarios, in integrated assessment models, complex climate model emulation, and uncertainty analyses.
Hector is written in C++ and developed at the Pacific Northwest National Laboratory.
See the Hector repository and documentation website for further information.
The Python interface pyhector is developed by Sven Willner and Robert Gieseke.
Pyhector uses pybind11 to wrap Hector’s API. The version of Hector used can be read using Pyhector’s __hector_version__ field.
Installation
Prerequisites
Hector requires Boost, so to install and use pyhector you need to have the filesystem and system modules of Boost installed (see also the Hector build instructions).
On Ubuntu/Debian these can be installed by invoking
sudo apt-get install libboost-filesystem-dev libboost-system-dev
On macOS Boost is available through the Homebrew package manager, it might be advisable to use a Homebrew installed Python for installing pyhector:
brew install boost
Windows is (as Hector) in principle supported but not yet tested for pyhector. Pull request with installation notes for Windows are welcome.
Install using pip
You can install pyhector from PyPI by invoking
pip install pyhector
Usage
This repository also contains a Jupyter Notebook you can run live and experiment with, courtesy of the Binder project. The notebook can be viewed as a static version using nbviewer.
Basic example
import pyhector
output = pyhector.run(pyhector.ssp126)
Advanced example
import pyhector
import matplotlib.pyplot as plt
from pyhector import ssp119, ssp126, ssp245, ssp370, ssp434, ssp460, ssp534_over, ssp585
for ssp in [ssp119, ssp126, ssp245, ssp370, ssp434, ssp460, ssp534_over, ssp585]:
output = pyhector.run(ssp, {"core": {"endDate": 2100}})
temp = output["temperature.global_tas"]
temp = temp.loc[1850:] - temp.loc[1850:1900].mean()
temp.plot(label=ssp.name)
plt.title("Global mean temperature")
plt.ylabel("°C over pre-industrial (1850-1900 mean)")
plt.legend(loc="best")
plt.show()
Development
For local development you can clone the repository, update the dependencies and install in a virtual environment with pip.
git clone https://github.com/openclimatedata/pyhector.git --recursive
cd pyhector
python3 -m venv venv
./venv/bin/pip install --editable --verbose .
To update pyhector and all submodules you can run
git pull --recurse-submodules
git submodule update --init --recursive
./venv/bin/pip install --editable .
Tests can be run locally with
python setup.py test
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.