Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions bin_mounted/ngen_rte/configs.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
InputConfig,
ModulePropertiesConfig,
NWMOutputConfig,
DataAssimilationConfig,
ParallelConfig,
)
from mswm.utils.settings import DEFAULT_DATETIME_FORMAT as DDF
Expand Down Expand Up @@ -83,6 +84,8 @@ class RTEBaseConfig(BaseModelStrict):
Output format(s) for output variables. Accepts 'CSV', 'NetCDF', or both. Defaults to ["CSV"] in MSWM.
hydrofab_file: str | None = Field(default=None)
Optional hydrofabric file path. If provided, bypasses MSWM Icefabric server API call.
reservoir_rfc_dir: str | None = Field(default=None)
Optional path to reservoir RFC forecast time-series directory. If provided, reservoir_da is set to True and passed to DataAssimilationConfig
fcst_run_name: str | None = Field(default=None)
Forecast run name.
cycle_datetime: datetime | None = Field(default=None)
Expand Down Expand Up @@ -117,6 +120,7 @@ class RTEBaseConfig(BaseModelStrict):
nwm_output_vars: bool = Field(default=False)
output_format: list[str] | None = Field(default=None)
hydrofab_file: str | None = Field(default=None)
reservoir_rfc_dir: str | None = Field(default=None)
fcst_run_name: str | None = Field(default=None)
cycle_datetime: datetime | None = Field(default=None)
lookback: int | None = Field(default=None)
Expand Down Expand Up @@ -500,6 +504,15 @@ def mswm_DataFileConfig(self) -> DataFileConfig:
)
)
return dfc

@property
def mswm_DataAssimilationConfig(self) -> DataAssimilationConfig:
"""MSWM DataAssimilationConfig instance"""
dac = DataAssimilationConfig(
reservoir_da=bool(self.reservoir_rfc_dir),
reservoir_rfc_dir=self.reservoir_rfc_dir,
)
return dac

@property
def mswm_ParallelConfig(self) -> ParallelConfig:
Expand All @@ -517,6 +530,7 @@ def mswm_InputConfig(self) -> InputConfig:
calibration = self.mswm_CalibConfig
forcing = self.mswm_ForcingConfig
data_file = self.mswm_DataFileConfig
data_assimilation = self.mswm_DataAssimilationConfig
parallel = self.mswm_ParallelConfig
ic = InputConfig(
General=general,
Expand All @@ -526,6 +540,7 @@ def mswm_InputConfig(self) -> InputConfig:
Calibration=calibration,
Forcing=forcing,
DataFile=data_file,
DataAssimilation=data_assimilation,
Parallel=parallel,
)
return ic
Expand Down
15 changes: 15 additions & 0 deletions bin_mounted/ngen_rte/run_config/cli_args.py
Original file line number Diff line number Diff line change
Expand Up @@ -530,3 +530,18 @@ def add_arg(parser: argparse.ArgumentParser, arg: ArgsKwargs) -> None:
Script.REGIONALIZATION,
],
)

RESERVOIR_RFC_DIR = ArgsKwargs(
args=["-rfc", "--reservoir_rfc_dir"],
kwargs={
"type": str,
"default": None,
"help": "Path to reservoir RFC forecast time-series directory. If provided,"
"reservoir data assimilation is enabled and reservoir_da is set to True.",
},
scripts=[
Script.FORECAST,
Script.DEFAULT,
Script.REGIONALIZATION,
],
)
4 changes: 4 additions & 0 deletions run_default.sh
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ docker_run python -um "ngen_rte.run_default" -n 2 -fconfig "medium_range_blend"
# docker_run python -um "ngen_rte.run_default" -n 2 -fconfig "aorc" -dt "2013-07-25 00:00:00" -dur 2 -rname "default_aorc" -mf "snow-17,noah-owp-modular,smp,lasam,t-route" -rz "true"
# docker_run python -um "ngen_rte.run_default" -n 2 -fconfig "aorc" -dt "2013-07-25 00:00:00" -dur 2 -rname "default_aorc" --output_format CSV NetCDF

# Reservoir RFC Data Assimilation (RFC reservoir test data only valid at "2026-07-13 12:00:00")
# docker_run python -um "ngen_rte.run_default" -n 2 -fconfig "short_range" -dt "2026-07-13 12:00:00" -rname "default_sr" -g "01205500" -rfc /ngwpc/run_ngen/data/rfc/reservoirs/timeseries/
# docker_run python -um "ngen_rte.run_default" -n 2 -fconfig "short_range" -dt "2026-07-13 12:00:00" -rname "default_sr_no_da" -g "01205500"

# State saving and loading
docker_run python -um "ngen_rte.run_default" -n 2 -fconfig "standard_ana" -dt "2026-03-30 06:00:00" -rname "default_ana" --save_state --save_state_dir /ngwpc/run_ngen/default/default_ana/${TEST_GAGE}/state_save_directory/
docker_run python -um "ngen_rte.run_default" -n 2 -fconfig "standard_ana" -dt "2026-03-30 06:00:00" -rname "default_ana" --save_state
Expand Down
3 changes: 3 additions & 0 deletions run_fcst.sh
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,7 @@ docker_run python -um "ngen_rte.run_forecast" -dt "2025-09-15 00:00:00" -rname "
# docker_run python -um "ngen_rte.run_forecast" -n 2 -dt "2025-09-15 00:00:00" -rname "${fcst_run_name}_mr_le" -fconfig medium_range -le "mem5" "" ""
# docker_run python -um "ngen_rte.run_forecast" -n 2 -dt "2025-09-15 00:00:00" -rname "${fcst_run_name}_mr_le" -fconfig medium_range -le "mem6" "" ""

# Reservoir RFC DA (RFC reservoir test data only valid at "2026-07-13 12:00:00", default 01123000 gage does not have a reservoir)
# docker_run python -um "ngen_rte.run_forecast" -dt "2025-07-13 12:00:00" -rname "${fcst_run_name}_short" -fconfig short_range -rfc /ngwpc/run_ngen/data/rfc/reservoirs/timeseries/

exit 0
3 changes: 3 additions & 0 deletions run_region_standalone.sh
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ docker_run python -um "ngen_rte.run_regionalization_standalone" -n 2 -faf "${TES
# Medium Range
docker_run python -um "ngen_rte.run_regionalization_standalone" -n 2 -faf "${TEST_FORM_ASSIGN_GAGE}" -cgf "${TEST_CAT_GRP_GAGE}" -fconfig "medium_range_blend" -dt "2026-03-30 06:00:00" -rname "region_mr"

# Reservoir RFC DA (RFC reservoir test data only valid at "2026-07-13 12:00:00", default gage 01123000 does not have a reservoir)
docker_run python -um "ngen_rte.run_regionalization_standalone" -n 2 -faf "${TEST_FORM_ASSIGN_VPU}" -cgf "${TEST_CAT_GRP_VPU}" -fconfig "short_range" -dt "2026-07-13 12:00:00" -rname "region_sr" -rfc /ngwpc/run_ngen/data/rfc/reservoirs/timeseries/ -v "03S"

# Medium Range Lagged Ensemble
# docker_run python -um "ngen_rte.run_regionalization_standalone" -n 2 -faf "${TEST_FORM_ASSIGN_GAGE}" -cgf "${TEST_CAT_GRP_GAGE}" -fconfig "medium_range" -dt "2026-03-30 06:00:00" -rname "region_mr_le" -le "no_da" "" ""
# docker_run python -um "ngen_rte.run_regionalization_standalone" -n 2 -faf "${TEST_FORM_ASSIGN_GAGE}" -cgf "${TEST_CAT_GRP_GAGE}" -fconfig "medium_range" -dt "2026-03-30 06:00:00" -rname "region_mr_le" -le "mem1" "" ""
Expand Down
3 changes: 3 additions & 0 deletions setup_data.sh
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,8 @@ s3_sync "${SOURCE_BUCKET_DEV}/${SOURCE_PREFIX_ROOT}/calib_params_tab_delimited"
# Download ESMF mesh files for NWM forcing (CONUS and oCONUS)
s3_sync "${SOURCE_BUCKET_DEV}/${SOURCE_PREFIX_ROOT}/esmf/esmf_mesh" "${RUN_NGEN_ROOT__HOST}/data/esmf_mesh"

# Download RFC reservoir gage timeseries data
s3_sync "${SOURCE_BUCKET_DEV}/${SOURCE_PREFIX_ROOT}/rfc/reservoirs/timeseries" "${RUN_NGEN_ROOT__HOST}/data/rfc/reservoirs/timeseries"

set -x
exit 0
Loading