Metadata-Version: 2.1
Name: fair
Version: 2.1.2
Summary: Finite-amplitude Impulse Response (FaIR) simple climate model
Home-page: https://github.com/OMS-NetZero/FAIR
Author: Chris Smith, Nicholas Leach, Stuart Jenkins, Richard Millar, Zeb Nicholls, Myles Allen
Author-email: c.j.smith1@leeds.ac.uk, nicholas.leach@stx.ox.ac.uk, stuart.jenkins@wadham.ox.ac.uk, richard.millar@ouce.ox.ac.uk, zebedee.nicholls@climate-energy-college.org, myles.allen@ouce.ox.ac.uk
License: Apache 2.0
Keywords: simple,climate,model,temperature,forcing,emissions,emulator
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.7, <4
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: matplotlib
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: pooch
Requires-Dist: scipy
Requires-Dist: tqdm
Requires-Dist: xarray
Provides-Extra: docs
Requires-Dist: ipython; extra == "docs"
Requires-Dist: pandoc; extra == "docs"
Requires-Dist: sphinx==6.2.1; extra == "docs"
Requires-Dist: sphinx_rtd_theme==1.2.0; extra == "docs"
Provides-Extra: tests
Requires-Dist: codecov; extra == "tests"
Requires-Dist: nbmake; extra == "tests"
Requires-Dist: netCDF4; extra == "tests"
Requires-Dist: pytest-cov; extra == "tests"
Requires-Dist: pytest-console-scripts; extra == "tests"
Requires-Dist: pytest; extra == "tests"
Provides-Extra: deploy
Requires-Dist: build; extra == "deploy"
Requires-Dist: twine; extra == "deploy"
Requires-Dist: setuptools; extra == "deploy"
Requires-Dist: wheel; extra == "deploy"
Provides-Extra: dev
Requires-Dist: ipython; extra == "dev"
Requires-Dist: pandoc; extra == "dev"
Requires-Dist: sphinx==6.2.1; extra == "dev"
Requires-Dist: sphinx_rtd_theme==1.2.0; extra == "dev"
Requires-Dist: nbstripout; extra == "dev"
Requires-Dist: jupyter; extra == "dev"
Requires-Dist: ipywidgets; extra == "dev"
Requires-Dist: ipython; extra == "dev"
Requires-Dist: codecov; extra == "dev"
Requires-Dist: nbmake; extra == "dev"
Requires-Dist: netCDF4; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest-console-scripts; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: setuptools; extra == "dev"
Requires-Dist: wheel; extra == "dev"
Requires-Dist: bandit; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: isort; extra == "dev"
Requires-Dist: pydocstyle; extra == "dev"
Provides-Extra: dev-nodocs
Requires-Dist: nbstripout; extra == "dev-nodocs"
Requires-Dist: jupyter; extra == "dev-nodocs"
Requires-Dist: ipywidgets; extra == "dev-nodocs"
Requires-Dist: ipython; extra == "dev-nodocs"
Requires-Dist: codecov; extra == "dev-nodocs"
Requires-Dist: nbmake; extra == "dev-nodocs"
Requires-Dist: netCDF4; extra == "dev-nodocs"
Requires-Dist: pytest-cov; extra == "dev-nodocs"
Requires-Dist: pytest-console-scripts; extra == "dev-nodocs"
Requires-Dist: pytest; extra == "dev-nodocs"
Requires-Dist: build; extra == "dev-nodocs"
Requires-Dist: twine; extra == "dev-nodocs"
Requires-Dist: setuptools; extra == "dev-nodocs"
Requires-Dist: wheel; extra == "dev-nodocs"
Requires-Dist: bandit; extra == "dev-nodocs"
Requires-Dist: black; extra == "dev-nodocs"
Requires-Dist: flake8; extra == "dev-nodocs"
Requires-Dist: isort; extra == "dev-nodocs"
Requires-Dist: pydocstyle; extra == "dev-nodocs"

[![image](https://github.com/OMS-NetZero/FAIR/actions/workflows/checks.yml/badge.svg)](https://github.com/OMS-NetZero/FAIR/actions)
[![image](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/OMS-NetZero/FAIR/master?filepath=examples/basic_run_example.ipynb)
[![Documentation Status](https://readthedocs.org/projects/fair/badge/?version=latest)](http://fair.readthedocs.io/en/latest/?badge=latest)
[![image](https://zenodo.org/badge/DOI/10.5281/zenodo.1247898.svg)](https://doi.org/10.5281/zenodo.1247898)
[![image](https://codecov.io/gh/OMS-NetZero/FAIR/branch/master/graph/badge.svg)](https://codecov.io/gh/OMS-NetZero/FAIR)
[![image](https://img.shields.io/pypi/v/fair)](https://pypi.org/project/fair/) [![Anaconda-Server Badge](https://anaconda.org/chrisroadmap/fair/badges/version.svg)](https://anaconda.org/chrisroadmap/fair)

# FaIR

FaIR (the Finite-amplitude Impulse-Response) climate model is a simple
climate model, or *emulator*, useful for producing global mean
temperature projections from a wide range of emissions or prescribed
forcing scenarios.

## Requirements

-   python 3.7+

## Installation

### From the Python Package Index

    pip install fair

### From anaconda

    conda install -c chrisroadmap fair

### From source

Refer to [the
documentation](https://fair.readthedocs.io/en/latest/install.html)

## Usage

FaIR can be driven by emissions of greenhouse gases (GHGs) and
short-lived forcers (SLCFs), concentrations of GHGs, or effective
radiative forcing (ERF), with different input methods for different
species possible in the same run. If run concentration-driven, emissions
are back-calculated. Custom GHGs and SLCFs can be defined, and all
components are optional allowing experiments such as pulse-response
analyses to single forcers or gathering up non-CO~2~ species as an
aggregate forcing.

## Examples

The examples directory contains Jupyter notebooks with some
simple examples showing how to run FaIR and the standalone energy
balance model.

If you want to try this out online, [go
here](https://mybinder.org/v2/gh/OMS-NetZero/FAIR/master?filepath=examples/basic_run_example.ipynb).

## Important: A note about calibrating and constraining

FaIR is naive. It will run whatever climate scenario and climate
configuration you give it. If you violate the laws of physics, FaIR
won\'t stop you. For simple climate models as for complex, garbage in
leads to garbage out. More subtle to spot are those analyses with simple
climate models where the present day warming (or historical) is wrong or
the climate is warming too slowly or too quickly. At least, plot a
historical temperature reconstruction over your results and see if it
looks right.

We have produced IPCC AR6 Working Group 1 consistent probabilistic
ensembles to run with. The calibration data can be obtained
[here](https://doi.org/10.5281/zenodo.7694879). These parameter sets are
calibrated to CMIP6 models, run in a large Monte Carlo ensemble, and
constrained based on observed and assessed climate metrics. For an
example of how to use this calibration data set with SSP emissions, see
[this
example](https://docs.fairmodel.net/en/latest/examples/calibrated_constrained_ensemble.html).
If you\'re writing a paper using FaIR, you should use these. There\'ll
be a paper on this at some point, for now please cite the Zenodo DOI.

## Citation

If you use FaIR in your work, please cite the following references
depending on the version:

-   **v2.0+:** Leach, N. J., Jenkins, S., Nicholls, Z., Smith, C. J.,
    Lynch, J., Cain, M., Walsh, T., Wu, B., Tsutsui, J., and Allen, M.
    R.: FaIRv2.0.0: a generalized impulse response model for climate
    uncertainty and future scenario exploration, Geosci. Model Dev., 14,
    3007--3036, <https://doi.org/10.5194/gmd-14-3007-2021>, 2021
-   **v1.1-v1.6**: Smith, C. J., Forster, P. M., Allen, M., Leach, N.,
    Millar, R. J., Passerello, G. A., and Regayre, L. A.: FAIR v1.3: A
    simple emissions-based impulse response and carbon cycle model,
    Geosci. Model Dev.,
    <https://doi.org/10.5194/gmd-11-2273-2018>, 2018.
-   **v1.0** (or the concept of the state-dependent impulse-response
    function for CO<sub>2</sub>): Millar, R. J., Nicholls, Z. R., Friedlingstein,
    P., and Allen, M. R.: A modified impulse-response representation of
    the global near-surface air temperature and atmospheric
    concentration response to carbon dioxide emissions, Atmos. Chem.
    Phys., 17, 7213-7228,
    <https://doi.org/10.5194/acp-17-7213-2017>, 2017.
