Ahead of this week’s Open Source Geo and Health Event (#GECOhealth) we are delighted to bring you a guest post on an open source health tool that has been developed by a team at the IBM Almaden Research Center.
Our guest blogger is Stefan Edlund, a senior software engineer in the Public Health Research team at IBM Almaden developing new technologies in the public health domain. Stefan has over 12 years experience in IBM, having worked on a broad area of technologies such as relational databases, Web technologies, location based services, content management and email search and discovery products. Stefan’s current research interests include development and research of models for infectious disease accurate enough to assist public health policy makers. Stefan holds a MS degree in computer science from the Royal Institute of Technology in Stockholm. He currently has over 15 US patents. (firstname.lastname@example.org)
Acknowledgments go out to the whole STEM team at IBM Almaden Research Center: Dr. James Kaufman, Matthew Davis, Kun Hu and Christian Thöens.
The Spatio-Temporal Epidemiological Modeler (STEM) is an open source application for building and studying models of infectious diseases. Since STEM is built on top of the OSGi component software architecture, new models can be added and existing models extended by researchers and public health professionals as necessary. STEM comes pre-built with many textbook examples of infectious diseases, for instance compartmental SI, SIR and SEIR models as well as more advanced examples such as a Macdonald-Ross models of malaria. The malaria model is build on top of a global vector capacity model. STEM is designed to simultaneously model multiple populations and multiple diseases, and by using the Eclipse modeling framework it is easy to “compose” models on top of other models. Disease models are based upon mathematical differential equations that describe how diseases spread in space and time, and users have a choice between two numerical differential equation solvers: A fast but less accurate finite difference method and a more accurate (but slower) method based upon an integrating Runge-Kutta Cash-Karp algorithm.
In addition to mathematical models of diseases, STEM has a vast amount of denominator data for the entire world, including administrative regions (often down to administrative level 2, mapping to counties in the United States), population data as well as data on air transportation and road networks. Recently STEM allows users to download and plug in additional data using STEM update site. Currently it is possible to install ten years of global NASA earth science data on temperature, rainfall, elevation and vegetation. Such data is of particular importance when modeling vector borne diseases such as malaria and dengue fever.
STEM makes a distinction between the models of a population and models of infectious diseases. A model of a population describes the background dynamics of a population regardless of diseases affecting the population, for instance background birth- and death rates, movement of a population via transportation or migration as well as models of ageing within a population. STEM incorporates a number of transportation models, including global air travel. One example of an insect vector (population) model is a calibrated Anopheles mosquito density model with variations between wet- and dry seasons, driven by STEM earth science data. You can run a simulation in STEM that only model population dynamics, say the seasonal movement of migratory birds, without any diseases as part of the model.
- Screenshot of the STEM designer perspective showing a scenario with models of United States and Mexico, including road and air transportation networks, common border relationships and population data. A disease model of a Swine flu like pandemic outbreak is included, as well as inoculators setting up the initial background resistance in the population. The scenario has an intervention policy that implements social distancing after 75 days of simulated time, reducing the transmissibility of the disease (click for a larger image).
It is also possible to model interventions in STEM. Interventions are used to control some aspect of a disease outbreak, down to regional level if desired. Examples include initiating a vaccination program, isolating infected individuals, implementing social distancing, evacuation of a region, shutting down air transportation (for a county, state or a whole country), closing a road or preventing mixing of infected individuals across borders. Interventions are of particular importance to policy makers when deciding the most efficient (and cost effective) means for controlling an outbreak.
Models of diseases are only as accurate as the parameters that go into them. STEM supports fitting parameters to actual public health surveillance data if available. Using STEM’s numerical optimization algorithm (downhill simplex), the parameter space of a disease model is walked until an objective function is minimized. The objective function can for instance be an measurement of the difference between daily incidence determined by the disease model and daily public health reporting data. The model optimization function in STEM has successfully been used in several real world scenarios, for instance to optimize seasonal flu models in Israel and to determine the effect of the social distancing policy that went into effect in Mexico City during the 2009 swine flu outbreak.
- Screenshot from the simulation perspective in STEM. A regional scenario of malaria transmission in south east Asia after running a one year simulation where one percent of the population were initially infected everywhere. The top right shows the map view where the red colours indicates the relative number of infected individuals. The bottom right shows a time series plot for the various malaria compartments that humans transition (click for a larger image).
You can find out more about STEM and download the latest release at the STEM web site: http://www.eclipse.org/stem
The STEM wiki site also has lots of documentation and examples of how to use STEM: http://wiki.eclipse.org/index.php/STEM