I am deeply committed to open-source software and have been building professional-grade tools for over 15 years—going back to the days of Google Code here. My work combines rigorous statistical methods with modern software engineering practices, including version control (Git/GitHub), continuous integration, agentic AI, container technologies, and agile methodologies. I have led scientific software development teams to deliver high-performance, reliable, and user-friendly tools that are widely adopted by researchers and practitioners. Most of my work is built in C++ with wrappers for R and Python, optimized for use in high-performance computing environments. Recently, during the last couple of years, I have incorporated AI into my work, influencing development and innovation (see here for a few examples). Across all projects, I design with performance and usability in mind, ensuring that complex methods can be both scalable and accessible.
A couple of projects to highlight include:
The epiworld framework is an advanced agent-based modeling framework written in C++ that was designed for rapid prototyping of simulation models focused on epidemiological modeling. The library is available in R, Python, as well as a shiny package. The most notable application of epiworld is with the modeling of measles during the recent US outbreaks. You can see a version of the shiny app that was developed here.
The rgexf package. Create, read, and write ‘GEXF’ (Graph Exchange ‘XML’ Format) graph files (used in ‘Gephi’ and others). Using the ‘XML’ package, rgexf allows reading and writing GEXF files, including attributes, ‘GEXF’ visual attributes (such as color, size, and position), network dynamics (for both edges and nodes), and edges’ weights. Users can build/handle graphs element-by-element or massively through data frames, visualize the graph on a web browser through ‘gexf-js’ (a ‘javascript’ library), and interact with the ‘igraph’ package. You can see a live version of the gexf-js library in action here.
The ergmito R packagee. Simulation and estimation of Exponential Random Graph Models (ERGMs) for small networks using exact statistics as shown in Vega Yon et al. (2020) https://doi.org/10.1016/j.socnet.2020.07.005. As a difference from the ‘ergm’ package, ‘ergmito’ circumvents using Markov-Chain Maximum Likelihood Estimator (MC-MLE) and instead uses Maximum Likelihood Estimator (MLE) to fit ERGMs for small networks. As exhaustive enumeration is computationally feasible for small networks, this R package takes advantage of this and provides tools for calculating likelihood functions, and other relevant functions, directly, meaning that in many cases both estimation and simulation of ERGMs for small networks can be faster and more accurate than simulation-based algorithms.
The following is an exhaustive list of the software packages I have either built or contributed. You can take a look at my most recent contributions and ongoing open source projects on my GitHub
Status
Type
Language
Available on
Topic
Citation counts from OpenAlex; downloads from CRAN. Updated 2026-08-15.
Create, read, and write 'GEXF' (Graph Exchange 'XML' Format) graph files, used in 'Gephi' and others. Using the 'XML' package, rgexf allows reading and writing GEXF files, including attributes, 'GEXF' visual attributes (such as color, size, and position), network dynamics (for both edges and nodes), and edges' weights. Users can build and handle graphs element-by-element or massively through data frames, visualize the graph on a web browser through 'gexf-js' (a 'javascript' library), and interact with the 'igraph' package.
Empirical statistical analysis, visualization, and simulation of diffusion and contagion processes on networks. The package implements algorithms for calculating network diffusion statistics such as transmission rate, hazard rates, exposure models, network threshold levels, infectiousness (contagion), and susceptibility. The package is inspired by work published in Valente et al. (2015), Valente (1995), Myers (2000), Iyengar and others (2011), Burt (1987), among others.
Implements a parsimonious evolutionary model to analyze and predict gene-functional annotations in phylogenetic trees, as described in Vega Yon et al. (2021). Focusing on computational efficiency, 'aphylo' makes it possible to estimate pooled phylogenetic models, including thousands (hundreds) of annotations (trees) in the same run. The package also provides tools for visualization of annotated phylogenies, calculation of posterior probabilities (prediction), and goodness-of-fit assessment.
A graph visualization engine that emphasizes aesthetics while providing default parameters that yield out-of-the-box, nice visualizations. The package is built on top of 'The Grid Graphics Package' and works seamlessly with 'igraph' and 'network' objects.
Provides the 'C++' header-only library 'barry' for use in R packages. 'barry' is a 'C++' template library for counting sufficient statistics on binary arrays and building discrete exponential-family models. It provides tools for sparse arrays, user-defined count statistics, support set constraints, power set generation, and includes modules for Discrete Exponential Family Models (DEFMs) and network statistics. By placing these headers in this package, it offers an efficient distribution system for CRAN, avoiding replication of this code across the sources of other packages. This package follows the same approach as the 'BH' package, which provides 'Boost' headers for R packages.
Multi-binary response models are a class of models that allow for the estimation of multiple binary outcomes simultaneously. This package provides functions to estimate and simulate these models using the Discrete Exponential-Family Models (DEFM) framework, implementing the models described in Vega Yon, Valente, and Pugh (2023). DEFMs include Exponential-Family Random Graph Models (ERGMs), which characterize graphs using sufficient statistics, also the core of DEFMs. Using sufficient statistics, the package describes data through meaningful motifs, such as transitions between different states and the joint distribution of the outcomes.
A flexible framework for Agent-Based Models (ABM), the 'epiworldR' package provides methods for prototyping disease outbreaks and transmission models using a 'C++' backend, making it very fast. It supports multiple epidemiological models, including the Susceptible-Infected-Susceptible (SIS), Susceptible-Infected-Removed (SIR), Susceptible-Exposed-Infected-Removed (SEIR), and others, involving arbitrary mitigation policies and multiple-disease models. Users can specify infectiousness/susceptibility rates as a function of agents' features, providing great complexity for the model dynamics. 'epiworldR' is ideal for simulation studies featuring large populations.
Models infectious disease dynamics in populations with multiple subgroups having different vaccination rates, transmission characteristics, and contact patterns. Calculates final and intermediate outbreak sizes, forms age-structured contact models with automatic fetching of U.S. census data, and explores vaccination scenarios with an interactive 'shiny' dashboard for a model with two subgroups, as described in Nguyen et al. (2024) and Duong et al. (2026).
A specialized collection of measles epidemiological models built on the 'epiworldR' framework. This package is a spinoff from 'epiworldR' focusing specifically on measles transmission dynamics. It includes models for school settings with quarantine and isolation policies, mixing models with population groups, and risk-based quarantine strategies. The models use Agent-Based Models (ABM) with a fast 'C++' backend from the 'epiworld' library, making it ideal for studying measles outbreaks, vaccination strategies, and intervention policies.
Provides tools and pre-trained Machine Learning (ML) models for calibration of Agent-Based Models (ABMs) built with the R package 'epiworldR', implementing methods described in Najafzadehkhoei, Vega Yon, Modenesi, and Meyer (2025). Users can automatically calibrate ABMs in seconds with pre-trained ML models, effectively focusing on simulation rather than calibration, bridging a gap that allows public health practitioners to run their own ABMs without the advanced technical expertise often required by calibration.
Tools for measuring and testing imaginary cognitive social structure (CSS) motifs — patterns of false positives and negatives in cognitively perceived social networks relative to the actual network, categorized as partially false, completely false, and mixed false imaginary motifs, as described in Tanaka and Vega Yon (2024).
Agent-based measles outbreak simulations across the 11 major U.S. cities hosting the 2026 FIFA World Cup. Built on the 'epiworldR' and 'measles' R packages, and using census-derived age structure and MMR vaccination coverage, the project provides baseline scenario dashboards summarizing simulated outbreak size over time and the probability that outbreaks exceed given case-count thresholds for each host city. With large international crowds expected, the dashboard supports public-health preparedness by helping to understand measles transmission risk around the tournament.
An AI-powered dashboard exploring the InsightNet research community: academic profiles and publications for researchers affiliated with InsightNet's centers. A scheduled pipeline collects papers and preprints from ORCID, Europe PMC, PubMed, arXiv, medRxiv/bioRxiv, and Crossref, and daily activity from public web pages, RSS/Atom, Bluesky, and GitHub, normalizing it into a static snapshot. The standalone site includes an AI-assisted expert-finder that answers questions from the collected publications and profiles, citing the underlying record, a browser-side keyword search, and a browsable, filterable publication list, with no runtime server or frontend dependencies.
Simulation and estimation of Exponential Random Graph Models (ERGMs) for small networks using exact statistics, as shown in Vega Yon et al. (2020). As a difference from the 'ergm' package, 'ergmito' circumvents using a Markov-Chain Maximum Likelihood Estimator (MC-MLE) and instead uses a Maximum Likelihood Estimator (MLE) to fit ERGMs for small networks. As exhaustive enumeration is computationally feasible for small networks, this R package takes advantage of this and provides tools for calculating likelihood functions and other relevant functions directly, meaning that in many cases both estimation and simulation of ERGMs for small networks can be faster and more accurate than simulation-based algorithms.
R 'shiny' web apps for epidemiological Agent-Based Models. It provides a user-friendly interface to the Agent-Based Modeling (ABM) R package 'epiworldR', with support for the Susceptible-Infected-Susceptible (SIS), Susceptible-Infected-Recovered (SIR), and Susceptible-Exposed-Infected-Recovered (SEIR) models. 'epiworldRShiny' provides a web-based user interface for running various epidemiological ABMs, simulating interventions, and visualizing results interactively.
A flexible tool for simulation and statistical inference of epidemiological models, emphasizing hierarchical multi-signal renewal models. Built on top of the 'numpyro' Python library, 'PyRenew' provides core components for model building. A renewal model estimates new infections from recent past infections using a generation interval, from which it infers the time-varying reproduction number R(t). PyRenew's strength lies in multi-signal integration for pooling information across diverse observed data streams, such as hospital admissions, wastewater concentrations, and emergency department visits, each with distinct observation delays, noise characteristics, and spatial resolutions.
An implementation of a hierarchical semi-mechanistic renewal approach jointly calibrating to multiple wastewater concentration datasets from subsets of a specified population and epidemiological indicators, such as cases or hospital admissions, from the whole population. The framework extends the widely used semi-mechanistic renewal framework 'EpiNow2', using a Bayesian latent variable approach implemented in the probabilistic programming language 'Stan'. The package fits these two data sources and produces estimated and forecasted hospital admissions, estimated and forecasted wastewater concentrations, and global and local R(t) estimates for the subpopulations represented by each wastewater catchment area.
'Slurm', Simple Linux Utility for Resource Management, is a popular 'Linux'-based software used to schedule jobs in 'HPC' (High Performance Computing) clusters. This R package provides a specialized lightweight wrapper of 'Slurm' with a syntax similar to that found in the 'parallel' R package. The package also includes a method for creating socket cluster objects spanning multiple nodes that can be used with the 'parallel' package.
Provides a friendly (flexible) Markov Chain Monte Carlo (MCMC) framework for implementing the Metropolis-Hastings algorithm in a modular way, allowing users to specify an automatic convergence checker, personalized transition kernels, and out-of-the-box multiple MCMC chains using parallel computing. Among the methods included are Haario (2001) Adaptive Metropolis, Vihola (2012) Robust Adaptive Metropolis, and Thawornwattana et al. (2018) Mirror transition kernels.
A general framework for epidemiologic simulation implemented as a header-only 'C++' template library. The core principle of 'epiworld' is fast epidemiological prototyping for building complex models quickly: models can have an arbitrary set of states, viruses and tools (e.g., vaccines, mask-wearing) can be designed with arbitrary features, and multiple tools and viruses can coexist in the same simulation. It depends only on the standard library and is capable of over 150 million person-day simulations per second.
A C++ template library implementing Felsenstein's tree-pruning algorithm for efficiently computing likelihood functions on phylogenies. The library reads a tree object as a list of source-target dyads (edges) and allows users to store arbitrary arguments via memory pointers and 'std::function' callbacks invoked with those arguments and the tree structure data. Trees are stored as offspring and parent lists, accessible through a 'TreeIterator' class implementing pre- and post-order traversals for pruning.
A Stata module for parallel computing. By organizing a job into several Stata instances, parallel provides out-of-the-box parallel computing for faster simulations, bootstrapping, reshaping big data, and more, without requiring any knowledge of parallel computing or a Stata/MP license. Depending on the number of available processors, parallel has shown to dramatically speed up computations, sometimes outperforming Stata/MP itself.
Provides a collection of functions to set up 'Google Public Data Explorer' data visualization tool with your own data, building automatically the corresponding DataSet Publishing Language file, or DSPL (XML), metadata file jointly with the CSV files. All zip-up and ready to be published in 'Public Data Explorer'.
An implementation of Karaboga's (2005) Artificial Bee Colony Optimization algorithm. This was developed upon the basic version programmed in C and available at the algorithm's official website.