/**************************************************************************** * Test 04: Surface macromolecule init by density/number. * * This test is to ensure that init_effectors properly handles surface * macromolecules. Most of the information is conveyed by the time 0 viz * output, but the forward reaction rate has been cranked up enough to see * from the reaction data also whether the molecules were placed. The * complexes are at the center of each face, the middle of each edge, and on * each corner of the box. The subunits should conform to the corners of * the box as appropriate. * * Note, in particular, that if the complexes (or resultant subunits) were * placed with incorrect orientation, we expect that close to 66% of the * dimer pairs will be in the doubly-bound state, 16% will be in the * singly-bound state, and 16% should perpetually be in the unbound state (1 * of the dimer pairs from each ring is intentionally placed with the wrong * orientation to react). * * Author: Jed Wing * Date: 2008-04-04 ****************************************************************************/ basename = "04-macro_surface_init" countdir = "dat/" & basename & "/" vizdir = "./viz_dat/" & basename & "/" sprintf(seed, "%04g", SEED) dt = 1e-6 iterations=1 INCLUDE_FILE="parameters.mdl" TIME_STEP = dt ITERATIONS = iterations EFFECTOR_GRID_DENSITY = 15000 ACCURATE_3D_REACTIONS = FALSE PARTITION_X = [[-0.5001 TO 0.50001 STEP 0.02]] PARTITION_Y = [[-0.5001 TO 0.50001 STEP 0.02]] PARTITION_Z = [[-0.5001 TO 0.50001 STEP 0.02]] 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 ] = camkii_subunit' SUBUNIT[2 , 1 ] = camkii_subunit, SUBUNIT[1:2, 2 ] = camkii_subunit, SUBUNIT[1:2, 3:6] = camkii_subunit' SHAPE { SUBUNIT[1, 1] = [-.11, .0000, 0] SUBUNIT[1, 2] = [-.06, .0866, 0] SUBUNIT[1, 3] = [ .06, .0866, 0] SUBUNIT[1, 4] = [ .11, .0000, 0] SUBUNIT[1, 5] = [ .06, -.0866, 0] SUBUNIT[1, 6] = [-.06, -.0866, 0] SUBUNIT[2, 1] = [-.09, .0000, 0] SUBUNIT[2, 2] = [-.04, .0866, 0] SUBUNIT[2, 3] = [ .04, .0866, 0] SUBUNIT[2, 4] = [ .09, .0000, 0] SUBUNIT[2, 5] = [ .04, -.0866, 0] SUBUNIT[2, 6] = [-.04, -.0866, 0] } SUBUNIT_RELATIONSHIPS { dimer_partner = [+1, 0] } RATE_RULES { } } DEFINE_SURFACE_CLASSES { class1 { MOLECULE_NUMBER { camkii' = 20 } } // Presently broken class2 { MOLECULE_DENSITY { camkii' = 200.0 } } // Presently broken class3 { MOLECULE_NUMBER { camkii; = 25 } } // Presently broken } mainbox OBJECT { b BOX { CORNERS = [ -0.5, -0.5, -0.5 ], [ 0.5, 0.5, 0.5 ] DEFINE_SURFACE_REGIONS { /* NOTE: TEMPORARILY COMMENTED class1, class2, and class3 below until a code will be fixed to allow complex molecules placement through SURFACE CLASSES */ top { ELEMENT_LIST = [TOP] /* SURFACE_CLASS = class1 */ } left { ELEMENT_LIST = [LEFT] /* SURFACE_CLASS = class2 */ } front { ELEMENT_LIST = [FRONT] /* SURFACE_CLASS = class3 */ } bottom { ELEMENT_LIST = [BOTTOM] MOLECULE_NUMBER { camkii, = 20 } } right { ELEMENT_LIST = [RIGHT] MOLECULE_NUMBER { camkii, = 200.0 } } back { ELEMENT_LIST = [BACK] MOLECULE_DENSITY { camkii; = 200.0 } } } } } INSTANTIATE world OBJECT { mainbox OBJECT mainbox { } rs2 RELEASE_SITE { SHAPE = world.mainbox.b[ALL] MOLECULE = cam NUMBER_TO_RELEASE = num_cam } } REACTION_DATA_OUTPUT { OUTPUT_BUFFER_SIZE = 1000 ITERATION_LIST=[0] HEADER = "# " { COUNT[camkii, WORLD] : "complexes", COUNT[camkii_subunit, WORLD] : "subunits", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit']}, WORLD] : "00", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit,]}, WORLD] : "01", COUNT[SUBUNIT{camkii : camkii_subunit, [dimer_partner == camkii_subunit,]}, WORLD] : "11", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit']}, world.mainbox.b[top]] : "00t", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit,]}, world.mainbox.b[top]] : "01t", COUNT[SUBUNIT{camkii : camkii_subunit, [dimer_partner == camkii_subunit,]}, world.mainbox.b[top]] : "11t", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit']}, world.mainbox.b[bottom]] : "00b", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit,]}, world.mainbox.b[bottom]] : "01b", COUNT[SUBUNIT{camkii : camkii_subunit, [dimer_partner == camkii_subunit,]}, world.mainbox.b[bottom]] : "11b", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit']}, world.mainbox.b[left]] : "00l", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit,]}, world.mainbox.b[left]] : "01l", COUNT[SUBUNIT{camkii : camkii_subunit, [dimer_partner == camkii_subunit,]}, world.mainbox.b[left]] : "11l", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit']}, world.mainbox.b[right]] : "00r", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit,]}, world.mainbox.b[right]] : "01r", COUNT[SUBUNIT{camkii : camkii_subunit, [dimer_partner == camkii_subunit,]}, world.mainbox.b[right]] : "11r", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit']}, world.mainbox.b[front]] : "00F", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit,]}, world.mainbox.b[front]] : "01F", COUNT[SUBUNIT{camkii : camkii_subunit, [dimer_partner == camkii_subunit,]}, world.mainbox.b[front]] : "11F", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit']}, world.mainbox.b[back]] : "00B", COUNT[SUBUNIT{camkii : camkii_subunit' [dimer_partner == camkii_subunit,]}, world.mainbox.b[back]] : "01B", COUNT[SUBUNIT{camkii : camkii_subunit, [dimer_partner == camkii_subunit,]}, world.mainbox.b[back]] : "11B" } => "counts.txt" }