pace
Implementation of the FV3GFS / SHiELD atmospheric model in Python
Science Score: 23.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
-
○DOI references
-
○Academic publication links
-
✓Committers with academic emails
3 of 30 committers (10.0%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.1%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Implementation of the FV3GFS / SHiELD atmospheric model in Python
Basic Info
- Host: GitHub
- Owner: ai2cm
- License: apache-2.0
- Language: Python
- Default Branch: main
- Homepage: https://ai2cm.github.io/pace/
- Size: 19.1 MB
Statistics
- Stars: 38
- Watchers: 6
- Forks: 12
- Open Issues: 21
- Releases: 2
Topics
Metadata Files
README.md
Pace
⚠️ READ-ONLY REPOSITORY ⚠️
Original development until
v0.2was executed under AI2 patronage. Maintenance and further development has been taken over by NOAA-GFDL and can be reached here.
Pace is an implementation of the FV3GFS / SHiELD atmospheric model developed by NOAA/GFDL using the GT4Py domain-specific language in Python. The model can be run on a laptop using Python-based backend or on thousands of heterogeneous compute nodes of a large supercomputer.
Full Sphinx documentation can be found at https://ai2cm.github.io/pace/.
Quickstart - bare metal
Build
Pace requires GCC > 9.2, MPI, and Python 3.8 on your system, and CUDA is required to run with a GPU backend. You will also need the headers of the boost libraries in your $PATH (boost itself does not need to be installed).
shell
cd BOOST/ROOT
wget https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.gz
tar -xzf boost_1_79_0.tar.gz
mkdir -p boost_1_79_0/include
mv boost_1_79_0/boost boost_1_79_0/include/
export BOOST_ROOT=BOOST/ROOT/boost_1_79_0
When cloning Pace you will need to update the repository's submodules as well:
shell
git clone --recursive https://github.com/ai2cm/pace.git
or if you have already cloned the repository:
git submodule update --init --recursive
We recommend creating a python venv or conda environment specifically for Pace.
shell
python3 -m venv venv_name
source venv_name/bin/activate
Inside of your pace venv or conda environment pip install the Python requirements, GT4Py, and Pace:
shell
pip3 install -r requirements_dev.txt -c constraints.txt
Shell scripts to install Pace on specific machines such as Gaea can be found in examples/build_scripts/.
Run
With the environment activated, you can run an example baroclinic test case with the following command:
```shell mpirun -n 6 python3 -m pace.driver.run driver/examples/configs/baroclinic_c12.yaml
or with oversubscribe if you do not have at least 6 cores
mpirun -n 6 --oversubscribe python3 -m pace.driver.run driver/examples/configs/baroclinic_c12.yaml ```
After the run completes, you will see an output direcotry output.zarr. An example to visualize the output is provided in driver/examples/plot_output.py. See the driver example section for more details.
Quickstart - Docker
Build
While it is possible to install and build pace bare-metal, we can ensure all system libraries are installed with the correct versions by using a Docker container to test and develop pace.
First, you will need to update the git submodules so that any dependencies are cloned and at the correct version:
shell
git submodule update --init --recursive
Then build the pace docker image at the top level.
shell
make build
Run
shell
make dev
mpirun --mca btl_vader_single_copy_mechanism none -n 6 python3 -m pace.driver.run /pace/driver/examples/configs/baroclinic_c12.yaml
Running translate tests
See the translate tests section for more information.
Repository structure
The top-level directory contains the main components of pace such as the dynamical core, the physical parameterizations and utilities.
This git repository is laid out as a mono-repo, containing multiple independent projects. Because of this, it is important not to introduce unintended dependencies between projects. The graph below indicates a project depends on another by an arrow pointing from the parent project to its dependency. For example, the tests for fv3core should be able to run with only files contained under the fv3core and util projects, and should not access any files in the driver or physics packages. Only the top-level tests in Pace are allowed to read all files.
ML emulation
An example of integration of an ML model replacing the microphysics parametrization is available on the feature/microphysics-emulator branch.
Owner
- Name: ai2cm
- Login: ai2cm
- Kind: organization
- Location: Seattle WA, USA
- Website: https://allenai.org/climate-modeling
- Twitter: ai2_climate
- Repositories: 26
- Profile: https://github.com/ai2cm
AI2 Climate Modeling
GitHub Events
Total
- Watch event: 1
- Fork event: 1
Last Year
- Watch event: 1
- Fork event: 1
Committers
Last synced: 6 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| rheacangeo | 5****o@u****m | 171 |
| Jeremy McGibbon | j****m@v****m | 156 |
| Elynn Wu | e****0@g****m | 146 |
| Jeremy McGibbon | m****n@u****u | 87 |
| Tobias Wicky | w****b@g****m | 64 |
| Johann Dahm | j****d@v****m | 60 |
| eddie-c-davis | 2****s@u****m | 60 |
| FlorianDeconinck | d****n@g****m | 52 |
| Rhea George | R****G@R****l | 50 |
| Jeremy McGibbon | j****m@a****g | 39 |
| Johann Dahm | j****m@g****m | 36 |
| oelbert | o****6@g****m | 36 |
| Chris Kung | c****g@n****v | 31 |
| dependabot[bot] | 4****]@u****m | 30 |
| Oliver Fuhrer | o****r@u****m | 27 |
| Christopher Kung | 6****g@u****m | 11 |
| Oliver Fuhrer | o****i@g****h | 9 |
| ajdas1 | a****1@g****m | 9 |
| Rhea George | r****g@v****m | 8 |
| Noah D Brenowitz | n****2@g****m | 6 |
| Oliver Watt-Meyer | o****m@v****m | 5 |
| Mark Cheeseman | M****C@v****m | 5 |
| Rhea George | r****g@a****g | 4 |
| Spencer Clark | s****k@g****m | 4 |
| dependabot-preview[bot] | 2****]@u****m | 4 |
| Brian Henn | b****n@a****g | 3 |
| Eddie Davis | e****d@v****m | 2 |
| Anna Kwa | a****k@v****m | 1 |
| brianhenn | b****n@g****m | 1 |
| yniederm | y****n@s****h | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 22
- Total pull requests: 92
- Average time to close issues: 3 months
- Average time to close pull requests: 8 days
- Total issue authors: 7
- Total pull request authors: 8
- Average comments per issue: 1.5
- Average comments per pull request: 1.53
- Merged pull requests: 27
- Bot issues: 0
- Bot pull requests: 53
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
- jdahm (8)
- elynnwu (4)
- FlorianDeconinck (4)
- mcgibbon (2)
- brianhenn (2)
- miaoneng (1)
- twicki (1)
Pull Request Authors
- dependabot[bot] (51)
- elynnwu (9)
- jdahm (9)
- mcgibbon (7)
- FlorianDeconinck (7)
- twicki (6)
- ajdas1 (1)
- oelbert (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 2
-
Total downloads:
- pypi 40 last-month
-
Total dependent packages: 0
(may contain duplicates) -
Total dependent repositories: 2
(may contain duplicates) - Total versions: 5
- Total maintainers: 4
proxy.golang.org: github.com/ai2cm/pace
- Documentation: https://pkg.go.dev/github.com/ai2cm/pace#section-documentation
- License: apache-2.0
-
Latest release: v0.2.0
published about 3 years ago
Rankings
pypi.org: pace-util
- Homepage: https://github.com/ai2cm/pace
- Documentation: https://pace-util.readthedocs.io/
- License: BSD license
-
Latest release: 0.9.0
published almost 4 years ago
Rankings
Dependencies
- python 3.8.13-bullseye@sha256 build
- ubuntu 20.04@sha256 build
- cftime * development
- dace >=0.14 development
- dask >=2021.10.0 development
- f90nml >=1.1.0 development
- fv3config >=0.9.0 development
- mpi4py * development
- nbmake * development
- netCDF4 * development
- numpy >=1.15 development
- pytest * development
- pytest-cov * development
- pytest-profiling * development
- pytest-regressions * development
- pytest-subtests * development
- xarray * development
- zarr * development
- recommonmark *
- sphinx >=1.4
- sphinx-argparse *
- sphinx-gallery *
- sphinx_rtd_theme *
- pre-commit *
- appdirs >=1.4.0
- bump2version *
- coverage *
- dask >=2021.10.0
- f90nml >=1.1.0
- flake8 ==3.8.4
- gcsfs >=0.7.0
- google-cloud-storage *
- h5netcdf *
- h5py >=2.10.0
- mypy ==0.790
- numcodecs >=0.7.2
- numpy >=1.15.
- pytest-cov *
- pytest-subtests *
- sphinx_rtd_theme *
- toolz *
- tox *
- wheel *