Documentation Status Build Status Coverage Status PyPI package

Welcome to DPPy’s documentation!

Determinantal point processes (DPPs) are specific probability distributions over clouds of points, which have been popular as models or computational tools across physics, probability, statistics, random matrices, and more recently machine learning. DPPs are often used to induce diversity or repulsiveness among the points of a sample.

Sampling from DPPs is more tractable than sampling generic point processes with interaction, but it remains a nontrivial matter and a research area of its own.

As a contraction of DPPs and Python, DPPy is an effort to gather:

The purpose of this documentation is to both provide a quick survey of DPPs and relate each mathematical property with its implementation in DPPy. The documentation can thus be read in different ways:

  • if you read the sections in the order they appear, they will first take you through mathematical definitions and quick illustrations of how these definitions are encoded in DPPy.

  • for more a traditional library documentation please refer to the corresponding API sections documenting the methods of each object, along with pointers to the mathematical definitions if needed.

  • you can also directly jump to the Jupyter notebooks, which showcase the use of some DPPy objects in more detail.

a sample of a 2D jacobi ensemble

histogram of the eigenvalues of the LUE

2D Multivariate Jacobi ensemble

\(\beta=2\)-Laguerre ensemble

kernel of the DPP associated to the uniform measure on spanning trees of a graph

graph associated to kernel K

\(\mathbf{K}\) kernel of Uniform Spanning Tree

Graph associated to \(\mathbf{K}\)

Installation instructions

See the installation instructions on GitHub.

How to cite this work?

We wrote a companion paper to DPPy which got accepted for publication in the MLOSS track of JMLR.

The companion paper is available on

If you use this package, please consider citing it with this piece of BibTeX:

@article{GPBV19,
  archivePrefix = {arXiv},
  arxivId = {1809.07258},
  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), in press},
  title = {{DPPy: DPP Sampling with Python}},
  keywords = {Computer Science - Machine Learning, Computer Science - Mathematical Software, Statistics - Machine Learning},
  url = {http://arxiv.org/abs/1809.07258},
  year = {2019},
  note = {Code at http://github.com/guilgautier/DPPy/ Documentation at http://dppy.readthedocs.io/}
}