Skip to content

Commit

Permalink
Merge pull request #317 from mrc-ide/vivax_competing_hazards_main_no_…
Browse files Browse the repository at this point in the history
…blood_immunity

Remove blood immunity from p.v model
  • Loading branch information
giovannic authored Oct 9, 2024
2 parents 3aabfee + e733b28 commit ad53f50
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 38 deletions.
25 changes: 17 additions & 8 deletions R/human_infection.R
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ simulate_infection <- function(
infection_outcome
) {
if (bitten_humans$size() > 0) {
boost_immunity(
variables$ib,
bitten_humans,
variables$last_boosted_ib,
timestep,
parameters$ub
)
if(parameters$parasite == "falciparum"){
boost_immunity(
variables$ib,
bitten_humans,
variables$last_boosted_ib,
timestep,
parameters$ub
)
}
}

# Calculate Infected
Expand Down Expand Up @@ -61,7 +63,14 @@ calculate_infections <- function(
source_humans <- variables$state$get_index_of(
c('S', 'A', 'U'))$and(bitten_humans)

b <- blood_immunity(variables$ib$get_values(source_humans), parameters)
if(parameters$parasite == "falciparum"){
## p.f models blood immunity
b <- blood_immunity(variables$ib$get_values(source_humans), parameters)

} else if (parameters$parasite == "vivax"){
## p.v does not model blood immunity
b <- parameters$b
}

source_vector <- source_humans$to_vector()

Expand Down
7 changes: 5 additions & 2 deletions R/mortality_processes.R
Original file line number Diff line number Diff line change
Expand Up @@ -91,15 +91,18 @@ reset_target <- function(variables, events, target, state, parameters, timestep)
variables$birth$queue_update(timestep, target)

# non-maternal immunity
variables$last_boosted_ib$queue_update(-1, target)
variables$last_boosted_ica$queue_update(-1, target)
variables$last_boosted_iva$queue_update(-1, target)
variables$last_boosted_id$queue_update(-1, target)
variables$ib$queue_update(0, target)
variables$ica$queue_update(0, target)
variables$iva$queue_update(0, target)
variables$id$queue_update(0, target)
variables$state$queue_update(state, target)

if(parameters$parasite == "falciparum"){
variables$last_boosted_ib$queue_update(-1, target)
variables$ib$queue_update(0, target)
}

# treatment
variables$drug$queue_update(0, target)
Expand Down
17 changes: 13 additions & 4 deletions R/processes.R
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@ create_processes <- function(
parameters$rm),
immunity_process = create_exponential_decay_process(variables$ivm,
parameters$rvm),
# Blood immunity
immunity_process = create_exponential_decay_process(variables$ib,
parameters$rb),
# Acquired immunity
immunity_process = create_exponential_decay_process(variables$ica,
parameters$rc),
Expand All @@ -56,6 +53,15 @@ create_processes <- function(
immunity_process = create_exponential_decay_process(variables$id,
parameters$rid)
)

if(parameters$parasite == "falciparum"){
processes <- c(
processes,
# Blood immunity
immunity_process = create_exponential_decay_process(variables$ib,
parameters$rb)
)
}

if (parameters$individual_mosquitoes) {
processes <- c(
Expand Down Expand Up @@ -179,7 +185,10 @@ create_processes <- function(
# Rendering
# =========

imm_var_names <- c('ica', 'icm', 'id', 'ib', 'iva', 'ivm')
imm_var_names <- c('ica', 'icm', 'id', 'iva', 'ivm')
if(parameters$parasite == "falciparum"){
imm_var_names <- c(imm_var_names, 'ib')
}

processes <- c(
processes,
Expand Down
37 changes: 22 additions & 15 deletions R/variables.R
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#' boosted for tracking grace periods in the boost of immunity
#' * ICM - Maternal immunity to clinical disease
#' * IVM - Maternal immunity to severe disease
#' * IB - Pre-erythoctic immunity
#' * IB - Pre-erythrocytic immunity (p.f only)
#' * ICA - Acquired immunity to clinical disease
#' * IVA - Acquired immunity to severe disease
#' * ID - Acquired immunity to detectability
Expand Down Expand Up @@ -96,7 +96,6 @@ create_variables <- function(parameters) {
initial_states <- initial_state(parameters, initial_age, groups, eq, states)
state <- individual::CategoricalVariable$new(states, initial_states)
birth <- individual::IntegerVariable$new(-initial_age)
last_boosted_ib <- individual::DoubleVariable$new(rep(-1, size))
last_boosted_ica <- individual::DoubleVariable$new(rep(-1, size))
last_boosted_iva <- individual::DoubleVariable$new(rep(-1, size))
last_boosted_id <- individual::DoubleVariable$new(rep(-1, size))
Expand Down Expand Up @@ -124,17 +123,21 @@ create_variables <- function(parameters) {
)
)

# Pre-erythoctic immunity
ib <- individual::DoubleVariable$new(
initial_immunity(
parameters$init_ib,
initial_age,
groups,
eq,
parameters,
'IB'
if(parameters$parasite == "falciparum"){
# Pre-erythrocytic immunity
last_boosted_ib <- individual::DoubleVariable$new(rep(-1, size))
ib <- individual::DoubleVariable$new(
initial_immunity(
parameters$init_ib,
initial_age,
groups,
eq,
parameters,
'IB'
)
)
)
}

# Acquired immunity to clinical disease
ica <- individual::DoubleVariable$new(
initial_immunity(
Expand Down Expand Up @@ -224,13 +227,11 @@ create_variables <- function(parameters) {
variables <- list(
state = state,
birth = birth,
last_boosted_ib = last_boosted_ib,
last_boosted_ica = last_boosted_ica,
last_boosted_iva = last_boosted_iva,
last_boosted_id = last_boosted_id,
icm = icm,
ivm = ivm,
ib = ib,
ica = ica,
iva = iva,
id = id,
Expand All @@ -248,7 +249,13 @@ create_variables <- function(parameters) {
spray_time = spray_time
)


if(parameters$parasite == "falciparum"){
variables <- c(variables,
last_boosted_ib = last_boosted_ib,
ib = ib
)
}

# Add variables for individual mosquitoes
if (parameters$individual_mosquitoes) {
species_values <- NULL
Expand Down
7 changes: 0 additions & 7 deletions data-raw/parasite_parameters.csv
Original file line number Diff line number Diff line change
Expand Up @@ -89,20 +89,13 @@ vivax,kmax,10, White (2018); doi: 10.1038/s41467-018-05860-8
vivax,du,110,to_be_removed
vivax,init_iva,0,to_be_removed
vivax,init_ivm,0,to_be_removed
vivax,init_ib,0,to_be_removed
vivax,init_id,0,to_be_removed
vivax,ub,7.2,to_be_removed
vivax,uv,11.4321,to_be_removed
vivax,ud,9.44512,to_be_removed
vivax,pvm,0.195768,to_be_removed
vivax,rvm,76.8365,to_be_removed
vivax,rb,3650,to_be_removed
vivax,rva,10950,to_be_removed
vivax,rid,3650,to_be_removed
vivax,b0,0.59,to_be_removed
vivax,b1,0.5,to_be_removed
vivax,ib0,43.9,to_be_removed
vivax,kb,2.16,to_be_removed
vivax,theta0,0.0749886,to_be_removed
vivax,theta1,0.0001191,to_be_removed
vivax,iv0,1.09629,to_be_removed
Expand Down
Binary file modified data/parasite_parameters.rda
Binary file not shown.
3 changes: 2 additions & 1 deletion tests/testthat/test-vivax.R
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ test_that('Test difference between falciparum and vivax parameter lists', {

expect_identical(
in_falciparum_not_vivax,
c("gamma1") # asymptomatic infected infectivity towards mosquitos parameter
c("init_ib", "rb", "ub", "b0", "b1", "ib0", "kb", # blood immunity parameters
"gamma1") # asymptomatic infected infectivity towards mosquitos parameter
)

expect_identical(
Expand Down
8 changes: 7 additions & 1 deletion vignettes/Plasmodium_vivax.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,15 @@ The *P. falciparum* model has five human disease compartments: susceptible (S),

The *P. vivax* model follows a similar structure to the *P. falciparum* model, and also has five human disease compartments. However, the human disease states modeled explicitly focus on parasite density and detectability, such that we have: susceptible (S), clinical disease (D), **light-microscopy detectable infection (A)**, **PCR detectable infection (U)**, and treated (Tr).

### Immunity

The *P. falciparum* model tracks four kinds of immunity: immunity to blood stage infection (IB), clinical disease (acquired and maternal, ICA and ICM), to severe disease (acquired and maternal, IVA and IVM), and to detectability (ID).

The *P. vivax* model tracks two kinds of immunity: immunity to clinical infection (acquired and maternal, ICA and ICM) and anti-parasite immunity (acquired and maternal, IAA and IAM). We do not track immunity to blood stage infections, severe immunity or immunity to detectability.

### Infectivity of LM-detectable infections

While the *P. falciparum* model calculates the onward infectivity of asymptomatic infections (`ca`) using the age and detectability immunity of each individual, the *P. vivax* model uses a constant infectivity for LM-detectable infections (`ca = 0.1`).
While the *P. falciparum* model calculates the onward infectivity of asymptomatic infections (`ca`) using the age and detectability immunity of each individual, the *P. vivax* model uses a constant onwards infectivity for LM-detectable infections (`ca = 0.1`).

### Key Model References

Expand Down

0 comments on commit ad53f50

Please sign in to comment.