Effect of quorum sensing inhibitors on P. aeruginosa biofilms
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
Models the impact of different types of antibiotics and quorum sensing inhibitors/enhancers on dispersal of Pseudomonas aeruginosa biofilms.
The basic model of biofilm dispersal and quorum sensing is based on the partial differential equation model by Emerenini et al (2015).
To run the model, download it and use the NetLogo application - it won't run in NetLogo web.
HOW TO USE IT
Variables controlled in interface:
patch-length: length of the grid square division-mass: mass at which cell divides cell-density: density of bacterial cell growth-rate: maximum specific growth rate * growth-k: half saturation concentration (growth) * yield: yield coefficient - links nutrient consumption with increase in bacterial mass * lysis-rate: death rate of bacteria nutrient-dose: initial concentration of growth-limiting nutrient ahl-synthesis-rate: amount of ahl produced per bacterial cell if under quorum sensing induction threshold ahl-degradation-rate: proportion of AHL that degrades small-molecule-diffusion-rate: proportion of concentration gradient between two patches that diffuses between them per hour diffusion-decrease-biofilm: diffusion rate in biofilm = diffusion rate in water x diffusion-decrease-biofilm antibiotic-dose: concentration of antibiotic at the top of the view antibiotic-death-rate:: death rate in Michealis-Menten death of bacteria from antibiotic half-max-conc: Michaelis-Menten constant for the above aiia-reaction-rate: Michealis-Menten Vmax for AiiA, an enzymes that degrades AHL aiia-km: Michaelis-Menten Km for AiiA antibiotic-qs-effect: proportional adjustment quorum sensing induction threshold by drugs that effect quorum sensing resistance-mutation-rate: rate at which antibiotic resistance mutations occur speed: swimming speed of detached bacteria tumble-rate: frequency of direction changes by detached bacteria shuffle-step-size: distance moved by bacteria in the biofilm per hour attachment-rate: controls rate at which bacteria re-attach to the biofilm * attachment-k: Km for the above process * dispersal-rate: rate of dispersal from the biofilm when below the AHL threshold ahl-threshold: threshold AHL concentration for induction of quorum sensing behaviour ahl-synthesis-increase: proportional increase in AHL synthesis above the AHL threshold dispersal-increase: proprtional increase in dispersal above the quorum AHL threshold
*See Emerenini et al (2015) for more details on this variable
CREDITS AND REFERENCES
This model is available on the NetLogo Modelling Commons at: http://modelingcommons.org/browse/onemodel/6663#modeltabsbrowseinfo
References
Emerenini BO, Hense BA, Kuttler C, Eberl HJ. A Mathematical Model of Quorum Sensing Induced Biofilm Detachment. PLOS ONE. 2015; 10:7:e0132385, doi: https://doi.org/10.1371/journal.pone.0132385.
Wilensky, U. (1998). NetLogo Heat Diffusion model. http://ccl.northwestern.edu/netlogo/models/HeatDiffusion. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
See the spreadsheet accompanying the online version of the model for sources of parameter values.
Related models
Carvalho G, Balestrino D, Forestier C, Mathias JD. How Do Environment-Dependent Switching Rates between Susceptible and Persister Cells Affect the Dynamics of Biofilms Faced with Antibiotics? Npj Biofilms and Microbiomes. 2018; 4:1:6. doi: https://doi.org/10.1038/s41522-018-0049-2.
Biggs MB, Papin JA. Novel Multiscale Modeling Tool Applied to Pseudomonas Aeruginosa Biofilm Formation. PLOS ONE. 2013; 8:10:e78011. doi: https://doi.org/10.1371/journal.pone.0078011.
Comments and Questions
; extensions [ profiler ] extensions [ vid ] globals [ film-output-prefix ; date and time of start of film for use in naming images for film total-mass ; total mass of bacteria at that timestep new-shuffle-step-size ; shuffle step size in terms of patches top-patches ; row of patches at the top of the system ] patches-own [ ahl ; AHL concentration antibiotic ; antibiotic concentration nutrient ; growth-limiting nutrient concentration old-ahl old-nutrient ; concentrations on previous tick biofilm? ; true if patch is covered by biofilm ahl-threshold-adj ; ahl threshold adjusted by local antibiotic concentration ] breed [bacteria bacterium] bacteria-own [ attached? ; true if attached to surface/part of biofilm move-count ; counts steps taken for move procedure mass ; mass of cell resistant? ; true if bacterium is resistant to the antibiotic ] ; setup simulation - see individual procedures for comments on what they do to setup clear-all setup-patches setup-bacteria update-patches set-globals format-patches setup-film reset-ticks if film? [ vid:start-recorder ] end ; run simulation - see individual procedures for comments on what they do to go ; profiler:start while [ ticks <= 1441 ] [ ; stops simulation after 60 days if ticks > 25 [ disperse ] ; doesn't start dispersal immediately to avoid cases where all bacteria quickly disperse move grow-bacteria divide-bacteria die-bacteria mutate kill-antibiotic shuffle-bacteria update-patches synthesise-ahl diffuse-ahl degrade-ahl diffuse-nutrient format-patches format-bacteria plot-density if film? [ vid:record-view ] tick ] end ;;; --- Setup Procedures --- ;;; ; sets patch variables and colour at start of simulation to setup-patches ask patches [ set pcolor white set ahl 0 set nutrient nutrient-dose set old-ahl 0 set old-nutrient nutrient-dose set antibiotic antibiotic-dose set biofilm? FALSE set ahl-threshold-adj ahl-threshold ] ask patches with [ pycor < 0 ] [ set pcolor 8 ] end ; simulation starts with single bacterium in centre of surface to setup-bacteria create-bacteria 1 [ setxy (max-pxcor / 2) 0 set attached? TRUE set resistant? FALSE set mass (division-mass / 2) format-bacteria ] end ; set global variables to set-globals set new-shuffle-step-size shuffle-step-size / patch-length set top-patches patches with [pycor = max-pycor] end ; prepares to output film with name of the current date and time to setup-film if film? [ set film-output-prefix (word "output/film/" date-and-time "_") ] end ;;; --- Simulation Procedures --- ;;; ; dispersal of bacteria from the biofilm ; disperses with probability dispersal-rate if below (adjusted) ahl threshold. Dispersal rate increases if above threshold to disperse ask bacteria with [attached?] [ ifelse not resistant? or antibiotic-type != "effect-quorum-sensing" [ ifelse ahl > ahl-threshold-adj [ if dispersal-rate * dispersal-increase >= random-float 1 [set attached? FALSE] ] [ if dispersal-rate >= random-float 1 [ set attached? FALSE ] ] ] [ ifelse ahl > ahl-threshold [ if dispersal-rate * dispersal-increase >= random-float 1 [set attached? FALSE] ] [ if dispersal-rate >= random-float 1 [ set attached? FALSE ] ] ] ] end ; random movement of detached cells to move set total-mass sum [mass] of bacteria ask bacteria with [not attached?] [ ; since movement happens much faster than cell division, assumes either cells will move out of frame of reference or they will attach every hour while [not attached?] [ set heading random 360 set move-count 0 while [ move-count < speed * tumble-frequency / patch-length ] ; moves for at given speed, tumbles and changes direction according to tumble-frequency [ fd 1 bounce set move-count move-count + 1 ] ] ] end ; either diffuse out of system, bounce off surface or attach to biofilm to bounce ; bacteria procedure ; die when hit outside walls - simulates diffusion out of system if abs pxcor = max-pxcor [ die ] if abs pxcor = 0 [ die ] if abs pycor = max-pycor [ die ] ; bounce off bottom surface if pycor = 0 [ set heading ( - heading ) ] ; attach or bounce off biofilm if count bacteria-here with [attached?] > 0 [ ; if collide with an attached bacterium let mass-tot sum [mass] of bacteria-here - mass / total-mass ; mass of other bacteria at this patch as a fraction of total bacteria let probability-attachment (attachment-rate * mass-tot) / (attachment-k + mass-tot) ; MM-like attachment kinetics as in Emerinini 2015 model ifelse probability-attachment > random-float 1 ; attaches according to probability-attchment [ set attached? TRUE set move-count speed ] [ set heading ( - heading ) ] ] end ; grow bacteria to grow-bacteria ask bacteria [ let mass-increase (mass * nutrient * growth-rate) / (growth-k + nutrient) ; Monod growth kinetics as in Emerinini 2015 model set mass mass + mass-increase set nutrient nutrient - (mass-increase / yield) ; removes consumed nutrient if nutrient < 0 [set nutrient 0] ] end ; bacterial divide when they reach division-mass to divide-bacteria ask bacteria [ if mass >= division-mass [ let new-mass (division-mass / 2) + random-normal 0 (division-mass / 20) ; mass of daughter cell is half mass of mother cell with some random variation set mass new-mass hatch 1 [ ; new cell set mass division-mass - new-mass ; mass of both daughters adds up to original cell set heading random 360 ; set random direction fd shuffle-step-size ; move away in random direction so not directly on top of parent ] ] ] end ; bacteria die with probability lysis-rate to die-bacteria ask bacteria [ if lysis-rate > random-float 1 [die] ] end ; some bacteria randomly mutate and become antibiotic resistant to mutate if antibiotic-type != "none" [ ask bacteria [ if resistance-mutation-rate * 10 ^ -5 > random-float 1 [ set resistant? TRUE ] ] ] end ; if bacteria-killing antibiotic treatment used, bacteria die according to death rate and antibiotic concentration to kill-antibiotic if antibiotic-type = "kill-bacteria" [ ask bacteria [ ifelse not resistant? [ let probability-death (antibiotic-death-rate * antibiotic) / ( half-max-conc + antibiotic) if probability-death >= random-float 1 [ die ] ] [ let probability-death (antibiotic-death-rate-resistant * antibiotic) / ( half-max-conc + antibiotic) if probability-death >= random-float 1 [ die ] ] ] ] end ; bacteria move slowly in random directions in the biofilm to reduce overlapping to shuffle-bacteria ask bacteria [ set heading random 360 if [pycor] of patch-ahead new-shuffle-step-size >= 0 [ fd new-shuffle-step-size ] ; stops movement out of system if ycor < 0.5 [ set ycor -0.5 + random-float 1 ] if xcor < 0.5 [ set xcor 0.5 + random-float 1 ] if xcor > ( max-pxcor - 0.5 ) [ set xcor max-pxcor - 0.5 - random-float 1 ] if ycor > ( max-pycor - 0.5 ) [ set ycor max-pycor - 0.5 - random-float 1 ] ] end ; all living bacteria synthesise ahl according to ahl-synthesis-rate. This increases if over ahl-threshold to synthesise-ahl ask bacteria [ ifelse not resistant? or antibiotic-type != "effect-intracellular-quorum-sensing" [ ask patch-here [ ifelse ahl < ahl-threshold-adj [ set ahl ahl + ahl-synthesis-rate ] [ set ahl ahl + (ahl-synthesis-rate * ahl-synthesis-increase) ] ; increase by additional amount if over ahl threshold ] ] [ ask patch-here [ ifelse ahl < ahl-threshold [ set ahl ahl + ahl-synthesis-rate ] [ set ahl ahl + (ahl-synthesis-rate * ahl-synthesis-increase) ] ; increase by additional amount if over ahl threshold ] ] ] ask patches [set old-ahl ahl] end ; diffusion of ahl - diffuses into neighbouring patches according to diffusion rate. Adapted from the model Heat Diffusion (Wilensky, 1998) to diffuse-ahl ask patches [ ifelse biofilm? [ set ahl ( diffusion-rate * diffusion-decrease-biofilm * (sum [old-ahl] of neighbors4) / ( patch-length ^ 2 ) + ((1 - (4 * diffusion-decrease-biofilm * diffusion-rate / patch-length ^ 2)) * old-ahl )) ] [ set ahl ( diffusion-rate * (sum [old-ahl] of neighbors4) / patch-length ^ 2 ) + ((1 - ( 4 * diffusion-rate / patch-length ^ 2)) * old-ahl ) ] if ahl < 0 [ set ahl 0 ] set old-ahl ahl ] end ; as above for nutrient to diffuse-nutrient ; top patches have constant nutrient concentration ask top-patches [ set nutrient nutrient-dose set old-nutrient nutrient-dose ] ask patches [ ifelse biofilm? [ set nutrient ( diffusion-rate * diffusion-decrease-biofilm * (sum [old-nutrient] of neighbors4) / patch-length ^ 2 ) + ((1 - ( 4 * diffusion-decrease-biofilm * diffusion-rate / patch-length ^ 2 )) * old-nutrient) ] [ set nutrient (diffusion-rate * (sum [old-nutrient] of neighbors4) / patch-length ^ 2 ) + ((1 - ( 4 * diffusion-rate / patch-length ^ 2 )) * old-nutrient) ] if nutrient < 0 [ set nutrient 0 ] if nutrient > nutrient-dose [ set nutrient nutrient-dose ] set old-nutrient nutrient ] end ; constant rate of degradation of AHL, increased by an ahl-degrading antibiotic to degrade-ahl ask patches [ set ahl ahl - (ahl * ahl-degradation-rate) if antibiotic-type = "degrade-ahl" [ let degradation (antibiotic * aiia-reaction-rate * ahl) / (aiia-km + ahl) set ahl ahl - degradation ] if ahl < 0 [set ahl 0] set old-ahl ahl ] end ; set patch variables to update-patches ask patches with [ count bacteria-here with [attached?] > 0 ] [ set biofilm? TRUE ] ask patches with [ count bacteria-here with [attached?] = 0 ] [ set biofilm? FALSE ] ; drugs affecting QS adjust the effective ahl threshold concentration if antibiotic-type = "effect-intracellular-quorum-sensing" [ ask patches [ set ahl-threshold-adj ahl-threshold - ( antibiotic-qs-effect * ahl-threshold * antibiotic / antibiotic-dose ) ] ] end ; sets antibiotic dose according to antibiotic type. Run by button in interface to set-antibiotic-dose ifelse antibiotic-type = "none" [ set antibiotic-dose 0 ] [ set antibiotic-dose 50 ] end ;;; --- Plots etc --- ;;; to export-bacteria-plot export-plot "Bacteria" (word "output/bacteria_plots/" date-and-time ".csv") end to export-biofilm-mass-plot export-plot "Biofilm Mass" (word "output/biofilm_mass_plots/" date-and-time ".csv") end to export-ahl-plot export-plot "Patches with AHL concentration greater than threshold" (word "output/ahl_plots/" date-and-time ".csv") end ;;; --- Visualisation Procedures --- ;;; to format-patches ask patches with [ pycor >= 0 ] [ set pcolor scale-color blue ahl (2 * ahl-threshold) 0 ]; darker blue corresponds to higher AHL concentration end to format-bacteria ask bacteria [ set shape "circle" set color green if resistant? [ set color 72 ] set size (((3 * mass) / (cell-density * pi * 4)) ^ (1 / 3)) / patch-length ; calculate diameter from mass and density ] end ; Plots bacterial density rather than standard visualisation to plot-density if plot-density? [ ask bacteria [set color [0 0 0 0]] ask patches [set pcolor scale-color red (sum [mass] of bacteria-here) (10000) 0] ] end
There are 2 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Effect of quorum sensing inhibitors on P. aeruginosa biofilms.png | preview | Preview for 'Effect of quorum sensing inhibitors on P. aeruginosa biofilms' | almost 4 years ago, by Sarah Buddle | Download |
Parameter Sources.pdf | Sources of parameters used in model | almost 4 years ago, by Sarah Buddle | Download | |
Parameter Values.pdf | Values of parameters used in model | almost 4 years ago, by Sarah Buddle | Download |
This model does not have any ancestors.
This model does not have any descendants.