Projects
![]() |
kMC Crystal Simulator
Rust, WebAssembly, 2026 demo / config editor / code / post A kinetic Monte Carlo simulator for 2D crystal growth, written in Rust and compiled to WebAssembly. It can grow almost any design that can be specified in terms of local particle interactions, including non-periodic and off-lattice crystals, and crystals implementing programmatic rules such as an infinite Serpinski triangle. |
|
Sparse variant cache
Python, PyTorch, 2026 code Train protein variant-effect models by reusing reference states and recomputing only the mutated positions. A bidirectional sparse variant cache for ESM Cambrian, with stability models evaluated directly against the Mutate Everything and ArcStability benchmarks. |
|
![]() |
MTile
C#, MonoGame, WebRTC, 2026 play / code A 2D platformer in a voxel environment, with free, parkour-style movement. Deterministic 60 fps simulation with GGPO-style rollback netcode. Playable in the browser, solo against a bot or peer-to-peer over a direct WebRTC data channel. |
![]() |
Gut biofilm agent-based model
Python, Taichi, 2023–2025 code / npj Biofilms and Microbiomes / mSystems An agent-based model of biofilm growth in the gut mucosal layer. Bacteria are implemented as shoving particles, which may feed and grow based on metabolites implemented as reaction-diffusion fields. Host effects such as mucus secretion and antibacterials are implemented as simulated parameters. GPU-accelerated physics and reaction-diffusion dynamics in Taichi. |
|
Function-conditioned protein language models
Python, PyTorch, 2024–2026 code Semi-supervised identification of functionally important residues using GO-term-conditioned masked language modeling. FuncCondESMC extends ESM Cambrian with a learned embedding for each GO term, added to the token embeddings so every attention layer is conditioned on the protein's annotated function. Evaluated on eight site-annotation datasets covering catalytic residues, binding sites, linear motifs, and InterPro domains. |
|
|
Calibrated Response
Python, 2026 code A maximum entropy model for turning sets of approximate predictions into calibrated joint probability distributions. Answers from arbitrary sources become soft constraints on a maximum-entropy joint distribution fit by a flow or EBM based sampler, scalable to >1,000 variables. Calibration is evaluated against resolved Metaculus questions. |
|
|
GO Bench
Python, Flask, 2021–2022 gobench.org / dataset package / server / paper Shared hub for universal benchmarking of machine-learning protein function annotation. The go_bench package generates Gene Ontology training, validation, and test sets from SwissProt and GOA with fixed splits, and the Flask server behind gobench.org lets users upload model predictions to a public leaderboard. |
|
|
STARP Primer
Python, Flask, BLAST, 2023 code / BLAST interface A web application for designing and validating STARP PCR primers for genotyping individual single nucleotide polymorphisms, built for the USDA. A Flask API and HTML/JavaScript frontend over the Nested Loop and STARP primer programs, with a BLAST backend to filter primers that bind at multiple sites and a Redis/Celery queue for computationally intensive requests. |
|
All repositories
Public repositories on github.com/amdson, newest first. One sentence each.
- mutant_cache (2026, Python). Trains protein variant-effect models by reusing reference-sequence states and recomputing only the mutated positions, built on ESM-2 and ESM Cambrian.
- MTile (2026, C#). A 2D platformer in C#/MonoGame where the terrain is the weapon, with a deterministic 60 fps simulation, GGPO-style rollback netcode, and a browser build at amdson.github.io/mtile.
- Hierwave (2026, Python). Fixed-budget hierarchical sampling of tile worlds, with learned coarse levels and designed fine levels, so infinite worlds can be generated chunk by chunk.
- circscale (2026, Python). Random reversible brickwork circuits with varied-depth output taps, for sampling input/output pairs at scale and generating SAT instances, with notebooks on training small networks to learn them.
- gallrna (2026). Dual RNA-seq pipeline for Agrobacterium galls on citrus hosts, run on Slurm from a Makefile.
- scrl (2026, Python). Prototype of reward-conditioned self-consistency on a fixed 12x12 maze in JAX, with deterministic random-walk rollouts and exact ground truth.
- svar (2026, Python). Benchmarks plant genomic language models (PlantCAD, DNABERT-2, CARBON) on variant, methylation, and crop-phenotype prediction, with Slurm scripts for embedding genome windows.
- variant_cache (2026, Python). Notebooks for iterating over VCF files, remapping variants, and fitting SNP baseline models for the crop_embed package.
- gg_qa (2026, Python). A library for querying PDFs with page-level text extraction, vector search, and an LLM through PydanticAI and OpenRouter.
- calibrated_response (2026, Python). A framework that combines multiple LLM-generated distributional predictions into one calibrated forecast using maximum entropy models, evaluated on resolved Metaculus questions.
- crystal_sim (2026, Rust). A kinetic Monte Carlo 2D crystal growth simulator in Rust compiled to WebAssembly, with a browser config editor and runner at /docs/.
- gv_abm (2025, Python). Agent-based model of gun violence with likelihood evaluation over parameter grids and Bayesian calibration, the code behind the PNAS Nexus paper.
- rtcpvp (2025, JavaScript). A two-player browser game connected peer to peer over WebRTC, playable at /rtcpvp.
- go_interp (2024, Python). Function-conditioned protein language models: ESM Cambrian extended with learned Gene Ontology term embeddings to sharpen residue-level predictions at functional sites, evaluated on eight site-annotation datasets.
- mb_abm (2023, Python). Agent-based biofilm model of gut mucosal bacterial communities in Taichi, with particle shoving, reaction-diffusion fields, and host-invasion experiments.
- starp (2023, Python). Flask web application providing a graphical interface for the Nested Loop and STARP primer design programs.
- starp_blast_interface (2023, Python). Flask service that runs blastn against a local genome database to check STARP primers.
- rec-display and rec-server (2023, JavaScript/Python). React app for comparing media titles, with a Python server for its requests.
- toy_BERT (2022, Python). A small PyTorch transformer trained from scratch on generated arithmetic expressions.
- azul_rl (2022, Python). A homework assignment implementing a learned policy with Monte Carlo tree search in JAX/Flax for tic-tac-toe and the board game Azul, with a simulator and visualizer.
- go_metric (2022, Python). Code and notebooks for the paper “Fine-tuning protein embeddings for functional similarity evaluation”, including fine-tuning, kNN benchmarks, and recall-at-k.
- tile_platform (2022, C++). A tile platformer with chunked terrain, custom physics, and combat, built on SDL2.
- go_bench (2021, Python). Package for generating Gene Ontology datasets from SwissProt and GOA, with the train/validation/test splits used by gobench.org.
- GO_Bench_Sample (2021, Jupyter). Interactive tutorial on using the GO Bench website for data collection, training, and model comparison.
- GO_pipeline (2021, Python). Flask web server for gobench.org.
- amdson.github.io (2021, Jekyll). This website.
- PracticeAI (2018). A practice AI in PyTorch; README only.
- SpringPhysics (2018, JavaScript). An RK4 spring simulator.
- GraphicsCode (2017, JavaScript). A large undocumented collection of early canvas experiments and small games, kept for reference.
- Oceanview (2016, JavaScript). Simulates water as connected columns of fluid in a single HTML file, playable at /oceanview.
- Asteroid_Hunting (2016, JavaScript). A small game about hunting asteroids with your hammer.
- BasicPhysics (2016, JavaScript). A dampened spring simulator.


