I have written several software packages for teaching and research purposes.

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.



EQTK (EQuilibrium ToolKit) 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?


iqplot ecdf

This package makes plots using Bokeh of data sets in which exactly one variable is quantitative with arbitrarily many categorical variables. Hence the name "IQ" plot, meaning Roman number one quantitative variable. It turns out that many data sets in the biological sciences have this structure. You can use the package to make strip plots (possible with parallel coordinates), box plots, histograms (with rug plots), and ECDFs.


serial dashboard in action

This package is a browser-based graphical interface for interacting with devices connected using a serial port. It can be thought of as a much more feature-rich drop-in replacement of the Serial Monitor and Serial Plotter of the Arduino IDE.


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.



I 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.


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.



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