Skin microbiome and Shine coli
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS THIS?
My model explores three different scenarios encountered by a hypothetical skin microbiome. These scenarios question the steady states of dynamic equilibria among three bacterial colonies - green (col1), blue (col2) and orange (col3). If the system tends towards dominance of one colony, the system is considered unstable - as in the Lotka-Volterra set of equations modelling the oscillations in predator-prey population. In contrast, the microflora is stable if it tends to maintain steady numbers over time under different prevailing biotic and abiotic conditions.
HOW IT WORKS
There are three main variations to this model.
In the first counterfactual, "dark microbiome", the three colonies of bacteria commence in a random array of n-size. Predictably, the array reflects an orthogonal square of human epidermis. Colonies proceed to reproduce dependent on replication rate and doubling time until the cycle limit or extinction of two colonies befalls. Per tick (cycle), colony-forming units age; upon reaching asexual reproductive maturity, there is a pseudo-random chance that the CFU reproduce, spreading to its Neuman neighbours. Be it so, CFUs are in constant broil against Death; if they exceed a certain death threshold without reproduction, the CFU perishes and turns black. Where dD/dt > dR/dt, the system is unstable and tends towards negative population growth.
The second counterfactual, "solar model" employs an identical framework to that above-mentioned with one salient distinction - a UV toxicity component. Every generation, [or if you set n mod = 0 to > 1, after every n set of generations] a random proportion of CFUs experience impingent solar radiation. If the unit reaches a certain UV-damage threshold, it is assumed that photolyase and/or double-strand break repair pathways have failed under the throes of excess DNA damage and thus, the CFU turns brown. If the brown CFU cannot repair its DNA damage, it proceeds to die and turn black. Additionally, you could opt to input our proposed Shinorine bacterium i.e. Shine coli :D (cyan colour). The bacterium is immune to UV damage and, depending on the parameter value, can secrete its protective UV-absorbants within a given radius.
Finally, the third counterfactual is "quorum sensing". Using the mechanisms of the first counterfactual, two of the colonies, blue and orange, have the ability to secrete certain quorum-inducing signals within a local radius promoting self-growth. The green colony thereby assumes the role of an invading or pathogenic strain. While it assays to colonise the orthodrant, it ultimately fails. Change the parameters and observe different conditions.
HOW TO USE IT
- Set the Model-type chooser to whichsoever of the three models
- Adjust the slider parameters, or use the default settings.
- Press the "setup" button.
- Press the "go" button to begin the simulation.
- Set the number of cycles after which to end the simulation
- Set the seed if you wish for reproducible pseudo-random integers
- Change the size of the orthodrant in the settings of the 3D view
- Look at the POPULATIONS plot to watch the populations fluctuate over time
Parameters:
All models
col1-replication; replication rate of green colony col2-replication; replication rate of blue colony col3-replication; replication rate of orange colony
Age at which bacterium reaches reproductive maturity col1-dounlingt; doubling time of green colony col2-doublingt; doubling time of blue colony col3-doublingt; doubling time of orange colony
age-of-death-def3; Default 3 - age at which bacterium dies
Solar model
solar-flux; number of orthodrantules per tick to experience solar radiation damage-factor; degree of damage caused in each solar radiation impingement
green-damage-threshold; threshold value before green colony experiences DNA damage (turns brown) blue-damage-threshold; threshold value before blue colony experiences DNA damage (turns brown) orange-damage-threshold; threshold value before orange colony experiences DNA damage (turns brown)
Shinorine coli
Button - adds Shinorine coli to number of patches determined by concentration concentration; number of CFU of Shinorine to add to orthodrant
Monitors
Record the number of each colony (green, blue, orange) and number of dead colonies (black) The graph is a visual representation of this
EXTENDING THE MODEL
There are a number ways to alter the model. While I have separated the three models, they could practically be fused under one state. Additionally, extra colonies could be added to measure the impact of a larger subset of competing mosaics. Talk to me in the WhatsApp group or on teams if you have any ideas.
Try changing the reproduction rules -- for example, what would happen if reproduction depended on energy rather than being determined by a fixed probability?
NETLOGO FEATURES
CREDITS AND REFERENCES
Wilensky, U. & Reisman, K. (1998). Connected Science: Learning Biology through Constructing and Testing Computational Theories -- an Embodied Modeling Approach. International Journal of Complex Systems, M. 234, pp. 1 - 12. (The Wolf-Sheep-Predation model is a slightly extended version of the model described in the paper.)
Wilensky, U., & Rand, W. (2015). An introduction to agent-based modeling: Modeling natural, social and engineered complex systems with NetLogo. Cambridge, MA: MIT Press.
Lotka, A. J. (1925). Elements of physical biology. New York: Dover.
Volterra, V. (1926, October 16). Fluctuations in the abundance of a species considered mathematically. Nature, 118, 558–560.
Gause, G. F. (1934). The struggle for existence. Baltimore: Williams & Wilkins.
An introduction to mathematical biology
Comments and Questions
; (C) Caius Gibeily - Designer of Microbiome Simulator patches-own [damage birth-tick age quorum_col2 quorum_col3 ] to setup clear-all if Seed = True [ random-seed seed-val ] ask patches [ set pcolor one-of [green blue orange] set birth-tick 4 set damage 0 set quorum_col3 0 set quorum_col2 0 ] reset-ticks end to go ask patches [ set birth-tick ticks col-replication increment-age death ] if Model-type = "solar model" [ ask up-to-n-of solar-flux patches [set damage (damage + damage-factor) UV-recovery ] ] if Model-type = "quorum sensing" [ ask patches [ quorum-sensing ] ] if (count patches with [pcolor = green] = 0) and (count patches with [pcolor = orange] = 0) and (count patches with [pcolor = blue] = 0) [ stop ] if (count patches with [pcolor = green] >= 21000) or (count patches with [pcolor = orange] >= 21000) or (count patches with [pcolor = blue] >= 21000) [ print "All hail the new colony" ] if (ticks = N-cycles) and (N-cycles > 0) [ stop] tick end to increment-age let age-in-ticks birth-tick - ticks if (age-in-ticks >= 0) and (age-in-ticks mod 2 = 0) [ set age (1 + age) ] end to quorum-sensing ask self [ ifelse (pcolor = blue) and (age >= col2-doublingt) [ set quorum_col2 quorum_col2 + 1 let amount quorum_col2 * col2-secretion let neighbor-share amount / 8 ask neighbors4 [set quorum_col2 quorum_col2 + neighbor-share] ] [if (pcolor = orange) and (age >= col3-doublingt) [ set quorum_col3 quorum_col3 + 1 let amount2 quorum_col3 * col3-secretion let neighbor-share2 amount2 / 8 ask neighbors4 [set quorum_col3 quorum_col3 + neighbor-share2] ] ] ] end to col-replication ask self [ if (pcolor = cyan) and (age = 3) [ if random-float 120 < shine-replication [ set birth-tick ticks set age 0 ask neighbors4 [ set pcolor cyan set birth-tick ticks set age 0 ] ] ] if (pcolor = green) and (age = col1-doublingt) [ if random-float 100 < col1-replication [ set birth-tick ticks set age 0 ask neighbors4 [ set pcolor green set birth-tick ticks set age 0 ] ] ] ifelse (Model-type = "quorum sensing") and (pcolor = blue) and (age = col2-doublingt) [ ifelse (pcolor = blue) and (age = col2-doublingt) and (quorum_col2 > 5) [ if random-float 40 < col2-replication [ set birth-tick ticks set age 0 set quorum_col2 0 ask neighbors4 [ set pcolor blue set birth-tick ticks set age 0 ] ] ] [ifelse (pcolor = blue) and (age = col2-doublingt) and (quorum_col2 < 5) [ if random-float 150 < col2-replication [ set birth-tick ticks set quorum_col2 0 set age 0 ask neighbors4 [ set pcolor blue set birth-tick ticks set age 0 ] ] ] [if (pcolor = blue) and (age = col2-doublingt) and (quorum_col2 < quorum_col3) [ ifelse random-float 140 < col2-replication [ set birth-tick ticks set age 0 set quorum_col2 0 ask neighbors4 [ set pcolor blue set birth-tick ticks set age 0 set quorum_col2 0 ] ] [set pcolor orange ask neighbors4 [ set pcolor orange set birth-tick ticks set age 0 set quorum_col2 0 set quorum_col3 1 ] ] ] ] ] ] [if (Model-type = "dark microbiome") or (Model-type = "solar model") and (pcolor = blue) and (age = col2-doublingt)[ if random-float 100 < col2-replication [ set birth-tick ticks set age 0 ask neighbors4 [ set pcolor blue set birth-tick ticks set age 0 ] ] ] ] ifelse (Model-type = "quorum sensing") and (pcolor = orange) and (age = col3-doublingt)[ ifelse (pcolor = orange) and (age = col3-doublingt) and (quorum_col3 > 5) [ if random-float 40 < col3-replication [ set birth-tick ticks set age 0 set quorum_col3 0 ask neighbors4 [ set pcolor orange set birth-tick ticks set age 0 ] ] ] [ifelse (pcolor = orange) and (age = col3-doublingt) and (quorum_col3 < 5) [ if random-float 150 < col3-replication [ set birth-tick ticks set age 0 set quorum_col3 0 ask neighbors4 [ set pcolor orange set birth-tick ticks set age 0 ] ] ] [if (pcolor = orange) and (age = col3-doublingt) and (quorum_col3 < quorum_col2) [ ifelse random-float 140 < col3-replication [ set birth-tick ticks set age 0 ask neighbors4 [ set pcolor orange set birth-tick ticks set age 0 set quorum_col3 0 ] ] [set pcolor blue ask neighbors4 [ set pcolor blue set birth-tick ticks set age 0 set quorum_col3 0 set quorum_col2 1 ] ] ] ] ] ] [if (Model-type = "dark microbiome") or (Model-type = "solar model") and (pcolor = orange) and (age = col3-doublingt)[ if random-float 100 < col3-replication [ set birth-tick ticks set age 0 ask neighbors4 [ set pcolor orange set birth-tick ticks set age 0 ] ] ] ] ] end to UV-recovery ask self [ if (pcolor = brown) and (age >= 5) [ if random-float 20 < 10 [ set pcolor [pcolor] of one-of neighbors4 set damage 0 ] if pcolor = cyan [ ask patches in-radius electrosphere [ set damage 0 ] ] ] ] end to col ask self [ if age > 100 [ set pcolor white ] ] end to death ask self [ if (age >= death-age-def3) and (pcolor = one-of [blue orange green cyan]) [set pcolor [black] of myself] if Model-type = "solar model" [ if (damage > green-damage-threshold) and (pcolor = green) [set pcolor brown set damage 0 ] if (damage > orange-damage-threshold) and (pcolor = orange) [set pcolor brown set damage 0 ] if (damage > blue-damage-threshold) and (pcolor = blue) [set pcolor brown set damage 0 ] ] ] end to-report colony-orange report patches with [pcolor = orange] end to-report colony-blue report patches with [pcolor = blue] end to-report colony-green report patches with [pcolor = green] end to-report thanos report patches with [pcolor = black] end to-report age-check report patches with [age > 3] end
There are 4 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Skin microbiome and Shine coli.png | preview | Preview for 'Skin microbiome and Shine coli' | over 5 years ago, by Caius Gibeily | Download |
This model does not have any ancestors.
This model does not have any descendants.