# SEIR-Model-Vaccination-Seasonal

No preview image

Model was written in NetLogo 5.0.4
•
Viewed 413 times
•
Downloaded 65 times
•
Run 0 times

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)

## Comments and Questions

Click to Run Model

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; globals [ maximum-infectious ;; The maximum number of infectious individuals at one simulation tick. tick-at-maximum-infectious ;; The (first) tick when the maximum number of infectious individuals is realized. number-infectious-vector ;; Vector of the number of infectious individuals at each simulation tick. incubation-alpha ;; Alpha parameter for the gamma distribution used in calculating incubation-time. incubation-lambda ;; Lambda parameter for the gamma distribution used in calculating incubation-time. infectious-alpha ;; Alpha parameter for the gamma distribution used in calculating infectious-time. infectious-lambda ;; Lambda parameter for the gamma distribution used in calculating infectious-time. seroconversion-alpha ;; Alpha parameter for the gamma distribution used in calculating seroconversion-time. seroconversion-lambda ;; Lambda parameter for the gamma distribution used in calculating seroconversion-time. number-vaccinated infection-possible ] turtles-own [ susceptible? ;; If true, the individual is a member of the susceptible class. exposed? ;; If true, the individual is a member of the exposed (incubation) class. infectious? ;; If true, the individual is a member of the infectious class. recovered? ;; If true, the individual is a member of the recovered class. vaccination? ;; If true, the individual has received the vaccine. seroconverted? ;; If true, the individual has received the vaccine and has seroconverted. incubation-length ;; How long the individual has been in the exposed class, increasing by 1 each tick. This is compared against the incubation-time, selected from a gamma-distribution. incubation-time ;; The randomly chosen gamma-distribution value for how long the individual will be in the exposed class. infectious-length ;; How long the individual has been in the infectious class, increasing by 1 each tick. This is compared against the infectious-time, selected from a gamma-distribution. infectious-time ;; The randomly chosen gamma-distribution value for how long the individual will be in the infectious class. seroconversion-length ;; How long since the individual was given the vaccine, increasing by 1 each tick. This is compared against the seroconversion-time, selected from a gamma-distribution. seroconversion-time ;; The randomly chosen gamma-distribution value for how long it will take the individual to seroconvert. total-contacts ;; A count of all contacts of the individual. ] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; Setup Procedures ;;;; to setup clear-all setup-gamma-distributions setup-population reset-ticks end to setup-gamma-distributions ;; The calculation from mean and standard deviation (in days) to the alpha and lambda parameters required for the gamma-distributions (in ticks). set incubation-alpha (average-incubation-period * ticks-per-day)^ 2 / (incubation-standard-deviation * ticks-per-day)^ 2 set incubation-lambda (average-incubation-period * ticks-per-day) / (incubation-standard-deviation * ticks-per-day)^ 2 set infectious-alpha (average-infectious-period * ticks-per-day)^ 2 / (infectious-standard-deviation * ticks-per-day)^ 2 set infectious-lambda (average-infectious-period * ticks-per-day) / (infectious-standard-deviation * ticks-per-day)^ 2 set seroconversion-alpha (average-seroconversion-period * ticks-per-day)^ 2 / (seroconversion-standard-deviation * ticks-per-day)^ 2 set seroconversion-lambda (average-seroconversion-period * ticks-per-day) / (seroconversion-standard-deviation * ticks-per-day)^ 2 end to setup-population create-turtles initial-population [ setxy random-xcor random-ycor ;; All individuals are placed on random patches in the world. set susceptible? true ;; All individuals are set as susceptible. set exposed? false set infectious? false set recovered? false set vaccination? false set seroconverted? false set shape "person" set total-contacts 0 set number-infectious-vector [ 1 ] ;; The number-infectious-vector vector is initiallized. set number-vaccinated 0 set infection-possible true assign-color ] end to assign-color if susceptible? [ set color white ] if exposed? [ set color yellow ] if infectious? [ set color red ] if recovered? [ set color lime ] if seroconverted? [ set color cyan ] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; Go Procedure ;;;; to go if not infection-possible ;; The simulation ends when no individuals are infected (exposed or infectious). [ stop ] ask turtles [ move ] if ticks / ( ticks-per-day ) = day-of-first-infection ;; After a given delay, one susceptible individual becomes infectious. [ first-infection ] ask turtles with [ infectious? ] ;; Infectious individuals might expose susceptible and not seroconverted neighbors. If infectious individuals have been infectious for infectious-time ticks, they will recover. [ expose-neighbors chance-of-recovery ] if ticks / ( ticks-per-day ) mod 1 = 0 ;; Once each day, some susceptible and exposed individuals are given the vaccine. [ ask turtles with [ ( susceptible? or exposed? ) and not seroconverted? ] [ chance-of-receiving-vaccine ] ] ask turtles with [ vaccination? and susceptible? and not seroconverted? ] ;; If vaccinated and susceptible individuals were given an effective vaccine and have been in the exposed class for seroconversion-time ticks, they will seroconvert. [ chance-of-seroconverting ] ask turtles with [ exposed? ] ;; If exposed individuals have been in the exposed class for incubation-time ticks, they will become infectious. [ chance-of-becoming-infectious ] ask turtles [ assign-color count-contacts ] if all? turtles [ susceptible? or recovered? ] and ticks / ticks-per-day > day-of-first-infection ;; The simulation ends when no individuals are infected (exposed or infectious). [ set infection-possible false ] compute-maximum-infectious tick end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; Nested Functions ;;;; to move ;; Individuals turn a random angle between -40 and 40 degrees then step forward 1 unit. right (random 80) - 40 forward 1 if not can-move? 1 [ right 180 ] ;; If an individual is at the world's boundary, it turns around. end to count-contacts ;; Contacts are defined as other individuals within a 1 unit radius. set total-contacts total-contacts + count other turtles in-radius 1 end to first-infection ifelse any? turtles with [ susceptible? and not seroconverted? ] [ ask one-of turtles with [ susceptible? and not seroconverted? ] [ set susceptible? false set exposed? true set incubation-time random-gamma incubation-alpha incubation-lambda ;; A newly exposed individual selects an incubation-time from the gamma-distribution and its incubation-lenth is set to 0. set incubation-length 0 ] ] [ set infection-possible false ] end to expose-neighbors ask other turtles in-radius 1 with [ susceptible? and not seroconverted? ] ;; Susceptible individuals who come into contact with an infectious individual will become infected with probability transmission-chance. [ if random-float 100 < transmission-chance [ set susceptible? false set exposed? true set incubation-time random-gamma incubation-alpha incubation-lambda ;; A newly exposed individual selects an incubation-time from the gamma-distribution and its incubation-lenth is set to 0. set incubation-length 0 ] ] end to chance-of-becoming-infectious ;; When an infected individual has been in the exposed class longer than its incubation-time, it will become infectious. set incubation-length incubation-length + 1 if incubation-length > incubation-time [ set exposed? false set infectious? true set infectious-time random-gamma infectious-alpha infectious-lambda ;; A newly infectious individual selects an infectious-time from the gamma-distribution and its infection-length is set to 0. set infectious-length 0 ] end to chance-of-recovery ;; When an infectious individual has been in the infectious class longer than its infection-time, it will recover. set infectious-length infectious-length + 1 if infectious-length > infectious-time [ set infectious? false set recovered? true ] end to chance-of-receiving-vaccine ;; Once each day, each susceptible and exposed individual has a chance of receiving the vaccine. Some vaccinations will be effective. if random-float 100 < daily-vaccination-chance [ set number-vaccinated number-vaccinated + 1 set vaccination? true set shape "default" ifelse random-float 100 < vaccine-efficacy [ set seroconversion-time random-gamma seroconversion-alpha seroconversion-lambda ;; The vaccine is effective and a newly vaccinated individual selects a seroconversion-time from the gamma-distribution and its seroconversion-length is set to 0. set seroconversion-length 0 ] [ set seroconversion-time 1000000 ;; The vaccine is not effective and a newly vaccinated individual has a seroconversion-time much longer than the length of an outbreak. set seroconversion-length 0 ] ] end to chance-of-seroconverting ;; When a susceptible and vaccinated individual has been vaccinated longer than its seroconversion-time, it will seroconvert. set seroconversion-length seroconversion-length + 1 if seroconversion-length > seroconversion-time [ set seroconverted? true ] end to compute-maximum-infectious ;; A vector of the number of infectious individuals at each tick is stored. The maximum and time of the maximum are computed. set number-infectious-vector lput count turtles with [infectious?] number-infectious-vector set maximum-infectious max number-infectious-vector set tick-at-maximum-infectious position maximum-infectious number-infectious-vector end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

There is only one version of this model, created almost 2 years ago by Anna Mummert.

## Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.

Anna Mummert

## Case Study "Modeling Seasonal Influenza"

This model is part of a suite of infectious disease models, including SEIR-Model-Base-Seasonal, SEIR-Model-Vaccination-Seasonal, SEIR-Model-Antivirals, SEIR-Model-Isolation, and SEIR-Model-Periodic-Transmission. These five models are part of the case study "Modeling Seasonal Influenza", 2016, by Marcia Harrison-Pitaniello, Jessica Shiltz, Rober Hughes, Roger Estep, and Anna Mummert published by the National Center for Case Study Teaching in Science (http://sciencecases.lib.buffalo.edu/cs/).

## Posted about 1 year ago