pyhector

pyhector: A Python interface for the simple climate model Hector - Published in JOSS (2017)

https://github.com/openclimatedata/pyhector

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

climate-model hector-model python-wrapper

Keywords from Contributors

magicc-model

Scientific Fields

Engineering Computer Science - 60% confidence
Last synced: 6 months ago · JSON representation

Repository

Python interface for the simple global climate carbon-cycle model Hector

Basic Info
Statistics
  • Stars: 44
  • Watchers: 6
  • Forks: 10
  • Open Issues: 4
  • Releases: 15
Topics
climate-model hector-model python-wrapper
Created about 9 years ago · Last pushed almost 2 years ago
Metadata Files
Readme Changelog Contributing License Zenodo

README.rst

pyhector
========

+----------------+------------------------+
| |PyPI Version| | |PyPI Python Versions| |
+----------------+------------------------+
| |Docs|         | |Launch Binder|        |
+----------------+------------------------+
| |JOSS|         | |Zenodo|               |
+----------------+------------------------+

.. sec-begin-index

**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.

.. sec-end-index
.. sec-begin-installation

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

.. code:: bash

    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**:

.. code:: bash

    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

.. code:: bash

    pip install pyhector

.. sec-end-installation
.. sec-begin-usage

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
~~~~~~~~~~~~~

.. code:: python

    import pyhector

    output = pyhector.run(pyhector.ssp126)

Advanced example
~~~~~~~~~~~~~~~~

.. code:: python

    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()

.. image-start

.. image:: ./docs/example-plot.png
    :alt: Temperature Plot of RCP scenarios

.. image-end
.. sec-end-usage
.. sec-begin-development

Development
-----------

For local development you can clone the repository, update the
dependencies and install in a virtual environment with ``pip``.

.. code:: bash

    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

.. code:: bash

    git pull --recurse-submodules
    git submodule update --init --recursive
    ./venv/bin/pip install --editable .

Tests can be run locally with

::

    python setup.py test

.. sec-end-development

.. |PyPI Python Versions| image:: https://img.shields.io/pypi/pyversions/pyhector.svg
   :target: https://pypi.org/project/pyhector/
.. |PyPI Version| image:: https://img.shields.io/pypi/v/pyhector.svg
   :target: https://pypi.org/project/pyhector/
.. |Docs| image:: https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat
   :target: https://pyhector.readthedocs.io/en/latest/
.. |Launch Binder| image:: https://img.shields.io/badge/launch-binder-e66581.svg
   :target: https://mybinder.org/v2/gh/openclimatedata/pyhector/main?filepath=notebooks/index.ipynb
.. |JOSS| image:: https://img.shields.io/badge/JOSS-10.21105%2Fjoss.00248-brightgreen.svg
   :target: https://doi.org/10.21105/joss.00248
.. |Zenodo| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1194599.svg
   :target: https://zenodo.org/record/1194599

Owner

  • Name: Open Climate Data
  • Login: openclimatedata
  • Kind: organization
  • Location: Potsdam, Germany

JOSS Publication

pyhector: A Python interface for the simple climate model Hector
Published
April 28, 2017
Volume 2, Issue 12, Page 248
Authors
Sven N. Willner ORCID
Potsdam Institute for Climate Impact Research, University of Potsdam
Corinne Hartin ORCID
Joint Global Change Research Institute
Robert Gieseke ORCID
Potsdam Institute for Climate Impact Research
Editor
Arfon Smith ORCID
Tags
climate change simple climate model python-wrapper

GitHub Events

Total
  • Watch event: 4
  • Fork event: 1
Last Year
  • Watch event: 4
  • Fork event: 1

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 508
  • Total Committers: 3
  • Avg Commits per committer: 169.333
  • Development Distribution Score (DDS): 0.543
Past Year
  • Commits: 72
  • Committers: 2
  • Avg Commits per committer: 36.0
  • Development Distribution Score (DDS): 0.042
Top Committers
Name Email Commits
Robert Gieseke r****e@p****e 232
Sven Willner s****r@g****m 152
Robert Gieseke r****g@w****e 124
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 40
  • Total pull requests: 24
  • Average time to close issues: 2 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 5
  • Total pull request authors: 3
  • Average comments per issue: 1.83
  • Average comments per pull request: 1.21
  • Merged pull requests: 22
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • rgieseke (36)
  • swillner (1)
  • jamesmurdza (1)
  • russellhz (1)
  • tamara-goyea (1)
Pull Request Authors
  • rgieseke (19)
  • swillner (5)
  • ckingdon95 (1)
Top Labels
Issue Labels
enhancement (1) bug (1)
Pull Request Labels

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 48 last-month
  • Total docker downloads: 70
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 33
  • Total maintainers: 3
proxy.golang.org: github.com/openclimatedata/pyhector
  • Versions: 11
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
pypi.org: pyhector

Python wrapper for the Hector simple climate model

  • Versions: 22
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 48 Last month
  • Docker Downloads: 70
Rankings
Docker downloads count: 2.7%
Dependent packages count: 7.3%
Stargazers count: 10.5%
Forks count: 11.5%
Average: 13.3%
Dependent repos count: 22.1%
Downloads: 25.9%
Last synced: 6 months ago

Dependencies

dev-requirements.txt pypi
  • black * development
  • matplotlib * development
  • notebook * development
  • numpydoc * development
  • pybind11 >=2.2 development
  • pytest >=4.0 development
  • pytest-cov * development
  • sphinx >=1.4 development
  • sphinx-autobuild * development
  • tabulate * development
  • twine * development
  • wheel * development
docs/requirements.txt pypi
  • tabulate *
setup.py pypi
  • numpy *
Dockerfile docker
  • jupyter/scipy-notebook 2022-01-12 build
pyproject.toml pypi