Research
Learn about some of my research.
My research connects high-performance systems engineering and machine learning to study molecules and biological systems, from electrons and reaction mechanisms to proteins, drugs, and genomes. A growing part of that work centers on hard structural biology problems such as intrinsically disordered proteins, where structure, sequence, evolution, and function are linked in ways that classical tools fail to capture.
1 Software development
My software work centers on building tools that are fast, reliable, and easy for others to pick up.
1.1 Python
I have used Python as my primary language since 2013, relying on it for rapid prototyping without giving up access to production-grade libraries like NumPy, SciPy, PyTorch, Polars, and PyArrow. It remains the core of my scientific computing, and it’s also the fastest on-ramp for graduate and undergraduate researchers joining a project.
1.2 High-performance languages
For performance-critical work I reach for Rust, Mojo, and sometimes Zig. Rust gives me the memory safety and concurrency I want in backend services and systems tooling. Mojo offers a clean answer to the two-language problem (three, once GPUs enter the picture). I expect it to grow quickly in scientific computing and machine learning, and it lets me push on performance in the same language where the science lives, which means fewer memory errors and an easier path for students to contribute. I turn to Zig when I want manual memory management and very explicit control over what my code is doing, which also makes it a satisfying language for understanding systems from the ground up.
2 Computational structural biology
Much of my current work sits at the interface of computation and structural biology, using simulation to explain how proteins move, bind, and can be engineered. As a postdoc with Dr. Jacob Durrant, I refined my skills in protein dynamics as well as protein–ligand interactions across projects spanning structural biology, drug design, and gene therapy. One line of work used extensive molecular dynamics simulations to elucidate the copper-binding mechanism of the fluorescent sensor roGFP2, linking atomic-level motion to an experimentally observed signal.
I also work on protein structure prediction, combining models such as AlphaFold3, Boltz-2, and Chai-1 with experimental evidence, such as crosslinking data, to build and critically evaluate structural hypotheses. This integrative approach matters most for intrinsically disordered proteins, where any single predicted structure is at best a snapshot of a shifting ensemble, and where pairing prediction with experimental restraints is often the only way to separate signal from artifact.
I maintain and modernize open-source structural biology software, including POVME for measuring binding pocket shape and volume, WISP for tracing allosteric communication pathways, and subpex for weighted-ensemble sampling of pocket conformations. These tools turn raw simulation data into interpretable structural insight.
3 Molecular evolution and disordered proteins
Intrinsically disordered proteins resist the usual structure-first playbook, so I approach them through sequence and evolution as much as through structure. I build pipelines to study how disordered regions evolve: I curate ortholog datasets from domain-architecture analyses and resources like UniProt, UniParc, and InterPro, layer in disorder predictions and multiple sequence alignments, and then look for coevolutionary signals that point to functional constraints hidden in otherwise flexible sequences.
A related question is whether disordered regions harbor functional elements that conventional homology searches miss; for instance, motifs split across long, variable linkers rather than packed into a single contiguous domain. I frame this kind of detection as a machine-learning problem on protein sequences, training models to label residues by their conformational roles even when the informative pieces sit far apart.
4 Computer-aided drug design
I use a range of computational techniques to identify, evaluate, and optimize small molecules against protein targets. This includes molecular docking and virtual screening to triage large chemical libraries down to a handful of promising candidates for experimental follow-up.
For lead optimization, I rely on alchemical free-energy simulations to predict binding affinities and ligand–protein interaction energetics. I pair this with ADMET (absorption, distribution, metabolism, excretion, and toxicity) modeling using cheminformatics, so candidates are judged on pharmacokinetics and safety rather than potency alone.
I run structure-based virtual screening campaigns end-to-end: preparing and validating the target, curating and filtering chemical libraries from both commercial catalogs and generative models, docking at scale on high-performance computing resources, and ranking chemically diverse, purchasable candidates for experimental testing. I’m especially interested in antivirulence strategies against antibiotic-resistant Gram-positive pathogens.
5 Genomics and transcriptomics
More recently, I have moved into sequence-based biology, both in my research and in the courses I teach. On the genomics side, I work with sequence analysis (Clustal Omega, HMMER, fastp, FastQC) and genome assembly and annotation with SPAdes and Prokka, and variant calling with DeepVariant. On the transcriptomics side, I build RNA-seq pipelines using tools such as HISAT2, STAR, Salmon, and Kallisto, and analyze differential gene expression with DESeq2. This work rounds out my molecular-scale modeling with a genome-scale view of biological systems.
6 Molecular dynamics
My molecular dynamics work spans classical simulations of biomolecules and chemical reactions at atomic resolution, as well as quantum mechanics/molecular mechanics (QM/MM) and ab initio simulations via interfaces with ORCA and Psi4. I run production simulations with packages like Amber, OpenMM, and the Atomic Simulation Environment, and apply enhanced-sampling methods (e.g., umbrella sampling, metadynamics, Gaussian-accelerated MD, nudged elastic band, and growing-string methods) to reach conformations and reaction pathways that plain MD cannot.
From those trajectories, I extract atomistic insight: structural and energetic characterization, hydrogen-bonding analysis, radial distribution functions, diffusion and viscosity estimates, and reaction-pathway exploration. Throughout, I emphasize reproducible workflows so simulations and their analyses can be trusted and repeated.
7 Machine learning
Machine learning threads through most of my research. I use standard methods (random forests, SVMs, and ensembles) alongside deep learning: graph neural networks, transformers, and protein language models such as ESM-2, built with PyTorch, scikit-learn, and the Deep Graph Library. For per-residue prediction over protein sequence, I work with architectures like 1D convolutional U-Nets and attention-based models. To make sense of large, noisy biological data, I lean on dimensionality reduction and manifold learning (PCA and UMAP) plus careful feature engineering, since a model is only as good as the data it learns from.
8 Force fields
I work on both ends of the force-field spectrum: developing machine-learning force fields and parameterizing classical ones.
On the machine-learning side, I build force fields that reproduce high-quality quantum-chemical reference data while staying fast enough for production simulation. My mbGDML framework, for example, combines gradient-domain machine learning with a many-body expansion to produce size-transferable, quantum-accurate potentials from modest training data.
On the classical side, I parameterize force fields for the parts of a system that standard libraries do not cover and validate those parameters against experimental and high-level quantum-chemical references.
9 Quantum chemistry
I use Kohn–Sham density functional theory, wavefunction methods (Møller–Plesset perturbation theory and coupled cluster), and semi-empirical approaches to study reaction mechanisms, electronic structure, and thermodynamics. Day-to-day, that means geometry and transition-state optimization, reaction modeling, solvation free energies, redox potentials, and detailed molecular and atomic property calculations, using tools such as ORCA, PySCF, xTB, and Psi4.
A recurring theme in my work is solvation, or how a solvent reshapes a reaction. I use explicit, implicit, and hybrid solvent models to represent these effects, and I have run large-scale calculations across hundreds of thousands of molecular conformations to quantify the uncertainty they introduce.