About Me
I’m a computer scientist, mathematician and software engineer. My research has previously focused on high-performance computational software for data processing, machine learning, statistical parameter inference, and stochastic simulation in scientific applications.
Currently, I am part of the NVIDIA Math Libraries group working on core mathematical libraries for the new NVIDIA Grace ARMv9 CPU.
Featured Open Source Projects
Mappel - Maximum A Posteriori Point Emitter Localization
Mappel is an object-oriented image processing library for super-resolution localization of Gaussian point emitters in fluorescence microscopy applications.
Point emitter localization is an essential image-processing sub-problem in many single-molecule microscopy applications. Mappel can fit millions of emitter images in parallel in just a few seconds, making it orders of magnitude faster than other maximum-likelihood-based point estimation software. Mappel achieves optimal estimation accuracy using robust, state-of-the art non-linear bounded optimization algorithms for maximum likelihood and maximum a posteriori estimation, as well as Markov-chain Monte Carlo posterior sampling for Bayesian inference. These parameter estimation techniques allow Mappel to estimate confidence regions using expected Fisher information, observed Fisher information, likelihood-ratio-based profile likelihood intervals, or with Bayesian credible interval methods.
Mappel is cross-platform (Linux/Win64) with object oriented interfaces for C++, Python, and Matlab, and GUI interfaces for interactive workflows and debugging.
RPT - Robust Particle Tracker
RPT is a Matlab toolbox that provides a complete data processing toolchain for single particle tracking applications in fluorescence microscopy. RPT is cross-platform (Linux/Win64) and consists of several components which are each implemented as parallel C++ libraries using OpenMP. RPT is object-oriented, and allows for programmatic and GUI based, and batch-processing workflows.
Top-level RPT component software projects:
Publications using RPT software:
- Samantha L. Schwartz, Cedric Cleyrat, Mark J. Olah, Peter K. Relich, Genevieve K. Phillips, William S. Hlavacek, Keith A. Lidke, Bridget S. Wilson, and Diane S. Lidke. Differential mast cell outcomes are sensitive to FcεRI-Syk binding kinetics. Molecular Biology of the Cell, 28(23). (2017) MBoC PubMed
MexIFace - Cross-platform C++ / Malab object-oriented MEX interface library and CMake build system
The MexIFace interface library provides a flexible means of wrapping a complex C++ library into a Matlab class via Matlab’s MEX function extension method. Ordinary Matlab C/C++ plugins are called MEX libraries and can only provide a simple function interface.
Interfaces using the MexIFace
base class emulate a full object-based interface. These hybrid C++/Matlab objects have Matlab methods and properties that affect state and perform computations in C++.
MexIFace is primarily designed to support high-performance numerical code, and uses the Armadillo matrix libraries to provide a computationally rich C++ object model while also allowing direct access to data stored in matlab array objects. MexIFace supports OpenMP parallelization and linking of 64-bit integer versions of BLAS and LAPACK libraries as required by Matlab.
Tumble
Triangular Unstructured Mesh with Bezier elements in a Lagrangian Environment
Tumble is a mesh geometry framework for representing fully Lagrangian finite element simulations of Navier-Stokes fluid flow. In a Lagrangian mesh, the elements move with the fluid they represent. This causes elements to deform over time. We handle this by using curved elements with Bezier edges. The TUMBLE package is responsible for moving the mesh elements, and running a sequence of cleaning phases to maintain mesh quality. This includes flipping and re-interpolating elements to maintain the Delaunay property.
- Funded by the Sangria Project at Carnegie Mellon, which encompassed several computer science research groups targeting advanced parallel geometric and numerical algorithms and software for simulating complex flows with dynamic interfaces.
- Tumble Project site
- Tumble Documentation
- Publications:
- David E. Cardoze, Gary L. Miller, Mark Olah, Todd Phillips. A Bezier-based moving mesh framework for simulation with elastic membranes. Proceedings of the 13th International Meshing Roundtable. (2004) 71–79.