Release Notes for Pumas 2.6.0

Pumas

Features and significant changes

  • EnsembleThreads is now the default ensemblealg setting in simobs and vpc 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 the obstimes 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 includes censored_latent() and censored_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 using LaplaceI can cause extra compile and run-time.
  • Allow heteroskedastic LogNormal models in FOCE.
  • Allow VectorDomains in covariate_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) in infer with Bootstrap 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 keyword correlation = 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 PumasModels.
  • Add the ignore_numerical_error keyword to fit. This enables the user to turn on numerical errors that are normally handled gracefully during fitting. By setting this to true (default) the optimization procedure will try to recover when an error from the model solution is thrown. The setting false 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 input param 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 in Censored.
  • Allow specifying ensemblealg when a fitted model is used as the input to simobs.
  • Add EWRES to inspect with nsim 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 on MarginalMCMC input as an alternative to SIR.
  • 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 a Subject from the output of simobs such that only @derived-block variables are used as observations in the newly constructed Subject.
  • 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 NamedTuples to be given to predict 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 if constantcoef was set as a tuple of symbols rather than a NamedTuple.
  • 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 on infer 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 of vpc.
  • 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 of inspect. Previously, the full specification of the inner optimization was store in the DataFrame.
  • Allow integer bandwidth specification in vpc with prediction_correct=true.
  • Support more string types (AbstractString) for compartment specifications in read_pumas (such as String7, 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 of simobs.
  • Add model solution (@dynamics and @reactions variables) to the DataFrame that can be constructed from predict output (including predict results coming from inspect).
  • 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 the simobs 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 to cmt values of 0.
  • Fix a bug in VPC that would cause an error to be thrown when using a Categorical dependent variable with the smooth=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 and FOCE fits for LogitNormal 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 and ii is present