Maker/Moocher Theophylline Producing Cells
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
We have discovered a concern about using Programmed Evolution for theophylline production in E. coli. It has to do with the ability of theophylline to freely cross the membrane of a bacterial cell that made it. The theophylline could then diffuse to a cell that does not make it, and enter that cell. The cell that did not make theo could then gain fitness (unfairly).
HOW IT WORKS
There are three agents: 1) Maker Cells - E. coli cells that produce theophylline 2) Moocher Cells - E. coli cells that DO NOT produce theophylline 3) Theophylline
Maker cells and moocher cells differ in: a) color b) the ability to produce theophylline Additional traits may be set using the sliders to make them differ more.
*All agents have a lifespan, and will die when that runs out. Theophylline has a lifespan of about (1/3) of the cells *The cells gain energy when theophylline is present in the cell. It takes energy to move, so every tick they slowly spend energy (but gain if theophylline is present) *Cells reproduce when they have reached a certain threshold (user can set). Then a new cell of the same type is formed, and each cell now has half of the energy of the parent. Also, the theophylline is split with its child. *Cells need to wait a certain "downtime" before reproducing again.
HOW TO USE IT
*theo-production: controls the amount (likelihood) that a maker cell produces theophylline on any givin tick.
*diffusion-out-rate: countrols the likelihood that a theophylline will leave a cell when it is located at the membrane.
*diffusion-in-rate: controls the likelyihood that a theophylline will leave a cell when it is located at the membrane.
*initial-amount-makers: sets the amount of makers to be created at setup *initial-amount-moochers: sets the amount of moocher cells to be created at setup *initial-lifespan: sets the lifespan of the E. coli cells at setup *initial-energy: sets the energy of E. coli cells at setup *initial-theophylline: set teh amount ot theophylline to be created at setup *reproduction-energy-thresholds: the threshold of energy that a cell must have before it reproduces. *reproduction-downtimes: the amount of ticks in between reproduction cycles of a cell.
THINGS TO NOTICE
notice graph (plot) over time. Change the sliders and see who will win
THINGS TO TRY
Does changing permeability of membrane help the makers or moochers?
Does starting out with more makers hurt or help the moochers? who is dependent on who?
Can you create a balance (equilibrium) of cell?
EXTENDING THE MODEL
**Give theophylline a faster movement outside of the cell. This will be more realistic and simulate a cellular environment better.
NETLOGO FEATURES
Uses a "membrane" to determine when the theophylline is about to pass through. Uses the cone radius feature of netlogo to determine whether theophylline is entering or leaving a cell.
RELATED MODELS
This model is an independent model. It was created during the summer of 2013 at Davidson College for the Synthetic Biology Summer Research Team.
CREDITS AND REFERENCES
http://modelingcommons.org/browse/one_model/3772 http://gcat.davidson.edu http://www.bio.davidson.edu
Thanks to Dr. Laurie Heyer and Dr. Malcolm Campbell for their guidance. Also thanks to my whole team both at Davidson and Missouri Western for their support and help. Special thanks to Jackson Spell, who has provided countless suggestions and guidance to me during this project. Thanks to Uri Wilensky and his team at Northwestern for creating NetLogo and providing it to the public.
Comments and Questions
;********************************************* ;Author: Micah Brown ;Model: Maker/Moocher Cells ;********************************************* breed [ cells cell ] breed [ theo theophylline-molecule ] turtles-own [ energy lifespan time-since-reproduction ] ;SETUP to setup ca setup-background setup-turtles ;turtles set up in random location, ensuring no overlaps. reset-ticks end to setup-background ask patches [ set pcolor white ] end ;------------------------------ to setup-turtles set-default-shape cells "circle 2" set-default-shape theo "lightning" create-cells (initial-amount-makers + initial-amount-moochers) [ set color black setxy random-xcor random-ycor set size 10 ifelse who < initial-amount-makers [set color red set time-since-reproduction random maker-reproduction-downtime] [set color cyan set time-since-reproduction random moocher-reproduction-downtime] set energy initial-energy set lifespan initial-lifespan ] ;overlaps handled by killing overlaping cell :/ ask turtles [ if (count turtles in-radius (size + 1) > 1) [ die ] ] create-theo initial-theophylline [ set color black setxy random-xcor random-ycor set size 3 set lifespan initial-lifespan / ( 2 / 3 ) ] end ;------------------------------ to go ;stops when everyone has died if (count cells = 0) [stop] move-turtles degredation reproduce tick end ;------------------------------ to move-turtles ask theo [ let nearest-cell min-one-of other cells [distance myself] let nearest-cell-distance distance nearest-cell ;test whether theophylline is in "membrane" 4if ( nearest-cell-distance <= 6 ) and ( nearest-cell-distance) >= 4 [ ifelse count cells in-cone 6.0 180 < 1 [if random-float 1 > probability-diffusion-out ;if facing (and moving) away from cell [ face nearest-cell fd 2 ] ] [if random-float 1 > probability-diffusion-in ;else must be facing (and moving) towards a cell [ face nearest-cell set heading heading + 180 fd 1.5 ] ] ] random-movement-theo set lifespan lifespan - 1 ] ask cells [ random-movement-cell if count cells in-radius 10.1 > 1 [ ;ensures cells don't "overlap" rt 180 fd 1 ] if color = red [ ;only makers produce theophylline if random-float 1 <= theo-production / 2 [ hatch-theo 1 [ set size 3 set color black set lifespan initial-lifespan / ( 2 / 3) ;we give theophylline a lifespan equal to (1.5) of a cell's. setxy ( xcor + (random-float (4 * sqrt 2) ) - (2 * sqrt 2) ) (ycor + (random-float (4 * sqrt 2) ) - (2 * sqrt 2) ) ] ] ] if count theo in-radius 6 > 0 [ set energy energy + log ( count theo in-radius 6 ) 2 + 1 ] ;energy gained from having theophylline is scaled logarithmically if energy >= 100 [ ;maximum energy is 100 set energy 100 ] set energy energy - .5 set lifespan lifespan - 1 set time-since-reproduction time-since-reproduction + 1 ] end ;-------------------------------------- to degredation ask cells [ if energy <= 0 [ if random 10 = 1 [die] ;randomness gives more variation ] ] ask turtles [ if lifespan <= 0 [ if random 10 = 1 [die] ] ] end ;----------------------------- ;local randomness preserved in order to have theophylline inside of cell move the same way the cell moves. to random-movement-cell with-local-randomness [ ifelse random 2 = 1 [right random 30 forward .5] [right random -30 forward .5] ] ask other theo in-radius 6 [ ; moves its theophylline contained in cell in the same direction that it just moved ifelse random 2 = 1 [right random 30 forward .5] [right random -30 forward .5]] end ;------------------------------ to random-movement-theo ifelse random 2 = 1 [right random 30 forward 1 ] [right random -30 forward 1 ] end ;-------------------------------- to reproduce ;this is an approximate for how many cells will fit into the space given the coordinates that the user sets. let carrying-capacity (max-pxcor * max-pxcor) / 50 if (count cells > carrying-capacity) [ stop ] ask cells [ if ( (color = red) and (energy >= maker-reproduction-energy-threshold) and time-since-reproduction >= maker-reproduction-downtime ) or ( (color = cyan) and (energy >= moocher-reproduction-energy-threshold) and (time-since-reproduction >= moocher-reproduction-downtime ) ) [ set time-since-reproduction 0 let child-color color let half-energy energy / 2 set energy half-energy let num-theo count theo in-radius 6 ;kills half of the theophylline in the cell (but "adds" them to the new cell, later) repeat num-theo * 0.5 [ ask one-of theo in-radius 6 [die] ] hatch-cells 1 [ set color child-color set lifespan initial-lifespan set energy half-energy set time-since-reproduction 0 while [count cells in-radius (size + 1) > 1] [ ;attempts to set child cell close to parent cell setxy xcor + ((random count cells) - (count cells) / 2 ) ycor + ((random count cells) - (count cells) / 2 ) ] hatch-theo ( num-theo / 2 ) [ set size 3 set color black ] ] ] ] end ;-----------------------------------
There are 7 versions of this model.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.