01-macro.mdl 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /****************************************************************************
  2. * Test 01: Simple volume macromolecules.
  3. *
  4. * This case is simple enough that it may be solved analytically. When I
  5. * was originally working on the macromolecules, I compared against the
  6. * analytically derived solution.
  7. *
  8. * An analyically derived solution is:
  9. * d_0 ~31.1
  10. * d_1 ~30.0
  11. * d_2 ~28.9
  12. *
  13. * where d_0 is the number of dimer partners in the doubly-unbound state,
  14. * d_1 is the number in the singly-bound state, and d_2 is the number in the
  15. * doubly-bound state. The counts below relate in the following way:
  16. *
  17. * 00 -> 2*d_0 (number of subunits in doubly unbound dimer pairs)
  18. * 01 -> d_1 (number of bound subunits with unbound partners)
  19. * 10 -> d_1 (number of unbound subunits with bound partners)
  20. * 11 -> 2*d_2 (number of subunits in doubly bound dimer pairs)
  21. * us -> 2*d_0+d_1 (number of unbound subunits)
  22. * bs -> 2*d_2+d_1 (number of unbound subunits)
  23. * cam -> 800 - 2*d_2 - d_1 (number of free Cam)
  24. *
  25. * 01 and 10 should be in agreement at all times.
  26. *
  27. * Author: Jed Wing <[email protected]>
  28. * Date: 2008-04-04
  29. ****************************************************************************/
  30. basename = "01-macro"
  31. countdir = "dat/" & basename & "/"
  32. vizdir = "./viz_dat/" & basename & "/"
  33. sprintf(seed, "%04g", SEED)
  34. dt = 1e-6
  35. iterations=200000
  36. INCLUDE_FILE="parameters.mdl"
  37. TIME_STEP = dt
  38. ITERATIONS = iterations
  39. GRID_DENSITY = 15000
  40. ACCURATE_3D_REACTIONS = FALSE
  41. PARTITION_X = [[-box_size/2 - 0.0001 TO box_size/2 + 0.0001 STEP partition_size]]
  42. PARTITION_Y = [[-box_size/2 - 0.0001 TO box_size/2 + 0.0001 STEP partition_size]]
  43. PARTITION_Z = [[-box_size/2 - 0.0001 TO box_size/2 + 0.0001 STEP partition_size]]
  44. MEMORY_PARTITION_X = mem_partition_size
  45. MEMORY_PARTITION_Y = mem_partition_size
  46. MEMORY_PARTITION_Z = mem_partition_size
  47. DEFINE_MOLECULES {
  48. camkii_subunit { DIFFUSION_CONSTANT_3D = 0 }
  49. camkii_subunitB { DIFFUSION_CONSTANT_3D = 0 }
  50. cam { DIFFUSION_CONSTANT_3D = cam_diffusion }
  51. }
  52. DEFINE_COMPLEX_MOLECULE camkii {
  53. NUMBER_OF_SUBUNITS = [2, 6]
  54. SUBUNIT[1:2, 1:6] = camkii_subunit
  55. SHAPE {
  56. SUBUNIT[1, 1] = [-.10, .0000, .05]
  57. SUBUNIT[1, 2] = [-.05, .0866, .05]
  58. SUBUNIT[1, 3] = [ .05, .0866, .05]
  59. SUBUNIT[1, 4] = [ .10, .0000, .05]
  60. SUBUNIT[1, 5] = [ .05, -.0866, .05]
  61. SUBUNIT[1, 6] = [-.05, -.0866, .05]
  62. SUBUNIT[2, 1] = [-.10, .0000, -.05]
  63. SUBUNIT[2, 2] = [-.05, .0866, -.05]
  64. SUBUNIT[2, 3] = [ .05, .0866, -.05]
  65. SUBUNIT[2, 4] = [ .10, .0000, -.05]
  66. SUBUNIT[2, 5] = [ .05, -.0866, -.05]
  67. SUBUNIT[2, 6] = [-.05, -.0866, -.05]
  68. }
  69. SUBUNIT_RELATIONSHIPS {
  70. ring_negative = [ 0, -1]
  71. ring_positive = [ 0, +1]
  72. dimer_partner = [+1, 0]
  73. }
  74. RATE_RULES {
  75. coop_binding_rate {
  76. dimer_partner != camkii_subunit : fw_rate * TMP_spec_F
  77. DEFAULT : fw_rate
  78. }
  79. coop_unbinding_rate {
  80. dimer_partner != camkii_subunit : bw_rate * TMP_spec_B
  81. DEFAULT : bw_rate
  82. }
  83. }
  84. }
  85. DEFINE_REACTIONS {
  86. (camkii_subunit) + cam <-> (camkii_subunitB) [> COMPLEX_RATE camkii coop_binding_rate,
  87. < COMPLEX_RATE camkii coop_unbinding_rate]
  88. }
  89. mainbox OBJECT {
  90. b BOX {
  91. CORNERS = [ -box_size / 2, -box_size / 2, -box_size / 2 ], [ box_size / 2, box_size / 2, box_size / 2 ]
  92. }
  93. }
  94. INSTANTIATE world OBJECT
  95. {
  96. mainbox OBJECT mainbox {
  97. }
  98. rs1 RELEASE_SITE {
  99. SHAPE = world.mainbox.b[ALL]
  100. MOLECULE = camkii
  101. NUMBER_TO_RELEASE = num_complexes
  102. }
  103. rs2 RELEASE_SITE {
  104. SHAPE = world.mainbox.b[ALL]
  105. MOLECULE = cam
  106. NUMBER_TO_RELEASE = num_cam
  107. }
  108. }
  109. REACTION_DATA_OUTPUT
  110. {
  111. OUTPUT_BUFFER_SIZE = 1000
  112. STEP = 1e-5
  113. HEADER = "# "
  114. {
  115. COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner == camkii_subunit]}, WORLD] : "00",
  116. COUNT[SUBUNIT{camkii : camkii_subunit [dimer_partner != camkii_subunit]}, WORLD] : "01",
  117. COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner == camkii_subunit]}, WORLD] : "10",
  118. COUNT[SUBUNIT{camkii : camkii_subunitB [dimer_partner != camkii_subunit]}, WORLD] : "11",
  119. COUNT[camkii_subunit, WORLD] : "us",
  120. COUNT[camkii_subunitB, WORLD] : "bs",
  121. COUNT[cam, WORLD] : "cam"
  122. } => countdir & "counts.dat"
  123. }