This is the main function of the tdm family workflow. This function predicts subdaily meteorology from daily means using a linear regression modeling approach. It takes a dataset with daily resolution and temporally downscales it to hourly resolution using the statistics generated by gen.subdaily.models(). It references the predict.subdaily.function located in lm_ensemble_sims() which uses a linear regression based approach to downscale. We generate multiple ensembles of possible hourly values dictated from the models and betas generated in gen.subdaily.models. Each ensemble member is saved as a netCDF file in CF conventions and these files are ready to be used in the general PEcAn workflow.
Usage
predict_subdaily_met(
outfolder,
in.path,
in.prefix,
path.train,
direction.filter = "forward",
lm.models.base,
yrs.predict = NULL,
ens.labs = 1:3,
resids = FALSE,
adjust.pr = 1,
force.sanity = TRUE,
sanity.tries = 25,
overwrite = FALSE,
verbose = FALSE,
seed = format(Sys.time(), "%m%d"),
print.progress = FALSE,
...
)Arguments
- outfolder
- directory where output file will be stored
- in.path
- base path to dataset you wish to temporally downscale; Note: in order for parallelization to work, the in.prefix will need to be appended as the final level of the file structure. For example, if prefix is GFDL.CM3.rcp45.r1i1p1, there should be a directory with that title in in.path.
- in.prefix
- prefix of model dataset, i.e. if file is GFDL.CM3.rcp45.r1i1p1.2006 the prefix is 'GFDL.CM3.rcp45.r1i1p1'
- path.train
- path to CF/PEcAn style training data where each year is in a separate file.
- direction.filter
- Whether the model will be filtered backward or forwards in time. options = c("backward", "forwards") (default is forward; PalEON will go backward, anybody interested in the future will go forwards)
- lm.models.base
- path to linear regression model folders generated using gen.subdaily.models
- yrs.predict
- years for which you want to generate met. if NULL, all years in in.path will be done
- ens.labs
- vector containing the labels (suffixes) for each ensemble member; this allows you to add to your ensemble rather than overwriting with a default naming scheme
- resids
- logical stating whether to pass on residual data or not
- adjust.pr
- adjustment factor fore precipitation when the extracted values seem off
- force.sanity
- (logical) do we force the data to meet sanity checks?
- sanity.tries
- how many time should we try to predict a reasonable value before giving up? We don't want to end up in an infinite loop
- overwrite
logical: replace output file if it already exists?
- verbose
logical: should
ncdf4functions print debugging information as they run?- seed
- manually set seed for results to be reproducible
- print.progress
- print the progress bar?
- ...
further arguments, currently ignored
Details
Predict Subdaily Meteorology Predict Subdaily Meteorology based off of statistics created in gen.subdaily.models()
See also
Other tdm - Temporally Downscale Meteorology:
gen.subdaily.models(),
lm_ensemble_sims(),
model.train(),
nc.merge(),
save.betas(),
save.model(),
subdaily_pred(),
temporal.downscale.functions()
Examples
if (FALSE) { # \dontrun{
library(PEcAn.data.atmosphere)
outfolder = '~/Downscaled_GCM'
in.path = '~/raw_GCM'
in.prefix = 'GFDL'
lm.models.base = 'sf_scratch/US-WCr'
dat.train_file = 'Training_data/US-WCr_dat.train.nc'
start_date = '2010-01-01'
end_date = '2014-12-31'
cores.max = 12
n.ens = 3} # }