Microbial Community Assembly
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
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.