Research Interests

Uncertainty Quantification

The inputs for most of our mathematical models are inherently uncertain, either from a lack of knowledge about the details of a system or the intrinsic uncertainty of the underlying variables. Fortunately, this does not usually keep us from using models in practical applications to make predictions or infer behavior. It does, however, require some user choice for the unknown values.

Uncertainty Quantification (UQ) is the science of understanding and systematically accounting for these various unknowns. The figure shown above is an illustration of a very common uncertainty propagation framework, where unknown inputs are quantified as distributions which are used with the mathematical model (here a system of ODEs) via some method to propagate those uncertainties forward to quantities of interest. Here the graphic hints at the use of generalized Polynomial Chaos (gPC) to obtain an output distribution.

Much of my research has focused on mathematical models of biological systems that contain many parameters with unknown values. I have used Polynomial Chaos methods, among others, to propagate input uncertainties forward to output model metric distributions.

Sensitivity Analysis

Alongside Uncertainty Quantification, methods in Sensitivity Analysis (SA) characterize the effect of changes in model inputs to changes in model outputs in an attempt to identify important or essential parameters to a system. Similarly, this class of methods can also be used to identify parameters that are non-essential, hopefully reducing the dimensionality of a problem and simplifying its solution.

One method that my research has focused on is variance based sensitivity metrics, typically referred to as Sobol indices. These are a robust form of global sensitivity measures which determine a parameter's sensitivity by the fraction of model variance that is explained variations in the individual parameter. That is to say, if a parameter is highly influential, then it should be responsible for a large percentage of the output model's variance.

These methods can be used for arbitrary models under very gentle assumptions, their calculations are usually quite computationally taxing. Many simplifications have been proposed (e.g., eFAST), but the original calculations are still frequently used, especially when a cheap surrogate model can be constructed. Since I utilize these metrics often, I have written a Julia package to simplify their computations.

Biological Models

Mathematical models for biological systems are an important part of my research. Biology is a vast and challenging field of study, with many unknowns in both the mechanism of systems and the value of specific parameters. With in silico models, we can make and test hypotheses that would otherwise be impossible to perform in practice.

Above is a cartoon schematic for an idealized blood vessel with blood flow, clotting proteins, and platelets. These are some of the essential parts of a complex network of reactions that govern blood coagulation. I have had the privilege of working with the Kuharsky-Fogelson-Hussain-Leiderman (KFHL) model for in vivo thrombus formation under flow, which is arguably one of the most complete ODE models currently available.

High Performance Computing

Most of my research uses parallel applications of single threaded code, but I've also developed some actual parallel scripts when necessary, both in Python and Julia. I frequently consult with individuals on campus to aid in porting their code to the local cluster and have authored many of the wiki pages on HPC for UC Merced. I have also aided in several cluster hardware installation projects, including a massive data drive installation and several small networking upgrades.


Of course, no work is accomplished in a vacuum. I've been lucky enough to collaborate with an extremely great set of scientists and professors. Links to their respective web pages can be found below.