All notable changes to this project will be documented in this file.
- #1527 Added a
ComposedBoundariesclass that lets you compose multipleBoundariesclasses into a higher dimensional one. - #1500 Added a
CensoredGaussianLogLikelihoodclass that calculates the censored Gaussian log-likelihood. - #1505 Added notes to
ErrorMeasureandLogPDFto say parameters must be real and continuous. - #1499 Added a log-uniform prior class.
- #1503 Stopped showing time units in controller logs, because the units change depending on the output type (see #1467).
- #1517 Fixed a major bug in the covariance matrix update for xNES.
- #1505 Fixed issues with toy problems that accept invalid inputs.
- #1484 Added a
GaussianIntegratedLogUniformLogLikelihoodclass that calculates the log-likelihood with its Gaussian noise integrated out with an uninformative prior in log-space. - #1466 Added a
TransformedRectangularBoundariesclass that preserves theRectangularBoundariesmethods after transformation. - #1462 The
OptimisationControllernow has a stopping criterionmax_evaluations. - #1460 #1468 Added the
Adamlocal optimiser. - #1459 #1465 Added the
iRprop-local optimiser. - #1456 Added an optional
translationtoScalingTransformand added aUnitCubeTransformationclass. - #1432 Added 2 new stochastic models: production and degradation model, Schlogl's system of chemical reactions. Moved the stochastic logistic model into
pints.stochasticto take advantage of theMarkovJumpModel. - #1420 The
Optimiserclass now distinguishes between a best-visited point (x_best, with scoref_best) and a best-guessed point (x_guessed, with approximate scoref_guessed). For most optimisers, the two values are equivalent. TheOptimisationControllerstill tracksx_bestandf_bestby default, but this can be modified using the methodsset_f_guessed_trackingandf_guessed_tracking. - #1417 Added a module
toy.stochasticfor stochastic models. In particular,toy.stochastic.MarkovJumpModelimplements Gillespie's algorithm for easier future implementation of stochastic models. - #1413 Added classes
pints.ABCControllerandpints.ABCSamplerfor Approximate Bayesian computation (ABC) samplers. Addedpints.RejectionABCwhich implements a simple rejection ABC sampling algorithm. - #1378 Added a class
pints.LogNormalLogLikelihood.
- #1485 PINTS is no longer tested on Ubuntu 18.04 LTS, but on 20.04 LTS and 22.04 LTS.
- #1479 PINTS is no longer tested on Python 3.6. Testing for Python 3.11 has been added.
- #1479 The
asyncio.coroutinedecorators have been removed from all of NUTS's coroutines in order to be compatible with Python 3.11. - #1466
Transformation.convert_boundarieswill now return aTransformedRectangularBoundariesobject if the transformation is element-wise and the given boundaries extendRectangularBoundaries. - #1458 The
GradientDescentoptimiser now sets its default learning rate asmin(sigma0)(it can still be changed afterwards withset_learning_rate()). - #1445 Allowed multiple LogPDFs to be supplied to the MCMCController (one for each MCMC chain), and added an evaluator which evaluates each position on a separate callable.
- #1439, #1433 PINTS is no longer tested on Python 3.5. Testing for Python 3.10 has been added.
- #1435 The optional Stan interface now uses (and requires) pystan 3 or newer. The
update_datamethod has been remove (model compilation is now cached so that there is no performance benefit to using this method). - #1424 Fixed a bug in PSO that caused it to use more particles than advertised.
- #1424 xNES, SNES, PSO, and BareCMAES no longer use a
TriangleWaveTransformto handle rectangular boundaries (this was found to lead to optimisers diverging in some cases).
- #1424 Removed the
TriangleWaveTransformclass previously used in some optimisers.
- #1497 Fixed deprecation warning of
np.productglobally in pints. - #1457 Fixed typo in deprecation warning for
UnknownNoiseLikelihood. - #1455 The
sandinv_sproperties ofScalingTransformationhave been replaced with private properties_sand_inv_s. - #1450 Made
TransformedBoundariesconsistent withBoundariesby removingrange()and addingsample(). - #1449 Fixed a bug in
MarkovJumpModel.interpolate_mol_counts. - #1399 Fixed a bug in
DramACMC, and fixed the number of proposal kernels to 2.
- #1409 The
OptimisationControllernow accepts a callback function that will be called at every iteration; this can be used for easier customisation or visualisation of the optimiser trajectory. - #1383 Added a method
toy.TwistedGaussianDistribution.untwistthat turns samples from this distribution into samples from a multivariate Gaussian. - #1322 Added a method
sample_initial_pointsthat allows users to generate random points with finite metrics (either log-probabilities or error measures) to use as starting points for sampling or optimisation. - #1243 Added testing for Python 3.9.
- #1213, #1216 Added the truncated Gaussian distribution as a log prior,
TruncatedGaussianLogPrior. - #1212 Added the
PooledLogPDFclass to allow for pooling parameters across log-pdfs. - #1204 This CHANGELOG file to show the changes introduced in each release.
- #1190 A new
ConstantAndMultiplicativeGaussianLogLikelihoodwas added. - #1183 Three new methods were added for diagnosing autocorrelated or time-varying noise:
plot_residuals_binned_autocorrelation,plot_residuals_binned_std, andplot_residuals_distance. - #1175 Added notebooks showing how to interface with the
statsmodelsPython package which allows fitting ARIMAX and state space models in PINTS. - #1165 A new
Transformationabstract class was added, along withComposedTransformation,IdentityTransformation,LogitTransformation,LogTransformation,RectangularBoundariesTransformation,ScalingTransformationsubclasses to achieve more effective and efficient optimisation and sampling. - #1165 A new optional argument
transformwas added to bothOptimisationControllerandMCMCControllerto transform parameters during optimisation and sampling. - #1112 A new
NoUTurnMCMCsampler (NUTS) was added, along with aDualAveragingAdaptionclass to adaptively tune related Hamiltonian Monte Carlo methods. - #1025 Added a stochastic logistic growth problem for use with ABC.
- #1420 The
OptimisationControllernow logs a best and a current score. - #1375 Changed all arguments called
transformtotransformationfor consistency. - #1365 Dropped support for Python 2.7. PINTS now requires Python 3.5 or higher.
- #1360 The
ParallelEvaluatorwill now set a different (pre-determined) random seed for each task, ensuring tasks can use randomness, but results can be reproduced from run to run. - #1357 Parallel evaluations using multiprocessing now restrict the number of threads used by Numpy and others to 1 (by default).
- #1355 When called with
parallel=Truethe methodpints.evaluate()will now limit the number of workers it uses to the number of tasks it needs to process. - #1250 The returned values from
SingleChainMCMC.tell()andMultiChainMCMC.tell()have been extended from current positionxtox, fx, accepted, wherefxis the current log likelihood andacceptedis a bool indicating whether tell performed an acceptance step in this call. - #1195 The installation instructions have been updated to reflect that PINTS in now pip-installable.
- #1191 Warnings are now emitted using
warnings.warnrather thanlogging.getLogger(..).warning. This makes them show up like other warnings, and allows them to be suppressed with filterwarnings. - #1112 The
pints.Loggercan now deal withNonebeing logged in place of a proper value.
- #1420 The methods
pints.Optimisation.xbest()andfbest()are deprecated in favour ofx_best()andf_best(). - #1201 The method
pints.rhat_all_paramswas accidentally removed in 0.3.0, but is now back in deprecated form.
- #1250 The methods
SingleChainMCMC.current_log_pdf()andMultiChainMCMC.current_log_pdf()have been removed.
- #1350 Fixed bugs in the Relativistic MCMC sampler.
- #1264 Fixed a bug relating to how NUTS handles nans when values outside the range of the priors are proposed.
- #1257 Fixed a bug in
GaussianLogPrior, which meant the distribution could be instantiated with a non-positive standard deviation. - #1246 Fixed a long-standing bug in
PopulationMCMC, which caused it to sample incorrectly. - #1196 The output of the method
pints.HalfCauchyLogPrior.samplehad the wrong shape.
- This is the first pip installable release. The changelog documents all changes since this release.