Hi, I'm Josh — postdoc at the Bloomberg School of Public Health, Johns Hopkins.
I build methods, scientific AI/ML, and research software for partially observed systems across earth, environmental, and health sciences. My work integrates generative modeling (mechanistic, statistical, and hybrid), Bayesian inference, numerical solver design, and model evaluation — because prediction alone is not enough; the structural assumptions in every model must be tested and defended before anyone acts on the output.
Applications include infectious disease forecasting and decision support, surveillance design, marine and terrestrial ecology, and cultural transmission dynamics.
🌐 jcmacdonald.dev · Publications · CV · @jcm-sci
VBPCApy ·

Variational Bayesian PCA for incomplete data. Native missingness handling (MCAR/MNAR/block), uncertainty-calibrated posterior outputs, automatic relevance determination for rank selection, C++ accelerated kernels. Currently preparing convergence characterization and JOSS submission.
Operator-partitioned numerical solver for generative scientific models. Supports ODE and IMEX/PDE operator splitting with pluggable linear solver backends. Born from benchmarking the original FlepiMoP solver, which identified architectural bottlenecks that motivated a ground-up redesign.
Declarative governing equation specification compiler for structured dynamical systems (e.g., age-structured epidemic models, size-structured plankton models). Transforms YAML model definitions into callable numerics consumed by op_engine or other solvers.
Determines whether a model deserves the decisions built on it. Structured observables, proper scoring rules, Pareto-optimal configuration selection, and Bayesian stacking for simulation studies.
- model-criticism (Python) — wraps scoringrules, pymoo, arviz, SALib, optuna. Consumers: VBPCApy, pp-eigentest.
- ModelCriticism.jl (Julia) — wraps Metaheuristics.jl, ParetoSmooth.jl, QuasiMonteCarlo.jl, GlobalSensitivity.jl. Native scoring rules.
Posterior predictive eigenvalue testing for signal rank determination in covariance and Gram matrices. Supports ordered hypothesis testing with FWER and FDR control.
Simulation campaign orchestrator for config-driven batch runs. Pluggable system + engine backends, parameter management, output collection. Domain-agnostic core supporting infectious disease forecasting and scenario modeling workflows.
Flexible Pipeline for Modeling Pathogens. Contributed 5×–20× runtime speedups to the simulation backend through profiling-driven optimization.
MIDAS Network coordination hub for CDC-funded influenza scenario modeling. Contributing team lead submissions and model evaluation infrastructure.
Lead model developer for ACCIDDA's CDC-funded seasonal influenza scenario modeling across the 2024/25, 2025/26, and 2026/27 seasons. Set up the ACCIDDA flu model and operational pipeline (2024/25). Extensive work with external modeling packages drove contributions that led to FlepiMoP2 (2025/26). Supervising an undergraduate student in a scientific overhaul of the flu model (2026/27). These scenarios inform real-time public health decision-making and are used in part to help set influenza vaccination policy.
Technical lead supervising implementation of an age- and immune-status-structured Hib model for the Navajo Nation to evaluate the impact of long-running vaccination programs.
Benchmarking the FlepiMoP backend revealed architectural limitations that motivated a clean-sheet redesign. The result is the op_engine + op_system + flepimop2 stack: a modular, operator-partitioned simulation platform now supporting CDC-funded influenza forecasting.
Developing formal convergence guarantees for variational Bayesian PCA: closed-form ELBO monotonicity proofs, CAVI contraction rate bounds, and a systematic grid experiment (15 factors, ~80k configurations) characterizing posterior quality vs. wall time across missingness patterns, priors, and stopping criteria.
Modeling · Generative models (ODE/PDE/stochastic/hybrid), scientific AI/ML (physics-embedded surrogates, lawful learning), stability and bifurcation analysis, simulation-based inference, global sensitivity analysis (Sobol, PRCC, Morris)
Inference · Hierarchical Bayesian models, variational inference, profile likelihood, posterior predictive checks, identifiability analysis, uncertainty quantification
Computing · Python, Julia, C++; ODE/PDE solver design and benchmarking, operator splitting (IMEX), vectorization, CI/CD, type-checked codebases
Evaluation · Proper scoring rules, calibration diagnostics, Pareto front analysis, reduced-order forecasting models with scientific constraints by construction
Full details: jcmacdonald.dev/cv
| Languages & Tools | |
|---|---|
| Primary | Python · C++ · Julia |
| Secondary | MATLAB/Octave · R · Bash |
| Scientific | NumPy · SciPy · Cython · pybind11 · Numba |
| Infrastructure | GitHub Actions · Docker · pytest · pre-commit |


