Ophiocordyceps Unilateralis Model

Ophiocordyceps Unilateralis Model preview image

1 collaborator

Default-person Hunter Clark (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 6.2.0 • Viewed 280 times • Downloaded 21 times • Run 0 times
Download the 'Ophiocordyceps Unilateralis Model' modelDownload this modelEmbed this model

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


WHAT IS IT?

This is a model that shows the relation between Ophiocordyceps unilateralis and Carpenter ants. The goal is to have it mimic natural interactions found in the wild while allowing you to change features such as the impacts of hyperparasite and plant density.

Initially, there will be a set number of infected ants. These ants have an infection time where they will need to pass the infection onto the plant before it runs out. The Ophiocordyceps unilateralis can not continue its life cycle. Once the patch is infected, it will have a chance to infect the ants adjacent to it to further spread the infection.

This model has two types of agents, turtles, and patches. The turtles are free-moving agents, whereas the patches are stationary. We have coded the turtles to be ants, and the patches will be our plants.

Within this model, you can manipulate the number of ants that appear in the model. The population is initially set as the carrying capacity as the primary focus is on the Ophiocordyceps unilateralis' life cycle, not the carpenter ants. The following two sliders control the patch variables. The first being the number of initial patches infected. The model interprets how many patches are initially green, then converts them to being infected (red). There is the ability to control the number of plants that appear in the lattice. The model takes the number you input, then randomly scatters the plants throughout the lattice. The final slider is a simple on-off slider that controls the inclusion of hyperparasites.

HOW IT WORKS

The model is initialized with 500 ants, 100 plants, and 10 out of the 100 plants are innoculated with the fungus.The ants then have the ability to move around freely in a random fashion either infected (red) or healthy (black).The fungal spores from the infected red plants have the ability to infect ants that travel through the spores. Once infected, the ants seek out healthy green plants to further the infection.

Further summary of specific variables and components are summarized below with an explanation of how each one functions in this model.

Number of Ants

The population of ants is important within this model, treat the ants in this case as the fuel for the Ophiocordyceps unilateralis. If there is a lack of fuel, the infections can not take hold, and then the fungus dies out. Within this model, you can change the initial ant population size, as it initially starts at 500 (Carrying Capacity).

Number of Plants

The number of plants is how we control forest density. The plants can either be red (infected) or green (healthy). There is an inital amount of the plants that are infected (Initial Infection Slider), the rest of the plants are infected by ants that have been controlled by the fungal spore. When the plant becomes infected, it has a imposed healing time that will return it to a healthy state.

Initial Infection

This feature allows for the control of how many of the plants will start infected. You can select from zero to the number of plants.

Hyperparasites

As found in the wild, hyperparasites will impact how infectious the spores can be. The slider works as a binary function as zero means off and one means that it is turned on.

Graph Analysis

The graph labeled "Ant Population" has three datasets that it tracks as the model runs: Alive (Green), Infected (Red), and Infected Plants (Dark Red). The graph will allow for easy visualization of trends over time, understanding data at a particular point in time, or graphing trends.

Assumptions

Within every model, there is a list of assumptions that are needed to have it fully functioning. There may be a lack of literature to back decisions, efficiency, or simplifications. This model is not an exception to the rule, but all assumptions are justified. The model has four categories of assumptions: being the ants, periods, recovery, and environment.

With the primary focus being on the fungi, there are quite a few simplifications and assumptions made to create the ants. The movement pattern which they follow is a randomized movement pattern that allows for some variety and realism. The ants cannot age or die. The model should focus on them dying from fungal infections, not natural causes. The last assumption with the ants is their reproduction mechanism. As there is no queen, reproduction is handled by the probability function. The numbers for offspring, carrying capacity, and chance to reproduce, were all adjusted by hand to find a natural equilibrium in the populace.

The second set of assumptions is the infection time of both the ants and plants. Both the patches and the turtles have the same infection time. In this case, there is a difference. The patch infection time is multiplied by a factor of seven. This solves two issues, the plants not staying infected long enough to spread the spores. Netlogo's tick speed is too fast to ensure that the agents have the likelihood of infection. The second issue it solves is allowing the ants to succumb to fungal death. The ants then have a fixed amount of time inwhich they can successfully inoculate a plant with the spores or they die off trying.

The second set of assumptions is based on the infection time of both the ants and plants. Both the patches and the turtles have the same infection time. In this case, there is a difference, the patches infection time is multiplied by a factor of seven. This is to solve two issues, the first being that the plant would not stay infected long enough to spread the spores. Netlogo’s tick speed is too fast to ensure that the agents have the likelihood of infection, thus days turned to weeks. The second issue it solves is that the ants will not die once they inoculate a plant, thus the time that they are alive gives them enough time to potentially have a successful inoculation or to die off trying. The recovery period's purpose is to state when the spores will not be viable. It is the same time period of four to ten days, but this decision was based on a lack of literature stating how long the spores can infect ants that roam the forest floor.

The last assumption is the environment. Seasons and weather are not factors within this model due to limitations of technical skills. The fungi also have to compete with predators that feed on the carpenter ants, this is another factor that is not apparent in the model. With both in mind, the model mimics an isolated populace, likely in a controlled environment.

HOW TO USE IT

Each tick is considered to be a day within this model.

The SETUP button resets the interface, plot, and the ticks. It then randomly distributes the ants, plants, and infected plants throughout the lattice.

The GO button starts the movement of the ants, the infection process, the graph, and everything else that runs within the model.

Set the sliders to the desired parameters, then press SETUP, GO. This will run the model until you reclick the GO button.

THINGS TO TRY

Within the model, there are a few interesting outcomes that can arise. The first being that the fungi can easily kill off the carpenter ant species if hyperparasitism is not a factor. The second being how initial infections typically determine whether the population will survive. Finally, it is an interesting tool to experiment with to determine how these two species might interact in the wild.

The first parameters to try out are 500 ants, 50 plants, and 5 initially infected. It was found that you can get two completely different graphs with the inclusion of hyperparasites. One has a stable population whereas the other completely dies out.

The second parameter to try out keeps the 500 ants, 100 plants, and 10 initially infected. The model will output a left skew for the infections which can be mitigated with the inclusion of hyperparasites.

It is an interesting model to see how hyperparasite might be crucial to the survival of Ophiocordyceps unilateralis. Play around with the model to see what other additional outcomes you can come up with.

CREDITS AND REFERENCES

This model was built off of the virus model available within the Netlogo library.

Wilensky, U. (1998). NetLogo Virus model. http://ccl.northwestern.edu/netlogo/models/Virus. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

turtles-own [   ;Determines the variables that the ant can have.
    sick?
    sick-time
    ticks-since-here]

patches-own [  ;Determines the variables that the patches can have.
  countdown ]

globals
  [            ;This is where we define our variable
    chance-reproduce
    carrying-capacity
    plant-heal-time

]

to setup
  clear-all
  setup-constants    ;Runs the setup-constants command
  setup-turtles      ;Runs the setup-turtles command
  update-display     ;Runs the update-display command

  ask patches [      ;Sets up the "dirt" and gives all patches a random heal time for plants
    set pcolor brown
    set countdown random plant-heal-time
  ]

  ask n-of plants patches [ set pcolor green ] ;Asks random patches equal to the number of plants you've selected on the slider to become plants

  ask n-of(Initial-Infections) patches with [pcolor = green]
      [ set pcolor 12 ]                        ;Makes a percentage of the population infected, you are able to control this with the slider on the interface


  reset-ticks
end 

to setup-turtles                         ;Sets up the ants as an agent
  create-turtles number-of-ants
  [ set shape "bug"                      ;Changes the ants shape from a dot to an ant
     setxy random-xcor random-ycor       ;This creates the ants and places them randomly throughout the lattice
     set sick-time 0                     ;Makes sure that the ants do not start off infected
     set size 1.5                        ;Sets the size of the ants to be 1.5 times the size of the patches
      get-healthy ]                      ;Ensures the ants start off as healthy
end 

to get-sick                             ;This is a command to ensure the infected ants turn red
  set sick? true
  set color red
  set sick-time 0
end 

to get-healthy                          ;This is a command to ensure healthy ants turn black and don't gain the side effects of being sick
  set sick? false
  set sick-time 0
end 

to setup-constants
  set carrying-capacity 500                      ;Fixed Carrying Capacity of the model
  set chance-reproduce 0.5                       ;As there is not a functional queen, we are purely looking at foragers. To keep the population from plummiting we add a chance to reproduce
  set plant-heal-time (4 + random-float 6) * 7   ;As the model runs quite quickly, this command makes it so the heal time of the plant is converted to weeks. The process still takes 4 - 10 days but it is scaled to weeks for the sake of the model.
end 

to go
  ask turtles[                                         ;This is the checklist the ant goes through per tick, it ages, moves, and checks for infection.
    reproduce                                          ;Runs the reproduce command
    infect                                             ;Runs the infect command
    if sick? [ time-to-die ]                           ;If the ant is sick, it will run the time to die command
    if sick? [ set sick-time sick-time + 1 ]           ;If the ant is sick, starts up the command for sick time as a countdown for the time to die command

    ask turtles with [ not sick?] [                    ;If the turtle is healthy, then it just moves

      move

    ]


  ]
  ask turtles [                                                         ;This set of code is used to mimic the ant finding a plant in the wild to death grip
    if sick?[
      face min-one-of patches with [pcolor = green] [distance myself]   ;Asks the ant to face the direction of the closest green plant
      if pcolor = brown [                                               ;Asks the ant if the patch underneath is brown, if so then it must continue to move
        move ]
      if pcolor = green [                                               ;Asks the ant if the patch underneath is green, if so then it must stop and start the infect-plant command
        infect-plant]
      if pcolor = 12 [                                                  ;Forces the ant to stay stationary once the plant has turned red
        forward 0]
    ]
  ]
  ask patches with [pcolor = 12] [                                      ;Asks if the plant is infected, if so then start the heal plant command
    heal-plant]
  ;excel                                                                ;Allows for easy data collection
  tick
end 

to update-display                                                                      ;Just stops rainbow coloured ants from occuring
  ask turtles                                                                          ;Just asks the turtles what their health conditions are like. If they are healthy then they get coloured black, if sick then they are coloured red
      [set color ifelse-value sick? [ red ] [ black ] ]
end 

to Time-to-die                                                                         ;Used to kill off sick ants who haven't sucessfully completed the Death Grip
   if sick-time > (4 + random-float 6)                                                 ;This is how long it takes for the whole life cycle to occur 4-10 days. Thus if it has not successfully completed a stage in its life cycle then it shall die out
    [die]                                                                              ;Pretty self explanitory
end 

to reproduce                                                                           ;This is to stabalize the ant population, its a randomized birth rate.
  ask turtles with [not sick?] [                                                       ;Asks if the number of ants on the screen is less than the carrying capacity,
    if count turtles < carrying-capacity and random-float 250 < chance-reproduce       ;if so then all healthy ants have a chance to produce an offspring
    [ hatch 1[
      lt 45 fd 1                                                                       ;Movement pattern for the new ant
      get-healthy                                                                      ;Makes sure the new ant is healthy
      ]
    ]
  ]
end 

to move                                       ;Used to mimic ants movement
  rt random 100                               ;Right turn x amount
  lt random 100                               ;Left turn x amount
  forward 1                                   ;forward 1
end 

to infect                                               ;Infects ants that come into contact with plant
  ask turtles with [not sick?] [
    if pcolor = 12[                                     ;This asks all the turtles that are not sick if they are on an infected plant
      if random-float 100 < (10 + random-float 15)[     ;Statistical chance of being infected from the spores, this was taken from a study stating that 10 - 15% of the forager population was infected from the spores.
        get-sick                                        ;Starts the get-sick procedure
        forward 10                                      ;This is a feature added to stop the ant from being locked to the infected plant
    ]
    ]

  ]
end 

to infect-plant                                                     ;This is the code equivalent of the Death Grip
  ask one-of turtles [
    if sick?[                                                       ;This asks each of the ant if they are sick, if true then move onto the next line of code.
      if pcolor = green[                                            ;It then confirms if the patch the ant occupies is green, it cannot be red or brown as these are not viable plants
        if random-float 100 < (61.8 - (hyperparasite * 55.4)) [       ;This is the statistical chance of a proper a successful inoculation. There is a 64% chance of being successful without hyperparasites involed. If you select the hyperparasites to be in the model, it changes from a zero to a one. This allows for the subtraction of 55.4% success rate as the parasite is only has 8.6% success rate when hyperparasites are involved
            set pcolor 12]                                          ;Changes the green plant into an infected red plant
      ]
    ]
  ]
end 

to heal-plant                                ;Allows for the plant to become non contagious
  if pcolor = 12 [                           ;Asks if the patch colour is dark red
    ifelse countdown <= 0                    ;Asks if the countdown is less than or equal to zero, if true then it can run the next command
      [ set pcolor green                     ;Sets the patch color back to green
        set countdown plant-heal-time ]      ;Restarts the plant heal time to zero because it is no longer infected
      [ set countdown countdown - 1 ]        ;If the countdown was greater than zero, this command runs which just subtracts one from the countdown
  ]
end 

;to excel                                                           ;This section of the model is for data collection, It is greyed out so you don't make random excel files on your computer
  ;if ticks >= 300 [                                                ;Allows the model to run for 300 ticks prior to running the save command
    ;export-all-plots  (word "High " random-float 1.0 ".csv")       ;The premise is that this code will export the plot as a .csv file with the name "high" followed by a randomly generated number. We do this to ensure that the file is not overwritten within the folder.
    ;export-all-plots  (word "Medium " random-float 1.0 ".csv")
    ;export-all-plots  (word "Low " random-float 1.0 ".csv")
    ;export-all-plots  (word "Hyper-High " random-float 1.0 ".csv")
    ;export-all-plots  (word "Hyper-Medium " random-float 1.0 ".csv")
    ;export-all-plots  (word "Hyper-Low " random-float 1.0 ".csv")

    ;setup]                                                         ;Allows for the model to restart to insure a loop is created
;end

There is only one version of this model, created over 3 years ago by Hunter Clark.

Attached files

File Type Description Last updated
Ophiocordyceps Unilateralis Model.png preview Preview for 'Ophiocordyceps Unilateralis Model' over 3 years ago, by Hunter Clark Download

This model does not have any ancestors.

This model does not have any descendants.