Release Notes for Pumas 2.6.0
Pumas
Features and significant changes
EnsembleThreadsis now the defaultensemblealgsetting insimobsandvpcby 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 = truehas to be used. - When simulating observations the samples of variables in
@derivedare 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 theobstimesvector. 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
coeftableoutput. - Use the supplied Likelihood approximation when calling
empirical_bayesinstead of using LaplaceI always. The empirical bayes estimates should not depend on the approximation, but usingLaplaceIcan cause extra compile and run-time. - Allow heteroskedastic LogNormal models in FOCE.
- Allow
VectorDomains incovariate_selectto turn off collections of several parameters simultaneously. - Only use (subset of) tilde variables in
@derivedfor estimation - Convenience to filter only the successful fits (
successful_fits) ininferwithBootstrapor any vector of fits and return them as a vector. condnow 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
MvNormalcase. - 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_errorkeyword 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 settingfalsecan 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_pumasto read negative dosing times. - Improve the behavior when all replications in a
Bootstrapinference 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
icoefeven if some subjects do not have any observations. The empirical bayes estimates given the inputparamwill 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-
Normalcontinuous distributions inCensored. - Allow specifying
ensemblealgwhen a fitted model is used as the input tosimobs. - Add EWRES to
inspectwithnsimspecified and use law of total expectation and law of total variance to reduce simulation noise in both NPDE and EWRES. - Add a new
infermethod that is based onMarginalMCMCinput 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@covariatessimilar 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 aSubjectfrom the output ofsimobssuch 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
NamedTuples to be given topredictwhen 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_selectthat cause an error to be thrown ifconstantcoefwas 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
simobsoninferbased on a Bootstrap. - Fix that subscripts were added unintentionally for scalar etas in DataFrame of SimulatedObservations.
- Fix
@delayfor 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
simobsin the docstring ofvpc. - Fix sampling with zero diagonal Ω. Some specification of zero-variances would cause
simobsto fail. - Simplify printing of parameters in
covariate_selectduring 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
simobscall to fail. - Don't store very descriptive
wres_approxin DataFrame ofinspect. Previously, the full specification of the inner optimization was store in theDataFrame. - Allow integer bandwidth specification in
vpcwith prediction_correct=true. - Support more string types (
AbstractString) for compartment specifications inread_pumas(such asString7, etc) - Add docstring for the
@reactionsmodel component. - Add an info-statement when using a fitted model as the input to
simobsthat clearly states that empirical bayes estimates are used to simulate using this signature ofsimobs. - Add model solution (
@dynamicsand@reactionsvariables) to theDataFramethat can be constructed frompredictoutput (includingpredictresults coming frominspect). - Fix typo in
coeftabledocstring. - Fix
simobswith 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_errorin thesimobsdocstring. - Fix typo in error message when
ssis 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_pumasfails due tocmtvalues of0. - Fix a bug in VPC that would cause an error to be thrown when using a
Categoricaldependent variable with thesmooth=falseoption. - Some fixes to the using of indexing in the
@modelmacro. - Minor performance improvements to VPC for time-to-event models.
- Allow
FOandFOCEfits forLogitNormaldependent variables.
Pumas Utilities
Features
- A beta version of a forest plot plotting function was added with the name
table_forest_plot. Please see the tutorial on "A Forest Plot Workflow in Pumas".
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_ncano longer errors when subject doesn't have observations andiiis present