Planning for 3.2


#1

This is just a quick summary about what we are working on and thinking about for the next PyMC3 release (v3.2, aiming for Fall, 2017). It is not a promise for any features.

Feel free to chime in and tell us what you think is important, or if we are missingimportant features or improvements.

GSoC

We have three Google Summer of Code projects:

  • Improvements to our Gaussian process module
  • An implementation for Riemannian HMC
  • Work on support for variational methods

Usability

  • Improve error messages and warnings.
    There are several parts of PyMC3 where error messages can be hard to understand. Especially where theano is involved, the stack trace may get long and hard to follow very quickly. These errors may be about shape mismatches, variables with incorrect support for a parameter, and domain errors during sampling
  • Mass matrix adaptation in NUTS during tuning (merged on master)
  • Choose parametrization when defining a variable (#1924)
    At least Centered/NonCentered for Normal, MvNormal, StudentT
  • Experimental xarray support for traces
  • Make a shinystan clone (Dash looks interesting)

Modeling

  • Support for ODEs
  • A UnitVector distribution (uniform)
  • Direct support for Truncated/Censored distributions without using a potential (#1864)
  • LKJCholeskyCorr (for cases where we’d like to model the correlation, not the covariance, LKJCholeskyCov is available already)
  • Fix some deficiencies with Mixture and add TruncatedStickBreaking so we can do nonparametrics more efficiently

Documentation

We are planning some restructuring of the docs. Some of the example notebooks will probably be expanded and moved into the sphinx doc. Also, new sections about eg theano usage in PyMC3.

Internal stuff

  • Refactor test suite (there is a lot of stuff that is covered too well, and some that isn’t covered enough)
  • Get benchmark suite running (#1829)
  • Keep refactoring HMC with an eye towards being able to more easily experiment with, eg, RMHMC, XHMC, an iterative implementation of NUTS
  • Better GPU support (for example, #2345)
  • Refactoring of distribution.py to get better shape handling and stop depending on the theano test_vals

Cool projects that someone might pick up


#2

I think I remember this being talked about, but it would be cool to use sphinx-gallery in the docs.


#3

I got as far as finding the docs and finding some example projects, but it seemed at least modestly non-trivial! Also would love to change to a non-default theme for the docs – see for example
- http://www.writethedocs.org/guide/tools/sphinx-themes/
- https://github.com/yoloseem/awesome-sphinxdoc#themes


#4

i like the guzzle theme! very clean. and having a gallery like that with relevant notebook examples at the bottom of each of the docs pages would be really fantastic.


#5

The support of ODEs will be via Gaussian Process, right? Any relevant reference you could share?


#6

There is a section in the stan autodiff paper about extending an ode to also compute the gradients, and then solve that larger ode with an external solver. That’s what I had in mind. I don’t know how we could use GPs for that.
https://arxiv.org/abs/1509.07164


#7

Thanks! A couple of days ago I was reading about a different topic and I found http://machinelearning.wustl.edu/mlpapers/papers/icml2014c2_barber14 (I still have to read it).