Research
We use molecular simulation, machine learning and optimization to understand and design catalysts and chemical processes. For finished work, see the publications; for the code behind it, see software.
For prospective graduate students: We do not accept students directly into research groups at CMU. Instead, you apply to join the department, and in the Fall semester there is a process for you to learn about new projects being offered, and to get matched with a research group. You can learn more about our graduate programs here.
Current projects
Differentiable optimization
We are building a full stack of differentiable optimizers enabling end-to-end differentiable solves in flowsheets and integration of machine-learned models with optimization.
Many questions we have in optimization like what is a solution most sensitive to, or what is the uncertainty of that parameter, require derivatives. Automatic differentiation provides a new way to write programs that allow us to fully leverage derivatives in scientific programs.
We make the case for this approach in our perspective, Beyond the fourth paradigm of modeling in chemical engineering (Nature Chemical Engineering, 2025). Our open-source tools put the idea into practice: pounce is a family of interior point solvers written in Rust, discopt is a modeling language and solver for mixed-integer nonlinear programs, and difflow is a JAX framework for differentiable chemical process flowsheets. See software for these and related packages.
Rare earth and refractory alloy design and separations
Rare earth elements play a critical role in electrification (through magnets), displays, our cell phones, and a variety of other technologies. Refractory alloys are used in high-temperature applications where conventional alloys fail. Designing alloys with rare earth alloys remains a challenge. This collaborative project leverages molecular simulation, and systems engineering with experimental work in additive manufacturing to design new printable alloys and separations for rare earths and refractory alloys.
We leverage agentic simulation to run Fairchem UMA models using our fairchem-mcp package. We are developing new methods in uncertainty quantification for molecular simulation and machine learning.
This builds on our earlier work. With Ni Zhan, we compared uncertainty estimates for machine learning and nonlinear least squares regression models (AIChE Journal, 2022), and showed how to move from model-specific to model-general uncertainty for physical properties (Industrial & Engineering Chemistry Research, 2022). With Tirtha Vinchurkar, we showed that shallow ensembles give inexpensive uncertainty estimates for graph neural networks (Machine Learning: Science and Technology, 2025).
Biomanufacturing of pigments
Biorenewable pigments are a sustainable alternative to petroleum-based pigments. We are using high-throughput experimentation to optimize the production of pigments in microbial hosts.
To choose which experiments to run next, we use discopt-doe, our design of experiments plugin for discopt. It covers active-learning optimization, classical factorial and mixture designs, and model-based optimal designs.
Differentiable, uncertainty-aware surrogate models
Surrogate models replace expensive simulations and experiments with fast approximations, but to use them inside optimization we need two things a typical machine learning model does not provide: exact derivatives, and an honest estimate of how much to trust each prediction. We build surrogate models in JAX that are differentiable end to end and report their own uncertainty, so they can be embedded directly in the differentiable optimizers described above.
jax-difftree provides differentiable soft decision trees with built-in uncertainty quantification, scikit-learn estimators and export to mixed-integer linear programs. jax-ldt provides linear and hyperplane decision trees for piecewise-linear surrogates that are well suited to optimization formulations. jaxsr is a symbolic regression engine that finds compact, interpretable equations whose derivatives come for free from JAX. The pycse.sklearn module in pycse collects scikit-learn compatible regressors with uncertainty estimates, including shallow ensembles (DPOSE), last-layer prediction rigidity (LLPR) for neural networks and Kolmogorov-Arnold networks, and neural networks with structural guarantees such as input convexity and monotonicity that make them safe to optimize over.