I developed and teach several practicals for an infectious disease modelling short course at the University of Bristol. See here for course details and here for open source resources.

Recent Posts

More Posts

getTBinR 0.7.0 should now be available on CRAN. This release includes some new experimental data (TB incidence by age and sex) that for now is only partly supported by {getTBinR}. It also brings {getTBinR} into line with new (or new to me) {ggplot2} best practices. This involved two major changes (plans are also afoot for an S3 plot method): Moving from a full @import of {ggplot2} to only using @importFrom for required functions (something that I had previously been too lazy to do…).


Last week the UK pledged to contribute £467m a year for three years to the Global Fund. The money will be spent on: providing tuberculosis (TB) treatment for more than two million people; 90 million mosquito nets to protect people from malaria; and treatment for more than three million people living with HIV. This funding will drastically improve many peoples lives and needs to be celebrated even if it comes from a broadly unpopular source.


getTBinR 0.6.0 is now on CRAN and should be available on a mirror near you shortly! This update includes multiple new Tuberculosis datasets - increasing the available number of variables through getTBinR from 80 to over 450. To help support these new datasets the package now contains a dataframe listing the available datasets and search_data_dict can now also be used to search the data dictionary for variables by dataset. On top of this, this update contains suggested changes by reviewers (@rrrlw and @strengejacke) from JOSS (see here for the review thread).


Why? I recently built out a new workstation and have done some benchmarking using xgboost via h2o. In this post I am using the benchmarkme package to get another perspective on performance. Note: The benchmarkme package appears to have some issues when it comes to plotting benchmarks. I ended up having to drop them entirely from this post. Update (2019-02-11): Just checked this issue using rocker/tidyverse:latest and found all benchmarkme functionality is working well.


Why? I recently built out a new workstation to give me some local compute for data science workloads. Now that I have local access to both a CPU with a large number of cores (Threadripper 1950X with 16 cores) and a moderately powerful GPU (Nvidia RTX 2070), I’m interested in knowing when it is best to use CPU vs. GPU for some of the tasks that I commonly do.



Modelling BCG vaccination in the UK: What is the impact of changing policy? (PhD thesis)

Bacillus Calmette–Guérin (BCG) remains the only licensed vaccine against Tuberculosis (TB). In 2005, England changed from universal vaccination of school-age children to targeted vaccination of high-risk neonates. Little work has been done to assess the impact of this policy change. This thesis evaluates the impact of this change.

Explore Global Tuberculosis

A shiny app showcasing the functionality of getTBinR. It allows the exploration of the global burden of Tuberculosis. Any metric in the WHO data can be explored, with country selection using the built in map, and animation possible by year. Source code available here.

BIDD Modelling Course

The course practicals for the modelling infectious disease short course run by BIDD at the University of Bristol. Source code available here.

Explore Infectious Disease Models

This shiny app has been developed to allow the exploration of the parameter space of compartmental infectious disease models. It is designed to be used as a teaching aid when introducing people to the concepts behind infectious disease models without requiring them to interact with the underlying code.

Show Me Perseus

A shiny app to remove potential friction for new R users when using the R perseus package. Source code available here.


Quickly and easily import analysis ready Tuberculosis (TB) burden data, from the World Health Organisation (WHO), into R. The aim of getTBinR is to allow researchers, and other interested individuals, to quickly and easily gain access to a detailed TB data set and to start using it to derive key insights.

Introduction to TB Modelling

A shiny app reproducing the models used in the Introduction to Tuberculosis modelling course practicals, run by TB MAC at the 2017 Union conference. See the TB MAC website for course materials and further resources. The models used in this course, and reproduced in this shiny app, were based on one published by Lin et al.. The source code is available on here

Tuberculosis in England and Wales

A shiny dashboard providing interactive plots of Tuberuclosis Incidence in England and Wales using publicly available data. The source code is available on here

Property Partner Portfolio Visualisation

A series of Tableau dashboards visualising the Property Partner portfolio

FC Dashboard

FC dashboard is a simple tool for exploratory data analysis on the funding circle loanbook. The source code can be found here. This is an independant project and is in no way associated with funding circle. Since the original development of this dashboard Funding Circle has stopped publishing it’s full loanbook, this means that some functionality will no longer work as originally intended and that data will no longer be updated.


Explore a range of infectious disease models in a consistent framework. The primary aim of idmodelr is to provide a library of infectious disease models for researchers, students, and other interested individuals. These models can be used to understand the underlying dynamics and as a reference point when developing models for research.

The Pebble Game

The Pebble Game is a shiny application that simulates the pebble game. This is a simple game that has been developed by BIDD at the University of Bristol, to help a general audience understand the role of vaccination in preventing the onward transmission of infectious disease. The source code can be found here.

Funding Circle Data Anaylsis

Visualisation and analysis of the Funding Circle loanbook.

PhD: Research Aims

Summary of the research aims for my PhD thesis


prettypublisher is an R package that aims to improve your workflow by allowing an easier transition from literate code to a paper draft ready for journal submission.


R package containing the scripts required to clean data from the Enhanced Tuberculosis Surveillance system, and the Labour Force Survey, and to then calculate Tuberculosis incidence.