- Use kernel copy to avoid pickle issue and allow BOLFI parallelisation with non-default kernel
- Restrict matplotlib version < 3.9 for compatibility with GPy
- Add option to use additive or multiplicative adjustment in any acquisition method
- Add arziv-mocking to rtd-setup
- Add convenience method for obtaining elfi samples as InferenceData` to be used with arviz
- Improve randmaxvar batch acquisitions and initialisation by enabling sampling from prior
- Drop official Python support for 3.7 and 3.8 as GPy is not officially supported for these versions
- Enable using maxiter in bo.utils.minimize
- Fix surrogate model copy operation
- Fix typo in requirements.txt
- Update available methods list
- Pin numpy <= 1.24.0 due to GPy
- Update RTD configuration
- Fix broken 0.8.5 by adding missing __init__.py to elfi/methods/bsl/
- Fix the option to continue inference in model-based inference
- Move classifiers
- Fix readthedocs configuration
- Update penalty to shrinkage parameter conversion in synthetic likelihood calculation
- Update BSL pre sample methods
- Update BslSample
- Move ROMC tests
- Update to numpy 1.24
- Update readthedocs configuration
- Restrict numpy < 1.24 until codebase has been updated
- Update documentation-related files: docs, conf.py and requirements-dev.txt
- Update PULL_REQUEST_TEMPLATE.md
- Drop tests for py36 and add tests for py39 and py310
- Fix couple of minor bugs in ar1-model
- Update parent class in BOLFIRE
- Fix semiparametric synthetic likelihood with glasso/warton and add tests
- Fix plot marginals and remove plot summaries
- Fix stochastic volatility example
- Improve batch simulations in toad example
- Remove synthetic likelihood node and update BSL data collection
- Fix M/G/1 example
- Fix scratch assay example
- Add scratch assay example
- Add GP classifier for ratio estimation
- Fix multidimensional indexing in daycare example
- Add BSL method
- Modify Lotka-Volterra model's priors as many methods do not support discrete random variables.
- Fix acquisition index in state plot
- Reformat summary() for Sample(ParameterInferenceResult)
- Fix linting in arch.py
- Add summary statistics to Lotka-Volterra model
- Add boolean observation_noise option to lotka_volterra
- Add parameter names as an optional input in model prior and fix the parameter order in priors used in BOLFI and BOLFIRE
- Add feature names as an optional input and make training data size a required input in BOLFIRE
- Fix the observed property in simulator nodes
- Fix default outputs in generate
- Add docstring description to ARCH-model
- Make MAP estimates calculation in BOLFIRE optional and based on log-posterior
- Use batch system to run simulations in BOLFIRE
- Use target_model.parameter_names from instead of model.parameter_names in BOLFIRE
- Extract BO results using target_model.parameter_names from instead of model.parameter_names
- Update tox.ini
- Add option to use additive acquisition cost in LCBSC
- Change sigma_proposals-input in metropolis from list to dict
- Fix is_array in utils
- Fix acq_noise_var-bug in acquisition.py. Influenced BOLFI.
- Add a new inference method: BOLFIRE
- Fix the hessian approximation, visualizations and the line search algorithm in ROMC
- Add tests for all ROMC parts
- Relax tightly pinned dependency on a version of dask[distributed]
- Change lotka-volterra priors to follow the given reference
- Fix README.md badges
- Fix a few small issues with CONTRIBUTING.rst
- Add Github Actions based CI workflow
- Add the skeleton of TestBench-functionality for comparing methods
- Fix a bug of plot_traces() not working if there is only 1 chain
- Fix histograms in pair_plot diagonals and improve visual outlook
- Improve axes creation and visual outlook
- Fix a bug where precomputed evidence size was not taken into account when reporting BOLFI-results
- Fix a bug where observable nodes were not colored gray when using elfi.draw
- Add plot_predicted_node_pairs in visualization.py.
- Merge adaptive distance ABC-SMC and ABC-SMC functionalities
- Split DensityRatioEstimation from utils.py into separate file
- Refactor parameter_inferency.py into methodtype-wise individual files
- Rename elfi.methods.mcmc.gelman_rubin as elfi.methods.mcmc.gelman_rubin_statistic
- Refactor class ModelPrior from methods.utils to model.extensions.
- Add adaptive threshold selection method for ABC-SMC
- Modify ProgressBar-functionality
- Add constrains to ExpIntVar-acquisition so that no queries will be outside prior support
- Add ABC-SMC with adaptive distance
- Add Robust optimisation Monte Carlo method
- Fix small issues in ABC-SMC which did not work in 1-dimensional problems or with output names
- Update README.md
- Update info to reflect setting python 3.6 as the default version
- Update documentation to setting python 3.6 as default
- Add dask support to elfi client options
- Add python 3.7 to travis tests and remove python 3.5 due to clash with dask
- Modify progress bar to better indicate ABC-SMC inference status
- Change networkx support from 1.X to 2.X
- Improve docstrings in elfi.methods.bo.acquisition
- Fix readthedocs-build by adding .readthedocs.yml and restricting the build to python3.5, for now
- Fix incompatibility with scipy>1.5 in bo.utils.stochastic_optimization
- Minor improvements to documentation
- Improved the appearance of figures produced by plot_gp and added the option to draw true parameter indicators on the subplots using the optional input true_params
- Modified DCC model by taking into account that subject can't infect herself
- Added ability to set minimizer constrains for BOLFI
- Enable bolfi.fit using only pre-generated initial evidence points
- Fixed a bug causing random seed number to be deterministic
- Updated requirements-dev.txt with pytest>=4.4
- Minor changes to documentation and refactoring
- Added make test-notslow alternative
- Add sampler option algorithm for bolfi-posterior-sampling
- Add a check whether the option given for algorithm is one if the implemented samplers
- Add metropolis sampler algorithm=metropolis for bolfi-posterior-sampling
- Add option warmup to metropolis-sampler
- Add a small test of metropolis-sampler
- Fix bug in plot_discrepancy for more than 6 parameters
- Implement plot_gp for BayesianOptimization classes for plotting discrepancies and pair-wise contours in case when we have arbitrary number of parameters
- Fix lint
- Fix bug in plot_pairs which crashes in case of 1 parameter
- Fix bug in plot_marginals which outputs empty plots in case where we have parameter more than 5
- Fix crashing summary and plots for samples with multivariate priors
- Add progress bar for inference methods
- Add method save to Sample objects
- Add support for giving seed to generate
- Implement elfi.plot_params_vs_node for plotting parameters vs. node output
- Added support for kwargs in elfi.set_client
- Added new example: inference of transmission dynamics of bacteria in daycare centers
- Added new example: Lorenz model
- Implemented model selection (elfi.compare_models). See API documentation.
- Fix threshold=0 in rejection sampling
- Set default batch_size to 1 in ParameterInference base class
- Added new example: the stochastic Lotka-Volterra model
- Fix methods.bo.utils.minimize to be strictly within bounds
- Implemented the Two Stage Procedure, a method of summary-statistics diagnostics
- Added the MaxVar acquisition method
- Added the RandMaxVar acquisition method
- Added the ExpIntVar acquisition method
- Implemented the Two Stage Procedure, a method of summary-statistics diagnostics
- Added new example: the stochastic Lotka-Volterra model
- Fix methods.bo.utils.minimize to be strictly within bounds
- Fix elfi.Distance to support scipy 1.0.0
- Further performance improvements for rerunning inference using stored data via caches
- Added the general Gaussian noise example model (fixed covariance)
- restrict NetworkX to versions < 2.0
- Easier saving and loading of ElfiModel
- Renamed elfi.set_current_model to elfi.set_default_model
- Renamed elfi.get_current_model to elfi.get_default_model
- Improved performance when rerunning inference using stored data
- Change SMC to use ModelPrior, use to immediately reject invalid proposals
- Fix elfi.Prior and NoneType error #203
- Fix a bug preventing the reuse of ArrayPool data with a new inference
- Added pickling for OutputPool:s
- Added OutputPool.open to read a closed pool from disk
- Refactored Sample and SmcSample classes
- Added elfi.new_model method
- Made elfi.set_client method to accept clients as strings for easier client switching
- Fixed a bug in NpyArray that would lead to an inconsistent state if multiple simultaneous instances were opened.
- Added the ability to move the pool data folder
- Sample.summary is now a method instead of a property
- SmcSample methods takes the keyword argument 'all' to show results of all populations
- Added a section about iterative advancing to documentation
- Changed some of the internal variable names in methods.py. Most notable outputs is now output_names.
- methods.py renamed to parameter_inference.py
- Changes in elfi.methods.results module class names: - OptimizationResult (a new result type) - Result -> Sample - ResultSMC -> SmcSample - ResultBOLFI -> BolfiSample
- Changes in BO/BOLFI: - take advantage of priors - take advantage of seed - improved optimization scheme - bounds must be a dict
- two new toy examples added: Gaussian and the Ricker model
Major update, a lot of code base rewritten.
Most important changes:
- revised syntax for model definition (esp. naming)
- scheduler-independent parallelization interface (currently supports native & ipyparallel)
- methods can now be run iteratively
- persistence to .npy files
- Bayesian optimization as a separate method
- sampling in BOLFI
- MCMC sampling using the No-U-Turn-Sampler (NUTS)
- Result object for BOLFI
- virtual vectorization of external operations
See the updated notebooks and documentation for examples and details.
- Clean up requirements
- Set graphviz and unqlite optional
- PyPI release (pip install elfi)
- The inference problem is now contained in an Inference Task object.
- SMC-ABC has been reimplemented.
- Results from inference are now contained in a Result object.
- Integrated basic visualization.
- Added a notebook demonstrating usage with external simulators and operations.
- Lot's of refactoring and other minor changes.