Justin Angevaare


View My GitHub Profile

About me

I am a Data Scientist at Wellington-Dufferin-Guelph Public Health. I have an MSc (2014) and PhD (2020) in Applied Statistics from the University of Guelph.

In my research I navigate the challenges in the statistical modelling of complex population processes. Applications in public health and population ecology are of particular interest to me. This involves me in the study of topics in computational statistics, spatiotemporal models, and individual and agent based models. Much of my recent work has been implemented in open-source software packages.

Current software projects Pathogen.jl (2015-present)

Pathogen.jl is an implementation of some of my PhD research into transmission network individual level models of infectious disease, and phylodynamic models in Julia. It seeks to provide accessible and flexible tools for the simulation, description, visualization, and Bayesian inference of such models. This software provides methods for imputation of event times and transmission networks using data augmentation

SubstitutionModels.jl (2017-present)

SubstitutionModels.jl is a package that I've contributed to the BioJulia organization. At this time, it provides performant utilities for dealing with nucleic acid substitution models using StaticArrays.jl and Julia's multiple dispatch. These models are used for genetic distance calculations, phylogenetic tree construction, genetic sequence simulation, etc.

PhyloTrees.jl (2016-present)

PhyloTrees.jl provides a representation of rooted phylogenetic trees in Julia. My eventual goal is to implement Bayesian phylogenetic tree inference using MCMC in Julia with this package. For the time being it has been used in the implementation of phylodynamic models as part of my PhD research.

GeneticBitArrays.jl (2019-present)

GeneticBitArrays.jl uses Julia's BitArrays to represent RNA and DNA sequences. This representation is space efficient and highly interpretable. BitArrays also work great with linear algebra in Julia - such as may be used for phylogenetic inference, and simulation of genetic sequences.

PhyloModels.jl (2016-2020)

PhyloModels.jl builds on my work with GeneticBitArrays.jl, PhyloTrees.jl, SubstitutionModels.jl. It implements Felsenstein's Pruning Algorithm for loglikelihood calculation of phylogenetic trees with aligned genetic sequences at their tips. A Dict with Int64 node IDs as keys and GeneticSeq as values is used for input for the loglikelihood calculation, as well as the output from simulation of genetic sequences.

Articles Published/Accepted
  • Angevaare, J., Feng, Z. and Deardon, R. (2021) Inference of latent event times and transmission networks in individual level infectious disease models. Spatial and Spatiotemporal Epidemiology. 10.1016/j.sste.2021.100410 | preprint version
  • Angevaare, J., Feng, Z., Deardon, R. (2020) Pathogen.jl: Infectious disease transmission network modelling with the Julia language. arXiv:2002.05850
  • Angevaare, J., Feng, Z., Deardon, R. (2020) Pathogen.jl: Infectious disease transmission network modelling with the Julia language. Submitted to the Journal of Statistical Software

  • Rose, D., Edwards, B., Kett, R., Gillis, D., Angevaare, J. (2017) Exploring Anthropogenic Activities and Management Decisions Using a Novel Environmental Agent Based Model. IEEE International Humanitarian Technology Conference, Toronto, ON


presenting author


Technical documents

  • Gillis, D., Alexander, C., Angevaare, J., Bakar, C., Cox, R., Kramski, N., Krsic, N. (2014) SON-BP Collaborative Lake Whitefish Research Project: Year 3 report. Technical document.
  • Angevaare, J., Gillis, D., Cox, R. (2014) SON-BP Collaborative Lake Whitefish Research Project: Milestone 5: Report on Application and Evaluation of Population Models. Technical document. June 2014. 28 pp.
  • Angevaare, J., Gillis, D. (2014) SON-BP Collaborative Lake Whitefish Research Project: Milestones C3 & C4 - Estimates of Life History and Mortality Parameters of Lake Whitefish (Coregonus clupeaformis). Technical document. January 2014. 15 pp.
  • Gillis, D., Angevaare, J., Rueffer, M., Horrocks, J. (2012). Analysis of Total Allowable Catch. Technical document. October 2012. 34 pp.
  • Angevaare, J. (2012) Lake Huron Lake Whitefish Life History Parameters. Technical document. September 2012. 106 pp. (including appendices)

Previous software projects FishABM.jl (2014-2015)

FishABM.jl was an implementation of a lifecycle model for the application of fisheries management. An age-structured model was used for adults, with options for commercial or recreational harvest. A highly detailed agent based model was used from egg through to juvenilles life stages, grouping individuals from the same brood into an single agent. Movement and various sources of mortality (habitat specific), and the eventual impact on assumptions surrounding movement and mortality on the health of the fishery could be tracked.

Fisheries_ABM (2014)

Fisheries_ABM was a prototype for would eventually become FishABM.jl, built in R. It was an stochastic agent based model of a fishery that could account for harvest and anthropogenic mortality sources.

ILMs.jl (2014-2015)

ILMs.jl was my first implementation of individual level models of infectious disease in Julia. It offered simulation and inference in continuous and discrete time, when event times can assumed to be known, for models utilizing power-law infectivity kernel. This package is superceded by my more recent and involved work with Pathogen.jl. My experience developing this package convinced me to go all-in with Julia for my PhD research.

ILMPythonTools (2014)

ILMPythonTools was an early python implementation of tools for individual level models of infectious disease. This work was stopped in favour of developing such tools instead in Julia.

Just for fun brew2 (2018-present)

brew2 is an app built in Node-RED for brewery control using Raspberry Pi. It implements sophisticated PID algorithms for mash temperature control using various recirculating mash systems. Its more custom features are written in javascript. Logging uses influxdb time series database. I have a couple posts on my brewing blog related to this work here, and here.

Various CraftBeerPi3 plugins (2017-2019)

I have developed several popular plugins for CraftBeerPi3 brewery control software in python:

I have a summary of these on my brewing blog.

HopScrape (2018)

This project incorporated scraping, and imputation of hop data using BeautifulSoup, pandas, and fancyimpute. The cleaned and imputed data resulting from this project are available on the repo.

TriangleDash (2018)

TriangleDash is a small application I made to learn Plotly's Dash. It is an explanation, calculation, and visualization of results from triangle test sensory analysis. It's deployed on heroku and can be used here.

Homebrewing PCBs (2018-Current)

I learned a bit about PCB design and electronics, then created a couple board designs for homebrewing applications using Raspberry Pi and ESP8266 IoT devices and open-sourced them. They can also be purchased from PCBS.io1, 2 and PCBWay.com1, 2. 100s of these boards have now been produced.

Other profiles: