gpy

Gaussian processes framework in python

https://github.com/sheffieldml/gpy

Science Score: 36.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
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    23 of 119 committers (19.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.6%) to scientific vocabulary

Keywords from Contributors

data-mining tensor quantum-computing quantum hyperparameter-optimization qt word2vec word-similarity word-embeddings topic-modeling
Last synced: 10 months ago · JSON representation

Repository

Gaussian processes framework in python

Basic Info
  • Host: GitHub
  • Owner: SheffieldML
  • License: bsd-3-clause
  • Language: Python
  • Default Branch: devel
  • Size: 64.1 MB
Statistics
  • Stars: 2,099
  • Watchers: 112
  • Forks: 567
  • Open Issues: 253
  • Releases: 12
Created over 13 years ago · Last pushed about 1 year ago
Metadata Files
Readme Changelog License Authors

README.md

GPy

The Gaussian processes framework in Python.

Status

| Branch | travis-ci.org | ci.appveyor.com | coveralls.io | codecov.io | | --- | --- | --- | --- | --- | | Default branch (devel) | travis-devel | appveyor-devel | coveralls-devel | codecov-devel | | Deployment branch (deploy) | travis-deploy | appveyor-deploy | coveralls-deploy | codecov-deploy |

What's new:

From now on we keep track of changes in the CHANGELOG.md. If you want your changes to show up there follow the guidelines. In particular tag your commits by the gitchangelog commit message format.

Contributing to GPy

We welcome any contributions to GPy, after all it is an open source project. We use the GitHub feature of pull requests for contributions.

For an in depth description of pull requests, please visit https://help.github.com/articles/using-pull-requests/ .

Steps to a successful contribution:

  1. Fork GPy: https://help.github.com/articles/fork-a-repo/
  2. Make your changes to the source in your fork.
  3. Make sure the guidelines are met.
  4. Set up tests to test your code. We are using unittests in the testing subfolder of GPy. There is a good chance that there is already a framework set up to test your new model in modeltests.py or kernel in kerneltests.py. have a look at the source and you might be able to just add your model (or kernel or others) as an additional test in the appropriate file. There is more frameworks for testing the other bits and pieces, just head over to the testing folder and have a look.
  5. Create a pull request to the devel branch in GPy, see above.
  6. The tests will be running on your pull request. In the comments section we will be able to discuss the changes and help you with any problems. Let us know if there are any in the comments, so we can help.
  7. The pull request gets accepted and your awesome new feature will be in the next GPy release :)

For any further questions/suggestions head over to the issues section in GPy.

Pull Request Guidelines

  • Check your code with PEP8 or pylint. Try to stick to 80 columns wide.
  • Separate commits per smallest concern.
  • Each functionality/bugfix commit should contain code, tests, and doc.
  • We are using gitchangelog to keep track of changes and log new features. So if you want your changes to show up in the changelog, make sure you follow the gitchangelog commit message format.

Support and questions to the community

Ask questions using the issues section.

Updated Structure

We have pulled the core parameterization out of GPy. It is a package called paramz and is the pure gradient based model optimization.

If you installed GPy with pip, just upgrade the package using:

$ pip install --upgrade GPy

If you have the developmental version of GPy (using the develop or -e option) just install the dependencies by running

$ python setup.py develop

again, in the GPy installation folder.

A warning: This usually works, but sometimes distutils/setuptools opens a whole can of worms here, specially when compiled extensions are involved. If that is the case, it is best to clean the repo and reinstall.

Supported Platforms:

Python 3.9 and higher

Citation

@Misc{gpy2014,
  author =   {{GPy}},
  title =    {{GPy}: A Gaussian process framework in python},
  howpublished = {\url{http://github.com/SheffieldML/GPy}},
  year = {since 2012}
}

Pronounciation:

We like to pronounce it 'g-pie'.

Getting started: installing with pip

We are requiring a recent version (1.3.0 or later) of scipy and thus, we strongly recommend using the anaconda python distribution. With anaconda you can install GPy by the following:

conda update scipy

Then potentially try,

sudo apt-get update
sudo apt-get install python3-dev
sudo apt-get install build-essential   
conda update anaconda

And finally,

pip install gpy

We've also had luck with enthought. Install scipy 1.3.0 (or later) and then pip install GPy:

pip install gpy

If you'd like to install from source, or want to contribute to the project (i.e. by sending pull requests via github), read on.

Troubleshooting installation problems

If you're having trouble installing GPy via pip install GPy here is a probable solution:

git clone https://github.com/SheffieldML/GPy.git
cd GPy
git checkout devel
python setup.py build_ext --inplace
pytest .

Direct downloads

PyPI version source Windows MacOSX

Saving models in a consistent way across versions:

As pickle is inconsistent across python versions and heavily dependent on class structure, it behaves inconsistent across versions. Pickling as meant to serialize models within the same environment, and not to store models on disk to be used later on.

To save a model it is best to save the m.paramarray of it to disk (using numpy’s np.save). Additionally, you save the script, which creates the model. In this script you can create the model using initialize=False as a keyword argument and with the data loaded as normal. You then set the model parameters by setting m.paramarray[:] = loadedparams as the previously saved parameters. Then you initialize the model by m.initializeparameter(), which will make the model usable. Be aware that up to this point the model is in an inconsistent state and cannot be used to produce any results.

```python

let X, Y be data loaded above

Model creation:

m = GPy.models.GPRegression(X, Y) m.optimize()

1: Saving a model:

np.save('modelsave.npy', m.paramarray)

2: loading a model

Model creation, without initialization:

mload = GPy.models.GPRegression(X, Y, initialize=False) mload.updatemodel(False) # do not call the underlying expensive algebra on load mload.initializeparameter() # Initialize the parameters (connect the parameters up) mload[:] = np.load('modelsave.npy') # Load the parameters mload.updatemodel(True) # Call the algebra only once print(mload) ```

For Admins and Developers:

Running unit tests:

New way of running tests is using coverage:

Ensure pytest and coverage is installed:

pip install pytest

Run nosetests from root directory of repository:

python travis_tests.py

Create coverage report in htmlcov/

coverage html

The coverage report is located in htmlcov/index.html

Legacy: using nosetests

Ensure nose is installed via pip:

pip install nose

Run nosetests from the root directory of the repository:

nosetests -v GPy/testing

or from within IPython

import GPy; GPy.tests()

or using setuptools

python setup.py test

Compiling documentation:

The documentation is stored in doc/ and is compiled with the Sphinx Python documentation generator, and is written in the reStructuredText format.

The Sphinx documentation is available here: http://sphinx-doc.org/latest/contents.html

Installing dependencies:

To compile the documentation, first ensure that Sphinx is installed. On Debian-based systems, this can be achieved as follows:

sudo apt-get install python-pip
sudo pip install sphinx

Compiling documentation:

The documentation can be compiled as follows:

cd doc
sphinx-apidoc -o source/ ../GPy/
make html

alternatively:

{shell} cd doc sphinx-build -b html -d build/doctrees -D graphviz_dot='<path to dot>' source build/html

The HTML files are then stored in doc/build/html

Commit new patch to devel

If you want to merge a branch into devel make sure the following steps are met:

  • Create a local branch from the pull request and merge the current devel in.
  • Look through the changes on the pull request.
  • Check that tests are there and are checking code where applicable.
  • [optional] Make changes if necessary and commit and push to run tests.
  • [optional] Repeat the above until tests pass.
  • [optional] bump up the version of GPy using bumpversion. The configuration is done, so all you need is bumpversion [major|minor|patch].
  • Update the changelog using gitchangelog: gitchangelog > CHANGELOG.md
  • Commit the changes of the changelog as silent update: `git commit -m "chg: pkg: CHANGELOG update" CHANGELOG.md
  • Push the changes into devel.

A usual workflow should look like this:

$ git fetch origin
$ git checkout -b <pull-origin>-devel origin/<pull-origin>-devel
$ git merge devel
$ coverage run travis_tests.py

Make changes for tests to cover corner cases (if statements, None arguments etc.) Then we are ready to make the last changes for the changelog and versioning:

$ git commit -am "fix: Fixed tests for <pull-origin>"
$ bumpversion patch # [optional]
$ gitchangelog > CHANGELOG.md
$ git commit -m "chg: pkg: CHANGELOG update" CHANGELOG.md

Now we can merge the pull request into devel:

$ git checkout devel
$ git merge --no-ff <pull-origin>-devel
$ git push origin devel

This will update the devel branch of GPy.

Deploying GPy

We have set up all deployment automatic. Thus, all you need to do is create a pull request from devel to deploy. Wait for the tests to finish (successfully!) and merge the pull request. This will update the package on pypi for all platforms fully automatically.

Funding Acknowledgements

Current support for the GPy software is coming through the following projects.

Previous support for the GPy software came from the following projects:

  • BBSRC Project No BB/K011197/1 "Linking recombinant gene sequence to protein product manufacturability using CHO cell genomic resources"
  • EU FP7-KBBE Project Ref 289434 "From Data to Models: New Bioinformatics Methods and Tools for Data-Driven Predictive Dynamic Modelling in Biotechnological Applications"
  • BBSRC Project No BB/H018123/2 "An iterative pipeline of computational modelling and experimental design for uncovering gene regulatory networks in vertebrates"
  • Erasysbio "SYNERGY: Systems approach to gene regulation biology through nuclear receptors"

Owner

  • Name: Sheffield Machine Learning Software
  • Login: SheffieldML
  • Kind: organization

Software from the Sheffield machine learning group and collaborators.

GitHub Events

Total
  • Issues event: 13
  • Watch event: 90
  • Issue comment event: 38
  • Push event: 9
  • Pull request review comment event: 3
  • Pull request review event: 2
  • Pull request event: 11
  • Fork event: 10
  • Create event: 4
Last Year
  • Issues event: 13
  • Watch event: 90
  • Issue comment event: 38
  • Push event: 9
  • Pull request review comment event: 3
  • Pull request review event: 2
  • Pull request event: 11
  • Fork event: 10
  • Create event: 4

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 4,908
  • Total Committers: 119
  • Avg Commits per committer: 41.244
  • Development Distribution Score (DDS): 0.638
Past Year
  • Commits: 64
  • Committers: 3
  • Avg Commits per committer: 21.333
  • Development Distribution Score (DDS): 0.047
Top Committers
Name Email Commits
Max Zwiessele i****i@g****m 1,777
James Hensman j****n@g****m 710
Alan Saul a****l@g****m 488
Ricardo a****a@s****k 295
Martin Bubel m****l@i****e 253
Zhenwen Dai z****i@s****k 185
Neil Lawrence l****d@g****m 181
Nicolo Fusi n****i@g****m 158
Mike Croucher m****r@g****m 111
Nicolas n****e@s****k 96
Zhenwen Dai z****i@s****k 82
bobturneruk b****k@g****m 43
beckdaniel d****k@g****m 39
Alexander Grigorievskiy a****y@g****m 33
Siivola Eero e****a@a****i 30
Michael T Smith l****y@g****m 22
Andreas a****u@s****k 19
Akash Kumar Dhaka a****a@a****i 19
Ricardo r****7@g****m 19
Zhenwen Dai z****i 16
Andreas a****u@g****m 15
Neil Lawrence n****l@s****) 15
Julien Bect j****t@c****r 14
kcutajar k****l@h****m 13
Eric Kalosa-Kenyon e****k@g****m 12
mu m****u@s****k 12
Mark Pullin m****i@a****m 11
Moreno m****l@a****m 10
Teo de Campos t****o@c****) 10
alessandratosi a****i@e****k 9
and 89 more...

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 151
  • Total pull requests: 68
  • Average time to close issues: about 2 years
  • Average time to close pull requests: about 1 year
  • Total issue authors: 118
  • Total pull request authors: 41
  • Average comments per issue: 2.84
  • Average comments per pull request: 2.56
  • Merged pull requests: 33
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 12
  • Pull requests: 10
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 5 days
  • Issue authors: 10
  • Pull request authors: 6
  • Average comments per issue: 0.92
  • Average comments per pull request: 0.7
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • MartinBubel (10)
  • ekalosak (8)
  • yurivict (4)
  • rameezdev (4)
  • flydream0428 (3)
  • Cargonher (2)
  • vnmabus (2)
  • lawrennd (2)
  • soxofaan (2)
  • mzwiessele (2)
  • tom192180 (2)
  • HanyangHenry-Wang (2)
  • olamarre (2)
  • enushi (2)
  • mbochk (1)
Pull Request Authors
  • MartinBubel (38)
  • ajgpitch (3)
  • KOLANICH (3)
  • tangoed2whiskey (2)
  • beldaz (2)
  • lawrennd (2)
  • olamarre (2)
  • mclaughlin6464 (2)
  • janmayer (2)
  • ekalosak (2)
  • dependabot[bot] (2)
  • gehbiszumeis (2)
  • rameezrz25 (2)
  • monabf (2)
  • jeremysanders (1)
Top Labels
Issue Labels
enhancement (10) need more info (10) good first issue (7) discuss (7) bug (3) question (2) qof (1) duplicate (1) qol (1)
Pull Request Labels
dependencies (2) qof (1)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 73,298 last-month
  • Total docker downloads: 21,948,209
  • Total dependent packages: 16
    (may contain duplicates)
  • Total dependent repositories: 214
    (may contain duplicates)
  • Total versions: 51
  • Total maintainers: 5
pypi.org: gpy

The Gaussian Process Toolbox

  • Versions: 41
  • Dependent Packages: 12
  • Dependent Repositories: 210
  • Downloads: 73,298 Last month
  • Docker Downloads: 21,948,209
Rankings
Dependent packages count: 0.7%
Dependent repos count: 1.0%
Downloads: 1.1%
Stargazers count: 1.6%
Average: 1.6%
Forks count: 2.2%
Docker downloads count: 2.9%
Last synced: over 1 year ago
conda-forge.org: gpy
  • Versions: 10
  • Dependent Packages: 4
  • Dependent Repositories: 4
Rankings
Forks count: 7.2%
Stargazers count: 9.2%
Average: 11.2%
Dependent packages count: 12.5%
Dependent repos count: 16.0%
Last synced: 10 months ago

Dependencies

doc/source/requirements.txt pypi
  • cython *
  • decorator *
  • matplotlib *
  • mock *
  • nose *
  • numpy *
  • paramz *
  • scipy *
  • six *
  • sympy *
setup.py pypi
.github/workflows/test-and-deploy.yml actions
  • actions/checkout v4 composite
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite