-
Notifications
You must be signed in to change notification settings - Fork 18
Open
Labels
enhancementNew feature or requestNew feature or requestmediumWe have estimated that the issue should take an average amount of development time (2 points)We have estimated that the issue should take an average amount of development time (2 points)
Description
Create an optimised variable to represent individuals who could be in a combination of states.
So we can have something like:
vaccinated_with = MulitCategory$new(
c('AstraZeneca', 'Pfizer', 'Moderna'),
matrix(FALSE, ncol=3, nrow=population) # initialise with a boolean matrix of shape (category, population)
)
vaccination_process <- function(timestep) {
...
# add a new vaccine without overwriting existing vaccines
vaccinated_with$queue_update(vaccine_type, vaccinated_population)
...
}
waning_process <- function(timestep) {
...
# remove vaccine after it's no longer effective
vaccinated_with$queue_removal(vaccine_type, vaccinated_population)
...
}
immunity_process <- function(timestep) {
...
# do something with patients who have been vaccinated with a combination
az <- vaccinated_with$get_index_of('AstraZeneca')
pf <- vaccinated_with$get_index_of('Pfizer')
both <- az$and(pf) # bitset and operator
...
}This kind of behaviour requires bitset. Which is currently WIP. Issue to track
TODO:
- A MultiCategory C++ class, you could draw inspiration from CategoricalVariable
- queue_update logic allows for a client to have a new category without removing their existing one
- add queue_removal logic so clients can explicitly remove a category
- update logic executes updates and removals preserving FIFO queue order
- expose the C++ class to R in src/variable.cpp
- expose an R6 class to the client, you could draw inspiration from CategoricalVariable
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestmediumWe have estimated that the issue should take an average amount of development time (2 points)We have estimated that the issue should take an average amount of development time (2 points)