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



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.


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 module 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 two submodules, one for statistical visualizations using Bokeh, and one 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.