CIROH-UA / CIROH-UA/forcingprocessor

Zarr in Forcing Processor

Open
#94 0 comments 0 reactions 0 assignees View on GitHub
enhancement NRDS HBV P0 speed
Dominant language
Python
Stars
2
Forks
8
Avg merge
3d 22h
Merged PRs (30d)
3

Description

Forcingprocessor was originally designed to serve as the forcings generation for the NRDS system. This motivated the design choice to optimize for large domain (>10,000 catchments), short time (<1000 time steps) processing of NWM forcing files. Forcingprocessor's internal algorithm performs a multi processed read and processing of each netcdf required. This is performant at scale, but would be considered a network heavy solution in the context of small domain (<100 catchments) simulations. Also, forcingprocessor is not currently capable of processing anything other than the NWM forcing files provided by nwmurl.

From here, we can implement algorithms (that are already in related tooling) that will generalize forcingprocessor to use the most efficient internal algorithm based on the domain size and time step count. For example, if forcingprocessor starts up with a large geopackage and a few number of nwm files listed in filenamelist.txt, then the original algorithm is used. However if a small geopackage and a large number of nwm files, forcingprocessor could then switch to a zarr based algorithm that is more suitable in that case.

Action items:
1) Implement zarr algorithm in forcingprocessor with switch based on geopackage and filenamelist size.
2) Implement additional forcing sources like AORC, this may motivate creating another tool similar to nwmurl, but perhaps aorc_url or something more generally named so it could be used for any forcing source (i.e. forcing_url).

If these two are implemented, forcingprocessor could serve as a general purpose forcings tool that can be integrated in any workflow requiring forcings generation.

_Originally posted by @JordanLaserGit in https://github.com/CIROH-UA/forcingprocessor/discussions/62_

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating forcingprocessor’s current multiprocessing path for NWM forcing files and the nwmurl-related input flow. Review the related tooling that provides the proposed zarr algorithm and forcing-source handling; done means selecting an algorithm by geopackage and filenamelist sizes and supporting an additional source such as AORC.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data-engineering, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.