# Release Notes for Pumas 2.2.0

## Pumas

### Features

• Introduce prediction correction for continuous VPCs (pcVPC) based on a simulated population mean prediction.
• Support censoring and truncation with literal upper and lower bounds for SAEM (PumasEMModels)
• A new closed-form solution for a model with one central compartment and one metabolite was added and is called Central1Meta1.
• Store more information about the simulated subjects including what random effects they were generated with. (relevant in post-process)
• Convenience functions vech and vechinv was added to ease working with transformation of vectors of correlations or covariances to matrices and the other way around.

### Bug fixes and minor improvements

• Throw an error if t is explicitly used in the model while requesting a closed form solution. Closed form solutions are not applicable in the presence of continuous variation in dynamical parameters.
• Add a check to see if the model time t is used in the specification of the model. If t is used and the dynamic model is linear, we no longer use the matrix exponential method as this is not valid with continuous variation in the pre-block. Only piece-wise constant changes are compatible with the matrix exponential method.
• Improved error message in read_pumas when different rows with the same time information have different covariate values.
• Fixed a bug where ii would have to be set for steady state models with infusions to work. These models now work with ii=0 as they should.
• Fix several cases of unintended behavior in the DataFrame constructor for the output of predict.
• Fixed a bug where a mix of integer and floating point censoring bounds would cause an error exception to be thrown.
• Fixed a bug where NaivePooled with a MAP wrapper failed in models where there were no random effects present.
• Fix a bug in LaTeX-generation where the use of subscripts for variable indices would throw an error.
• Fixed a bug where annotations in the model would cause the model definition to fail if there were comments in the same section.
• Fixed a bug where estimation of gamma error models would fail due to a bug in the code that transforms bounded variables to unbounded domains and vice-versa.
• Add group support in NCASubject(::Subject) constructor

## PumasUtilities

### Features

• All previous individual apps are now combined into a single app interface
• Model builder UI for creating PumasModels
• Data loader UI for reading in CSV files into DataFrames
• Population Builder UI for converting DataFrames into Population objects
• Launch interactive reports for selected diagnostics using Pluto notebooks

### Bug fixes and minor improvements

• pair_plot includes the correlation value in titles for scatter plots
• report now accepts FigureAxisPlot objects as input along with Figure objects
• Fix display of model blocks in report that are empty
• Drop missing values in npde_dist
• Improvements to vpc_plots
• Automatically set y-axis limits for vpc_plots based on distribution type
• Fix naming of y-axis labels in sim_plot
• Interface refresh for web applications

## SummaryTables

• table_one - ability to create summary tables
• listings_table - ability to create listings tables

## NCA and NCAUtilities

### Features

• Support for Bioanalytical file format (all rows of amt filled) and separate dosing and concentration sheets
• Sparse sampling NCA support
• Dose linearity analysis, including plots and tables

### Bug fixes and minor improvements

• Support for nominal time column (nominal_time keyword argument in read_nca)
• By default all valid parameter columns in dataframe get used in summarize for calculating summary statistics
• summary_observations_vs_time now supports plotting nominal time
• Better label for subject_fits when lambdaz is not available