Example 6 creates an antiporter which trades ligand L and ligand M across a membrane to the opposite side, showing that a ligand may bind at one pole and be released at another.
iteration=0 |
iteration=1000 |
iteration=2000 |
iteration=5000 |
iteration=10000 |
iteration=15000 |
file in_1
/* antiporter */
dt = 1.0e-6
TIME_STEP = dt
ITERATIONS = 1000
EFFECTOR_GRID_DENSITY = 10000
DEFINE_LIGAND L {
DIFFUSION_CONSTANT = 2.0e-6
}
DEFINE_LIGAND M {
DIFFUSION_CONSTANT = 2.0e-6
}
k1=1.0e8
k2=10000
k3=1.0e8
k4=10000
k5=10000
k6=10000
k7=10000
k8=10000
DEFINE_REACTION AntiPort {
P[>PL{k1:+L,POSITIVE_POLE}]
PL[>P{k2:-L,POSITIVE_POLE}][>PLM{k3:+M,NEGATIVE_POLE}]
PLM[>PL{k4:-M,NEGATIVE_POLE}][>PLM'{k5}]
PLM'[>PM'{k7:-L,NEGATIVE_POLE}][>PLM{k6}]
PM'[>P{k8:-M,POSITIVE_POLE}]
REFERENCE_STATE P {
L NUMBER_BOUND = 0
M NUMBER_BOUND = 0
}
}
L_release_site SPHERICAL_RELEASE_SITE {
LOCATION = [0,0,0.1]
LIGAND = L
NUMBER_TO_RELEASE = 1000
SITE_DIAMETER = 0.05
}
M_release_site SPHERICAL_RELEASE_SITE {
LOCATION = [0,0,-0.1]
LIGAND = M
NUMBER_TO_RELEASE = 1000
SITE_DIAMETER = 0.05
}
box_1 BOX {
CORNERS = [-0.1,-0.1,0], [0.1,0.1,0.2]
FULLY_CLOSED = YES
ADD_EFFECTOR {
STATE = AntiPort.P
DENSITY = 1000
ELEMENT = BOTTOM
POLE_ORIENTATION = POSITIVE_BACK
}
}
box_2 BOX {
CORNERS = [-0.1,-0.1,-0.2], [0.1,0.1,0]
FULLY_CLOSED = YES
REMOVE_ELEMENT = TOP
}
scale = 0.99
sampling_template BOX {
CORNERS = [-0.1,-0.1,-0.1], [0.1,0.1,0.1]
FULLY_CLOSED = YES
TRANSPARENT {LIGAND = L ELEMENT = ALL_ELEMENTS}
TRANSPARENT {LIGAND = M ELEMENT = ALL_ELEMENTS}
}
INSTANTIATE microdomain OBJECT {
m1 OBJECT L_release_site { }
m2 OBJECT M_release_site { }
outer_boxes OBJECT {
m3 OBJECT box_1 { }
m4 OBJECT box_2 { }
}
sampling_boxes OBJECT {
m5 OBJECT sampling_template {
SCALE = [scale,scale,scale]
TRANSLATE = [0,0,0.1]
}
m6 OBJECT sampling_template {
SCALE = [scale,scale,scale]
TRANSLATE = [0,0,-0.1]
}
}
}
VIZ_DATA_OUTPUT {
MODE = DX
STATE_VALUES {
L = 1
M = 2
AntiPort.P = 6
AntiPort.PL = 7
AntiPort.PLM = 8
AntiPort.PLM' = 9
AntiPort.PM' = 10
}
OBJECT_FILE_DESIGNATORS {
microdomain.outer_boxes = "outer_boxes"
microdomain.sampling_boxes = "sampling_boxes"
}
ITERATION_LIST = [[0 TO 30000 STEP 3000]]
}
REACTION_DATA_OUTPUT {
STEP = dt
{ COUNT[L,microdomain.sampling_boxes.m5,FOR_EACH_TIME_STEP] } => INPUT_FILE & ".top.L"
{ COUNT[L,microdomain.sampling_boxes.m6,FOR_EACH_TIME_STEP] } => INPUT_FILE & ".bottom.L"
{ COUNT[M,microdomain.sampling_boxes.m5,FOR_EACH_TIME_STEP] } => INPUT_FILE & ".top.M"
{ COUNT[M,microdomain.sampling_boxes.m6,FOR_EACH_TIME_STEP] } => INPUT_FILE & ".bottom.M"
}