Skin microbiome and Shine coli

Skin microbiome and Shine coli preview image

1 collaborator

Default-person Caius Gibeily (Author)

Tags

microbiome 

Tagged by Caius Gibeily over 5 years ago

Visible to everyone | Changeable by the author
Model was written in NetLogo 6.1.1 • Viewed 288 times • Downloaded 35 times • Run 0 times
Download the 'Skin microbiome and Shine coli' 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 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

  1. Set the Model-type chooser to whichsoever of the three models
  2. Adjust the slider parameters, or use the default settings.
  3. Press the "setup" button.
  4. Press the "go" button to begin the simulation.
  5. Set the number of cycles after which to end the simulation
  6. Set the seed if you wish for reproducible pseudo-random integers
  7. Change the size of the orthodrant in the settings of the 3D view
  8. 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

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

Click to Run Model

; (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.

Uploaded by When Description Download
Caius Gibeily over 5 years ago Debugged quorum Download this version
Caius Gibeily over 5 years ago Change 3D model to 2D model Download this version
Caius Gibeily over 5 years ago Change 3D model to 2D model Download this version
Caius Gibeily over 5 years ago Initial upload Download this version

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.