Version log DEBtox2019 package (previously DEBkiss_tox) for BYOM
Version logging starts with 2.0 (earlier version have not been logged).
Version 2.0 (28 April 2017)
- Modified package so it runs with BYOM 4.0.
Version 3.0 (24 May 2019)
- Brought the code in line with the version 2.0 of the DEBkiss book. This means that damage is the central property of interest (rather than scaled internal concentrations), and a change in toxicity parameters/symbols.
- Made a single directory that is able to run both case studies (complete_model).
- Added code to automatically fit basic parameters to the control data (fixing the tox parameters), or the tox parameters to the full data set (fixing the control parameters). In general, it is a good idea to *not* fit all parameters to the full data set.
- Added simplified models: a full model where the input parameters are easy-to-understand compound parameters, and a simplified model with the model equations themselves expressed in compound parameters (as in the original DEBtox models). More details in the text file about_the_DEBkisstox_package.txt.
- Added license information.
Version 3.1 (2 September 2019)
- Reformulated the model to match a manuscript for an update of DEBtox (Jager, in prep.). This brings the formulation more in line with GUTS, and adds a starvation module in the model formulated in compound parameters. Furthermore, it adds a flexible damage equation and flexible pMoA selection. More details in the text file about_the_DEBtox2019_package.txt.
- The ODE solvers in Matlab have a tendency to increase step size to very large values. That works well for nice continuous model runs, but not for sudden changes (e.g., a starvation event or a pulse exposure to a toxicant). The code for decreasing step size was already in call_deri but commented out. It is now uncommented, just to be on the safe side (the issue with too large of a step size can lead to erroneous behaviour that is difficult to spot).
Version 4.0 (29 May 2020)
- Turned reverse growth dilution (concentration by shrinking) OFF in derivatives. This process can lead to runaway positive feedback which leads to failure of the ODE solvers. It can always be turned on again in derivatives. By commenting out the lines indicated to deal with this process.
- I made a number of changes to make the calculations more efficient, especially for time-varying exposure. The ODE solver now runs through the time vector piecewise: each interval between two events (as specified in the exposure scenario) is run separately, and the solver is restarted for the next interval. This avoids having the ODE solver run over time points where the exposure is discontinuous. Further, structure glo is now passed on to derivatives as an input rather than a global, and the faster function read_scen is used instead of make_scen.
- Modified the new plotting routine plot_tktd (part of the engine folder) for use with sub-lethal effects. This makes more readable plots (especially when also plotting CIs). Format is similar to that used for openGUTS, with separate panels for each treatment.
- The files in the simple_compound directory also have an option (commented out) to use the parameter-space explorer with calc_parspace. Search ranges for the toxicity parameters are automatically generated by startgrid_debtox. This is still experimental, and in any case very slow! In the next few years, expect to see more progress in this package.
- The engine function calc_ecx is now capable of calculating ECx for sub-lethal endpoints. In fact, it goes through all endpoints to see which ones are affected.
Version 4.1 (27 September 2020)
- An error was repaired in general BYOM for the break-time functioning with ODEs, which slowed it down. Furthermore, type 4 can now be used with double time points (just like in openGUTS). Both fixes also require you to update to BYOM v. 5.2!
- When running through time-varying exposure without breaking the time vector, size of the time step of the ODE solver is limited. This avoids the solver missing switches in exposure completely (which might happen with pulsed exposure). However, breaking the time vector is better in most cases.
- Set the ODE solver by default to [0 3], which uses ode45 with very-much tightened tolerances. In some cases, sloppy tolerances will show an apparent optimum that only exists due to numerical problems in the solver. Care is needed with the selection of the most-appropriate solver for each problem!
Version 4.2 (28 September 2020)
- Spotted an error in the calculations for preventing shrinking on physical length on starvation. When running through the calculations with a rough time vector (as often in calibration), the maximum length before shrinking is poorly estimated. Simulations (with a generous time vector of 100 points or more) were not affected. In call_deri, a long time vector is now forced when glo.len == 2.
- Changed the equations for preventing shrinking: the same algorithm as used in openGUTS for finding maximum damage over time for IT. This should increase speed a bit.
==========================================================
Errors spotted and things that will be changed in future releases:
- Working on moving-time window methods for running through long exposure profiles.
- Working on better methods to provide better link between model and reproduction data, in case of clutch-wise spawning and/or brood-pouch delays. Both are relevant for Daphnia, for example; the daphnia script currently extracts 3 days from the time vector to accommodate the brood-pouch delay. Future versions will include more elaborate methods to address these issues.
- ...