gmdsi_notebooks
python-based predictive groundwater modeling workflow examples
Science Score: 49.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 2 DOI reference(s) in README -
○Academic publication links
-
✓Committers with academic emails
1 of 10 committers (10.0%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.7%) to scientific vocabulary
Keywords from Contributors
Repository
python-based predictive groundwater modeling workflow examples
Basic Info
Statistics
- Stars: 86
- Watchers: 15
- Forks: 49
- Open Issues: 6
- Releases: 1
Metadata Files
README.md
Decision Support Modelling Notebooks
We have produced a series of tutorial notebooks to assist modellers in setting up and using model-partner software in ways that support the decision-support imperatives of data assimilation and uncertainty quantification. These tutorials provide an introduction to both the concepts and the practicalities of undertaking decision-support groundwater modelling with the PEST/PEST++ and pyEMU suites of software. Their aim is to provide examples of both how to use the software as well as how to think about using the software.
Notebook Contents
We have endeavoured to make these tutorials as accessible to as many people as possible. Workflows demonstrated herein are implemented programmatically in Python, employing functionality to interface with PEST/PEST++ available in pyEMU. However, concepts and the general approaches described are not limited to programmatic workflows. If you are interested in understanding how to implement pyEMU workflows, then you are encouraged to complete the jupyter notebooks yourself. If you just want to get a high-level understanding of decision-support modelling concepts and software, then you can simply read through the notebooks without having to run the code yourself.
GMDSI has also produced a separate set of tutorials which demonstrate non-programmatic approaches to working with PEST/PEST++ available here.
Pre-requisites (nice to have; not required)
- Basic understanding of Python
- Basic understanding of Jupyter Notebooks
- Basic understanding of MODFLOW 6
Familiarity with git would be a bonus, but not fundamental.
Organization of the Tutorial Notebooks
The notebooks in the tutorial folder are organized in three main parts:
- part 0: this is introductory background material that can be referred to for more detail on special topics. This includes the synthetic "freyberg" model used throughout the exercises, the pyemu python package that is used to interface with PEST++, and some of the mathematical concepts that come up throughout the tutorial notebooks. Note that the part1_02_pest_setup/freyberg_pest_setup.ipynb notebook provides valuable context that will help with understanding the pyemu introduction.
- part 1: this part covers the Gauss-Levenberg Marquardt approach to parameter estimation and associated uncertainty analysis. This was the foundation of the PEST software for multiple decades and the theory continues to resonate through newer techniques
- part 2: this part expands largely into ensemble-based parameter estimation and uncertainty analysis methods using PEST++. Advanced topics include management optimization and sequential data assimilation.
To run the Part 0 notebooks The part 0 notebooks can be run in any order and do not depend on each other. We recommend, in particular, the first 3 topics as background for the rest of the tutorials, but the remaining part 0 notebooks stand alone for more theoretical basis and a reference for topics covered later.
To run the Part 1 notebooks The part 1 notebooks can also be run in any order and do not depend on each other.
To run the Part 2 notebooks
If you are going to go through the Part2 notebooks, you will need to run them in the following order: 1. part201pstfrompestsetup/freybergpstfrompestsetup.ipynb 2. part202obsandweights/freybergobsandweights.ipynb
From here you can optionally run each of the following sequences:
Prior Monte Carlo: 1. part203priormontecarlo/freybergpriormonte_carlo.ipynb
GLM and data worth: 1. part204glm/freybergglm1.ipynb 2. part205fosmanddataworth/freybergfosmanddataworth.ipynb 3. part204glm/freybergglm_2.ipynb
PEST++IES: 1. part206ies/freybergies1basics.ipynb 2. part206ies/freybergies2localization.ipynb
PEST++DA: 1. part207da/freybergdaprep.ipynb 2. part207da/freybergdarun.ipynb
PEST++OPT: 1. part208opt/freybergopt1.ipynb 2. part208opt/freybergopt2.ipynb
PEST++MOU: 1. part209mou/freybergmou1.ipynb 2. part209mou/freybergmou2.ipynb
IMPORTANT NOTE: When running some of these notebooks, PEST++ undertakes parallel model runs for computational efficiency. These runs are coordinated using internet communication protocols (e.g. TCP/IP). As a result, it is common (but not universal) that the first time a set of parallel runs is launched, a Windows Defender (or similar popup on other operating systems) box appears warning the user. This box can simply be closed by clicking "cancel" and then the model runs should proceed without issue.
Installation Instructions
Download the course repository:
You can do this in one of two ways. - (1) (easier) Download the repo as a zip file from here: GMDSI_notebooks. Unzip the folder and work from there. - (2) (recommended; requires familiarity with git). Install git following directions here: Git. Sign-up for a GitHub account, then clone the repo GMDSI_notebooks.
Install Python and dependencies:
- If you have already installed Python using Anaconda, you can skip this step. If not, install miniforge.
- If you are using Windows: go to the start menu and open "Anaconda prompt". An anaconda command line window will open. On Linux or MacOS, just use the standard terminal. Navigate to the course repo folder on your machine. You can accomplish this by typing "cd your folder path" and pressing < enter >. Replace your folder path with the path to the course material folder on your computer.
- Next, type mamba env create -f environment.yml (or conda env create -f environment.yml if mamba doesn't work for you). This will create an anaconda environment called "gmdsitut" and install the python dependencies required for this course. It may take a while. Should you wish, you can inspect the environment.yml file in the repo folder to see what dependencies are being installed.
Start jupyter notebook
You will need to do this step any time you wish to open one of the course notebooks.
To start up the jupyter notebook:
- Windows: open the Anaconda prompt and type conda activate gmdsitut
- Mac/Linux: open a termainal and type conda activate gmdsitut
- Then navigate to folder where you downloaded the course materials repo and type jupyter notebook
A jupyter notebook instance should start within the course repo flder. Using the browser, you can now navigate to the "tutorials" folder and open one and you are in business!
# Acknowledgments
These tutorials were originally developed with support from the U.S Geological Survey (USGS) and support from USGS continues. Continued development and support is funded by the Groundwater Modelling Decision Support Initiative (GMDSI). GMDSI is jointly funded by BHP and Rio Tinto.
Reference
To reference this material, please use the following: Hugman, R., White, J.T., Fienen, M.N., and Hunt, R.J., 2022, Parameter Estimation, Uncertainty Analysis, and Optimization with the PEST++ Family of codes: Tutorial Jupyter Notebooks: U.S. Geological Survey data release, https://doi.org/10.5066/P901F9G0.
Owner
- Name: gmdsi
- Login: gmdsi
- Kind: organization
- Repositories: 2
- Profile: https://github.com/gmdsi
GitHub Events
Total
- Create event: 1
- Commit comment event: 1
- Issues event: 8
- Watch event: 24
- Issue comment event: 8
- Push event: 8
- Pull request event: 5
- Fork event: 11
Last Year
- Create event: 1
- Commit comment event: 1
- Issues event: 8
- Watch event: 24
- Issue comment event: 8
- Push event: 8
- Pull request event: 5
- Fork event: 11
Committers
Last synced: 8 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Mike Fienen | m****n@u****v | 98 |
| rhugman | r****n@g****m | 64 |
| jdub | j****0@g****m | 38 |
| jdub | J****e@l****l | 32 |
| briochh | b****s@.****z | 12 |
| rhugman | 6****a | 4 |
| Katherine Markovich | k****h@i****m | 2 |
| edesousa-intera | e****a@i****m | 1 |
| Mike Taves | m****s@g****m | 1 |
| Brioch Hemmings | b****h@g****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 7 months ago
All Time
- Total issues: 6
- Total pull requests: 21
- Average time to close issues: 6 days
- Average time to close pull requests: 25 days
- Total issue authors: 6
- Total pull request authors: 5
- Average comments per issue: 0.67
- Average comments per pull request: 0.19
- Merged pull requests: 18
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 5
- Pull requests: 7
- Average time to close issues: 6 days
- Average time to close pull requests: 3 months
- Issue authors: 5
- Pull request authors: 4
- Average comments per issue: 0.8
- Average comments per pull request: 0.14
- Merged pull requests: 5
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- mgozdor2 (1)
- Daniel-Trung-Nguyen (1)
- jgallegos554 (1)
- Paszka1 (1)
- havenoideaaboutit (1)
- Hugovdberg (1)
Pull Request Authors
- mnfienen (10)
- jtwhite79 (4)
- kmarkovich-intera (3)
- rhugman (2)
- mwtoews (2)
- CooperGarth (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/cache v3 composite
- actions/checkout v2 composite
- conda-incubator/setup-miniconda v2 composite