Getting Started =============== This page walks you through the steps of installing **tethys** and running an example. But first: Motivation ---------- Integrated human-Earth systems models, such as GCAM, can project future water demand at a coarse, regionally-relevant scale by modeling long-term interactions between multiple sectors under a variety of scenarios, while gridded hydrology models simulate physical processes at a much finer spatial and temporal resolution. **tethys** facilitates coupling between these kinds of models by providing finer-scale water demand data while maintaining consistency with coarser-scale global dynamics. .. figure:: _static/motivation.png :width: 100% :alt: spatial downscaling :align: center :figclass: align-center While **tethys** is designed to integrate seamlessly with GCAM, it has the ability to downscale region-scale water demand data from other sources as well. Installation ------------ As a prerequisite, you'll need to have `Python `_ installed (version 3.9 or above), and if you plan on querying a GCAM database, `Java `_ must be installed and added to your path. **tethys** can be installed from GitHub using pip:: pip install git+https://github.com/JGCRI/tethys This will automatically install the dependencies. In order to avoid package version conflicts, consider using a virtual environment. Try importing **tethys** to confirm that installation was successful: .. code-block:: python import tethys tethys.__version__ # should print the version number Example Data ------------ Example data and configurations can be downloaded from Zenodo `here `_, or by using the following: .. code-block:: python tethys.get_example_data() The download decompresses to about 4.5GB. By default, it will make a directory called ``example`` at the root of the **tethys** pacakge, but you can specify another path. Run --- With the example data downloaded, a simple configuration can be run .. code-block:: python # assuming you downloaded to the default location config_file = tethys.default_download_dir + '/example/config_example.yml' result = tethys.run_model(config_file) Plotting -------- **tethys** makes use of the `Xarray `_ package, which provides convenient plotting functionality. .. code-block:: python from matplotlib import colors, pyplot as plt # higher dpi in order to see resolution plt.figure(figsize=(10, 6), dpi=300) # powernorm the color palette in order to see more detail at the low end result.outputs.Municipal.sel(year=2010).plot(norm=colors.PowerNorm(0.25), cmap='viridis_r') plt.show() Dashboard --------- **tethys** uses `Dask `_ for parallelization and to lazily compute results. You can launch the dask distributed client in order to view dashboard and monitor the progress of large workflows. .. note:: viewing the dashboard requires a few other dependencies not automatically installed by **tethys** .. code-block:: python from dask.distributed import Client # this configuration may need to be different depending on your machine client = Client(threads_per_worker=8, n_workers=1, processes=False, memory_limit='8GB') # link to view the dask dashboard in your browser, probably localhost:8787 client.dashboard_link # run tethys AFTER launching the client config_file = tethys.default_download_dir + '/example/config_demeter.yml' result = tethys.run_model(config_file) # this configuration does not write outputs to a file, # so plots are lazily computed when requested result.outputs.Wheat.sel(year=2030).plot(norm=colors.PowerNorm(0.25), cmap='viridis_r') plt.show()