seager19

Replication of Seager et al. (2019) Nat. Clim. Chan. They used a simple-as-possible coupled model to explain the bias in the nino3.4 trend in climate models (CMIP5). This repository replicates/reproduces their work, shows that it also applies to CMIP6, and varies some of the parameters.

https://github.com/sdat2/seager19

Science Score: 59.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
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    3 of 6 committers (50.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.1%) to scientific vocabulary

Keywords

atmosphere-model climate-change-impacts coupled-model nature-climate-change ocean-model ocean-sciences pacific tropics

Keywords from Contributors

biodiversity biodiversity-informatics landcover landscape-connectivity landscape-ecology landscape-evolution oceanography fronts gaussian-mixture-models sobel-edge-detector
Last synced: 6 months ago · JSON representation

Repository

Replication of Seager et al. (2019) Nat. Clim. Chan. They used a simple-as-possible coupled model to explain the bias in the nino3.4 trend in climate models (CMIP5). This repository replicates/reproduces their work, shows that it also applies to CMIP6, and varies some of the parameters.

Basic Info
Statistics
  • Stars: 6
  • Watchers: 1
  • Forks: 0
  • Open Issues: 6
  • Releases: 1
Topics
atmosphere-model climate-change-impacts coupled-model nature-climate-change ocean-model ocean-sciences pacific tropics
Created over 5 years ago · Last pushed over 2 years ago
Metadata Files
Readme License Citation

README.md

seager19

Binder License: MIT Code style: black Python 3.8 Documentation Status Build Status Coverage Status python fort-c DOI

Model run results: https://wandb.ai/sdat2/seager19

Docker image for gfortran/gcc/cdf/conda: https://hub.docker.com/repository/docker/sdat2/seager19

Coupling over iterations with c_d=2.25e-3 over the Pacific with the land masked out in green

Purpose

A repository to contain, analyze, and expand upon the model from:

Seager et al. 2019, Nature Climate Change, Strengthening Tropical Pacific Zonal Sea Surface Temperature Gradient Consistent with Rising Greenhouse Gases

https://doi.org/10.1038/s41558-019-0505-x

Summary of their paper

  • There is a west-east warm-to-cold contrast in the Pacific.

  • State-of-the-art GCMs predict weakening contrast with GHG concentration.

  • In observations, it has increased.

  • Their simple linear equatorial coupled model agrees with observations when forced with ECMWF reanalysis product.

  • When forced with CMIP5 ensemble relative humidity and windspeed their model can reproduce the bias, highlighting these fields as the mechanism through which it is created.

Citation

The citation for their paper is:

bibtex @article{seager2019strengthening, title={Strengthening tropical Pacific zonal sea surface temperature gradient consistent with rising greenhouse gases}, author={Seager, Richard and Cane, Mark and Henderson, Naomi and Lee, Dong-Eun and Abernathey, Ryan and Zhang, Honghai}, journal={Nature Climate Change}, volume={9}, number={7}, pages={517--522}, year={2019}, url={https://doi.org/10.1038/s41558-019-0505-x}, publisher={Nature Publishing Group} }

Podcast

The paper is discussed in a podcast available at Deep Convection Season 1 Episode 5:

Deep Convection: Season 1 Episode 5

Specifically the time period 33:00-44:30.

Code

The code and data were taken from a Columbia University website:

This website is blocked from some IP addresses, such as the Cambridge VPN (probably my fault), and so you may need to try a different connection method if it doesn't load.

Setup

Get the Github repository

```bash

git clone https://github.com/sdat2/seager19.git

cd seager19

```

If you have root access and can install Linux packages

```bash

# Enforcing these versions is necessary to be able to use 70s fortran.
# If you would rather not change your version, you might be better off
# Using the docker image instead.

sudo apt-get install gfortran-4.8

sudo apt-get install gcc-4.8

sudo apt-get install --fix-missing libnetcdf-dev libnetcdff-dev

sudo apt-get install cloc  # brew install cloc for mac

```

If you want to make the docker environment yourself

```bash

docker build . -t sdat2/seager19:g4.8

docker push sdat2/seager19:g4.8

```

If you need to install the singularity environment

```bash

# on jasmin you would need to make a new tmp directory in your home directory
# to be able to install the quite large singularity environment e.g:

mkdir /home/users/sithom/tmp

# and then call the command to create the singularity object

TMPDIR=/home/users/sithom/tmp SINGULARITY_CACHEDIR=/home/users/sithom/tmp singularity pull docker://sdat2/seager19:g4.8

# and then to launch the envirnonment

singularity run seager19_g4.8.sif

```

Making the environment and testing it works (either in singularity or not)

```bash

# in case conda isn't activated:

conda init bash

source ~/.bash_profile

# activate the environment

conda activate ./env/

# test that the environment and package work before using:

make test        # Also downloads the data if needed.

```

Add optional features

```bash

make jupyter_pro  # adds timing etc.

make vscode_pro  # sets up nice autodoc, pylint etc.

make jupyter_dark  # dark mode for jupyter notebooks

# and to reverse this:

make jupyter_light

```

Examples of running the model

```bash

# default run:

python src/main.py name=cd_2.25 coup.c_d=2.25e-3

# Sweep through different levels of Raleigh friction

# values near the value in the paper
python src/main.py atm.eps_days=1.05,0.95,0.85,0.75,0.65,0.55 -m

python src/main.py atm.eps_days=1.7,1.8,1.85 -m 

python src/main.py atm.eps_days=0.7,0.8 -m 


# values from other papers quoted in the introduction to Romps (2014) "Raleigh Damping in the Free Troposphere"
python src/main.py atm.eps_days=1.25,1.8,2,2.5,3,5,10 -m

python src/main.py atm.eps_days=2.1,1.75,1.9 -m

# Seager91, Matsuno66, Yu97, Gill80, Chang82, Sugiyama09, Wu00
# breaks at 5, 10: Sugiyama09, Wu00. Breaks through tau.
# looks pretty strange at 3: Chang82.

python src/main.py atm.k_days=7,8,9,10 -m

# uncoupled run without syncing:
python src/main.py name=it_1 coup.iterations=1 coup.c_d=2.25e-3 wandb=false

```

To look at the commands to relicate the paper figures, see replicate.md.

Other handy commands for development of repo

Make a notebook with helpful magic functions for dark mode

```bash

make notebook name=your-notebook-name

```

New python script

```bash

make py name=src/to-new.py

```

Update docs of the src directory

```bash

make autodoc

```

Check where a variable is referenced in the ocean model

```bash

grep -R "f1prime" ocean/SRC

```

Get CMIP5 multimodel means from Columbia

http://kage.ldeo.columbia.edu:81/SOURCES/.LDEO/.ClimateGroup/.PROJECTS/.IPCC/.CMIP5/.MultiModelMeans/.MMM-v2.3/.historical/.Surface/data.cdf

http://kage.ldeo.columbia.edu:81/SOURCES/.LDEO/.ClimateGroup/.PROJECTS/.IPCC/.CMIP5/.MultiModelMeans/.MMM-v2.3/.rcp85/.Surface/data.cdf

CMIP6/CMIP5 bias mechanism data

https://docs.google.com/spreadsheets/d/1QrCLil7uHMRJECOoSL18uk2mvBwMLxqesXbZpUWh3ko/edit?usp=sharing

Owner

  • Name: Simon D.A. Thomas
  • Login: sdat2
  • Kind: user
  • Location: Cambridge, UK
  • Company: University of Cambridge @ai4er-cdt / British Antarctic Survey @antarctica

PhD candidate at Cambridge @ai4er-cdt. Interested in oceans, tropical cyclones, EVT & ML. https://orcid.org/0000-0001-7911-1659

GitHub Events

Total
Last Year

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 964
  • Total Committers: 6
  • Avg Commits per committer: 160.667
  • Development Distribution Score (DDS): 0.093
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Simon Thomas s****2@c****k 874
Simon Thomas s****n@s****l 46
Simon D.A. Thomas 3****2 27
dependabot[bot] 4****] 12
Simon Thomas s****n@u****k 3
Simon Thomas s****n@u****k 2

Issues and Pull Requests

Last synced: almost 2 years ago

All Time
  • Total issues: 22
  • Total pull requests: 40
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 9 days
  • Total issue authors: 1
  • Total pull request authors: 2
  • Average comments per issue: 2.18
  • Average comments per pull request: 0.58
  • Merged pull requests: 31
  • Bot issues: 0
  • Bot pull requests: 20
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
  • sdat2 (22)
Pull Request Authors
  • dependabot[bot] (20)
  • sdat2 (20)
Top Labels
Issue Labels
enhancement (4) hypothesis (1) documentation (1) bug (1)
Pull Request Labels
dependencies (20)

Dependencies

binder/requirements.txt pypi
  • cftime *
  • cmocean *
  • hydra *
  • hydra-core *
  • ipython *
  • jupyter *
  • jupyterlab *
  • jupyterthemes *
  • matplotlib *
  • nc-time-axis *
  • numpy *
  • omegaconf *
  • scipy *
  • seaborn *
  • tqdm *
  • uncertainties *
  • wandb *
  • xarray *
.github/workflows/ci.yaml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • codecov/codecov-action v3.1.0 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/fort-c.yml actions
  • actions/checkout v3 composite
.github/workflows/python.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4.2.0 composite
requirements/Dockerfile docker
  • ubuntu 16.04 build
binder/environment.yml pypi
requirements/dev-requirements.txt pypi
  • astropy * development
  • black * development
  • bottleneck * development
  • cdsapi * development
  • cftime * development
  • cmocean * development
  • coveralls * development
  • dask * development
  • eccodes * development
  • emukit * development
  • flake8 * development
  • flake8-docstrings * development
  • fortran-language-server * development
  • hydra-core * development
  • imageio * development
  • imageio-ffmpeg * development
  • ipython * development
  • isort * development
  • jupyter * development
  • jupyterlab * development
  • jupyterthemes * development
  • mathjax * development
  • matplotlib >=3.1 development
  • mypy * development
  • nbsphinx ==0.8.7 development
  • nbsphinx_link * development
  • nc-time-axis * development
  • netCDF4 * development
  • numba * development
  • numpy * development
  • pandas * development
  • pandoc * development
  • pint * development
  • pre-commit * development
  • pyDOE * development
  • pylint * development
  • pytest * development
  • python-dotenv * development
  • recommonmark * development
  • recursive_diff * development
  • requests * development
  • scipy * development
  • seaborn * development
  • sobol-seq * development
  • sphinx * development
  • sphinx-c-autodoc * development
  • sphinx-fortran * development
  • sphinx-markdown-tables * development
  • sphinx_autodoc_typehints * development
  • sphinx_rtd_theme * development
  • tqdm * development
  • typeguard * development
  • uncertainties * development
  • wandb * development
  • xarray ==0.17 development
  • zipfile38 * development
requirements/diff-requirements.txt pypi
  • Babel ==2.9.0
  • Bottleneck ==1.3.2
  • GitPython ==3.1.14
  • HeapDict ==1.0.1
  • Jinja2 ==2.11.3
  • MarkupSafe ==1.1.1
  • PyYAML ==5.4.1
  • Pygments ==2.8.1
  • QtPy ==1.9.0
  • Send2Trash ==1.5.0
  • Sphinx ==3.5.3
  • alabaster ==0.7.12
  • antlr4-python3-runtime ==4.8
  • anyio ==2.2.0
  • appdirs ==1.4.4
  • appnope ==0.1.2
  • argon2-cffi ==20.1.0
  • astroid ==2.5.1
  • async-generator ==1.10
  • attrs ==20.3.0
  • autopep8 ==1.5.6
  • autoreload ==0.1.2
  • backcall ==0.2.0
  • black ==20.8b1
  • bleach ==3.3.0
  • bokeh ==2.3.0
  • certifi ==2020.12.5
  • cffi ==1.14.5
  • cfgv ==3.2.0
  • cftime ==1.4.1
  • chardet ==4.0.0
  • click ==7.1.2
  • cloudpickle ==1.6.0
  • commonmark ==0.9.1
  • configparser ==5.0.2
  • cycler ==0.10.0
  • dask ==2021.3.1
  • decorator ==4.4.2
  • defusedxml ==0.7.1
  • distlib ==0.3.1
  • distributed ==2021.3.1
  • docker-pycreds ==0.4.0
  • docutils ==0.16
  • eccodes ==1.2.0
  • entrypoints ==0.3
  • filelock ==3.0.12
  • flake8 ==3.9.0
  • flake8-docstrings ==1.6.0
  • fsspec ==0.8.7
  • gitdb ==4.0.7
  • hydra-core ==1.0.6
  • identify ==2.2.1
  • idna ==2.10
  • imageio ==2.9.0
  • imagesize ==1.2.0
  • importlib-resources ==5.1.2
  • iniconfig ==1.1.1
  • ipykernel ==5.5.0
  • ipython ==7.22.0
  • ipython-genutils ==0.2.0
  • ipywidgets ==7.6.3
  • isort ==5.8.0
  • jedi ==0.18.0
  • json5 ==0.9.5
  • jsonschema ==3.2.0
  • jupyter ==1.0.0
  • jupyter-client ==6.1.12
  • jupyter-console ==6.4.0
  • jupyter-contrib-core ==0.3.3
  • jupyter-contrib-nbextensions ==0.5.1
  • jupyter-core ==4.7.1
  • jupyter-highlight-selected-word ==0.2.0
  • jupyter-latex-envs ==1.4.6
  • jupyter-nbextensions-configurator ==0.4.1
  • jupyter-packaging ==0.7.12
  • jupyter-server ==1.5.1
  • jupyterlab ==3.0.12
  • jupyterlab-pygments ==0.1.2
  • jupyterlab-server ==2.3.0
  • jupyterlab-widgets ==1.0.0
  • jupyterthemes ==0.20.0
  • lazy-object-proxy ==1.6.0
  • lesscpy ==0.14.0
  • llvmlite ==0.36.0
  • locket ==0.2.1
  • lxml ==4.6.3
  • matplotlib ==3.4.0
  • mccabe ==0.6.1
  • mistune ==0.8.4
  • msgpack ==1.0.2
  • mypy ==0.812
  • mypy-extensions ==0.4.3
  • nbclassic ==0.2.6
  • nbclient ==0.5.3
  • nbconvert ==6.0.7
  • nbformat ==5.1.2
  • nc-time-axis ==1.2.0
  • nest-asyncio ==1.5.1
  • netCDF4 ==1.5.6
  • nodeenv ==1.5.0
  • notebook ==6.3.0
  • numba ==0.53.1
  • omegaconf ==2.0.6
  • packaging ==20.9
  • pandas ==1.2.3
  • pandocfilters ==1.4.3
  • parso ==0.8.1
  • partd ==1.1.0
  • pathspec ==0.8.1
  • pathtools ==0.1.2
  • pexpect ==4.8.0
  • pickleshare ==0.7.5
  • pluggy ==0.13.1
  • ply ==3.11
  • pre-commit ==2.11.1
  • prometheus-client ==0.9.0
  • promise ==2.3
  • prompt-toolkit ==3.0.18
  • protobuf ==3.15.6
  • psutil ==5.8.0
  • ptyprocess ==0.7.0
  • py ==1.10.0
  • pycodestyle ==2.7.0
  • pycparser ==2.20
  • pydocstyle ==6.0.0
  • pyflakes ==2.3.1
  • pylint ==2.7.2
  • pyparsing ==2.4.7
  • pyrsistent ==0.17.3
  • pytest ==6.2.2
  • python-dateutil ==2.8.1
  • python-dotenv ==0.16.0
  • pytz ==2021.1
  • pyzmq ==22.0.3
  • qtconsole ==5.0.3
  • recommonmark ==0.7.1
  • regex ==2021.3.17
  • requests ==2.25.1
  • seaborn ==0.11.1
  • selenium ==3.141.0
  • sentry-sdk ==1.0.0
  • shortuuid ==1.0.1
  • smmap ==4.0.0
  • sniffio ==1.2.0
  • snowballstemmer ==2.1.0
  • sortedcontainers ==2.3.0
  • sphinx-autodoc-typehints ==1.11.1
  • sphinx-rtd-theme ==0.5.1
  • sphinxcontrib-applehelp ==1.0.2
  • sphinxcontrib-devhelp ==1.0.2
  • sphinxcontrib-htmlhelp ==1.0.3
  • sphinxcontrib-jsmath ==1.0.1
  • sphinxcontrib-qthelp ==1.0.3
  • sphinxcontrib-serializinghtml ==1.1.4
  • subprocess32 ==3.5.4
  • tblib ==1.7.0
  • terminado ==0.9.3
  • testpath ==0.4.4
  • toml ==0.10.2
  • toolz ==0.11.1
  • tqdm ==4.59.0
  • traitlets ==5.0.5
  • typed-ast ==1.4.2
  • typing-extensions ==3.7.4.3
  • urllib3 ==1.26.4
  • virtualenv ==20.4.3
  • wandb ==0.10.23
  • watchdog ==2.0.2
  • wcwidth ==0.2.5
  • webencodings ==0.5.1
  • widgetsnbextension ==3.5.1
  • wrapt ==1.12.1
  • xarray ==0.17.0
  • zict ==2.0.0
requirements/environment.yml pypi
requirements/package.txt pypi
requirements/pangeo.txt pypi
  • aiohttp *
  • astropy *
  • cftime *
  • cmip6_preprocessing *
  • cmocean *
  • coveralls *
  • dask *
  • eccodes *
  • gcsfs *
  • hydra-core *
  • intake *
  • intake-esm *
  • intake-xarray *
  • nc-time-axis *
  • netCDF4 *
  • numba *
  • numpy *
  • pandas *
  • pytest *
  • recursive_diff *
  • requests *
  • scipy *
  • seaborn *
  • tqdm *
  • typeguard *
  • uncertainties *
  • wandb *
  • zipfile38 *
requirements/requirements.txt pypi
  • astropy *
  • black *
  • bottleneck *
  • coveralls *
  • cython >=0.15.1
  • dask *
  • eccodes *
  • flake8 *
  • flake8-docstrings *
  • hydra-core *
  • imageio *
  • imageio-ffmpeg *
  • ipython *
  • isort *
  • jupyter *
  • jupyterlab *
  • jupyterthemes *
  • matplotlib >=3.3
  • mypy *
  • nbsphinx *
  • nc-time-axis *
  • netCDF4 *
  • numba *
  • numpy *
  • pandas *
  • pre-commit *
  • proj *
  • pylint *
  • pyshp *
  • pytest *
  • python-dotenv *
  • recommonmark *
  • scipy *
  • seaborn *
  • six *
  • sphinx *
  • sphinx-fortran *
  • sphinx-markdown-tables *
  • sphinx_autodoc_typehints *
  • sphinx_rtd_theme *
  • tqdm *
  • wandb *
  • wandb_summarizer *
  • xarray ==0.17
requirements/test-requirements.txt pypi
  • click * test
  • coverage * test
  • flake8 * test
  • python-dotenv * test
  • sphinx * test
  • virtualenv * test
setup.py pypi