https://github.com/elfi-dev/elfi

ELFI - Engine for Likelihood-Free Inference

https://github.com/elfi-dev/elfi

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

bayesian bayesian-inference inference likelihood-free python simulator statistics

Keywords from Contributors

interactive projection sequences optim embedded genomics observability autograding hacking shellcodes
Last synced: 6 months ago · JSON representation

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
bayesian bayesian-inference inference likelihood-free python simulator statistics
Created over 9 years ago · Last pushed 10 months ago
Metadata Files
Readme Changelog Contributing License

README.md

Version 0.8.7 released! See the CHANGELOG and notebooks.

ELFI - Engine for Likelihood-Free Inference

Build Status Documentation Status Gitter DOI

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

  • graphviz for 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

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

All Time
  • Total Commits: 634
  • Total Committers: 20
  • Avg Commits per committer: 31.7
  • Development Distribution Score (DDS): 0.716
Past Year
  • Commits: 2
  • Committers: 1
  • Avg Commits per committer: 2.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email 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
under develoment (2)
Pull Request Labels
dependencies (2)

Dependencies

requirements-dev.txt pypi
  • 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
requirements.txt pypi
  • 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
.github/workflows/pytest.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
Dockerfile docker
  • ubuntu bionic build
docs/requirements.txt pypi
  • 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
setup.py pypi