Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v0.1.0 #33

Merged
merged 146 commits into from
Aug 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
146 commits
Select commit Hold shift + click to select a range
3f91771
update dependencies
crvernon Jan 5, 2023
2c340ec
add data loading protocol
crvernon Jan 5, 2023
047d0a0
add function for flow generation
crvernon Jan 5, 2023
291dd2b
working
crvernon Jan 5, 2023
19f9878
nojekyll for github pages
crvernon Jan 5, 2023
15b91af
update docstring for modify_ddm function
crvernon Jan 5, 2023
ff2b121
add example to docstring for modify_ddm function
crvernon Jan 5, 2023
8f7670a
update docstring for modify_eva function
crvernon Jan 5, 2023
e8db24e
update codeblock examples
crvernon Jan 5, 2023
a6a4f65
update docs templates
crvernon Jan 5, 2023
bd6d832
add XddConverter for parsing xdd files to parquet
thurber Jan 10, 2023
22d9c56
add deps to setup.py
thurber Jan 10, 2023
f31587d
add XddConverter to README
thurber Jan 10, 2023
05d351e
allow classless conversion of xdd files; update documentation
thurber Jan 10, 2023
ca231f9
Merge pull request #15 from IMMM-SFA/feature/output-processing
thurber Jan 10, 2023
bc6f1e1
working on generalization
crvernon Jan 10, 2023
01871a3
sample generator generalized code
crvernon Jan 12, 2023
9627833
tests for sampler
crvernon Jan 12, 2023
afa6e31
extract generalized functions from eva code
crvernon Jan 12, 2023
0a2bd50
add test file to data in package
crvernon Jan 12, 2023
629649c
remove transpose from sample generator
crvernon Jan 12, 2023
733646f
add tests and setup for eva
crvernon Jan 12, 2023
4da83fb
update sampler to fill names if needed
crvernon Jan 12, 2023
53fa72a
remove unneccesary parens
crvernon Jan 12, 2023
ee010bc
enable fill for names for eva function
crvernon Jan 12, 2023
9ba3e41
Merge branch 'bug/eva' into dev
crvernon Jan 12, 2023
ffc804d
Merge pull request #17 from IMMM-SFA/dev
crvernon Jan 12, 2023
db69c70
Revert "Repair and update current functionality for `eva` file modifi…
crvernon Jan 12, 2023
383b996
Merge pull request #18 from IMMM-SFA/revert-16-bug/eva
crvernon Jan 12, 2023
dd1e7c6
update docs for API
crvernon Jan 12, 2023
221ef46
add validate bounds param
crvernon Jan 16, 2023
3344aed
add tests for validate bounds
crvernon Jan 16, 2023
cce9e21
option for eva to use factor method
crvernon Jan 16, 2023
7da2748
fix notice message
crvernon Jan 16, 2023
9451b29
fix test failure due to factor add
crvernon Jan 16, 2023
cfa9470
add in validation of bounds to eva
crvernon Jan 16, 2023
f34213a
fix merge conflicts
crvernon Jan 17, 2023
7b5f174
fix merge issues
crvernon Jan 17, 2023
7c5099f
update files from merge
crvernon Jan 17, 2023
5c54d4a
Merge pull request #19 from IMMM-SFA/bug/eva
crvernon Jan 17, 2023
3cfaf24
reconfigure utils to modify and add flexible config for versions
crvernon Jan 17, 2023
933a62b
change import from utils to modify
crvernon Jan 17, 2023
45ba0ee
add tests for data class
crvernon Jan 17, 2023
78b37f4
working on eva rebase to new generalization
crvernon Jan 17, 2023
5d14c56
add eva data spec template yaml
crvernon Jan 18, 2023
6c513f9
setup ddm modifer and tests
crvernon Jan 18, 2023
b399e71
ensure correct precision and format for ddm
crvernon Jan 18, 2023
f892813
fix typo in test
crvernon Jan 18, 2023
aa86f06
initial ddr data spec yaml
crvernon Jan 18, 2023
b47df95
working on ddr setup
crvernon Jan 18, 2023
528021d
fix typo in docstrings
crvernon Jan 18, 2023
b694e31
Merge pull request #20 from IMMM-SFA/bug/ddm
crvernon Jan 18, 2023
d76c34e
initial ddr decree mod feature
crvernon Jan 18, 2023
21de677
functionality for on_off modification to ddr
crvernon Jan 19, 2023
2b86bc0
start working on ddr admin ranking
crvernon Jan 19, 2023
18628cd
working on ddr value set
crvernon Jan 30, 2023
0e776e4
set ddr tests
crvernon Jan 31, 2023
7519759
only run sampler when needed
crvernon Jan 31, 2023
a5b9620
add option for seniority setting
crvernon Jan 31, 2023
0bb3c16
add test for seniority setting
crvernon Jan 31, 2023
fcce014
merge upstream feature branch
crvernon Jan 31, 2023
d8031e1
update docs
crvernon Jan 31, 2023
29c9879
add refs
crvernon Jan 31, 2023
6c24d8f
fix admin seniority trailing zeros
crvernon Feb 1, 2023
088ba99
Merge branch 'feature/ddr' into feature/xbm-iwr
crvernon Feb 1, 2023
0674af2
add template xbm and iwr files
crvernon Feb 18, 2023
2c46651
working in disagg for xbm iwr
crvernon Feb 18, 2023
2177a04
add in options for replace in modify
crvernon Feb 19, 2023
ff1f491
add iwr spec sheet
crvernon Feb 19, 2023
ab8466f
prep for xbm iwr fit
crvernon Feb 19, 2023
8aac3c4
set data spec classes and initiate hmm workhorse fn
crvernon Feb 19, 2023
a31630f
working
crvernon Mar 22, 2023
f6c87eb
fix pyversion ref
crvernon Mar 22, 2023
10b05aa
initialize quickstarter
crvernon Mar 23, 2023
bfe0971
roll credits
crvernon Mar 24, 2023
a6f9b05
Merge pull request #22 from IMMM-SFA/feature/credits
crvernon Mar 24, 2023
c9250e5
fix package dep
crvernon Mar 24, 2023
277e7b2
working
crvernon Mar 27, 2023
c220fb7
new spec for hmm xbm iwr
crvernon Mar 30, 2023
9416d95
prep sample builder for xbm iwr
crvernon Mar 30, 2023
2bbc4e6
add full build of lhs
crvernon Mar 31, 2023
d705780
update doc string with example
crvernon Mar 31, 2023
bbe6473
update full sampler
crvernon Mar 31, 2023
2b84241
fix missing test argument
crvernon Mar 31, 2023
e4ee1ea
functional test
crvernon Mar 31, 2023
3a3ac74
suppress runtime warning
crvernon Mar 31, 2023
3a4beb0
working on res
crvernon Apr 1, 2023
ad4759d
fix true divide
crvernon Apr 2, 2023
71ee9af
initial res mod code
crvernon Apr 3, 2023
cd5d147
add docstring to single mod fn
crvernon Apr 3, 2023
12f56b4
add fn to get list of all structure ids
crvernon Apr 3, 2023
c5846bd
add sampling fn for parallel
crvernon Apr 3, 2023
0bb78ff
fix structure id out list fn
crvernon Apr 3, 2023
b24bbfd
multiply sto-1 by sample
crvernon Apr 5, 2023
ddaf213
add ignore phantom structures
crvernon Apr 5, 2023
cb77651
add tests
crvernon Apr 5, 2023
52841d3
Merge pull request #24 from IMMM-SFA/feature/res
crvernon Apr 6, 2023
eb28705
Merge branch 'dev' into feature/xbm-iwr
crvernon Apr 6, 2023
a00567b
Merge pull request #23 from IMMM-SFA/feature/xbm-iwr
crvernon Apr 6, 2023
eeab7c5
generalize templates for xbm-iwr
crvernon Apr 6, 2023
36681e5
generalize templates for ddm
crvernon Apr 6, 2023
96f909b
generalize templates for ddr
crvernon Apr 6, 2023
02cd361
generalize templates for eva
crvernon Apr 6, 2023
3d54f00
generalize templates for res
crvernon Apr 6, 2023
e01cdd7
remove old test data
crvernon Apr 6, 2023
b414cf0
fix template test
crvernon Apr 6, 2023
87eb97e
fix tests
crvernon Apr 6, 2023
93f4ad4
fix covariance multiplier
crvernon Apr 11, 2023
a70b9aa
Merge pull request #26 from IMMM-SFA/feature/hmm
crvernon Apr 13, 2023
3ff3c61
Merge pull request #25 from IMMM-SFA/feature/templates
crvernon Apr 13, 2023
a8e1584
add save_sample option to write sample to file
crvernon Apr 13, 2023
5be3992
Merge pull request #27 from IMMM-SFA/feature/return-sample
crvernon Apr 13, 2023
fc06ff2
change output file name format
crvernon May 18, 2023
57de6f2
remove declaration of names
crvernon May 18, 2023
55430af
remove declaration of names
crvernon May 18, 2023
ba8b75b
use only ids for sample
crvernon May 19, 2023
3f25a9d
change ddm tests to new format
crvernon May 19, 2023
a11efa3
update ddr with new modify dict format
crvernon May 19, 2023
1f9bb02
update eva with new modifiy dict protocol
crvernon May 19, 2023
ed18e9f
remove unneeded data
crvernon May 19, 2023
5f543b9
update res protocol for output file name
crvernon May 19, 2023
af8c582
remove unneeded file
crvernon May 19, 2023
d1641d3
update output file name protocol for xbm iwr
crvernon May 19, 2023
578cf7b
reconfigure tests to account for changes
crvernon May 19, 2023
c5c4a65
fix docstring
crvernon May 19, 2023
f706e39
remove hardcoded path
crvernon May 19, 2023
424f4ac
set optional bounds value in dict
crvernon May 19, 2023
47151e8
add xre extractor functionality and tests
crvernon May 19, 2023
d2cd495
add xre templates for all basins
crvernon May 19, 2023
b720349
make res sample only include rstorage
crvernon May 19, 2023
85bf9b9
Merge pull request #30 from IMMM-SFA/bug/res-sample
crvernon May 19, 2023
9e3ef51
add baseline B to each template as suffix
crvernon May 19, 2023
e5b1982
file name in test adjustment
crvernon May 19, 2023
1f0110a
Merge branch 'feature/xre' of https://github.com/IMMM-SFA/statemodify…
crvernon May 19, 2023
321faf8
Merge pull request #29 from IMMM-SFA/feature/xre
crvernon May 19, 2023
454335a
Merge pull request #28 from IMMM-SFA/feature/ddm-sampler
crvernon May 19, 2023
e013b67
add sample array as an external option
crvernon May 25, 2023
5226d5e
add batch processing functionality
crvernon May 25, 2023
5728489
Merge pull request #31 from IMMM-SFA/feature/batch
crvernon May 25, 2023
1bc0ad0
update ddr sampling scheme in batch function
crvernon May 25, 2023
8fec46d
update to new hmm and plotting
crvernon Jul 26, 2023
18d31fb
add missing test data
crvernon Jul 26, 2023
5880bea
add missing comma
crvernon Jul 26, 2023
102984d
update api docs
crvernon Jul 26, 2023
4670d27
Merge pull request #32 from IMMM-SFA/feature/trace
rg727 Aug 1, 2023
3cb1957
removed extra parenthesis in hmm.py file
Aug 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# pycharm
.idea/

# other
_static

# system
.DS_Store

Expand Down
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
include statemodify/data/*.*
include statemodify/tests/data/*.*
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,24 @@ stm.modify_ddm(modify_dict=setup_dict,
query_field=query_field,
template_file=template_file)
```

### Convert output .xdd files to .parquet files
Parquet files are efficient columnar data stores that easily interoperate with pandas dataframes.
```python
from statemodify.xdd import XddConverter

# set up the converter
converter = XddConverter(
output_path='./output',
allow_overwrite=False,
xdd_files='**/*.xdd',
id_subset=None,
parallel_jobs=4,
)

# convert the files
converter.convert()

# look for your parquet files in './output'!

```
File renamed without changes.
20 changes: 20 additions & 0 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = source
BUILDDIR = build

# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
35 changes: 35 additions & 0 deletions docs/make.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
@ECHO OFF

pushd %~dp0

REM Command file for Sphinx documentation

if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build

%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.https://www.sphinx-doc.org/
exit /b 1
)

if "%1" == "" goto help

%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end

:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%

:end
popd
104 changes: 104 additions & 0 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
# Configuration file for the Sphinx documentation builder.
#
# For the full list of built-in configuration values, see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html

import sys
import os

sys.path.insert(0, os.path.abspath('.'))
sys.path.insert(0, os.path.abspath('../'))
sys.path.insert(0, os.path.abspath('../../'))

# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information

project = 'statemodify'
copyright = '2023, Battelle Memorial Institute'
author = 'Rohini S. Gupta'

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
from statemodify import __version__ as version

# The full version, including alpha/beta/rc tags.
release = version

# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.autosectionlabel',
'sphinx.ext.autosummary',
'sphinx.ext.duration',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.napoleon',
'sphinx.ext.viewcode',
'sphinx_autodoc_typehints',
'sphinx_click',
'sphinx_copybutton',
]

intersphinx_mapping = {
'python': ('https://docs.python.org/3/', None),
'sphinx': ('https://www.sphinx-doc.org/en/master/', None),
}
intersphinx_disabled_domains = ['std']

templates_path = ['_templates']

# The main toctree document.
main_doc = 'index'

pygments_style = None
autosummary_generate = True
napolean_use_rtype = False

# -- Options for autodoc

# Python methods should be presented in source code order
autodoc_member_order = 'bysource'

# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output


html_theme = 'sphinx_book_theme'

html_theme_options = {
'logo_only': True,
'repository_url': 'https://github.com/IMMM-SFA/statemodify',
'use_repository_button': True,
'use_issues_button': True,
'use_edit_page_button': True,
'path_to_docs': 'docs/source',
}

# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
html_title = 'statemodify documentation'

# -- Options for EPUB output
epub_show_urls = 'footnote'

# -- Options for sphinx-copybutton
copybutton_prompt_text = r'\$ '
copybutton_prompt_is_regexp = True

html_show_sourcelink = False

# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
html_logo = 'images/logo_statemodify.png'

# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico), 16x16 or 32x32 pixels.
html_favicon = '_static/favicon.ico'

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named 'default.css' will overwrite the builtin 'default.css'.
html_static_path = ['_static']
2 changes: 2 additions & 0 deletions docs/source/examples/modify-inputs.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Modify Inputs
=================
17 changes: 17 additions & 0 deletions docs/source/getting-started/installation.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Installation
============

Install ```statemodify``` using pip:

.. code-block:: console

$ # statemodify requires python >= 3.8.
$ pip install statemodify

You may also install ```statemodify``` from source.

.. code-block:: console

$ git clone https://github.com/IMMM-SFA/statemodify.git
$ cd statemodify
$ pip install .
2 changes: 2 additions & 0 deletions docs/source/getting-started/quickstarter.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Quickstarter
==============
2 changes: 2 additions & 0 deletions docs/source/getting-started/tutorial.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Tutorial
============
Binary file added docs/source/images/figure_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/source/images/logo_statemodify.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
94 changes: 94 additions & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
Welcome to **statemodify**!
--------------------------------

**statemodify** is a python-based framework that provides users with a way to easily interact with StateMod in a linux-based environment. As demonstrated in Figure 1, the **statemodify** framework is comprised of 4 key steps:

.. raw:: html

<ol>
<li>The user will first be able to initialize a cluster in a clean environment, download and compile a StateMod executable, and download/import all other python packages that are required.</li>
<li><p>Next, the user will step through a series of methods that are created to facilitate manipulating and overwriting the historical StateMod files to represent plausible future conditions. For example:</p>
<ul>

<li><b>.xbm</b> files (monthly streamflow): can be overwritten with synthetic streamflows that are simultaneously generated across five key Colorado west-slope basins that represent plausible future flood/drought conditions. We currently implement a multi-basin Hidden Markov Model-based approach to generate these flows.</li>
<li><b>.iwr</b> files (monthly irrigation): can be overwritten in conjunction with <b>.xbm</b> files to maintain that irrigation demands will decrease with increasing flow.</li>
<li><b>.ddm</b>/<b>.eva</b>/<b>.opr</b> (demand, evaporation, operating rules): can be manipulated with multipliers (i.e. impose a 20% increase in municipal demands, increase reservoir evaporation, adjust operating rules)</li>
<li><b>.ddr</b> (water rights): can be manipulated to turn on/off users, and to change the seniority of users)</li>
<li><b>.res</b> (reservoir): can be manipulated to increase/decrease storage at specific reservoirs in each basin.</li>
</ul>

<p>The above are examples of methods that have been applied within our studies, but <b>statemodify</b> is flexible enough to accommodate new methods.</p></li>

<li>Once the input files are generated, we supply scripts that allow the user to run StateMod with a set of input files that represent plausible futures in parallel instances.</li>
<li>Finally, we store all relevant output in highly compressible parquet files that can be easily opened in Pandas dataframes. We also provide simple code to inspect shortages for specified users across futures.</li>
</ol>

.. figure:: images/figure_1.png
:alt: **statemodify** workflow

Figure 1: The statemodify framework is comprised of four key steps (1) initializing an environment to run StateMod, (2) creating alternative plausible futures across five key West Slope Basins in Colorado, (3) running StateMod across all generated scenarios and (4) compiling results in compact data frames for easy visualization.

Why do we need **statemodify**?
--------------------------------

Current Conditions
++++++++++++++++++++++++++++

In the Western United States, and particularly the Colorado River Basin, a recent study used tree-ring reconstructions to suggest that the megadrought that has been occurring in the Southwest over the past 22 years is the regions worst drought since about 800 AD (Williams et al., 2022). The recent trend of warming and reduced soil moisture in the Southwest US is becoming highly challenging from a water systems planning and management perspective for the Colorado River Basin. Given the wide recognition that the river is completely over-allocated, the most recent drought highlights the difficulty of sustaining the flow requirements as dictated by the Colorado Compact. Thus, there has been an increasing focus in utilizing exploratory modeling efforts to help actively inform Compact discussions and to clarify how vulnerable water systems in this region are to plausible future scenarios that may be characterized by changing climate and human-system dynamics.

Planning and Management Models
+++++++++++++++++++++++++++++++

The Colorado Water Conservation Board (CWCB) and the Division of Water Resources (DWR) have jointly developed Colorado's Decision Support System (CDSS), a collection of databases, data viewing and management tools, and models to support water resources planning in Colorado's major water basins (Malers et al., 2001). The CDSS is made up of a central database with water resources data (HydroBase), a public website where the data can be accessed, a Geographic Information System (GIS) for viewing and analyzing the data, and a consumptive use model (StateCU) that estimates consumptive use by each irrigation unit in a basin. The outputs from StateCU are then input to the State of Colorado's Stream Simulation Model (StateMod), a generic network-based water system model for water accounting and allocation, and the final component of CDSS. StateMod was developed to support comprehensive assessments of water demand, allocation, and use, as well as reservoir operations. It represents all of the major sub-basins within the state of Colorado (i.e., Parsons & Bennett, 2006; White, Yampa, Upper Colorado, Gunnison, Dolores, San Juan, and San Miguel CWCB, 2012). StateMod replicates each basin's unique application and enforcement of the prior appropriation doctrine and accounts for all of the consumptive use within the basins. To do so, it relies on the detailed historic demand and operation records contained in HydroBase that include individual water right information for all consumptive use, data on water structures (wells, ditches, reservoirs, and tunnels), and streamflow data. Further, StateMod uses irrigation consumptive use data output from StateCU, which calculates water consumption based on soil moisture, crop type, irrigated acreage, and conveyance and application efficiencies for each individual irrigation unit in the region.

The Utility of StateMod
+++++++++++++++++++++++++++++++

StateMod is one of the few highly resolved, open source, regional water allocation models that currently exists. Detailed, fine-scale inputs allow StateMod to resolve the effect of all users and water rights on water availability, which can, in turn, be used to simulate hypothetical scenarios to assess the impacts of changes in hydrology, water rights, or infrastructure on any and all represented water rights. A variety of studies have been conducted utilizing StateMod in an exploratory analysis (see Hadjimichael et al., 2020a, b). In order to facilitate these analyses, many methods have been developed to create templates from historical StateMod input files and adjust them (and their dependencies) to create new input files that represent plausible futures. The user can then run many StateMod simulations (i.e. thousands of future scenarios) in parallel and analyze the results.

Prior to these studies, StateMod’s utility to be run efficiently in exploratory settings was limited, primarily due to the difficulty of adjusting the input files to represent future scenarios. Thus, we are proposing the development of a package called **statemodify** that neatly deploys this functionality and allows users of all coding levels to be able to interact with StateMod at a deeper and more exploratory level. By making StateMod more accessible, we also provide a better avenue for it to be used to actively inform current planning and management in the Colorado River basin by more general planners and decision-makers.


References
---------------------------

CWCB (2012). Colorado River water availability study Phase I Report: Colorado Water Conservation Board.

Hadjimichael, A., Quinn, J., Wilson, E., Reed, P., Basdekas, L., Yates, D., & Garrison, M. (2020). Defining robustness, vulnerabilities, and consequential scenarios for diverse stakeholder interests in institutionally complex river basins. Earth's Future, 8(7), e2020EF001503.

Hadjimichael, A., Quinn, J., & Reed, P. (2020). Advancing diagnostic model evaluation to better understand water shortage mechanisms in institutionally complex river basins. Water Resources Research, 56(10), e2020WR028079.

Malers, S. A., Bennett, R. R., & Nutting-Lane, C. (2000). Colorado's decision support systems: Data-centered water resources planning and administration. In Watershed Management and Operations Management 2000 (pp. 1-9).

Parsons, R., & Bennett, R. (2006). Reservoir operations management using a water resources model. In Operating Reservoirs in Changing Conditions (pp. 304-311).



Documentation
--------------------------

.. toctree::
:maxdepth: 1
:caption: Getting Started

getting-started/installation
getting-started/quickstarter
getting-started/tutorial

.. toctree::
:maxdepth: 1
:caption: User Guides

examples/modify-inputs

.. toctree::
:maxdepth: 1
:caption: Python API

reference/api

.. toctree::
:maxdepth: 1
:caption: Contributing

reference/contributing
Loading
Loading