Portfolio

SAWNERGY

portfolio_img

SAWNERGY is a high-performance toolkit for turning molecular dynamics trajectories into graph data ready for machine learning. It builds residue interaction networks (RINs) from cpptraj output, separates attractive and repulsive interactions, and prunes and normalizes each channel to build transition matrices. It then samples large numbers of random and self-avoiding walks in shared memory and trains skip-gram embeddings with negative sampling for every frame.

The pipeline is reproducible, Zarr-backed, and built for HPC workloads. It turns protein conformational dynamics into compact vectors you can use for structural clustering, frame classification, and functional prediction.

In the clip above, the right panel shows the residue interaction network of full-length p53 laid out using the residues’ 3D coordinates. The left panel shows the embedding SAWNERGY learned from that network. Notice how similar they look, even though the embedding uses interaction patterns alone and never sees the coordinates directly.

SAWNERGY is open-source and available through PyPI.

Documentation · Source code


PureML

portfolio_img portfolio_img

PureML is a transparent, NumPy-only deep learning framework for teaching, small-scale projects, prototyping, and reproducible experiments. No CUDA, no giant dependency tree. Batteries included — VJP-based autograd, modular layers, activations, losses, optimizers, data utilities, and Zarr checkpoints.

The API is designed to feel familiar to PyTorch users. The codebase is small enough to read end to end, so you can follow how gradients flow and see what happens during training. Core operations are vectorized with NumPy, and it’s easy to extend the framework when you want to try an idea of your own.

The synthetic handwritten digits above were generated by the variational autoencoder (VAE) built and trained in seconds entirely in PureML.

PureML is open-source and available through PyPI.

Documentation · Source code


M2F

portfolio_img

M2F (microbiome-to-function) is a modular toolkit I built during my 2025–2026 internship at BonhamLab, Tufts University School of Medicine. It turns messy UniProt records into features you can feed into machine learning models.

Give it HUMAnN output or a list of protein accession IDs, and M2F fetches UniProtKB records at scale through rate-limited REST calls. It uses targeted regexes to clean and normalize free-text annotations, then encodes protein sequences and ontology terms as numerical features. The whole pipeline is reproducible, and the resulting feature tables are packed into a single Zarr ZipStore for easy sharing and reuse.

Documentation · Source code


Discovering Allosteric Pathways in Proteins

portfolio_img

(swipe to see more pictures!)

My research at Wesleyan’s ThayerLab explores how mutations and ligand binding change the way signals travel through proteins. During my summer 2024 research fellowship, I built a pipeline that turns molecular dynamics trajectories into residue interaction networks. I analyzed visit statistics from random walks through those networks to compare patterns of residue co-occurrence between wild-type and mutant proteins.

I refined the pipeline over time, moving from counting residue co-occurrences to learning embeddings from the walks. I presented results as the work evolved, starting at Wesleyan’s Summer 2024 Research Symposium and later at the Annual Biophysics Retreat and the ACS Northeast Regional Discussion. That pipeline grew into SAWNERGY, which I now use to study the p53 tumor suppressor and its isoforms. We started with shallow, DeepWalk-style embeddings and are now expanding the toolkit to explore deep graph and convolutional encoders running downstream analyses in fully latent space.


eQoScan

portfolio_img

eQoScan is a prototype my three friends and I built from scratch in 24 hours at WesHack. We designed it to help Wesleyan’s dining halls track reusable food containers in real time. In the demo, an iOS app scans dynamic QR codes for pickup and return, and a web app records who has each container and when and where it was picked up or returned.

We recorded the demo just 10 minutes before judging and won the internship prize track!

WesHack project gallery


Music Genre Classification from Album Covers

portfolio_img

For my audio-visual machine learning class, I built a model that predicts an album’s genre from its cover. It reached 74% accuracy when classifying rap, country, jazz, and classical albums.

I used transfer learning with a pretrained ResNet-50. I adapted its architecture and unfroze several layers before fine-tuning it on about 26,000 labeled album covers scraped from the web.

Source code and final write-up