Skip to content

Commit

Permalink
P.f models blood immunity impact on new infections, while P.v does no…
Browse files Browse the repository at this point in the history
…t. An if statement is added to the human_infection.R code to reflect this.

IB immunity is therefore also redundant in the Pv model. These variable assignments, immunity decay, boosts, rendering, and resetting during mortality  are removed when parasite == "vivax".

The blood immunity parameters have now been removed from the vivax parameter list, and documentation has been adjusted to reflect this.
  • Loading branch information
RJSheppard committed Oct 8, 2024
1 parent 3aabfee commit e733b28
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 e733b28

Please sign in to comment.