A short program that allows the simulation of the MinD/MinE waves

 

DEFINT I

' Model for the simulations FtsZ, MinD and MinE interactions.

' see also: H.Meinhardt: "Algorithmic beauty of sea shells"

' (Springer Verlag) (c) H.Meinhardt, Tübingen, Germany

' Program is written in BASIC for DOS. Best compiler is Power Basic; possible is

' also Microsoft QB 4.5, or QBX Professional Basic 7.1

' the interpreter QBASIC is also possible, but very slow.

DIM F(100), D(100), E(100) 'membrane bound F, D, E

DIM Fdif(100), Ddif(100), Edif(100) ' Diffusible f, d, e

DIM rhoF(100), rhoD(100), rhoE(100)'for production rates with fluctuations

RANDOMIZE TIMER ' Set random generator. By different fluctuations,

'initiation of simulation can be slightly different

KT = 450'Number of displays

KP = 800'number of iterations between the displays

'KT*KP = number of iterations in total

kx = 15'Total number of spatial elements

idx = 440 / kx' Pixelsper spatial element

'constants used (first letter(s) D=diffusion, mu=removal, kappa couplings

DD = .02: muD = .002: sigmaD = .05: muDE = .0004'MinD, bound

DDdif = .2: muDdif = 0: sigmaDdif = .004'MinD, diffusible

DE = .0004: muE = .0005: sigmaE = .1: kappaDE = .5'MinE, bound

DEdif = .2: muEdif = .0002: sigmaEdif = .002'MinE, diffusible

DF = .002: muF = .004: sigmaF = .1: muFD = .002'FtsZ, non-diffusible

DFdif = .2: muFdif = .002: sigmaFdif = .006'FtsZ, diffusible

start:

REM ----------- Initial condition--------------------------

FOR I = 1 TO kx'Kx= Number of spatial elements

F(I) = 1: D(I) = 1: E(I) = 1'all zero

Fdif(I) = 1: Ddif(I) = 1: Edif(I) = 1

rhoF(I) = muF * (.995 + .01 * RND)'Fluctuation of the autocatalysis

rhoD(I) = muD * (.995 + .01 * RND)

rhoE(I) = muE * (.995 + .01 * RND)

NEXT I

SCREEN 12: WINDOW (1, 1)-(640, 480)' Setting graphic display

LINE (1, 1)-(640, 480), 15, BF'Plott' first white background

GOSUB plot

LOCATE 30, 1: PRINT " Initial concentration: homogenous(except 1% random fluctuation)";

t1 = TIMER: DO UNTIL TIMER - t1 3: LOOP

LOCATE 30, 1: PRINT " MinD = green, MinE = red, FtsZ = blue-- any key = stop";

continuo:

FOR ITOT = 0 TO KT'outer loop for iteration

FOR iprint = 1 TO KP' after finishing this loop: display

'Boundary impermeable, virtual left (Fleft etc.) and right [F(kx+1) etc.]

'cell with the same concentration--no diffusion

Fleft = F(1): Dleft = D(1): Eleft = E(1)

Fdifleft = Fdif(1): Ddifleft = Ddif(1): Edifleft = Edif(1)

F(kx + 1) = F(kx): D(kx + 1) = D(kx): E(kx + 1) = E(kx)

Fdif(kx + 1) = Fdif(kx): Ddif(kx + 1) = Ddif(kx): Edif(kx + 1) = Edif(kx)

REM ---------- Reactions------

FOR I = 1 TO kx' i = actual cell, local concentration are saved

Flocal = F(I): Dlocal = D(I): Elocal = E(I)

Fdiflocal = Fdif(I): Ddiflocal = Ddif(I): Ediflocal = Edif(I)'

' 1. Calculating FtsZ (=F) and diffus. FtsZ (=Fdif)

prodF = rhoF(I) * Fdiflocal * (Flocal * Flocal + sigmaF)

F(I) = prodF + Flocal * (1 - muF - muFD * Dlocal) + DF * (Fleft + F(I + 1) - 2 * Flocal)

Fdif(I) = Fdiflocal * (1 - muFdif) + sigmaFdif - prodF + DFdif * (Fdifleft + Fdif(I + 1) - 2 * Fdiflocal)

Fleft = Flocal: Fdifleft = Fdiflocal'present concentration -

'LOCATE 1, 1: PRINT F(i); Fdif(i)'left-cell concentraton when calculating next cell

' 2. Calculating MinD (=D) and diffus. MinD (=Ddif)

prodD = rhoD(I) * Ddiflocal * (Dlocal * Dlocal + sigmaD)

D(I) = prodD + Dlocal * (1 - muD - muDE * Elocal) + DD * (Dleft + D(I + 1) - 2 * Dlocal)

Ddif(I) = Ddiflocal * (1 - muDdif) + sigmaDdif - prodD + DDdif * (Ddifleft + Ddif(I + 1) - 2 * Ddiflocal)

Dleft = Dlocal: Ddifleft = Ddiflocal' present concentration-left-cell concentration

' 3. Calculating MinE (=E) and diffus. MinE (=Edif)

prodE = rhoE(I) * Ediflocal * Dlocal / (1 + kappaED * Dlocal * Dlocal) * (Elocal * Elocal + sigmaE) / (1 + kappaE * Elocal * Elocal)

E(I) = prodE + E(I) * (1 - muE) + DE * (Eleft + E(I + 1) - 2 * Elocal)

Edif(I) = Ediflocal * (1 - muEdif) + sigmaEdif - prodE + DEdif * (Edifleft + Edif(I + 1) - 2 * Ediflocal)

Eleft = Elocal: Edifleft = Ediflocal' present concentration-left-cell concentration

NEXT I

NEXT iprint

GOSUB plot

IF INKEY$ "" THEN EXIT FOR

NEXT ITOT

LOCATE 30, 1:PRINT "c = continue; s = a new start, all other keys = End(c) H.Meinhardt";

DO: a$ = INKEY$: IF a$ "" THEN EXIT DO

LOOP

IF a$ = "c" GOTO continuo

IF a$ = "s" GOTO start

END

plot:

LINE (100, 45)-(540, 50), 1, BF'Plott' first black baseline

FplotD = 50: FplotE = 20: FplotF = 40'scaling plott

ix1 = 100

FOR I = 1 TO kx

ix2 = ix1 + idx

LINE (ix1, 51)-(ix2, 51 + FplotF * F(I)), 1, BF'Blue bar for FtsZ

LINE (ix1, 51)-(ix2, 51 + FplotE * E(I)), 12, BF'MinE= red

LINE (ix1, 51)-(ix2, 51 + FplotD * D(I)), 2, BF'MinD= green

LINE (ix1, 51 + FplotF * F(I))-(ix2, 49 + FplotF * F(I)), 1, BF'a bar for hidden F 

LINE (ix1, 51 + FplotE * E(I))-(ix2, 49 + FplotE * E(I)), 12, BF'a bar for hidden E 

Fmax = 51 + FplotF * F(I)

IF 51 + FplotD * D(I) Fmax THEN Fmax = 51 + FplotD * D(I)

IF 51 + FplotE * E(I) Fmax THEN Fmax = 51 + FplotE * E(I)

LINE (ix1, 480)-(ix2, Fmax), 15, BF'top white = erase previous plot

ix1 = ix2

NEXT I

RETURN