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

Dependency: Publish pyPRMS #11

Open
amsnyder opened this issue Oct 29, 2024 · 3 comments
Open

Dependency: Publish pyPRMS #11

amsnyder opened this issue Oct 29, 2024 · 3 comments
Assignees

Comments

@amsnyder
Copy link
Contributor

amsnyder commented Oct 29, 2024

pyPRMS is a library for working with PRMS-related files, include control/configuration files, climate forcings, data files, and outputs. pyPRMS includes the canonical metadata for PRMS that is defined in the documentation, but it has been coded into machine-readable xml files that can be utilized by the software.

Capabilities include:

  • exploration of model setup files
    • get list of modules being used - param files often define more parameters than what is actually used for model to run; pyPRMS can help you reduce your parameters down to what is actually used by model
    • get parameter metadata that would be difficult to manually construct - Some parameters have adjustable information and are defined in input files with a variable. For example, the min/max bounds might be determined by number of segments. pyPRMS will construct these min/max values for you with information from the appropriate files that fills in those variable definitions.
    • identify missing parameters
    • check for degenerate parameters and expand them - these are parameters where the param file says dimensionality is 1, which means you should use the same value for all entries in dimension; this package can expand it out to full dimension
  • model setup file editing
    • add missing parameters - adds with default values, then you can modify the values - step to write out to new parameter file
  • read and write parameters in different file formats (ASCII, parameter database, netcdf), convert between formats - can create files for pywatershed or PRMS
  • parameter file checks to look for errors such as:
    • for consistent parameter values
    • if all values are within min/max range
  • read parameters into dataframes to be used in python workflows
  • pull subsets of parameters
    • get parameter X for the following IDs
  • geospatial/network exploration
    • get HRUs/segments upstream of POI
    • plot parameters by HRU or by segment
    • creates a DAG of stream network - can help you identify loops in network that shouldn't be there

This package definitely needs to be published for these notebooks to be released as it has not been documented/published in any format yet.

pyPRMS is a dependency of bandit.

Used in notebook 0b.

@amsnyder
Copy link
Contributor Author

amsnyder commented Nov 7, 2024

pywatershed package maintained by Development & Standard IWP Sub-program uses pyPRMS as a dependency, so hopefully they can be the long term product owners for this. I will reach out to Joe Hughes to discuss this.

@amsnyder
Copy link
Contributor Author

amsnyder commented Nov 8, 2024

We will plan to publish pyPRMS in EC github alongside pywatershed package. @pnorton-usgs will support the package's release and maintenance primarily under MAPPNAT time for now, but a long-term maintenance strategy still needs to be established. We may ask someone in the Development & Standards Sub-program to provide review for the software release and provide feedback to us on if they think the package needs to be run through the D&S Sub-program for refinement or if it should go straight to the Model Support Function. We would need to make a proposal in the Modeling Proposal Registry to get funding for either. In the meantime, we will plan for it to be a MAPPNAT product, though I haven't connected with Jacob on this specifically to verify, but @pnorton-usgs and I feel like this is the project that makes the most sense to maintain this software.

@rviger-usgs
Copy link

rviger-usgs commented Nov 12, 2024

agree w/all that. to clarify, HyTEST will underwrite the publication but MAPPNAT will be the Product Owner of pyPRMS?

think dependency/risk re: establishment of long-term maintenance strategy should be called out in the FY25 HyTEST project plan. also, think this EC/HyTEST crossover or coordinated support should be called out as a "bright spot!"

@amsnyder amsnyder changed the title Publish pyPRMS Dependency: Publish pyPRMS Nov 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants