Microbial Community Assembly

Microbial Community Assembly preview image

1 collaborator

Default-person Nino Zhuzhunadze (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.3.0 • Viewed 199 times • Downloaded 25 times • Run 0 times
Download the 'Microbial Community Assembly' 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 model represents four species of bacteria one of which (green) arrives early. While other three species have set properties (replication rate and antagonistic behavior), the user can modify these variables for the green species. These properties, including the time of arrival is supposed to determine the structure of microbial community assembly which in turns affect the ecosystem functioning.

HOW IT WORKS

There are several rules the model follows.

The initialization rule: each species is initialized in four different locations of the panel. Ten turtles of each species are arranged in a circular shape.

The replication rule: the turtles replicate until each of them hatches 4 turtles. The child turtle appears 1 patch forward with randomly selected direction.

Angagonism rule: this process is supposed to resamble the release of antibacteria against other species. We assume that areas dominated by one of the species is "covered" by antibacterial substance with variable effectivity. When a member of the opponent species ends up in the area, it has a certain percentage of death.

Three species represent: Pink -> control group Yellow -> rapidly replicating species Blue -> species involved in strong antagonistic behavior.

HOW TO USE IT

You can vary the replication rate, antagonistic behavior and the time of arrival to see how it affects the population growth of each species.

THINGS TO NOTICE

Notice how the delay of arrival can change the community stucture even when other variables remain the same. This suggests the importance of historical events when studying the determinants of ecosystem functioning.

THINGS TO TRY

Decrease the late-arrival-interval slider to 0. Then increase it until 10 without changing other variables.

EXTENDING THE MODEL

The outcome of this model is predictable due to the positive relationship between replication rate/antagonistic behavior and the population growth. We could make it more complex by adding the total energy variable to each species. Replication and "fight" would take up the energy, and once it would reach to 0 the population would die. It would be interesting to optimize the values of the replication rate and antagonistic behavior given the limited energy.

NETLOGO FEATURES

This model uses multiple functions that take in the paramters which make the code snippets more reusable.

RELATED MODELS

The code for the antagonistic behavior was inspired from segregation model. In both cases, we check the neighbor turtles and make decisions based on the density of the "different" turtle.

The replication code was taken and modified from the tumor model.

CREDITS AND REFERENCES

Fukami, Tadashi, et al. “Assembly History Dictates Ecosystem Functioning: Evidence from Wood Decomposer Communities.” Ecology Letters, vol. 13, no. 6, 16 Apr. 2010, pp. 675–684, https://doi.org/10.1111/j.1461-0248.2010.01465.x.

Comments and Questions

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

Click to Run Model

turtles-own [hatch-count]

to setup
  clear-all
  ;; create 10 early arrival turtles on the left side of the substrate (Green Species)
  species-arrival 10 -15 0 56

  ; Add any additional setup code here
  reset-ticks
end 

to go
  ;; add late arrival species if time has reached the desired number of ticks
  if ticks = late-arrival-interval [

    ;; create 10 late arrivals on the right side of the substrate (Blue species)
    species-arrival 10 0 15 84

    ;; create 10 late arrivals on the upper side of the substrate (Yellow species)
    species-arrival 10 15 0 44

    ;; create 10 late arrivals on the upper side of the substrate (Pink species)
    species-arrival 10 0 -15 16
  ]


 fight-or-not

 ;; Replicate all species
 replicate 84 0.5
 replicate 44 0.9
 replicate 16 0.5
 replicate 56 replication-rate-green


  let irreproducible-turtles turtles with [hatch-count = 4]
  ask irreproducible-turtles [
    set color gray
  ]


 tick
end 

;; Replicates turtles based on the replication rate. It stops hatching once a turtle has hatched 2 generations

to replicate [color-code replication-rate]
  ;; Calculate the number of replicating turtles based on the replication rate
  let replicating-turtles turtles with [color = color-code and hatch-count < 4 ]
  let replicating-turtle-count floor (count replicating-turtles * replication-rate)
  let selected-turtles n-of replicating-turtle-count replicating-turtles
  ask selected-turtles [
    fd 1
    hatch 1 [
      ; amplification
      rt random-float 360
      fd 1
    ]
    set hatch-count hatch-count + 1
  ]
end 


;; Function initializes 10 turtles in a circular shape with varying color and position

to species-arrival [num-turtles xposition yposition color-code]

  create-turtles num-turtles [
    let radius 0.5 ; Adjust the radius of the circle
    let angle (360 / num-turtles * who) ; Calculate the angle for each turtle

    ; Calculate the x and y coordinates based on the angle and radius
    let new-xcor radius * cos(angle)
    let new-ycor radius * sin(angle)

    setxy (xposition + new-xcor) (yposition + new-ycor)

    ;; Appearance of the species
    set color color-code
    set shape "circle"
    set size 0.5
    set hatch-count 0
  ]
end 

;; Kills an opponent bacteria if it enters a space dominanted by one of the species

to fight-or-not
  ask turtles [
    let neighborhood turtles in-radius 0.5
    let yellow-neighbors count neighborhood with [color = 44]
    let green-neighbors count neighborhood with [color = 56]
    let blue-neighbors count neighborhood with [color = 84]
    let pink-neighbors count neighborhood with [color = 16]

    ;; Check for blue neighborhood
    if color != 84 and blue-neighbors > 0 and (blue-neighbors / count neighborhood) > 0.5 [
      let death? random-float 1 < 0.9

      if death? [
        set color white
        die
      ]
    ]

    ;; Check for green neighborhood
    if color != 56 and green-neighbors > 0 and (green-neighbors / count neighborhood) > 0.5 [
      let death? random-float 1 < antagonistic-behavior

      if death? [
        set color white
        die
      ]
    ]

    ;; Check for yellow neighborhood
    if color != 44 and yellow-neighbors > 0 and (yellow-neighbors / count neighborhood) > 0.5 [
      let death? random-float 1 < 0.5

      if death? [
        set color white
        die
      ]
    ]

    ;; Check for pink neighborhood
    if color != 16 and pink-neighbors > 0 and (pink-neighbors / count neighborhood) > 0.5 [
      let death? random-float 1 < 0.5

      if death? [
        set color white
        die
      ]
    ]
  ]
end 

There is only one version of this model, created 10 months ago by Nino Zhuzhunadze.

Attached files

File Type Description Last updated
Microbial Community Assembly.png preview Preview 10 months ago, by Nino Zhuzhunadze Download

This model does not have any ancestors.

This model does not have any descendants.