Data Overview¶
Directory Setup¶
The following directories and names are required to properly execute bmorph:
input contains uncorrected and reference flows and meteorological data. mizuroute_configs is where the configuration file for mizuRoute will be written. notebooks contains the python notebooks that will execute bmorph. output is where the bmorph bias corrected flows will be written to. topologies contains topographical data for the watershed to connect river segments.
Variable Naming Conventions¶
Configuration Utilities¶
to mizuRoute¶
bmorph is designed to bias correct simulated streamflow as modeled by mizuRoute. bmorph.util.mizuroute_utils.write_mizuroute_config automates writing a valid mizuroute configuration file for the purposes of bmorph.
Running mizuRoute during bias correction is only necessary for spatially consistent methods were local flows need to be routed. As a result, writing the configuration file is automated through only the bmorph.core.workflows.run_parallel_scbc. The configuration script receives the name of the region, the type of bias correction, and the time window from run_parallel_scbc, writing the rest of the configuration file assuming the Directory Setup described above.
to bmorph¶
bmorph.utils.mizuroute_utils.to_bmorph handles formatting the output of mizuroute for bmorph. While configuring streamflows can be performed without this function, this helps to speed up the whole workflow with a number of customizable options. As detailed in the tutorial, bmorph.utils.mizuroute_utils.to_bmorph is the primary function for handling streamflow formatting:
from bmorph.util import mizuroute_utils as mizutil
basin_met_seg = mizutil.to_bmorph(
topo = basin_topo,
routed = watershed_raw.copy(),
reference = basin_ref,
met_hru = watershed_met,
route_var = "IRFroutedRunoff",
fill_method = 'r2',
).ffil(dim='seg')
Where topo is the topology file for the basin, routed are the uncorrected streamflows, reference are the reference streamflows from gauge sites, met_hru are the meteorologic variables used in conditioning, route_var is the name of the uncorrected flows in routed, and fill_method describes spatial consistency determining as described in Spatial Consistency.
Input Specifications¶
Input data will be need identical time indices as pandas.Series without null flow values. So long as the size of the pandas.Series are the same across all flow data, the magnitude of the length should not impact bias correction. Further information on non-flow parameters can be found in Implementation.
Output Specifications¶
bmorph outputs a pandas.Series time series with flows as values indexed by time entires provided by given data. Total length of the output is the number of flow values.
The tutorial stores each of these outputs in a dictionary with their site/seg being their corresponding keys. bmoprh.workflows.bmorph_to_datarray converts such a dictionary into an xarray.DataArray with coordinates site and time, corresponding the the dictionary keys and the time of the pandas.Series that they access. From there, uncorrected and reference flows can be combined with the corrected flows into a singular xarray.Dataset and saved into a netCDF file if desired, storing it in the output directory if following the tutorial.