grow Cellzilla2D Home

Description

grow is the main simulation wrapper for Cellzilla.

grow[DTissue, start, stop, options] is initialization mode, to start a new simulation

grow[options] is continuation mode, to pick up an old simulation where it left off. A pop up menu will ask you to click on the output folder of the original simulation.

Needs["Cellzilla2D`"];

Return Value

The name of the folder that contains the results of the simulations.

The results of the simulation are written to a collection of output files. A summary is written to the screen (notebook) after each cell division.

A new folder is created for each simuation. Simulations are written to the folder "Cellzilla" within the users home directory (i.e. ~/Cellzilla/). If this folder does not already exist it is created.

A subfolder "Simulations-todays-date" (i.e., ~/Cellzilla/Simulations-dd-mon-yy/) is also created each calendar day that the grow is run, if it does not already exist.

For each new simulation, a unique subfolder is created to house the results (e.g. ~/Cellzilla/Simulations-dd-mm-yy/testcase-ddmonyy-hhmm/) where "testcase" is the value of the option "testcase"->testcase (default value: "Growzilla"). Here dd (01-31), mon (JAN-DEC), yy (00-99) are the integer day of month, 3 character month, and two character year; and hh (00-23) and mm (00-59) are the integer hour and minute at which the simulation is invoked.

Files may add up to several gigabytes during a simulation. Typical files include:

  1. Tissues after each cell division describing the cell geometry
  2. Cellerator reaction network for each tissue.
  3. Initial conditions for each tissue
  4. Numerical solutions corresponding to (1) -> (3) until the next cell division is indicated.
  5. png snapshots at each cell division.
  6. Single notebooks consisting of lists of time spans; lists of run parameters; and cell lineages.

Simulations can be imported and visualized with SimAnimate

It is possible to begin a new simulation from scratch using the initial conditions and tissue output. This can be useful in case the system crashes for any reason such as memory overflow.

Options

Simulation Control

"walls"→False Set to True to include separate compartments for cell walls in growth simulations.
"Upwards"→False If set to True the dynamics are modified so that y' is always non-negative.
"MaxRadius"→Infinity In a typical simulation the modeller may want to allow cells to "drop over the side" of the simulation when they get further away from some central area. This parameter sets the distance, measured from the "Origin" beyond which cells are removed from the simulation to save computation time and memory.
"Origin"→{0,0} Referred to by other parameters.

Reactions

"Reactions"→{} List of Cellerator reactions to be indexed and repeated in each cell, for example,
"Reactions"->{{A->B,k1},{B->A,k2}}

expands to
{{A[1][t]->B[1][t],k1},{A[2]->B[2][t],k1} ..., {B[1][t]->A[1][t],k2},{B[2][t]->A[2][t],k2},k2},...}

The indices and the time-dependence should NOT be specified in the list of reactions.

However, if any rate constants depend on variables, the time dependence (in the rate constants only) MUST be specified, e.g., "Reactions"->{...,{A->B,k*Q[t]]},...} expands to include {A[i][t]->B[i][t],k*Q[i][t]} for each cell.

"WallReactions"→{} List of Cellerator reactions to include in wall compartments.
"Diffusion"→{} List of diffusing species and permeabilities. For unwalled tissues the format is
"Diffusion"->{{X,β1}, {X,β1}, ...} where each β is either a permeability constant or a pure function of three variables (cell number, cell number, edge number.) For Walled tissue, permeabilities into and out of the cell wall, as well as between wall components, are allowed to be different, and may be specified as
"Diffusion"->{{X,βout, βin, βwall}, ...}
"Intercellular"→{} List of Cellerator GRN reactions that specify the affect of constituent X[i] (e.g., in cell i) directly on constituent Y[j] (in cell j) without any particular mechanism specified. The cells must be neighbors. Only implemented in unwalled tissue.
"Pumps"→{} List of transport reactions (across cell boundary). Format is
"Pumps"->{{V1, f1out, f1in},{V2, f2out,f2in},...}
where each f is a function of three variables (cell number, cell number, wall number); the fout is the rate of transport out of the cell (with the first index) and the fin is the rate of transport into the cell. The rates of transport are as follows:
  transport in transport out
cell fin*E*A fout*E/A
edge fout*E/A fin*E/A
Note: "pump" is only implemented for walled tissue.
"BoundaryConditions"→{} Value of constituents in compartment zero (a single compartment, cell 0, encloses the entire outer boundary), e.g., "BoundaryConditions"->{A->0,B->1}. Used, e.g., for for diffusion.
"IC"→{} List of intial values for simulation in the form of Matheamtica rules, "IC"->{A[1]->val, A[2]->val,...}

Cell Division

"DivisionModel" "Errera" or "Potential". Disparaged. Use in Cellzilla arrow cell⟶cell + cell instead.
"DivisionThreshold" Mean value of division thresholds. Disparaged. Use in Cellzilla arrow cell⟶cell + cell instead.
"DivisionVariable"→cell Cell division is triggered when the division variable reaches a threshold. Typically, the division variable is area. At cell birth, each cell is assigned a threshold which is distributed normally with mean "DivisionThreshold" and standard deviation "DivisionSigma". Disparaged. Use in Cellzilla arrow cell⟶cell + cell instead.
"DivisionSigma" Standard deviation of division thresholds. Disparaged. Use in Cellzilla arrow cell⟶cell + cell instead.
"L1Anticlinal"→True Force anticlinal division in L1. Ignored unless "upwards"→True
"L2Anticlinal"→False Force anticlinal division in L2. Ignored unless "upwards"→True Anticlinal division will be forced unless the ratio of the eignevalues of the covariance of the vertices exceeds
"L2AnticlinalRatio"->GoldenRatio
"MinAngleSpread"→135 In the potential model, the end points of the new cell wall are required to be separated by a central angle δθ as measured from the cell center.
"Weights" Ignored unless "DivisionModel"→"Potential"
"IgnoreDivisionRadius" -> Infinity In a typical simulation the modeller may want to allow cells to "drop over the side" of the simulation when they get further away from some central area. This parameter sets the distance, measured from the "Origin" beyond which cell division is no longer performed, in order to save computational time and memory.
"MaxDivisions" -> Infinity Alternate stopping criterion - the simulation will terminate when the requested number of divisions have been reached, even if the stopping time has not yet been reached.

Growth Model

"Growing"→False; Flag to turn growth model on/off.
"mu"→μ Disparaged; use in Cellzilla Arrow cell⟶cell instead. Variable name for a non-indexed spring constant. If this version is used the value of the parameter μ should be set in "parameters"→{μ→value, ...}
"mu"->{μ, f[i,j,k]} Disparaged; use in Cellzilla Arrow cell⟶cell instead. Definition of indexed growth rate. First argument is variable name; second argument is a pure function of three arguments. The first two arguments are the two adjacent cell numbers, and the third argument is the edge number. The value of μ should NOT be set in parameters. Example:
"mu"->{μ,(A[#1][t]+B[#2][t])&}
"mumax"→1,
"mumin"→0,
"muMaxDegrees"→0
Parameter values for anisotropic growth rate model. Values are ignored unless "IsotropicGrowth"->False. Formula is:
((μmaxmin)Cos(θ-θmax)+μmin)
where θmax is the value of muMaxdegrees, and the total is modulated (multiplied) by the formula for the indexed variable if mu is indexed.
"IsotropicGrowth" → True By default all springs grow at a fixed rate proportional to their extension beyond the resting length. The constant of proportionality is the value of the parameter "mu". This constant can also be indexed, and/or it can be allowed to be angle dependent (but only of IsotropicGrowth→True). If μ is also an indexed variable, the indexed formula will be modulated by the angle-dependent formula determined by mumax,mumin,muMaxDegrees.
"muOuter"->False Special value of growth rate to use on outer boundary, unless set equal to False.
"muL1"->False Special value of growth rate to use on anticlinal walls of L1 Cells, unless set equal to False.
"muL1L2"->False Special value of growth rate to use on walls between L1 and L2 Cells, unless set equal to False.
"P"-> P Disparaged. Use in Cellzilla Arrow cell⟶cell instead. Variable name for constant (fixed) pressure in all cells. A value must be set in parameters.
"P"->{P, f[i]} Disparaged. Used in Cellzilla Arrow cell⟶cell instead. Pressure specification for indexed pressure. The first argument is the variable name, and the second argument is a pure function of one integer argument which is the cell index. If this option is used the value of pressure should not be set in parameters.

Spring Model

"Restlength"→resting Variable name to be used for dynamic resting length of springs. Each resting[i][t] is calcuated dynamically by the spring model.
"EdgeVariable"→ell Variable name to be used for dynamic length of cell wall. Each ell[i][t] is calcuated dynamically by the growth model and is the actual distance between the two vertices at a given time.
"k"→k Disparaged. Use in Cellzilla Arrow cell⟶cell instead. Variable name for a non-indexed spring constant. If this version is used the value of the spring constant should be set in "parameters"→{k→value, ...}
"k"->{k, f[i,j,k]} Disparaged. Use in Cellzilla Arrow cell⟶cell instead. Definition of indexed spring constant function. First argument is variable name; second argument is a pure function of three arguments. The first two arguments are the two adjacent cell numbers, and the third argument is the edge number. The value of k should NOT be set in parameters. Example:
"k"->{k,(A[#1][t]+B[#2][t])&}
"kmax"→1,
"kmin"→0,
"kMaxDegrees"→0
Parameter values for anisotropic spring constant model. Values are ignored unless "IsotropicSprings"->False. Formula is:
((kmax-kmin)Cos(θ-θmax)+kmin)
where θmax is the value of kMaxdegrees, and the total is modulated (multiplied) by the function for the indexed variable (if k is indexed).
"IsotropicSprings" → True By default all springs have a fixed (constant) spring constant; this can be modified either by setting the spring constant to be an indexed variable; or by using an angle-dependent variable. The angle dependent variable requires "IsotropicSprings"→False (The default is True) and then utilizes the values of the parameters kmax, kmin, kMaxDegrees. If k is also an indexed variable, the indexed formula will be modulated by the angle-dependent formula.

System Variables

"CellVariable"→cell Name of variable used to area of cell i. It will always be indexed and time dependent.
"EdgeVariable" Name of variable used to describe length of edge i. It will always be indexed and time dependent.
"k" Spring constant variable. See description under spring model. Disparaged. Use in Cellzilla arrow cell⟶cell instead.
"mu" Growth rate variable. See description under growth model. Disparaged. Use in Cellzilla arrow cell⟶cell instead.
"P" Pressure variable. See description under growth model. Disparaged. Use in Cellzilla arrow cell⟶cell instead.
"RestLength" Spring resting length variable. See description under spring model.
"x","y" Coordinate variables. The coordinates of vertex i are {x[i][t],y[i][t]]}
"center"->center center[j,1] and center[j,2] gives the x and y coordinates of the center of cell j.
"perimeter"->perimeter perim[j] gives the perimeter of cell j.
"tip"->tip tip[1],tip[2] give the x and y coordinates of the "tip", the vertex with the maximal y value. Intended for meristem-shaped simulations.
"tipDistance"->Tip Tip[j] give the distance from the tip to the center of cell j.
"TipFlag"->False TipFlag[i] is an indicator function (1/0=True/False) for the cells that contain the tip vertex. (turned off by setting the value to False)
"L1"->False, "L2"->False L1[i],L2[i] are indicator functions for the L1 and L2 layers; they are turned off by default (by setting the value equal to False)

Example

Download the following example as a zipped Mathematica notebook
Growth Movie - SimAnimate
View as mov instead
Lineage Movie - LineageAnimate
View as mov instead

Implementation Notes

A lot of output is typically produced; to reduce the amount of output, set the flag "Verbose"->False. In addition, many files (potentially several gigabytes) of files are written to disk after each cell division. Typical files include:

  1. Tissues after each cell division describing the cell geometry
  2. Cellerator reaction network for each tissue.
  3. Initial conditions for each tissue
  4. Numerical solutions corresponding to (1) -> (3) until the next cell division is indicated.
  5. png snapshots at each cell division.
  6. Single notebooks consisting of lists of time spans; lists of run parameters; and cell lineages.

Simulations can be imported and visualized with SimAnimate

It is possible to begin a new simulation from scratch using the initial conditions and tissue output. This can be useful in case the system crashes for any reason such as memory overflow.

See Also



[09.06.2017]