nwmurl
nwmurl is a Python library developed by CIROH 2023. It provides utility functions specifically designed to subset and generate National Water Model (NWM) data URLs. This library simplifies the process of accessing NWM data for various purposes such as analysis, modeling, and visualization.
Developed by CIROH 2023
Installation
You can install nwmurl
using pip:
pip install nwmurl
Usage
-
In the code, you can modify the input parameters, such as
start_date
,end_date
,fcst_cycle
,lead_time
,varinput
,geoinput
, andruninput
, to customize the NWM data retrieval. -
The code will generate a list of JSON header URLs tailored to your specified parameters using the
generate_urls
function.
Customize Your Data Retrieval for Operational Dataset
start_date
: A string representing the starting date in the format "YYYYMMDDHHMM".end_date
: A string representing the ending date in the same format.fcst_cycle
: A list of integers specifying forecast cycle numbers, e.g.,[0, 1, 2, 3, 4]
. These cycles represent specific points in time for which URLs will be generated.lead_time
: A list of integers indicating lead times in hours for forecasts. It determines the time ahead of the forecast start, e.g.,[1, 2, 3, 4]
.varinput
: An integer or string representing the variable of interest within the NWM data. Available options include:1
or\"channel_rt\"
for channel routing data.2
or\"land\"
for land data.3
or\"reservoir\"
for reservoir data.4
or\"terrain_rt\"
for terrain routing data.5
or\"forcing\"
for forcing data.geoinput
: An integer or string specifying the geographic region of interest. Options include:1
or\"conus\"
for the continental United States.2
or\"hawaii\"
for Hawaii.3
or\"puertorico\"
for Puerto Rico.
runinput
: An integer or string representing the NWM run configuration. Available options include:1
or\"short_range\"
for short-range forecasts.2
or\"medium_range\"
for medium-range forecasts.3
or\"medium_range_no_da\"
for medium-range forecasts without data assimilation.4
or\"long_range\"
for long-range forecasts.5
or\"analysis_assim\"
for analysis-assimilation runs.6
or\"analysis_assim_extend\"
for extended analysis-assimilation runs.7
or\"analysis_assim_extend_no_da\"
for extended analysis-assimilation runs without data assimilation.8
or\"analysis_assim_long\"
for long analysis-assimilation runs.9
or\"analysis_assim_long_no_da\"
for long analysis-assimilation runs without data assimilation.10
or\"analysis_assim_no_da\"
for analysis-assimilation runs without data assimilation.11
or\"short_range_no_da\"
for short-range forecasts without data assimilation.
urlbaseinput
: An integer representing the NWM dataset. Available options include:1
: "https://nomads.ncep.noaa.gov/pub/data/nccf/com/nwm/prod/".2
: "https://nomads.ncep.noaa.gov/pub/data/nccf/com/nwm/post-processed/WMS/".3
: "https://storage.googleapis.com/national-water-model/".4
: "https://storage.cloud.google.com/national-water-model/".5
: "gs://national-water-model/".6
: "gcs://national-water-model/".7
: "https://noaa-nwm-pds.s3.amazonaws.com/".8
: "s3://noaa-nwm-pds/".9
: "https://ciroh-nwm-zarr-copy.s3.amazonaws.com/national-water-model/".
meminput
: An integer representing the ensemble member designation ranging from 0 to 7write_to_file
: A Boolean variable that saves the output urls into a .txt file if set 'True'
Customize Your Data Retrieval for Retrospective Dataset
start_date
: A string representing the starting date in the format "YYYYMMDDHHMM".end_date
: A string representing the ending date in the same format.urlbaseinput
: An integer representing the NWM dataset. Available options include:1
: "https://noaa-nwm-retrospective-2-1-pds.s3.amazonaws.com/".2
: "s3://noaa-nwm-retrospective-2-1-pds/model_output/".3
: "https://ciroh-nwm-zarr-retrospective-data-copy.s3.amazonaws.com/noaa-nwm-retrospective-2-1-zarr-pds/".4
: "https://noaa-nwm-retrospective-3-0-pds.s3.amazonaws.com/CONUS/netcdf/".
selectet_object_type
: An integer representing the object type. Available options include:1
for forcing data2
for model_output
Selectet_var_types
: An integer or string representing the variable of interest within the NWM data. Available options include:1
: ".CHRTOUT_DOMAIN1.comp"2
: ".GWOUT_DOMAIN1.comp"3
: ".LAKEOUT_DOMAIN1.comp"4
: ".LDASOUT_DOMAIN1.comp"5
: ".RTOUT_DOMAIN1.comp"6
: ".LDASIN_DOMAIN1.comp"
write_to_file
: A Boolean A Boolean variable that saves the output urls into a .txt file if setTrue
Examples of how to use
- For Operational dataset:
import nwmurl
start_date = "202201120000"
end_date = "202201130000"
fcst_cycle = [0,8]
lead_time = [1,18]
varinput = 1
geoinput = 1
runinput = 1
urlbaseinput = 2
meminput = 1
write_to_file = False
file_list = nwmurl.generate_urls_operational(
start_date, end_date, fcst_cycle,
lead_time,
varinput,
geoinput,
runinput,
urlbaseinput,
meminput,
write_to_file
)
- For Retrospective dataset:
import nwmurl
start_date = "200701010000"
end_date = "200701030800"
urlbaseinput = 2
selected_var_types = [1, 2]
selected_object_types = [1]
write_to_file = True
file_list = nwmurl.generate_urls_retro(
start_date,
end_date,
urlbaseinput,
selected_object_types,
selected_var_types,
write_to_file
)
How to Contribute
We welcome contributions to nwmurl! To contribute to the development of this library, please follow these steps:
-
Fork the repository on GitHub.
-
Clone your fork to your local machine:`
git clone https://github.com/CIROH-UA/nwmurl.git
-
Create a new branch for your contribution:`
git checkout -b feature/your-feature-name
-
Make your code changes and improvements.
-
Before submitting a pull request, make sure to update the package version in
setup.py
if necessary. -
Commit your changes with descriptive commit messages.
-
Push your changes to your fork:``
-
Open a pull request on the main repository, describing your changes and why they should be merged.
We appreciate your contributions and will review your pull request as soon as possible. Thank you for helping improve nwmurl!