# Release Notes for Pumas 2.4.0

## Pumas

### Features

- Automatic covariate selection methods were added to Pumas. Currently supported methods are forward and backwards stepwise covariate modeling. Covariate search supports distributed parallelism that allows for large scale covariate modeling using the JuliaHub infrastructure.
- A
`@delay`

macro was added to support smoothly delayed dosing as an alternative to the lags dose control parameter. Transit compartments are supported through this new feature, including estimation of the number of transit compartments through the Gamma delay model. - Solution of steady state models are now faster thanks to the use of Anderson Acceleration. Several general improvements to the code was also made and it is now possible to tweak the steady state solver through an customizable options.
- Allow for
`missingstring`

input in`read_pumas(filepath, ...; missingstring, ...)`

to create populations directly from a filepath with more flexibility. - Introduce the
`discard`

function to discard burn-in/warmup samples and thin the samples after Bayesian inference is done. - Allow for continuation of
`fit`

s without resetting the optimizer (BFGS approximation, etc) by allowing the output of`fit`

to be used as the input to a new`fit`

. - Add the possibility of adding additional covariate information to existing
`Subject`

s using the`Subject(subject; covariates, covariates_time)`

constructor with. - Add the dose number information to
`DataFrame`

s in the`:dosenum`

column. A`dosenum`

function is also available to be used in models. - Support zero variance specifications for random effects using the
`constantcoef`

keyword. This can be used to ignore specific random effects when fitting. When using`NaivePooled`

it can even be used to ignore all random effects. - Added the value of the dynamical system variables to the
`DataFrame`

constructed from`inspect`

output. - Added a
`cor2cov`

function to allow for non-centered parametrization of multivariate normal distributions for Bayesian inference. - Add support for
`:=`

-definitions in`@init`

block to allow for untracted intermediate calculations. - Allow the user to call
`simobs`

with a new subject using the posterior distribution of an existing subject using the output of a Bayesian inference run. - Added
`vcov`

and`mean`

functions for`Bootstrap`

and`SIR`

based inference.

### Bug fixes and minor improvements

- Remove an unintended fallback behavior where the
`obstimes`

information was set automatically to the range`0:24`

if no observation times had been provided. Instead, an error is now thrown with instructions on how to correctly provide the missing information. - Use
`fit`

result`diffeq_options`

in`vcov`

for`PumasEMModels`

. - Fixed undef var error in
`EMModel`

`LaplaceI`

if a model solution failed during a fit. - Improved show methods for
`predict`

results. - Return
`NaN`

for`findinfluential`

calculations if the log-likelihood evaluation failed for numerical reasons, but re-throw the error if the evaluation failed for any other type of error. - Fixed default
`nchains`

value to`4`

in MCMC. Previously, this could depend on the number of threads available. - Document default option values in
`BayesMCMC`

and`MarginalMCMC`

. - Fixed a bug that could cause
`TimeToEvent`

models to fail during fitting. - Fixed the
`Constrained`

domain's`init`

keyword to work. Previously, it was always set to zero. - Fixed bug in use of
`Constrained`

univariate distributions. - Fixed code that would issue a warning when running
`simobs`

for Bayesian analyses due to unused keyword arguments being passed on. - Fix param use in
`simobs`

of a single subject. Previously, the function would not sample parameters from their prior. - Support fixed width strings in
`Subject`

s. Can occur when`CSV.read`

decides to use optimized string types. - Support
`EnsembleSerial()`

for`vcov(::FittedPumasEMModel)`

. - Improve performance of code that solves large systems of linear ODEs.
- Speed up
`DataFrame`

constructor for SimulatedPopulation by avoiding unnecessary copies of data. - Avoid allocations in the
`@tad`

function. - Base tolerances of steady state solver on numerical integration tolerances.
- Warn users if fixed-point solver did not converge with steady state dynamics.
- Limit the numerical integration tolerances when calculating the default variance-covariance matrix using
`infer`

. - Allow passing integer
`maxT`

value to`simobstte`

. - Reenable the
`fit`

docstrings. - Add doc strings to macro blocks.
- Fixed typo in show method for
`FittedPumasModelInspection`

. - Fixed typo where
`nnodes`

was written`nodes`

in the`vpc`

docstring. - Fixed
`vpc`

error messages when nodes argument is invalid. Previously, a non-sensical error message was shown. - Throw an error if both
`obstimes`

and subject times are not set in`vpc`

. - Mention keyword to change threshold value of
`maxnumstrats`

when`vpc`

warns that a stratification variable has too many unique values. - Change EVID to evid in a
`read_pumas`

error message. - Fixed language errors in
`predict`

docstring. - Remove trailing newlines in show methods.