-
Notifications
You must be signed in to change notification settings - Fork 15
Coding Conventions
When developing a disease module please refer to the checklist for developing a disease module The main coding conventions are detailed in skeleton.py These are additional conventions that have been agreed that cannot be represented in that file
- main module definition in
/src/tlo/methods/ - resource files in
/resources/[filename prefixResourceFile_] (or consider making a folder if there are many files). - pytest in
/tests/[filename prefixtest] - write-ups in
docs/write-ups(pointed to indocs/write-up.rst): the filename should be the same as the module it describes. - analysis scripts in
/src/scripts/YourModuleName/[and this should expect to be run from the root path] [filename prefixanalysis_] - files used formatting in
/src/scripts/data file processing/[filename prefixformatting] - outputs made at runtime (logfiles, figures etc) in
/outputs/
NB. In all cases use Path() objects to make the identification of folders work well on both Mac and PC
If the disease module is driven by a regular recurring population-level event that will instigate transmission events, progression of disease etc:
- Call the event
ModuleName_Poll - The first of these events should occur on the first day of the simulation
- This event can occur as regularly as you would like - but code the probabilities of events happening such that you can change this frequency later on.
- Make sure that not all the things are changing on the same date.
A disease module will typically have a logging event that occurs at regular intervals to produce summary statistics for the population.
- Call the event
ModuleName_LoggingEvent - The first of these events should occur on the first day of the simulation
Always use the module's random number generators (self.rng in the module and self.module.rng in the events)
- Do not kill anyone! (never change the is_alive property in the population.props data frame)
- To kill someone, call
do_deathor scheduleInstantaneousDeath
- Look-up the DALY weight for your disease using
get_daly_weight()and store these as a variable (do not hard code) - The
report_daly_values()method will be called every month: report the average daly weight for each alive persons during the previous month.
- All HSI events must be named like:
HSI_<Module_Name>_Description_Of_What_Happens_In_The_Event - There may be many HSI Events and some of these may be used by several disease modules.
- HSI Events do not have to 'owned' by any particular disease module
See for the example of running a single simulation here
TLO Model Wiki