- Optimize:
- sacess optimizer (#988, #997)
- Warn only once if using ineffiecient objective settings (#996)
- Hierarchical Optimization (#1006)
- Fix cma documentation (#987)
- Petab
- Improvement to create_startpoint_method() (#1018)
- Sampling:
- Dynesty sampler (#1002)
- Fix test/sample/test_sample.py::test_samples_cis failures (#1004)
- Visualization:
- Fix misuse of start indices in waterfall plot (#1000)
- Fix large function values in clustering for visualizations (#999)
- parameter correlation diverging color scheme (#1009)
- Optimization Parameter scatter plot (#1015)
- Profiling:
- added option to profile the whole parameter bounds. (#1014)
- General
- Add CODEOWNERS (#1001)
- Add list of publications using pypesto (#1008)
- allow passing results to __init__ of pypesto.Result (#998)
- Updated flake8 to ignore Error B028 from bugbear until support for python 3.8 runs out. (#1005)
- black update (#1010)
- Doc typo fixes (#995)
- Doc: Install amici on RTD (#1016)
- Add getting_started notebook (#1023)
- remove alernative formats build (#1022)
- Optimize:
- Add an Enhanced Scatter Search optimizer (#941, #972)
- Cooperative enhanced scatter search (#954)
- Hierarchical optimization (#952, #975 )
- Allow scipy optimizer to use fun with integrated grad (#979)
- Sampling:
- Remove fixed parameters from pymc sampling (#951)
- emcee sampler: initialize walkers near optimum (#961)
- dynesty Sampler (#963)
- Fix pymc>=5 aesara/pytensor issues (#983)
- Visualization:
- Multi-result waterfall plot (#966)
- Model fit visualization: use problem.objective to simulate, instead of AMICI directly (#969)
- Unfix matplotlib version (#977)
- Plot measurements in sampling_prediction_trajectories (#976)
- Objective definition:
- Support for jax objectives (#986)
- General
- Fix license_file SetuptoolsDeprecationWarning (#965)
- Remove benchmark-models-petab requirement (#964)
- Github Actions(#958, #989 )
- Fix typehint for problem.x_priors_defs (#962)
- Fix tox4-related issues (#981)
- Fix AMICI deprecation warning (#956)
- Add pypesto.visualize.model_fit to API doc (#991)
- Exclude numpy==1.24.0 (#993)
- Ensembles:
- Save and load weights and sigmay (#876)
- Define relative cutoff (#855)
- PEtab:
- Pass problem kwargs via petab importer (#874)
- Use benchmark-models-petab instead of manual download (#915)
- Use fake RData in in prediction_to_petab_measurement_df (#925)
- Optimize:
- Fides: Include message according to exitflag (#878)
- Sampling:
- Added Pymc v4 Sampler (#818, #944, #948)
- Visualization:
- Fix waterfall plot limits for non-offsetted log-plots (#891)
- Plot unflattened model fit from flattened PEtab problems (#914)
- Added the offset value to waterfall plot for better intuitive understanding (#910, #945)
- Visualize parameter correlation (#888)
- History and storage:
- Fix history-result reconstruction mismatch (#902)
- Move history to own module (#903)
- Remove chi2, schi2 except for history convenience function (#904)
- Clean up history hierarchy (#908)
- Fix read_result with history (#907)
- Improve hdf5 history file lock (#909, #921)
- Fix message in check_overwrite (#894)
- Deactivate automatic saving (#930, #932)
- Allow problem=None in read_result_from_file (#936)
- Remove superfluous get_or_create_group (#937)
- Extract read_history_from_file from read_result_from_file (#939)
- Select: use model ID in save postprocessor filename, by default (#943)
- Select:
- Clean up use of minimize_options in model problem (#918)
- User-supplied method to produce pyPESTO problem (#884)
- Report, and binary model ID post-processors (#900)
- Move method.py functionalities to ui.py in petab_select (#919)
- Objective and Result:
- Julia objective (#927)
- Fix set of keys to aggregate results in aggregated objective (#883)
- Nicer OptimizeResult.summary (#895, #916, #935, #942, )
- Fix disjoint IDs check in OptimizerResult.append (#922)
- Fix OptimizeResult pickling (#953)
- General:
- Remove version from CITATION.cff (#887)
- Fix CI and docs (#892, #893)
- Literal typehints for mode (#899)
- Fix pandas deprecation warning (#896)
- Document NEP 29 (time-window based python support) (#905)
- Fix get_for_key deprecation warning (#906)
- Fix multiple warnings from existing AMICI model (#912)
- Fix warning from AMICI fixed overrides (#912)
- Fix flaky test CRFunModeHistoryTest.test_trace_all (#917)
- Fix novel B024 ABC without abstract methods (#923)
- Improve API docs and add overview notebook (#911)
- Fix typos (#926)
- Fix julia tests (#929, #933)
- Fix flaky test_mpipoolengine (#938)
- More informative test IDs in test_optimize (#940)
- Speed-up import via lazy imports (#946)
- Ensembles:
- Added standard deviation to ensemble prediction plots (#853)
- Storage
- Distinguish between scalar and vector values in Hdf5History._get_hdf5_entries (#856)
- Fix hdf5 history overwrite (#861)
- Updated optimization storage format. Made attributes explicit. (#863)
- Added problem to result from read_results_from_file (#862)
- General
- Various additions to Optimize(r)Result summary method (#859, #865, #866, #867)
- Fixed optimizer history fval offset (#834)
- Updated the profile, minimize, sample and added overwrite as argument. (#864)
- Fixed y-labels in pypesto.visualize.optimizer_history (#869)
- Created show_bounds, to display proper sampling scatter plots. (#868)
- Enabled saving messages and exit flags in hdf5 history in case of finished run (#873)
- Select: use objective function evaluation time as optimization time for models with no estimated parameters (#872)
- removed checking for equality and checking for np.allclose in test_aesara (#877)
- AMICI:
- Update to renamed steady state sensitivity modes (#843)
- Set amici.Solver.setReturnDataReportingMode (#835)
- Optimize pypesto/objective/amici_util.py::par_index_slices (#845)
- Remove Solver.getPreequilibration (#830)
- fix n_res size for error output with parameter dependent sigma (#812)
- PetabImporter: Auto-regenerate AMICI models in case of version mismatch (#848)
- Pymc3
- Disable Pymc3 Sampler tests (#831)
- Visualizations:
- Waterfall zoom (#808)
- Reverse opacities of colors in prediction trajectories plots(#838)
- Model fit plots (#850)
- OptimizeResult:
- Summary method (#816)
- Append method for OptimizeResult (#815)
- added __getattr__ function to OptimizeResult (#802)
- General:
- disable progress bar in tests (#799)
- Make Fides work with objectives, that do not have a hessian (#807)
- removed ftol in favor of tol (#803)
- Fix pyPESTO Select test; Update to stable black version (#810)
- Fix id assignment in case of large number of starts (#825)
- Temporarily fix jinja2 version (#826)
- Upgrade black to be compatible with latest click (#829)
- Fix wrong link in doc/example/hdf5_storage.ipynb (#827)
- Mark test/base/test_prior.py::test_mode as flaky (#833)
- Custom methods for autosave filenames (#822)
- fix saving ensemble predictions to hdf5 (#840)
- Upgrade nbQA to 1.3.1 (#846)
- Replaced constantParameters with constant_parameters in notebook (#852)
- Model selection (#397):
- Automated model selection with forward/backward/brute force methods and AIC/AICc/BIC criteria
- Much functionality (methods, criteria, model space, problem specification) via PEtab Select <https://github.com/PEtab-dev/petab_select>
- Plotting routines
- Example notebook <https://github.com/ICB-DCM/pyPESTO/blob/main/doc/example/model_selection.ipynb>
- Model calibration postprocessors
- Select first model that improves on predecessor model
- Use previous MLE as startpoint
- Tests
- AMICI:
- Maintain model settings when pickling for multiprocessing (#747)
- General:
- Apply nbqa black and isort to auto-format all notebooks via pre-commit hook (#794)
- Apply black formatting via pre-commit hook (#796)
- Require Python >= 3.8 (#795)
- Fix various warnings (#778)
- Minor fixes (#792)
- AMICI:
- Make AMICI objective report only what is being asked for (#777)
- Optimization:
- (Breaking) Refactor startpoint generation with clear assignments; allow checking gradients (#769)
- (Breaking) Prioritize history vs optimize result (#775)
- Storage:
- Fix loading empty history and result generation from multiple histories (#764)
- Fix autosave function for single-core (#770)
- Fix potential autosave overwriting and typehints (#772)
- Allow loading of partial results from history file (#783)
- CI:
- Compile AMICI models without gradients in test suite (#774)
- General:
- (Breaking) Create result sub-module; shift storage+result related functionality (#784)
- Fix finite difference constant mode (#786)
- Refactor ensemble module (#788)
- Introduce general C constants file (#788)
- Apply isort for automatic imports formatting (#785)
- Reduce run log output (#789)
- Various minor fixes (#765, #766, #768, #771)
- General:
- Automatically save results (#749)
- Update all docstrings to numpy standard (#750)
- Add Google Colab and nbviewer links to all notebooks for online execution (#758)
- Option to not save hess and sres in result (#760)
- Set minimum supported python version to 3.7 (#755)
- Visualization:
- Parameterize start index in optimized model fit (#744)
- PEtab:
- Use correct measurement column name in rdatas_to_simulation_df (#721)
- Visualize optimized model fit via PEtab problem (#725)
- Un-ignore observable scaling tests (#742)
- New function to plot model trajectory with custom time points (#739)
- Optimization:
- OOD Refactor startpoint generation (#732)
- Update to fides 0.6.0 (#733)
- Correctly report FVAL vs CHI2 values in fides (#741)
- Ensemble:
- Option for using weighted ensemble means (#702)
- Default names and bounds for Ensemble.from_sample (#730)
- Storage:
- Load optimization result from HDF5 history (#726)
- General:
- Enable use of priors with least squares optimizers (#745)
- Add temporary CITATION.cff file (#734)
- Regular scheduled CI runs (#754)
- Allow to not copy objective in problem (#756)
- Fixes:
- Fix non-exported visualization in notebook (#729)
- Mark some more tests as flaky (#704)
- Fix minor data type and OOD issues in parameter and waterfall plots (#731)
- Finite Differences:
- Adaptive finite differences (#671)
- Add helper function for checking gradients of objectives (#690)
- Small bug fixes (#711, #714)
- Storage:
- Store representation of the objective (#669)
- Minor fixes in HDF5 history (#679)
- HDF5 reader for ensemble predictions (#681)
- Update storage demo jupyter notebook (#699)
- Option to trim trace to be monotonically decreasing (#705)
- General:
- Improved tests and bug fixes of validation intervals (#676, #685)
- Add input file validation via PEtab linter for PEtab import (#678)
- Remove default values from docstring (#680)
- Minor fixes/improvements of ensembles (#687, #688)
- Fix sorting of optimization values including NaN values (#691)
- Specify axis limits for plotting (#693)
- Minor fixes in visualization (#696)
- Add installation option all_optimizers (#695)
- Improve installation documentation (#689)
- Update pysb and BNG version on GitHub Actions (#697)
- Bug fix in steady state guesses (#715)
- Objective:
- Basic finite differences (#666)
- Fix factor 2 in res/fval values (#619)
- Optimization:
- Sort optimization results when appending (#668)
- Read optimizer result from HDF5 (previously only CSV) (#663)
- Storage:
- Load ensemble from HDF5 (#640)
- CI:
- Add flake8 checks as pre-commit hook (#662)
- Add efficient biological conversion reaction test model (#619)
- General:
- No automatic import of the predict module (#657)
- Assert unique problem parameter names (#665)
- Load ensemble from optimization result with and without history usage (#640)
- Calculate validation profile significance (#658)
- Set pypesto screen logger to "INFO" by default (#667)
- Minor fixes:
- Fix axis variable overwriting in visualize.sampling_parameter_traces (#665)
- Objectives:
- New Aesara objectve (#623, #629, #635)
- Sampling:
- New Emcee sampler (#606)
- Fix compatibility to new Theano version (#650)
- Storage:
- Improve hdf5 storage documentation (#612)
- Hdf5 history for MultiProcessEngine (#650)
- Minor fixes (#637, #638, #645, #649)
- Visualization:
- Fix bounds of parameter plots (#601)
- Fix waterfall plots with multiple results (#611)
- CI:
- Move CI tests on GitHub Actions to python 3.9 (#598)
- Add issue template (#604)
- Update BionetGen Link (#630)
- Introduce project.toml (#634)
- General:
- Introduce progress bar for optimization, profiles and ensembles (#641)
- Extend gradient checking functionality (#644)
- Minor fixes:
- Fix installation of ipopt (#599)
- Fix Zenodo link (#601)
- Fix duplicates in documentation (#603)
- Fix least squares optimizers (#617 #631 #632)
- Fix trust region options (#616)
- Fix slicing for new AMICI release (#621)
- Refactor and document latin hypercube sampling (#647)
- Fix missing SBML name in PEtab import (#648)
- Ensembles/Sampling:
- General ensemble analysis, visualization, storage (#557, #565, #568)
- Calculate and plot MCMC parameter and prediction CIs via ensemble definition, parallelize ensemble predictions (#490)
- Optimization:
- New optimizer: SciPy Differential Evolution (#543)
- Set fides default to hybrid (#578)
- AMICI:
- Make guess_steadystate less restrictive (#561) and have a more intuitive default behavior (#562, #582)
- Customize time points (#490)
- Storage:
- Save HDF5 history with SingleCoreEngine (#564)
- Add read/write function for whole results (#589)
- Engines:
- MPI based distributed parallelization (#542)
- Visualization:
- Speed up waterfall plots by resizing scales only once (#577)
- Change waterfall default offset to 1 - minimum (#593)
- CI:
- Move GHA CI tests to pull request level for better cooperability (#574)
- Streamline test environments using tox and pre-commit hooks (#579)
- Test profile and sampling storage (#585)
- Update for Ubuntu 20.04, add rerun on failure (#587)
- Minor fixes (release notes #558, nlop tests #559, close files #495, visualization #554, deployment #560, flakiness #570, aggregated deepcopy #572, respect user-provided offsets #576, update to SWIG 4 #591, check overwrite in profile writing #566)
- New optimizers:
- FIDES (#506, #503 # 500)
- NLopt (#493)
- Extended PEtab support:
- PySB import (#437)
- Support of PEtab's initializationPriors (#535)
- Support of prior parameterScale{Normal,Laplace} (#520)
- Example notebook for synthetic data generation (#482)
- General new and improved functionality:
- Predictions (#544)
- Move tests to GitHub Actions (#524)
- Parallelize profile calculation (#532)
- Save x_guesses in pypesto.problem (#494)
- Improved finite difference gradients (#464)
- Support of unconstrained optimization (#519)
- Additional NaN check for fval, grad and hessian (#521)
- Add sanity checks for optimizer bounds (#516)
- Improvements in storage:
- Fix hdf5 export of optimizer history (#536)
- Fix reading x_names from hdf5 history (#528)
- Storage does not save empty arrays (#489)
- hdf5 storage sampling (#546)
- hdf5 storage parameter profiles (#546)
- Improvements in the visualization routines:
- Plot parameter values as histogram (#485)
- Fix y axis limits in waterfall plots (#503)
- Fix color scheme in visualization (#498)
- Improved visualization of optimization results (#486)
- Several small bug fixes (#547, #541, #538, #533, #512, #508)
- New optimizer: CMA-ES (#457)
- New plot: Optimizer convergence summary (#446)
- Fixes in visualization:
- Type checks for reference points (#460)
- y_limits in waterfall plots with multiple results (#475)
- Support of new amici release (#469)
- Multiple fixes in optimization code:
- Remove unused argument for dlib optimizer (#466)
- Add check for installation of ipopt (#470)
- Add maxiter as default option of dlib (#474)
- Numpy based subindexing in amici_util (#462)
- Check amici/PEtab installation (#477)
- Example Notebook for prior functionality (#438)
- Changed parameter indexing in profiling routines (#419)
- Basic sanity checking for parameter fixing (#420)
- Bug fixes in:
- Displaying of multi start optimization (#430)
- AMICI error output (#428)
- Axes scaling/limits in waterfall plots (#441)
- Priors (PEtab import, error handling) (#448, #452, #454)
- Improved sampling diagnostics (e.g. effective samples size) (#426)
- Improvements and bug fixes in parameter plots (#425)
Major:
- Modularize import, to import optimization, sampling and profiling separately (#413)
Minor:
- Bug fixes in
- sampling (#412)
- visualization (#405)
- PEtab import (#403)
- Hessian computation (#390)
- Improve hdf5 error output (#409)
- Outlaw large new files in GitHub commits (#388)
Objective
- Write solver settings to stream to enable serialization for distributed systems (#308)
- Refactor objective function (#347)
- Removes necessity for all of the nasty binding/undbinding in AmiciObjective
- Substantially reduces the complexity of the AggregatedObjective class
- Aggregation of functions with inconsistent sensi_order/mode support
- Introduce ObjectiveBase as an abstract Objective class
- Introduce FunctionObjective for objectives from functions
- Implement priors with gradients, integrate with PEtab (#357)
- Fix minus sign in AmiciObjective.get_error_output (#361)
- Implement a prior class, derivatives for standard models, interface with PEtab (#357)
- Use amici.import_model_module to resolve module loading failure (#384)
Problem
- Tidy up problem vectors using properties (#393)
Optimization
- Interface IpOpt optimizer (#373)
Profiles
- Tidy up profiles (#356)
- Refactor profiles; add locally approximated profiles (#369)
- Fix profiling and visualization with fixed parameters (#393)
Sampling
- Geweke test for sampling convergence (#339)
- Implement basic Pymc3 sampler (#351)
- Make theano for pymc3 an optional dependency (allows using pypesto without pymc3) (#356)
- Progress bar for MCMC sampling (#366)
- Fix Geweke test crash for small sample sizes (#376)
- In parallel tempering, allow to only temperate the likelihood, not the prior (#396)
History and storage
- Allow storing results in a pre-filled hdf5 file (#290)
- Various fixes of the history (reduced vs. full parameters, read-in from file, chi2 values) (#315)
- Fix proper dimensions in result for failed start (#317)
- Create required directories before creating hdf5 file (#326)
- Improve storage and docs documentation (#328)
- Fix storing x_free_indices in hdf5 result (#334)
- Fix problem hdf5 return format (#336)
- Implement partial trace extraction, simplify History API (#337)
- Save really all attributes of a Problem to hdf5 (#342)
Visualization
- Customizable xLabels and tight layout for profile plots (#331)
- Fix non-positive bottom ylim on a log-scale axis in waterfall plots (#348)
- Fix "palette list has the wrong number of colors" in sampling plots (#372)
- Allow to plot multiple profiles from one result (#399)
Logging
- Allow easier specification of only logging for submodules (#398)
Tests
- Speed up travis build (#329)
- Update travis test system to latest ubuntu and python 3.8 (#330)
- Additional code quality checks, minor simplifications (#395)
- Tidy up and speed up tests (#265 and others).
- Basic self-implemented Adaptive Metropolis and Adaptive Parallel Tempering sampling routines (#268).
- Fix namespace sample -> sampling (#275).
- Fix covariance matrix regularization (#275).
- Fix circular dependency PetabImporter - PetabAmiciObjective via AmiciObjectBuilder, PetabAmiciObjective becomes obsolete (#274).
- Define AmiciCalculator to separate the AMICI call logic (required for hierarchical optimization) (#277).
- Define initialize function for resetting steady states in AmiciObjective (#281).
- Fix scipy least squares options (#283).
- Allow failed starts by default (#280).
- Always copy parameter vector in objective to avoid side effects (#291).
- Add Dockerfile (#288).
- Fix header names in CSV history (#299).
Documentation:
- Use imported members in autodoc (#270).
- Enable python syntax highlighting in notebooks (#271).
- Add typehints to global functions and classes.
- Add PetabImporter.rdatas_to_simulation_df function (all #235).
- Adapt y scale in waterfall plot if convergence was too good (#236).
- Clarify that Objective is of type negative log-posterior, for minimization (#243).
- Tidy up AmiciObjective.parameter_mapping as implemented in AMICI now (#247).
- Add MultiThreadEngine implementing multi-threading aside the MultiProcessEngine implementing multi-processing (#254).
- Fix copying and pickling of AmiciObjective (#252, #257).
- Remove circular dependence history-objective (#254).
- Fix problem of visualizing results with failed starts (#249).
- Rework history: make thread-safe, use factory methods, make context-specific (#256).
- Improve PEtab usage example (#258).
- Define history base contract, enabling different backends (#260).
- Store optimization results to HDF5 (#261).
- Simplify tests (#263).
Breaking changes:
- HistoryOptions passed to pypesto.minimize instead of Objective (#256).
- GlobalOptimizer renamed to PyswarmOptimizer (#235).
- Rewrite AmiciObjective and PetabAmiciObjective simulation routine to directly use amici.petab_objective routines (#209, #219, #225).
- Implement petab test suite checks (#228).
- Various error fixes, in particular regarding PEtab and visualization.
- Improve trace structure.
- Fix conversion between fval and chi2, fix FIM (all #223).
- Only compute FIM when sensitivities are available (#194).
- Fix documentation build (#197).
- Add support for pyswarm optimizer (#198).
- Run travis tests for documentation and notebooks only on pull requests (#199).
- Update to AMICI 0.10.13, fix API changes (#185).
- Start using PEtab import from AMICI to be able to import constant species (#184, #185)
- Require PEtab>=0.0.0a16 (#183)
- Add logo (#178).
- Fix petab API changes (#179).
- Some minor bugfixes (#168).
- Support noise models in Petab and Amici.
- Minor Petab update bug fixes.
- Several minor error fixes, in particular on tests and steady state.
- Introduce AggregatedObjective to use multiple objectives at once.
- Estimate steady state in AmiciObjective.
- Check amici model build version in PetabImporter.
- Use Amici multithreading in AmiciObjective.
- Allow to sort multistarts by initial value.
- Show usage of visualization routines in notebooks.
- Various fixes, in particular to visualization.
- Implement multi process parallelization engine for optimization.
- Introduce PrePostProcessor to more reliably handle pre- and post-processing.
- Fix problems with simulating for multiple conditions.
- Add more visualization routines and options for those (colors, reference points, plotting of lists of result obejcts)
- Import amici models and the petab data format automatically using pypesto.PetabImporter.
- Basic profiling routines.
- Fix parameter values
- Record trace of function values
- Amici objective to directly handle amici models
- Basic framework and implementation of the optimization