This page lists the various PoPy releases to date:-
Release date = 11 Mar 2022
- Faster processing for models with lots (tens of thousands) of observation rows that have a normally distributed error model.
- Parameterized compartment definitions so that many compartments can be defined in a single line.
- Better feedback when calculations result in a not-a-number (NaN) that derails the fitting process.
- Assumes that any uninitialized d[X] are initialized to zero, so you can add to flows without having to explicitly initialize them first.
- Faster evaluation of normally-distributed likelihoods.
- Extended sequential() distribution now allows arbitrary splitting of tree levels, e.g., c[AMT] = sequential([0, 100, 200]).
- Better code parsing flags up errors in the script earlier in the process.
- Covariance matrix (OMEGA) values that were defined as being constant were being modified by the JOE fitter.
- Models containing fixed effects that are constant would sometimes crash due to an indexing bug in the subset of all fixed effects.
- Incorrect calculation in ds/dm when using mixed models (with both a closed-form compartmental model and ODEs).
- IMP under parallel processing tried to recompute proposal distributions on every process rather than just on the master process.
- IMP used an approximate Lambda when it should have been using an exact one (and vice versa).
- Parsing the PREPROCESS block would sometimes alter its contents, causing faults downstream.
- Failure due to long filenames avoided by using symbolic links and raising warnings rather than errors under recoverable conditions.
- Covariances (OMEGAs) were being updated when they were defined as constants in some methods (e.g. JOE).
- Constant fixed effects were causing indexing problems in some fitting algorithms.
- Output folders created whenever they are needed (which wasn’t always the case).
- Sim failed when a solution file had a different DATA_FIELDS content from the corresponding Gen file.
- Fixed effects “associated” with an r[X] that is effectively constant (e.g., mean=0 and variance=0) were not being updated at all, rather than being updated using alternative (e.g., gradient-based) methods.
- Incorrect covariance matrix when the model included no random effects.
- Tabulated f[X] values were all the same.
- Tutsum failed to copy the compartment diagram from Gensum.
Release date = 22 Oct 2021
- More stable estimation when using forward sensitivity equations.
- Improvements to VPC generation
- Some improvements in speed during fitting, especially for situations where there are lots of bolus doses per subject.
- Better memory management when fitting in parallel.
- Quotes in column headers of the data file are now permitted.
- Fixed various bugs with fitting in parallel
Release date = 22 Sep 2021
- Reduced RAM usage when running PoPy in parallel using MPI. Previous version shared all subject data on all processors. New parallel code spreads subject data across all processors and avoids unnecessary duplication. Improves performance on large multi-core machines.
- Increased number of parameters that the ND fitting method and BOBYQA optimiser can process, previously restricted to 35, now increased to 200.
- Change the colour of the dosing lines in individual subject plots to yellow (formerly black), this enables more informative graphs for subjects who have a lot of separate doses.
- Improved the speed and accuracy of the
r[X]optimisation using more analytic gradient results.
- Added ability to create prediction corrected (pred_corr) and prediction variance corrected (predvar_corr) VPC output via the “norm_method” parameter of a Vpc Script.
- Added ability to create stratified VPC output via the “split_field” parameter of a Vpc Script. A separate vpc is output for each unique value in a specified
- Made the MSim Script and Vpc Script code more RAM efficient.
- Made models with a large number of dosing events per subject run more efficiently.
Release date = 13 May 2021
- Added new ND fitting method, the latest and most robust PoPy estimation approach.
- Improved fitting and lower ObjV using ND method.
- Upgraded base Python distribution of PoPy from version 3.5 to version 3.8. This allows us access to more up-to-date Python packages and functionality.
- Improved automatic compartment diagram generation with “in” and “out” nodes.
- Improved automatic checking of input scripts.
Release date = 23 Dec 2020
Release date = 05 Sep 2020
- Added implementation of an FOCE Fitting Method to complement the previous JOE Fitting Method. Note we now recommend running the JOE fitter, then the FOCE fitter in serial to get the best parameter fitting results in PoPy.
- New ~rectnorm() distribution for fitting to BLQ data, using JOE or FOCE methods without using the more computationally expensive LAPLACE objective value. See Generate BLQ observations and fit different error models.
- Also new BLQ related ~cennorm() distribution and ~truncnorm() distribution.
- New ~binomial() distribution likelihood.
- Improved the speed and quality of the noise
f[X]parameter estimates for JOE fitting.
- New plots show the final
f[X]population fit (same for all individuals, with
r[X]zero) and the individual fit (i.e. empirical bayes estimates for
r[X]optimised for each individual). Previously we plotted only the initial unoptimised
f[X]fit and the final
- The temporary functions generated by PoPy (based on the config file) are now written into a single module on disk. This single module compiles quicker using Cython, compared to having each temporary function in it’s own module.
- Added PREPROCESS section to multiple scripts, for example a Fit Script. This allows the user to easily filter and alter the data set, using simple Python code, before fitting a model, without changing the data file on disk.
- Added POSTPROCESS section for multiple scripts, for example a Gen Script. This allows the user to easily alter or filter a synthetically generated data set, before saving to disk.
Release date = 18 Sep 2019
- Added ability to process scripts in PARALLEL. This speeds up computation time for models with a large number of individuals and takes advantage of multi-core computers.
- Created POSTPROCESS section to allow filtering of data create by a PoPy model. For example with a Gen Script
- Added ability to process multiple files in a directory with one command using ‘*’ syntax, see Running multiple scripts, Checking multiple scripts, Format multiple scripts, Edit multiple scripts, Open multiple html files
- Speed improvements to core JOE algorithm, Standard Errors computation and plotting using Grph Script.
- MFit Script now outputs a summary of the fitting results for all populations to a single .csv file.
- Displaying the diagonal elements of
f[X]variance matrices at each iteration. The off diagonal
f[X]elements are only displayed at the end of fitting, due to space considerations.
- Simplified the structure of old ‘LEVEL_PARAMS’, replaced with EFFECTS which removes the redundant ‘split_field’ and ‘split_dict’ attributes.
- Renamed the ‘output_mode’ values in OUTPUT_SCRIPTS, using shorter names ‘gen_script_and_run’ -> ‘run’, ‘gen_script_only’ -> ‘create’, ‘no_output’ -> ‘none’.
- Renamed the ‘FINITE_DIFF’ method in COVARIANCE to ‘SANDWICH’.
Note scripts in v1.0.1 and v1.0.0 format can be automatically updated to v1.0.2 using the popy_format tool.
- Made float_format change format of all float values in output scripts and summary html outputs. Only applied to subset before.
- Fixed bug in iteration number when displaying ObjV over time Objective function at each iteration for simple PopPK example
Release date = 28 Jun 2019
This is mainly a bug fix release of PoPy
- The Standard Errors are now output in an easy to read format, instead of the whole hessian matrix.
- Changed the configuration file entry required to compute standard errors see COVARIANCE.
- Log files apart from the main log file are now stored in a ‘_log’ sub directory.
- The popy_run tool now asks the user if they want to proceed if the main log file already exist for a given script. Previously only the existence of the output folder was checked. The can still skip this check using the ‘-o’ option.
Release date = 24 May 2019
This is the first version of PoPy, so there are no bug fixes or new features only the initial implementation.
Or in other words, all the features and bugs are new!