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.
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
Keywords from Contributors
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
- Host: GitHub
- Owner: sdat2
- License: mit
- Language: Jupyter Notebook
- Default Branch: main
- Homepage: https://seager19.readthedocs.io/
- Size: 214 MB
Statistics
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 6
- Releases: 1
Topics
Metadata Files
README.md
seager19
Model run results: https://wandb.ai/sdat2/seager19
Docker image for gfortran/gcc/cdf/conda: https://hub.docker.com/repository/docker/sdat2/seager19

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:
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
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
- Website: https://sdat2.github.io/
- Twitter: SimonDAThomas
- Repositories: 37
- Profile: https://github.com/sdat2
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
Top Committers
| Name | 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 |
Committer Domains (Top 20 + Academic)
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
Pull Request Labels
Dependencies
- cftime *
- cmocean *
- hydra *
- hydra-core *
- ipython *
- jupyter *
- jupyterlab *
- jupyterthemes *
- matplotlib *
- nc-time-axis *
- numpy *
- omegaconf *
- scipy *
- seaborn *
- tqdm *
- uncertainties *
- wandb *
- xarray *
- actions/cache v3 composite
- actions/checkout v3 composite
- codecov/codecov-action v3.1.0 composite
- conda-incubator/setup-miniconda v2 composite
- actions/checkout v3 composite
- actions/checkout v3 composite
- actions/setup-python v4.2.0 composite
- ubuntu 16.04 build
- 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
- 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
- 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 *
- 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
- click * test
- coverage * test
- flake8 * test
- python-dotenv * test
- sphinx * test
- virtualenv * test