Release Notes for Pumas 2.6.0
Pumas
Features and significant changes
EnsembleThreads
is now the defaultensemblealg
setting insimobs
andvpc
by default and it is now stable across runs and platform configurations (number of vCPUs or threads).- Change the choice of initial time point to solve the model for to be the earliest time in a subject across dosing times and observation times and time time 0. This enables automatic handling of negative time points in models. For initial time points that are later than time 0 the model option
subject_t0 = true
has to be used. - When simulating observations the samples of variables in
@derived
are now done one time point at a time instead of all time points for one variable, then the next variable, and so on. This enables stable simulation of observations when incrementally increasing theobstimes
vector. This can be helpful in adaptive dosing in trial simulation. - Incomplete data models have new tools available to define
@derived
-block variables to represent measured quantities that have unbounded support in principle but are sampled in a way where data is incomplete. This includescensored_latent()
andcensored_latent()
wrappers that can be used to support estimation subject to incomplete data that still allows the user to simulate and predict form the underlying (latent) distribution. - Add a domain for the LogUniform domain.
- Include Relative Standard Errors (RSEs) in the
coeftable
output. - Use the supplied Likelihood approximation when calling
empirical_bayes
instead of using LaplaceI always. The empirical bayes estimates should not depend on the approximation, but usingLaplaceI
can cause extra compile and run-time. - Allow heteroskedastic LogNormal models in FOCE.
- Allow
VectorDomain
s incovariate_select
to turn off collections of several parameters simultaneously. - Only use (subset of) tilde variables in
@derived
for estimation - Convenience to filter only the successful fits (
successful_fits
) ininfer
withBootstrap
or any vector of fits and return them as a vector. cond
now returns the condition number of the correlation matrix. The old behavior can be used by setting the keywordcorrelation = false
.- Allow for the input of a tuple in the Subject constructor when preparing a subject for simulation without initial observation values stored (
Subject(id="1", observations = (:dv1,:dv2))
compared to the old more verboseSubject(id="1", observations = (:dv1 = nothing,:dv2 = nothing))
) - Enable support for multivariate random effects with non-diagonal Hessians outside of the special
MvNormal
case. - Use Rodas5P instead of Rodas5. This is an improved version of the previous default algorithm for stiff models.
- Support not storing the optimization trace in
fit
. - Several improvements to the solver for steady-state dosing including infusions. Add a warning if the steady state was not found according to the convergence measurements.
- Allow params, randeffs and covariates to be used directly in the dynamics, vars, derived and observed blocks without redefinition in
@pre
. - Support for predefined ModelingToolKit models in
PumasModel
s. - Add the
ignore_numerical_error
keyword tofit
. This enables the user to turn on numerical errors that are normally handled gracefully during fitting. By setting this totrue
(default) the optimization procedure will try to recover when an error from the model solution is thrown. The settingfalse
can be useful when debugging a fit that does not appear to converge or start properly. The check is always turned off during initial setup of the fit (iteration 0) but is turned on by default for the remaining iterations. - Allow
read_pumas
to read negative dosing times. - Improve the behavior when all replications in a
Bootstrap
inference call fails. The object is now still constructed instead of throwing an error such that the populations that caused failed fits can be inspected. - Allow for calls to
icoef
even if some subjects do not have any observations. The empirical bayes estimates given the inputparam
will be calculated if the input subjects have observations. If any subject does not have any observations, the mode of the domain-transformed prior will be used. - Allow non-
Normal
continuous distributions inCensored
. - Allow specifying
ensemblealg
when a fitted model is used as the input tosimobs
. - Add EWRES to
inspect
withnsim
specified and use law of total expectation and law of total variance to reduce simulation noise in both NPDE and EWRES. - Add a new
infer
method that is based onMarginalMCMC
input as an alternative toSIR
. - Throw an error when constructing a model if parameters (in
@param
) or random effects (in@random
) are defined but not used. Treat covariates defined in@covariates
similar but warn instead of throwing an error as the covariate block can be used to document covariates using"""
-blocks. - Filter out
@observed
-block variables when constructing aSubject
from the output ofsimobs
such that only@derived
-block variables are used as observations in the newly constructedSubject
. - Support parallelization in
gsa
. - Many issues related to to steady state models have been fixed including adding support for steady state infusions with lags. For the remaining known cases we do not support and error is now thrown.
- Allow for a vector of random effect
NamedTuple
s to be given topredict
when a full population is being predicted into.
Bug fixes and minor improvements
- Re-use the empirical bayes estimates from the FittedPumasModel when calling
infer
. This reduces runtime, but also ensures consistency in calculations in cases where the inner optimization over empirical bayes estimates have multiple solutions or badly conditioned. - Fix a bug in
covariate_select
that cause an error to be thrown ifconstantcoef
was set as a tuple of symbols rather than aNamedTuple
. - Fix reference for Weibull delay model in docstring. Previously, the wrong paper was referenced.
- Fix get_ess to handle the case with no parameters in the model.
- Fix formatting in DosageRegimen docstring.
- Fix docstring indentation for infer(..., Bootstrap)
- Fix show for heterogenous subjects. Previously, a very verbose string would be printed.
- Allow simulating more scenarios than Bootstrap samples when calling
simobs
oninfer
based on a Bootstrap. - Fix that subscripts were added unintentionally for scalar etas in DataFrame of SimulatedObservations.
- Fix
@delay
for Subjects with no events. - Fix constantcoef support in correlation_diagnostic.
- Don't reevaluate loglikelihood after fitting. Previously, some quantities were recomputed at the end of fit even if the results were already available causing longer runtimes.
- Explicitly specify "variance" in the PDiagDomain docstring.
- Add text on how to perform a VPC after
simobs
in the docstring ofvpc
. - Fix sampling with zero diagonal Ω. Some specification of zero-variances would cause
simobs
to fail. - Simplify printing of parameters in
covariate_select
during fitting. This improves the legibility of the chosen parameters when a backwards selection follows a forward selection. Also maybe the wording in forward mode more clear. - Allow any Real as cmt when reading a DataFrame using
read_pumas
. - Fix distributed simobs. Previously, the IDs of the workers could be incorrectly specified, causing the
simobs
call to fail. - Don't store very descriptive
wres_approx
in DataFrame ofinspect
. Previously, the full specification of the inner optimization was store in theDataFrame
. - Allow integer bandwidth specification in
vpc
with prediction_correct=true. - Support more string types (
AbstractString
) for compartment specifications inread_pumas
(such asString7
, etc) - Add docstring for the
@reactions
model component. - Add an info-statement when using a fitted model as the input to
simobs
that clearly states that empirical bayes estimates are used to simulate using this signature ofsimobs
. - Add model solution (
@dynamics
and@reactions
variables) to theDataFrame
that can be constructed frompredict
output (includingpredict
results coming frominspect
). - Fix typo in
coeftable
docstring. - Fix
simobs
with a population as well as a vector of parameters for non-analytical models. This would previously error. - Fix bayesian inference with subjects that specify the dosing compartment using symbols. Previously this would error.
- Add description of
simulate_error
in thesimobs
docstring. - Fix typo in error message when
ss
is not in(0,1,2)
. - Improve the docstring of
PDiagDomain
. - Ignore lag for steady state constant infusion as specified in NMTRAN and error out of a set of invalid steady state specifications.
- Fix fitting of steady state models with linear ODE system solvers (matrix exponential solver).
- Use the same progress trackers in bayesian inference as in maximum likelihood fits.
- Improve the error message when
read_pumas
fails due tocmt
values of0
. - Fix a bug in VPC that would cause an error to be thrown when using a
Categorical
dependent variable with thesmooth=false
option. - Some fixes to the using of indexing in the
@model
macro. - Minor performance improvements to VPC for time-to-event models.
- Allow
FO
andFOCE
fits forLogitNormal
dependent variables.
Pumas Utilities
Bug fixes and minor improvements
Bioequivalence
Features
- Show frequency tables of period against formulation
- Compute ANOVA P-values for main effects
- Output results as SummaryTables
Bug fixes and minor improvements
- Drop incomplete cases when computing geometric mean ratio and within-subject variability for reference scaled bioequivalance analyses
- Show the correct geometric mean ratios in the SummaryTables output
- Remove incorrect treatment group means from SummaryTables output
NCA
Features
- Add support for "oral" as an alias for
EV
- Allow DynamicQuantities passed via DataFrame
Bug fixes and minor improvements
- Performance improvements through fewer memory allocations
run_nca
no longer errors when subject doesn't have observations andii
is present