knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
R Package to manipulate the CRSS input and output data.
Only available from GitHub. Use the following to install:
install.packages('devtools') library(devtools) devtools::install_github('BoulderCodeHub/CRSSIO')
The CRSSIO package includes functions for manipulating and creating input data necessary to run CRSS and for processing CRSS output data. It uses a "prefix_verb_noun" naming system for most functions. Functions that create input for CRSS use the crssi_
prefix, while those that process CRSS output use the crsso_
prefix. The nf_
, natsalt_
, and ism_
prefixes are also used for multiple functions that deal with natural flow names, natural salt names, and with ISM related functions.
Functions that use the create
verb will create files on the user's computer. Functions that use the change
verb will edit files that already exist on the user's computer. Functions that use the get
verb will return data.
The final noun of the function describes what is created or retrieved. Ex: crssi_create_dnf_files()
creates the DNF (direct natural flow) files.
The package also includes other functions for conveniently manipulating other data related to CRSS, e.g., converting between elevation and storage for modeled reservoirs. Finally, the package provides several functions that extend/modify ggplots.
CRSSIO defines three classes for storing multi-trace natural flow data: nfd
, crss_nf
, and crssi
. crss_nf
inherits from nfd
and crssi
inherits from both nfd
and crss_nf
. These classes intend to make working with CRSS input natural flow data easier and more uniform.
nfd
stores multi-trace, multi-site data for annual and/or monthly time steps and for intervening and/or total natural flow (flow space). nfd()
creates the object from arrays, matrices, or xts objects. The object can contain any/all of the four combinations of time step and flow space.
crss_nf
objects require that there are exactly 29 sites: the 29 sites required for input into CRSS, and that there are monthly intervening natural flows, which are also required input to CRSS. Other time step and flow space combinations are allowed, but there must be monthly intervening data.
crssi
objects add additional required input into CRSS: the Sacramento year type index and a scenario number.
Several methods exist to work with these objects. reindex()
changes the underlying time component so that historical data can be used for future projections in CRSS; ism()
applies the Index Sequential Method to a single trace; plot()
will quickly show the data; write_crssi()
will create the input files necessary for CRSS; nfd_stats()
and nfd_pdf()
compute statistics across the different traces and can then be plotted with plot()
. nf_to_total()
and nf_to_intervening()
will convert between total and intervening flow.
Apply ISM to the 1988-present period, and then plot the resulting statistics.
library(CRSSIO) flows <- crss_nf(CoRiverNF::monthlyInt["1988/"]) ism_flows <- ism(flows, n_years_keep = 15) hist_stats <- nfd_stats(flows, "Cameo", "intervening", "monthly") ism_stats <- nfd_stats(ism_flows, "Cameo", "intervening", "monthly") plot(ism_stats, ref = hist_stats, base_units = "acre-feet")
crssi_
crssi_create_dnf_files()
, crssi_create_cmip_nf_files()
, and crssi_create_hist_nf_xlsx()
?crss_input_addin
)crssi_change_nf_start_date()
, crssi_change_nf_file_names()
, and crssi_change_evap_files()
crsso_
sys_cond_matrix()
and crsso_get_sys_cond_table()
help create the standard System Conditions Table from CRSS output. Commonly referred to as the "5-year table" but it can go through as many years as simulation data exists. Ex:library(CRSSIO) library(RWDataPlyr) # install.packages("RWDataPlyr") # create the RiverWare data aggregator rwa <- sys_cond_rwa() # use example data in RWDataPlyr to create system condition table # first get all of the data scenFolder <- "ISM1988_2014,2007Dems,IG,Most" scenName <- "scenA" scenPath <- system.file('extdata','Scenario/',package = 'RWDataPlyr') sysData <- RWDataPlyr::rdf_aggregate( rwa, rdf_dir = file.path(scenPath, scenFolder), scenario = scenName ) # then create the system condition table sysCondTable <- crsso_get_sys_cond_table(sysData, 2018:2022) # sysCondTable[['limitedTable']] to access results
nf_gage_names()
), along with corresponding CRSS natural inflow input slot names (nf_file_names()
), corresponding CRSS natural salt input slot names (natsalt_file_names()
), and corresponding abbreviated, i.e., variable, names (nf_gage_abbrv()
).elevation_to_storage()
and storage_to_elevation()
convert between elevation and storage for reservoirs modeled in CRSS.ism_get_site_matrix()
applies the index sequential method (ISM) to a single time series of data.stat_boxplot_custom()
works with ggplots to add box and whisker plots. It differs from ggplot2::stat_boxplot()
in that it extends the whiskers to specified percentiles instead of some scaled value of the IQR.add_secondary_y_conversion()
adds a secondary y-axis to a plot. It ensures that the secondary axis is a conversion of the primary axis labels so the ticks match the grid lines from the primary axis. For details, see the News
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.