I have written several software packages for teaching and research purposes. They are in various states of completeness.

Distribution Explorer


Familiarity with probability distributions, the stories behind them, the shapes of the PDF/PMFs and CDFs, and syntax of how to sample out of them with popular software packages are important tools for any data scientist (or scientist for that matter!). I created a web app to quickly reference and explore several named probability distributions.



To date, I have created three courses for DataCamp, Statistical Thinking I, Statistical Thinking II, and Case Studies in Statistical Thinking). This package contains every student-written function from those courses. The functions have been optimized for speed using numba. It contains useful functions for doing statistical analyses based on resampling/bootstrap methods.


bokeh-catplot ecdf

My go-to high level plotting package HoloViews does not currently allow for hierarchical categorical axes for all plot type and does not have native plotting of ECDFs. To enable this functionality for Bokeh plots, I created this package.


altair-catplot jitter-box plot

The wonderful plotting package Altair does not currently have a jitter transform or a convenient API for making box plots (though this is coming soon) or ECDFs. To enable this functionality, this package enables convenient generation of plots with a categorical axis using Altair's basic grammar.


bebi103 package

I developed a package of useful functions for my class BE/Bi 103: Data Analysis in the Biological Sciences. The aim is to abstract away some coding details so that the students can focus on the more conceptual aspects of statistical modeling. The package contains utilities for statistical visualizations using Bokeh and for parsing inputs and outputs to and from Stan.


rdsolver package

This package solves reaction-diffusion equations in two dimensions. To deal with the stiffness of these problems, this package employs implicit-explicit methods with variable time steps (VS-IMEX). It also features some interpolation and visualization tools for the results.



EQTK (EQuilibrium ToolKit) is coming soon! It features the first, to my knowledge, globally convergent algorithm for solving the coupled equilibrium problem: Given a solution of chemical species that may undergo a set of chemical reactions with known equilibrium constants, what is the equilibrium concentration of all species, assuming the law of mass action applies?



I was an early developer of NUPACK (NUcleic acid PACKage), a suite for analysis and design of nucleic acid structures, devices, and systems.