HydroShare modeling functionality has been developed to support collaborative modeling needs of the hydrologic community. Hydrologic modeling is often collaborative and teamwork is required to develop models and conduct research involving hydrologic models. The goal of HydroShare modeling functionality is to advance hydrologic science by enabling the scientific community to more easily and freely share products resulting from their research - not just the scientific publication summarizing a study, but also the data and models used to create the scientific publication.
Modeling functionality includes
- Model program aggregations
- Model instance aggregations
- Apps that execute models and perform analyses
- Jupyter Python Notebook code execution
A model program aggregation is designed to encapsulate all the software and files necessary to identify, install and run a given hydrologic model. By saving, sharing, and referring to the specific version of the model program used in your work, you can enhance the reproducibility of results produced with a model and encourage its use by others.
A model instance aggregation holds the input files required for application of a hydrologic model to a specific location. A model instance aggregation may optionally include the output files resulting from model execution. One (to many) model instance aggregations can be executed by a model program aggregation and be linked to it. The design for metadata associated with a model instance was intended to capture the aspects required to define and distinguish between different model instances across the wide variety of hydrologic models. This design, therefore, provides two ways to capture metadata for a model instance. First, it includes model instance generic metadata elements which are applicable to any model program. Second, HydroShare users can extend the design by leveraging the enhanced functionality of the model instance metadata schema according to their needs; the reason to consider such a functionality was that the wide variety of hydrologic models require different metadata to describe them, and there is no consensus on any given set of metadata that can describe a specific model program. A model instance metadata schema is a user-definable and machine-readable schema that extends metadata elements by generating specific extended metadata fields to describe the model instance. Utilizing the model instance metadata schema, the user can define the extended metadata fields’ semantics (i.e., properties such as title and description of the field), and rules for the extended metadata fields content (i.e., properties such as data type and default value, and whether the field is mandatory or optional, whether the field has nested fields inside it, whether the field must be chosen from a set of controlled values, whether it is a multiple checkbox field). In this design, we chose the JSON format for model instance metadata schema due to several reasons including being widely accepted in any computer science field, machine-readable, and readily understood by humans specially who are not programming experts. Users can either use the example JSON schema provided by HydroShare for SWAT and MODFLOW or upload their own JSON schema in HydroShare. The example metadata schema provided by HydroShare can either be used for SWAT and MODFLOW model programs with no further changes, or followed as an example to create a user version of SWAT and MODFLOW JSON schema or create a JSON schema for any other hydrologic models as per users’ needs. To create their own JSON schema, users need to follow the guidelines mentioned in Model Instance Metadata Schema.
How can I publish my model in HydroShare?
Refer to the GitHub wiki guide to publishing model instances in HydroShare (Please note that this guide is for the obsolete model instance resources. The guide for the model instance aggregation is still under development and once it is ready it will replace the old GitHub wiki guide).
How can I execute a model in HydroShare?
Model execution in HydroShare is intended to help users execute models. Most hydrologic modeling is done either on the user’s personal computer or through access to a centralized computing system. This may be hampered by a user’s knowledge of centralized computing systems, especially high-performance computing systems, the capacity of a local computer, the compatibility and dependency requirements for installation on a local computer, and the time taken to get a local model installation properly configured and validated. HydroShare is working to provide server, or cloud-based model execution capability. Here “cloud” means execution on any server that is remote from the user and the user does not need to be too concerned where it is to use it. This is part of the general trend towards use of software services instead of local computing.
To support more flexible model execution and data analysis, HydroShare supports Jupyter Notebook functionality as an app that may be launched from HydroShare, access the contents of HydroShare resources and save results back in HydroShare resources. A Jupyter notebook is a web application that contains live code, equations, visualizations, and explanatory text. Code in a Jupyter notebook may execute any operating system or language specific (HydroShare uses Python) commands within the hosting environment providing users with access to the computational capability of the hosting environment without requiring software installation or configuration. This does not relieve the user from needing to learn the language involved (e.g. Python) or commands associated with the program being used (e.g. RHESSys, Landlab), but it does alleviate the need for users to install and have the capacity to run these programs locally. HydroShare’s Jupyter notebook installation includes the following functionality: