-
Notifications
You must be signed in to change notification settings - Fork 61
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #85 from HIIT/dev
The "Review release" 0.2
- Loading branch information
Showing
59 changed files
with
6,356 additions
and
933 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,13 @@ | ||
language: python | ||
python: | ||
- "3.5" | ||
cache: pip | ||
# command to install dependencies | ||
install: | ||
- pip install numpy | ||
- pip install -e .[dev] | ||
- pip install git+https://github.com/dask/dask.git | ||
- pip install git+https://github.com/dask/distributed.git | ||
- pip install cython | ||
- pip install -r requirements-dev.txt | ||
- pip install -e . | ||
# command to run tests | ||
script: | ||
- py.test tests/unit | ||
- make test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
.. highlight:: shell | ||
|
||
============ | ||
Contributing | ||
============ | ||
|
||
Contributions are welcome, and they are greatly appreciated! Every | ||
little bit helps, and credit will always be given. | ||
|
||
You can contribute in many ways: | ||
|
||
Types of Contributions | ||
---------------------- | ||
|
||
Report Bugs | ||
~~~~~~~~~~~ | ||
|
||
Report bugs at https://github.com/HIIT/elfi/issues. | ||
|
||
If you are reporting a bug, please include: | ||
|
||
* Your operating system name and version. | ||
* Any details about your local setup that might be helpful in troubleshooting. | ||
* Detailed steps to reproduce the bug. | ||
|
||
Fix Bugs | ||
~~~~~~~~ | ||
|
||
Look through the GitHub issues for bugs. Anything tagged with "bug" | ||
and "help wanted" is open to whoever wants to implement it. | ||
|
||
Implement Features | ||
~~~~~~~~~~~~~~~~~~ | ||
|
||
Look through the GitHub issues for features. Anything tagged with "enhancement" | ||
and "help wanted" is open to whoever wants to implement it. | ||
|
||
Write Documentation | ||
~~~~~~~~~~~~~~~~~~~ | ||
|
||
ELFI could always use more documentation, whether as part of the | ||
official ELFI docs, in docstrings, or even on the web in blog posts, | ||
articles, and such. | ||
|
||
Submit Feedback | ||
~~~~~~~~~~~~~~~ | ||
|
||
The best way to send feedback is to file an issue at https://github.com/HIIT/elfi/issues. | ||
|
||
If you are proposing a feature: | ||
|
||
* Explain in detail how it would work. | ||
* Keep the scope as narrow as possible, to make it easier to implement. | ||
* Remember that this is a volunteer-driven project, and that contributions | ||
are welcome :) | ||
|
||
Get Started! | ||
------------ | ||
|
||
Ready to contribute? Here's how to set up `ELFI` for local development. | ||
|
||
1. Fork the `elfi` repo on GitHub. | ||
2. Clone your fork locally:: | ||
|
||
$ git clone git@github.com:your_name_here/elfi.git | ||
|
||
3. Install your local copy and the development requirements into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development. Due to a bug in the pip installation of GPy numpy needs to be installed manually.:: | ||
|
||
$ mkvirtualenv elfi | ||
$ cd elfi/ | ||
$ pip install numpy | ||
$ make dev | ||
|
||
4. Create a branch for local development:: | ||
|
||
$ git checkout -b name-of-your-bugfix-or-feature | ||
|
||
Now you can make your changes locally. | ||
5. Follow the `Style Guidelines`_ | ||
|
||
6. When you're done making changes, check that your changes pass flake8 and the tests:: | ||
|
||
$ make lint | ||
$ make test | ||
|
||
Also make sure that the docstrings of your code are formatted properly:: | ||
|
||
$ make docs | ||
|
||
7. Commit your changes and push your branch to GitHub:: | ||
|
||
$ git add . | ||
$ git commit -m "Your detailed description of your changes." | ||
$ git push origin name-of-your-bugfix-or-feature | ||
|
||
8. Submit a pull request through the GitHub website. | ||
|
||
Style Guidelines | ||
---------------- | ||
|
||
The projects follows the `Khan Academy Style Guide <https://github.com/Khan/style-guides/blob/master/style/python.md>`_. Except that we use numpy style docstrings instead of Google style docstrings. | ||
|
||
See `this example <http://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_numpy.html>`_ for how to format the docstrings. | ||
|
||
Additional Style Guidelines | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
- Use the ``.format()`` string method instead of the old percent operator. For more information see `PyFormat <https://pyformat.info/>`_. | ||
- Use the type hinting syntax suggested `here <https://www.jetbrains.com/help/pycharm/2016.1/type-hinting-in-pycharm.html>`_ in the docstrings. | ||
|
||
Pull Request Guidelines | ||
----------------------- | ||
|
||
Before you submit a pull request, check that it meets these guidelines: | ||
|
||
1. The pull request should include tests. | ||
2. If the pull request adds functionality, the docs should be updated. Put | ||
your new functionality into a function with a docstring, and add the | ||
feature to the list in README.rst. | ||
3. The pull request should work for Python 2.7, 3.5 and later. Check | ||
https://travis-ci.org/HIIT/elfi/pull_requests | ||
and make sure that the tests pass for all supported Python versions. | ||
|
||
Tips | ||
---- | ||
|
||
To run a subset of tests:: | ||
|
||
$ py.test tests.test_elfi | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
.PHONY: clean clean-test clean-pyc clean-build docs help | ||
.DEFAULT_GOAL := help | ||
define BROWSER_PYSCRIPT | ||
import os, webbrowser, sys | ||
try: | ||
from urllib import pathname2url | ||
except: | ||
from urllib.request import pathname2url | ||
|
||
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1]))) | ||
endef | ||
export BROWSER_PYSCRIPT | ||
|
||
define PRINT_HELP_PYSCRIPT | ||
import re, sys | ||
|
||
for line in sys.stdin: | ||
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line) | ||
if match: | ||
target, help = match.groups() | ||
print("%-20s %s" % (target, help)) | ||
endef | ||
export PRINT_HELP_PYSCRIPT | ||
BROWSER := python -c "$$BROWSER_PYSCRIPT" | ||
|
||
help: | ||
@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST) | ||
|
||
clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts | ||
|
||
|
||
clean-build: ## remove build artifacts | ||
rm -fr build/ | ||
rm -fr dist/ | ||
rm -fr .eggs/ | ||
rm -fr docs/_build | ||
find . -name '*.egg-info' -exec rm -fr {} + | ||
find . -name '*.egg' -exec rm -fr {} + | ||
|
||
clean-pyc: ## remove Python file artifacts | ||
find . -name '*.pyc' -exec rm -f {} + | ||
find . -name '*.pyo' -exec rm -f {} + | ||
find . -name '*~' -exec rm -f {} + | ||
find . -name '__pycache__' -exec rm -fr {} + | ||
|
||
clean-test: ## remove test and coverage artifacts | ||
rm -fr .tox/ | ||
rm -f .coverage | ||
rm -fr htmlcov/ | ||
|
||
lint: ## check style with flake8 | ||
flake8 elfi tests | ||
|
||
test: ## run tests quickly with the default Python | ||
py.test | ||
|
||
test-all: ## run tests on every Python version with tox | ||
tox | ||
|
||
coverage: ## check code coverage quickly with the default Python | ||
py.test --cov=elfi | ||
coverage report -m | ||
coverage html | ||
$(BROWSER) htmlcov/index.html | ||
|
||
docs: ## generate Sphinx HTML documentation, including API docs | ||
rm -f docs/elfi.rst | ||
rm -f docs/elfi.bo.rst | ||
rm -f docs/modules.rst | ||
sphinx-apidoc -o docs/ elfi | ||
$(MAKE) -C docs clean | ||
$(MAKE) -C docs html | ||
$(BROWSER) docs/_build/html/index.html | ||
|
||
servedocs: docs ## compile the docs watching for changes | ||
watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . | ||
|
||
# release: clean ## package and upload a release | ||
# python setup.py sdist upload | ||
# python setup.py bdist_wheel upload | ||
|
||
dist: clean ## builds source and wheel package | ||
python setup.py sdist | ||
python setup.py bdist_wheel | ||
ls -l dist | ||
|
||
install: clean ## install the package to the active Python's site-packages | ||
# python setup.py install | ||
pip install numpy | ||
pip install -e . | ||
|
||
dev: install ## install the development requirements to the active Python's site-packages | ||
pip install -Ur requirements-dev.txt | ||
|
||
clean-notebooks: | ||
python notebooks/clean_notebooks.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
ELFI - Engine for Likelihood-Free Inference | ||
=========================================== | ||
|
||
<!-- .. image:: https://img.shields.io/pypi/v/elfi.svg | ||
:target: https://pypi.python.org/pypi/elfi | ||
.. image:: https://img.shields.io/travis/HIIT/elfi.svg | ||
:target: https://travis-ci.com/HIIT/elfi | ||
.. image:: https://readthedocs.org/projects/elfi/badge/?version=latest | ||
:target: https://elfi.readthedocs.io/en/latest/?badge=latest | ||
:alt: Documentation Status | ||
https://github.com/dwyl/repo-badges | ||
--> | ||
|
||
[![Build Status](https://travis-ci.com/HIIT/elfi.svg?token=xAu1DN2J4WjCapVWLinn&branch=dev)](https://travis-ci.com/HIIT/elfi) | ||
|
||
<img src="https://cloud.githubusercontent.com/assets/1233418/20178983/6e22ee44-a75c-11e6-8345-5934b55b9dc6.png" width="15%" align="right"></img> | ||
|
||
ELFI is a statistical software package written in Python for Approximative Bayesian Computation ([ABC](https://en.wikipedia.org/wiki/Approximate_Bayesian_computation)), also known e.g. as likelihood-free inference, simulator-based inference, approximative Bayesian inference etc. This is useful, when the likelihood function is unknown or difficult to evaluate, but a generative simulator model exists. | ||
|
||
The probabilistic inference model is defined as a directed acyclic graph, which allows for an intuitive means to describe inherent dependencies in the model. The inference pipeline is automatically parallelized with [Dask](https://dask.pydata.org), which scales well from a desktop up to a cluster environment. The package includes functionality for input/output operations and visualization. | ||
|
||
Currently implemented ABC methods: | ||
- rejection sampler | ||
- Sequential Monte Carlo sampler | ||
- [Bayesian Optimization for Likelihood-Free Inference (BOLFI) framework](https://arxiv.org/abs/1501.03291) | ||
|
||
See examples under [notebooks](notebooks) to get started. | ||
|
||
<!-- .. | ||
Installation | ||
------------- | ||
:: | ||
pip install elfi | ||
--> | ||
|
||
Developer installation | ||
---------------------- | ||
``` | ||
git clone https://github.com/HIIT/elfi.git | ||
cd elfi | ||
pip install numpy | ||
pip install -r requirements-dev.txt | ||
pip install -e . | ||
``` | ||
|
||
It is recommended to create a virtual environment for development before installing. | ||
|
||
Virtual environment using Anaconda | ||
---------------------------------- | ||
Below an example how to create a virtual environment named ``elfi`` using Anaconda: | ||
|
||
conda create -n elfi python=3* scipy | ||
|
||
Then activate it: | ||
|
||
source activate elfi |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.