Interactive Showcase

In addition to photography, I focus my artistic streak on making high-quality illustrations for talks, papers, and presentations, some of which are shown below. I also think that the future of publishing will not include PDF file formats. Therefore, I enjoy making interactive figures and pedagogical tools. This page shows a bunch of those examples with some descriptions. All interactive figures were built using the Bokeh plotting library in Python. The script used to generate it can be downloaded from the link below each figure.

This page will look pretty weird on a phone or tablet screen. Things are much easier to interact with on a computer.

A two-dimensional random walk


Random walk processes can be used to explain an enormous variety of physical phenomena and is the basis for one of my favorite computational techniques, Markov chain Monte Carlo. The interactive tool below allows you to create a two dimensional random walk of steps. The left plot will show the entire random walk while the right plot will show the current position and the previous 5000 steps. Adjust the slider to move the particle along its path.

Bokeh Plot

Source Code: random_walker.py.

Gillespie simulation of a constitutive promoter


The Gillespie algorithm is an incredibly powerful computational technique to simulate stochastic processes and numerically compute distributions of otherwise hard-to-solve differential equations. The tool below lets you perform a Gillespie simulation of a constitutively expressing promoter (i.e. not regulated) at the level of mRNAs. While the ODE is trivial to solve (equation in the box above), it’s illustrative to run the simulation to see how it can be reproduced numerically. In the interactive, thin purple lines correspond to the simulations whereas the orange line presents the analytical solution given the input parameters.

Bokeh Plot

Source Code: gillespie.py.

The Bayesian coin flip


This interactive illustrates how a posterior probability distribution over the bias of a coin is influenced by the number of flips and the parameters of the prior distribution. In this example, the likelihood is a Binomial distribution of the form

where is the number of flips total and is the number of heads. The conjugate prior of the Binomial likelihood is a Beta distribution parameterized by and ,

where $$\mathbf{B}(\alpha, \beta) is a normalization factor defined as

where is a Gamma function.

Bokeh Plot

Source Code: bayesian_coin_flipper.py.