Projects
AniSOAP
Cersonsky Group, UW–Madison · 2023 – Present
AniSOAP is a Python package that extends the popular SOAP
(Smooth Overlap of Atomic Positions) featurization to
non-spherical particles, representing them as ellipsoids
rather than spheres. This makes it possible to build machine
learning models of coarse-grained molecular systems where
orientation matters, such as liquid crystals, molecular crystals, and glasses.
I'm one of five co-authors of its
implementation paper published in
the Journal of Open Source Software in 2025. Performance-critical
routines are written in Rust and called from Python; intermediate
representations use the metatensor TensorMap format.
Source ·
Documentation ·
Paper
Geometrically-Informed Machine Learning on Molecular Crystals
Cersonsky Group, UW–Madison · 2024 – Present
An ongoing investigation into structural patterns in
molecular crystals using AniSOAP. The dataset consists of
2,707 molecular crystals containing 3,242 distinct molecules,
with DFT-calculated lattice and ground-state energies. The
goal is to identify global structural trends that could
inform the engineering of novel molecular crystals — for
pharmaceuticals, semiconductors, and other functional
materials.
An initial approach fitting an ellipsoid to each
benzene-like ring captured too much intramolecular
structure: PCA showed dominant dependence on benzene ring
count, and HDBSCAN classified more than half the points as
noise. Current work shifts to representing each whole
molecule by its moment-of-inertia tensor (or a minimal
bounding ellipsoid) to better surface global structural
patterns.
I presented this work at two undergraduate research poster
sessions.
Computing Heesch Numbers of Polykites
Madison Experimental Mathematics Lab, UW–Madison · Fall 2023
A team project on Heesch's problem: the question of which
shapes can be surrounded by a (strictly) finite number of
concentric rings of copies of themselves.
Working in a team of four, we built a Python program that
reduces the Heesch number problem to Boolean satisfiability,
following an approach Craig Kaplan introduced for
polyominoes, polyiamonds, and polyhexes. We then ran our
solver against Joseph Myers' enumeration of non-tiling
polykites and determined the Heesch number of every n-kite
up through n = 9. The largest Heesch number we observed was
2, achieved by several 7- and 8-kites.
I co-authored the final paper and helped design the research
poster, which we presented to an audience of about 100 UW
faculty and students.
Source