https://github.com/elfi-dev/elfi
ELFI - Engine for Likelihood-Free Inference
Science Score: 46.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org, zenodo.org -
✓Committers with academic emails
2 of 20 committers (10.0%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.0%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
ELFI - Engine for Likelihood-Free Inference
Basic Info
- Host: GitHub
- Owner: elfi-dev
- License: bsd-3-clause
- Language: Python
- Default Branch: dev
- Homepage: http://elfi.readthedocs.io
- Size: 2.15 MB
Statistics
- Stars: 277
- Watchers: 19
- Forks: 62
- Open Issues: 14
- Releases: 24
Topics
Metadata Files
README.md
Version 0.8.7 released! See the CHANGELOG and notebooks.

ELFI - Engine for Likelihood-Free Inference

ELFI is a statistical software package written in Python for likelihood-free inference (LFI) such as Approximate Bayesian Computation (ABC). The term LFI refers to a family of inference methods that replace the use of the likelihood function with a data generating simulator function. ELFI features an easy to use generative modeling syntax and supports parallelized inference out of the box.
Currently implemented LFI methods: - ABC Rejection sampler - Sequential Monte Carlo ABC sampler - SMC-ABC sampler with adaptive threshold selection - SMC-ABC sampler with adaptive distance - Bayesian Optimization for Likelihood-Free Inference (BOLFI) - Robust Optimisation Monte Carlo (ROMC) - Bayesian Optimization for Likelihood-Free Inference by Ratio Estimation (BOLFIRE) - Bayesian Synthetic Likelihood (BSL)
Other notable included algorithms and methods: - Bayesian Optimization - No-U-Turn-Sampler, a Hamiltonian Monte Carlo MCMC sampler
ELFI also integrates tools for visualization, model comparison, diagnostics and post-processing.
See examples under notebooks to get started. Full documentation can be found at http://elfi.readthedocs.io/. Limited user-support may be asked from elfi-support.at.hiit.fi, but the Gitter chat is preferable.
Installation with pip
ELFI requires Python 3.9 or greater. You can install ELFI by typing in your terminal:
pip install elfi
or on some platforms using Python 3 specific syntax:
pip3 install elfi
Note that in some environments you may need to first install numpy with
pip install numpy. This is due to our dependency to GPy that uses numpy in its installation.
Installation from conda-forge
Installing elfi from the conda-forge channel can be achieved by adding conda-forge to your channels with:
conda config --add channels conda-forge
Once the conda-forge channel has been enabled, elfi can be installed with:
conda install elfi
It is possible to list all of the versions of elfi available on your platform with:
conda search elfi --channel conda-forge
Optional dependencies
graphvizfor drawing graphical models (needs Graphviz), highly recommended
Installing Python 3
If you are new to Python, perhaps the simplest way to install a specific version of Python is with Anaconda.
Virtual environment using Anaconda
It is very practical to create a virtual Python environment. This way you won't interfere with your default Python environment and can easily use different versions of Python in different projects. You can create a virtual environment for ELFI using anaconda with:
conda create -n elfi python=3.9 numpy
source activate elfi
pip install elfi
Docker container
A simple Dockerfile with Jupyter support is also provided. This is especially suitable for running tests. Please see Docker documentation for details.
git clone --depth 1 https://github.com/elfi-dev/elfi.git
cd elfi
make docker-build # builds the image with requirements for dev
make docker # runs a container with live elfi directory
To open a Jupyter notebook, run
jupyter notebook --ip 0.0.0.0 --no-browser --allow-root
within the container and then on host open the page http://localhost:8888.
Potential problems with installation
ELFI depends on several other Python packages, which have their own dependencies.
Resolving these may sometimes go wrong:
- If you receive an error about missing numpy, please install it first.
- If you receive an error about yaml.load, install pyyaml.
- On OS X with Anaconda virtual environment say conda install python.app and then use
pythonw instead of python.
- Note that ELFI requires Python 3.9 or greater so try pip3 install elfi.
- Make sure your Python installation meets the versions listed in requirements.txt.
Citation
If you wish to cite ELFI, please use the paper in JMLR:
@article{JMLR:v19:17-374,
author = {Jarno Lintusaari and Henri Vuollekoski and Antti Kangasr{\"a}{\"a}si{\"o} and Kusti Skyt{\'e}n and Marko J{\"a}rvenp{\"a}{\"a} and Pekka Marttinen and Michael U. Gutmann and Aki Vehtari and Jukka Corander and Samuel Kaski},
title = {ELFI: Engine for Likelihood-Free Inference},
journal = {Journal of Machine Learning Research},
year = {2018},
volume = {19},
number = {16},
pages = {1-7},
url = {http://jmlr.org/papers/v19/17-374.html}
}
Owner
- Name: elfi-dev
- Login: elfi-dev
- Kind: organization
- Repositories: 3
- Profile: https://github.com/elfi-dev
GitHub Events
Total
- Issues event: 3
- Watch event: 11
- Issue comment event: 2
- Push event: 2
- Pull request review event: 2
- Pull request event: 3
- Fork event: 2
Last Year
- Issues event: 3
- Watch event: 11
- Issue comment event: 2
- Push event: 2
- Pull request review event: 2
- Pull request event: 3
- Fork event: 2
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Henri Vuollekoski | h****i@a****i | 180 |
| Jarno Lintusaari | j****i@a****i | 179 |
| Henri Pesonen | h****n@g****m | 98 |
| Antti Kangasrääsiö | a****o@h****i | 86 |
| uremes | u****s | 39 |
| Kusti Skytén | k****n@h****i | 16 |
| Mehti Musayev | m****v@g****m | 10 |
| Arijus Pleska | p****g | 6 |
| Waldir Leoncio | w****o@g****m | 4 |
| Jarno Lintusaari | j****i@g****m | 3 |
| Aki Vehtari | a****i@a****i | 2 |
| dependabot[bot] | 4****] | 2 |
| Vasilis Gkolemis | v****s@g****m | 2 |
| Bart Pelssers | p****s | 1 |
| Ben Dudson | d****2@l****v | 1 |
| Jan Kokko | j****7@g****m | 1 |
| perdaug | 2****p@s****k | 1 |
| Lintusaari Jarno | l****1@c****i | 1 |
| Jan Kokko | j****o@h****i | 1 |
| RyanJafefKelly | r****n@k****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 17
- Total pull requests: 108
- Average time to close issues: 7 months
- Average time to close pull requests: 24 days
- Total issue authors: 10
- Total pull request authors: 8
- Average comments per issue: 1.12
- Average comments per pull request: 0.08
- Merged pull requests: 104
- Bot issues: 0
- Bot pull requests: 2
Past Year
- Issues: 2
- Pull requests: 2
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 2
- Pull request authors: 1
- Average comments per issue: 0.0
- Average comments per pull request: 0.0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- hpesonen (6)
- aejarvin (2)
- RyanJafefKelly (2)
- uremes (1)
- isa-a (1)
- HeltonSM (1)
- givasile (1)
- ddurnford (1)
- YannickNoelStephanKuhn (1)
- mdwoelfle (1)
Pull Request Authors
- hpesonen (64)
- uremes (45)
- YannickNoelStephanKuhn (2)
- dependabot[bot] (2)
- jankokk (1)
- bendudson (1)
- RyanJafefKelly (1)
- givasile (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- Sphinx >=1.4.8 development
- coverage >=4.2 development
- flake8 >=3.0.4 development
- flake8-docstrings >=1.0.2 development
- flake8-isort >=2.0.1 development
- isort >=4.2.5,<5.0.0 development
- pydocstyle <5.0.0 development
- pytest >=4.4 development
- pytest-cov >=2.4.0 development
- pytest-rerunfailures >=4.1 development
- tox >=2.4.1 development
- GPy >=1.0.9
- dask >=2.30.0
- ipyparallel >=6
- matplotlib >=1.1
- networkX >=2.0
- numdifftools >=0.9
- numpy >=1.12.1
- scikit-learn >=0.18.1
- scipy >=0.19
- toolz >=0.8
- actions/checkout v2 composite
- actions/setup-python v2 composite
- ubuntu bionic build
- GPy >=1.0.9
- MarkupSafe ==2.0.1
- Pygments ==2.12.0
- alabaster ==0.7.12
- commonmark ==0.8.0
- dask >=2.30.0
- docutils ==0.17.1
- future ==0.18.3
- ipykernel ==5.5.6
- ipyparallel >=6
- ipyparallel ==8.2.1
- ipython ==7.16.3
- ipython-genutils ==0.2.0
- jedi ==0.17.2
- jinja2 ==3.0.3
- matplotlib >=1.1
- nbsphinx *
- networkX >=2.0
- numdifftools >=0.9
- numpy >=1.12.1
- pillow ==8.4.0
- readthedocs-sphinx-ext ==2.1.8
- scikit-learn >=0.18.1
- scipy >=0.19
- sphinx ==1.8.6
- sphinx-rtd-theme ==0.4.3
- sphinxcontrib-serializinghtml ==1.1.5
- sphinxcontrib-websupport ==1.2.4
- toolz >=0.8
- urllib3 ==1.26.9