diff --git a/DESCRIPTION b/DESCRIPTION
index 0fe7725..30526c0 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,9 +1,9 @@
Package: epikinetics
-Title: Antibody and Cycle Threshold Kinetics Modelling
+Title: Biomarker Kinetics Modelling
Version: 0.0.0.9000
Authors@R: c(person("Timothy", "Russell", email = "timothy.russell@lshtm.ac.uk", role = c("aut")),
- person("Alex", "Hill", email = "alex.hill@gmail.com", role = c("ctb", "cre")))
-Description: What the package does (one paragraph).
+ person("Alex", "Hill", email = "alex.hill@gmail.com", role = c("aut", "cre")))
+Description: Fit kinetic curves to biomarker data, using a Bayesian hierarchical model
License: GPL (>= 3)
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
@@ -25,6 +25,7 @@ Additional_repositories:
https://mc-stan.org/r-packages/
SystemRequirements: CmdStan (https://mc-stan.org/users/interfaces/cmdstan)
Suggests:
+ dplyr,
ggplot2,
knitr,
lubridate,
diff --git a/NAMESPACE b/NAMESPACE
index 349881e..d7dad8b 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -1,5 +1,6 @@
# Generated by roxygen2: do not edit by hand
+export(add_exposure_data)
export(biokinetics)
export(biokinetics_priors)
export(convert_log_scale_inverse)
diff --git a/R/biokinetics.R b/R/biokinetics.R
index 96f85bf..8dba2d2 100644
--- a/R/biokinetics.R
+++ b/R/biokinetics.R
@@ -12,13 +12,13 @@ biokinetics <- R6::R6Class(
preds_sd = NULL,
data = NULL,
covariate_formula = NULL,
- time_type = NULL,
fitted = NULL,
stan_input_data = NULL,
model = NULL,
all_formula_vars = NULL,
design_matrix = NULL,
covariate_lookup_table = NULL,
+ pid_lookup = NULL,
check_fitted = function() {
if (is.null(private$fitted)) {
stop("Model has not been fitted yet. Call 'fit' before calling this function.")
@@ -71,19 +71,26 @@ biokinetics <- R6::R6Class(
private$design_matrix,
private$all_formula_vars)
},
+ build_pid_lookup = function() {
+ private$pid_lookup <- build_pid_lookup(private$data)
+ },
recover_covariate_names = function(dt) {
# Declare variables to suppress notes when compiling package
# https://github.com/Rdatatable/data.table/issues/850#issuecomment-259466153
titre_type <- NULL
+ titre_types <- as.factor(unique(private$data$titre_type))
+
dt_titre_lookup <- data.table(
- k = 1:private$data[, length(unique(titre_type))],
- titre_type = private$data[, unique(titre_type)])
+ k = as.numeric(titre_types),
+ titre_type = levels(titre_types)
+ )
dt_out <- dt[dt_titre_lookup, on = "k"][, `:=`(k = NULL)]
if ("p" %in% colnames(dt)) {
dt_out <- dt_out[private$covariate_lookup_table, on = "p", nomatch = NULL][, `:=`(p = NULL)]
}
+ data.table::setnames(dt_out, "t", "time_since_last_exp", skip_absent=TRUE)
dt_out
},
summarise_pop_fit = function(time_range,
@@ -155,11 +162,11 @@ biokinetics <- R6::R6Class(
dt_out
},
prepare_stan_data = function() {
- pid <- value <- censored <- titre_type_num <- titre_type <- obs_id <- t_since_last_exp <- t_since_min_date <- NULL
+ pid <- value <- censored <- titre_type_num <- titre_type <- obs_id <- t_since_last_exp <- NULL
stan_data <- list(
N = private$data[, .N],
N_events = private$data[, data.table::uniqueN(pid)],
- id = private$data[, pid],
+ id = private$data[, private$pid_lookup[pid]],
value = private$data[, value],
censored = private$data[, censored],
titre_type = private$data[, titre_type_num],
@@ -172,12 +179,7 @@ biokinetics <- R6::R6Class(
cens_lo_idx = private$data[censored == -2, obs_id],
cens_hi_idx = private$data[censored == 1, obs_id])
- if (private$time_type == "relative") {
- stan_data$t <- private$data[, t_since_last_exp]
- } else {
- stan_data$t <- private$data[, t_since_min_date]
- }
-
+ stan_data$t <- private$data[, t_since_last_exp]
stan_data$X <- private$design_matrix
stan_data$P <- ncol(private$design_matrix)
@@ -217,19 +219,15 @@ biokinetics <- R6::R6Class(
#' @param covariate_formula Formula specifying linear regression model. Note all variables in the formula
#' will be treated as categorical variables. Default ~0.
#' @param preds_sd Standard deviation of predictor coefficients. Default 0.25.
- #' @param time_type One of 'relative' or 'absolute'. Default 'relative'.
initialize = function(priors = biokinetics_priors(),
data = NULL,
file_path = NULL,
covariate_formula = ~0,
- preds_sd = 0.25,
- time_type = "relative") {
+ preds_sd = 0.25) {
validate_priors(priors)
private$priors <- priors
validate_numeric(preds_sd)
private$preds_sd <- preds_sd
- validate_time_type(time_type)
- private$time_type <- time_type
validate_formula(covariate_formula)
private$covariate_formula <- covariate_formula
private$all_formula_vars <- all.vars(covariate_formula)
@@ -252,14 +250,14 @@ biokinetics <- R6::R6Class(
logger::log_info("Preparing data for stan")
private$data <- convert_log_scale(private$data, "value")
private$data[, `:=`(titre_type_num = as.numeric(as.factor(titre_type)),
- obs_id = seq_len(.N))]
- if (time_type == "relative") {
- private$data[, t_since_last_exp := as.integer(date - last_exp_date, units = "days")]
- } else {
- private$data[, t_since_min_date := as.integer(date - min(date), units = "days")]
+ obs_id = seq_len(.N),
+ t_since_last_exp = as.integer(day - last_exp_day, units = "days"))]
+ if (!("censored" %in% colnames(private$data))) {
+ private$data$censored <- 0
}
private$construct_design_matrix()
private$build_covariate_lookup_table()
+ private$build_pid_lookup()
private$prepare_stan_data()
logger::log_info("Retrieving compiled model")
private$model <- instantiate::stan_package_model(
@@ -338,8 +336,15 @@ biokinetics <- R6::R6Class(
logger::log_info("Extracting parameters")
dt_out <- private$extract_parameters(params, n_draws)
- data.table::setcolorder(dt_out, c("n", "k", ".draw"))
- data.table::setnames(dt_out, c("n", ".draw"), c("pid", "draw"))
+ data.table::setnames(dt_out, ".draw", "draw")
+
+ dt_out[, pid := names(private$pid_lookup)[n]]
+ if (is.numeric(private$data$pid)) {
+ dt_out[, pid := as.numeric(pid)]
+ }
+ dt_out$n <- NULL
+
+ data.table::setcolorder(dt_out, c("pid", "k", "draw"))
if (human_readable_covariates) {
logger::log_info("Recovering covariate names")
@@ -348,24 +353,21 @@ biokinetics <- R6::R6Class(
dt_out
},
#' @description Process the model results into a data table of titre values over time.
- #' @return A data.table containing titre values at time points. If summarise = TRUE, columns are t, me, lo, hi,
- #' titre_type, and a column for each covariate in the hierarchical model. If summarise = FALSE, columns are t, .draw
- #' t0_pop, tp_pop, ts_pop, m1_pop, m2_pop, m3_pop, beta_t0, beta_tp, beta_ts, beta_m1, beta_m2, beta_m3, mu
+ #' @return A data.table containing titre values at time points. If summarise = TRUE, columns are time_since_last_exp,
+ #' me, lo, hi, titre_type, and a column for each covariate in the hierarchical model. If summarise = FALSE, columns are
+ #' time_since_last_exp, .draw, t0_pop, tp_pop, ts_pop, m1_pop, m2_pop, m3_pop, beta_t0, beta_tp, beta_ts, beta_m1, beta_m2, beta_m3, mu
#' titre_type and a column for each covariate in the hierarchical model. See the data vignette for details:
#' \code{vignette("data", package = "epikinetics")}
- #' @param time_type One of 'relative' or 'absolute'. Default 'relative'.
#' @param t_max Integer. Maximum number of time points to include.
#' @param summarise Boolean. Default TRUE. If TRUE, summarises over draws from posterior parameter distributions to
#' return 0.025, 0.5 and 0.975 quantiles, labelled lo, me and hi, respectively. If FALSE returns values for individual
#' draws from posterior parameter distributions.
#' @param n_draws Integer. Maximum number of samples to include. Default 2500.
simulate_population_trajectories = function(
- time_type = "relative",
t_max = 150,
summarise = TRUE,
n_draws = 2500) {
private$check_fitted()
- validate_time_type(time_type)
validate_numeric(t_max)
validate_logical(summarise)
validate_numeric(n_draws)
@@ -378,12 +380,6 @@ biokinetics <- R6::R6Class(
dt_out <- private$recover_covariate_names(dt_sum)
- if (time_type == "absolute") {
- logger::log_info("Converting to absolute time")
- dt_out[, date := private$data[, unique(min(date))] + t,
- by = c(private$all_formula_vars, "titre_type")]
- }
-
dt_out <- dt_out[
, lapply(.SD, function(x) if (is.factor(x)) forcats::fct_drop(x) else x)]
@@ -445,14 +441,14 @@ biokinetics <- R6::R6Class(
#' @description Simulate individual trajectories from the model. This is
#' computationally expensive and may take a while to run if n_draws is large.
#' @return A data.table. If summarise = TRUE columns are calendar_date, titre_type, me, lo, hi, time_shift.
- #' If summarise = FALSE, columns are pid, draw, t, mu, titre_type, exposure_date, calendar_date, time_shift
- #' and a column for each covariate in the hierarchical model. See the data vignette for details:
+ #' If summarise = FALSE, columns are pid, draw, time_since_last_exp, mu, titre_type, exposure_day, calendar_day, time_shift
+ #' and a column for each covariate in the regression model. See the data vignette for details:
#' \code{vignette("data", package = "epikinetics")}.
#' @param summarise Boolean. If TRUE, average the individual trajectories to get lo, me and
#' hi values for the population, disaggregated by titre type. If FALSE return the indidivudal trajectories.
#' Default TRUE.
#' @param n_draws Integer. Maximum number of samples to draw. Default 2500.
- #' @param time_shift Integer. Number of days to adjust the exposure date by. Default 0.
+ #' @param time_shift Integer. Number of days to adjust the exposure day by. Default 0.
simulate_individual_trajectories = function(
summarise = TRUE,
n_draws = 2500,
@@ -470,52 +466,59 @@ biokinetics <- R6::R6Class(
# Calculating the maximum time each individual has data for after the
# exposure of interest
dt_max_dates <- private$data[
- , .(t_max = max(t_since_last_exp)), by = .(pid)]
+ , .(t_max = max(t_since_last_exp)), by = "pid"]
# A very small number of individuals have bleeds on the same day or a few days
# after their recorded exposure dates, resulting in very short trajectories.
# Adding a 50 day buffer to any individuals with less than or equal to 50 days
# of observations after their focal exposure
- dt_max_dates <- dt_max_dates[t_max <= 50, t_max := 50, by = .(pid)]
+ dt_max_dates <- dt_max_dates[t_max <= 50, t_max := 50, by = "pid"]
# Merging the parameter draws with the maximum time data.table
dt_params_ind <- merge(dt_params_ind, dt_max_dates, by = "pid")
- dt_params_ind_trim <- dt_params_ind[, .SD[draw %in% 1:n_draws], by = pid]
+ # convert original pid to numeric pid
+ dt_params_ind[, pid := private$pid_lookup[pid]]
# Running the C++ code to simulate trajectories for each parameter sample
# for each individual
logger::log_info("Simulating individual trajectories")
- dt_params_ind_traj <- biokinetics_simulate_trajectories(dt_params_ind_trim)
+ dt_params_ind_traj <- biokinetics_simulate_trajectories(dt_params_ind)
dt_params_ind_traj <- data.table::setDT(convert_log_scale_inverse_cpp(
dt_params_ind_traj, vars_to_transform = "mu"))
+ # convert numeric pid to original pid
+ dt_params_ind_traj[, pid := names(private$pid_lookup)[pid]]
+ if (is.numeric(private$data$pid)) {
+ dt_params_ind_traj[, pid := as.numeric(pid)]
+ }
+
logger::log_info("Recovering covariate names")
dt_params_ind_traj <- private$recover_covariate_names(dt_params_ind_traj)
- logger::log_info(paste("Calculating exposure dates. Adjusting exposures by", time_shift, "days"))
+ logger::log_info(paste("Calculating exposure days. Adjusting exposures by", time_shift, "days"))
dt_lookup <- private$data[, .(
- exposure_date = min(last_exp_date) - time_shift),
+ exposure_day = min(last_exp_day) - time_shift),
by = c(private$all_formula_vars, "pid")]
dt_out <- merge(dt_params_ind_traj, dt_lookup, by = "pid")
dt_out[
- , calendar_date := exposure_date + t,
+ , calendar_day := exposure_day + time_since_last_exp,
by = c(private$all_formula_vars, "pid", "titre_type")]
if (summarise) {
logger::log_info("Resampling")
dt_out <- dt_out[
!is.nan(mu), .(pop_mu_sum = mean(mosaic::resample(mu))),
- by = c("calendar_date", "draw", "titre_type")]
+ by = c("calendar_day", "draw", "titre_type")]
logger::log_info("Summarising into population quantiles")
dt_out <- summarise_draws(
dt_out,
column_name = "pop_mu_sum",
- by = c("calendar_date", "titre_type"))
+ by = c("calendar_day", "titre_type"))
}
dt_out[, time_shift := time_shift]
diff --git a/R/utils.R b/R/utils.R
index 9e911a1..bae23d1 100644
--- a/R/utils.R
+++ b/R/utils.R
@@ -30,6 +30,23 @@ convert_log_scale_inverse <- function(dt_in, vars_to_transform) {
dt_out
}
+#' @title Combine titre data and infection data into biokinetics input format.
+#'
+#' @description The biokinetics class requires a single data table with titre readings
+#' and last exposure times for all individuals. If you have exposure times and titre readings for the same
+#' set of individuals in separate files, this function will combine them into a single data.table.
+#' @return A data.table with all columns required by the biokinetics model.
+#' @param dat_sero data.table containing titre values in the format required by biokinetics. See data vignette: \code{vignette("data", package = "epikinetics")}.
+#' @param dat_inf data.table containing exposure days and person ids corresponding to those in dat_sero. By default the exposure days are expected in a column called 'day'.
+#' @param exposure_column Default 'day'. The name of the column containing exposure days. These can be integers or dates.
+#' @export
+add_exposure_data <- function(dat_sero, dat_inf, exposure_column = 'day') {
+ validate_required_cols(dat_sero, required_cols = c("pid", "day", "titre_type", "value"))
+ validate_required_cols(dat_inf, required_cols = c("pid", exposure_column))
+ dat_inf[, "last_exp_day" := max(get(exposure_column)), by = "pid"]
+ merge(dat_sero, dat_inf[, c("pid", "last_exp_day")], by = "pid", allow.cartesian=TRUE)
+}
+
summarise_draws <- function(dt_in, column_name, by = by) {
# Declare variables to suppress notes when compiling package
# https://github.com/Rdatatable/data.table/issues/850#issuecomment-259466153
@@ -72,3 +89,11 @@ build_covariate_lookup_table <- function(data, design_matrix, all_formula_vars)
dt_out[, p_name := NULL]
dt_out
}
+
+build_pid_lookup <- function(data) {
+ pids <- unique(data$pid)
+ ids <- seq_along(pids)
+ pid_lookup <- ids
+ names(pid_lookup) <- pids
+ pid_lookup
+}
diff --git a/R/validation.R b/R/validation.R
index 6e2a792..9a2abf1 100644
--- a/R/validation.R
+++ b/R/validation.R
@@ -30,8 +30,7 @@ validate_formula_vars <- function(formula_vars, data) {
}
}
-validate_required_cols <- function(dat) {
- required_cols <- c("pid", "date", "last_exp_date", "titre_type", "value", "censored")
+validate_required_cols <- function(dat, required_cols = c("pid", "day", "last_exp_day", "titre_type", "value")) {
missing_cols <- required_cols[!(required_cols %in% colnames(dat))]
if (length(missing_cols) > 0) {
stop(paste("Missing required columns:",
diff --git a/R/zzz.R b/R/zzz.R
index 6677285..f38971a 100644
--- a/R/zzz.R
+++ b/R/zzz.R
@@ -32,7 +32,6 @@
bin_stan <- file.path(libname, pkgname, "bin", "stan")
source_path <- file.path(libname, pkgname, "src", "stan")
fs::dir_copy(path = source_path, new_path = bin_stan, overwrite = TRUE)
- message(fs::dir_ls(bin))
instantiate::stan_package_compile(
models = instantiate::stan_package_model_files(path = bin_stan),
cpp_options = list(stan_threads = TRUE),
diff --git a/README.md b/README.md
index b3cddcd..f16d6ba 100644
--- a/README.md
+++ b/README.md
@@ -75,15 +75,18 @@ a few minutes.
## Testing
-Most tests are run with
+To run all tests locally:
```{r}
devtools::test()
```
+Some tests are skipped on CI to avoid exorbitantly long build times, but this means
+it is important to run all tests locally at least once before merging a pull request.
+
For snapshot testing of stan model outputs, we need the outputs to be exactly
reproducible. As well as setting a seed, this requires the machine environment
-to be exactly the same, so we run these inside a Docker container, via a bash script:
+to be exactly the same, so on CI we run these inside a Docker container, via a bash script:
```{shell}
./tests/snapshots/test-snapshots
@@ -91,6 +94,8 @@ to be exactly the same, so we run these inside a Docker container, via a bash sc
This involves recompiling the model, so takes a while to run.
+Note that
+
## Docker
To build a Docker image, run `docker/build`.
To push a new image to Dockerhub, `docker/push`. An image is built and pushed
diff --git a/inst/ba2_full.rds b/inst/ba2_full.rds
index 6937cfd..0cc420b 100644
--- a/inst/ba2_full.rds
+++ b/inst/ba2_full.rds
@@ -1,4 +1,4 @@
-pid,date,last_exp_date,titre_type,value,censored,infection_history,last_vax_type,exp_num
+pid,day,last_exp_day,titre_type,value,censored,infection_history,last_vax_type,exp_num
1,2022-01-31,2021-12-26,Delta,2560,1,Infection naive,BNT162b2,5
1,2022-01-31,2021-12-26,BA.1,1841.32228,0,Infection naive,BNT162b2,5
1,2022-01-31,2021-12-26,BA.2,786.8526775,0,Infection naive,BNT162b2,5
diff --git a/inst/delta_full.rds b/inst/delta_full.rds
index f5f7f30..97a6b1a 100644
--- a/inst/delta_full.rds
+++ b/inst/delta_full.rds
@@ -1,4 +1,4 @@
-pid,date,last_exp_date,titre_type,value,censored,infection_history,last_vax_type,exp_num
+pid,day,last_exp_day,titre_type,value,censored,infection_history,last_vax_type,exp_num
1,2021-03-10,2021-03-08,Ancestral,175.9349878,0,Infection naive,BNT162b2,2
1,2021-04-15,2021-03-08,Ancestral,607.57499,0,Infection naive,BNT162b2,2
1,2021-07-08,2021-03-08,Ancestral,179.0462942,0,Infection naive,BNT162b2,2
diff --git a/inst/xbb_full.rds b/inst/xbb_full.rds
index 188d6bb..c6c0fc3 100644
--- a/inst/xbb_full.rds
+++ b/inst/xbb_full.rds
@@ -1,4 +1,4 @@
-pid,date,last_exp_date,titre_type,value,censored,infection_history,last_vax_type,exp_num
+pid,day,last_exp_day,titre_type,value,censored,infection_history,last_vax_type,exp_num
1,2022-12-07,2022-11-16,BA.5,2560,1,Previously infected (Omicron),BNT162b2+BA1,7
1,2022-12-07,2022-11-16,BQ.1.1,2560,1,Previously infected (Omicron),BNT162b2+BA1,7
1,2022-12-07,2022-11-16,XBB,2560,1,Previously infected (Omicron),BNT162b2+BA1,7
diff --git a/man/add_exposure_data.Rd b/man/add_exposure_data.Rd
new file mode 100644
index 0000000..6c603ef
--- /dev/null
+++ b/man/add_exposure_data.Rd
@@ -0,0 +1,23 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/utils.R
+\name{add_exposure_data}
+\alias{add_exposure_data}
+\title{Combine titre data and infection data into biokinetics input format.}
+\usage{
+add_exposure_data(dat_sero, dat_inf, exposure_column = "day")
+}
+\arguments{
+\item{dat_sero}{data.table containing titre values in the format required by biokinetics. See data vignette: \code{vignette("data", package = "epikinetics")}.}
+
+\item{dat_inf}{data.table containing exposure days and person ids corresponding to those in dat_sero. By default the exposure days are expected in a column called 'day'.}
+
+\item{exposure_column}{Default 'day'. The name of the column containing exposure days. These can be integers or dates.}
+}
+\value{
+A data.table with all columns required by the biokinetics model.
+}
+\description{
+The biokinetics class requires a single data table with titre readings
+and last exposure times for all individuals. If you have exposure times and titre readings for the same
+set of individuals in separate files, this function will combine them into a single data.table.
+}
diff --git a/man/biokinetics.Rd b/man/biokinetics.Rd
index c7d16ed..4a1c7a3 100644
--- a/man/biokinetics.Rd
+++ b/man/biokinetics.Rd
@@ -31,8 +31,7 @@ Initialise the kinetics model.
data = NULL,
file_path = NULL,
covariate_formula = ~0,
- preds_sd = 0.25,
- time_type = "relative"
+ preds_sd = 0.25
)}\if{html}{\out{}}
}
@@ -50,8 +49,6 @@ for required columns: \code{vignette("data", package = "epikinetics")}.}
will be treated as categorical variables. Default ~0.}
\item{\code{preds_sd}}{Standard deviation of predictor coefficients. Default 0.25.}
-
-\item{\code{time_type}}{One of 'relative' or 'absolute'. Default 'relative'.}
}
\if{html}{\out{}}
}
@@ -153,7 +150,6 @@ A data.table
Process the model results into a data table of titre values over time.
\subsection{Usage}{
\if{html}{\out{
}}\preformatted{biokinetics$simulate_population_trajectories(
- time_type = "relative",
t_max = 150,
summarise = TRUE,
n_draws = 2500
@@ -163,8 +159,6 @@ Process the model results into a data table of titre values over time.
\subsection{Arguments}{
\if{html}{\out{
}}
\describe{
-\item{\code{time_type}}{One of 'relative' or 'absolute'. Default 'relative'.}
-
\item{\code{t_max}}{Integer. Maximum number of time points to include.}
\item{\code{summarise}}{Boolean. Default TRUE. If TRUE, summarises over draws from posterior parameter distributions to
@@ -176,9 +170,9 @@ draws from posterior parameter distributions.}
\if{html}{\out{
}}
}
\subsection{Returns}{
-A data.table containing titre values at time points. If summarise = TRUE, columns are t, me, lo, hi,
-titre_type, and a column for each covariate in the hierarchical model. If summarise = FALSE, columns are t, .draw
-t0_pop, tp_pop, ts_pop, m1_pop, m2_pop, m3_pop, beta_t0, beta_tp, beta_ts, beta_m1, beta_m2, beta_m3, mu
+A data.table containing titre values at time points. If summarise = TRUE, columns are time_since_last_exp,
+me, lo, hi, titre_type, and a column for each covariate in the hierarchical model. If summarise = FALSE, columns are
+time_since_last_exp, .draw, t0_pop, tp_pop, ts_pop, m1_pop, m2_pop, m3_pop, beta_t0, beta_tp, beta_ts, beta_m1, beta_m2, beta_m3, mu
titre_type and a column for each covariate in the hierarchical model. See the data vignette for details:
\code{vignette("data", package = "epikinetics")}
}
@@ -228,14 +222,14 @@ Default TRUE.}
\item{\code{n_draws}}{Integer. Maximum number of samples to draw. Default 2500.}
-\item{\code{time_shift}}{Integer. Number of days to adjust the exposure date by. Default 0.}
+\item{\code{time_shift}}{Integer. Number of days to adjust the exposure day by. Default 0.}
}
\if{html}{\out{
}}
}
\subsection{Returns}{
A data.table. If summarise = TRUE columns are calendar_date, titre_type, me, lo, hi, time_shift.
-If summarise = FALSE, columns are pid, draw, t, mu, titre_type, exposure_date, calendar_date, time_shift
-and a column for each covariate in the hierarchical model. See the data vignette for details:
+If summarise = FALSE, columns are pid, draw, time_since_last_exp, mu, titre_type, exposure_day, calendar_day, time_shift
+and a column for each covariate in the regression model. See the data vignette for details:
\code{vignette("data", package = "epikinetics")}.
}
}
diff --git a/man/epikinetics-package.Rd b/man/epikinetics-package.Rd
index fad62b2..77153e1 100644
--- a/man/epikinetics-package.Rd
+++ b/man/epikinetics-package.Rd
@@ -4,12 +4,12 @@
\name{epikinetics-package}
\alias{epikinetics}
\alias{epikinetics-package}
-\title{epikinetics: Antibody and Cycle Threshold Kinetics Modelling}
+\title{epikinetics: Biomarker Kinetics Modelling}
\description{
-What the package does (one paragraph).
+Fit kinetic curves to biomarker data, using a Bayesian hierarchical model
}
\author{
-\strong{Maintainer}: Alex Hill \email{alex.hill@gmail.com} [contributor]
+\strong{Maintainer}: Alex Hill \email{alex.hill@gmail.com}
Authors:
\itemize{
diff --git a/snapshot-tests.Dockerfile b/snapshot-tests.Dockerfile
index 8064fe0..7eaa348 100644
--- a/snapshot-tests.Dockerfile
+++ b/snapshot-tests.Dockerfile
@@ -11,6 +11,4 @@ COPY DESCRIPTION /epikinetics
RUN Rscript -e "devtools::install_deps()"
RUN Rscript -e "install.packages('decor')"
-COPY . /epikinetics
-COPY tests/snapshots/test-snapshots.R /epikinetics/tests/testthat
-COPY tests/snapshots/_snaps /epikinetics/tests/testhat
\ No newline at end of file
+COPY . /epikinetics
\ No newline at end of file
diff --git a/tests/snapshots/_snaps/snapshots.md b/tests/snapshots/_snaps/snapshots.md
deleted file mode 100644
index 9795fd6..0000000
--- a/tests/snapshots/_snaps/snapshots.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# Model fits are the same
-
- Code
- delta
- Output
- variable mean median sd mad q5 q95 rhat ess_bulk
- lp__ -1184.11 -1178.54 58.33 56.66 -1277.41 -1101.09 1.09 35
- t0_pop[1] 4.11 4.11 0.27 0.30 3.69 4.56 1.03 155
- t0_pop[2] 4.77 4.77 0.26 0.26 4.33 5.17 1.04 72
- t0_pop[3] 3.50 3.49 0.29 0.30 3.04 3.97 1.01 324
- tp_pop[1] 9.51 9.53 0.70 0.73 8.27 10.57 1.07 40
- tp_pop[2] 10.74 10.74 0.64 0.64 9.71 11.78 1.08 37
- tp_pop[3] 8.84 8.84 0.84 0.88 7.47 10.14 1.08 40
- ts_pop_delta[1] 52.74 52.69 2.75 2.71 48.15 57.29 1.00 494
- ts_pop_delta[2] 61.67 61.58 2.82 2.95 56.79 66.53 1.01 142
- ts_pop_delta[3] 49.86 49.73 2.65 2.68 45.61 54.34 1.01 355
- ess_tail
- 103
- 289
- 220
- 412
- 340
- 307
- 227
- 416
- 370
- 348
-
- # showing 10 of 10103 rows (change via 'max_rows' argument or 'cmdstanr_max_rows' option)
-
-# Population trajectories are the same
-
- Code
- trajectories
- Output
- t me lo hi titre_type
-
- 1: 0 76.25839 56.51254 102.5247 Ancestral
- 2: 1 94.45253 72.00175 121.8491 Ancestral
- 3: 2 116.75048 90.41975 144.7452 Ancestral
- 4: 3 144.43023 113.33132 180.0799 Ancestral
- 5: 4 178.01885 141.05339 224.6319 Ancestral
- ---
- 902: 146 163.39995 128.89520 201.2052 Delta
- 903: 147 162.78005 128.23676 200.4452 Delta
- 904: 148 162.15565 127.58168 199.7415 Delta
- 905: 149 161.54259 126.92995 199.2712 Delta
- 906: 150 160.95822 126.28154 198.8112 Delta
- infection_history
-
- 1: Infection naive
- 2: Infection naive
- 3: Infection naive
- 4: Infection naive
- 5: Infection naive
- ---
- 902: Previously infected (Pre-Omicron)
- 903: Previously infected (Pre-Omicron)
- 904: Previously infected (Pre-Omicron)
- 905: Previously infected (Pre-Omicron)
- 906: Previously infected (Pre-Omicron)
-
-# Individual trajectories are the same
-
- Code
- trajectories
- Output
- calendar_date titre_type me lo hi time_shift
-
- 1: 2021-03-08 Ancestral 543.79451 433.09823 670.4975 0
- 2: 2021-03-09 Ancestral 528.88463 429.80874 653.8752 0
- 3: 2021-03-10 Ancestral 545.26438 444.31407 665.8502 0
- 4: 2021-03-11 Ancestral 522.29561 418.67869 631.7992 0
- 5: 2021-03-12 Ancestral 531.74586 423.99750 648.3266 0
- ---
- 1775: 2022-08-07 Delta 91.77050 31.07070 429.5746 0
- 1776: 2022-08-08 Delta 91.18062 31.07408 424.9366 0
- 1777: 2022-08-09 Delta 94.16216 31.29551 426.2925 0
- 1778: 2022-08-10 Delta 90.74115 30.39902 426.8355 0
- 1779: 2022-08-11 Delta 92.97980 28.91787 438.0270 0
-
diff --git a/tests/testthat/_snaps/snapshots.md b/tests/testthat/_snaps/snapshots.md
new file mode 100644
index 0000000..ce37820
--- /dev/null
+++ b/tests/testthat/_snaps/snapshots.md
@@ -0,0 +1,81 @@
+# Model fits are the same
+
+ Code
+ delta
+ Output
+ variable mean median sd mad q5 q95 rhat ess_bulk
+ lp__ -1174.70 -1176.14 50.78 53.93 -1251.74 -1090.28 1.08 34
+ t0_pop[1] 4.13 4.13 0.28 0.27 3.66 4.55 1.02 201
+ t0_pop[2] 4.80 4.83 0.26 0.27 4.37 5.22 1.02 173
+ t0_pop[3] 3.52 3.51 0.28 0.27 3.09 3.99 1.02 189
+ tp_pop[1] 9.52 9.53 0.65 0.66 8.54 10.56 1.01 200
+ tp_pop[2] 10.72 10.74 0.63 0.59 9.68 11.70 1.02 215
+ tp_pop[3] 8.91 8.91 0.73 0.75 7.71 10.11 1.00 253
+ ts_pop_delta[1] 52.70 52.57 2.56 2.32 48.91 57.15 1.00 349
+ ts_pop_delta[2] 61.50 61.35 2.65 2.72 57.32 65.69 1.00 327
+ ts_pop_delta[3] 50.15 50.21 2.61 2.66 45.77 54.31 1.00 329
+ ess_tail
+ 111
+ 340
+ 301
+ 264
+ 247
+ 199
+ 368
+ 403
+ 360
+ 331
+
+ # showing 10 of 10103 rows (change via 'max_rows' argument or 'cmdstanr_max_rows' option)
+
+# Population trajectories are the same
+
+ Code
+ trajectories
+ Output
+ time_since_last_exp me lo hi titre_type
+
+ 1: 0 121.1892 94.45425 154.0367 Alpha
+ 2: 1 150.7446 121.39549 186.0631 Alpha
+ 3: 2 188.0531 155.65597 228.6746 Alpha
+ 4: 3 233.8627 196.06447 281.9184 Alpha
+ 5: 4 291.1750 244.87488 347.7999 Alpha
+ ---
+ 902: 146 162.4485 128.80162 200.2273 Delta
+ 903: 147 161.7977 128.30153 199.5112 Delta
+ 904: 148 161.1543 127.80338 198.8686 Delta
+ 905: 149 160.6696 127.30716 198.2282 Delta
+ 906: 150 159.9921 126.81288 197.5898 Delta
+ infection_history
+
+ 1: Infection naive
+ 2: Infection naive
+ 3: Infection naive
+ 4: Infection naive
+ 5: Infection naive
+ ---
+ 902: Previously infected (Pre-Omicron)
+ 903: Previously infected (Pre-Omicron)
+ 904: Previously infected (Pre-Omicron)
+ 905: Previously infected (Pre-Omicron)
+ 906: Previously infected (Pre-Omicron)
+
+# Individual trajectories are the same
+
+ Code
+ trajectories
+ Output
+ calendar_day titre_type me lo hi time_shift
+
+ 1: 2021-03-08 Alpha 1179.41596 898.59408 1592.5041 0
+ 2: 2021-03-09 Alpha 1158.69205 865.99919 1558.7359 0
+ 3: 2021-03-10 Alpha 1208.48440 953.30901 1520.2822 0
+ 4: 2021-03-11 Alpha 1154.03970 900.55636 1490.7134 0
+ 5: 2021-03-12 Alpha 1166.98651 885.90001 1506.8642 0
+ ---
+ 1775: 2022-08-07 Delta 82.89897 31.27422 308.8199 0
+ 1776: 2022-08-08 Delta 84.04324 30.86336 312.8336 0
+ 1777: 2022-08-09 Delta 84.28422 30.20377 319.3140 0
+ 1778: 2022-08-10 Delta 86.52412 29.56398 320.8826 0
+ 1779: 2022-08-11 Delta 86.69664 31.20098 317.9618 0
+
diff --git a/tests/testthat/test-combine-data.R b/tests/testthat/test-combine-data.R
new file mode 100644
index 0000000..3f840fa
--- /dev/null
+++ b/tests/testthat/test-combine-data.R
@@ -0,0 +1,31 @@
+test_that("Can combine sero and infection data", {
+ dat_sero <- data.table::fread(test_path("testdata/test_sero.csv"))
+ dat_inf <- data.table::fread(test_path("testdata/test_inf.csv"))
+
+ res <- add_exposure_data(dat_sero, dat_inf)
+ expect_equal(names(res), c("pid", "day", "titre_type", "value", "Age", "last_exp_day"))
+ expect_true(all(res[pid == "01-A", "last_exp_day"] == 117))
+ expect_true(all(res[pid == "02-B", "last_exp_day"] == 27))
+})
+
+test_that("Can add exposure data with different day column", {
+ dat_sero <- data.table::fread(test_path("testdata/test_sero.csv"))
+ dat_inf <- data.table::fread(test_path("testdata/test_inf.csv"))
+ data.table::setnames(dat_inf, "day", "exposure_day")
+
+ res <- add_exposure_data(dat_sero, dat_inf, exposure_column = "exposure_day")
+ expect_equal(names(res), c("pid", "day", "titre_type", "value", "Age", "last_exp_day"))
+ expect_true(all(res[pid == "01-A", "last_exp_day"] == 117))
+ expect_true(all(res[pid == "02-B", "last_exp_day"] == 27))
+})
+
+test_that("Required columns are validated", {
+ dat_sero <- data.table::fread(test_path("testdata/test_sero.csv"))
+ dat_inf <- data.table::fread(test_path("testdata/test_inf.csv"))
+
+ expect_error(add_exposure_data(data.frame(bad = 1:10), dat_inf),
+ "Missing required columns: pid, day, titre_type, value")
+
+ expect_error(add_exposure_data(dat_sero, data.frame(bad = 1:10)),
+ "Missing required columns: pid, day")
+})
diff --git a/tests/testthat/test-data.R b/tests/testthat/test-data.R
index 1824374..02b4611 100644
--- a/tests/testthat/test-data.R
+++ b/tests/testthat/test-data.R
@@ -1,24 +1,3 @@
-mock_model <- function(name, package) {
- list(sample = function(stan_dt, ...) stan_dt)
-}
-
-local_mocked_bindings(
- stan_package_model = mock_model, .package = "instantiate"
-)
-
-test_that("Can construct stan data", {
- dt <- data.table::fread(system.file("delta_full.rds", package = "epikinetics"))
- mod <- biokinetics$new(data = dt,
- priors = biokinetics_priors(),
- covariate_formula = ~0 + infection_history,
- preds_sd = 0.25,
- time_type = "relative")
- # the fit function has been mocked above to return the stan inputs
- stan_dt <- mod$fit()
- expect_equal(stan_dt$N_events, 335)
- expect_equal(unlist(stan_dt$id), unname(unlist(dt[, "pid"])))
-})
-
test_that("Can initialise file path data", {
expect_true(inherits(biokinetics$new(file_path = system.file("delta_full.rds", package = "epikinetics"),
priors = biokinetics_priors()), "biokinetics"))
@@ -30,7 +9,7 @@ test_that("Can provide data directly", {
priors = biokinetics_priors()), "biokinetics"))
})
-test_that("Can get stan data", {
+test_that("Can construct stan data", {
dat <- data.table::fread(system.file("delta_full.rds", package = "epikinetics"))
priors <- biokinetics_priors(mu_values = c(1, 2, 3, 4, 5, 6),
sigma_values = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6))
@@ -44,7 +23,27 @@ test_that("Can get stan data", {
"mu_tp", "mu_ts", "mu_m1", "mu_m2", "mu_m3",
"sigma_t0", "sigma_tp", "sigma_ts", "sigma_m1", "sigma_m2",
"sigma_m3"))
+ expect_equal(stan_data$N_events, 335)
expect_equal(stan_data$mu_t0, priors$mu_t0)
expect_equal(stan_data$sigma_t0, priors$sigma_t0)
- expect_equal(stan_data$id, dat$pid)
+ expect_equivalent(stan_data$id, dat$pid)
+})
+
+test_that("All data is assumed uncensored if no censored column provided", {
+ dat <- data.table::fread(system.file("delta_full.rds", package = "epikinetics"))
+ dat$censored <- NULL
+ mod <- biokinetics$new(data = dat)
+ stan_data <- mod$get_stan_data()
+ expect_equal(stan_data$uncens_idx, 1:nrow(dat))
+ expect_equal(stan_data$cens_lo_idx, integer())
+ expect_equal(stan_data$cens_hi_idx, integer())
+})
+
+test_that("Can handle non-numeric pids", {
+ dat <- data.table::fread(system.file("delta_full.rds", package = "epikinetics"))
+ ids <- dat$pid
+ dat$pid <- paste0("ID-", dat$pid)
+ mod <- biokinetics$new(data = dat)
+ stan_data <- mod$get_stan_data()
+ expect_equivalent(stan_data$id, ids)
})
diff --git a/tests/testthat/test-input-validation.R b/tests/testthat/test-input-validation.R
index 78c8dde..3b54dbd 100644
--- a/tests/testthat/test-input-validation.R
+++ b/tests/testthat/test-input-validation.R
@@ -17,11 +17,6 @@ test_that("preds_sd must be numeric", {
"'preds_sd' must be numeric")
})
-test_that("Time type must be 'absolute' or 'relative'", {
- expect_error(biokinetics$new(time_type = "bad"),
- "'time_type' must be one of 'relative' or 'absolute'")
-})
-
test_that("Covariate formula must be a formula", {
dat <- data.table(test = 1)
expect_error(biokinetics$new(data = dat, covariate_formula = "bad"),
@@ -36,7 +31,7 @@ test_that("Covariates must be present in data", {
test_that("Required columns must be present in data", {
dat <- data.table(test = 1)
expect_error(biokinetics$new(data = dat, covariate_formula = 0~ bad),
- "Missing required columns: pid, date, last_exp_date, titre_type, value, censored")
+ "Missing required columns: pid, day, last_exp_day, titre_type, value")
})
test_that("Data must be a data.table", {
diff --git a/tests/testthat/test-non-numeric-pids.R b/tests/testthat/test-non-numeric-pids.R
new file mode 100644
index 0000000..d936f16
--- /dev/null
+++ b/tests/testthat/test-non-numeric-pids.R
@@ -0,0 +1,70 @@
+test_that("Can convert character pids to numeric ids and back again", {
+ dat <- data.table::fread(system.file("delta_full.rds", package = "epikinetics"))
+
+ dat$pid <- paste0("ID", dat$pid)
+ lookup <- build_pid_lookup(dat)
+
+ pids <- dat$pid
+ dat[, nid := lookup[pid]]
+ dat[, recovered := names(lookup)[nid]]
+
+ expect_equal(dat$recovered, dat$pid)
+})
+
+test_that("Can convert numeric pids to numeric ids and back again", {
+ dat <- data.table::fread(system.file("delta_full.rds", package = "epikinetics"))
+
+ lookup <- build_pid_lookup(dat)
+
+ pids <- dat$pid
+ dat[, nid := lookup[pid]]
+ dat[, recovered := as.numeric(names(lookup)[nid])]
+
+ expect_equal(dat$recovered, dat$pid)
+})
+
+test_that("Using numeric and non-numeric pids gives the same answer", {
+ # these take a while, so don't run on CI
+ skip_on_ci()
+ dat <- data.table::fread(system.file("delta_full.rds", package = "epikinetics"))
+ mod <- biokinetics$new(data = dat, covariate_formula = ~0 + infection_history)
+ stan_data <- mod$get_stan_data()
+
+ dat$pid <- paste0("ID", dat$pid)
+ mod_new <- biokinetics$new(data = dat, covariate_formula = ~0 + infection_history)
+ stan_data_new <- mod_new$get_stan_data()
+
+ expect_equivalent(stan_data, stan_data_new)
+
+ fit <- mod$fit(parallel_chains = 4,
+ iter_warmup = 50,
+ iter_sampling = 100,
+ seed = 100)
+
+ fit_new <- mod_new$fit(parallel_chains = 4,
+ iter_warmup = 50,
+ iter_sampling = 100,
+ seed = 100)
+
+ expect_equivalent(fit$draws(), fit_new$draws())
+
+ set.seed(1)
+ params <- mod$extract_individual_parameters(100)
+
+ set.seed(1)
+ params_new <- mod_new$extract_individual_parameters(100)
+
+ params$pid <- paste0("ID", params$pid)
+ expect_equivalent(params, params_new)
+
+ set.seed(1)
+ trajectories <- mod$simulate_individual_trajectories(summarise = FALSE,
+ n_draws = 100)
+
+ set.seed(1)
+ trajectories_new <- mod_new$simulate_individual_trajectories(summarise = FALSE,
+ n_draws = 100)
+ trajectories$pid <- paste0("ID", trajectories$pid)
+ trajectories <- dplyr::arrange(trajectories, pid)
+ expect_equivalent(trajectories, trajectories_new)
+})
diff --git a/tests/testthat/test-relative-dates.R b/tests/testthat/test-relative-dates.R
new file mode 100644
index 0000000..28316cb
--- /dev/null
+++ b/tests/testthat/test-relative-dates.R
@@ -0,0 +1,34 @@
+test_that("Using relative and absolute dates gives the same answer", {
+ # these take a while, so don't run on CI
+ skip_on_ci()
+ dat_absolute <- data.table::fread(system.file("delta_full.rds", package = "epikinetics"))
+ mod_absolute <- biokinetics$new(data = dat_absolute, covariate_formula = ~0 + infection_history)
+ delta_absolute <- mod_absolute$fit(parallel_chains = 4,
+ iter_warmup = 50,
+ iter_sampling = 100,
+ seed = 100)
+
+ set.seed(1)
+ trajectories_absolute <- mod_absolute$simulate_individual_trajectories()
+
+ dat_relative <- data.table::fread(test_path("testdata", "delta_full_relative.rds"))
+ mod_relative <- biokinetics$new(data = dat_relative, covariate_formula = ~0 + infection_history)
+ delta_relative <- mod_relative$fit(parallel_chains = 4,
+ iter_warmup = 50,
+ iter_sampling = 100,
+ seed = 100)
+
+ set.seed(1)
+ trajectories_relative <- mod_relative$simulate_individual_trajectories()
+
+ # convert relative days to absolute
+ min_date <- min(dat_absolute$day)
+ trajectories_relative$calendar_day <- min_date + trajectories_relative$calendar_day
+
+ expect_equal(trajectories_relative, trajectories_absolute)
+
+ population_trajectories_absolute <- mod_absolute$simulate_population_trajectories()
+ population_trajectories_relative <- mod_relative$simulate_population_trajectories()
+
+ expect_equal(population_trajectories_absolute, population_trajectories_relative)
+})
diff --git a/tests/testthat/test-run-model.R b/tests/testthat/test-run-model.R
index ef65b68..d102c63 100644
--- a/tests/testthat/test-run-model.R
+++ b/tests/testthat/test-run-model.R
@@ -45,15 +45,15 @@ test_that("Can process model fits with no covariates", {
threads_per_chain = 4)
pt <- mod$simulate_population_trajectories(n_draws = 100, summarise = FALSE)
- expect_equal(names(pt), c("t", ".draw", "t0_pop", "tp_pop", "ts_pop", "m1_pop", "m2_pop",
+ expect_equal(names(pt), c("time_since_last_exp", ".draw", "t0_pop", "tp_pop", "ts_pop", "m1_pop", "m2_pop",
"m3_pop", "mu", "titre_type"))
pt <- mod$simulate_population_trajectories(n_draws = 100, summarise = TRUE)
- expect_equal(names(pt), c("t", "me", "lo", "hi", "titre_type"))
+ expect_equal(names(pt), c("time_since_last_exp", "me", "lo", "hi", "titre_type"))
it <- mod$simulate_individual_trajectories(n_draws = 100, summarise = FALSE)
- expect_equal(names(it), c("pid", "draw", "t", "mu", "titre_type",
- "exposure_date", "calendar_date", "time_shift"))
+ expect_equal(names(it), c("pid", "draw", "time_since_last_exp", "mu", "titre_type",
+ "exposure_day", "calendar_day", "time_shift"))
# it <- mod$simulate_individual_trajectories(n_draws = 100, summarise = TRUE)
# expect_equal(names(it), c("calendar_date", "titre_type", "me", "lo", "hi", "time_shift"))
@@ -76,10 +76,10 @@ test_that("Can process model fits with multiple covariates", {
threads_per_chain = 4)
pt <- mod$simulate_population_trajectories(n_draws = 100)
- expect_equal(names(pt), c("t", "me", "lo", "hi", "titre_type", "infection_history", "last_vax_type"))
+ expect_equal(names(pt), c("time_since_last_exp", "me", "lo", "hi", "titre_type", "infection_history", "last_vax_type"))
it <- mod$simulate_individual_trajectories(n_draws = 100)
- expect_equal(names(it), c("calendar_date", "titre_type", "me", "lo", "hi", "time_shift"))
+ expect_equal(names(it), c("calendar_day", "titre_type", "me", "lo", "hi", "time_shift"))
sp <- mod$population_stationary_points()
expect_equal(names(sp), c("infection_history", "last_vax_type", "titre_type",
diff --git a/tests/testthat/test-simulate-individual-trajectories.R b/tests/testthat/test-simulate-individual-trajectories.R
index 40fa5d8..dec0046 100644
--- a/tests/testthat/test-simulate-individual-trajectories.R
+++ b/tests/testthat/test-simulate-individual-trajectories.R
@@ -52,7 +52,7 @@ test_that("Can retrieve summarised trajectories", {
covariate_formula = ~0 + infection_history)
mod$fit()
trajectories <- mod$simulate_individual_trajectories(summarise = TRUE, n_draws = 10)
- expect_equal(names(trajectories), c("calendar_date", "titre_type", "me", "lo", "hi", "time_shift"))
+ expect_equal(names(trajectories), c("calendar_day", "titre_type", "me", "lo", "hi", "time_shift"))
})
test_that("Can retrieve un-summarised trajectories", {
@@ -60,8 +60,8 @@ test_that("Can retrieve un-summarised trajectories", {
covariate_formula = ~0 + infection_history)
mod$fit()
trajectories <- mod$simulate_individual_trajectories(summarise = FALSE, n_draws = 10)
- expect_equal(names(trajectories), c("pid", "draw", "t", "mu", "titre_type", "infection_history",
- "exposure_date", "calendar_date", "time_shift"))
+ expect_equal(names(trajectories), c("pid", "draw", "time_since_last_exp", "mu", "titre_type", "infection_history",
+ "exposure_day", "calendar_day", "time_shift"))
})
test_that("Only n_draws draws are returned", {
diff --git a/tests/testthat/test-simulate-population-trajectories.R b/tests/testthat/test-simulate-population-trajectories.R
index cc0addb..246d392 100644
--- a/tests/testthat/test-simulate-population-trajectories.R
+++ b/tests/testthat/test-simulate-population-trajectories.R
@@ -17,7 +17,6 @@ test_that("Validates inputs", {
mod$fit()
expect_error(mod$simulate_population_trajectories(summarise = "bad"), "'summarise' must be logical")
expect_error(mod$simulate_population_trajectories(n_draws = "bad"), "'n_draws' must be numeric")
- expect_error(mod$simulate_population_trajectories(time_type = "bad"), "'time_type' must be one of 'relative' or 'absolute'")
expect_error(mod$simulate_population_trajectories(t_max = "bad"), "'t_max' must be numeric")
})
@@ -26,7 +25,7 @@ test_that("Can retrieve summarised trajectories", {
covariate_formula = ~0 + infection_history)
mod$fit()
trajectories <- mod$simulate_population_trajectories(summarise = TRUE)
- expect_equal(names(trajectories), c("t", "me", "lo", "hi", "titre_type", "infection_history"))
+ expect_equal(names(trajectories), c("time_since_last_exp", "me", "lo", "hi", "titre_type", "infection_history"))
})
test_that("Can retrieve un-summarised trajectories", {
@@ -34,20 +33,11 @@ test_that("Can retrieve un-summarised trajectories", {
covariate_formula = ~0 + infection_history)
mod$fit()
trajectories <- mod$simulate_population_trajectories(summarise = FALSE)
- expect_equal(names(trajectories), c("t", ".draw", "t0_pop", "tp_pop", "ts_pop", "m1_pop", "m2_pop",
+ expect_equal(names(trajectories), c("time_since_last_exp", ".draw", "t0_pop", "tp_pop", "ts_pop", "m1_pop", "m2_pop",
"m3_pop", "beta_t0", "beta_tp", "beta_ts", "beta_m1", "beta_m2",
"beta_m3", "mu", "titre_type", "infection_history"))
})
-test_that("Absolute dates are returned if time_type is 'absolute'", {
- mod <- biokinetics$new(file_path = system.file("delta_full.rds", package = "epikinetics"),
- covariate_formula = ~0 + infection_history)
- mod$fit()
- trajectories <- mod$simulate_population_trajectories(summarise = TRUE, time_type = "absolute")
- expect_equal(class(trajectories$date), c("IDate", "Date"))
- expect_equal(trajectories$date, data.table::as.IDate("2021-01-29") + trajectories$t)
-})
-
test_that("Only times up to t_max are returned", {
mod <- biokinetics$new(file_path = system.file("delta_full.rds", package = "epikinetics"),
covariate_formula = ~0 + infection_history)
diff --git a/tests/snapshots/test-snapshots.R b/tests/testthat/test-snapshots.R
similarity index 65%
rename from tests/snapshots/test-snapshots.R
rename to tests/testthat/test-snapshots.R
index 3e8f91f..b618f16 100644
--- a/tests/snapshots/test-snapshots.R
+++ b/tests/testthat/test-snapshots.R
@@ -1,9 +1,12 @@
-instantiate::stan_package_compile(
- models = instantiate::stan_package_model_files(path = "/epikinetics/bin/stan"),
- cpp_options = list(stan_threads = TRUE),
- stanc_options = list("O1"),
- force_recompile = TRUE
-)
+if (fs::dir_exists("/epikinetics/bin/stan")) {
+ # running in Docker, so recompile the models
+ instantiate::stan_package_compile(
+ models = instantiate::stan_package_model_files(path = "/epikinetics/bin/stan"),
+ cpp_options = list(stan_threads = TRUE),
+ stanc_options = list("O1"),
+ force_recompile = TRUE
+ )
+}
dat <- data.table::fread(system.file("delta_full.rds", package = "epikinetics"))
mod <- biokinetics$new(data = dat, covariate_formula = ~0 + infection_history)
delta <- mod$fit(parallel_chains = 4,
@@ -14,16 +17,19 @@ delta <- mod$fit(parallel_chains = 4,
local_edition(3)
test_that("Model fits are the same", {
+ skip_on_ci()
expect_snapshot(delta)
})
test_that("Population trajectories are the same", {
+ skip_on_ci()
set.seed(1)
trajectories <- mod$simulate_population_trajectories()
expect_snapshot(trajectories)
})
test_that("Individual trajectories are the same", {
+ skip_on_ci()
set.seed(1)
trajectories <- mod$simulate_individual_trajectories()
expect_snapshot(trajectories)
diff --git a/tests/testthat/testdata/delta_full_relative.rds b/tests/testthat/testdata/delta_full_relative.rds
new file mode 100644
index 0000000..6d2ad1b
--- /dev/null
+++ b/tests/testthat/testdata/delta_full_relative.rds
@@ -0,0 +1,2256 @@
+pid,day,last_exp_day,titre_type,value,censored,infection_history,last_vax_type,exp_num
+1,40,38,Ancestral,175.9349878,0,Infection naive,BNT162b2,2
+1,76,38,Ancestral,607.57499,0,Infection naive,BNT162b2,2
+1,160,38,Ancestral,179.0462942,0,Infection naive,BNT162b2,2
+1,40,38,Alpha,5,-1,Infection naive,BNT162b2,2
+1,76,38,Alpha,416.790471100001,0,Infection naive,BNT162b2,2
+1,160,38,Alpha,103.5273976,0,Infection naive,BNT162b2,2
+1,40,38,Delta,5,-1,Infection naive,BNT162b2,2
+1,76,38,Delta,288.1785015,0,Infection naive,BNT162b2,2
+1,160,38,Delta,128.8900265,0,Infection naive,BNT162b2,2
+2,25,-18,Ancestral,595.449313599998,0,Infection naive,BNT162b2,2
+2,46,-18,Ancestral,430.528648299999,0,Infection naive,BNT162b2,2
+2,88,-18,Ancestral,198.2081189,0,Infection naive,BNT162b2,2
+2,179,-18,Ancestral,110.3680043,0,Infection naive,BNT162b2,2
+2,25,-18,Alpha,189.0453557,0,Infection naive,BNT162b2,2
+2,46,-18,Alpha,142.9343886,0,Infection naive,BNT162b2,2
+2,88,-18,Alpha,133.8404918,0,Infection naive,BNT162b2,2
+2,179,-18,Alpha,93.9296002800003,0,Infection naive,BNT162b2,2
+2,25,-18,Delta,72.02175288,0,Infection naive,BNT162b2,2
+2,46,-18,Delta,92.7027533499997,0,Infection naive,BNT162b2,2
+2,88,-18,Delta,46.2628491,0,Infection naive,BNT162b2,2
+2,179,-18,Delta,54.55012061,0,Infection naive,BNT162b2,2
+3,87,53,Ancestral,1624.411259,0,Infection naive,BNT162b2,2
+3,171,53,Ancestral,1023.505653,0,Infection naive,BNT162b2,2
+3,87,53,Alpha,1095.926476,0,Infection naive,BNT162b2,2
+3,171,53,Alpha,961.753256300001,0,Infection naive,BNT162b2,2
+3,87,53,Delta,965.977355399999,0,Infection naive,BNT162b2,2
+3,171,53,Delta,643.758814500001,0,Infection naive,BNT162b2,2
+4,47,26,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+4,88,26,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+4,172,26,Ancestral,930.247978699997,0,Previously infected (Pre-Omicron),BNT162b2,3
+4,47,26,Alpha,2294.428243,0,Previously infected (Pre-Omicron),BNT162b2,3
+4,88,26,Alpha,1049.854881,0,Previously infected (Pre-Omicron),BNT162b2,3
+4,172,26,Alpha,933.515125899998,0,Previously infected (Pre-Omicron),BNT162b2,3
+4,47,26,Delta,694.1600408,0,Previously infected (Pre-Omicron),BNT162b2,3
+4,88,26,Delta,452.981126300002,0,Previously infected (Pre-Omicron),BNT162b2,3
+4,172,26,Delta,734.212202300003,0,Previously infected (Pre-Omicron),BNT162b2,3
+5,6,-18,Ancestral,2560,1,Infection naive,BNT162b2,2
+5,53,-18,Ancestral,426.024114999999,0,Infection naive,BNT162b2,2
+5,103,-18,Ancestral,213.5390003,0,Infection naive,BNT162b2,2
+5,187,-18,Ancestral,368.0142372,0,Infection naive,BNT162b2,2
+5,6,-18,Alpha,540.7202473,0,Infection naive,BNT162b2,2
+5,53,-18,Alpha,415.331774000001,0,Infection naive,BNT162b2,2
+5,103,-18,Alpha,250.909971299999,0,Infection naive,BNT162b2,2
+5,187,-18,Alpha,183.9779073,0,Infection naive,BNT162b2,2
+5,6,-18,Delta,311.83196,0,Infection naive,BNT162b2,2
+5,53,-18,Delta,280.4537432,0,Infection naive,BNT162b2,2
+5,103,-18,Delta,110.5616476,0,Infection naive,BNT162b2,2
+5,187,-18,Delta,79.1725334000003,0,Infection naive,BNT162b2,2
+6,41,41,Ancestral,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+6,41,41,Alpha,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+6,41,41,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+7,124,93,Ancestral,115.312395150577,0,Infection naive,AZD1222,1
+7,124,93,Alpha,69.1756913491035,0,Infection naive,AZD1222,1
+7,124,93,Delta,5,-1,Infection naive,AZD1222,1
+8,133,97,Ancestral,209.0939465,0,Previously infected (Pre-Omicron),AZD1222,3
+8,159,97,Ancestral,50.10396289,0,Previously infected (Pre-Omicron),AZD1222,3
+8,133,97,Alpha,5,-1,Previously infected (Pre-Omicron),AZD1222,3
+8,133,97,Delta,5,-1,Previously infected (Pre-Omicron),AZD1222,3
+8,159,97,Delta,5,-1,Previously infected (Pre-Omicron),AZD1222,3
+8,234,97,Delta,5,-1,Previously infected (Pre-Omicron),AZD1222,3
+9,4,-24,Ancestral,657.444254099999,0,Infection naive,BNT162b2,2
+9,25,-24,Ancestral,934.333704000001,0,Infection naive,BNT162b2,2
+9,67,-24,Ancestral,399.619148699999,0,Infection naive,BNT162b2,2
+9,4,-24,Alpha,396.131820300001,0,Infection naive,BNT162b2,2
+9,25,-24,Alpha,282.922704900001,0,Infection naive,BNT162b2,2
+9,4,-24,Delta,316.513164100001,0,Infection naive,BNT162b2,2
+9,25,-24,Delta,306.681909900001,0,Infection naive,BNT162b2,2
+9,67,-24,Delta,174.2468752,0,Infection naive,BNT162b2,2
+10,117,75,Ancestral,2232.92503000001,0,Previously infected (Pre-Omicron),AZD1222,2
+10,117,75,Alpha,607.57498998905,0,Previously infected (Pre-Omicron),AZD1222,2
+10,117,75,Delta,2560,1,Previously infected (Pre-Omicron),AZD1222,2
+11,80,54,Ancestral,913.282125200002,0,Infection naive,BNT162b2,2
+11,150,54,Ancestral,413.878182099999,0,Infection naive,BNT162b2,2
+11,237,54,Ancestral,165.610148600001,0,Infection naive,BNT162b2,2
+11,80,54,Alpha,462.6108909,0,Infection naive,BNT162b2,2
+11,150,54,Alpha,203.4890863,0,Infection naive,BNT162b2,2
+11,237,54,Alpha,198.555879680297,0,Infection naive,BNT162b2,2
+11,80,54,Delta,226.8519274,0,Infection naive,BNT162b2,2
+11,150,54,Delta,128.5515581,0,Infection naive,BNT162b2,2
+11,237,54,Delta,127.5414765,0,Infection naive,BNT162b2,2
+12,46,43,Ancestral,253.785292299999,0,Infection naive,BNT162b2,2
+12,46,43,Alpha,48.0397331146746,0,Infection naive,BNT162b2,2
+12,46,43,Delta,47.70405944,0,Infection naive,BNT162b2,2
+13,84,83,Ancestral,121.1135496,0,Previously infected (Pre-Omicron),BNT162b2,3
+13,84,83,Alpha,60.8130894204273,0,Previously infected (Pre-Omicron),BNT162b2,3
+13,84,83,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+14,27,-22,Ancestral,197.860967200001,0,Infection naive,BNT162b2,2
+14,27,-22,Alpha,172.7262873,0,Infection naive,BNT162b2,2
+14,48,-22,Alpha,132.0923549,0,Infection naive,BNT162b2,2
+14,27,-22,Delta,45.3395584000001,0,Infection naive,BNT162b2,2
+14,48,-22,Delta,45.41910771,0,Infection naive,BNT162b2,2
+15,38,28,Ancestral,1526.40370200001,0,Infection naive,BNT162b2,2
+15,77,28,Ancestral,662.070416499999,0,Infection naive,BNT162b2,2
+15,164,28,Ancestral,106.0995805,0,Infection naive,BNT162b2,2
+15,248,28,Ancestral,129.342704377527,0,Infection naive,BNT162b2,2
+15,38,28,Alpha,974.481292799999,0,Infection naive,BNT162b2,2
+15,77,28,Alpha,798.6648664,0,Infection naive,BNT162b2,2
+15,164,28,Alpha,51.5743457200001,0,Infection naive,BNT162b2,2
+15,248,28,Alpha,95.6745110753895,0,Infection naive,BNT162b2,2
+15,38,28,Delta,334.482275799999,0,Infection naive,BNT162b2,2
+15,77,28,Delta,311.013081500001,0,Infection naive,BNT162b2,2
+15,164,28,Delta,45.8591303399999,0,Infection naive,BNT162b2,2
+15,248,28,Delta,5,-1,Infection naive,BNT162b2,2
+16,80,53,Ancestral,2560,1,Infection naive,BNT162b2,2
+16,151,53,Ancestral,281.438731800001,0,Infection naive,BNT162b2,2
+16,80,53,Alpha,971.922280699998,0,Infection naive,BNT162b2,2
+16,151,53,Alpha,524.384287100001,0,Infection naive,BNT162b2,2
+16,80,53,Delta,467.092688800001,0,Infection naive,BNT162b2,2
+16,151,53,Delta,344.2982058,0,Infection naive,BNT162b2,2
+17,76,45,Ancestral,780.670057600001,0,Infection naive,BNT162b2,2
+17,150,45,Ancestral,224.478422,0,Infection naive,BNT162b2,2
+17,76,45,Alpha,1123.155242,0,Infection naive,BNT162b2,2
+17,150,45,Alpha,201.8901902,0,Infection naive,BNT162b2,2
+17,76,45,Delta,389.931141,0,Infection naive,BNT162b2,2
+17,150,45,Delta,161.1708918,0,Infection naive,BNT162b2,2
+18,42,31,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+18,67,31,Ancestral,944.2128099,0,Previously infected (Pre-Omicron),BNT162b2,3
+18,42,31,Alpha,617.236638700002,0,Previously infected (Pre-Omicron),BNT162b2,3
+18,67,31,Alpha,599.6392433,0,Previously infected (Pre-Omicron),BNT162b2,3
+18,109,31,Alpha,221.3523331,0,Previously infected (Pre-Omicron),BNT162b2,3
+18,193,31,Alpha,155.7546505,0,Previously infected (Pre-Omicron),BNT162b2,3
+18,42,31,Delta,369.630585900001,0,Previously infected (Pre-Omicron),BNT162b2,3
+18,67,31,Delta,199.078665199999,0,Previously infected (Pre-Omicron),BNT162b2,3
+18,109,31,Delta,76.04389667,0,Previously infected (Pre-Omicron),BNT162b2,3
+18,193,31,Delta,47.4954555099999,0,Previously infected (Pre-Omicron),BNT162b2,3
+19,69,28,Ancestral,2560,1,Infection naive,BNT162b2,2
+19,144,28,Ancestral,122.9316995,0,Infection naive,BNT162b2,2
+19,69,28,Alpha,186.9035213,0,Infection naive,BNT162b2,2
+19,144,28,Alpha,121.538915500001,0,Infection naive,BNT162b2,2
+19,69,28,Delta,155.7546505,0,Infection naive,BNT162b2,2
+19,144,28,Delta,86.3494333899999,0,Infection naive,BNT162b2,2
+20,77,39,Ancestral,791.001602599998,0,Infection naive,BNT162b2,2
+20,237,39,Ancestral,141.811295282677,0,Infection naive,BNT162b2,2
+20,263,39,Ancestral,130.8249164,0,Infection naive,BNT162b2,2
+20,77,39,Alpha,810.654379200002,0,Infection naive,BNT162b2,2
+20,237,39,Alpha,163.447057328495,0,Infection naive,BNT162b2,2
+20,263,39,Alpha,81.1396092100002,0,Infection naive,BNT162b2,2
+20,77,39,Delta,318.1820781,0,Infection naive,BNT162b2,2
+20,237,39,Delta,80.290662041196,0,Infection naive,BNT162b2,2
+20,263,39,Delta,45.8591303399999,0,Infection naive,BNT162b2,2
+21,80,56,Ancestral,713.279837599999,0,Infection naive,BNT162b2,2
+21,151,56,Ancestral,102.4442116,0,Infection naive,BNT162b2,2
+21,80,56,Alpha,447.8489687,0,Infection naive,BNT162b2,2
+21,151,56,Alpha,175.6268464,0,Infection naive,BNT162b2,2
+21,80,56,Delta,171.9709766,0,Infection naive,BNT162b2,2
+21,151,56,Delta,136.0880493,0,Infection naive,BNT162b2,2
+22,80,39,Ancestral,200.1283693,0,Previously infected (Pre-Omicron),AZD1222,2
+22,80,39,Alpha,67.0270167161586,0,Previously infected (Pre-Omicron),AZD1222,2
+22,80,39,Delta,5,-1,Previously infected (Pre-Omicron),AZD1222,2
+23,67,30,Ancestral,97.87985316,0,Infection naive,BNT162b2,2
+23,235,30,Ancestral,81.9256938794759,0,Infection naive,BNT162b2,2
+23,67,30,Alpha,270.7914815,0,Infection naive,BNT162b2,2
+23,235,30,Alpha,5,-1,Infection naive,BNT162b2,2
+23,67,30,Delta,74.3957217499998,0,Infection naive,BNT162b2,2
+23,235,30,Delta,5,-1,Infection naive,BNT162b2,2
+24,111,83,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+24,193,83,Ancestral,483.335457300001,0,Previously infected (Pre-Omicron),BNT162b2,3
+24,111,83,Alpha,1971.609858,0,Previously infected (Pre-Omicron),BNT162b2,3
+24,193,83,Alpha,517.535122900002,0,Previously infected (Pre-Omicron),BNT162b2,3
+24,111,83,Delta,1613.06082,0,Previously infected (Pre-Omicron),BNT162b2,3
+24,193,83,Delta,421.197373199999,0,Previously infected (Pre-Omicron),BNT162b2,3
+25,3,-17,Ancestral,167.654854,0,Infection naive,BNT162b2,2
+25,24,-17,Ancestral,288.684117400001,0,Infection naive,BNT162b2,2
+25,67,-17,Ancestral,160.4661115,0,Infection naive,BNT162b2,2
+25,151,-17,Ancestral,157.677675,0,Infection naive,BNT162b2,2
+25,3,-17,Alpha,82.6469229800001,0,Infection naive,BNT162b2,2
+25,24,-17,Alpha,89.0394470600002,0,Infection naive,BNT162b2,2
+25,67,-17,Alpha,46.7930015600001,0,Infection naive,BNT162b2,2
+25,151,-17,Alpha,53.0878793300002,0,Infection naive,BNT162b2,2
+25,3,-17,Delta,49.4062145500001,0,Infection naive,BNT162b2,2
+25,24,-17,Delta,60.2823961099999,0,Infection naive,BNT162b2,2
+25,67,-17,Delta,54.4068706399999,0,Infection naive,BNT162b2,2
+25,151,-17,Delta,75.97727393,0,Infection naive,BNT162b2,2
+26,74,37,Ancestral,2560,1,Infection naive,BNT162b2,2
+26,74,37,Alpha,591.8071482,0,Infection naive,BNT162b2,2
+26,74,37,Delta,292.761111899999,0,Infection naive,BNT162b2,2
+27,80,44,Ancestral,205.1006451,0,Previously infected (Pre-Omicron),BNT162b2,3
+27,151,44,Ancestral,80.4315338800003,0,Previously infected (Pre-Omicron),BNT162b2,3
+27,242,44,Ancestral,81.7105549699998,0,Previously infected (Pre-Omicron),BNT162b2,3
+27,80,44,Alpha,153.9899911,0,Previously infected (Pre-Omicron),BNT162b2,3
+27,151,44,Alpha,103.4366963,0,Previously infected (Pre-Omicron),BNT162b2,3
+27,242,44,Alpha,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+27,80,44,Delta,86.3494333899999,0,Previously infected (Pre-Omicron),BNT162b2,3
+27,151,44,Delta,54.0267071200002,0,Previously infected (Pre-Omicron),BNT162b2,3
+27,242,44,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+28,4,-15,Ancestral,128.551558075558,0,Infection naive,BNT162b2,1
+28,26,-15,Ancestral,129.796972124846,0,Infection naive,BNT162b2,1
+28,4,-15,Alpha,209.828310596494,0,Infection naive,BNT162b2,1
+28,26,-15,Alpha,148.68468983509,0,Infection naive,BNT162b2,1
+28,4,-15,Delta,110.368004349061,0,Infection naive,BNT162b2,1
+28,26,-15,Delta,45.3395583998115,0,Infection naive,BNT162b2,1
+29,14,-17,Ancestral,375.837720899999,0,Infection naive,BNT162b2,2
+29,32,-17,Ancestral,306.950832300001,0,Infection naive,BNT162b2,2
+29,14,-17,Alpha,133.606076800001,0,Infection naive,BNT162b2,2
+29,32,-17,Alpha,233.1002888,0,Infection naive,BNT162b2,2
+29,73,-17,Alpha,105.7282497,0,Infection naive,BNT162b2,2
+29,14,-17,Delta,105.1736888,0,Infection naive,BNT162b2,2
+29,32,-17,Delta,162.162787600001,0,Infection naive,BNT162b2,2
+29,73,-17,Delta,94.0119650100003,0,Infection naive,BNT162b2,2
+30,5,-21,Ancestral,5,-1,Infection naive,BNT162b2,2
+30,26,-21,Ancestral,265.3871612,0,Infection naive,BNT162b2,2
+30,5,-21,Alpha,170.769343600001,0,Infection naive,BNT162b2,2
+30,26,-21,Alpha,169.5761069,0,Infection naive,BNT162b2,2
+30,70,-21,Alpha,80.3610670899999,0,Infection naive,BNT162b2,2
+30,5,-21,Delta,130.5957831,0,Infection naive,BNT162b2,2
+30,26,-21,Delta,65.8045786499999,0,Infection naive,BNT162b2,2
+30,70,-21,Delta,73.0388933099998,0,Infection naive,BNT162b2,2
+31,84,59,Ancestral,1103.638055,0,Previously infected (Pre-Omicron),BNT162b2,3
+31,168,59,Ancestral,529.464548799999,0,Previously infected (Pre-Omicron),BNT162b2,3
+31,307,59,Ancestral,237.6387421,0,Previously infected (Pre-Omicron),BNT162b2,3
+31,84,59,Alpha,485.458306200001,0,Previously infected (Pre-Omicron),BNT162b2,3
+31,168,59,Alpha,294.304785699999,0,Previously infected (Pre-Omicron),BNT162b2,3
+31,307,59,Alpha,226.454607549813,0,Previously infected (Pre-Omicron),BNT162b2,3
+31,84,59,Delta,678.519842099999,0,Previously infected (Pre-Omicron),BNT162b2,3
+31,168,59,Delta,258.953353199999,0,Previously infected (Pre-Omicron),BNT162b2,3
+31,307,59,Delta,89.2738825000001,0,Previously infected (Pre-Omicron),BNT162b2,3
+32,20,-19,Ancestral,869.537303600003,0,Infection naive,BNT162b2,2
+32,20,-19,Alpha,228.2480448,0,Infection naive,BNT162b2,2
+32,62,-19,Alpha,102.4442116,0,Infection naive,BNT162b2,2
+32,20,-19,Delta,129.9107881,0,Infection naive,BNT162b2,2
+32,62,-19,Delta,46.2223177999999,0,Infection naive,BNT162b2,2
+32,104,-19,Delta,71.8956103600002,0,Infection naive,BNT162b2,2
+32,199,-19,Delta,42.7911527100001,0,Infection naive,BNT162b2,2
+33,88,42,Ancestral,667.8989231,0,Infection naive,BNT162b2,2
+33,160,42,Ancestral,305.340828000001,0,Infection naive,BNT162b2,2
+33,312,42,Ancestral,171.369106900001,0,Infection naive,BNT162b2,2
+33,88,42,Alpha,554.640601099999,0,Infection naive,BNT162b2,2
+33,160,42,Alpha,191.379403800001,0,Infection naive,BNT162b2,2
+33,312,42,Alpha,224.28175447665,0,Infection naive,BNT162b2,2
+33,88,42,Delta,454.173798000001,0,Infection naive,BNT162b2,2
+33,160,42,Delta,135.255644,0,Infection naive,BNT162b2,2
+33,312,42,Delta,92.6215356399999,0,Infection naive,BNT162b2,2
+34,19,-17,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+34,40,-17,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+34,19,-17,Alpha,2041.95996799999,0,Previously infected (Pre-Omicron),BNT162b2,3
+34,40,-17,Alpha,1606.007105,0,Previously infected (Pre-Omicron),BNT162b2,3
+34,19,-17,Delta,1262.022346,0,Previously infected (Pre-Omicron),BNT162b2,3
+34,40,-17,Delta,431.2840209,0,Previously infected (Pre-Omicron),BNT162b2,3
+35,80,68,Ancestral,232.692025200001,0,Infection naive,AZD1222,2
+35,150,68,Ancestral,258.953353199999,0,Infection naive,AZD1222,2
+35,80,68,Alpha,86.1981966500001,0,Infection naive,AZD1222,2
+35,80,68,Delta,51.8462874599999,0,Infection naive,AZD1222,2
+35,150,68,Delta,42.6413908199999,0,Infection naive,AZD1222,2
+36,53,36,Ancestral,1076.882446,0,Infection naive,BNT162b2,2
+36,81,36,Ancestral,572.922571000002,0,Infection naive,BNT162b2,2
+36,53,36,Alpha,804.284739699998,0,Infection naive,BNT162b2,2
+36,81,36,Alpha,419.355529400001,0,Infection naive,BNT162b2,2
+36,53,36,Delta,448.241677300001,0,Infection naive,BNT162b2,2
+36,81,36,Delta,168.096279000001,0,Infection naive,BNT162b2,2
+37,41,32,Ancestral,2560,1,Infection naive,BNT162b2,2
+37,68,32,Ancestral,2560,1,Infection naive,BNT162b2,2
+37,110,32,Ancestral,2560,1,Infection naive,BNT162b2,2
+37,194,32,Ancestral,186.7397735,0,Infection naive,BNT162b2,2
+37,41,32,Alpha,975.335793300001,0,Infection naive,BNT162b2,2
+37,68,32,Alpha,1182.765086,0,Infection naive,BNT162b2,2
+37,110,32,Alpha,388.907172100001,0,Infection naive,BNT162b2,2
+37,194,32,Alpha,295.856599099999,0,Infection naive,BNT162b2,2
+37,41,32,Delta,488.0180358,0,Infection naive,BNT162b2,2
+37,68,32,Delta,940.083884500002,0,Infection naive,BNT162b2,2
+37,110,32,Delta,288.684117400001,0,Infection naive,BNT162b2,2
+37,194,32,Delta,162.447306,0,Infection naive,BNT162b2,2
+38,76,55,Ancestral,1004.838967,0,Infection naive,BNT162b2,2
+38,179,55,Ancestral,192.726061299999,0,Infection naive,BNT162b2,2
+38,76,55,Alpha,441.612219099999,0,Infection naive,BNT162b2,2
+38,179,55,Alpha,117.5575229,0,Infection naive,BNT162b2,2
+38,76,55,Delta,403.490679399999,0,Infection naive,BNT162b2,2
+38,179,55,Delta,85.0723322500003,0,Infection naive,BNT162b2,2
+39,4,-17,Ancestral,2560,1,Infection naive,BNT162b2,2
+39,25,-17,Ancestral,2560,1,Infection naive,BNT162b2,2
+39,75,-17,Ancestral,1312.793954,0,Infection naive,BNT162b2,2
+39,4,-17,Alpha,2308.548869,0,Infection naive,BNT162b2,2
+39,25,-17,Alpha,1138.019305,0,Infection naive,BNT162b2,2
+39,75,-17,Alpha,1286.593871,0,Infection naive,BNT162b2,2
+39,4,-17,Delta,877.961425299999,0,Infection naive,BNT162b2,2
+39,25,-17,Delta,601.2180569,0,Infection naive,BNT162b2,2
+39,75,-17,Delta,890.360596700001,0,Infection naive,BNT162b2,2
+40,131,91,Ancestral,398.9192356,0,Infection naive,AZD1222,2
+40,159,91,Ancestral,116.5316419,0,Infection naive,AZD1222,2
+40,231,91,Ancestral,111.1446182,0,Infection naive,AZD1222,2
+40,131,91,Alpha,180.62252,0,Infection naive,AZD1222,2
+40,159,91,Alpha,116.3275425,0,Infection naive,AZD1222,2
+40,231,91,Alpha,110.8527497,0,Infection naive,AZD1222,2
+40,131,91,Delta,62.98299513,0,Infection naive,AZD1222,2
+40,159,91,Delta,45.93959126,0,Infection naive,AZD1222,2
+40,231,91,Delta,41.6076312399999,0,Infection naive,AZD1222,2
+41,80,44,Ancestral,2560,1,Infection naive,BNT162b2,2
+41,150,44,Ancestral,283.170793299999,0,Infection naive,BNT162b2,2
+41,80,44,Alpha,1754.663025,0,Infection naive,BNT162b2,2
+41,150,44,Alpha,166.629365,0,Infection naive,BNT162b2,2
+41,80,44,Delta,453.775892300001,0,Infection naive,BNT162b2,2
+41,150,44,Delta,125.3251748,0,Infection naive,BNT162b2,2
+42,119,69,Ancestral,254.899938100001,0,Previously infected (Pre-Omicron),AZD1222,3
+42,168,69,Ancestral,171.669778,0,Previously infected (Pre-Omicron),AZD1222,3
+42,119,69,Alpha,149.0761676,0,Previously infected (Pre-Omicron),AZD1222,3
+42,168,69,Alpha,118.3847264,0,Previously infected (Pre-Omicron),AZD1222,3
+42,119,69,Delta,44.20162747,0,Previously infected (Pre-Omicron),AZD1222,3
+42,168,69,Delta,60.8664150300001,0,Previously infected (Pre-Omicron),AZD1222,3
+43,84,53,Ancestral,483.759283100001,0,Infection naive,BNT162b2,2
+43,84,53,Alpha,148.9455606,0,Infection naive,BNT162b2,2
+43,84,53,Delta,109.3090131,0,Infection naive,BNT162b2,2
+44,131,91,Ancestral,130.2528353,0,Infection naive,AZD1222,2
+44,160,91,Ancestral,40.95634405,0,Infection naive,AZD1222,2
+44,131,91,Alpha,58.0018224500001,0,Infection naive,AZD1222,2
+44,160,91,Alpha,60.44111598,0,Infection naive,AZD1222,2
+44,131,91,Delta,5,-1,Infection naive,AZD1222,2
+45,77,62,Ancestral,2560,1,Infection naive,BNT162b2,2
+45,178,62,Ancestral,540.246517400001,0,Infection naive,BNT162b2,2
+45,263,62,Ancestral,651.706981500002,0,Infection naive,BNT162b2,2
+45,77,62,Alpha,2211.499906,0,Infection naive,BNT162b2,2
+45,178,62,Alpha,835.1760645,0,Infection naive,BNT162b2,2
+45,263,62,Alpha,416.790471097569,0,Infection naive,BNT162b2,2
+45,77,62,Delta,896.625694799998,0,Infection naive,BNT162b2,2
+45,178,62,Delta,394.399585100001,0,Infection naive,BNT162b2,2
+45,263,62,Delta,394.745425100001,0,Infection naive,BNT162b2,2
+46,46,46,Ancestral,144.572355573196,0,Infection naive,BNT162b2,2
+46,76,46,Ancestral,2270.422109,0,Infection naive,BNT162b2,2
+46,159,46,Ancestral,214.8531858,0,Infection naive,BNT162b2,2
+46,251,46,Ancestral,218.4611738,0,Infection naive,BNT162b2,2
+46,46,46,Alpha,66.8510021028247,0,Infection naive,BNT162b2,2
+46,76,46,Alpha,588.187260700001,0,Infection naive,BNT162b2,2
+46,159,46,Alpha,297.4165949,0,Infection naive,BNT162b2,2
+46,251,46,Alpha,185.272483477799,0,Infection naive,BNT162b2,2
+46,46,46,Delta,5,-1,Infection naive,BNT162b2,2
+46,76,46,Delta,315.4054209,0,Infection naive,BNT162b2,2
+46,159,46,Delta,130.0247039,0,Infection naive,BNT162b2,2
+46,251,46,Delta,97.7084214600002,0,Infection naive,BNT162b2,2
+47,81,50,Ancestral,1186.919105,0,Infection naive,BNT162b2,2
+47,151,50,Ancestral,501.899619800001,0,Infection naive,BNT162b2,2
+47,81,50,Alpha,1334.839449,0,Infection naive,BNT162b2,2
+47,151,50,Alpha,318.1820781,0,Infection naive,BNT162b2,2
+47,81,50,Delta,832.982871400002,0,Infection naive,BNT162b2,2
+47,151,50,Delta,405.618209199999,0,Infection naive,BNT162b2,2
+48,60,50,Ancestral,2560,1,Infection naive,BNT162b2,2
+48,102,50,Ancestral,571.919125600001,0,Infection naive,BNT162b2,2
+48,160,50,Ancestral,91.4117737899999,0,Infection naive,BNT162b2,2
+48,60,50,Alpha,397.1748113,0,Infection naive,BNT162b2,2
+48,102,50,Alpha,238.682470999999,0,Infection naive,BNT162b2,2
+48,160,50,Alpha,176.7077087,0,Infection naive,BNT162b2,2
+48,60,50,Delta,233.1002888,0,Infection naive,BNT162b2,2
+48,102,50,Delta,166.7754785,0,Infection naive,BNT162b2,2
+48,160,50,Delta,135.3742465,0,Infection naive,BNT162b2,2
+49,20,-24,Ancestral,2560,1,Infection naive,BNT162b2,2
+49,20,-24,Alpha,815.643398600001,0,Infection naive,BNT162b2,2
+49,20,-24,Delta,458.1720963,0,Infection naive,BNT162b2,2
+50,11,-10,Ancestral,110.464783536617,0,Previously infected (Pre-Omicron),BNT162b2,2
+50,32,-10,Ancestral,104.713777301928,0,Previously infected (Pre-Omicron),BNT162b2,2
+50,11,-10,Alpha,5,-1,Previously infected (Pre-Omicron),BNT162b2,2
+50,32,-10,Alpha,92.0550005127693,0,Previously infected (Pre-Omicron),BNT162b2,2
+50,11,-10,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,2
+50,32,-10,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,2
+51,69,60,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+51,111,60,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+51,193,60,Ancestral,331.854113199999,0,Previously infected (Pre-Omicron),BNT162b2,3
+51,69,60,Alpha,1494.629897,0,Previously infected (Pre-Omicron),BNT162b2,3
+51,111,60,Alpha,1527.74217,0,Previously infected (Pre-Omicron),BNT162b2,3
+51,193,60,Alpha,274.615783899999,0,Previously infected (Pre-Omicron),BNT162b2,3
+51,69,60,Delta,828.613748100001,0,Previously infected (Pre-Omicron),BNT162b2,3
+51,111,60,Delta,922.938643800003,0,Previously infected (Pre-Omicron),BNT162b2,3
+51,193,60,Delta,200.6552951,0,Previously infected (Pre-Omicron),BNT162b2,3
+52,76,41,Ancestral,2560,1,Infection naive,BNT162b2,2
+52,168,41,Ancestral,346.113625,0,Infection naive,BNT162b2,2
+52,238,41,Ancestral,306.950832311165,0,Infection naive,BNT162b2,2
+52,76,41,Alpha,859.6856735,0,Infection naive,BNT162b2,2
+52,168,41,Alpha,439.6811036,0,Infection naive,BNT162b2,2
+52,238,41,Alpha,359.72246663529,0,Infection naive,BNT162b2,2
+52,76,41,Delta,482.488919199999,0,Infection naive,BNT162b2,2
+52,168,41,Delta,249.375238500001,0,Infection naive,BNT162b2,2
+52,238,41,Delta,242.903429471149,0,Infection naive,BNT162b2,2
+53,95,53,Ancestral,600.165053300002,0,Infection naive,BNT162b2,2
+53,151,53,Ancestral,286.666961000001,0,Infection naive,BNT162b2,2
+53,251,53,Ancestral,128.8900265,0,Infection naive,BNT162b2,2
+53,95,53,Alpha,824.267541600003,0,Infection naive,BNT162b2,2
+53,151,53,Alpha,173.4849153,0,Infection naive,BNT162b2,2
+53,251,53,Alpha,107.503723789764,0,Infection naive,BNT162b2,2
+53,95,53,Delta,586.6426663,0,Infection naive,BNT162b2,2
+53,151,53,Delta,137.889066,0,Infection naive,BNT162b2,2
+53,251,53,Delta,58.15453771,0,Infection naive,BNT162b2,2
+54,87,44,Ancestral,1561.588019,0,Infection naive,BNT162b2,2
+54,87,44,Alpha,741.3252875,0,Infection naive,BNT162b2,2
+54,87,44,Delta,258.7264819,0,Infection naive,BNT162b2,2
+55,6,-24,Ancestral,148.68468983509,0,Infection naive,BNT162b2,1
+55,6,-24,Alpha,128.551558075558,0,Infection naive,BNT162b2,1
+55,6,-24,Delta,5,-1,Infection naive,BNT162b2,1
+56,62,44,Ancestral,2560,1,Infection naive,BNT162b2,2
+56,244,44,Ancestral,161.0296885,0,Infection naive,BNT162b2,2
+56,244,44,Ancestral,161.0296885,0,Infection naive,BNT162b2,2
+56,62,44,Alpha,916.489686199999,0,Infection naive,BNT162b2,2
+56,244,44,Alpha,204.5620457,0,Infection naive,BNT162b2,2
+56,244,44,Alpha,204.5620457,0,Infection naive,BNT162b2,2
+56,62,44,Delta,359.092430599999,0,Infection naive,BNT162b2,2
+56,244,44,Delta,86.3494333899999,0,Infection naive,BNT162b2,2
+56,244,44,Delta,86.3494333899999,0,Infection naive,BNT162b2,2
+57,31,31,Ancestral,1682.372782,0,Infection naive,BNT162b2,2
+57,54,31,Ancestral,1262.022346,0,Infection naive,BNT162b2,2
+57,31,31,Alpha,2169.2644141146,0,Infection naive,BNT162b2,2
+57,54,31,Alpha,977.047042700003,0,Infection naive,BNT162b2,2
+57,31,31,Delta,560.013987499999,0,Infection naive,BNT162b2,2
+57,54,31,Delta,1095.926476,0,Infection naive,BNT162b2,2
+58,41,41,Ancestral,112.615528487616,0,Infection naive,BNT162b2,2
+58,87,41,Ancestral,2560,1,Infection naive,BNT162b2,2
+58,41,41,Alpha,89.5089351915363,0,Infection naive,BNT162b2,2
+58,87,41,Alpha,841.790351999999,0,Infection naive,BNT162b2,2
+58,41,41,Delta,40.5278261784787,0,Infection naive,BNT162b2,2
+58,87,41,Delta,513.018785499999,0,Infection naive,BNT162b2,2
+59,19,-17,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+59,40,-17,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+59,75,-17,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+59,19,-17,Alpha,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+59,40,-17,Alpha,1339.527572,0,Previously infected (Pre-Omicron),BNT162b2,3
+59,75,-17,Alpha,1030.707638,0,Previously infected (Pre-Omicron),BNT162b2,3
+59,19,-17,Delta,1421.792665,0,Previously infected (Pre-Omicron),BNT162b2,3
+59,40,-17,Delta,496.6483465,0,Previously infected (Pre-Omicron),BNT162b2,3
+59,75,-17,Delta,497.955991299999,0,Previously infected (Pre-Omicron),BNT162b2,3
+60,25,7,Ancestral,498.392637599999,0,Infection naive,BNT162b2,2
+60,46,7,Ancestral,385.851371,0,Infection naive,BNT162b2,2
+60,88,7,Ancestral,188.548917900001,0,Infection naive,BNT162b2,2
+60,173,7,Ancestral,147.3871736,0,Infection naive,BNT162b2,2
+60,25,7,Alpha,130.481367,0,Infection naive,BNT162b2,2
+60,46,7,Alpha,147.1290323,0,Infection naive,BNT162b2,2
+60,88,7,Alpha,67.7357217499998,0,Infection naive,BNT162b2,2
+60,173,7,Alpha,73.9406678700002,0,Infection naive,BNT162b2,2
+60,25,7,Delta,259.1804235,0,Infection naive,BNT162b2,2
+60,46,7,Delta,197.6876195,0,Infection naive,BNT162b2,2
+60,88,7,Delta,113.4079572,0,Infection naive,BNT162b2,2
+60,173,7,Delta,59.0793103299999,0,Infection naive,BNT162b2,2
+61,84,58,Ancestral,1893.698356,0,Previously infected (Pre-Omicron),BNT162b2,3
+61,168,58,Ancestral,119.2177506,0,Previously infected (Pre-Omicron),BNT162b2,3
+61,307,58,Ancestral,100.664027719392,0,Previously infected (Pre-Omicron),BNT162b2,3
+61,84,58,Alpha,562.966835099998,0,Previously infected (Pre-Omicron),BNT162b2,3
+61,168,58,Alpha,132.2081837,0,Previously infected (Pre-Omicron),BNT162b2,3
+61,307,58,Alpha,108.735670477585,0,Previously infected (Pre-Omicron),BNT162b2,3
+61,84,58,Delta,327.2327092,0,Previously infected (Pre-Omicron),BNT162b2,3
+61,168,58,Delta,112.8131151,0,Previously infected (Pre-Omicron),BNT162b2,3
+61,307,58,Delta,41.2084021348052,0,Previously infected (Pre-Omicron),BNT162b2,3
+62,76,46,Ancestral,2560,1,Infection naive,AZD1222,1
+62,76,46,Alpha,871.826742274675,0,Infection naive,AZD1222,1
+62,76,46,Delta,2560,1,Infection naive,AZD1222,1
+63,69,49,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+63,245,49,Ancestral,1589.203781,0,Previously infected (Pre-Omicron),BNT162b2,3
+63,69,49,Alpha,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+63,245,49,Alpha,1542.54301454384,0,Previously infected (Pre-Omicron),BNT162b2,3
+63,69,49,Delta,905.312250299999,0,Previously infected (Pre-Omicron),BNT162b2,3
+63,245,49,Delta,864.218633100003,0,Previously infected (Pre-Omicron),BNT162b2,3
+64,67,27,Ancestral,2560,1,Infection naive,BNT162b2,2
+64,151,27,Ancestral,174.2468752,0,Infection naive,BNT162b2,2
+64,67,27,Alpha,1401.992765,0,Infection naive,BNT162b2,2
+64,151,27,Alpha,153.0480855,0,Infection naive,BNT162b2,2
+64,67,27,Delta,525.304331599999,0,Infection naive,BNT162b2,2
+64,151,27,Delta,102.2647856,0,Infection naive,BNT162b2,2
+65,70,34,Ancestral,1087.315338,0,Infection naive,BNT162b2,2
+65,154,34,Ancestral,477.8593931,0,Infection naive,BNT162b2,2
+65,70,34,Alpha,892.704861899999,0,Infection naive,BNT162b2,2
+65,154,34,Alpha,374.194229200001,0,Infection naive,BNT162b2,2
+65,70,34,Delta,853.678690799998,0,Infection naive,BNT162b2,2
+65,154,34,Delta,333.603917,0,Infection naive,BNT162b2,2
+66,80,54,Ancestral,809.234558300001,0,Infection naive,BNT162b2,2
+66,150,54,Ancestral,227.6486598,0,Infection naive,BNT162b2,2
+66,242,54,Ancestral,127.9894181,0,Infection naive,BNT162b2,2
+66,80,54,Alpha,705.198563800002,0,Infection naive,BNT162b2,2
+66,150,54,Alpha,233.3046891,0,Infection naive,BNT162b2,2
+66,242,54,Alpha,242.053307993616,0,Infection naive,BNT162b2,2
+66,80,54,Delta,429.7745987,0,Infection naive,BNT162b2,2
+66,150,54,Delta,67.8545656499999,0,Infection naive,BNT162b2,2
+66,242,54,Delta,43.0545027799999,0,Infection naive,BNT162b2,2
+67,0,-24,Ancestral,1025.301418,0,Infection naive,BNT162b2,2
+67,21,-24,Ancestral,892.704861899999,0,Infection naive,BNT162b2,2
+67,76,-24,Ancestral,296.375686400001,0,Infection naive,BNT162b2,2
+67,160,-24,Ancestral,56.4965538399999,0,Infection naive,BNT162b2,2
+67,0,-24,Alpha,238.8917662,0,Infection naive,BNT162b2,2
+67,21,-24,Alpha,219.8056519,0,Infection naive,BNT162b2,2
+67,76,-24,Alpha,118.3847264,0,Infection naive,BNT162b2,2
+67,160,-24,Alpha,72.7195032999999,0,Infection naive,BNT162b2,2
+67,0,-24,Delta,104.6220366,0,Infection naive,BNT162b2,2
+67,21,-24,Delta,88.8834988900001,0,Infection naive,BNT162b2,2
+67,76,-24,Delta,69.2970617100001,0,Infection naive,BNT162b2,2
+67,160,-24,Delta,48.7181830699999,0,Infection naive,BNT162b2,2
+68,46,42,Ancestral,129.796972124846,0,Previously infected (Pre-Omicron),BNT162b2,3
+68,81,42,Ancestral,963.4406748,0,Previously infected (Pre-Omicron),BNT162b2,3
+68,159,42,Ancestral,143.0597245,0,Previously infected (Pre-Omicron),BNT162b2,3
+68,46,42,Alpha,50.8561208104012,0,Previously infected (Pre-Omicron),BNT162b2,3
+68,81,42,Alpha,804.284739699998,0,Previously infected (Pre-Omicron),BNT162b2,3
+68,159,42,Alpha,178.7327035,0,Previously infected (Pre-Omicron),BNT162b2,3
+68,237,42,Alpha,171.068962431355,0,Previously infected (Pre-Omicron),BNT162b2,3
+68,46,42,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+68,81,42,Delta,270.3172037,0,Previously infected (Pre-Omicron),BNT162b2,3
+68,159,42,Delta,168.8345717,0,Previously infected (Pre-Omicron),BNT162b2,3
+68,237,42,Delta,221.9351403,0,Previously infected (Pre-Omicron),BNT162b2,3
+69,52,40,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+69,52,40,Alpha,1587.811465,0,Previously infected (Pre-Omicron),BNT162b2,3
+69,52,40,Delta,679.710320999999,0,Previously infected (Pre-Omicron),BNT162b2,3
+70,96,58,Ancestral,331.854113199999,0,Previously infected (Pre-Omicron),BNT162b2,3
+70,151,58,Ancestral,139.5915131,0,Previously infected (Pre-Omicron),BNT162b2,3
+70,245,58,Ancestral,118.4885353,0,Previously infected (Pre-Omicron),BNT162b2,3
+70,96,58,Alpha,399.9695656,0,Previously infected (Pre-Omicron),BNT162b2,3
+70,151,58,Alpha,194.422716300001,0,Previously infected (Pre-Omicron),BNT162b2,3
+70,245,58,Alpha,194.422716341038,0,Previously infected (Pre-Omicron),BNT162b2,3
+70,96,58,Delta,175.0121818,0,Previously infected (Pre-Omicron),BNT162b2,3
+70,151,58,Delta,95.0059933199999,0,Previously infected (Pre-Omicron),BNT162b2,3
+70,245,58,Delta,47.95559391,0,Previously infected (Pre-Omicron),BNT162b2,3
+71,80,74,Ancestral,106.846159268181,0,Infection naive,AZD1222,1
+71,80,74,Alpha,5,-1,Infection naive,AZD1222,1
+71,80,74,Delta,5,-1,Infection naive,AZD1222,1
+72,0,-22,Ancestral,1353.690964,0,Infection naive,BNT162b2,2
+72,0,-22,Alpha,436.608868200001,0,Infection naive,BNT162b2,2
+72,0,-22,Delta,279.227353800001,0,Infection naive,BNT162b2,2
+73,5,-23,Ancestral,1007.484647,0,Previously infected (Pre-Omicron),BNT162b2,3
+73,5,-23,Alpha,414.604341,0,Previously infected (Pre-Omicron),BNT162b2,3
+73,28,-23,Alpha,321.546351899999,0,Previously infected (Pre-Omicron),BNT162b2,3
+73,5,-23,Delta,220.9646454,0,Previously infected (Pre-Omicron),BNT162b2,3
+73,28,-23,Delta,205.2804932,0,Previously infected (Pre-Omicron),BNT162b2,3
+74,73,45,Ancestral,2560,1,Infection naive,BNT162b2,2
+74,73,45,Alpha,1019.02999,0,Infection naive,BNT162b2,2
+74,73,45,Delta,607.57499,0,Infection naive,BNT162b2,2
+75,133,93,Ancestral,204.3828271,0,Infection naive,AZD1222,2
+75,236,93,Ancestral,129.456122,0,Infection naive,AZD1222,2
+75,133,93,Alpha,138.7376782,0,Infection naive,AZD1222,2
+75,236,93,Alpha,74.5262507817008,0,Infection naive,AZD1222,2
+75,133,93,Delta,45.0622313999999,0,Infection naive,AZD1222,2
+75,236,93,Delta,5,-1,Infection naive,AZD1222,2
+76,133,83,Ancestral,93.8473077200001,0,Infection naive,AZD1222,1
+76,133,83,Alpha,47.4538443170817,0,Infection naive,AZD1222,1
+76,133,83,Delta,41.53475753,0,Infection naive,AZD1222,1
+77,49,37,Ancestral,2560,1,Infection naive,BNT162b2,2
+77,250,37,Ancestral,135.255643954031,0,Infection naive,BNT162b2,2
+77,49,37,Alpha,598.064575800001,0,Infection naive,BNT162b2,2
+77,250,37,Alpha,85.1469302348619,0,Infection naive,BNT162b2,2
+77,49,37,Delta,423.047306599999,0,Infection naive,BNT162b2,2
+77,250,37,Delta,51.1242754956066,0,Infection naive,BNT162b2,2
+78,42,28,Ancestral,565.4394316,0,Infection naive,BNT162b2,2
+78,68,28,Ancestral,552.6994515,0,Infection naive,BNT162b2,2
+78,108,28,Ancestral,232.4881616,0,Infection naive,BNT162b2,2
+78,42,28,Alpha,682.695664400001,0,Infection naive,BNT162b2,2
+78,68,28,Alpha,387.206529300001,0,Infection naive,BNT162b2,2
+78,108,28,Alpha,224.478422,0,Infection naive,BNT162b2,2
+78,42,28,Delta,416.0604833,0,Infection naive,BNT162b2,2
+78,68,28,Delta,426.397685799999,0,Infection naive,BNT162b2,2
+78,108,28,Delta,265.8527891,0,Infection naive,BNT162b2,2
+79,80,47,Ancestral,1710.624543,0,Infection naive,BNT162b2,2
+79,151,47,Ancestral,205.1006451,0,Infection naive,BNT162b2,2
+79,80,47,Alpha,1377.630189,0,Infection naive,BNT162b2,2
+79,151,47,Alpha,257.143938,0,Infection naive,BNT162b2,2
+79,80,47,Delta,940.908222600001,0,Infection naive,BNT162b2,2
+79,151,47,Delta,205.1006451,0,Infection naive,BNT162b2,2
+80,96,53,Ancestral,2560,1,Infection naive,BNT162b2,2
+80,150,53,Ancestral,131.5147314,0,Infection naive,BNT162b2,2
+80,236,53,Ancestral,204.3828271,0,Infection naive,BNT162b2,2
+80,96,53,Alpha,1305.908147,0,Infection naive,BNT162b2,2
+80,150,53,Alpha,445.499932,0,Infection naive,BNT162b2,2
+80,236,53,Alpha,177.328328281948,0,Infection naive,BNT162b2,2
+80,96,53,Delta,624.857349700001,0,Infection naive,BNT162b2,2
+80,150,53,Delta,130.7102996,0,Infection naive,BNT162b2,2
+80,236,53,Delta,99.0883265799999,0,Infection naive,BNT162b2,2
+81,117,91,Ancestral,144.6991278,0,Infection naive,AZD1222,2
+81,160,91,Ancestral,75.8442035,0,Infection naive,AZD1222,2
+81,298,91,Ancestral,148.5544258,0,Infection naive,AZD1222,2
+81,117,91,Alpha,202.7769085,0,Infection naive,AZD1222,2
+81,160,91,Alpha,96.2633217999998,0,Infection naive,AZD1222,2
+81,298,91,Alpha,106.006625751991,0,Infection naive,AZD1222,2
+81,117,91,Delta,53.2276564800001,0,Infection naive,AZD1222,2
+81,160,91,Delta,60.7065783099999,0,Infection naive,AZD1222,2
+81,298,91,Delta,42.6413908199999,0,Infection naive,AZD1222,2
+82,74,54,Ancestral,2560,1,Infection naive,BNT162b2,2
+82,242,54,Ancestral,119.0089466,0,Infection naive,BNT162b2,2
+82,74,54,Alpha,380.478000600002,0,Infection naive,BNT162b2,2
+82,242,54,Alpha,130.481366955718,0,Infection naive,BNT162b2,2
+82,74,54,Delta,209.2772962,0,Infection naive,BNT162b2,2
+82,242,54,Delta,63.3150925200002,0,Infection naive,BNT162b2,2
+83,76,54,Ancestral,2560,1,Infection naive,BNT162b2,2
+83,159,54,Ancestral,255.123454000001,0,Infection naive,BNT162b2,2
+83,76,54,Alpha,1277.603903,0,Infection naive,BNT162b2,2
+83,159,54,Alpha,321.264642300001,0,Infection naive,BNT162b2,2
+83,76,54,Delta,560.013987499999,0,Infection naive,BNT162b2,2
+83,159,54,Delta,173.9416905,0,Infection naive,BNT162b2,2
+84,81,41,Ancestral,2560,1,Infection naive,BNT162b2,2
+84,150,41,Ancestral,583.054368300002,0,Infection naive,BNT162b2,2
+84,81,41,Alpha,1018.137209,0,Infection naive,BNT162b2,2
+84,150,41,Alpha,339.801208099999,0,Infection naive,BNT162b2,2
+84,81,41,Delta,587.1570799,0,Infection naive,BNT162b2,2
+84,150,41,Delta,264.690247899999,0,Infection naive,BNT162b2,2
+85,81,61,Ancestral,996.943540999999,0,Previously infected (Pre-Omicron),AZD1222,3
+85,159,61,Ancestral,400.6713215,0,Previously infected (Pre-Omicron),AZD1222,3
+85,81,61,Alpha,759.0782163,0,Previously infected (Pre-Omicron),AZD1222,3
+85,159,61,Alpha,392.674924599999,0,Previously infected (Pre-Omicron),AZD1222,3
+85,81,61,Delta,457.369630600001,0,Previously infected (Pre-Omicron),AZD1222,3
+85,159,61,Delta,294.562854899999,0,Previously infected (Pre-Omicron),AZD1222,3
+86,5,-21,Ancestral,541.194392500001,0,Infection naive,BNT162b2,2
+86,5,-21,Alpha,301.6169153,0,Infection naive,BNT162b2,2
+86,5,-21,Delta,193.7422693,0,Infection naive,BNT162b2,2
+87,80,58,Ancestral,1113.353883,0,Previously infected (Pre-Omicron),BNT162b2,3
+87,150,58,Ancestral,213.5390003,0,Previously infected (Pre-Omicron),BNT162b2,3
+87,80,58,Alpha,643.1948116,0,Previously infected (Pre-Omicron),BNT162b2,3
+87,150,58,Alpha,463.828917200002,0,Previously infected (Pre-Omicron),BNT162b2,3
+87,244,58,Alpha,364.802713224805,0,Previously infected (Pre-Omicron),BNT162b2,3
+87,80,58,Delta,272.219313700001,0,Previously infected (Pre-Omicron),BNT162b2,3
+87,150,58,Delta,241.2061618,0,Previously infected (Pre-Omicron),BNT162b2,3
+87,244,58,Delta,333.019626300001,0,Previously infected (Pre-Omicron),BNT162b2,3
+88,46,42,Ancestral,1124.14011170073,0,Previously infected (Pre-Omicron),BNT162b2,3
+88,46,42,Alpha,767.776927952915,0,Previously infected (Pre-Omicron),BNT162b2,3
+88,46,42,Delta,695.377960810212,0,Previously infected (Pre-Omicron),BNT162b2,3
+88,96,42,Delta,503.662354,0,Previously infected (Pre-Omicron),BNT162b2,3
+88,151,42,Delta,527.149266099999,0,Previously infected (Pre-Omicron),BNT162b2,3
+88,243,42,Delta,283.6676231,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,68,53,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+89,109,53,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+89,193,53,Ancestral,284.4145027,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,252,53,Ancestral,399.269038768964,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,271,53,Ancestral,506.318070100001,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,68,53,Alpha,1651.689684,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,109,53,Alpha,1240.092051,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,193,53,Alpha,421.9363738,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,252,53,Alpha,447.848968718045,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,68,53,Delta,848.457022200001,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,109,53,Delta,633.1268378,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,193,53,Delta,217.505870200001,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,252,53,Delta,326.659577338246,0,Previously infected (Pre-Omicron),BNT162b2,3
+89,271,53,Delta,559.033150799998,0,Previously infected (Pre-Omicron),BNT162b2,3
+90,80,42,Ancestral,2052.72683499999,0,Infection naive,BNT162b2,2
+90,160,42,Ancestral,220.7710563,0,Infection naive,BNT162b2,2
+90,80,42,Alpha,649.995582700002,0,Infection naive,BNT162b2,2
+90,160,42,Alpha,315.958807000001,0,Infection naive,BNT162b2,2
+90,80,42,Delta,350.694162500001,0,Infection naive,BNT162b2,2
+90,160,42,Delta,178.419662,0,Infection naive,BNT162b2,2
+91,133,85,Ancestral,126.317704098264,0,Infection naive,AZD1222,1
+91,133,85,Alpha,144.572355573196,0,Infection naive,AZD1222,1
+91,133,85,Delta,5,-1,Infection naive,AZD1222,1
+92,81,49,Ancestral,1644.46705,0,Previously infected (Pre-Omicron),BNT162b2,3
+92,150,49,Ancestral,117.0434584,0,Previously infected (Pre-Omicron),BNT162b2,3
+92,81,49,Alpha,574.934746699999,0,Previously infected (Pre-Omicron),BNT162b2,3
+92,150,49,Alpha,98.3097495,0,Previously infected (Pre-Omicron),BNT162b2,3
+92,81,49,Delta,241.2061618,0,Previously infected (Pre-Omicron),BNT162b2,3
+92,150,49,Delta,76.7806138099998,0,Previously infected (Pre-Omicron),BNT162b2,3
+93,48,35,Ancestral,2560,1,Infection naive,BNT162b2,2
+93,231,35,Ancestral,218.6527375,0,Infection naive,BNT162b2,2
+93,48,35,Alpha,837.375032099998,0,Infection naive,BNT162b2,2
+93,231,35,Alpha,224.675262,0,Infection naive,BNT162b2,2
+93,48,35,Delta,359.407310600001,0,Infection naive,BNT162b2,2
+93,231,35,Delta,219.4206732,0,Infection naive,BNT162b2,2
+94,3,-18,Ancestral,1494.629897,0,Infection naive,BNT162b2,2
+94,24,-18,Ancestral,1207.909069,0,Infection naive,BNT162b2,2
+94,67,-18,Ancestral,641.505766099999,0,Infection naive,BNT162b2,2
+94,3,-18,Alpha,685.694119700002,0,Infection naive,BNT162b2,2
+94,24,-18,Alpha,473.6892911,0,Infection naive,BNT162b2,2
+94,67,-18,Alpha,447.456604200001,0,Infection naive,BNT162b2,2
+94,3,-18,Delta,1103.638055,0,Infection naive,BNT162b2,2
+94,24,-18,Delta,1045.263996,0,Infection naive,BNT162b2,2
+94,67,-18,Delta,190.8768368,0,Infection naive,BNT162b2,2
+95,20,-9,Ancestral,146.485655279567,0,Infection naive,BNT162b2,1
+95,20,-9,Alpha,164.597166448315,0,Infection naive,BNT162b2,1
+95,20,-9,Delta,110.174700267007,0,Infection naive,BNT162b2,1
+96,68,34,Ancestral,732.926266099998,0,Infection naive,BNT162b2,2
+96,152,34,Ancestral,381.8142869,0,Infection naive,BNT162b2,2
+96,68,34,Alpha,1120.205809,0,Infection naive,BNT162b2,2
+96,152,34,Alpha,172.272703700001,0,Infection naive,BNT162b2,2
+96,68,34,Delta,651.706981500002,0,Infection naive,BNT162b2,2
+96,152,34,Delta,180.1482008,0,Infection naive,BNT162b2,2
+97,76,51,Ancestral,2435.337141,0,Previously infected (Pre-Omicron),BNT162b2,3
+97,76,51,Alpha,2152.219626,0,Previously infected (Pre-Omicron),BNT162b2,3
+97,76,51,Delta,406.329875899999,0,Previously infected (Pre-Omicron),BNT162b2,3
+98,76,52,Ancestral,290.2062941,0,Infection naive,BNT162b2,2
+98,159,52,Ancestral,82.3576725299998,0,Infection naive,BNT162b2,2
+98,76,52,Alpha,245.471750300001,0,Infection naive,BNT162b2,2
+98,159,52,Alpha,171.669778,0,Infection naive,BNT162b2,2
+98,76,52,Delta,96.4322180399998,0,Infection naive,BNT162b2,2
+98,159,52,Delta,53.7904550299999,0,Infection naive,BNT162b2,2
+99,52,40,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+99,235,40,Ancestral,134.310556301701,0,Previously infected (Pre-Omicron),BNT162b2,3
+99,52,40,Alpha,700.271046999999,0,Previously infected (Pre-Omicron),BNT162b2,3
+99,235,40,Alpha,87.9535289881869,0,Previously infected (Pre-Omicron),BNT162b2,3
+99,52,40,Delta,399.269038800001,0,Previously infected (Pre-Omicron),BNT162b2,3
+99,235,40,Delta,54.9339671726918,0,Previously infected (Pre-Omicron),BNT162b2,3
+100,38,38,Ancestral,95.1726835550794,0,Infection naive,BNT162b2,2
+100,74,38,Ancestral,2560,1,Infection naive,BNT162b2,2
+100,158,38,Ancestral,117.5575229,0,Infection naive,BNT162b2,2
+100,38,38,Alpha,5,-1,Infection naive,BNT162b2,2
+100,74,38,Alpha,201.8901902,0,Infection naive,BNT162b2,2
+100,158,38,Alpha,133.606076800001,0,Infection naive,BNT162b2,2
+100,38,38,Delta,5,-1,Infection naive,BNT162b2,2
+100,74,38,Delta,79.45059724,0,Infection naive,BNT162b2,2
+100,158,38,Delta,57.3446769799999,0,Infection naive,BNT162b2,2
+101,84,49,Ancestral,934.333704000001,0,Previously infected (Pre-Omicron),AZD1222,2
+101,84,49,Alpha,532.723038468038,0,Previously infected (Pre-Omicron),AZD1222,2
+101,84,49,Delta,649.995582700002,0,Previously infected (Pre-Omicron),AZD1222,2
+102,116,75,Ancestral,121.645490188642,0,Infection naive,"",1
+102,116,75,Alpha,122.608877763544,0,Infection naive,"",1
+102,116,75,Delta,154.260170083228,0,Infection naive,"",1
+103,69,28,Ancestral,182.8525756,0,Infection naive,BNT162b2,2
+103,69,28,Alpha,199.777854400001,0,Infection naive,BNT162b2,2
+103,69,28,Delta,120.583935,0,Infection naive,BNT162b2,2
+104,117,83,Ancestral,91.65245542,0,Infection naive,AZD1222,2
+104,151,83,Ancestral,5,-1,Infection naive,AZD1222,2
+104,117,83,Alpha,5,-1,Infection naive,AZD1222,2
+104,117,83,Delta,5,-1,Infection naive,AZD1222,2
+104,151,83,Delta,5,-1,Infection naive,AZD1222,2
+105,21,-21,Ancestral,266.319234099999,0,Infection naive,BNT162b2,2
+105,21,-21,Alpha,227.6486598,0,Infection naive,BNT162b2,2
+105,21,-21,Delta,155.4818539,0,Infection naive,BNT162b2,2
+106,76,26,Ancestral,380.478000600002,0,Infection naive,BNT162b2,2
+106,76,26,Alpha,304.538995399999,0,Infection naive,BNT162b2,2
+106,76,26,Delta,180.7809038,0,Infection naive,BNT162b2,2
+107,68,62,Ancestral,761.076822999998,0,Previously infected (Pre-Omicron),BNT162b2,3
+107,153,62,Ancestral,452.187752400001,0,Previously infected (Pre-Omicron),BNT162b2,3
+107,248,62,Ancestral,246.549882300001,0,Previously infected (Pre-Omicron),BNT162b2,3
+107,68,62,Alpha,1171.41634518555,0,Previously infected (Pre-Omicron),BNT162b2,3
+107,153,62,Alpha,367.369678499999,0,Previously infected (Pre-Omicron),BNT162b2,3
+107,248,62,Alpha,349.160620479432,0,Previously infected (Pre-Omicron),BNT162b2,3
+107,68,62,Delta,786.8526775,0,Previously infected (Pre-Omicron),BNT162b2,3
+107,153,62,Delta,488.445967700001,0,Previously infected (Pre-Omicron),BNT162b2,3
+107,248,62,Delta,214.288976000001,0,Previously infected (Pre-Omicron),BNT162b2,3
+108,102,83,Ancestral,124.449475455526,0,Infection naive,AZD1222,1
+108,102,83,Alpha,5,-1,Infection naive,AZD1222,1
+108,102,83,Delta,5,-1,Infection naive,AZD1222,1
+109,77,40,Ancestral,458.573856899999,0,Infection naive,BNT162b2,2
+109,77,40,Alpha,350.3869162,0,Infection naive,BNT162b2,2
+109,77,40,Delta,148.164318200001,0,Infection naive,BNT162b2,2
+110,40,30,Ancestral,517.988937699999,0,Infection naive,BNT162b2,2
+110,61,30,Ancestral,2560,1,Infection naive,BNT162b2,2
+110,40,30,Alpha,544.525071300002,0,Infection naive,BNT162b2,2
+110,61,30,Alpha,201.3600216,0,Infection naive,BNT162b2,2
+110,40,30,Delta,214.288976000001,0,Infection naive,BNT162b2,2
+110,61,30,Delta,125.5450607,0,Infection naive,BNT162b2,2
+111,80,72,Ancestral,1211.089419,0,Infection naive,BNT162b2,2
+111,159,72,Ancestral,81.2107586800002,0,Infection naive,BNT162b2,2
+111,80,72,Alpha,527.149266099999,0,Infection naive,BNT162b2,2
+111,159,72,Alpha,209.6444781,0,Infection naive,BNT162b2,2
+111,80,72,Delta,254.676618,0,Infection naive,BNT162b2,2
+111,159,72,Delta,116.8384626,0,Infection naive,BNT162b2,2
+112,126,93,Ancestral,766.4322048,0,Infection naive,AZD1222,2
+112,150,93,Ancestral,73.6818878699998,0,Infection naive,AZD1222,2
+112,126,93,Alpha,45.6185921499999,0,Infection naive,AZD1222,2
+112,150,93,Alpha,40.1389579100002,0,Infection naive,AZD1222,2
+112,126,93,Delta,41.1001878499999,0,Infection naive,AZD1222,2
+112,150,93,Delta,5,-1,Infection naive,AZD1222,2
+113,52,28,Ancestral,2560,1,Infection naive,BNT162b2,2
+113,52,28,Alpha,378.8142175,0,Infection naive,BNT162b2,2
+113,52,28,Delta,142.8091625,0,Infection naive,BNT162b2,2
+114,61,41,Ancestral,2560,1,Infection naive,BNT162b2,2
+114,103,41,Ancestral,374.194229200001,0,Infection naive,BNT162b2,2
+114,180,41,Ancestral,131.7454771,0,Infection naive,BNT162b2,2
+114,61,41,Alpha,361.936310700001,0,Infection naive,BNT162b2,2
+114,103,41,Alpha,368.0142372,0,Infection naive,BNT162b2,2
+114,180,41,Alpha,119.8463632,0,Infection naive,BNT162b2,2
+114,61,41,Delta,301.3526661,0,Infection naive,BNT162b2,2
+114,103,41,Delta,186.7397735,0,Infection naive,BNT162b2,2
+114,180,41,Delta,76.7133456300002,0,Infection naive,BNT162b2,2
+115,48,38,Ancestral,2560,1,Infection naive,BNT162b2,2
+115,48,38,Alpha,2256.534692,0,Infection naive,BNT162b2,2
+115,48,38,Delta,1176.561302,0,Infection naive,BNT162b2,2
+116,32,29,Ancestral,5,-1,Infection naive,AZD1222,1
+116,32,29,Alpha,5,-1,Infection naive,AZD1222,1
+116,81,29,Alpha,5,-1,Infection naive,AZD1222,1
+116,32,29,Delta,5,-1,Infection naive,AZD1222,1
+116,81,29,Delta,5,-1,Infection naive,AZD1222,1
+117,80,47,Ancestral,2036.59773000001,0,Infection naive,BNT162b2,2
+117,151,47,Ancestral,298.9848162,0,Infection naive,BNT162b2,2
+117,325,47,Ancestral,395.438015100001,0,Infection naive,BNT162b2,2
+117,80,47,Alpha,1022.608951,0,Infection naive,BNT162b2,2
+117,151,47,Alpha,910.0857901,0,Infection naive,BNT162b2,2
+117,325,47,Alpha,324.092880833301,0,Infection naive,BNT162b2,2
+117,80,47,Delta,538.8278166,0,Infection naive,BNT162b2,2
+117,151,47,Delta,446.672906199999,0,Infection naive,BNT162b2,2
+117,325,47,Delta,266.085909400001,0,Infection naive,BNT162b2,2
+118,133,97,Ancestral,145.589651248851,0,Previously infected (Pre-Omicron),mRNA1273,2
+118,133,97,Alpha,149.20688905334,0,Previously infected (Pre-Omicron),mRNA1273,2
+118,133,97,Delta,69.6624519845714,0,Previously infected (Pre-Omicron),mRNA1273,2
+119,4,-17,Ancestral,493.6105138,0,Infection naive,BNT162b2,2
+119,25,-17,Ancestral,367.369678499999,0,Infection naive,BNT162b2,2
+119,67,-17,Ancestral,184.9479879,0,Infection naive,BNT162b2,2
+119,4,-17,Alpha,238.0556849,0,Infection naive,BNT162b2,2
+119,25,-17,Alpha,118.2810085,0,Infection naive,BNT162b2,2
+119,67,-17,Alpha,114.7075639,0,Infection naive,BNT162b2,2
+119,4,-17,Delta,169.5761069,0,Infection naive,BNT162b2,2
+119,25,-17,Delta,138.9810967,0,Infection naive,BNT162b2,2
+119,67,-17,Delta,93.60086235,0,Infection naive,BNT162b2,2
+120,84,43,Ancestral,1041.605746,0,Infection naive,BNT162b2,2
+120,150,43,Ancestral,661.490370600001,0,Infection naive,BNT162b2,2
+120,84,43,Alpha,665.561388300001,0,Infection naive,BNT162b2,2
+120,150,43,Alpha,385.5133232,0,Infection naive,BNT162b2,2
+120,84,43,Delta,1132.050219,0,Infection naive,BNT162b2,2
+120,150,43,Delta,390.615284299999,0,Infection naive,BNT162b2,2
+121,10,-17,Ancestral,114.707563909016,0,Infection naive,BNT162b2,1
+121,31,-17,Ancestral,116.327542543632,0,Infection naive,BNT162b2,1
+121,10,-17,Alpha,59.3387915012427,0,Infection naive,BNT162b2,1
+121,31,-17,Alpha,5,-1,Infection naive,BNT162b2,1
+121,10,-17,Delta,5,-1,Infection naive,BNT162b2,1
+121,31,-17,Delta,5,-1,Infection naive,BNT162b2,1
+122,81,41,Ancestral,1847.789234,0,Infection naive,BNT162b2,2
+122,150,41,Ancestral,199.953035,0,Infection naive,BNT162b2,2
+122,244,41,Ancestral,163.0178413,0,Infection naive,BNT162b2,2
+122,81,41,Alpha,927.805124399998,0,Infection naive,BNT162b2,2
+122,150,41,Alpha,350.694162500001,0,Infection naive,BNT162b2,2
+122,244,41,Alpha,200.831245125291,0,Infection naive,BNT162b2,2
+122,81,41,Delta,775.21519,0,Infection naive,BNT162b2,2
+122,150,41,Delta,193.912157500001,0,Infection naive,BNT162b2,2
+122,244,41,Delta,95.7584058700001,0,Infection naive,BNT162b2,2
+123,119,73,Ancestral,185.1101646,0,Infection naive,AZD1222,2
+123,159,73,Ancestral,157.5395321,0,Infection naive,AZD1222,2
+123,119,73,Alpha,87.4921992100002,0,Infection naive,AZD1222,2
+123,159,73,Alpha,74.8535761800001,0,Infection naive,AZD1222,2
+123,119,73,Delta,70.2141530000002,0,Infection naive,AZD1222,2
+123,159,73,Delta,79.93956094,0,Infection naive,AZD1222,2
+124,124,81,Ancestral,141.3149794,0,Infection naive,AZD1222,1
+124,124,81,Alpha,56.1509832100001,0,Infection naive,AZD1222,1
+124,124,81,Delta,5,-1,Infection naive,AZD1222,1
+125,68,42,Ancestral,2560,1,Infection naive,BNT162b2,2
+125,152,42,Ancestral,115.1104312,0,Infection naive,BNT162b2,2
+125,68,42,Alpha,809.234558300001,0,Infection naive,BNT162b2,2
+125,152,42,Alpha,159.6244421,0,Infection naive,BNT162b2,2
+125,68,42,Delta,377.15771,0,Infection naive,BNT162b2,2
+125,152,42,Delta,116.6338259,0,Infection naive,BNT162b2,2
+126,131,90,Ancestral,186.739773455233,0,Infection naive,AZD1222,1
+126,131,90,Alpha,114.105905100308,0,Infection naive,AZD1222,1
+126,131,90,Delta,5,-1,Infection naive,AZD1222,1
+127,76,50,Ancestral,674.369561900001,0,Infection naive,BNT162b2,2
+127,159,50,Ancestral,99.7855700200003,0,Infection naive,BNT162b2,2
+127,76,50,Alpha,357.2089356,0,Infection naive,BNT162b2,2
+127,159,50,Alpha,204.741421500001,0,Infection naive,BNT162b2,2
+127,76,50,Delta,256.0194795,0,Infection naive,BNT162b2,2
+127,159,50,Delta,84.2560552900003,0,Infection naive,BNT162b2,2
+128,76,41,Ancestral,416.060483272753,0,Infection naive,BNT162b2,2
+128,159,41,Ancestral,243.116426,0,Infection naive,BNT162b2,2
+128,243,41,Ancestral,177.328328299999,0,Infection naive,BNT162b2,2
+128,76,41,Alpha,457.770687576985,0,Infection naive,BNT162b2,2
+128,159,41,Alpha,366.404956600001,0,Infection naive,BNT162b2,2
+128,243,41,Alpha,227.050848726935,0,Infection naive,BNT162b2,2
+128,76,41,Delta,306.950832311165,0,Infection naive,BNT162b2,2
+128,159,41,Delta,262.3803941,0,Infection naive,BNT162b2,2
+128,243,41,Delta,255.7951785,0,Infection naive,BNT162b2,2
+129,39,26,Ancestral,494.4765649,0,Previously infected (Pre-Omicron),BNT162b2,3
+129,88,26,Ancestral,278.982720200001,0,Previously infected (Pre-Omicron),BNT162b2,3
+129,172,26,Ancestral,143.8140513,0,Previously infected (Pre-Omicron),BNT162b2,3
+129,39,26,Alpha,843.267292800003,0,Previously infected (Pre-Omicron),BNT162b2,3
+129,88,26,Alpha,168.2436788,0,Previously infected (Pre-Omicron),BNT162b2,3
+129,172,26,Alpha,155.8912282,0,Previously infected (Pre-Omicron),BNT162b2,3
+129,39,26,Delta,282.6748337,0,Previously infected (Pre-Omicron),BNT162b2,3
+129,88,26,Delta,155.0735547,0,Previously infected (Pre-Omicron),BNT162b2,3
+129,172,26,Delta,163.733829,0,Previously infected (Pre-Omicron),BNT162b2,3
+130,14,-16,Ancestral,166.483379566172,0,Infection naive,BNT162b2,1
+130,14,-16,Alpha,168.096279036151,0,Infection naive,BNT162b2,1
+130,14,-16,Delta,191.044212302065,0,Infection naive,BNT162b2,1
+131,47,28,Ancestral,2560,1,Infection naive,BNT162b2,2
+131,89,28,Ancestral,890.360596700001,0,Infection naive,BNT162b2,2
+131,173,28,Ancestral,418.621048999999,0,Infection naive,BNT162b2,2
+131,47,28,Alpha,1469.945388,0,Infection naive,BNT162b2,2
+131,89,28,Alpha,563.954573599998,0,Infection naive,BNT162b2,2
+131,47,28,Delta,996.943540999999,0,Infection naive,BNT162b2,2
+131,89,28,Delta,365.1226004,0,Infection naive,BNT162b2,2
+131,173,28,Delta,445.499932,0,Infection naive,BNT162b2,2
+132,133,84,Ancestral,1880.466295,0,Infection naive,AZD1222,2
+132,150,84,Ancestral,290.2062941,0,Infection naive,AZD1222,2
+132,236,84,Ancestral,570.91743762185,0,Infection naive,AZD1222,2
+132,325,84,Ancestral,780.670057600001,0,Infection naive,AZD1222,2
+132,133,84,Alpha,308.028882,0,Infection naive,AZD1222,2
+132,150,84,Alpha,510.327923100001,0,Infection naive,AZD1222,2
+132,236,84,Alpha,625.405272831979,0,Infection naive,AZD1222,2
+132,325,84,Alpha,473.274287620173,0,Infection naive,AZD1222,2
+132,133,84,Delta,328.958145200001,0,Infection naive,AZD1222,2
+132,150,84,Delta,274.134808000001,0,Infection naive,AZD1222,2
+132,236,84,Delta,435.080810005539,0,Infection naive,AZD1222,2
+132,325,84,Delta,745.887634099998,0,Infection naive,AZD1222,2
+133,76,51,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+133,159,51,Ancestral,332.1451085,0,Previously infected (Pre-Omicron),BNT162b2,3
+133,298,51,Ancestral,352.543306400001,0,Previously infected (Pre-Omicron),BNT162b2,3
+133,76,51,Alpha,1791.964782,0,Previously infected (Pre-Omicron),BNT162b2,3
+133,159,51,Alpha,528.537218,0,Previously infected (Pre-Omicron),BNT162b2,3
+133,298,51,Alpha,315.12909135797,0,Previously infected (Pre-Omicron),BNT162b2,3
+133,76,51,Delta,1244.447409,0,Previously infected (Pre-Omicron),BNT162b2,3
+133,159,51,Delta,293.531934100001,0,Previously infected (Pre-Omicron),BNT162b2,3
+133,298,51,Delta,177.639455,0,Previously infected (Pre-Omicron),BNT162b2,3
+134,4,-26,Ancestral,136.9255775,0,Previously infected (Pre-Omicron),BNT162b2,2
+134,4,-26,Alpha,101.461249822687,0,Previously infected (Pre-Omicron),BNT162b2,2
+134,27,-26,Alpha,125.325174773812,0,Previously infected (Pre-Omicron),BNT162b2,2
+134,4,-26,Delta,47.1222645000002,0,Previously infected (Pre-Omicron),BNT162b2,2
+134,27,-26,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,2
+135,133,89,Ancestral,2065.35995499999,0,Previously infected (Pre-Omicron),AZD1222,3
+135,160,89,Ancestral,2560,1,Previously infected (Pre-Omicron),AZD1222,3
+135,234,89,Ancestral,1593.388057,0,Previously infected (Pre-Omicron),AZD1222,3
+135,133,89,Alpha,881.044935599999,0,Previously infected (Pre-Omicron),AZD1222,3
+135,160,89,Alpha,815.643398595694,0,Previously infected (Pre-Omicron),AZD1222,3
+135,234,89,Alpha,447.848968718045,0,Previously infected (Pre-Omicron),AZD1222,3
+135,133,89,Delta,1216.408623,0,Previously infected (Pre-Omicron),AZD1222,3
+135,160,89,Delta,854.427262200003,0,Previously infected (Pre-Omicron),AZD1222,3
+135,234,89,Delta,1009.252303,0,Previously infected (Pre-Omicron),AZD1222,3
+136,73,27,Ancestral,2560,1,Infection naive,BNT162b2,2
+136,157,27,Ancestral,196.650717500001,0,Infection naive,BNT162b2,2
+136,248,27,Ancestral,168.096279036151,0,Infection naive,BNT162b2,2
+136,73,27,Alpha,454.5720527,0,Infection naive,BNT162b2,2
+136,157,27,Alpha,166.0461901,0,Infection naive,BNT162b2,2
+136,248,27,Alpha,327.519652092377,0,Infection naive,BNT162b2,2
+136,73,27,Delta,180.9394264,0,Infection naive,BNT162b2,2
+136,157,27,Delta,111.8286368,0,Infection naive,BNT162b2,2
+136,248,27,Delta,148.164318226981,0,Infection naive,BNT162b2,2
+137,133,83,Ancestral,255.347166000001,0,Infection naive,AZD1222,2
+137,160,83,Ancestral,150.1251547,0,Infection naive,AZD1222,2
+137,231,83,Ancestral,156.4387377,0,Infection naive,AZD1222,2
+137,133,83,Alpha,162.7323236,0,Infection naive,AZD1222,2
+137,160,83,Alpha,94.8395950400003,0,Infection naive,AZD1222,2
+137,231,83,Alpha,5,-1,Infection naive,AZD1222,2
+137,133,83,Delta,65.74692666,0,Infection naive,AZD1222,2
+137,160,83,Delta,43.3574594500001,0,Infection naive,AZD1222,2
+137,231,83,Delta,5,-1,Infection naive,AZD1222,2
+138,41,41,Ancestral,101.639265952646,0,Infection naive,BNT162b2,2
+138,76,41,Ancestral,2560,1,Infection naive,BNT162b2,2
+138,160,41,Ancestral,130.0247039,0,Infection naive,BNT162b2,2
+138,41,41,Alpha,5,-1,Infection naive,BNT162b2,2
+138,76,41,Alpha,741.975338799998,0,Infection naive,BNT162b2,2
+138,160,41,Alpha,177.951127500001,0,Infection naive,BNT162b2,2
+138,41,41,Delta,5,-1,Infection naive,BNT162b2,2
+138,76,41,Delta,468.733176700001,0,Infection naive,BNT162b2,2
+138,160,41,Delta,139.469215700001,0,Infection naive,BNT162b2,2
+139,69,31,Ancestral,2560,1,Infection naive,BNT162b2,2
+139,69,31,Alpha,1264.236594,0,Infection naive,BNT162b2,2
+139,69,31,Delta,707.055308599998,0,Infection naive,BNT162b2,2
+140,89,42,Ancestral,1079.717811,0,Infection naive,BNT162b2,2
+140,172,42,Ancestral,97.7940997500001,0,Infection naive,BNT162b2,2
+140,89,42,Alpha,482.912002799999,0,Infection naive,BNT162b2,2
+140,172,42,Alpha,181.2568889,0,Infection naive,BNT162b2,2
+140,243,42,Alpha,110.078175224005,0,Infection naive,BNT162b2,2
+140,89,42,Delta,238.4733591,0,Infection naive,BNT162b2,2
+140,172,42,Delta,75.8442035,0,Infection naive,BNT162b2,2
+140,243,42,Delta,70.5843789200002,0,Infection naive,BNT162b2,2
+141,6,-16,Ancestral,1038.870464,0,Infection naive,BNT162b2,3
+141,27,-16,Ancestral,2560,1,Infection naive,BNT162b2,3
+141,70,-16,Ancestral,348.8547177,0,Infection naive,BNT162b2,3
+141,6,-16,Alpha,452.981126300002,0,Infection naive,BNT162b2,3
+141,27,-16,Alpha,442.387037999999,0,Infection naive,BNT162b2,3
+141,70,-16,Alpha,408.4723763,0,Infection naive,BNT162b2,3
+141,6,-16,Delta,249.375238500001,0,Infection naive,BNT162b2,3
+141,27,-16,Delta,185.5975484,0,Infection naive,BNT162b2,3
+141,70,-16,Delta,97.6228182400002,0,Infection naive,BNT162b2,3
+142,84,70,Ancestral,429.7745987,0,Previously infected (Pre-Omicron),AZD1222,4
+142,160,70,Ancestral,129.9107881,0,Previously infected (Pre-Omicron),AZD1222,4
+142,84,70,Alpha,485.8839935,0,Previously infected (Pre-Omicron),AZD1222,4
+142,160,70,Alpha,286.164878000001,0,Previously infected (Pre-Omicron),AZD1222,4
+142,264,70,Alpha,254.899938100001,0,Previously infected (Pre-Omicron),AZD1222,4
+142,84,70,Delta,183.9779073,0,Previously infected (Pre-Omicron),AZD1222,4
+142,160,70,Delta,123.579895,0,Previously infected (Pre-Omicron),AZD1222,4
+142,264,70,Delta,144.4456944,0,Previously infected (Pre-Omicron),AZD1222,4
+143,19,-18,Ancestral,731.001583499999,0,Infection naive,BNT162b2,2
+143,40,-18,Ancestral,285.4134019,0,Infection naive,BNT162b2,2
+143,87,-18,Ancestral,222.9098976,0,Infection naive,BNT162b2,2
+143,171,-18,Ancestral,138.6161289,0,Infection naive,BNT162b2,2
+143,19,-18,Alpha,179.2032958,0,Infection naive,BNT162b2,2
+143,40,-18,Alpha,178.2633469,0,Infection naive,BNT162b2,2
+143,87,-18,Alpha,237.4305447,0,Infection naive,BNT162b2,2
+143,171,-18,Alpha,110.5616476,0,Infection naive,BNT162b2,2
+143,19,-18,Delta,320.140269600001,0,Infection naive,BNT162b2,2
+143,40,-18,Delta,167.9490084,0,Infection naive,BNT162b2,2
+143,87,-18,Delta,149.468676,0,Infection naive,BNT162b2,2
+143,171,-18,Delta,61.9971178600002,0,Infection naive,BNT162b2,2
+144,126,96,Ancestral,265.6198731,0,Infection naive,AZD1222,2
+144,126,96,Alpha,85.22159364,0,Infection naive,AZD1222,2
+144,126,96,Delta,160.3255257,0,Infection naive,AZD1222,2
+145,81,74,Ancestral,184.3007008,0,Infection naive,AZD1222,2
+145,160,74,Ancestral,56.3481924800002,0,Infection naive,AZD1222,2
+145,81,74,Alpha,145.9729799,0,Infection naive,AZD1222,2
+145,160,74,Alpha,96.1789846400002,0,Infection naive,AZD1222,2
+145,81,74,Delta,68.93358797,0,Infection naive,AZD1222,2
+145,160,74,Delta,125.8756132,0,Infection naive,AZD1222,2
+146,124,89,Ancestral,2560,1,Previously infected (Pre-Omicron),AZD1222,3
+146,168,89,Ancestral,264.2266561,0,Previously infected (Pre-Omicron),AZD1222,3
+146,234,89,Ancestral,231.674491839836,0,Previously infected (Pre-Omicron),AZD1222,3
+146,124,89,Alpha,492.745979499999,0,Previously infected (Pre-Omicron),AZD1222,3
+146,168,89,Alpha,245.2566903,0,Previously infected (Pre-Omicron),AZD1222,3
+146,124,89,Delta,342.192248199999,0,Previously infected (Pre-Omicron),AZD1222,3
+146,168,89,Delta,201.3600216,0,Previously infected (Pre-Omicron),AZD1222,3
+146,234,89,Delta,278.738300902528,0,Previously infected (Pre-Omicron),AZD1222,3
+147,41,41,Ancestral,141.4388953,0,Infection naive,BNT162b2,2
+147,80,41,Ancestral,479.537695000001,0,Infection naive,BNT162b2,2
+147,150,41,Ancestral,284.4145027,0,Infection naive,BNT162b2,2
+147,245,41,Ancestral,166.337522,0,Infection naive,BNT162b2,2
+147,41,41,Alpha,5,-1,Infection naive,BNT162b2,2
+147,80,41,Alpha,619.404450899999,0,Infection naive,BNT162b2,2
+147,150,41,Alpha,138.859334100001,0,Infection naive,BNT162b2,2
+147,245,41,Alpha,131.630053697801,0,Infection naive,BNT162b2,2
+147,41,41,Delta,5,-1,Infection naive,BNT162b2,2
+147,80,41,Delta,291.480903899999,0,Infection naive,BNT162b2,2
+147,150,41,Delta,193.4029393,0,Infection naive,BNT162b2,2
+147,245,41,Delta,58.40995721,0,Infection naive,BNT162b2,2
+148,117,90,Ancestral,289.9520417,0,Infection naive,AZD1222,2
+148,159,90,Ancestral,373.8663943,0,Infection naive,AZD1222,2
+148,117,90,Alpha,54.4068706399999,0,Infection naive,AZD1222,2
+148,159,90,Alpha,98.9147783000003,0,Infection naive,AZD1222,2
+148,117,90,Delta,72.2113817700003,0,Infection naive,AZD1222,2
+148,159,90,Delta,99.7855700200003,0,Infection naive,AZD1222,2
+149,14,-23,Ancestral,220.191306000001,0,Infection naive,BNT162b2,2
+149,14,-23,Alpha,164.021103800001,0,Infection naive,BNT162b2,2
+149,39,-23,Alpha,202.954718900001,0,Infection naive,BNT162b2,2
+149,74,-23,Alpha,116.6338259,0,Infection naive,BNT162b2,2
+149,158,-23,Alpha,48.8036602599998,0,Infection naive,BNT162b2,2
+149,14,-23,Delta,90.2178130599998,0,Infection naive,BNT162b2,2
+149,39,-23,Delta,94.2594927799998,0,Infection naive,BNT162b2,2
+149,74,-23,Delta,70.64627275,0,Infection naive,BNT162b2,2
+149,158,-23,Delta,41.5711784200001,0,Infection naive,BNT162b2,2
+150,42,26,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+150,62,26,Ancestral,1273.13250237821,0,Previously infected (Pre-Omicron),BNT162b2,3
+150,104,26,Ancestral,1333.669984,0,Previously infected (Pre-Omicron),BNT162b2,3
+150,188,26,Ancestral,607.57499,0,Previously infected (Pre-Omicron),BNT162b2,3
+150,42,26,Alpha,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+150,62,26,Alpha,1143.01757944835,0,Previously infected (Pre-Omicron),BNT162b2,3
+150,104,26,Alpha,1211.089419,0,Previously infected (Pre-Omicron),BNT162b2,3
+150,188,26,Alpha,440.838757200001,0,Previously infected (Pre-Omicron),BNT162b2,3
+150,42,26,Delta,877.961425299999,0,Previously infected (Pre-Omicron),BNT162b2,3
+150,62,26,Delta,950.856843638419,0,Previously infected (Pre-Omicron),BNT162b2,3
+150,104,26,Delta,1060.025929,0,Previously infected (Pre-Omicron),BNT162b2,3
+150,188,26,Delta,525.764959,0,Previously infected (Pre-Omicron),BNT162b2,3
+151,76,39,Ancestral,1182.765086,0,Infection naive,BNT162b2,2
+151,76,39,Alpha,1210.028373,0,Infection naive,BNT162b2,2
+151,76,39,Delta,782.725514299998,0,Infection naive,BNT162b2,2
+152,41,34,Ancestral,777.937842600003,0,Previously infected (Pre-Omicron),BNT162b2,3
+152,80,34,Ancestral,422.306360200001,0,Previously infected (Pre-Omicron),BNT162b2,3
+152,160,34,Ancestral,161.0296885,0,Previously infected (Pre-Omicron),BNT162b2,3
+152,41,34,Alpha,398.9192356,0,Previously infected (Pre-Omicron),BNT162b2,3
+152,80,34,Alpha,560.996545100001,0,Previously infected (Pre-Omicron),BNT162b2,3
+152,160,34,Alpha,262.8407466,0,Previously infected (Pre-Omicron),BNT162b2,3
+152,41,34,Delta,243.756536699999,0,Previously infected (Pre-Omicron),BNT162b2,3
+152,80,34,Delta,172.4237657,0,Previously infected (Pre-Omicron),BNT162b2,3
+152,160,34,Delta,127.9894181,0,Previously infected (Pre-Omicron),BNT162b2,3
+153,81,52,Ancestral,739.378548899999,0,Previously infected (Pre-Omicron),BNT162b2,3
+153,159,52,Ancestral,253.1188458,0,Previously infected (Pre-Omicron),BNT162b2,3
+153,252,52,Ancestral,439.6811036,0,Previously infected (Pre-Omicron),BNT162b2,3
+153,81,52,Alpha,598.589004999999,0,Previously infected (Pre-Omicron),BNT162b2,3
+153,159,52,Alpha,420.091298400001,0,Previously infected (Pre-Omicron),BNT162b2,3
+153,252,52,Alpha,409.906982324407,0,Previously infected (Pre-Omicron),BNT162b2,3
+153,81,52,Delta,565.935252499999,0,Previously infected (Pre-Omicron),BNT162b2,3
+153,159,52,Delta,288.1785015,0,Previously infected (Pre-Omicron),BNT162b2,3
+153,252,52,Delta,142.6840461,0,Previously infected (Pre-Omicron),BNT162b2,3
+154,68,27,Ancestral,160.888609,0,Infection naive,BNT162b2,2
+154,68,27,Alpha,321.8283086,0,Infection naive,BNT162b2,2
+154,68,27,Delta,170.6197311,0,Infection naive,BNT162b2,2
+155,70,52,Ancestral,1181.728855,0,Infection naive,BNT162b2,2
+155,238,52,Ancestral,279.227353800001,0,Infection naive,BNT162b2,2
+155,70,52,Alpha,1078.771861,0,Infection naive,BNT162b2,2
+155,238,52,Alpha,354.712967615556,0,Infection naive,BNT162b2,2
+155,70,52,Delta,1343.054466,0,Infection naive,BNT162b2,2
+155,238,52,Delta,266.552763300001,0,Infection naive,BNT162b2,2
+156,14,-3,Ancestral,185.9231836,0,Previously infected (Pre-Omicron),others,3
+156,76,-3,Ancestral,306.681909900001,0,Previously infected (Pre-Omicron),others,3
+156,150,-3,Ancestral,90.3761023199997,0,Previously infected (Pre-Omicron),others,3
+156,318,-3,Ancestral,139.469215684706,0,Previously infected (Pre-Omicron),others,3
+156,14,-3,Alpha,218.4611738,0,Previously infected (Pre-Omicron),others,3
+156,76,-3,Alpha,128.7771048,0,Previously infected (Pre-Omicron),others,3
+156,150,-3,Alpha,119.9514538,0,Previously infected (Pre-Omicron),others,3
+156,318,-3,Alpha,112.418287978578,0,Previously infected (Pre-Omicron),others,3
+156,14,-3,Delta,60.8130894199999,0,Previously infected (Pre-Omicron),others,3
+156,76,-3,Delta,91.4117737899999,0,Previously infected (Pre-Omicron),others,3
+156,150,-3,Delta,50.58937264,0,Previously infected (Pre-Omicron),others,3
+156,318,-3,Delta,97.1107715442805,0,Previously infected (Pre-Omicron),others,3
+157,33,28,Ancestral,154.260170083228,0,Infection naive,BNT162b2,2
+157,75,28,Ancestral,617.7778794,0,Infection naive,BNT162b2,2
+157,145,28,Ancestral,109.9817347,0,Infection naive,BNT162b2,2
+157,33,28,Alpha,125.105673950083,0,Infection naive,BNT162b2,2
+157,75,28,Alpha,161.1708918,0,Infection naive,BNT162b2,2
+157,145,28,Alpha,92.7840422799997,0,Infection naive,BNT162b2,2
+157,33,28,Delta,57.394961222384,0,Infection naive,BNT162b2,2
+157,75,28,Delta,102.4442116,0,Infection naive,BNT162b2,2
+157,145,28,Delta,46.6292338600001,0,Infection naive,BNT162b2,2
+158,76,56,Ancestral,140.943882757322,0,Infection naive,AZD1222,1
+158,76,56,Alpha,50.6781328723178,0,Infection naive,AZD1222,1
+158,76,56,Delta,5,-1,Infection naive,AZD1222,1
+159,35,32,Ancestral,97.9656817769744,0,Infection naive,BNT162b2,2
+159,35,32,Alpha,57.1439801799681,0,Infection naive,BNT162b2,2
+159,35,32,Delta,5,-1,Infection naive,BNT162b2,2
+160,33,26,Ancestral,1448.205014,0,Previously infected (Pre-Omicron),BNT162b2,3
+160,75,26,Ancestral,633.6820123,0,Previously infected (Pre-Omicron),BNT162b2,3
+160,33,26,Alpha,911.682556900002,0,Previously infected (Pre-Omicron),BNT162b2,3
+160,75,26,Alpha,362.5713364,0,Previously infected (Pre-Omicron),BNT162b2,3
+160,33,26,Delta,227.050848700001,0,Previously infected (Pre-Omicron),BNT162b2,3
+160,75,26,Delta,184.6240607,0,Previously infected (Pre-Omicron),BNT162b2,3
+161,117,70,Ancestral,499.704875025919,0,Previously infected (Pre-Omicron),AZD1222,2
+161,117,70,Alpha,769.798437800932,0,Previously infected (Pre-Omicron),AZD1222,2
+161,117,70,Delta,359.407310556111,0,Previously infected (Pre-Omicron),AZD1222,2
+162,80,59,Ancestral,1862.423045,0,Infection naive,BNT162b2,2
+162,150,59,Ancestral,228.2480448,0,Infection naive,BNT162b2,2
+162,80,59,Alpha,1116.285275,0,Infection naive,BNT162b2,2
+162,150,59,Alpha,352.543306400001,0,Infection naive,BNT162b2,2
+162,243,59,Alpha,225.464349655178,0,Infection naive,BNT162b2,2
+162,80,59,Delta,513.018785499999,0,Infection naive,BNT162b2,2
+162,150,59,Delta,190.8768368,0,Infection naive,BNT162b2,2
+162,243,59,Delta,282.6748337,0,Infection naive,BNT162b2,2
+163,14,-10,Ancestral,104.530376317928,0,Infection naive,BNT162b2,1
+163,14,-10,Alpha,46.1818220151127,0,Infection naive,BNT162b2,1
+163,14,-10,Delta,5,-1,Infection naive,BNT162b2,1
+164,84,54,Ancestral,355.335319799999,0,Previously infected (Pre-Omicron),BNT162b2,3
+164,150,54,Ancestral,70.64627275,0,Previously infected (Pre-Omicron),BNT162b2,3
+164,84,54,Alpha,316.513164100001,0,Previously infected (Pre-Omicron),BNT162b2,3
+164,150,54,Alpha,154.5308232,0,Previously infected (Pre-Omicron),BNT162b2,3
+164,84,54,Delta,174.094216,0,Previously infected (Pre-Omicron),BNT162b2,3
+164,150,54,Delta,89.8233017599999,0,Previously infected (Pre-Omicron),BNT162b2,3
+165,95,53,Ancestral,168.2436788,0,Infection naive,BNT162b2,2
+165,95,53,Alpha,79.3114434600003,0,Infection naive,BNT162b2,2
+165,95,53,Delta,165.0305408,0,Infection naive,BNT162b2,2
+166,67,41,Ancestral,2376.29701499999,0,Infection naive,BNT162b2,2
+166,154,41,Ancestral,1585.030492,0,Infection naive,BNT162b2,2
+166,67,41,Alpha,1757.741623,0,Infection naive,BNT162b2,2
+166,154,41,Alpha,878.731289700001,0,Infection naive,BNT162b2,2
+166,67,41,Delta,1449.47491200001,0,Infection naive,BNT162b2,2
+166,154,41,Delta,1034.327612,0,Infection naive,BNT162b2,2
+167,116,88,Ancestral,322.110512499999,0,Infection naive,BNT162b2,3
+167,150,88,Ancestral,542.619324400001,0,Infection naive,BNT162b2,3
+167,234,88,Ancestral,192.726061299999,0,Infection naive,BNT162b2,3
+167,116,88,Alpha,360.669594000001,0,Infection naive,BNT162b2,3
+167,150,88,Alpha,433.558099799999,0,Infection naive,BNT162b2,3
+167,234,88,Alpha,175.934987838245,0,Infection naive,BNT162b2,3
+167,116,88,Delta,305.608574399999,0,Infection naive,BNT162b2,3
+167,150,88,Delta,277.276275700001,0,Infection naive,BNT162b2,3
+167,234,88,Delta,107.8812903,0,Infection naive,BNT162b2,3
+168,76,54,Ancestral,1478.991889,0,Infection naive,BNT162b2,2
+168,150,54,Ancestral,199.602827200001,0,Infection naive,BNT162b2,2
+168,76,54,Alpha,611.850243099998,0,Infection naive,BNT162b2,2
+168,150,54,Alpha,321.546351899999,0,Infection naive,BNT162b2,2
+168,76,54,Delta,343.695184599999,0,Infection naive,BNT162b2,2
+168,150,54,Delta,201.3600216,0,Infection naive,BNT162b2,2
+169,3,-8,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+169,27,-8,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+169,68,-8,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+169,3,-8,Alpha,2250.608976,0,Previously infected (Pre-Omicron),BNT162b2,3
+169,27,-8,Alpha,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+169,68,-8,Alpha,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+169,3,-8,Delta,1299.058458,0,Previously infected (Pre-Omicron),BNT162b2,3
+169,27,-8,Delta,997.817738100004,0,Previously infected (Pre-Omicron),BNT162b2,3
+169,68,-8,Delta,849.2010148,0,Previously infected (Pre-Omicron),BNT162b2,3
+170,117,91,Ancestral,2482.75305900001,0,Previously infected (Pre-Omicron),AZD1222,3
+170,160,91,Ancestral,301.6169153,0,Previously infected (Pre-Omicron),AZD1222,3
+170,307,91,Ancestral,353.7814825,0,Previously infected (Pre-Omicron),AZD1222,3
+170,117,91,Alpha,460.991830000001,0,Previously infected (Pre-Omicron),AZD1222,3
+170,160,91,Alpha,322.9586098,0,Previously infected (Pre-Omicron),AZD1222,3
+170,307,91,Alpha,161.31221889536,0,Previously infected (Pre-Omicron),AZD1222,3
+170,117,91,Delta,220.191306000001,0,Previously infected (Pre-Omicron),AZD1222,3
+170,160,91,Delta,255.5710741,0,Previously infected (Pre-Omicron),AZD1222,3
+170,307,91,Delta,183.0129149,0,Previously infected (Pre-Omicron),AZD1222,3
+171,76,49,Ancestral,659.753280500002,0,Infection naive,BNT162b2,2
+171,150,49,Ancestral,118.0738452,0,Infection naive,BNT162b2,2
+171,76,49,Alpha,350.694162500001,0,Infection naive,BNT162b2,2
+171,150,49,Alpha,171.2189689,0,Infection naive,BNT162b2,2
+171,76,49,Delta,192.3885111,0,Infection naive,BNT162b2,2
+171,150,49,Delta,82.7919289299998,0,Infection naive,BNT162b2,2
+172,32,27,Ancestral,161.453669903554,0,Infection naive,BNT162b2,2
+172,75,27,Ancestral,1194.223775,0,Infection naive,BNT162b2,2
+172,230,27,Ancestral,267.7234849,0,Infection naive,BNT162b2,2
+172,32,27,Alpha,182.372400207781,0,Infection naive,BNT162b2,2
+172,75,27,Alpha,648.857147700003,0,Infection naive,BNT162b2,2
+172,230,27,Alpha,133.606076800001,0,Infection naive,BNT162b2,2
+172,32,27,Delta,96.2633217966529,0,Infection naive,BNT162b2,2
+172,75,27,Delta,211.861138,0,Infection naive,BNT162b2,2
+172,230,27,Delta,164.741498,0,Infection naive,BNT162b2,2
+173,27,27,Ancestral,106.7525503898,0,Infection naive,BNT162b2,2
+173,67,27,Ancestral,2560,1,Infection naive,BNT162b2,2
+173,154,27,Ancestral,155.3456349,0,Infection naive,BNT162b2,2
+173,27,27,Alpha,5,-1,Infection naive,BNT162b2,2
+173,67,27,Alpha,983.922117299998,0,Infection naive,BNT162b2,2
+173,154,27,Alpha,167.06809,0,Infection naive,BNT162b2,2
+173,27,27,Delta,5,-1,Infection naive,BNT162b2,2
+173,67,27,Delta,307.759015099999,0,Infection naive,BNT162b2,2
+173,154,27,Delta,107.5037238,0,Infection naive,BNT162b2,2
+174,52,26,Ancestral,431.2840209,0,Infection naive,BNT162b2,2
+174,52,26,Alpha,200.4794992,0,Infection naive,BNT162b2,2
+174,52,26,Delta,84.2560552900003,0,Infection naive,BNT162b2,2
+175,0,-24,Ancestral,108.8310183,0,Infection naive,BNT162b2,2
+175,21,-24,Ancestral,118.6964262,0,Infection naive,BNT162b2,2
+175,67,-24,Ancestral,92.7840422799997,0,Infection naive,BNT162b2,2
+175,158,-24,Ancestral,56.1509832100001,0,Infection naive,BNT162b2,2
+175,0,-24,Alpha,88.6500886099999,0,Infection naive,BNT162b2,2
+175,21,-24,Alpha,50.2799342700001,0,Infection naive,BNT162b2,2
+175,67,-24,Alpha,46.4253300100001,0,Infection naive,BNT162b2,2
+175,158,-24,Alpha,5,-1,Infection naive,BNT162b2,2
+175,0,-24,Delta,44.47365804,0,Infection naive,BNT162b2,2
+175,21,-24,Delta,5,-1,Infection naive,BNT162b2,2
+175,67,-24,Delta,5,-1,Infection naive,BNT162b2,2
+175,158,-24,Delta,5,-1,Infection naive,BNT162b2,2
+176,76,76,Ancestral,198.034467000762,0,Infection naive,AZD1222,2
+176,76,76,Alpha,171.970976643965,0,Infection naive,AZD1222,2
+176,76,76,Delta,126.317704098264,0,Infection naive,AZD1222,2
+177,73,37,Ancestral,2560,1,Infection naive,BNT162b2,2
+177,150,37,Ancestral,181.5749083,0,Infection naive,BNT162b2,2
+177,73,37,Alpha,450.605170699999,0,Infection naive,BNT162b2,2
+177,150,37,Alpha,199.2532328,0,Infection naive,BNT162b2,2
+177,73,37,Delta,254.4534935,0,Infection naive,BNT162b2,2
+177,150,37,Delta,194.9346195,0,Infection naive,BNT162b2,2
+178,53,39,Ancestral,1632.97647200001,0,Infection naive,BNT162b2,2
+178,252,39,Ancestral,655.143308864813,0,Infection naive,BNT162b2,2
+178,53,39,Alpha,1040.693186,0,Infection naive,BNT162b2,2
+178,252,39,Alpha,905.312250251336,0,Infection naive,BNT162b2,2
+178,53,39,Delta,258.0470597,0,Infection naive,BNT162b2,2
+179,124,78,Ancestral,1002.200235,0,Previously infected (Pre-Omicron),AZD1222,4
+179,159,78,Ancestral,248.7203729,0,Previously infected (Pre-Omicron),AZD1222,4
+179,124,78,Alpha,509.434109100002,0,Previously infected (Pre-Omicron),AZD1222,4
+179,159,78,Alpha,206.3628983,0,Previously infected (Pre-Omicron),AZD1222,4
+179,124,78,Delta,181.4158289,0,Previously infected (Pre-Omicron),AZD1222,4
+179,159,78,Delta,161.1708918,0,Previously infected (Pre-Omicron),AZD1222,4
+180,80,59,Ancestral,2560,1,Infection naive,BNT162b2,2
+180,160,59,Ancestral,437.374908599999,0,Infection naive,BNT162b2,2
+180,80,59,Alpha,2122.24779199999,0,Infection naive,BNT162b2,2
+180,160,59,Alpha,744.581248899999,0,Infection naive,BNT162b2,2
+180,80,59,Delta,1028.902405,0,Infection naive,BNT162b2,2
+180,160,59,Delta,191.7151835,0,Infection naive,BNT162b2,2
+181,76,58,Ancestral,2205.69245200001,0,Infection naive,BNT162b2,2
+181,159,58,Ancestral,197.6876195,0,Infection naive,BNT162b2,2
+181,76,58,Alpha,1715.128513,0,Infection naive,BNT162b2,2
+181,159,58,Alpha,273.175381900001,0,Infection naive,BNT162b2,2
+181,76,58,Delta,771.825270199999,0,Infection naive,BNT162b2,2
+181,159,58,Delta,176.5528935,0,Infection naive,BNT162b2,2
+182,84,52,Ancestral,1099.775506,0,Infection naive,BNT162b2,2
+182,159,52,Ancestral,293.7893255,0,Infection naive,BNT162b2,2
+182,307,52,Ancestral,322.9586098,0,Infection naive,BNT162b2,2
+182,84,52,Alpha,1143.017579,0,Infection naive,BNT162b2,2
+182,159,52,Alpha,213.1649974,0,Infection naive,BNT162b2,2
+182,84,52,Delta,642.0682879,0,Infection naive,BNT162b2,2
+182,159,52,Delta,247.199033100001,0,Infection naive,BNT162b2,2
+182,307,52,Delta,160.6068206,0,Infection naive,BNT162b2,2
+183,80,43,Ancestral,808.5255807,0,Infection naive,BNT162b2,2
+183,160,43,Ancestral,262.3803941,0,Infection naive,BNT162b2,2
+183,80,43,Alpha,529.464548799999,0,Infection naive,BNT162b2,2
+183,160,43,Alpha,319.0198321,0,Infection naive,BNT162b2,2
+183,80,43,Delta,245.471750300001,0,Infection naive,BNT162b2,2
+183,160,43,Delta,148.164318200001,0,Infection naive,BNT162b2,2
+184,52,43,Ancestral,2560,1,Infection naive,BNT162b2,2
+184,236,43,Ancestral,296.375686400001,0,Infection naive,BNT162b2,2
+184,52,43,Alpha,1016.353992,0,Infection naive,BNT162b2,2
+184,236,43,Alpha,171.820311329011,0,Infection naive,BNT162b2,2
+184,52,43,Delta,505.8744803,0,Infection naive,BNT162b2,2
+184,236,43,Delta,130.1387196,0,Infection naive,BNT162b2,2
+185,76,59,Ancestral,2027.691941,0,Infection naive,BNT162b2,2
+185,150,59,Ancestral,176.089261200001,0,Infection naive,BNT162b2,2
+185,307,59,Ancestral,328.094293000001,0,Infection naive,BNT162b2,2
+185,76,59,Alpha,1184.840275,0,Infection naive,BNT162b2,2
+185,150,59,Alpha,436.608868200001,0,Infection naive,BNT162b2,2
+185,307,59,Alpha,193.912157451256,0,Infection naive,BNT162b2,2
+185,76,59,Delta,651.1360152,0,Infection naive,BNT162b2,2
+185,150,59,Delta,288.431198699999,0,Infection naive,BNT162b2,2
+185,307,59,Delta,245.2566903,0,Infection naive,BNT162b2,2
+186,80,59,Ancestral,513.918889000001,0,Infection naive,BNT162b2,2
+186,160,59,Ancestral,114.406339,0,Infection naive,BNT162b2,2
+186,80,59,Alpha,467.5022717,0,Infection naive,BNT162b2,2
+186,160,59,Alpha,155.2095352,0,Infection naive,BNT162b2,2
+186,80,59,Delta,148.0345101,0,Infection naive,BNT162b2,2
+186,160,59,Delta,80.9265345799999,0,Infection naive,BNT162b2,2
+186,509,59,Delta,116.8384626,0,Infection naive,BNT162b2,2
+186,509,59,Delta,116.8384626,0,Infection naive,BNT162b2,2
+187,26,-19,Ancestral,203.1326853,0,Infection naive,BNT162b2,2
+187,68,-19,Ancestral,82.5745152699999,0,Infection naive,BNT162b2,2
+187,110,-19,Ancestral,5,-1,Infection naive,BNT162b2,2
+187,26,-19,Alpha,46.3846563599999,0,Infection naive,BNT162b2,2
+187,68,-19,Alpha,5,-1,Infection naive,BNT162b2,2
+187,26,-19,Delta,5,-1,Infection naive,BNT162b2,2
+187,68,-19,Delta,5,-1,Infection naive,BNT162b2,2
+187,110,-19,Delta,5,-1,Infection naive,BNT162b2,2
+188,84,69,Ancestral,519.352771,0,Previously infected (Pre-Omicron),AZD1222,3
+188,151,69,Ancestral,151.0490716,0,Previously infected (Pre-Omicron),AZD1222,3
+188,252,69,Ancestral,124.8865576,0,Previously infected (Pre-Omicron),AZD1222,3
+188,84,69,Alpha,233.509268699999,0,Previously infected (Pre-Omicron),AZD1222,3
+188,151,69,Alpha,99.0883265799999,0,Previously infected (Pre-Omicron),AZD1222,3
+188,252,69,Alpha,89.5089351915363,0,Previously infected (Pre-Omicron),AZD1222,3
+188,84,69,Delta,166.337522,0,Previously infected (Pre-Omicron),AZD1222,3
+188,151,69,Delta,90.2969230099998,0,Previously infected (Pre-Omicron),AZD1222,3
+188,252,69,Delta,68.69233191,0,Previously infected (Pre-Omicron),AZD1222,3
+189,73,39,Ancestral,2560,1,Infection naive,BNT162b2,2
+189,73,39,Alpha,620.491210500002,0,Infection naive,BNT162b2,2
+189,73,39,Delta,358.463498,0,Infection naive,BNT162b2,2
+190,5,-19,Ancestral,682.097548600003,0,Infection naive,BNT162b2,2
+190,26,-19,Ancestral,364.483106299999,0,Infection naive,BNT162b2,2
+190,5,-19,Alpha,472.031457600001,0,Infection naive,BNT162b2,2
+190,26,-19,Alpha,1016.353992,0,Infection naive,BNT162b2,2
+190,68,-19,Alpha,1026.200481,0,Infection naive,BNT162b2,2
+190,153,-19,Alpha,179.675127100001,0,Infection naive,BNT162b2,2
+190,5,-19,Delta,361.302397200001,0,Infection naive,BNT162b2,2
+190,26,-19,Delta,423.047306599999,0,Infection naive,BNT162b2,2
+190,68,-19,Delta,404.1986132,0,Infection naive,BNT162b2,2
+190,153,-19,Delta,115.1104312,0,Infection naive,BNT162b2,2
+191,76,55,Ancestral,363.844732199999,0,Infection naive,BNT162b2,2
+191,76,55,Alpha,504.988466300001,0,Infection naive,BNT162b2,2
+191,76,55,Delta,349.160620500001,0,Infection naive,BNT162b2,2
+192,81,50,Ancestral,832.982871400002,0,Previously infected (Pre-Omicron),BNT162b2,3
+192,151,50,Ancestral,172.1217741,0,Previously infected (Pre-Omicron),BNT162b2,3
+192,81,50,Alpha,765.7607266,0,Previously infected (Pre-Omicron),BNT162b2,3
+192,151,50,Alpha,336.2459375,0,Previously infected (Pre-Omicron),BNT162b2,3
+192,81,50,Delta,591.8071482,0,Previously infected (Pre-Omicron),BNT162b2,3
+192,151,50,Delta,115.8188566,0,Previously infected (Pre-Omicron),BNT162b2,3
+193,73,32,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+193,161,32,Ancestral,526.687425899999,0,Previously infected (Pre-Omicron),BNT162b2,3
+193,73,32,Alpha,1170.390057,0,Previously infected (Pre-Omicron),BNT162b2,3
+193,161,32,Alpha,560.013987499999,0,Previously infected (Pre-Omicron),BNT162b2,3
+193,73,32,Delta,524.384287100001,0,Previously infected (Pre-Omicron),BNT162b2,3
+193,161,32,Delta,506.318070100001,0,Previously infected (Pre-Omicron),BNT162b2,3
+194,20,-19,Ancestral,670.8323899,0,Infection naive,BNT162b2,2
+194,42,-19,Ancestral,660.331803100001,0,Infection naive,BNT162b2,2
+194,89,-19,Ancestral,290.2062941,0,Infection naive,BNT162b2,2
+194,173,-19,Ancestral,156.164743,0,Infection naive,BNT162b2,2
+194,20,-19,Alpha,169.8736322,0,Infection naive,BNT162b2,2
+194,42,-19,Alpha,133.9578534,0,Infection naive,BNT162b2,2
+194,89,-19,Alpha,97.87985316,0,Infection naive,BNT162b2,2
+194,173,-19,Alpha,80.7847957700002,0,Infection naive,BNT162b2,2
+194,20,-19,Delta,190.042156000001,0,Infection naive,BNT162b2,2
+194,42,-19,Delta,193.4029393,0,Infection naive,BNT162b2,2
+194,89,-19,Delta,149.0761676,0,Infection naive,BNT162b2,2
+194,173,-19,Delta,80.50206246,0,Infection naive,BNT162b2,2
+195,5,-33,Ancestral,500.14305484178,0,Infection naive,BNT162b2,1
+195,5,-33,Alpha,988.243583847195,0,Infection naive,BNT162b2,1
+195,5,-33,Delta,249.156758622271,0,Infection naive,BNT162b2,1
+196,26,6,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+196,68,6,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+196,153,6,Ancestral,990.845569000003,0,Previously infected (Pre-Omicron),BNT162b2,3
+196,26,6,Alpha,1403.222141,0,Previously infected (Pre-Omicron),BNT162b2,3
+196,68,6,Alpha,2154.106858,0,Previously infected (Pre-Omicron),BNT162b2,3
+196,153,6,Alpha,1020.817902,0,Previously infected (Pre-Omicron),BNT162b2,3
+196,26,6,Delta,463.4225525,0,Previously infected (Pre-Omicron),BNT162b2,3
+197,84,49,Ancestral,430.151458299999,0,Infection naive,BNT162b2,2
+197,151,49,Ancestral,344.600113099999,0,Infection naive,BNT162b2,2
+197,84,49,Alpha,455.369609900001,0,Infection naive,BNT162b2,2
+197,151,49,Alpha,269.607344,0,Infection naive,BNT162b2,2
+197,84,49,Delta,274.375190600001,0,Infection naive,BNT162b2,2
+197,151,49,Delta,143.5621682,0,Infection naive,BNT162b2,2
+198,81,55,Ancestral,438.526490099999,0,Infection naive,BNT162b2,2
+198,159,55,Ancestral,220.191306000001,0,Infection naive,BNT162b2,2
+198,277,55,Ancestral,167.507970100001,0,Infection naive,BNT162b2,2
+198,81,55,Alpha,745.887634099998,0,Infection naive,BNT162b2,2
+198,159,55,Alpha,160.888609,0,Infection naive,BNT162b2,2
+198,277,55,Alpha,124.8865576,0,Infection naive,BNT162b2,2
+198,81,55,Delta,235.771518399999,0,Infection naive,BNT162b2,2
+198,159,55,Delta,136.5660075,0,Infection naive,BNT162b2,2
+198,277,55,Delta,51.3488175,0,Infection naive,BNT162b2,2
+199,46,33,Ancestral,2560,1,Infection naive,BNT162b2,2
+199,68,33,Ancestral,977.047042700003,0,Infection naive,BNT162b2,2
+199,110,33,Ancestral,1212.151396,0,Infection naive,BNT162b2,2
+199,194,33,Ancestral,5,-1,Infection naive,BNT162b2,2
+199,46,33,Alpha,432.7987443,0,Infection naive,BNT162b2,2
+199,68,33,Alpha,505.8744803,0,Infection naive,BNT162b2,2
+199,110,33,Alpha,241.41767,0,Infection naive,BNT162b2,2
+199,194,33,Alpha,76.3109723399998,0,Infection naive,BNT162b2,2
+199,46,33,Delta,263.763876200001,0,Infection naive,BNT162b2,2
+199,68,33,Delta,255.347166000001,0,Infection naive,BNT162b2,2
+199,110,33,Delta,106.4722155,0,Infection naive,BNT162b2,2
+199,194,33,Delta,40.7058277100001,0,Infection naive,BNT162b2,2
+200,76,44,Ancestral,1625.835669,0,Previously infected (Pre-Omicron),BNT162b2,4
+200,76,44,Alpha,647.720706600002,0,Previously infected (Pre-Omicron),BNT162b2,4
+200,76,44,Delta,217.3153114,0,Previously infected (Pre-Omicron),BNT162b2,4
+201,80,51,Ancestral,1212.151396,0,Previously infected (Pre-Omicron),BNT162b2,3
+201,151,51,Ancestral,738.083564100002,0,Previously infected (Pre-Omicron),BNT162b2,3
+201,80,51,Alpha,678.519842099999,0,Previously infected (Pre-Omicron),BNT162b2,3
+201,151,51,Alpha,550.282565399999,0,Previously infected (Pre-Omicron),BNT162b2,3
+201,80,51,Delta,1399.537244,0,Previously infected (Pre-Omicron),BNT162b2,3
+201,151,51,Delta,940.083884500002,0,Previously infected (Pre-Omicron),BNT162b2,3
+202,24,-24,Ancestral,177.328328281948,0,Infection naive,BNT162b2,2
+202,24,-24,Alpha,176.862659680467,0,Infection naive,BNT162b2,2
+202,45,-24,Alpha,93.1099114400002,0,Infection naive,BNT162b2,2
+202,87,-24,Alpha,132.7888529,0,Infection naive,BNT162b2,2
+202,171,-24,Alpha,63.2596215999999,0,Infection naive,BNT162b2,2
+202,24,-24,Delta,119.636458255127,0,Infection naive,BNT162b2,2
+202,45,-24,Delta,50.9900218800002,0,Infection naive,BNT162b2,2
+202,87,-24,Delta,69.9071152200002,0,Infection naive,BNT162b2,2
+202,171,-24,Delta,52.2111082799999,0,Infection naive,BNT162b2,2
+203,80,45,Ancestral,702.730486399999,0,Infection naive,BNT162b2,2
+203,151,45,Ancestral,278.494095800001,0,Infection naive,BNT162b2,2
+203,80,45,Alpha,844.746824900003,0,Infection naive,BNT162b2,2
+203,151,45,Alpha,304.538995399999,0,Infection naive,BNT162b2,2
+203,80,45,Delta,581.523253000001,0,Infection naive,BNT162b2,2
+203,151,45,Delta,158.5090795,0,Infection naive,BNT162b2,2
+204,28,27,Ancestral,139.8364296,0,Infection naive,BNT162b2,2
+204,70,27,Ancestral,267.0204364,0,Infection naive,BNT162b2,2
+204,154,27,Ancestral,268.428384500001,0,Infection naive,BNT162b2,2
+204,28,27,Alpha,5,-1,Infection naive,BNT162b2,2
+204,70,27,Alpha,511.2233054,0,Infection naive,BNT162b2,2
+204,154,27,Alpha,89.4305156099998,0,Infection naive,BNT162b2,2
+204,28,27,Delta,5,-1,Infection naive,BNT162b2,2
+204,70,27,Delta,324.0928808,0,Infection naive,BNT162b2,2
+204,154,27,Delta,186.2493902,0,Infection naive,BNT162b2,2
+205,81,60,Ancestral,753.113831499999,0,Infection naive,BNT162b2,2
+205,150,60,Ancestral,309.653059899999,0,Infection naive,BNT162b2,2
+205,81,60,Alpha,1009.252303,0,Infection naive,BNT162b2,2
+205,150,60,Alpha,280.4537432,0,Infection naive,BNT162b2,2
+205,81,60,Delta,455.768913199999,0,Infection naive,BNT162b2,2
+205,150,60,Delta,255.123454000001,0,Infection naive,BNT162b2,2
+206,4,-19,Ancestral,699.657533199999,0,Infection naive,BNT162b2,2
+206,24,-19,Ancestral,838.109307200003,0,Infection naive,BNT162b2,2
+206,368,-19,Ancestral,868.775494099999,0,Infection naive,BNT162b2,2
+206,559,-19,Ancestral,557.076628047233,0,Infection naive,BNT162b2,2
+206,4,-19,Alpha,545.958772599999,0,Infection naive,BNT162b2,2
+206,24,-19,Alpha,210.5652539,0,Infection naive,BNT162b2,2
+206,4,-19,Delta,162.8750199,0,Infection naive,BNT162b2,2
+206,24,-19,Delta,57.69759397,0,Infection naive,BNT162b2,2
+207,81,49,Ancestral,337.4268752,0,Infection naive,BNT162b2,2
+207,150,49,Ancestral,157.2636095,0,Infection naive,BNT162b2,2
+207,81,49,Alpha,531.324094499999,0,Infection naive,BNT162b2,2
+207,150,49,Alpha,135.1371453,0,Infection naive,BNT162b2,2
+207,81,49,Delta,315.958807000001,0,Infection naive,BNT162b2,2
+207,150,49,Delta,79.93956094,0,Infection naive,BNT162b2,2
+208,55,30,Ancestral,2560,1,Infection naive,BNT162b2,2
+208,237,30,Ancestral,160.606820581806,0,Infection naive,BNT162b2,2
+208,55,30,Alpha,1255.402845,0,Infection naive,BNT162b2,2
+208,237,30,Alpha,151.712491519182,0,Infection naive,BNT162b2,2
+208,55,30,Delta,388.226020499999,0,Infection naive,BNT162b2,2
+208,237,30,Delta,105.358218481155,0,Infection naive,BNT162b2,2
+209,0,-18,Ancestral,927.805124399998,0,Infection naive,BNT162b2,2
+209,21,-18,Ancestral,569.418194200001,0,Infection naive,BNT162b2,2
+209,67,-18,Ancestral,978.7612945,0,Infection naive,BNT162b2,2
+209,0,-18,Alpha,219.4206732,0,Infection naive,BNT162b2,2
+209,21,-18,Alpha,276.5481413,0,Infection naive,BNT162b2,2
+209,67,-18,Alpha,143.0597245,0,Infection naive,BNT162b2,2
+209,0,-18,Delta,213.726247800001,0,Infection naive,BNT162b2,2
+209,21,-18,Delta,192.3885111,0,Infection naive,BNT162b2,2
+209,67,-18,Delta,109.3090131,0,Infection naive,BNT162b2,2
+210,131,92,Ancestral,72.3380783200001,0,Infection naive,AZD1222,2
+210,131,92,Alpha,5,-1,Infection naive,AZD1222,2
+210,131,92,Delta,5,-1,Infection naive,AZD1222,2
+211,28,27,Ancestral,99.9606461299999,0,Previously infected (Pre-Omicron),BNT162b2,3
+211,70,27,Ancestral,595.971449500002,0,Previously infected (Pre-Omicron),BNT162b2,3
+211,154,27,Ancestral,290.2062941,0,Previously infected (Pre-Omicron),BNT162b2,3
+211,28,27,Alpha,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+211,70,27,Alpha,559.523354199999,0,Previously infected (Pre-Omicron),BNT162b2,3
+211,154,27,Alpha,172.272703700001,0,Previously infected (Pre-Omicron),BNT162b2,3
+211,28,27,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+211,70,27,Delta,371.254033700001,0,Previously infected (Pre-Omicron),BNT162b2,3
+211,154,27,Delta,123.9052733,0,Previously infected (Pre-Omicron),BNT162b2,3
+212,117,96,Ancestral,465.050150400001,0,Infection naive,AZD1222,2
+212,150,96,Ancestral,67.5578460500001,0,Infection naive,AZD1222,2
+212,117,96,Alpha,149.7309223,0,Infection naive,AZD1222,2
+212,150,96,Alpha,74.9192135799999,0,Infection naive,AZD1222,2
+212,117,96,Delta,46.8751009699999,0,Infection naive,AZD1222,2
+212,150,96,Delta,51.3938441100001,0,Infection naive,AZD1222,2
+213,62,38,Ancestral,2560,1,Infection naive,BNT162b2,2
+213,147,38,Ancestral,102.6239523,0,Infection naive,BNT162b2,2
+213,62,38,Alpha,469.55558,0,Infection naive,BNT162b2,2
+213,147,38,Alpha,152.9139987,0,Infection naive,BNT162b2,2
+213,62,38,Delta,202.7769085,0,Infection naive,BNT162b2,2
+213,147,38,Delta,78.7572612900001,0,Infection naive,BNT162b2,2
+214,0,-21,Ancestral,727.8050042,0,Infection naive,BNT162b2,2
+214,24,-21,Ancestral,980.478554,0,Infection naive,BNT162b2,2
+214,0,-21,Alpha,539.3003024,0,Infection naive,BNT162b2,2
+214,24,-21,Alpha,334.189232900001,0,Infection naive,BNT162b2,2
+214,75,-21,Alpha,203.8461127,0,Infection naive,BNT162b2,2
+214,0,-21,Delta,236.8070462,0,Infection naive,BNT162b2,2
+214,24,-21,Delta,184.139233300001,0,Infection naive,BNT162b2,2
+214,75,-21,Delta,151.3140907,0,Infection naive,BNT162b2,2
+215,119,87,Ancestral,181.7341272,0,Infection naive,AZD1222,1
+215,119,87,Alpha,5,-1,Infection naive,AZD1222,1
+215,119,87,Delta,5,-1,Infection naive,AZD1222,1
+216,3,-17,Ancestral,617.7778794,0,Infection naive,BNT162b2,2
+216,24,-17,Ancestral,477.440736200001,0,Infection naive,BNT162b2,2
+216,3,-17,Alpha,371.254033700001,0,Infection naive,BNT162b2,2
+216,24,-17,Alpha,232.284476699999,0,Infection naive,BNT162b2,2
+216,69,-17,Alpha,204.9209546,0,Infection naive,BNT162b2,2
+216,153,-17,Alpha,132.2081837,0,Infection naive,BNT162b2,2
+216,3,-17,Delta,229.0496805,0,Infection naive,BNT162b2,2
+216,24,-17,Delta,166.7754785,0,Infection naive,BNT162b2,2
+216,69,-17,Delta,97.4518367100002,0,Infection naive,BNT162b2,2
+216,153,-17,Delta,43.9697831399999,0,Infection naive,BNT162b2,2
+217,21,16,Ancestral,267.48893,0,Infection naive,BNT162b2,4
+217,68,16,Ancestral,219.4206732,0,Infection naive,BNT162b2,4
+217,152,16,Ancestral,377.819441999999,0,Infection naive,BNT162b2,4
+217,21,16,Alpha,103.7090388,0,Infection naive,BNT162b2,4
+217,21,16,Delta,76.9827724900003,0,Infection naive,BNT162b2,4
+217,68,16,Delta,85.5209025299999,0,Infection naive,BNT162b2,4
+217,152,16,Delta,123.9052733,0,Infection naive,BNT162b2,4
+218,27,-17,Ancestral,277.5194129,0,Previously infected (Pre-Omicron),BNT162b2,3
+218,27,-17,Alpha,186.7397735,0,Previously infected (Pre-Omicron),BNT162b2,3
+218,52,-17,Alpha,75.9107095599998,0,Previously infected (Pre-Omicron),BNT162b2,3
+218,108,-17,Alpha,45.0622313999999,0,Previously infected (Pre-Omicron),BNT162b2,3
+218,27,-17,Delta,106.5655786,0,Previously infected (Pre-Omicron),BNT162b2,3
+218,52,-17,Delta,82.5021709899999,0,Previously infected (Pre-Omicron),BNT162b2,3
+218,108,-17,Delta,41.24453684,0,Previously infected (Pre-Omicron),BNT162b2,3
+219,62,41,Ancestral,2560,1,Infection naive,BNT162b2,2
+219,146,41,Ancestral,1354.877985,0,Infection naive,BNT162b2,2
+219,62,41,Alpha,1264.236594,0,Infection naive,BNT162b2,2
+219,146,41,Alpha,1240.092051,0,Infection naive,BNT162b2,2
+219,62,41,Delta,725.893770200002,0,Infection naive,BNT162b2,2
+219,146,41,Delta,892.704861899999,0,Infection naive,BNT162b2,2
+220,80,49,Ancestral,309.653059899999,0,Infection naive,BNT162b2,2
+220,160,49,Ancestral,208.1796046,0,Infection naive,BNT162b2,2
+220,291,49,Ancestral,116.0220635,0,Infection naive,BNT162b2,2
+220,80,49,Alpha,284.913514500001,0,Infection naive,BNT162b2,2
+220,160,49,Alpha,148.164318200001,0,Infection naive,BNT162b2,2
+220,291,49,Alpha,142.309354279994,0,Infection naive,BNT162b2,2
+220,80,49,Delta,187.0674127,0,Infection naive,BNT162b2,2
+220,160,49,Delta,175.0121818,0,Infection naive,BNT162b2,2
+220,291,49,Delta,40.7415217199999,0,Infection naive,BNT162b2,2
+221,60,39,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+221,60,39,Alpha,584.077350800001,0,Previously infected (Pre-Omicron),BNT162b2,3
+221,60,39,Delta,337.1312525,0,Previously infected (Pre-Omicron),BNT162b2,3
+222,95,52,Ancestral,160.4661115,0,Previously infected (Pre-Omicron),BNT162b2,3
+222,150,52,Ancestral,170.320899100001,0,Previously infected (Pre-Omicron),BNT162b2,3
+222,95,52,Alpha,569.418194200001,0,Previously infected (Pre-Omicron),BNT162b2,3
+222,150,52,Alpha,156.7132131,0,Previously infected (Pre-Omicron),BNT162b2,3
+222,95,52,Delta,110.27131,0,Previously infected (Pre-Omicron),BNT162b2,3
+222,150,52,Delta,46.46603932,0,Previously infected (Pre-Omicron),BNT162b2,3
+223,84,68,Ancestral,2560,1,Previously infected (Pre-Omicron),AZD1222,2
+223,84,68,Alpha,992.584030628349,0,Previously infected (Pre-Omicron),AZD1222,2
+223,84,68,Delta,2560,1,Previously infected (Pre-Omicron),AZD1222,2
+224,69,45,Ancestral,1433.052741,0,Infection naive,BNT162b2,2
+224,153,45,Ancestral,136.0880493,0,Infection naive,BNT162b2,2
+224,69,45,Alpha,699.657533199999,0,Infection naive,BNT162b2,2
+224,153,45,Alpha,109.69292,0,Infection naive,BNT162b2,2
+224,69,45,Delta,278.494095800001,0,Infection naive,BNT162b2,2
+224,153,45,Delta,46.2628491,0,Infection naive,BNT162b2,2
+225,46,34,Ancestral,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+225,81,34,Ancestral,984.784896199998,0,Previously infected (Pre-Omicron),BNT162b2,3
+225,159,34,Ancestral,145.7173155,0,Previously infected (Pre-Omicron),BNT162b2,3
+225,46,34,Alpha,40.67016497,0,Previously infected (Pre-Omicron),BNT162b2,3
+225,81,34,Alpha,558.543376799999,0,Previously infected (Pre-Omicron),BNT162b2,3
+225,159,34,Alpha,174.7056566,0,Previously infected (Pre-Omicron),BNT162b2,3
+225,46,34,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+225,81,34,Delta,347.3292193,0,Previously infected (Pre-Omicron),BNT162b2,3
+225,159,34,Delta,139.5915131,0,Previously infected (Pre-Omicron),BNT162b2,3
+226,38,33,Ancestral,1823.65462085467,0,Previously infected (Pre-Omicron),BNT162b2,3
+226,59,33,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+226,38,33,Alpha,944.212809897676,0,Previously infected (Pre-Omicron),BNT162b2,3
+226,59,33,Alpha,2450.32496399999,0,Previously infected (Pre-Omicron),BNT162b2,3
+226,38,33,Delta,1175.53050583235,0,Previously infected (Pre-Omicron),BNT162b2,3
+226,59,33,Delta,1220.680803,0,Previously infected (Pre-Omicron),BNT162b2,3
+227,76,54,Ancestral,1116.285275,0,Infection naive,BNT162b2,2
+227,150,54,Ancestral,565.4394316,0,Infection naive,BNT162b2,2
+227,76,54,Alpha,1164.251181,0,Infection naive,BNT162b2,2
+227,150,54,Alpha,270.7914815,0,Infection naive,BNT162b2,2
+227,76,54,Delta,504.104003999998,0,Infection naive,BNT162b2,2
+227,150,54,Delta,154.8019511,0,Infection naive,BNT162b2,2
+228,76,55,Ancestral,508.096322500001,0,Infection naive,BNT162b2,2
+228,256,55,Ancestral,175.6268464,0,Infection naive,BNT162b2,2
+228,76,55,Alpha,455.369609900001,0,Infection naive,BNT162b2,2
+228,256,55,Alpha,194.422716341038,0,Infection naive,BNT162b2,2
+228,76,55,Delta,205.2804932,0,Infection naive,BNT162b2,2
+228,256,55,Delta,130.1387196,0,Infection naive,BNT162b2,2
+229,75,75,Ancestral,529.000680191154,0,Previously infected (Pre-Omicron),BNT162b2,3
+229,75,75,Alpha,1644.46704994187,0,Previously infected (Pre-Omicron),BNT162b2,3
+229,75,75,Delta,331.854113211825,0,Previously infected (Pre-Omicron),BNT162b2,3
+230,5,-22,Ancestral,797.2660445,0,Infection naive,BNT162b2,2
+230,26,-22,Ancestral,646.586256,0,Infection naive,BNT162b2,2
+230,68,-22,Ancestral,473.274287600001,0,Infection naive,BNT162b2,2
+230,152,-22,Ancestral,381.479776,0,Infection naive,BNT162b2,2
+230,5,-22,Alpha,630.358252700001,0,Infection naive,BNT162b2,2
+230,26,-22,Alpha,474.9364861,0,Infection naive,BNT162b2,2
+230,68,-22,Alpha,254.899938100001,0,Infection naive,BNT162b2,2
+230,152,-22,Alpha,132.324114,0,Infection naive,BNT162b2,2
+230,5,-22,Delta,384.1640909,0,Infection naive,BNT162b2,2
+230,26,-22,Delta,358.463498,0,Infection naive,BNT162b2,2
+230,68,-22,Delta,225.6620542,0,Infection naive,BNT162b2,2
+230,152,-22,Delta,183.1733947,0,Infection naive,BNT162b2,2
+231,46,26,Ancestral,174.5525954,0,Infection naive,BNT162b2,2
+231,130,26,Ancestral,160.6068206,0,Infection naive,BNT162b2,2
+231,130,26,Ancestral,94.6734882000001,0,Infection naive,BNT162b2,2
+231,46,26,Alpha,122.501459,0,Infection naive,BNT162b2,2
+231,130,26,Alpha,185.4349447,0,Infection naive,BNT162b2,2
+231,130,26,Alpha,5,-1,Infection naive,BNT162b2,2
+231,46,26,Delta,124.7771433,0,Infection naive,BNT162b2,2
+231,130,26,Delta,227.6486598,0,Infection naive,BNT162b2,2
+231,130,26,Delta,5,-1,Infection naive,BNT162b2,2
+232,80,67,Ancestral,210.3807757,0,Previously infected (Pre-Omicron),AZD1222,2
+232,80,67,Alpha,5,-1,Previously infected (Pre-Omicron),AZD1222,2
+232,80,67,Delta,44.59075447,0,Previously infected (Pre-Omicron),AZD1222,2
+233,62,41,Ancestral,2560,1,Infection naive,BNT162b2,2
+233,145,41,Ancestral,164.021103826873,0,Infection naive,BNT162b2,2
+233,62,41,Alpha,1139.017209,0,Infection naive,BNT162b2,2
+233,145,41,Alpha,282.922704859781,0,Infection naive,BNT162b2,2
+233,62,41,Delta,423.047306599999,0,Infection naive,BNT162b2,2
+233,145,41,Delta,170.769343633808,0,Infection naive,BNT162b2,2
+234,117,84,Ancestral,206.182101900001,0,Infection naive,AZD1222,2
+234,151,84,Ancestral,151.0490716,0,Infection naive,AZD1222,2
+234,231,84,Ancestral,115.5147134,0,Infection naive,AZD1222,2
+234,313,84,Ancestral,146.8713431,0,Infection naive,AZD1222,2
+234,117,84,Alpha,89.6659807099998,0,Infection naive,AZD1222,2
+234,151,84,Alpha,84.2560552900003,0,Infection naive,AZD1222,2
+234,231,84,Alpha,5,-1,Infection naive,AZD1222,2
+234,313,84,Alpha,5,-1,Infection naive,AZD1222,2
+234,117,84,Delta,56.74469133,0,Infection naive,AZD1222,2
+234,151,84,Delta,49.4495377399999,0,Infection naive,AZD1222,2
+234,231,84,Delta,5,-1,Infection naive,AZD1222,2
+234,313,84,Delta,5,-1,Infection naive,AZD1222,2
+235,81,53,Ancestral,474.9364861,0,Infection naive,BNT162b2,2
+235,151,53,Ancestral,213.726247800001,0,Infection naive,BNT162b2,2
+235,242,53,Ancestral,146.8713431,0,Infection naive,BNT162b2,2
+235,81,53,Alpha,488.445967700001,0,Infection naive,BNT162b2,2
+235,151,53,Alpha,170.470249599999,0,Infection naive,BNT162b2,2
+235,242,53,Alpha,196.82315603441,0,Infection naive,BNT162b2,2
+235,81,53,Delta,361.302397200001,0,Infection naive,BNT162b2,2
+235,151,53,Delta,139.2249423,0,Infection naive,BNT162b2,2
+235,242,53,Delta,74.78799629,0,Infection naive,BNT162b2,2
+236,80,54,Ancestral,864.218633100003,0,Infection naive,BNT162b2,2
+236,168,54,Ancestral,122.9316995,0,Infection naive,BNT162b2,2
+236,242,54,Ancestral,153.7202852,0,Infection naive,BNT162b2,2
+236,80,54,Alpha,401.726264699999,0,Infection naive,BNT162b2,2
+236,168,54,Alpha,213.726247800001,0,Infection naive,BNT162b2,2
+236,242,54,Alpha,153.855079039045,0,Infection naive,BNT162b2,2
+236,80,54,Delta,216.744635999999,0,Infection naive,BNT162b2,2
+236,168,54,Delta,124.5586024,0,Infection naive,BNT162b2,2
+236,242,54,Delta,59.28680425,0,Infection naive,BNT162b2,2
+237,84,69,Ancestral,110.7556306,0,Infection naive,AZD1222,1
+237,84,69,Alpha,5,-1,Infection naive,AZD1222,1
+237,84,69,Delta,5,-1,Infection naive,AZD1222,1
+238,7,-23,Ancestral,132.208183677306,0,Previously infected (Pre-Omicron),BNT162b2,2
+238,28,-23,Ancestral,146.614105212046,0,Previously infected (Pre-Omicron),BNT162b2,2
+238,7,-23,Alpha,127.54147645632,0,Previously infected (Pre-Omicron),BNT162b2,2
+238,28,-23,Alpha,54.1214982344394,0,Previously infected (Pre-Omicron),BNT162b2,2
+238,7,-23,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,2
+238,28,-23,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,2
+239,124,89,Ancestral,513.918889000001,0,Previously infected (Pre-Omicron),AZD1222,3
+239,159,89,Ancestral,178.419662,0,Previously infected (Pre-Omicron),AZD1222,3
+239,342,89,Ancestral,238.8917662,0,Previously infected (Pre-Omicron),AZD1222,3
+239,124,89,Alpha,381.479776,0,Previously infected (Pre-Omicron),AZD1222,3
+239,159,89,Alpha,179.2032958,0,Previously infected (Pre-Omicron),AZD1222,3
+239,124,89,Delta,193.2334973,0,Previously infected (Pre-Omicron),AZD1222,3
+239,159,89,Delta,191.8832941,0,Previously infected (Pre-Omicron),AZD1222,3
+239,342,89,Delta,205.2804932,0,Previously infected (Pre-Omicron),AZD1222,3
+240,54,34,Ancestral,443.551816099999,0,Infection naive,BNT162b2,2
+240,54,34,Alpha,405.2628435,0,Infection naive,BNT162b2,2
+240,54,34,Delta,421.566711600001,0,Infection naive,BNT162b2,2
+241,76,52,Ancestral,360.669594000001,0,Infection naive,BNT162b2,2
+241,151,52,Ancestral,210.7498937,0,Infection naive,BNT162b2,2
+241,76,52,Alpha,375.179459799999,0,Infection naive,BNT162b2,2
+241,151,52,Alpha,170.769343600001,0,Infection naive,BNT162b2,2
+241,76,52,Delta,134.4283302,0,Infection naive,BNT162b2,2
+241,151,52,Delta,51.8917502899999,0,Infection naive,BNT162b2,2
+242,84,50,Ancestral,1099.775506,0,Infection naive,BNT162b2,2
+242,159,50,Ancestral,355.646905200001,0,Infection naive,BNT162b2,2
+242,252,50,Ancestral,275.5802689,0,Infection naive,BNT162b2,2
+242,84,50,Alpha,1260.916677,0,Infection naive,BNT162b2,2
+242,159,50,Alpha,429.3980694,0,Infection naive,BNT162b2,2
+242,252,50,Alpha,413.515579682548,0,Infection naive,BNT162b2,2
+242,84,50,Delta,583.565635300001,0,Infection naive,BNT162b2,2
+242,159,50,Delta,178.107168800001,0,Infection naive,BNT162b2,2
+242,252,50,Delta,177.0177465,0,Infection naive,BNT162b2,2
+243,53,42,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+243,244,42,Ancestral,450.605170699999,0,Previously infected (Pre-Omicron),BNT162b2,3
+243,53,42,Alpha,806.402372399998,0,Previously infected (Pre-Omicron),BNT162b2,3
+243,244,42,Alpha,320.983179424583,0,Previously infected (Pre-Omicron),BNT162b2,3
+243,53,42,Delta,1561.588019,0,Previously infected (Pre-Omicron),BNT162b2,3
+243,244,42,Delta,179.0462942,0,Previously infected (Pre-Omicron),BNT162b2,3
+244,76,67,Ancestral,656.868261300003,0,Infection naive,BNT162b2,2
+244,76,67,Alpha,641.505766099999,0,Infection naive,BNT162b2,2
+244,76,67,Delta,453.775892300001,0,Infection naive,BNT162b2,2
+245,76,56,Ancestral,2560,1,Infection naive,BNT162b2,2
+245,160,56,Ancestral,190.2087997,0,Infection naive,BNT162b2,2
+245,76,56,Alpha,1035.23459,0,Infection naive,BNT162b2,2
+245,160,56,Alpha,293.2747681,0,Infection naive,BNT162b2,2
+245,76,56,Delta,920.514984000001,0,Infection naive,BNT162b2,2
+245,160,56,Delta,227.050848700001,0,Infection naive,BNT162b2,2
+246,42,28,Ancestral,2560,1,Infection naive,BNT162b2,2
+246,62,28,Ancestral,155.7546505,0,Infection naive,BNT162b2,2
+246,104,28,Ancestral,295.597396500001,0,Infection naive,BNT162b2,2
+246,199,28,Ancestral,92.2165131599998,0,Infection naive,BNT162b2,2
+246,42,28,Alpha,338.611960600001,0,Infection naive,BNT162b2,2
+246,62,28,Alpha,305.0733162,0,Infection naive,BNT162b2,2
+246,104,28,Alpha,125.5450607,0,Infection naive,BNT162b2,2
+246,199,28,Alpha,153.7202852,0,Infection naive,BNT162b2,2
+246,42,28,Delta,145.7173155,0,Infection naive,BNT162b2,2
+246,62,28,Delta,136.0880493,0,Infection naive,BNT162b2,2
+246,104,28,Delta,92.2165131599998,0,Infection naive,BNT162b2,2
+246,199,28,Delta,50.50076786,0,Infection naive,BNT162b2,2
+247,39,34,Ancestral,2036.59773000001,0,Previously infected (Pre-Omicron),BNT162b2,3
+247,62,34,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+247,39,34,Alpha,988.243583847195,0,Previously infected (Pre-Omicron),BNT162b2,3
+247,62,34,Alpha,1254.302975,0,Previously infected (Pre-Omicron),BNT162b2,3
+247,39,34,Delta,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+247,62,34,Delta,2551.13748200001,0,Previously infected (Pre-Omicron),BNT162b2,3
+248,3,-18,Ancestral,2560,1,Infection naive,BNT162b2,2
+248,24,-18,Ancestral,2560,1,Infection naive,BNT162b2,2
+248,67,-18,Ancestral,2560,1,Infection naive,BNT162b2,2
+248,3,-18,Alpha,702.114817999998,0,Infection naive,BNT162b2,2
+248,24,-18,Alpha,712.030563400002,0,Infection naive,BNT162b2,2
+248,67,-18,Alpha,640.943737099998,0,Infection naive,BNT162b2,2
+248,3,-18,Delta,386.528356299999,0,Infection naive,BNT162b2,2
+248,24,-18,Delta,322.392963799999,0,Infection naive,BNT162b2,2
+248,67,-18,Delta,180.7809038,0,Infection naive,BNT162b2,2
+249,91,47,Ancestral,370.279111379964,0,Infection naive,BNT162b2,2
+249,91,47,Alpha,562.473614824264,0,Infection naive,BNT162b2,2
+249,91,47,Delta,278.250104602277,0,Infection naive,BNT162b2,2
+250,52,44,Ancestral,2560,1,Infection naive,BNT162b2,2
+250,52,44,Alpha,666.145003900002,0,Infection naive,BNT162b2,2
+250,52,44,Delta,482.0662063,0,Infection naive,BNT162b2,2
+251,117,91,Ancestral,335.362947300001,0,Infection naive,AZD1222,2
+251,150,91,Ancestral,409.189050599999,0,Infection naive,AZD1222,2
+251,228,91,Ancestral,171.9709766,0,Infection naive,AZD1222,2
+251,291,91,Ancestral,168.8345717,0,Infection naive,AZD1222,2
+251,117,91,Alpha,228.0480747,0,Infection naive,AZD1222,2
+251,150,91,Alpha,191.7151835,0,Infection naive,AZD1222,2
+251,228,91,Alpha,212.978241590407,0,Infection naive,AZD1222,2
+251,291,91,Alpha,80.997497209708,0,Infection naive,AZD1222,2
+251,117,91,Delta,243.5429794,0,Infection naive,AZD1222,2
+251,150,91,Delta,287.1699249,0,Infection naive,AZD1222,2
+251,228,91,Delta,74.78799629,0,Infection naive,AZD1222,2
+251,291,91,Delta,125.5450607,0,Infection naive,AZD1222,2
+252,21,-22,Ancestral,5,-1,Infection naive,BNT162b2,2
+252,21,-22,Alpha,209.0939465,0,Infection naive,BNT162b2,2
+252,42,-22,Alpha,139.3470255,0,Infection naive,BNT162b2,2
+252,90,-22,Alpha,153.855079,0,Infection naive,BNT162b2,2
+252,21,-22,Delta,5,-1,Infection naive,BNT162b2,2
+253,84,53,Ancestral,737.436922400002,0,Infection naive,BNT162b2,2
+253,168,53,Ancestral,114.3061066,0,Infection naive,BNT162b2,2
+253,84,53,Alpha,588.703028700001,0,Infection naive,BNT162b2,2
+253,168,53,Alpha,162.3049845,0,Infection naive,BNT162b2,2
+253,84,53,Delta,343.996563099999,0,Infection naive,BNT162b2,2
+253,168,53,Delta,76.6461363799998,0,Infection naive,BNT162b2,2
+254,84,41,Ancestral,305.340828000001,0,Previously infected (Pre-Omicron),BNT162b2,3
+254,150,41,Ancestral,126.3177041,0,Previously infected (Pre-Omicron),BNT162b2,3
+254,242,41,Ancestral,101.8175944,0,Previously infected (Pre-Omicron),BNT162b2,3
+254,84,41,Alpha,489.732016200002,0,Previously infected (Pre-Omicron),BNT162b2,3
+254,150,41,Alpha,112.0248427,0,Previously infected (Pre-Omicron),BNT162b2,3
+254,242,41,Alpha,79.3809898542299,0,Previously infected (Pre-Omicron),BNT162b2,3
+254,84,41,Delta,271.9808199,0,Previously infected (Pre-Omicron),BNT162b2,3
+254,150,41,Delta,65.6893251900002,0,Previously infected (Pre-Omicron),BNT162b2,3
+254,242,41,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+255,84,48,Ancestral,2560,1,Infection naive,BNT162b2,2
+255,150,48,Ancestral,370.279111400002,0,Infection naive,BNT162b2,2
+255,238,48,Ancestral,342.192248199999,0,Infection naive,BNT162b2,2
+255,84,48,Alpha,783.411868400002,0,Infection naive,BNT162b2,2
+255,150,48,Alpha,381.479776,0,Infection naive,BNT162b2,2
+255,238,48,Alpha,168.982618852693,0,Infection naive,BNT162b2,2
+255,84,48,Delta,477.8593931,0,Infection naive,BNT162b2,2
+255,150,48,Delta,182.2126221,0,Infection naive,BNT162b2,2
+255,238,48,Delta,102.7139409,0,Infection naive,BNT162b2,2
+256,74,33,Ancestral,1740.875928,0,Infection naive,BNT162b2,2
+256,74,33,Alpha,450.2103914,0,Infection naive,BNT162b2,2
+256,74,33,Delta,146.1009803,0,Infection naive,BNT162b2,2
+257,54,35,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+257,91,35,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+257,179,35,Ancestral,298.7228729,0,Previously infected (Pre-Omicron),BNT162b2,3
+257,54,35,Alpha,1098.811983,0,Previously infected (Pre-Omicron),BNT162b2,3
+257,91,35,Alpha,435.080810000002,0,Previously infected (Pre-Omicron),BNT162b2,3
+257,179,35,Alpha,272.219313700001,0,Previously infected (Pre-Omicron),BNT162b2,3
+257,54,35,Delta,605.4485789,0,Previously infected (Pre-Omicron),BNT162b2,3
+257,91,35,Delta,301.3526661,0,Previously infected (Pre-Omicron),BNT162b2,3
+257,179,35,Delta,166.0461901,0,Previously infected (Pre-Omicron),BNT162b2,3
+258,84,70,Ancestral,83.8141193200002,0,Infection naive,AZD1222,2
+258,159,70,Ancestral,5,-1,Infection naive,AZD1222,2
+258,84,70,Alpha,5,-1,Infection naive,AZD1222,2
+258,159,70,Alpha,5,-1,Infection naive,AZD1222,2
+258,307,70,Alpha,5,-1,Infection naive,AZD1222,2
+258,84,70,Delta,5,-1,Infection naive,AZD1222,2
+258,159,70,Delta,5,-1,Infection naive,AZD1222,2
+258,307,70,Delta,5,-1,Infection naive,AZD1222,2
+259,28,-18,Ancestral,455.768913199999,0,Previously infected (Pre-Omicron),BNT162b2,3
+259,54,-18,Ancestral,164.1649302,0,Previously infected (Pre-Omicron),BNT162b2,3
+259,28,-18,Alpha,154.5308232,0,Previously infected (Pre-Omicron),BNT162b2,3
+259,54,-18,Alpha,110.8527497,0,Previously infected (Pre-Omicron),BNT162b2,3
+259,28,-18,Delta,51.4389102,0,Previously infected (Pre-Omicron),BNT162b2,3
+259,54,-18,Delta,87.7994827499998,0,Previously infected (Pre-Omicron),BNT162b2,3
+260,3,-18,Ancestral,291.9923139,0,Infection naive,BNT162b2,2
+260,24,-18,Ancestral,338.9088817,0,Infection naive,BNT162b2,2
+260,74,-18,Ancestral,138.1309956,0,Infection naive,BNT162b2,2
+260,158,-18,Ancestral,151.7124915,0,Infection naive,BNT162b2,2
+260,3,-18,Alpha,190.8768368,0,Infection naive,BNT162b2,2
+260,24,-18,Alpha,130.3670511,0,Infection naive,BNT162b2,2
+260,74,-18,Alpha,103.7090388,0,Infection naive,BNT162b2,2
+260,158,-18,Alpha,65.9778380900002,0,Infection naive,BNT162b2,2
+260,3,-18,Delta,160.0447235,0,Infection naive,BNT162b2,2
+260,24,-18,Delta,159.7644131,0,Infection naive,BNT162b2,2
+260,74,-18,Delta,81.8539180400001,0,Infection naive,BNT162b2,2
+260,158,-18,Delta,98.9147783000003,0,Infection naive,BNT162b2,2
+261,80,60,Ancestral,1267.565252,0,Previously infected (Pre-Omicron),BNT162b2,3
+261,168,60,Ancestral,204.5620457,0,Previously infected (Pre-Omicron),BNT162b2,3
+261,277,60,Ancestral,236.8070462,0,Previously infected (Pre-Omicron),BNT162b2,3
+261,80,60,Alpha,449.421870300001,0,Previously infected (Pre-Omicron),BNT162b2,3
+261,168,60,Alpha,244.3983328,0,Previously infected (Pre-Omicron),BNT162b2,3
+261,277,60,Alpha,291.480903887568,0,Previously infected (Pre-Omicron),BNT162b2,3
+261,80,60,Delta,867.253876999999,0,Previously infected (Pre-Omicron),BNT162b2,3
+261,168,60,Delta,242.4779962,0,Previously infected (Pre-Omicron),BNT162b2,3
+261,277,60,Delta,110.6585966,0,Previously infected (Pre-Omicron),BNT162b2,3
+262,62,48,Ancestral,2560,1,Infection naive,BNT162b2,2
+262,160,48,Ancestral,354.7129676,0,Infection naive,BNT162b2,2
+262,62,48,Alpha,1184.840275,0,Infection naive,BNT162b2,2
+262,160,48,Alpha,667.313770799999,0,Infection naive,BNT162b2,2
+262,62,48,Delta,557.565115799999,0,Infection naive,BNT162b2,2
+262,160,48,Delta,288.431198699999,0,Infection naive,BNT162b2,2
+263,76,44,Ancestral,494.4765649,0,Infection naive,BNT162b2,2
+263,76,44,Alpha,356.895981600001,0,Infection naive,BNT162b2,2
+263,76,44,Delta,458.573856899999,0,Infection naive,BNT162b2,2
+264,67,40,Ancestral,630.358252700001,0,Infection naive,BNT162b2,2
+264,67,40,Alpha,1529.08181300001,0,Infection naive,BNT162b2,2
+264,67,40,Delta,522.091219700001,0,Infection naive,BNT162b2,2
+265,26,-24,Ancestral,169.5761069,0,Infection naive,BNT162b2,2
+265,47,-24,Ancestral,136.5660075,0,Infection naive,BNT162b2,2
+265,26,-24,Alpha,112.6155285,0,Infection naive,BNT162b2,2
+265,47,-24,Alpha,90.3761023199997,0,Infection naive,BNT162b2,2
+265,89,-24,Alpha,127.0951026,0,Infection naive,BNT162b2,2
+265,173,-24,Alpha,129.1161671,0,Infection naive,BNT162b2,2
+265,26,-24,Delta,57.0939158300001,0,Infection naive,BNT162b2,2
+265,47,-24,Delta,42.15827502,0,Infection naive,BNT162b2,2
+265,89,-24,Delta,57.6470445899999,0,Infection naive,BNT162b2,2
+265,173,-24,Delta,91.1717242,0,Infection naive,BNT162b2,2
+266,76,48,Ancestral,1262.022346,0,Infection naive,BNT162b2,2
+266,151,48,Ancestral,324.0928808,0,Infection naive,BNT162b2,2
+266,76,48,Alpha,1497.25226,0,Infection naive,BNT162b2,2
+266,151,48,Alpha,369.306749200001,0,Infection naive,BNT162b2,2
+266,76,48,Delta,1020.817902,0,Infection naive,BNT162b2,2
+266,151,48,Delta,230.8636698,0,Infection naive,BNT162b2,2
+267,102,70,Ancestral,413.515579700001,0,Infection naive,BNT162b2,2
+267,151,70,Ancestral,317.0684939,0,Infection naive,BNT162b2,2
+267,307,70,Ancestral,129.7969721,0,Infection naive,BNT162b2,2
+267,102,70,Alpha,337.7227572,0,Infection naive,BNT162b2,2
+267,151,70,Alpha,190.042156000001,0,Infection naive,BNT162b2,2
+267,307,70,Alpha,71.6439877140535,0,Infection naive,BNT162b2,2
+267,102,70,Delta,251.570601999999,0,Infection naive,BNT162b2,2
+267,151,70,Delta,224.675262,0,Infection naive,BNT162b2,2
+267,307,70,Delta,53.1810232499998,0,Infection naive,BNT162b2,2
+268,81,75,Ancestral,163.590380327854,0,Infection naive,AZD1222,2
+268,150,75,Ancestral,107.2214163,0,Infection naive,AZD1222,2
+268,81,75,Alpha,163.3038598957,0,Infection naive,AZD1222,2
+268,150,75,Alpha,81.06852207,0,Infection naive,AZD1222,2
+268,81,75,Delta,81.6389676192483,0,Infection naive,AZD1222,2
+268,150,75,Delta,60.7065783099999,0,Infection naive,AZD1222,2
+269,84,48,Ancestral,711.406746999998,0,Infection naive,BNT162b2,2
+269,160,48,Ancestral,107.2214163,0,Infection naive,BNT162b2,2
+269,84,48,Alpha,235.152376499999,0,Infection naive,BNT162b2,2
+269,160,48,Alpha,112.1230748,0,Infection naive,BNT162b2,2
+269,84,48,Delta,89.7446067599999,0,Infection naive,BNT162b2,2
+269,160,48,Delta,56.7944494599999,0,Infection naive,BNT162b2,2
+270,131,82,Ancestral,221.740700900001,0,Infection naive,AZD1222,1
+270,131,82,Alpha,157.539532143869,0,Infection naive,AZD1222,1
+270,131,82,Delta,40.4568437,0,Infection naive,AZD1222,1
+271,20,-18,Ancestral,559.523354199999,0,Infection naive,BNT162b2,2
+271,41,-18,Ancestral,358.777826499999,0,Infection naive,BNT162b2,2
+271,75,-18,Ancestral,344.902285100001,0,Infection naive,BNT162b2,2
+271,154,-18,Ancestral,186.7397735,0,Infection naive,BNT162b2,2
+271,20,-18,Alpha,487.1632965,0,Infection naive,BNT162b2,2
+271,41,-18,Alpha,262.150520300001,0,Infection naive,BNT162b2,2
+271,75,-18,Alpha,187.889028099999,0,Infection naive,BNT162b2,2
+271,154,-18,Alpha,82.5021709899999,0,Infection naive,BNT162b2,2
+271,20,-18,Delta,190.042156000001,0,Infection naive,BNT162b2,2
+271,41,-18,Delta,246.7660763,0,Infection naive,BNT162b2,2
+271,75,-18,Delta,190.7096078,0,Infection naive,BNT162b2,2
+271,154,-18,Delta,85.89651734,0,Infection naive,BNT162b2,2
+272,96,53,Ancestral,2560,1,Infection naive,BNT162b2,2
+272,150,53,Ancestral,186.9035213,0,Infection naive,BNT162b2,2
+272,307,53,Ancestral,248.067227000001,0,Infection naive,BNT162b2,2
+272,96,53,Alpha,864.976446700001,0,Infection naive,BNT162b2,2
+272,150,53,Alpha,260.7755005,0,Infection naive,BNT162b2,2
+272,307,53,Alpha,156.850631321271,0,Infection naive,BNT162b2,2
+272,96,53,Delta,406.329875899999,0,Infection naive,BNT162b2,2
+272,150,53,Delta,141.3149794,0,Infection naive,BNT162b2,2
+272,307,53,Delta,95.5906897799999,0,Infection naive,BNT162b2,2
+273,39,39,Ancestral,397.5230848,0,Previously infected (Pre-Omicron),BNT162b2,3
+273,88,39,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+273,172,39,Ancestral,1047.097936,0,Previously infected (Pre-Omicron),BNT162b2,3
+273,39,39,Alpha,200.303857279495,0,Previously infected (Pre-Omicron),BNT162b2,3
+273,88,39,Alpha,1137.022277,0,Previously infected (Pre-Omicron),BNT162b2,3
+273,172,39,Alpha,416.790471097569,0,Previously infected (Pre-Omicron),BNT162b2,3
+273,39,39,Delta,123.4716256,0,Previously infected (Pre-Omicron),BNT162b2,3
+273,88,39,Delta,2324.793169,0,Previously infected (Pre-Omicron),BNT162b2,3
+273,172,39,Delta,638.700541000001,0,Previously infected (Pre-Omicron),BNT162b2,3
+274,28,26,Ancestral,124.886557571153,0,Infection naive,BNT162b2,2
+274,70,26,Ancestral,2560,1,Infection naive,BNT162b2,2
+274,154,26,Ancestral,198.729988805792,0,Infection naive,BNT162b2,2
+274,28,26,Alpha,123.147385999295,0,Infection naive,BNT162b2,2
+274,70,26,Alpha,354.091705500001,0,Infection naive,BNT162b2,2
+274,154,26,Alpha,287.926025764238,0,Infection naive,BNT162b2,2
+274,28,26,Delta,52.348576940565,0,Infection naive,BNT162b2,2
+274,70,26,Delta,221.740700900001,0,Infection naive,BNT162b2,2
+274,154,26,Delta,170.619731080311,0,Infection naive,BNT162b2,2
+275,81,67,Ancestral,329.824271999999,0,Infection naive,BNT162b2,2
+275,159,67,Ancestral,356.895981600001,0,Infection naive,BNT162b2,2
+275,81,67,Alpha,162.8750199,0,Infection naive,BNT162b2,2
+275,159,67,Alpha,214.1012355,0,Infection naive,BNT162b2,2
+275,81,67,Delta,160.4661115,0,Infection naive,BNT162b2,2
+275,159,67,Delta,72.02175288,0,Infection naive,BNT162b2,2
+276,76,59,Ancestral,370.928774700001,0,Infection naive,BNT162b2,2
+276,168,59,Ancestral,215.041585700001,0,Infection naive,BNT162b2,2
+276,270,59,Ancestral,311.83196,0,Infection naive,BNT162b2,2
+276,76,59,Alpha,273.8946361,0,Infection naive,BNT162b2,2
+276,168,59,Alpha,145.9729799,0,Infection naive,BNT162b2,2
+276,270,59,Alpha,166.629365,0,Infection naive,BNT162b2,2
+276,76,59,Delta,190.8768368,0,Infection naive,BNT162b2,2
+276,168,59,Delta,162.8750199,0,Infection naive,BNT162b2,2
+276,270,59,Delta,105.6356202,0,Infection naive,BNT162b2,2
+277,3,-18,Ancestral,598.589004999999,0,Infection naive,BNT162b2,2
+277,27,-18,Ancestral,76.3109723399998,0,Infection naive,BNT162b2,2
+277,3,-18,Alpha,474.104658399999,0,Infection naive,BNT162b2,2
+277,27,-18,Alpha,5,-1,Infection naive,BNT162b2,2
+277,3,-18,Delta,255.7951785,0,Infection naive,BNT162b2,2
+277,27,-18,Delta,5,-1,Infection naive,BNT162b2,2
+278,76,58,Ancestral,195.105553200001,0,Infection naive,BNT162b2,2
+278,151,58,Ancestral,124.5586024,0,Infection naive,BNT162b2,2
+278,76,58,Alpha,472.445371200002,0,Infection naive,BNT162b2,2
+278,151,58,Alpha,89.98089884,0,Infection naive,BNT162b2,2
+278,76,58,Delta,168.096279000001,0,Infection naive,BNT162b2,2
+278,151,58,Delta,82.0694344200001,0,Infection naive,BNT162b2,2
+279,0,-20,Ancestral,514.369532699999,0,Infection naive,BNT162b2,2
+279,21,-20,Ancestral,351.001678200001,0,Infection naive,BNT162b2,2
+279,75,-20,Ancestral,293.531934100001,0,Infection naive,BNT162b2,2
+279,0,-20,Alpha,436.608868200001,0,Infection naive,BNT162b2,2
+279,21,-20,Alpha,305.8765556,0,Infection naive,BNT162b2,2
+279,75,-20,Alpha,118.8005084,0,Infection naive,BNT162b2,2
+279,0,-20,Delta,222.129750100001,0,Infection naive,BNT162b2,2
+279,21,-20,Delta,127.0951026,0,Infection naive,BNT162b2,2
+279,75,-20,Delta,62.37866742,0,Infection naive,BNT162b2,2
+280,80,54,Ancestral,652.850416600002,0,Infection naive,BNT162b2,2
+280,159,54,Ancestral,99.4363371700003,0,Infection naive,BNT162b2,2
+280,80,54,Alpha,368.983196300001,0,Infection naive,BNT162b2,2
+280,159,54,Alpha,125.4350696,0,Infection naive,BNT162b2,2
+280,80,54,Delta,209.0939465,0,Infection naive,BNT162b2,2
+280,159,54,Delta,100.3996815,0,Infection naive,BNT162b2,2
+281,42,41,Ancestral,107.127478692248,0,Infection naive,BNT162b2,2
+281,74,41,Ancestral,2560,1,Infection naive,BNT162b2,2
+281,119,41,Ancestral,2560,1,Infection naive,BNT162b2,2
+281,210,41,Ancestral,156.0279256,0,Infection naive,BNT162b2,2
+281,42,41,Alpha,5,-1,Infection naive,BNT162b2,2
+281,74,41,Alpha,480.379055100002,0,Infection naive,BNT162b2,2
+281,119,41,Alpha,279.227353800001,0,Infection naive,BNT162b2,2
+281,210,41,Alpha,211.6755245,0,Infection naive,BNT162b2,2
+281,42,41,Delta,5,-1,Infection naive,BNT162b2,2
+281,74,41,Delta,255.123454000001,0,Infection naive,BNT162b2,2
+281,119,41,Delta,343.695184599999,0,Infection naive,BNT162b2,2
+281,210,41,Delta,131.3995102,0,Infection naive,BNT162b2,2
+282,7,-19,Ancestral,571.418062100002,0,Infection naive,BNT162b2,2
+282,28,-19,Ancestral,553.184101099999,0,Infection naive,BNT162b2,2
+282,73,-19,Ancestral,404.1986132,0,Infection naive,BNT162b2,2
+282,157,-19,Ancestral,296.375686400001,0,Infection naive,BNT162b2,2
+282,7,-19,Alpha,427.145810499999,0,Infection naive,BNT162b2,2
+282,28,-19,Alpha,653.4228862,0,Infection naive,BNT162b2,2
+282,73,-19,Alpha,192.5572123,0,Infection naive,BNT162b2,2
+282,157,-19,Alpha,102.5340426,0,Infection naive,BNT162b2,2
+282,7,-19,Delta,208.1796046,0,Infection naive,BNT162b2,2
+282,28,-19,Delta,245.686998900001,0,Infection naive,BNT162b2,2
+282,73,-19,Delta,173.789298600001,0,Infection naive,BNT162b2,2
+282,157,-19,Delta,102.8040085,0,Infection naive,BNT162b2,2
+283,80,47,Ancestral,1075.938979,0,Previously infected (Pre-Omicron),BNT162b2,3
+283,150,47,Ancestral,495.7784916,0,Previously infected (Pre-Omicron),BNT162b2,3
+283,80,47,Alpha,775.21519,0,Previously infected (Pre-Omicron),BNT162b2,3
+283,150,47,Alpha,283.419099300001,0,Previously infected (Pre-Omicron),BNT162b2,3
+283,80,47,Delta,1055.390567,0,Previously infected (Pre-Omicron),BNT162b2,3
+283,150,47,Delta,251.7911985,0,Previously infected (Pre-Omicron),BNT162b2,3
+284,20,-18,Ancestral,581.523253000001,0,Previously infected (Pre-Omicron),BNT162b2,3
+284,54,-18,Ancestral,183.1733947,0,Previously infected (Pre-Omicron),BNT162b2,3
+284,20,-18,Alpha,224.085259200001,0,Previously infected (Pre-Omicron),BNT162b2,3
+284,54,-18,Alpha,48.8036602599998,0,Previously infected (Pre-Omicron),BNT162b2,3
+284,20,-18,Delta,98.4822362500002,0,Previously infected (Pre-Omicron),BNT162b2,3
+284,54,-18,Delta,42.7911527100001,0,Previously infected (Pre-Omicron),BNT162b2,3
+285,102,89,Ancestral,458.1720963,0,Previously infected (Pre-Omicron),AZD1222,4
+285,160,89,Ancestral,252.2329721,0,Previously infected (Pre-Omicron),AZD1222,4
+285,307,89,Ancestral,178.2633469,0,Previously infected (Pre-Omicron),AZD1222,4
+285,102,89,Alpha,235.771518399999,0,Previously infected (Pre-Omicron),AZD1222,4
+285,160,89,Alpha,119.5316437,0,Previously infected (Pre-Omicron),AZD1222,4
+285,307,89,Alpha,91.3316871172036,0,Previously infected (Pre-Omicron),AZD1222,4
+285,102,89,Delta,249.375238500001,0,Previously infected (Pre-Omicron),AZD1222,4
+285,160,89,Delta,159.7644131,0,Previously infected (Pre-Omicron),AZD1222,4
+285,307,89,Delta,45.7387031300002,0,Previously infected (Pre-Omicron),AZD1222,4
+286,124,91,Ancestral,202.067223099999,0,Infection naive,AZD1222,1
+286,124,91,Alpha,5,-1,Infection naive,AZD1222,1
+286,124,91,Delta,5,-1,Infection naive,AZD1222,1
+287,119,97,Ancestral,267.0204364,0,Previously infected (Pre-Omicron),AZD1222,3
+287,119,97,Alpha,384.1640909,0,Previously infected (Pre-Omicron),AZD1222,3
+287,119,97,Delta,315.4054209,0,Previously infected (Pre-Omicron),AZD1222,3
+288,133,98,Ancestral,93.3550641612179,0,Previously infected (Pre-Omicron),AZD1222,2
+288,133,98,Alpha,5,-1,Previously infected (Pre-Omicron),AZD1222,2
+288,133,98,Delta,5,-1,Previously infected (Pre-Omicron),AZD1222,2
+289,81,54,Ancestral,2560,1,Infection naive,BNT162b2,2
+289,150,54,Ancestral,1136.026121,0,Infection naive,BNT162b2,2
+289,81,54,Alpha,1023.505653,0,Infection naive,BNT162b2,2
+289,150,54,Alpha,965.131054,0,Infection naive,BNT162b2,2
+289,81,54,Delta,1324.351075,0,Infection naive,BNT162b2,2
+289,150,54,Delta,965.131054,0,Infection naive,BNT162b2,2
+290,73,26,Ancestral,2560,1,Infection naive,BNT162b2,2
+290,150,26,Ancestral,80.9265345799999,0,Infection naive,BNT162b2,2
+290,73,26,Alpha,347.0249211,0,Infection naive,BNT162b2,2
+290,150,26,Alpha,137.889066,0,Infection naive,BNT162b2,2
+290,73,26,Delta,175.0121818,0,Infection naive,BNT162b2,2
+290,150,26,Delta,82.5021709899999,0,Infection naive,BNT162b2,2
+291,20,-9,Ancestral,979.619547991975,0,Previously infected (Pre-Omicron),BNT162b2,2
+291,20,-9,Alpha,930.247978689868,0,Previously infected (Pre-Omicron),BNT162b2,2
+291,20,-9,Delta,677.331448270097,0,Previously infected (Pre-Omicron),BNT162b2,2
+292,33,26,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+292,54,26,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+292,103,26,Ancestral,1905.352765,0,Previously infected (Pre-Omicron),BNT162b2,3
+292,187,26,Ancestral,776.575323100002,0,Previously infected (Pre-Omicron),BNT162b2,3
+292,33,26,Alpha,1743.930335,0,Previously infected (Pre-Omicron),BNT162b2,3
+292,54,26,Alpha,1439.346826,0,Previously infected (Pre-Omicron),BNT162b2,3
+292,103,26,Alpha,1046.180564,0,Previously infected (Pre-Omicron),BNT162b2,3
+292,187,26,Alpha,447.8489687,0,Previously infected (Pre-Omicron),BNT162b2,3
+292,33,26,Delta,1327.838011,0,Previously infected (Pre-Omicron),BNT162b2,3
+292,54,26,Delta,1676.48475799999,0,Previously infected (Pre-Omicron),BNT162b2,3
+292,103,26,Delta,973.627541000001,0,Previously infected (Pre-Omicron),BNT162b2,3
+292,187,26,Delta,448.241677300001,0,Previously infected (Pre-Omicron),BNT162b2,3
+293,3,-18,Ancestral,171.369106900001,0,Infection naive,BNT162b2,2
+293,24,-18,Ancestral,159.6244421,0,Infection naive,BNT162b2,2
+293,67,-18,Ancestral,207.8149884,0,Infection naive,BNT162b2,2
+293,150,-18,Ancestral,47.95559391,0,Infection naive,BNT162b2,2
+293,3,-18,Alpha,301.6169153,0,Infection naive,BNT162b2,2
+293,24,-18,Alpha,152.111941300001,0,Infection naive,BNT162b2,2
+293,67,-18,Alpha,149.3377252,0,Infection naive,BNT162b2,2
+293,150,-18,Alpha,91.0120414500003,0,Infection naive,BNT162b2,2
+293,3,-18,Delta,211.861138,0,Infection naive,BNT162b2,2
+293,24,-18,Delta,121.0074409,0,Infection naive,BNT162b2,2
+293,67,-18,Delta,94.1769112,0,Infection naive,BNT162b2,2
+293,150,-18,Delta,5,-1,Infection naive,BNT162b2,2
+294,81,69,Ancestral,225.06946,0,Infection naive,AZD1222,2
+294,150,69,Ancestral,72.6557930900001,0,Infection naive,AZD1222,2
+294,81,69,Alpha,164.021103800001,0,Infection naive,AZD1222,2
+294,150,69,Alpha,97.5372900100001,0,Infection naive,AZD1222,2
+294,81,69,Delta,67.2624239800003,0,Infection naive,AZD1222,2
+294,150,69,Delta,46.3846563599999,0,Infection naive,AZD1222,2
+295,39,39,Ancestral,111.9266968,0,Infection naive,BNT162b2,2
+295,61,39,Ancestral,1050.775475,0,Infection naive,BNT162b2,2
+295,103,39,Ancestral,629.805990200002,0,Infection naive,BNT162b2,2
+295,180,39,Ancestral,316.235864099999,0,Infection naive,BNT162b2,2
+295,39,39,Alpha,57.7988257483812,0,Infection naive,BNT162b2,2
+295,61,39,Alpha,586.128703399999,0,Infection naive,BNT162b2,2
+295,103,39,Alpha,399.9695656,0,Infection naive,BNT162b2,2
+295,180,39,Alpha,247.632749599999,0,Infection naive,BNT162b2,2
+295,39,39,Delta,5,-1,Infection naive,BNT162b2,2
+295,61,39,Delta,579.4880186,0,Infection naive,BNT162b2,2
+295,103,39,Delta,339.503505299999,0,Infection naive,BNT162b2,2
+295,180,39,Delta,172.1217741,0,Infection naive,BNT162b2,2
+296,131,90,Ancestral,255.795178527938,0,Previously infected (Pre-Omicron),AZD1222,2
+296,131,90,Alpha,787.542650715989,0,Previously infected (Pre-Omicron),AZD1222,2
+296,131,90,Delta,321.264642258916,0,Previously infected (Pre-Omicron),AZD1222,2
+297,133,91,Ancestral,197.6876195,0,Infection naive,AZD1222,2
+297,133,91,Alpha,64.0968121900002,0,Infection naive,AZD1222,2
+297,133,91,Delta,5,-1,Infection naive,AZD1222,2
+298,133,95,Ancestral,388.907172099179,0,Infection naive,AZD1222,2
+298,168,95,Ancestral,379.146391096023,0,Infection naive,AZD1222,2
+298,231,95,Ancestral,165.465056107443,0,Infection naive,AZD1222,2
+298,133,95,Alpha,601.218056900837,0,Infection naive,AZD1222,2
+298,168,95,Alpha,315.12909135797,0,Infection naive,AZD1222,2
+298,231,95,Alpha,180.148200793166,0,Infection naive,AZD1222,2
+298,133,95,Delta,355.335319792884,0,Infection naive,AZD1222,2
+298,168,95,Delta,321.828308569038,0,Infection naive,AZD1222,2
+298,231,95,Delta,127.429736224945,0,Infection naive,AZD1222,2
+299,46,41,Ancestral,143.185170342123,0,Previously infected (Pre-Omicron),BNT162b2,3
+299,84,41,Ancestral,888.801174300003,0,Previously infected (Pre-Omicron),BNT162b2,3
+299,159,41,Ancestral,72.7195032999999,0,Previously infected (Pre-Omicron),BNT162b2,3
+299,46,41,Alpha,320.701963182361,0,Previously infected (Pre-Omicron),BNT162b2,3
+299,84,41,Alpha,747.8515108,0,Previously infected (Pre-Omicron),BNT162b2,3
+299,159,41,Alpha,84.7003214900002,0,Previously infected (Pre-Omicron),BNT162b2,3
+299,238,41,Alpha,146.485655279567,0,Previously infected (Pre-Omicron),BNT162b2,3
+299,46,41,Delta,118.384726415322,0,Previously infected (Pre-Omicron),BNT162b2,3
+299,84,41,Delta,192.5572123,0,Previously infected (Pre-Omicron),BNT162b2,3
+299,159,41,Delta,82.8645272899999,0,Previously infected (Pre-Omicron),BNT162b2,3
+299,238,41,Delta,101.5502189,0,Previously infected (Pre-Omicron),BNT162b2,3
+300,59,29,Ancestral,2560,1,Infection naive,BNT162b2,2
+300,59,29,Alpha,830.795437600003,0,Infection naive,BNT162b2,2
+300,59,29,Delta,297.677392700001,0,Infection naive,BNT162b2,2
+301,76,45,Ancestral,1521.061544,0,Infection naive,BNT162b2,2
+301,76,45,Alpha,1395.862025,0,Infection naive,BNT162b2,2
+301,76,45,Delta,523.924869300001,0,Infection naive,BNT162b2,2
+302,80,48,Ancestral,813.501498699998,0,Infection naive,BNT162b2,2
+302,151,48,Ancestral,297.1560255,0,Infection naive,BNT162b2,2
+302,238,48,Ancestral,275.5802689,0,Infection naive,BNT162b2,2
+302,80,48,Alpha,391.643750499999,0,Infection naive,BNT162b2,2
+302,151,48,Alpha,472.445371200002,0,Infection naive,BNT162b2,2
+302,238,48,Alpha,199.777854367301,0,Infection naive,BNT162b2,2
+302,80,48,Delta,236.185184999999,0,Infection naive,BNT162b2,2
+302,151,48,Delta,183.8167226,0,Infection naive,BNT162b2,2
+302,238,48,Delta,120.1619114,0,Infection naive,BNT162b2,2
+303,32,32,Ancestral,134.310556300001,0,Previously infected (Pre-Omicron),BNT162b2,3
+303,32,32,Alpha,64.4347825330459,0,Previously infected (Pre-Omicron),BNT162b2,3
+303,32,32,Delta,5,-1,Previously infected (Pre-Omicron),BNT162b2,3
+304,0,-18,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+304,48,-18,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+304,90,-18,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+304,174,-18,Ancestral,626.502560999998,0,Previously infected (Pre-Omicron),BNT162b2,3
+304,0,-18,Alpha,2094.528381,0,Previously infected (Pre-Omicron),BNT162b2,3
+304,48,-18,Alpha,1015.463555,0,Previously infected (Pre-Omicron),BNT162b2,3
+304,90,-18,Alpha,1237.920091,0,Previously infected (Pre-Omicron),BNT162b2,3
+304,174,-18,Alpha,1664.770459,0,Previously infected (Pre-Omicron),BNT162b2,3
+304,0,-18,Delta,895.055299400003,0,Previously infected (Pre-Omicron),BNT162b2,3
+304,48,-18,Delta,540.246517400001,0,Previously infected (Pre-Omicron),BNT162b2,3
+304,90,-18,Delta,468.733176700001,0,Previously infected (Pre-Omicron),BNT162b2,3
+304,174,-18,Delta,813.501498699998,0,Previously infected (Pre-Omicron),BNT162b2,3
+305,46,46,Ancestral,130.36705105991,0,Infection naive,AZD1222,1
+305,102,46,Ancestral,111.828636774095,0,Infection naive,AZD1222,1
+305,46,46,Alpha,5,-1,Infection naive,AZD1222,1
+305,102,46,Alpha,5,-1,Infection naive,AZD1222,1
+305,46,46,Delta,5,-1,Infection naive,AZD1222,1
+305,102,46,Delta,5,-1,Infection naive,AZD1222,1
+306,4,-18,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+306,25,-18,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+306,70,-18,Ancestral,2011.75954500001,0,Previously infected (Pre-Omicron),BNT162b2,3
+306,4,-18,Alpha,2146.567843,0,Previously infected (Pre-Omicron),BNT162b2,3
+306,25,-18,Alpha,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+306,70,-18,Alpha,1990.710915,0,Previously infected (Pre-Omicron),BNT162b2,3
+306,4,-18,Delta,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+306,25,-18,Delta,2308.548869,0,Previously infected (Pre-Omicron),BNT162b2,3
+306,70,-18,Delta,884.139275500002,0,Previously infected (Pre-Omicron),BNT162b2,3
+307,53,53,Ancestral,161.8787676,0,Infection naive,BNT162b2,2
+307,53,53,Alpha,90.6935144891519,0,Infection naive,BNT162b2,2
+307,53,53,Delta,40.5989332000001,0,Infection naive,BNT162b2,2
+308,84,53,Ancestral,977.903792999997,0,Infection naive,BNT162b2,2
+308,159,53,Ancestral,145.2073292,0,Infection naive,BNT162b2,2
+308,84,53,Alpha,465.050150400001,0,Infection naive,BNT162b2,2
+308,159,53,Alpha,156.5759152,0,Infection naive,BNT162b2,2
+308,84,53,Delta,355.0240073,0,Infection naive,BNT162b2,2
+308,159,53,Delta,99.8730697099998,0,Infection naive,BNT162b2,2
+309,52,44,Ancestral,2560,1,Infection naive,BNT162b2,2
+309,52,44,Alpha,532.256315000001,0,Infection naive,BNT162b2,2
+309,52,44,Delta,649.426115799998,0,Infection naive,BNT162b2,2
+310,81,48,Ancestral,2560,1,Infection naive,BNT162b2,2
+310,151,48,Ancestral,1058.169346,0,Infection naive,BNT162b2,2
+310,319,48,Ancestral,695.377960810212,0,Infection naive,BNT162b2,2
+310,353,48,Ancestral,607.57498998905,0,Infection naive,BNT162b2,2
+310,531,48,Ancestral,936.793747699999,0,Infection naive,BNT162b2,2
+310,81,48,Alpha,1353.690964,0,Infection naive,BNT162b2,2
+310,151,48,Alpha,725.257808200001,0,Infection naive,BNT162b2,2
+310,319,48,Alpha,1007.4846472003,0,Infection naive,BNT162b2,2
+310,353,48,Alpha,941.733283569616,0,Infection naive,BNT162b2,2
+310,531,48,Alpha,695.377960799999,0,Infection naive,BNT162b2,2
+310,81,48,Delta,602.272908000001,0,Infection naive,BNT162b2,2
+310,151,48,Delta,456.9689249,0,Infection naive,BNT162b2,2
+310,319,48,Delta,371.905407571902,0,Infection naive,BNT162b2,2
+310,353,48,Delta,416.060483272753,0,Infection naive,BNT162b2,2
+311,88,62,Ancestral,357.522163954259,0,Infection naive,AZD1222,3
+311,88,62,Alpha,515.272006078912,0,Infection naive,AZD1222,3
+311,88,62,Delta,301.616915337642,0,Infection naive,AZD1222,3
+312,84,53,Ancestral,888.801174300003,0,Infection naive,BNT162b2,2
+312,168,53,Ancestral,67.2034947699999,0,Infection naive,BNT162b2,2
+312,84,53,Alpha,291.225534900001,0,Infection naive,BNT162b2,2
+312,168,53,Alpha,114.8081484,0,Infection naive,BNT162b2,2
+312,238,53,Alpha,109.500798270708,0,Infection naive,BNT162b2,2
+312,84,53,Delta,124.8865576,0,Infection naive,BNT162b2,2
+312,168,53,Delta,44.3957646400001,0,Infection naive,BNT162b2,2
+312,238,53,Delta,47.1222645000002,0,Infection naive,BNT162b2,2
+313,45,39,Ancestral,2560,1,Infection naive,BNT162b2,2
+313,67,39,Ancestral,1347.771441,0,Infection naive,BNT162b2,2
+313,109,39,Ancestral,775.894958500002,0,Infection naive,BNT162b2,2
+313,193,39,Ancestral,339.801208099999,0,Infection naive,BNT162b2,2
+313,45,39,Alpha,1001.32219871309,0,Infection naive,BNT162b2,2
+313,67,39,Alpha,2433.20351999999,0,Infection naive,BNT162b2,2
+313,109,39,Alpha,2560,1,Infection naive,BNT162b2,2
+313,193,39,Alpha,199.953035,0,Infection naive,BNT162b2,2
+313,45,39,Delta,2560,1,Infection naive,BNT162b2,2
+313,67,39,Delta,812.076691199999,0,Infection naive,BNT162b2,2
+313,109,39,Delta,516.628685899999,0,Infection naive,BNT162b2,2
+313,193,39,Delta,184.4623099,0,Infection naive,BNT162b2,2
+314,124,90,Ancestral,203.667521299999,0,Infection naive,AZD1222,2
+314,124,90,Alpha,40.4568437,0,Infection naive,AZD1222,2
+314,124,90,Delta,61.4560919600002,0,Infection naive,AZD1222,2
+315,80,47,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+315,151,47,Ancestral,2223.160726,0,Previously infected (Pre-Omicron),BNT162b2,3
+315,305,47,Ancestral,2286.398127,0,Previously infected (Pre-Omicron),BNT162b2,3
+315,80,47,Alpha,2098.20327900001,0,Previously infected (Pre-Omicron),BNT162b2,3
+315,151,47,Alpha,1820.46058,0,Previously infected (Pre-Omicron),BNT162b2,3
+315,305,47,Alpha,983.060094309901,0,Previously infected (Pre-Omicron),BNT162b2,3
+315,80,47,Delta,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+315,151,47,Delta,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+315,305,47,Delta,1148.037806,0,Previously infected (Pre-Omicron),BNT162b2,3
+316,84,42,Ancestral,460.5879509,0,Infection naive,BNT162b2,2
+316,151,42,Ancestral,191.0442123,0,Infection naive,BNT162b2,2
+316,84,42,Alpha,298.199674599999,0,Infection naive,BNT162b2,2
+316,151,42,Alpha,210.3807757,0,Infection naive,BNT162b2,2
+316,84,42,Delta,389.248195900001,0,Infection naive,BNT162b2,2
+316,151,42,Delta,164.5971664,0,Infection naive,BNT162b2,2
+317,17,-31,Ancestral,109.213246450387,0,Infection naive,"",1
+317,17,-31,Alpha,5,-1,Infection naive,"",1
+317,17,-31,Delta,5,-1,Infection naive,"",1
+318,84,53,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+318,151,53,Ancestral,382.484188999999,0,Previously infected (Pre-Omicron),BNT162b2,3
+318,84,53,Alpha,508.541860499999,0,Previously infected (Pre-Omicron),BNT162b2,3
+318,151,53,Alpha,357.522164,0,Previously infected (Pre-Omicron),BNT162b2,3
+318,84,53,Delta,351.925844300001,0,Previously infected (Pre-Omicron),BNT162b2,3
+318,151,53,Delta,218.269778,0,Previously infected (Pre-Omicron),BNT162b2,3
+319,35,31,Ancestral,501.89961977487,0,Previously infected (Pre-Omicron),BNT162b2,3
+319,77,31,Ancestral,1047.097936,0,Previously infected (Pre-Omicron),BNT162b2,3
+319,35,31,Alpha,403.137177574692,0,Previously infected (Pre-Omicron),BNT162b2,3
+319,77,31,Alpha,677.331448299999,0,Previously infected (Pre-Omicron),BNT162b2,3
+319,35,31,Delta,190.542525447934,0,Previously infected (Pre-Omicron),BNT162b2,3
+319,77,31,Delta,374.194229200001,0,Previously infected (Pre-Omicron),BNT162b2,3
+320,21,-18,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+320,42,-18,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+320,105,-18,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+320,21,-18,Alpha,792.389433300002,0,Previously infected (Pre-Omicron),BNT162b2,3
+320,42,-18,Alpha,937.615200800003,0,Previously infected (Pre-Omicron),BNT162b2,3
+320,105,-18,Alpha,1127.099904,0,Previously infected (Pre-Omicron),BNT162b2,3
+320,21,-18,Delta,557.565115799999,0,Previously infected (Pre-Omicron),BNT162b2,3
+320,42,-18,Delta,681.4999568,0,Previously infected (Pre-Omicron),BNT162b2,3
+320,105,-18,Delta,651.706981500002,0,Previously infected (Pre-Omicron),BNT162b2,3
+321,80,54,Ancestral,430.528648299999,0,Infection naive,BNT162b2,2
+321,160,54,Ancestral,288.937258,0,Infection naive,BNT162b2,2
+321,243,54,Ancestral,229.854131600001,0,Infection naive,BNT162b2,2
+321,80,54,Alpha,311.2858018,0,Infection naive,BNT162b2,2
+321,160,54,Alpha,130.9396338,0,Infection naive,BNT162b2,2
+321,243,54,Alpha,145.334658200302,0,Infection naive,BNT162b2,2
+321,80,54,Delta,215.230150699999,0,Infection naive,BNT162b2,2
+321,160,54,Delta,170.320899100001,0,Infection naive,BNT162b2,2
+321,243,54,Delta,70.7082208599999,0,Infection naive,BNT162b2,2
+322,81,50,Ancestral,1167.316583,0,Infection naive,BNT162b2,2
+322,151,50,Ancestral,174.3996683,0,Infection naive,BNT162b2,2
+322,307,50,Ancestral,110.5616476,0,Infection naive,BNT162b2,2
+322,81,50,Alpha,1489.398942,0,Infection naive,BNT162b2,2
+322,151,50,Alpha,417.887855000001,0,Infection naive,BNT162b2,2
+322,307,50,Alpha,128.101649069628,0,Infection naive,BNT162b2,2
+322,81,50,Delta,1059.09723,0,Infection naive,BNT162b2,2
+322,151,50,Delta,292.761111899999,0,Infection naive,BNT162b2,2
+322,307,50,Delta,71.2057652699998,0,Infection naive,BNT162b2,2
+323,4,-33,Ancestral,114.4063389926,0,Infection naive,BNT162b2,1
+323,25,-33,Ancestral,138.737678205393,0,Infection naive,BNT162b2,1
+323,4,-33,Alpha,107.033623347396,0,Infection naive,BNT162b2,1
+323,25,-33,Alpha,60.0187886685244,0,Infection naive,BNT162b2,1
+323,4,-33,Delta,5,-1,Infection naive,BNT162b2,1
+323,25,-33,Delta,5,-1,Infection naive,BNT162b2,1
+324,131,97,Ancestral,461.800650900001,0,Previously infected (Pre-Omicron),AZD1222,3
+324,168,97,Ancestral,388.907172100001,0,Previously infected (Pre-Omicron),AZD1222,3
+324,131,97,Alpha,817.074464,0,Previously infected (Pre-Omicron),AZD1222,3
+324,168,97,Alpha,261.6913767,0,Previously infected (Pre-Omicron),AZD1222,3
+324,131,97,Delta,325.5163233,0,Previously infected (Pre-Omicron),AZD1222,3
+324,168,97,Delta,229.0496805,0,Previously infected (Pre-Omicron),AZD1222,3
+325,80,59,Ancestral,2560,1,Previously infected (Pre-Omicron),BNT162b2,3
+325,150,59,Ancestral,303.4731597,0,Previously infected (Pre-Omicron),BNT162b2,3
+325,80,59,Alpha,1672.082267,0,Previously infected (Pre-Omicron),BNT162b2,3
+325,150,59,Alpha,812.788782800003,0,Previously infected (Pre-Omicron),BNT162b2,3
+325,80,59,Delta,1011.023059,0,Previously infected (Pre-Omicron),BNT162b2,3
+325,150,59,Delta,651.1360152,0,Previously infected (Pre-Omicron),BNT162b2,3
+326,96,48,Ancestral,804.284739699998,0,Infection naive,BNT162b2,2
+326,160,48,Ancestral,487.1632965,0,Infection naive,BNT162b2,2
+326,96,48,Alpha,553.184101099999,0,Infection naive,BNT162b2,2
+326,160,48,Alpha,465.050150400001,0,Infection naive,BNT162b2,2
+326,96,48,Delta,380.144660400001,0,Infection naive,BNT162b2,2
+326,160,48,Delta,245.686998900001,0,Infection naive,BNT162b2,2
+327,133,97,Ancestral,278.250104599999,0,Infection naive,AZD1222,2
+327,160,97,Ancestral,220.7710563,0,Infection naive,AZD1222,2
+327,133,97,Alpha,206.182101900001,0,Infection naive,AZD1222,2
+327,160,97,Alpha,155.6181924,0,Infection naive,AZD1222,2
+327,133,97,Delta,41.4256862299999,0,Infection naive,AZD1222,2
+327,160,97,Delta,68.9940342600001,0,Infection naive,AZD1222,2
+328,76,53,Ancestral,633.1268378,0,Infection naive,BNT162b2,2
+328,150,53,Ancestral,128.5515581,0,Infection naive,BNT162b2,2
+328,76,53,Alpha,719.559164000002,0,Infection naive,BNT162b2,2
+328,150,53,Alpha,280.2080351,0,Infection naive,BNT162b2,2
+328,242,53,Alpha,212.605220770371,0,Infection naive,BNT162b2,2
+328,76,53,Delta,348.243716,0,Infection naive,BNT162b2,2
+328,150,53,Delta,155.8912282,0,Infection naive,BNT162b2,2
+328,242,53,Delta,193.7422693,0,Infection naive,BNT162b2,2
+329,67,38,Ancestral,494.043349599999,0,Previously infected (Pre-Omicron),BNT162b2,3
+329,151,38,Ancestral,388.226020499999,0,Previously infected (Pre-Omicron),BNT162b2,3
+329,67,38,Alpha,527.149266099999,0,Previously infected (Pre-Omicron),BNT162b2,3
+329,151,38,Alpha,155.0735547,0,Previously infected (Pre-Omicron),BNT162b2,3
+329,67,38,Delta,324.3770705,0,Previously infected (Pre-Omicron),BNT162b2,3
+329,151,38,Delta,190.3755894,0,Previously infected (Pre-Omicron),BNT162b2,3
+330,80,53,Ancestral,604.388165800002,0,Infection naive,BNT162b2,2
+330,151,53,Ancestral,320.420993300001,0,Infection naive,BNT162b2,2
+330,80,53,Alpha,878.731289700001,0,Infection naive,BNT162b2,2
+330,151,53,Alpha,246.982459799999,0,Infection naive,BNT162b2,2
+330,80,53,Delta,597.540606,0,Infection naive,BNT162b2,2
+330,151,53,Delta,212.6052208,0,Infection naive,BNT162b2,2
+331,131,81,Ancestral,183.6556791,0,Infection naive,AZD1222,2
+331,131,81,Alpha,45.7387031300002,0,Infection naive,AZD1222,2
+331,131,81,Delta,40.3152515,0,Infection naive,AZD1222,2
+332,7,-13,Ancestral,165.61014864394,0,Infection naive,BNT162b2,1
+332,28,-13,Ancestral,154.260170083228,0,Infection naive,BNT162b2,1
+332,7,-13,Alpha,176.243669879066,0,Infection naive,BNT162b2,1
+332,28,-13,Alpha,155.891228179604,0,Infection naive,BNT162b2,1
+332,7,-13,Delta,111.047243401498,0,Infection naive,BNT162b2,1
+332,28,-13,Delta,68.3919488710283,0,Infection naive,BNT162b2,1
+333,84,54,Ancestral,438.1422931,0,Infection naive,BNT162b2,2
+333,151,54,Ancestral,163.733829,0,Infection naive,BNT162b2,2
+333,236,54,Ancestral,103.5273976,0,Infection naive,BNT162b2,2
+333,84,54,Alpha,580.5047439,0,Infection naive,BNT162b2,2
+333,151,54,Alpha,165.900715500001,0,Infection naive,BNT162b2,2
+333,236,54,Alpha,151.181523110332,0,Infection naive,BNT162b2,2
+333,84,54,Delta,171.2189689,0,Infection naive,BNT162b2,2
+333,151,54,Delta,84.9233322799998,0,Infection naive,BNT162b2,2
+333,236,54,Delta,44.4346942700001,0,Infection naive,BNT162b2,2
+334,74,74,Ancestral,88.1851052684112,0,Infection naive,AZD1222,2
+334,168,74,Ancestral,5,-1,Infection naive,AZD1222,2
+334,74,74,Alpha,5,-1,Infection naive,AZD1222,2
+334,74,74,Delta,5,-1,Infection naive,AZD1222,2
+335,131,96,Ancestral,136.805615775511,0,Infection naive,AZD1222,1
+335,151,96,Ancestral,120.689672339818,0,Infection naive,AZD1222,1
+335,131,96,Alpha,70.0297688893001,0,Infection naive,AZD1222,1
+335,151,96,Alpha,50.9007153836499,0,Infection naive,AZD1222,1
+335,131,96,Delta,5,-1,Infection naive,AZD1222,1
+335,151,96,Delta,5,-1,Infection naive,AZD1222,1
diff --git a/tests/testthat/testdata/test_inf.csv b/tests/testthat/testdata/test_inf.csv
new file mode 100644
index 0000000..582e69f
--- /dev/null
+++ b/tests/testthat/testdata/test_inf.csv
@@ -0,0 +1,4 @@
+"pid","day","exposure"
+"01-A",100,"delta"
+"01-A",117,"delta"
+"02-B",27,"delta"
\ No newline at end of file
diff --git a/tests/testthat/testdata/test_sero.csv b/tests/testthat/testdata/test_sero.csv
new file mode 100644
index 0000000..8279812
--- /dev/null
+++ b/tests/testthat/testdata/test_sero.csv
@@ -0,0 +1,17 @@
+"pid","day","titre_type","value","Age"
+"01-A",1,"sVNT",0.801026196911207,12
+"01-A",1,"IgA",1.78744206485982,12
+"01-A",1,"spike",0,12
+"01-A",1,"NCP",0.0149403497929365,12
+"01-A",182,"sVNT",1.96275325842584,12
+"01-A",182,"IgA",2.30404462059678,12
+"01-A",182,"spike",2.27587379896571,12
+"01-A",182,"NCP",2.29786020797958,12
+"02-B",1,"sVNT",0.801026196911207,32
+"02-B",1,"IgA",1.65947904814021,32
+"02-B",1,"spike",0.890014760709071,32
+"02-B",1,"NCP",0.948477860566987,32
+"02-B",183,"sVNT",1.62282409414993,32
+"02-B",183,"IgA",1.67839670919453,32
+"02-B",183,"spike",2.01321215832131,32
+"02-B",183,"NCP",1.36014887675169,32
diff --git a/vignettes/biokinetics.Rmd b/vignettes/biokinetics.Rmd
index 290e115..b5679eb 100644
--- a/vignettes/biokinetics.Rmd
+++ b/vignettes/biokinetics.Rmd
@@ -71,10 +71,10 @@ plot_data[, titre_type := forcats::fct_relevel(
c("Ancestral", "Alpha", "Delta"))]
ggplot(data = plot_data) +
- geom_line(aes(x = t,
+ geom_line(aes(x = time_since_last_exp,
y = me,
colour = titre_type)) +
- geom_ribbon(aes(x = t,
+ geom_ribbon(aes(x = time_since_last_exp,
ymin = lo,
ymax = hi,
fill = titre_type), alpha = 0.65) +
@@ -173,8 +173,8 @@ res$wave <- "Delta"
dat$wave <- "Delta"
plot_data <- merge(
res, dat[, .(
- min_date = min(date), max_date = max(date)), by = wave])[
- , .SD[calendar_date >= min_date & calendar_date <= date_ba2], by = wave]
+ min_date = min(day), max_date = max(day)), by = wave])[
+ , .SD[calendar_day >= min_date & calendar_day <= date_ba2], by = wave]
plot_data[, titre_type := forcats::fct_relevel(
titre_type,
@@ -182,14 +182,14 @@ plot_data[, titre_type := forcats::fct_relevel(
ggplot() + geom_line(
data = plot_data,
- aes(x = calendar_date,
+ aes(x = calendar_day,
y = me,
group = interaction(titre_type, wave),
colour = titre_type),
alpha = 0.2) +
geom_ribbon(
data = plot_data,
- aes(x = calendar_date,
+ aes(x = calendar_day,
ymin = lo,
ymax = hi,
group = interaction(titre_type, wave)
@@ -205,10 +205,10 @@ ggplot() + geom_line(
values = custom_palette) +
scale_x_date(
date_labels = "%b %Y",
- limits = c(min(dat$date), date_ba2)) +
+ limits = c(min(dat$day), date_ba2)) +
geom_smooth(
data = plot_data,
- aes(x = calendar_date,
+ aes(x = calendar_day,
y = me,
fill = titre_type,
colour = titre_type,
@@ -236,7 +236,7 @@ combined_data <- data.table::data.table(data.table::rbindlist(results_list))
Plotting the median values:
```{r}
-plot_data <- combined_data[calendar_date == date_delta]
+plot_data <- combined_data[calendar_day == date_delta]
plot_data <- plot_data[, titre_type := forcats::fct_relevel(
titre_type,
c("Ancestral", "Alpha", "Delta"))]
diff --git a/vignettes/data.Rmd b/vignettes/data.Rmd
index 443dac8..e3a5320 100644
--- a/vignettes/data.Rmd
+++ b/vignettes/data.Rmd
@@ -2,9 +2,9 @@
title: "A guide to model input and output data"
output: rmarkdown::html_vignette
vignette: >
- %\VignetteIndexEntry{A guide to model input and output data}
- %\VignetteEngine{knitr::rmarkdown}
- %\VignetteEncoding{UTF-8}
+ %\VignetteIndexEntry{A guide to model input and output data}
+ %\VignetteEngine{knitr::rmarkdown}
+ %\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
@@ -16,30 +16,29 @@ knitr::opts_chunk$set(
# Input data
-The model requires a data table containing the following columns:
+The model requires time series data about individual titre readings, along with last exposure times. Times can be relative (e.g. day of study) or absolute (i.e. precise calendar dates).
+The full list of required columns is as follows:
-### pid
-A unique numeric id to identify a person across observations
-
-### date
-The date of the observation
-
-### last_exp_date
-The last date on which the person was exposed
-
-### titre_type
-The name of the titre
-
-### value
-The value of the titre
-
-### censored
-Whether this observation should be censored: -1 for lower, 1 for upper, 0 for none
+| name | type | description | required |
+|--------------|----------------------|-----------------------------------------------------------------------------------------------------------------| -------- |
+| pid | numeric or character | Unique identifier to identify a person across observations | T|
+| day | integer or date | The day of the observation. Can be a date or an integer representing a relative day of study | T|
+| last_exp_day | integer or date | The most recent day on which the person was exposed. Must be of the same type as the 'day' column | T|
+| titre_type | character | Name of the titre or biomarker | T|
+| value | numeric | Titre value | T|
+| censored | -1, 0 or 1 | Optional column. Whether this observation should be treated as censored: -1 for lower, 1 for upper, 0 for none. | F|
It can also contain further columns for any covariates to be included in the model. The data files installed with this package have additional columns infection_history, last_vax_type, and exp_num.
The model also accepts a covariate formula to define the regression model. The variables in the formula must correspond to column names in the dataset. Note that all variables will be treated as **categorical variables**; that is, converted to factors regardless of their input type.
+## Example
+
+```{r}
+dat <- data.table::fread(system.file("delta_full.rds", package = "epikinetics"))
+head(dat)
+```
+
# Ouput data
After fitting a model, a [CmdStanMCMC](https://mc-stan.org/cmdstanr/reference/CmdStanMCMC.html) object is returned. This means
@@ -59,18 +58,78 @@ guidance on the correct interpretation of each column in the returned tables. (I
See the documentation for this function [here](../reference/biokinetics.html#method-simulate-population-trajectories).
There are 2 different output formats depending on whether the provided `summarise` argument is `TRUE` or `FALSE`.
-* `summarise = TRUE`
- Returned columns are:
- * t:
- * p:
- * k:
- * me:
- * lo
- * hi
- * titre_type
+### summarise = TRUE
+
+Returned columns are
+
+| name | type | description |
+|---------------------|------------|-----------------------------------------------------------------------------------------------|
+| time_since_last_exp | integer | Number of days since last exposure |
+| me | numeric | Median titre value |
+| lo | numeric | Titre value at the 0.025 quantile |
+| hi | numeric | Titre value at the 0.975 quantile |
+| titre_type | character | Name of the titre or biomarker |
+| censored | -1, 0 or 1 | Whether this observation should be treated as censored: -1 for lower, 1 for upper, 0 for none |
+
+There will also be a column for each covariate in the regression model.
+
+### summarise = FALSE
+
+Returned columns are
+
+| name | type | description |
+|---------------------|---------|------------------------------------|
+| time_since_last_exp | integer | Number of days since last exposure |
+| t0_pop | numeric | |
+| tp_pop | numeric | |
+| ts_pop | numeric | |
+| m1_pop | numeric | |
+| m2_pop | numeric | |
+| m3_pop | numeric | |
+| beta_t0 | numeric | |
+| beta_tp | numeric | |
+| beta_ts | numeric | |
+| beta_m1 | numeric | |
+| beta_m2 | numeric | |
+| beta_t3 | numeric | |
+| mu | numeric | Titre value |
+| .draw | integer | Draw number |
+| titre_type | numeric | Name of the titre or biomarker |
+
+There will also be column for each covariate in the hierarchical model.
+
+## simulate_individual_trajectories
+
+See the documentation for this function [here](../reference/biokinetics.html#method-simulate-individual-trajectories).
+There are 2 different output formats depending on whether the provided `summarise` argument is `TRUE` or `FALSE`.
+
+### summarise = FALSE
+
+Returned columns are
+
+| name | type | description |
+|---------------------|----------------------|---------------------------------------------------------------------------------------------|
+| pid | character or numeric | Unique person identifier as provided in input data |
+| draw | integer | Which draw from the fits this is |
+| time_since_last_exp | integer | Number of days since last exposure |
+| mu | numeric | Titre value |
+| titre_type | character | Name of the titre or biomarker |
+| exposure_day | integer | Day of this person's last exposure |
+| calendar_day | integer | Day of this titre value |
+| time_shift | integer | The number of days these exposures have been adjusted by, as provided in function arguments |
+
+There will also be a column for each covariate in the regression model.
+
+### summarise = TRUE
- There will also be a column for each covariate in the hierarchical model.
+Returned columns are
-* `summarise = FALSE`
- Returned columns are t, p, k, t0_pop, tp_pop, ts_pop, m1_pop, m2_pop, m3_pop, beta_t0, beta_tp, beta_ts, beta_m1, beta_m2, beta_m3, mu .draw, titre_type and a column for each covariate in the hierarchical model.
+| name | type | description |
+|--------------|-----------|--------------------------------------------------------------------------------------|
+| me | numeric | Median titre value |
+| lo | numeric | Titre value at the 0.025 quantile |
+| hi | numeric | Titre value at the 0.075 quantile |
+| titre_type | character | Name of the titre or biomarker |
+| calendar_day | integer | Day of this titre value |
+| time_shift | integer | The number of days the exposures were adjusted by, as provided in function arguments |