/**************************************************************************** * Test 02: Simple surface macromolecules. * * This test is analogous to test #1, but using surface molecules. Counting * encompasses considerably more options for surface complexes, due to the * additional dimensions added by orientations. As a result, this includes * a much more comprehensive collection of counts than test #1. * * See test_macromols.py for a matrix giving the static constraints which * this simulation must obey. (For instance, the number of subunits in any * state must never differ from the number initially placed, regardless how * we sum over the states. This gives rise to quite a number of validity * constraints over the set of counts we produce here.) * * An equilibrium derived via a first order iterative "state machine" model * is: * * Subunits in doubly-unbound dimers: 15.5348 in each orientation combo * Subunits in singly-bound dimers: 14.9938 in each orientation combo * Subunits in doubly-bound dimers: 14.4715 in each orientation combo * * All equilibria in the test suite for this test may be derived from these * numbers. Note that the numbers for the doubly-bound or doubly-unbound * cases will appear to be roughly twice as large as those for the * singly-bound cases because the bound and unbound are counted as two * separate rules for the singly-bound case, whereas they are counted * together if the subunits in the dimer are both bound or both unbound. * * Author: Jed Wing * Date: 2008-04-04 ****************************************************************************/ basename = "02-macro_surface" countdir = "dat/" & basename & "/" vizdir = "./viz_dat/" & basename & "/" sprintf(seed, "%04g", SEED) dt = 1e-6 iterations=300000 INCLUDE_FILE="parameters.mdl" WARNINGS { LIFETIME_TOO_SHORT = IGNORED } TIME_STEP = dt ITERATIONS = iterations GRID_DENSITY = 15000 ACCURATE_3D_REACTIONS = FALSE PARTITION_X = [[-box_size/2 - 0.0001 TO box_size/2 + 0.0001 STEP partition_size]] PARTITION_Y = [[-box_size/2 - 0.0001 TO box_size/2 + 0.0001 STEP partition_size]] PARTITION_Z = [[-box_size/2 - 0.0001 TO box_size/2 + 0.0001 STEP partition_size]] MEMORY_PARTITION_X = mem_partition_size MEMORY_PARTITION_Y = mem_partition_size MEMORY_PARTITION_Z = mem_partition_size DEFINE_MOLECULES { camkii_subunit { DIFFUSION_CONSTANT_2D = 0 } camkii_subunitB { DIFFUSION_CONSTANT_2D = 0 } cam { DIFFUSION_CONSTANT_3D = cam_diffusion } } DEFINE_COMPLEX_MOLECULE camkii { NUMBER_OF_SUBUNITS = [2, 6] SUBUNIT[ 1, 1:6] = camkii_subunit' SUBUNIT[ 2, 1:6] = camkii_subunit, SHAPE { SUBUNIT[1, 1] = [-.10, .0000, 0] SUBUNIT[1, 2] = [-.05, .0866, 0] SUBUNIT[1, 3] = [ .05, .0866, 0] SUBUNIT[1, 4] = [ .10, .0000, 0] SUBUNIT[1, 5] = [ .05, -.0866, 0] SUBUNIT[1, 6] = [-.05, -.0866, 0] SUBUNIT[2, 1] = [-.10, .0000, 0] SUBUNIT[2, 2] = [-.05, .0866, 0] SUBUNIT[2, 3] = [ .05, .0866, 0] SUBUNIT[2, 4] = [ .10, .0000, 0] SUBUNIT[2, 5] = [ .05, -.0866, 0] SUBUNIT[2, 6] = [-.05, -.0866, 0] } SUBUNIT_RELATIONSHIPS { ring_negative = [ 0, -1] ring_positive = [ 0, +1] dimer_partner = [+1, 0] } RATE_RULES { coop_binding_rate { dimer_partner != camkii_subunit : fw_rate * TMP_spec_F DEFAULT : fw_rate } coop_unbinding_rate { dimer_partner != camkii_subunit : bw_rate * TMP_spec_B DEFAULT : bw_rate } } } DEFINE_SURFACE_CLASSES { trans_cam { TRANSPARENT = cam } } DEFINE_REACTIONS { (camkii_subunit') + cam' <-> (camkii_subunitB') [> COMPLEX_RATE camkii coop_binding_rate, < COMPLEX_RATE camkii coop_unbinding_rate] (camkii_subunit,) + cam' <-> (camkii_subunitB,) [> COMPLEX_RATE camkii coop_binding_rate, < COMPLEX_RATE camkii coop_unbinding_rate] (camkii_subunitB') -> (camkii_subunitB,) [> 1e3] } mainbox OBJECT { b BOX { CORNERS = [ -box_size / 2, -box_size / 2, -box_size / 2 ], [ box_size / 2, box_size / 2, box_size / 2 ] } inner BOX { CORNERS = [ -box_size / 3, -box_size / 3, -box_size / 3 ], [ box_size / 3, box_size / 3, box_size / 3 ] DEFINE_SURFACE_REGIONS { all { INCLUDE_ELEMENTS = [ ALL_ELEMENTS ] SURFACE_CLASS = trans_cam } } } } INSTANTIATE world OBJECT { mainbox OBJECT mainbox { } rs1 RELEASE_SITE { SHAPE = world.mainbox.inner[ALL] MOLECULE = camkii' NUMBER_TO_RELEASE = num_complexes } rs2 RELEASE_SITE { SHAPE = world.mainbox.b[ALL] MOLECULE = cam NUMBER_TO_RELEASE = num_cam } } REACTION_DATA_OUTPUT { OUTPUT_BUFFER_SIZE = 1000 STEP = 1e-5 HEADER = "# " /* 00 counts (non-inverted) */ { COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner==camkii_subunit ]}, WORLD] : "00xx", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner==camkii_subunit ]}, WORLD] : "00ux", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner==camkii_subunit ]}, WORLD] : "00dx", COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner==camkii_subunit ']}, WORLD] : "00xu", COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner==camkii_subunit ,]}, WORLD] : "00xd", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner==camkii_subunit ,]}, WORLD] : "00ud", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner==camkii_subunit ']}, WORLD] : "00du", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner==camkii_subunit ']}, WORLD] : "00uu", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner==camkii_subunit ,]}, WORLD] : "00dd", COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner!=camkii_subunitB ]}, WORLD] : "i00xx", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner!=camkii_subunitB ]}, WORLD] : "i00ux", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner!=camkii_subunitB ]}, WORLD] : "i00dx", COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner!=camkii_subunitB']}, WORLD] : "i00xu", COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner!=camkii_subunitB,]}, WORLD] : "i00xd", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner!=camkii_subunitB,]}, WORLD] : "i00ud", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner!=camkii_subunitB']}, WORLD] : "i00du", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner!=camkii_subunitB']}, WORLD] : "i00uu", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner!=camkii_subunitB,]}, WORLD] : "i00dd", COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner==camkii_subunitB ]}, WORLD] : "01xx", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner==camkii_subunitB ]}, WORLD] : "01ux", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner==camkii_subunitB ]}, WORLD] : "01dx", COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner==camkii_subunitB']}, WORLD] : "01xu", COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner==camkii_subunitB,]}, WORLD] : "01xd", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner==camkii_subunitB,]}, WORLD] : "01ud", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner==camkii_subunitB']}, WORLD] : "01du", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner==camkii_subunitB']}, WORLD] : "01uu", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner==camkii_subunitB,]}, WORLD] : "01dd", COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner!=camkii_subunit ]}, WORLD] : "i01xx", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner!=camkii_subunit ]}, WORLD] : "i01ux", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner!=camkii_subunit ]}, WORLD] : "i01dx", COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner!=camkii_subunit ']}, WORLD] : "i01xu", COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner!=camkii_subunit ,]}, WORLD] : "i01xd", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner!=camkii_subunit ,]}, WORLD] : "i01ud", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner!=camkii_subunit ']}, WORLD] : "i01du", COUNT[SUBUNIT{camkii : camkii_subunit '[dimer_partner!=camkii_subunit ']}, WORLD] : "i01uu", COUNT[SUBUNIT{camkii : camkii_subunit ,[dimer_partner!=camkii_subunit ,]}, WORLD] : "i01dd", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner==camkii_subunit ]}, WORLD] : "10xx", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner==camkii_subunit ]}, WORLD] : "10ux", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner==camkii_subunit ]}, WORLD] : "10dx", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner==camkii_subunit ']}, WORLD] : "10xu", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner==camkii_subunit ,]}, WORLD] : "10xd", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner==camkii_subunit ,]}, WORLD] : "10ud", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner==camkii_subunit ']}, WORLD] : "10du", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner==camkii_subunit ']}, WORLD] : "10uu", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner==camkii_subunit ,]}, WORLD] : "10dd", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner!=camkii_subunitB ]}, WORLD] : "i10xx", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner!=camkii_subunitB ]}, WORLD] : "i10ux", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner!=camkii_subunitB ]}, WORLD] : "i10dx", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner!=camkii_subunitB']}, WORLD] : "i10xu", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner!=camkii_subunitB,]}, WORLD] : "i10xd", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner!=camkii_subunitB,]}, WORLD] : "i10ud", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner!=camkii_subunitB']}, WORLD] : "i10du", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner!=camkii_subunitB']}, WORLD] : "i10uu", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner!=camkii_subunitB,]}, WORLD] : "i10dd", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner==camkii_subunitB ]}, WORLD] : "11xx", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner==camkii_subunitB ]}, WORLD] : "11ux", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner==camkii_subunitB ]}, WORLD] : "11dx", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner==camkii_subunitB']}, WORLD] : "11xu", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner==camkii_subunitB,]}, WORLD] : "11xd", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner==camkii_subunitB,]}, WORLD] : "11ud", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner==camkii_subunitB']}, WORLD] : "11du", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner==camkii_subunitB']}, WORLD] : "11uu", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner==camkii_subunitB,]}, WORLD] : "11dd", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner!=camkii_subunit ]}, WORLD] : "i11xx", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner!=camkii_subunit ]}, WORLD] : "i11ux", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner!=camkii_subunit ]}, WORLD] : "i11dx", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner!=camkii_subunit ']}, WORLD] : "i11xu", COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner!=camkii_subunit ,]}, WORLD] : "i11xd", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner!=camkii_subunit ,]}, WORLD] : "i11ud", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner!=camkii_subunit ']}, WORLD] : "i11du", COUNT[SUBUNIT{camkii : camkii_subunitB'[dimer_partner!=camkii_subunit ']}, WORLD] : "i11uu", COUNT[SUBUNIT{camkii : camkii_subunitB,[dimer_partner!=camkii_subunit ,]}, WORLD] : "i11dd", COUNT[camkii_subunit, WORLD] : "Ux", COUNT["camkii_subunit,", world.mainbox.inner] : "Ud", COUNT["camkii_subunit'", world.mainbox.inner] : "Uu", COUNT[camkii_subunitB, WORLD] : "Bx", COUNT["camkii_subunitB,", world.mainbox.inner] : "Bd", COUNT["camkii_subunitB'", world.mainbox.inner] : "Bu", COUNT[cam, WORLD] : "cam" } => countdir & "counts.dat" }