123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- /****************************************************************************
- * 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 <[email protected]>
- * 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"
- }
|