A snapshot of all the backend jobs running. Left-to-right: main server, data to LaTeX compiler, visualisation PNG server.
A snapshot of a LaTeX-compiled visualisation of the network, showing susceptible (blue), infected (red) and vaccinated (green) nodes.
Another visualisation snapshot with more nodes. Edge opacity indicates proximity, i.e. the probability of contracting disease via that edge.
Android app - screenshot 1
Android app - screenshot 2
Android app - notification example
This project was inspired by the paper ``Competing spreading processes on multiplex networks: awareness and epidemics'' by Granell et al. It attempts to model epidemics spreading by considering a multiplex network model; in this model, people are connected in two separate layers. The first layer is the physical layer, where people are connected if they come into physical contact (friends, family, coworkers, etc.); within this layer, the disease can spread across links. The second layer is the information layer, where people are connected if they regularly exchange information (it might well include most of the edges from the physical layer, as well as connections on Facebook/Twitter/etc.).
Within the physical layer, an individual may be either susceptible to the disease or infected with it. Within the information layer, an individual may be either aware or unaware of the epidemic. A person who is aware may then take protective measures against the disease (vaccination, protective masks, etc.) thus reducing his/her probability of being infected. The model has been shown as very powerful for accurately modelling the dynamics of the disease, but thus far it was only tested on randomly generated synthetic networks. With this project, we intend to make real-life simulations possible, in a form that is both engaging for the users and useful for the research community.
What it does
The project is modelled as a distributed Android application, where each phone maintains minimal state. Each phone represents a person in the physical layer (and as such is either susceptible, vaccinated or infected). It periodically updates its GPS coordinates to the central server. The server may then use mutual proximities between the phones to determine the probabilities of contracting the disease along the links of the network. The state is consistently logged and combined with LaTeX and TikZ to produce useful visualisations of the network. The game is made more engaging for the users by the introduction of roles; namely, people may either be assigned a role of a human, where their goal is to avoid being infected, or a role of an infector, where their goal is to infect as many nodes as possible.
The information layer is not directly modelled; a small subset of the nodes will gain access to a secret code with which they may get vaccinated. The people in possession of those phones may then share the code via social networks, conversation, etc. thus indirectly modelling the information layer.
How we built it
As an Android project, we built it primarily using Java. C++, LaTeX and shell scripts were used for auxiliary tasks, mostly to do with generating the visualisations.
Challenges we ran into
Extracting GPS coordinates within a building proved to be extremely unreliable. Furthermore, the relative slow network performance has made it harder to move data around sufficiently quickly.
Accomplishments that we're proud of
We're most proud of being able to accomplish all of the primary goals we have thought of prior to arriving to Hack Cambridge. We have advanced our Java and Android skills even further, and we have shown a very high level of teamwork in resolving issues quickly. Furthermore, we were extremely pleased to notice that the results we were able to obtain in the given testing timeframe seem rather realistic.
What's next for Viral
We are hoping to pitch this as a massively distributed Android application that is both useful to researchers in the field of complex networks, and engaging for its users. A potential further result of this could well be a journal publication, as a first ``real-world'' modelling of such a scenario.