Example 4 introduces the simulation of reaction sites through the use of effectors. This setup simulates single binding events on a grid of effectors located on the bottom of a cube.
file in_1
/* ligand_sampling */
INCLUDE_FILE = "run_parameters"
INCLUDE_FILE = ligand_parameters
TIME_STEP = dt
ITERATIONS = iterations
PARTITION_X = [-1.051,-0.935,-0.7,-0.35,-0.052,0.052,0.35,0.7,0.935,1.051]
DEFINE_LIGAND red_ligand {DIFFUSION_CONSTANT = red_ligand_diffusion_constant}
DEFINE_LIGAND blue_ligand {DIFFUSION_CONSTANT = blue_ligand_diffusion_constant}
offset = 0.05
origin_box BOX {
CORNERS = [-offset,-offset,-offset], [offset,offset,offset]
FULLY_CLOSED = YES
TRANSPARENT {
LIGAND = red_ligand
ELEMENT = ALL_ELEMENTS
}
TRANSPARENT {
LIGAND = blue_ligand
ELEMENT = ALL_ELEMENTS
}
}
translated_origin_boxes OBJECT {
member_1 OBJECT origin_box {
TRANSLATE = [1.0,0,0]
}
member_2 OBJECT origin_box {
TRANSLATE = [1.0,0,0]
ROTATE = [0,0,1], 90
}
}
ring_of_boxes OBJECT {
member_1 OBJECT translated_origin_boxes {}
member_2 OBJECT translated_origin_boxes {
ROTATE = [1,1,0], 45
}
member_3 OBJECT translated_origin_boxes {
ROTATE = [1,1,0], 90
}
member_4 OBJECT translated_origin_boxes {
ROTATE = [1,1,0], 135
}
}
INSTANTIATE microdomain OBJECT {
far_ring_of_boxes OBJECT ring_of_boxes {}
near_ring_of_boxes OBJECT ring_of_boxes {
TRANSLATE = [-1,-1,0]
}
red_ligand_release_site SPHERICAL_RELEASE_SITE {
LOCATION = red_location
LIGAND = red_ligand
NUMBER_TO_RELEASE = number_of_ligand_molecules
SITE_DIAMETER = release_site_diameter
}
blue_ligand_release_site SPHERICAL_RELEASE_SITE {
LOCATION = blue_location
LIGAND = blue_ligand
NUMBER_TO_RELEASE = number_of_ligand_molecules
SITE_DIAMETER = release_site_diameter
}
}
/*
VIZ_DATA_OUTPUT {
MODE = DX
STATE_VALUES {red_ligand = 1 blue_ligand = 2
microdomain.far_ring_of_boxes = 1
microdomain.near_ring_of_boxes = 2
}
OBJECT_FILE_DESIGNATORS {microdomain = viz_output_file & ".microdomain"}
ITERATION_LIST = [[0 TO 360 STEP 1]]
}
*/
REACTION_DATA_OUTPUT {
STEP = 1*dt
{COUNT[red_ligand,microdomain.far_ring_of_boxes,FOR_EACH_TIME_STEP] +
COUNT[red_ligand,microdomain.near_ring_of_boxes,FOR_EACH_TIME_STEP]} =>
INPUT_FILE & ".red_ligand"
{COUNT[blue_ligand,microdomain.near_ring_of_boxes,FOR_EACH_TIME_STEP]} = >
INPUT_FILE & ".blue_ligand.near"
{COUNT[blue_ligand,microdomain.far_ring_of_boxes,FOR_EACH_TIME_STEP]} =>
INPUT_FILE & ".blue_ligand.far"
}
file in_2
/* single_binding_2 */
dt = 1.0e-6
chkpt_it = 2000
TIME_STEP = dt
ITERATIONS = 50000
EFFECTOR_GRID_DENSITY = 10000
CHECKPOINT_INFILE = "chkpt"
CHECKPOINT_OUTFILE = "chkpt"
CHECKPOINT_ITERATIONS = chkpt_it
DEFINE_LIGAND ACh {
DIFFUSION_CONSTANT = 2.1e-6
}
DEFINE_REACTION AChR {
R[>AR{10.0e7:+ACh,POSITIVE_POLE}]
AR[>R{10000.0:-ACh,POSITIVE_POLE}]
REFERENCE_STATE R {
ACh NUMBER_BOUND = 0
}
}
ACh_release_site SPHERICAL_RELEASE_SITE {
LOCATION = [0,0,0]
LIGAND = ACh
NUMBER_TO_RELEASE = 57
SITE_DIAMETER = 0.0
}
box_1 BOX {
CORNERS = [-0.1,-0.1,-0.1], [0.1,0.1,0.1]
FULLY_CLOSED = YES
ADD_EFFECTOR {
STATE = AChR.R
DENSITY = 8935
ELEMENT = BOTTOM
POLE_ORIENTATION = POSITIVE_BACK
}
ADD_EFFECTOR {
STATE = AChR.AR
DENSITY = 1065
ELEMENT = BOTTOM
POLE_ORIENTATION = POSITIVE_BACK
}
}
INSTANTIATE microdomain OBJECT {
m1 OBJECT ACh_release_site { }
m2 OBJECT box_1 { }
}
/*
VIZ_DATA_OUTPUT {
MODE = DX
STATE_VALUES {
ACh = 1
AChR.R = 5
AChR.AR = 10
}
OBJECT_FILE_DESIGNATORS {
microdomain = "box"
}
ITERATION_LIST = [0,199,[200 TO 1999 STEP 100]]
}
*/
REACTION_DATA_OUTPUT {
STEP = 1.0*dt
{ COUNT[AChR.R,WORLD,FOR_EACH_TIME_STEP] } => INPUT_FILE & ".R"
{ COUNT[AChR.AR,WORLD,FOR_EACH_TIME_STEP] } => INPUT_FILE & ".AR"
{ COUNT[ACh,microdomain,FOR_EACH_TIME_STEP] } => INPUT_FILE & ".ACh"
}