/* visualization_output.mdl" */ /* This MDL statement block specifies the content, format, and timing of simulation data to be output for 3-D visualization. */ VIZ_DATA_OUTPUT { MODE = DX /* 3-D rendering requires use of an external rendering software package, and is a complex issue in and of itself. The choice of MODE here primarily determines the format of the output data, aimed at a particular choice of rendering software (see book Chapter 4, note 6 for rendering software URLs). At present the choices include: DX (IBM DataExplorer), RENDERMAN (Pixar RenderMan or Blue Moon Rendering Tools), IRIT, RAYSHADE, or POVRAY. The preferred format (from an MCell perspective) is DX because: (1) the output data can be organized hierarchically, similar to the way that the MCell objects are organized; (2) the output data can be much more compact than for the other choices; (3) DX is actually a high-dimensional data analysis and manipulation tool in addition to a renderer. It has a graphical user interface that is a powerful visual programming environment, and can be extremely useful for designing and modifying MCell structures. */ STATE_VALUES { /* These are arbitrary values that are assigned to surfaces and molecules. If output for rendering purposes, they can be used to assign colors and other surface properties, and/or to selectively render only a subset of the data. Particular physical objects instantiated within a metaobject hierarchy can be selected by a top-down list of object names separated by periods. If the last (lower_most) named object is itself a metaobject, all of its own subobjects are included in the MDL operation. */ nmj.nerve_layer = 1 nmj.lamina_layer = 2 nmj.muscle_layer.top = 3 nmj.muscle_layer.middle = 4 nmj.muscle_layer.bottom = 5 nmj.sampling_boxes = 6 /* All 5 subobjects (boxes) that are part of "nmj.sampling_boxes" will be included and will receive a value of 6." */ AChR.R0 = 1 /* Names for molecules defined implicitly by reaction mechanism states are used as described in the ADD_EFFECTOR block in "nerve_membrane.mdl". */ AChR.AR1 = 2 AChR.AR2 = 2 /* Since the two single-bound AChR states are statistically identical in this example, they are given the same state value. */ AChR.A2R3 = 3 AChR.A2R4 = 4 AChE.E = 5 AChE.AE = 6 AChE.AcE = 7 AChE.AAcE = 8 ChR.R0 = 9 ChR.AR1 = 10 ChR.AR2 = 11 ACh = 12 /* Explicitly defined molecule name (DEFINE_LIGAND block in "rat_nmj.main.mdl"). */ Ch = 13 } /* Visualization output data is written into different files containing surface and molecule positions and states, and these sets of files must be output for each desired time-step iteration. To organize the output files according to the MCell objects that they contain, different objects can be assigned different prefixes for the associated sets of visualization output file names. */ MOLECULE_FILE_PREFIX = "viz" /* All output files for molecules that are not effector sites will have the prefix "viz". */ OBJECT_FILE_PREFIXES { nmj = "viz" /* All surfaces and effector sites included in "nmj" (which in this example includes all instantiated objects) will be output to data files that have the prefix "viz". For DX rendering this method is efficient and convenient. For other rendering modes, it is generally desirable to subdivide the objects, e.g.: nmj.nerve_layer = "viz.nerve" nmj.lamina_layer = "viz.basal_lamina" nmj.muscle_layer.top = "viz.postsynaptic.top" nmj.muscle_layer.middle = "viz.postsynaptic.middle" nmj.muscle_layer.bottom = "viz.postsynaptic.bottom" nmj.sampling_boxes = "viz.sampling_boxes" */ } /* For the most part, surface and effector site positions do not change during a simulation, and therefore do not need to be output repeatedly for imaging purposes. It is also generally true that changing molecule positions and states only need to be visualized for a subset of simulation time-step iterations. A snapshot of the simulation at the end of one particular iteration constitutes one frame of an animation, and the following statement block specifies what visualization data should be output for one or more iteration frames. */ ITERATION_FRAME_DATA { SURFACE_POSITIONS = [0] /* Output surface position data files only after iteration 0, i.e., after surfaces and molecules are initialized but before any movements or transitions occur. */ SURFACE_STATES = [0] /* Output surface states data files only after iteration 0. */ EFFECTOR_POSITIONS = [0] /* Output effector site position data files only after iteration 0. */ EFFECTOR_STATES = [0,[2 TO 598 STEP 2],[600 TO 2600 STEP 100],5000,10000,14000] /* Output effector states into data files after each of the listed iteration numbers. */ LIGAND_POSITIONS = [0,[2 TO 598 STEP 2],[600 TO 2600 STEP 100],5000,10000,14000] /* Output positions of molecules into data files after each of the listed iteration numbers. */ LIGAND_STATES = [0,[2 TO 598 STEP 2],[600 TO 2600 STEP 100],5000,10000,14000] /* Output states of molecules into data files after each of the listed iteration numbers. */ } /* A shortcut to output of all position and state data (very inefficient for large simulation structures) can be used in place of ITERATION_FRAME_DATA, e.g.: ITERATION_LIST = [0,[2 TO 598 STEP 2],[600 TO 2600 STEP 100],5000,10000,14000] */ }