dime-worldbank / Disease-Modelling-SSA

This repository contains the code for an agent-based model used for COVID-19 in Sub-Saharan Africa. The original code was written in Python by Aivin Solatorio and is since being developed in Java. Complimentary risk modelling has been conducted in R as an intermediate product and is also part of this repo
MIT License
6 stars 2 forks source link

Create Spurious symptoms as objects #29

Open RobertManningSmith opened 5 months ago

RobertManningSmith commented 5 months ago

This is part 1 of 2 of the new and tested spurious symptoms/ covid testing PR.

Note that the open pull requests 26 and 27 have been included here, hence the massive number of commits included in this.

This pull request introduces the spurious symptom framework as an object which is created for each person at a given rate. Once created this object will show an "exposed" behaviour node for a week and then revert to a "susceptible" behaviour node. From this point, existing nodes can remain dormant (susceptible) or flare up again.

There is now also a spurious symptom testing suit which is now working.

I should have stopped at just creating these spurious symptoms but i have gone on a bit to include covid testing. The covid testing files are probably subject to change and not worth spending to much time on for now.

RobertManningSmith commented 3 months ago

To help with review:

Files that have had a small change:

Pom xml - just changed a build requirement that caused the maven build to fail for java 8

Demography - created and used a ticks per year parameter Movement behaviour - changed an import Location - changed an import CoronavirusBehaviourFramework - changed a name of a variable Infection - changed an import Bulkrun - changed the simulation object to have an extra boolean ImportExport - changed an import Params: created new parameters (not imported) Runmosttravelled: changed the simulation object to have an extra boolean Singlerun: changed the simulation object to have an extra boolean

All testing files except Covid spurious symptom/testing tests: changed simulation object to handle an extra boolean

Files that need a review:

Person: created properties that determine who has symptoms and who should be tested. Also created corresponding getters and setters

CoronavirusSpuriousSymptom: creates the spurious symptom object class

InfectiousBehaviourFramework: attempted to create a way to generalise disease behaviour frameworks. I didn't manage to do this actually so probably best to discuss

SpuriousSymptomBehaviourFramework: creates the behaviours exhibited by the spurious symptom object

CovidSpuriousSymptoms: handles the steppable functions which control the creation and removal of symptoms

CovidTesting: handles the covid testing administration

DiseaseTesting: an interface for general disease testing, implementation didn't seem to be the best, would be good to discuss

Logging: created an output file for covid testing

SpuriousSymptoms: generalised interface for symptoms

WorldBankCovid19Sim: just changes things to handle spurious symptoms and testing

CovidSpuriousSymptomTesting: test suite for covid symptom objects

CovidTestingTesting: test suite for covid testing