Package: dppy
“Anything that can go wrong, will go wrong”−Murphy’s LawIntroductionDeterminantal point processes (DPPs) are specific probability
distributions over clouds of points that have been popular as models or
computational tools across physics, probability, statistics, and more
recently of booming interest in machine learning. Sampling from DPPs is
a nontrivial matter, and many approaches have been proposed. DPPy is aPythonlibrary that puts together all
exact and approximate sampling algorithms for DPPs.InstallationDPPy works withPython 3.6+.DependenciesThis project depends on the following libraries, which are automatically downloaded during installation:NumPySciPyMatplotlibThe following dependencies are optional, and unlock extra functionality if installed:Networkxto play withuniform
spanning
trees.CVXOPTto use thezono_samplingMCMC
sampler for finite DPPs.CVXOPT itself requiresGCC,On MAC it comes withXcodeOn UNIX, use your package manager (apt,yumetc)sudoaptinstall-qqgccg++Sphinxto modify and rebuild the documentationInstallation instructionsDPPy is now available onPyPIpipinstalldppyFor a full installation, including extra dependencies and dependencies necessary to build the documentation (see above), usepip install dppy['zonotope','trees','docs'].Note that only stable DPPy releases are available on PyPI, and recently included improvements might only be available on the git master branch. If you want to work with the latest version of DPPyIf you have a GitHub account please consider forking DPPy and use git to clone your copy of the repocd<directory_of_your_choice>gitclonehttps://github.com/<username>/DPPy.gitIf you only use git, clone this repositorycd<directory_of_your_choice>gitclonehttps://github.com/guilgautier/DPPy.gitOtherwise simply download the projectIn any case, install the project withcdDPPypipinstall.Usepip install .['zonotope','trees','docs']to perform a full install from a local source tree.How to use itThe main DPPy documentation is available online athttp://dppy.readthedocs.io.
There are also some interactive tutorials using Jupyter available athttps://github.com/guilgautier/DPPy/blob/master/notebooks/.
For more details, check below.Tutorials inJupyter notebooksYou can read and work on these interactive tutorialNotebooks, directly from your
web browser, without having to download or install Python or anything.
Just click, wait a little bit, and play with the notebook!Building the documentationThedocumentationis generated locally withSphinxand then built online
byReadTheDocs.
If you wish to contribute to the documentation or just play with it
locally, you can install the necessary dependencies and then:Generate the docs locallycdDPPy/docsmakehtmlOpen the local HTML version of the documentation located atDPPy/docs/_build/html/index.htmlopen_build/html/index.htmlHow to cite this work?We wrote a companion paper to DPPy which got accepted for publication in the Machine Learning Open Source Software track of JMLR.If you use the DPPy toolbox, please consider citing it with this piece of
BibTeX:@article{GPBV19,author={Gautier, Guillaume and Polito, Guillermo and Bardenet, R{\'{e}}mi and Valko, Michal},journal={Journal of Machine Learning Research - Machine Learning Open Source Software (JMLR-MLOSS)},title={{DPPy: DPP Sampling with Python}},keywords={Computer Science - Machine Learning, Computer Science - Mathematical Software, Statistics - Machine Learning},url={http://jmlr.org/papers/v20/19-179.html},year={2019},archivePrefix={arXiv},arxivId={1809.07258},note={Code at http://github.com/guilgautier/DPPy/ Documentation at http://dppy.readthedocs.io/}}Many of the algorithms implemented in DPPy also have associated literature that you should consider citing.
Please refer to thebibliography on the documentation pageand docstrings of each specific DPP sampler for details.ReproducibilityWe would like to thankGuillermo Politofor leading our reproducible researchworkgroup,
this project owes him a lot.Take a look at the correspondingbookletto learn more on how to make your research reproducible!