Covid19 network model
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model simulates the expansion of a virus like COVID-19 through a social network. Each 'person' node may be in one of three states: susceptible, infected, or resistant. In the academic literature such a model is sometimes referred to as an SIR model for epidemics.
HOW IT WORKS
For each time step (tick), all infected nodes (colored red) will attempt to infect all of its neighbors. The Susceptible neighbors (colored blue) will be infected with a probability given by the VIRUS-SPREAD-CHANCE slider. Resistant nodes (colored gray) cannot be infected. Infected nodes are not immediately aware that they are infected. Only every so often (determined by the VIRUS-CHECK-FREQUENCY slider) do the nodes check whether they are infected by a virus. When the virus has been detected, there is a probability that the virus will be removed (determined by the RECOVERY-CHANCE slider) by some unknown drug. If a node does recover, there is some probability that it will become resistant to this virus in the future (given by the GAIN-RESISTANCE-CHANCE slider). When a node becomes resistant, the links between it and its neighbors are darkened, since they are no longer possible vectors for spreading the virus.
HOW TO USE IT
Using the sliders, choose the people via NUMBER-OF-NODES (limited to 500) and the AVERAGE-NODE-DEGREE (average number of links coming out of each node). Note that average means that there will be less and also more links created by chance. The network that is created is based on proximity (Euclidean distance) between nodes. A node is randomly chosen and connected to the nearest node that it is not already connected to. This process is repeated until the network has the correct number of links to give the specified average node degree. The INITIAL-OUTBREAK-SIZE slider determines how many of the nodes will start the simulation infected with the virus. This is an important one to play with.
Then press SETUP to create the network. Press GO to run the model. The model will stop running once the virus has completely died out.
The NETWORK STATUS plot shows the number of nodes in each state (S, I, R) over time.
THINGS TO NOTICE
At the end of the run, after the virus has died out, some nodes are still susceptible, while others have become immune. The interesting part is how the structure of the social network plays a role in the groups of susceptiple people. Vary the social contact with the number of links and see the rapid change.
THINGS TO TRY
Set the capacity to become immune to zero (GAIN-RESISTANCE-CHANCE = 0%). Under what conditions will the virus still die out? How long does it take? What conditions are required for the virus to live? If the RECOVERY-CHANCE is bigger than 0, even if the VIRUS-SPREAD-CHANCE is high, do you think that if you could run the model forever, the virus could stay alive?
EXTENDING THE MODEL
Try making a model similar to this one, but where the virus has the ability to mutate itself. Such self-modifying viruses are a considerable threat to human health (for example malaria), since traditional methods of virus vaccine may not work against them. In your model, nodes that become immune may be reinfected if the virus has mutated to become significantly different than the variant that originally infected the node.
NETLOGO FEATURES
Links are used for modeling the network. The layout-spring primitive is used to position the nodes and links such that the structure of the network is visually clear. Though it is not used in this model, there exists a network extension for NetLogo that you can download at: https://github.com/NetLogo/NW-Extension.
RELATED MODELS
Virus, Disease, Preferential Attachment, Diffusion on a Directed Network
CREDITS AND REFERENCES
If you mention this model or the NetLogo software in a publication, we ask that you include the citations below. For the model itself: Stuart Kininmonth (2020) COVID-19 spread on a social network.Netlogo.
Stonedahl, F. and Wilensky, U. (2008). NetLogo Virus on a Network model. http://ccl.northwestern.edu/netlogo/models/VirusonaNetwork. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Please cite the NetLogo software as: Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Comments and Questions
extensions [ vid bitmap ] turtles-own [vid infected? ;; if true, the turtle is infectious resistant? ;; if true, the turtle can't be infected virus-check-timer ;; number of ticks since this turtle's last virus-check ] to setup clear-all setup-nodes setup-spatially-clustered-network ask n-of initial-outbreak-size turtles [ become-infected ] ask links [ set color white ] ; ca ;crt 10 reset-ticks end to setup-nodes set-default-shape turtles "circle" create-turtles number-of-nodes [ ; for visual reasons, we don't put any nodes *too* close to the edges setxy (random-xcor * 0.95) (random-ycor * 0.95) become-susceptible set virus-check-timer random virus-check-frequency ] end to setup-spatially-clustered-network let num-links (average-node-degree * number-of-nodes) / 2 while [count links < num-links ] [ ask one-of turtles [ let choice (min-one-of (other turtles with [not link-neighbor? myself]) [distance myself]) if choice != nobody [ create-link-with choice ] ] ] ; make the network look a little prettier repeat 10 [ layout-spring turtles links 0.3 (world-width / (sqrt number-of-nodes)) 1 ] end to go if all? turtles [not infected?] [ vid:save-recording "filme.mp4" print vid:recorder-status stop ] if vid:recorder-status = "inactive" [ vid:start-recorder ] vid:record-interface ask turtles [ set virus-check-timer virus-check-timer + 1 if virus-check-timer >= virus-check-frequency [ set virus-check-timer 0 ] ] spread-virus do-virus-checks tick end to become-infected ;; turtle procedure set infected? true set resistant? false set color red end to become-susceptible ;; turtle procedure set infected? false set resistant? false set color blue end to become-resistant ;; turtle procedure set infected? false set resistant? true set color gray ask my-links [ set color gray - 2 ] end to spread-virus ask turtles with [infected?] [ ask link-neighbors with [not resistant?] [ if random-float 100 < virus-spread-chance [ become-infected ] ] ] end to do-virus-checks ask turtles with [infected? and virus-check-timer = 0] [ if random 100 < recovery-chance [ ifelse random 100 < gain-resistance-chance [ become-resistant ] [ become-susceptible ] ] ] end ; Stuart Kininmonth 2020 ; Adapted from 2008 Uri Wilensky. ; See Info tab for full copyright and license.
There is only one version of this model, created over 4 years ago by Stuart Kininmonth.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Covid19 network model.png | preview | Preview for 'Covid19 network model' | over 4 years ago, by Stuart Kininmonth | Download |
This model does not have any ancestors.
This model does not have any descendants.