tlo.test.random_death module¶
A simple test module for demonstration purposes.
It polls the population each month, randomly killing people with a fixed probability. The probability may be set as a module parameter.
This is thus mainly useful for demonstrating how to write a disease module, without getting distracted by modelling details.
- class RandomDeath(*args, **kwargs)[source]¶
Bases:
Module
Randomly kill individuals with fixed probability.
All disease modules need to be implemented as a class inheriting from Module. They need to provide several methods which will be called by the simulation framework: * read_parameters(data_folder) * initialise_population(population) * initialise_simulation(sim) * on_birth(mother, child)
- PARAMETERS = {'death_probability': REAL === Fixed probability of death each month}¶
- PROPERTIES = {'date_of_death': DATE === When the individual died (if they have), 'is_alive': BOOL === Whether each individual is currently alive}¶
- read_parameters(data_folder)[source]¶
Read parameter values from file, if required.
Here we do nothing.
- Parameters
data_folder – path of a folder supplied to the Simulation containing data files. Typically modules would read a particular file within here.
- initialise_population(population)[source]¶
Set our property values for the initial population.
This method is called by the simulation when creating the initial population, and is responsible for assigning initial values, for every individual, of those properties ‘owned’ by this module, i.e. those declared in the PROPERTIES dictionary above.
TODO: We probably need to declare somehow which properties we ‘read’ here, so the simulation knows what order to initialise modules in!
- Parameters
population – the population of individuals
- initialise_simulation(sim)[source]¶
Get ready for simulation start.
This method is called just before the main simulation loop begins, and after all modules have read their parameters and the initial population has been created. It is a good place to add initial events to the event queue.
Here we add our monthly event to poll the population for deaths.
- on_birth(mother_id, child_id)[source]¶
Initialise our properties for a newborn individual.
This is called by the simulation whenever a new person is born.
- Parameters
mother_id – the mother for this child
child_id – the new child
- parameters¶
- class RandomDeathEvent(module, death_probability)[source]¶
Bases:
RegularEvent
,PopulationScopeEventMixin
The regular event that actually kills people.
Regular events automatically reschedule themselves at a fixed frequency, and thus implement discrete timestep type behaviour. The frequency is specified when calling the base class constructor in our __init__ method.