Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove blood immunity from p.v model #317

Merged
merged 1 commit into from
Oct 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading