|
| 1 | +#' @title Parameterise antimalarial resistance |
| 2 | +#' @description |
| 3 | +#' Parameterise antimalarial resistance |
| 4 | +#' |
| 5 | +#' @param parameters the model parameters |
| 6 | +#' @param drug the index of the drug which resistance is being set, as set by the set_drugs() function, in the parameter list |
| 7 | +#' @param timesteps vector of time steps for each update to resistance proportion and resistance outcome probability |
| 8 | +#' @param artemisinin_resistance_proportion vector of updates to the proportions of infections that are artemisinin resistant at time t |
| 9 | +#' @param partner_drug_resistance_proportion vector of updates to the proportions of infections that are partner-drug resistant at time t |
| 10 | +#' @param slow_parasite_clearance_probability vector of updates to the proportion of artemisinin-resistant infections that result in early treatment failure |
| 11 | +#' @param early_treatment_failure_probability vector of updates to the proportion of artemisinin-resistant infections that result in slow parasite clearance |
| 12 | +#' @param late_clinical_failure_probability vector of updates to the proportion of partner-drug-resistant infections that result in late clinical failure |
| 13 | +#' @param late_parasitological_failure_probability vector of updates to the proportion of partner-drug-resistant infections that result in late parasitological failure |
| 14 | +#' @param reinfection_during_prophylaxis_probability vector of updates to the proportion of partner-drug-resistant infections that result in reinfection during prophylaxis |
| 15 | +#' @param slow_parasite_clearance_time single value representing the mean time individual's experiencing slow parasite clearance reside in the treated state |
| 16 | +#' @export |
| 17 | +set_antimalarial_resistance <- function(parameters, |
| 18 | + drug, |
| 19 | + timesteps, |
| 20 | + artemisinin_resistance_proportion, |
| 21 | + partner_drug_resistance_proportion, |
| 22 | + slow_parasite_clearance_probability, |
| 23 | + early_treatment_failure_probability, |
| 24 | + late_clinical_failure_probability, |
| 25 | + late_parasitological_failure_probability, |
| 26 | + reinfection_during_prophylaxis_probability, |
| 27 | + slow_parasite_clearance_time) { |
| 28 | + |
| 29 | + if(any(partner_drug_resistance_proportion > 0, |
| 30 | + late_clinical_failure_probability > 0, |
| 31 | + late_parasitological_failure_probability > 0, |
| 32 | + reinfection_during_prophylaxis_probability > 0)) { |
| 33 | + stop("Parameters set for unimplemented feature - late clinical failure, late parasitological failure, or reinfection during prophylaxis") |
| 34 | + } |
| 35 | + |
| 36 | + if(any(c(length(artemisinin_resistance_proportion), |
| 37 | + length(partner_drug_resistance_proportion), |
| 38 | + length(slow_parasite_clearance_probability), |
| 39 | + length(early_treatment_failure_probability), |
| 40 | + length(late_clinical_failure_probability), |
| 41 | + length(late_parasitological_failure_probability), |
| 42 | + length(reinfection_during_prophylaxis_probability)) != length(timesteps))) { |
| 43 | + stop("Length of one or more resistance parameter vectors does not match time steps specified for update") |
| 44 | + } |
| 45 | + |
| 46 | + if(any(artemisinin_resistance_proportion < 0 | artemisinin_resistance_proportion > 1 | |
| 47 | + partner_drug_resistance_proportion < 0 | partner_drug_resistance_proportion > 1)) { |
| 48 | + stop("Artemisinin and partner-drug resistance proportions must fall between 0 and 1") |
| 49 | + } |
| 50 | + |
| 51 | + if(any(slow_parasite_clearance_probability < 0 | slow_parasite_clearance_probability > 1 | |
| 52 | + early_treatment_failure_probability < 0 | early_treatment_failure_probability > 1 | |
| 53 | + late_clinical_failure_probability < 0 | late_clinical_failure_probability > 1 | |
| 54 | + late_parasitological_failure_probability < 0 | late_parasitological_failure_probability > 1 | |
| 55 | + reinfection_during_prophylaxis_probability < 0 | reinfection_during_prophylaxis_probability > 1)) { |
| 56 | + stop("Resistance outcome probabilities must fall between 0 and 1") |
| 57 | + } |
| 58 | + |
| 59 | + if(length(slow_parasite_clearance_time) != 1) { |
| 60 | + stop("Error: length of slow_parasite_clearance_time not equal to 1") |
| 61 | + } |
| 62 | + |
| 63 | + if(slow_parasite_clearance_time <= 0) { |
| 64 | + stop("Error: slow_parasite_clearance_time is non-positive") |
| 65 | + } |
| 66 | + |
| 67 | + parameters$antimalarial_resistance <- TRUE |
| 68 | + |
| 69 | + n_drugs <- length(parameters$drug_efficacy) |
| 70 | + |
| 71 | + if (drug < 1 | drug > n_drugs) { |
| 72 | + stop('Drug index is invalid, please set drugs using set_drugs') |
| 73 | + } |
| 74 | + |
| 75 | + drug_index <- which(parameters$antimalarial_resistance_drug == drug) |
| 76 | + |
| 77 | + if (length(drug_index) == 0) { |
| 78 | + drug_index <- length(parameters$antimalarial_resistance_drug) + 1 |
| 79 | + } |
| 80 | + |
| 81 | + parameters$antimalarial_resistance_drug[[drug_index]] <- drug |
| 82 | + parameters$antimalarial_resistance_timesteps[[drug_index]] <- timesteps |
| 83 | + parameters$artemisinin_resistance_proportion[[drug_index]] <- artemisinin_resistance_proportion |
| 84 | + parameters$partner_drug_resistance_proportion[[drug_index]] <- partner_drug_resistance_proportion |
| 85 | + parameters$slow_parasite_clearance_probability[[drug_index]] <- slow_parasite_clearance_probability |
| 86 | + parameters$early_treatment_failure_probability[[drug_index]] <- early_treatment_failure_probability |
| 87 | + parameters$late_clinical_failure_probability[[drug_index]] <- late_clinical_failure_probability |
| 88 | + parameters$late_parasitological_failure_probability[[drug_index]] <- late_parasitological_failure_probability |
| 89 | + parameters$reinfection_during_prophylaxis_probability[[drug_index]] <- reinfection_during_prophylaxis_probability |
| 90 | + parameters$dt_slow_parasite_clearance[[drug_index]] <- slow_parasite_clearance_time |
| 91 | + |
| 92 | + return(parameters) |
| 93 | + |
| 94 | +} |
| 95 | + |
| 96 | +#' @title Retrieve resistance parameters |
| 97 | +#' @description |
| 98 | +#' Retrieve the resistance parameters associated with the drug each individual receiving clinical |
| 99 | +#' treatment has been administered in the current time step. |
| 100 | +#' |
| 101 | +#' @param parameters the model parameters |
| 102 | +#' @param drugs vector of integers representing the drugs administered to each individual receiving treatment |
| 103 | +#' @param timestep the current time step |
| 104 | +get_antimalarial_resistance_parameters <- function(parameters, drugs, timestep) { |
| 105 | + |
| 106 | + if(!parameters$antimalarial_resistance) { |
| 107 | + stop("Error: Antimalarial resistance has not been parameterised; antimalarial_resistance = FALSE") |
| 108 | + } |
| 109 | + |
| 110 | + blank_vector <- numeric(length = length(drugs)) |
| 111 | + artemisinin_resistance_proportion <- blank_vector |
| 112 | + partner_drug_resistance_proportion <- blank_vector |
| 113 | + slow_parasite_clearance_probability <- blank_vector |
| 114 | + early_treatment_failure_probability <- blank_vector |
| 115 | + late_clinical_failure_probability <- blank_vector |
| 116 | + late_parasitological_failure_probability <- blank_vector |
| 117 | + reinfection_during_prophylaxis_probability <- blank_vector |
| 118 | + dt_slow_parasite_clearance <- rep(parameters$dt, length = length(drugs)) |
| 119 | + |
| 120 | + for(i in seq_along(parameters$antimalarial_resistance_drug)) { |
| 121 | + drug <- parameters$antimalarial_resistance_drug[[i]] |
| 122 | + treated_with_drug <- which(drugs == drug) |
| 123 | + resistance_timestep <- match_timestep(ts = parameters$antimalarial_resistance_timesteps[[i]], t = timestep) |
| 124 | + artemisinin_resistance_proportion[treated_with_drug] <- parameters$artemisinin_resistance_proportion[[i]][resistance_timestep] |
| 125 | + partner_drug_resistance_proportion[treated_with_drug] <- parameters$partner_drug_resistance_proportion[[i]][resistance_timestep] |
| 126 | + slow_parasite_clearance_probability[treated_with_drug] <- parameters$slow_parasite_clearance_probability[[i]][resistance_timestep] |
| 127 | + early_treatment_failure_probability[treated_with_drug] <- parameters$early_treatment_failure_probability[[i]][resistance_timestep] |
| 128 | + late_clinical_failure_probability[treated_with_drug] <- parameters$late_clinical_failure_probability[[i]][resistance_timestep] |
| 129 | + late_parasitological_failure_probability[treated_with_drug] <- parameters$late_parasitological_failure_probability[[i]][resistance_timestep] |
| 130 | + reinfection_during_prophylaxis_probability[treated_with_drug] <- parameters$reinfection_during_prophylaxis_probability[[i]][resistance_timestep] |
| 131 | + dt_slow_parasite_clearance[treated_with_drug] <- parameters$dt_slow_parasite_clearance[[i]] |
| 132 | + } |
| 133 | + |
| 134 | + resistance_parameters <- list() |
| 135 | + resistance_parameters$artemisinin_resistance_proportion <- artemisinin_resistance_proportion |
| 136 | + resistance_parameters$partner_drug_resistance_proportion <- partner_drug_resistance_proportion |
| 137 | + resistance_parameters$slow_parasite_clearance_probability <- slow_parasite_clearance_probability |
| 138 | + resistance_parameters$early_treatment_failure_probability <- early_treatment_failure_probability |
| 139 | + resistance_parameters$late_clinical_failure_probability <- late_clinical_failure_probability |
| 140 | + resistance_parameters$late_parasitological_failure_probability <- late_parasitological_failure_probability |
| 141 | + resistance_parameters$reinfection_during_prophylaxis_probability <- reinfection_during_prophylaxis_probability |
| 142 | + resistance_parameters$dt_slow_parasite_clearance <- dt_slow_parasite_clearance |
| 143 | + |
| 144 | + return(resistance_parameters) |
| 145 | + |
| 146 | +} |
0 commit comments