Joshua C. Macdonald

Computational Scientist · Johns Hopkins Bloomberg School of Public Health

prof_pic.jpg

International Vaccine Access Center

Department of International Health

Johns Hopkins Bloomberg School of Public Health

Baltimore, MD

My work determines what actions to take, what experiments to run, and what measurements are worth collecting in systems where interventions are costly and uncertainty is unavoidable. I build the computational machinery — generative models, scientific machine learning methods, inference algorithms, forecasting pipelines, and design and evaluation tools — that makes this possible for partially observed systems across health, environmental, and earth sciences; concretely, the infectious disease tools are developed for CDC-funded scenario modeling that contributes to the process used to set influenza vaccination policy, while other tools support wildlife disease surveillance design in sub-Saharan Africa and public health resource allocation. Prediction alone is not enough; the structural assumptions buried in every model must be exposed, tested, and defended before anyone acts on the output.

Currently I am a postdoctoral scholar at the International Vaccine Access Center at Johns Hopkins, where I develop operational infectious disease forecasting and decision support systems for ACCIDDA, a CDC Center for Forecasting and Outbreak Analytics collaboration. This work contributes scenario projections to the CDC Flu Scenario Modeling Hub, which supports public health resource allocation and intervention timing. I also collaborate with the Jolles Lab at Oregon State University on cross-scale modeling of Crimean–Congo hemorrhagic fever (CCHF) in wildlife and livestock systems, designing surveillance strategies that balance information gain against field cost. Previously I was a Zuckerman STEM Leadership Fellow at Tel Aviv University, working with Yoav Ram on Bayesian dimensionality reduction for incomplete cultural and genetic datasets.

I hold a PhD in Mathematics from the University of Louisiana at Lafayette and a BA in Archaeology from UNC Greensboro — a combination that continues to shape how I think about inference from incomplete records.


The common structure

Every system I work on shares the same architecture: a latent process we care about, an observation process that distorts it, and the data we actually get. Whether the latent state is disease prevalence in a wildlife herd, nutrient cycling in a marine ecosystem, or cultural trait frequencies in a human population, the challenge is identical — the thing we need to make decisions about is never directly observed. The figure below maps this architecture across four domains.

This is not just a conceptual analogy. The mathematical structure is shared: each domain requires a generative model that encodes how hidden states produce observables, an inference engine that inverts the observation process under uncertainty, and a decision layer that translates posterior beliefs into actionable recommendations. Building this infrastructure so that it transfers across domains — rather than rebuilding it from scratch for each application — is the central goal of my research program.

The operational tools I build reflect this shared structure and compose into a stack — from model specification to numerical integration to orchestration to evaluation:

  • Model specification. OP System provides a declarative language for specifying structured dynamical systems with multi-axis stratification; the compiler produces validated model objects consumed by downstream solvers.
  • Numerical integration. OP Engine is an operator-partitioned ODE/PDE solver core with nine methods (explicit, IMEX, fully implicit), adaptive stepping, and zero per-step allocation.
  • Orchestration. FlepiMoP2 drives configuration-driven batch campaigns over locations and scenarios, connecting the specification and solver stack to CDC scenario modeling hubs and contributing projections used in influenza vaccination policy.
  • Design and evaluation. trade-study uses simulators with known ground truth to score competing configurations — model formulations, solver choices, measurement strategies, or any design decision — against ground truth using proper scoring rules and multi-objective Pareto optimization, so that decisions validated on benchmarks transfer to real data.
  • Dimensionality reduction. vbpca-py and pp-eigentest recover latent population structure from incomplete datasets with full posterior uncertainty and principled rank determination.

Where this is going

The research program moves along three axes. First, enable decisions: determine what intervention to deploy, what experiment to run, and what to measure next — then package these recommendations into tested, documented, open-source software with CI pipelines so that collaborators and decision-makers can act on model output they have reason to trust. Second, harden the inference: build reusable tools for Bayesian rank selection (pp-eigentest), multi-objective design and evaluation (trade-study), and missing-data-native dimensionality reduction (vbpca-py) that work across application areas. Third, generalize: extend the partially observed decision framework to new domains and new classes of systems — multi-host zoonoses, marine ecosystems, cultural evolution, spatial processes.

The question that ties it all together: what should we do, given what we can’t observe?


Software

Tool What it does Status
op_system Declarative language & compiler for structured dynamical systems Active development · docs
op_engine Operator-partitioned ODE/PDE solver (9 methods, adaptive, zero-alloc) Developed for CDC-funded flu scenario modeling · docs
flepimop2 Configuration-driven orchestration for forecasting & scenario analysis Active development · CDC scenario modeling
trade-study Design & evaluation: score competing configurations against known ground truth via simulators, scoring rules, Pareto optimization, stacking Released on PyPI (Python + Julia) · docs
vbpca-py Variational Bayesian PCA for incomplete data with full posterior uncertainty Released on PyPI · JOSS submission in preparation
pp-eigentest Posterior predictive eigenvalue testing for signal rank determination Pre-release · companion to arXiv:2409.12129

Methods & Expertise

These capabilities are deployed to design interventions, optimize surveillance strategies, and determine what experiments and measurements are worth their cost.

Modeling. Generative models (ODE/PDE/stochastic/hybrid); compartmental and agent-based models; scientific machine learning (physics-embedded surrogates, lawful learning); multivariate data analysis and dimensionality reduction; stability, bifurcation, and sensitivity analysis; parameter identifiability and inverse problems.

Inference. Bayesian hierarchical models; variational and simulation-based inference; data assimilation; uncertainty quantification; model calibration and validation; proper scoring rules and forecast evaluation.

Scientific computing. Python, Julia, C++, Stan, R, MATLAB. High-performance numerical solvers; operator splitting; reproducible workflows (Git, CI/CD, containerization); data pipelines and exploratory analysis.

news

Jul 01, 2026 Mini-symposium talk at SMB 2026 in Graz, Austria — “Decision-Support Modeling for One Health Pathogens: Using Mechanistic Models for Surveillance and Forecast Design.”
Apr 09, 2026 Presenting FlepiMoP2 and the Operator-Partitioned Simulation Stack at the Insight Net Third Annual Meeting tools workshop, Friday Center, Chapel Hill, NC.
Apr 01, 2026 Invited seminar at Woods Hole Oceanographic Institution — “Cross-Scale Feedback Motifs: Structure-Preserving Models and Computational Tools for Complex Systems.”
Mar 25, 2026 Invited seminar at UMBC — “Decision-Support Modeling for One Health Pathogens.”
Jul 13, 2025 Presenting at SMB 2025 in Edmonton — “Recovering Ecological Geometry: A Trait- and Depth-Structured IPDE Model of Plankton Dynamics.”