Scientific Computing
Side-by-side search tree diagrams comparing nauty depth-first and Traces breadth-first traversal strategies for graph isomorphism

nauty and Traces: Graph Isomorphism Algorithms

An updated description of nauty and introduction of Traces, two programs for graph isomorphism testing and canonical labeling using the individualization-refinement paradigm.

Scientific Computing
Before and after visualization of point-set alignment using the Kabsch algorithm

Kabsch-Horn Cookbook: Differentiable Alignment

A differentiable point-set alignment library implementing N-dimensional Kabsch, Horn quaternion, and Umeyama scaling algorithms with per-point weights, batch dimensions, and custom autograd across NumPy, PyTorch, JAX, TensorFlow, and MLX.

Scientific Computing
Three-dimensional Brownian motion trajectory showing random walk behavior

Second-Order Langevin Equation for Field Simulations

Proposes the Hyperbolic Algorithm for Euclidean field theory simulations. By adding a second-order fictitious time derivative to the Langevin equation, the method reduces systematic errors from O(ε) down to O(ε²).

Scientific Computing
Abstract visualization of seven basis vectors represented as curved lines with dots, centered around a psi symbol

AI & Physical Sciences Taxonomy: A Seven-Vector Framework

Personal working taxonomy for categorizing papers as Method, Theory, Resource, Systematization, Position, Discovery, or Application contributions using a superposition model.

Scientific Computing
Grid of complex molecular structures rendered from SELFIES and SMILES strings

Molecular String Renderer: Chemical Visualization Library

An RDKit wrapper treating molecular visualization as a software engineering problem, implementing strategy pattern for SVG generation with automatic raster fallback, native SELFIES support for generative AI workflows, and strict type safety for batch processing in molecular ML training pipelines.

Scientific Computing
Comparison of exponential sampling methods showing histograms from both inverse transform and von Neumann methods overlaid with the theoretical exponential distribution

Exponential Random Numbers: Two Classic Algorithms

Explore two fundamental approaches to generating exponentially distributed random numbers: the modern inverse transform method using logarithms and von Neumann’s ingenious 1951 comparison-based algorithm that avoids transcendental functions entirely.

Scientific Computing
Velocity Autocorrelation Function showing the signature negative region characteristic of liquid dynamics and the cage effect discovered by Rahman

Modernizing Rahman''s 1964 Argon Simulation

A digital restoration of Rahman’s seminal 1964 molecular dynamics paper using LAMMPS and a Python analysis pipeline featuring decorator-based caching, fully vectorized NumPy computations for O(N^2) operations, and modern tooling (uv, type hints, Makefile automation) transforming academic scripts into a reproducible research toolkit.

Scientific Computing
Velocity Autocorrelation Function showing the signature negative region characteristic of liquid dynamics

Modernizing Rahman's 1964 Argon Simulation

I replicated Rahman’s landmark 1964 liquid argon molecular dynamics simulation using modern tools, building a Python analysis pipeline with caching, vectorization, and type hints to bridge vintage science with modern software engineering.

Scientific Computing
Molecular structure alignment showing protein conformations and RMSD calculation

Kabsch Algorithm: NumPy, PyTorch, TensorFlow, and JAX

Learn to align molecular structures and point clouds using the Kabsch algorithm, with differentiable implementations for modern ML frameworks.

Scientific Computing
Energy conservation plot showing kinetic, potential, and total energy oscillations for a copper adatom diffusion simulation

Automated Adatom Diffusion Workflow

An input-to-analysis workflow for simulating adatom diffusion on FCC metal surfaces using LAMMPS and EAM potentials, covering copper and platinum to compare how atomic mass and bonding strength affect surface dynamics, with a Python analysis layer that generates energy and trajectory diagnostic plots. The LAMMPS setup is adapted from Eric N. Hahn’s adatom tutorial.

Scientific Computing
Comparison of IQCRNN (Our Method) vs standard Policy Gradient showing training curves, phase portraits, and state trajectories for control tasks

IQCRNN: Certified Stability for Neural Networks

A PyTorch implementation enforcing strict Lyapunov stability guarantees on recurrent neural network controllers through Integral Quadratic Constraints, bridging 1990s robust control theory with modern deep reinforcement learning by solving semidefinite programs inside the gradient descent loop to provide mathematical certificates of safety.

Scientific Computing
Cartesian Genetic Programming graph showing input nodes, function nodes, and output nodes with active and inactive connections

Cartesian Genetic Programming in Julia

A 2018 exploration of evolutionary algorithms applied to Atari games, forking Dennis Wilson’s d9w/CGP.jl, where my contribution was the Atari reinforcement-learning experiment layer (experiment variants, fitness functions, hyperparameter tuning) on top of the upstream Cartesian Genetic Programming framework and its NEAT-inspired speciation.