Changelog
Source:NEWS.md
streamMetabolizer 0.12.1.9000
Messages, errors, and warnings now use structured cli formatting to make diagnostics clearer and more actionable.
calc_DO_at_sat()now has its own deprecated wrapper and help topic, socalc_DO_sat()is documented as current;calc_DO_deficit(),calc_is_daytime(), andcalc_sun_rise_set()also use lifecycle deprecation warnings.improved package maintenance with writable Stan-cache fallbacks, modernized dependencies, concise startup output, and automated R CMD check coverage
lookup_usgs_elevation()now uses httr2 with coordinate and unit validation, configurable timeouts and retries, and clearer service errors; it returns the numeric elevation directly and no longer requires the legacy RCurl, XML, or jsonlite packages.metab(),mm_model_by_ply(),mm_filter_valid_days(), andcalc_light_merged()now accept tibbles without coercing them to base data frames, and model data and prediction outputs preserve tibble classes.metab_inputs()now uses structured cli messages for model specifications, optional inputs, and model information guidance.mm_data_units()now returns units with Unicode subscripts, superscripts, and SI symbols for clearer display.mm_validate_name()errors now link tomm_valid_names()in the package manual.plot_metab_data()now provides a faceted quality-control plot for metabolism input data, including dissolved oxygen percent saturation when both dissolved oxygen columns are selected.improved RStan support with safe persistent compilation caching outside the installed package, cache validation and read-only-directory fallback, parameter-filtered summaries, serializable retained fits, array-aware posterior plots, faster syntax-only checks, and clearer sampling failures
improved CmdStanR support with backend-aware Stan syntax selection, platform- and toolchain-safe persistent executable caching, parameter-filtered summaries, durable retained fit objects, correct indexed posterior plots, CmdStan-based syntax checks, and clearer setup and sampling errors
added Bayesian process-only models with AR(1) process residuals and an optional light-varying innovation standard deviation, following Bob Hall’s
metab_proc_errimplementation; multi-day models apply the AR likelihood across the concatenated series, including day boundariesconvert_date_to_doyhr()andconvert_doyhr_to_date()are no longer exported; they are now package internals. This also fixes a spurious deprecation warning thatconvert_UTC_to_solartime()could emit when called viastreamMetabolizer::.
streamMetabolizer 0.12.0
fixed compatibility issues with R 4.1.0 and recent (OK, not super recent) changes to dplyr
beginning to deprecate the use of
attach.unitsarguments
streamMetabolizer 0.11.3
new options to compute and report GPP_pseudo_R2 and DO_R2 for Bayesian models
smarter default for err_mult_GPP_sdlog_sigma (changed from 0.05 to 1, which seems to be better for more streams)
streamMetabolizer 0.11.2
- changed
err_proc_dayiidtoerr_proc_GPPand switched to a more GPP-oriented process error for those models
streamMetabolizer 0.10.10
added a test to mm_is_valid_day that checks for depths <= 0, which would break or seriously confuse a model
fixed a bug where a single day of data passed to a b_Kl or b_Kb model would cause Stan to fail because the log(discharge) values were being formatted improperly for Stan.
streamMetabolizer 0.10.7
- non-standard parameters from custom Bayesian models are now sorted in a less bewildering order in the model fit (as from
get_fit())
streamMetabolizer 0.10.4
-
plot_DO_predswith dygraphs works again, and now you can subset dates using argsdate_startanddate_enddirectly inplot_DO_preds
streamMetabolizer 0.10.3
- adding a tiny bit of support toward bringing in new light-saturation models in the future
streamMetabolizer 0.10.2
test for day lengths < 0 in
mm_model_by_ply, thanks to @weisoonbugfix for
get_paramsfor sim models with fixed vector of Q and/or K values
streamMetabolizer 0.10.1
upgrade
unitteddependency to v0.2.8 to accommodate recent change in function exporting requirements in R 3.3increase robustness of
mm_is_valid_dayfor dates with 1 observation
streamMetabolizer 0.10.0
more comprehensive assignment of parameters from Stan output into model fit data.frames in Bayesian models
dailyandinstdata.frames in Bayesian model fit now get date/timestampsstructural changes in Bayesian models: fitted
DO_mod[1]for state space models, probability constraints onDO_mod[1]andDO_mod_partial[1]structural change in Bayesian models: reindexing
err_obs_iidanderr_proc_iidto match otherinstvariables
streamMetabolizer 0.9.45
- Bayesian specs defaults now reflect a little more of the literature and our experience modeling metabolism
streamMetabolizer 0.9.44
- New specs element
required_timestepallows you to require that each date has the specified numeric timestep in days
streamMetabolizer 0.9.42-0.9.43
- Bugfixes for new test that excludes days with non-positive discharge
streamMetabolizer 0.9.39
- Bayesian, MLE, and nighttime regression models can now all test for and exclude days with non-positive discharge
streamMetabolizer 0.9.36
- Models should now be able to accept
tbl_dfs (dplyr/tibble format) for thedataanddata_dailyarguments tometab()
streamMetabolizer 0.9.35
Bayesian models now distinguish between compilation time and fitting time
Updates to
plot_distribsfor recent changes to Bayesian models
streamMetabolizer 0.9.34
- Bayesian models with
pool_K600 != 'none'can how have theirK600_daily_sigma(orK600_daily_sdlog) be a fitted value, a fixed value, or a value fixed at 0
streamMetabolizer 0.9.33
- new function:
calc_light_merged, which merges modeled and observed light into a smooth curve
streamMetabolizer 0.9.29
- functions in the
specsofsimmodels can now refer to their own metabolism model (and therefore also itsinfoordata_dailyslots)
streamMetabolizer 0.9.28
- switched from
rlnormtornormfor distribution ofK600_dailyaroundK600_daily_predin linear and binned models
streamMetabolizer 0.9.27
-
simmodels can now generate daily parameters from functions and can even generate binned K~Q relationships with random variation
streamMetabolizer 0.9.22
- renamed
metab_simspecs for consistency with other model arguments, e.g.,err.obs.sigmais nowerr_obs_sigma
streamMetabolizer 0.9.21
- simplified Bayesian K pooling models to make the pooling more effective (and also faster). Hierarchical bayesian models now fix rather than fit
K600_daily_sdlog, the standard deviation ofK600_dailyrelative toK600_daily_predlog
streamMetabolizer 0.9.18
solidified the model feature options, including error types, DO deficit source, ODE integration methods, and hierarchy
revised hierarchical methods to be consistent with recent email exchanges.
streamMetabolizer 0.9.15
new function:
plot_distribsto explore priorsbayesian models can now track
err_obs_iidand other parameters fit at the resolution ofdatanew functions:
calc_solar_timeandcalc_lightfor faster data preparationrefined treatment of depth in trapezoid method - effect will mainly be noticeable for sites/times with rapidly changing depth
streamMetabolizer 0.9.14
all tests are passing and all examples are running [again]. tests are acceptably comprehensive [for now].
known issue: K binning in bayesian models is producing unlikely estimates. all bayesian models need further testing.
streamMetabolizer 0.9.13
- ongoing bug fixes and re-integration of all model types into new ODE production/integration scheme
streamMetabolizer 0.9.9
metab_mleandmetab_simnow have several options for relationships among GPP, light, ER, and temperature.metab_mleandmetab_simnow have several options for the method by which the differential equation for dDO/dt is numerically integrated to produce a time series of DO predictions.metab_mlehas taken a performance hit to become more flexible in the GPP-light relationship, the ODE method, and so on. Optimization is likely in the future.predict_metabandpredict_DOoptionally attach units to their output.
streamMetabolizer 0.9.8
better error and warning handling in metab_bayes, including a new function
get_log()that retrieves log file[s] from MCMC model compilation & run[s]. log files are now retrieved for both JAGS and Stan models.updates to accommodate changes in dependency packages (tibble and dplyr)
more efficient specifications of JAGS and Stan models
incorporated feedback on vignette
streamMetabolizer 0.9.6
model names (from
mm_name()) and bayesian model file names (in models folder) now include info on the GPP and ER functions - default is still pl = GPP is a linear function of light, and rc = ER is constant over every 24-hour periodmore informative error messages for timesteps <= 0 in
mm_model_by_ply
streamMetabolizer 0.9.4
Now automatically checks for available updates when you attach the package
Improved units handling in
convert_k600/kGAS
streamMetabolizer 0.9.2
Hierarchical constraints on K600 are now available! Options are ‘normal’, ‘linear’, and ‘binned’; see the details section on
pool_K600in?mm_nameand the description of parameters starting withK600_dailyin?specs.Interface change:
specslists now print more prettily and have class ‘specs’ (though they’re still fundamentally just lists)Vignette: see
vignette('getstarted')
streamMetabolizer 0.9.0
New function: metab() serves as a gateway to all model types. You can now pass specs to metab() and expect the appropriate model to be chosen and called based on model_name in the specs list.
New function: data_metab() produces a dataset for testing/demonstration, with options for the resolution & flaws to introduce.
Newly public function: mm_model_by_ply is now public. Its interface has also changed somewhat: tests has been renamed to day_tests, and validity tests are conducted within mm_model_by_ply if day_tests is not empty, and validity and timestep information are now passed to model_fun.
Changed functionality: mm_model_by_ply_prototype() now produces a 1-row data.frame as well as a message, which helps this function demonstrate the workings of mm_model_by_ply(). mm_model_by_ply_prototype() is a lightweight example of a function that can be passed to mm_model_by_ply(), and its help file describes the parameters such a function should expect.
New function: mm_get_timestep() computes the mean and/or unique timestep[s] and optionally requires that there be just one unique timestep within a vector of times or dates.
Interface change: the argument tests is now called day_tests in the metab(), metab_night(), etc., mm_model_by_ply(), and mm_is_valid_day().
Interface change: day_start, day_end, and tests are now containined within specs rather than defined separately in the call to metab, metab_bayes, etc.
Interface change: in metab(), metab_mle(), etc., the model_specs argument is now called specs.
Interface change: metab functions now accept specs first, then data, data_daily, and info. (specs was renamed from model_specs; see above.) This permits chaining from mm_name to specs to metab.
Interface change: get_args is now get_specs, and the result is a list of specs as named in specs() rather than a list with an element called model_specs that is itself a list.
Hierarchical bayesian models are now possible and include hierarchical parameters for distributions on error and K600 (normal, linear, and binned). Some models are known to work; complete testing for all models is forthcoming.
streamMetabolizer 0.8.0
- Major interface change (renamed variable) to clarify types of time: solar.time (mean solar time), app.solar.time (apparent solar time), local.time (time in local time zone). Metabolism models now accept solar.time rather than local.time, though it’s still possible to pass in local time but just call it solar.time (as long as you don’t have daylight savings time).
streamMetabolizer 0.7.2
This package is not ready for use by many, but it does currently have:
support for a wide range of non-hierarchical models, both Bayesian and MLE-based
support for regressions of daily K versus discharge and/or velocity
default specifications for every model
a maturing user interface for fitting models (probably not quite fixed yet)
convenience functions for calculating DO saturation concentrations, air pressure, depth, solar time, PAR, etc.
functions for simulating data and error, for testing models with data having known underlying parameters
two small datasets, courtesy of Bob Hall, for testing models with real data