Abstract
Background Mathematical and computational models are widely used for examining transmission, pathogenicity and propagation of infectious diseases. Software implementation of such models and their accompanied modelling tools do not adhere to well established software engineering principles. These principles include both modularity and clear separation of concerns that can promote reproducibility and reusability by other researchers. On the contrary the software written for epidemiology is monolithic, highly coupled and severely heterogeneous. This reality ultimately makes these computational models hard to study and to reuse, both because of the programming competence required and because of the incompatibility of the different approaches involved. Our goal with Kendrick is to simplify the creation of epidemiological models through a unified Domain-Specific Language for epidemiology that can support a variety of modelling and simulation approaches classically used in the field. This goal can be achieved by promoting reproducibility and reuse with modular modelling abstractions.
Results We show through several examples how our modular abstractions and tools can reproduce uniformly complex mathematical and computational models of epidemics, despite being simulated by different methods. This is achieved without requiring sophisticated programming skills from the part of the user. We then successfully validate each kind of simulation through statistical analysis between the time series generated and the known theoretical expectations.
Conclusions Kendrick is one of the few DSLs for epidemiology that does not burden its users with implementation details or expecting sophisticated programming skills. It is also currently the only language for epidemiology that supports modularity through clear separation of concerns that promote reproducibility and reuse. Kendrick’s wider adoption and further development from the epidemiological community could boost research productivity in epidemiology by allowing researchers to easily reproduce and reuse each other’s software models and simulations. The tool can also be used by people who are not necessarily epidemiology modelers.