Tips and Tricks
Following are a set of tips are tricks which can be used to speed up and/or improve simulation performance, or to help with system design and debugging.
- Note that if crashes are occurring during fast-forward operation, this option should be set to "False" during simulation and then reset to "True" after the simulation is stopped.To speed up simulation, the menu option "View" -> "Update messages" can be unchecked (i.e. set to "False"). This option can also be toggled using the keyboard shortcut "m". When this option is set to "False", new messages are not displayed in the Messages window, and the Bead Sequence window is not updated to highlight the current location of bead transcription. Once the option is set back to "True", the Bead Sequence window is updated and the Message window is updated with all of the messages which were previously hidden.
- To more dramatically speed up simulation, the menu option "View" -> "Update display" can be unchecked (i.e. set to "False"). This option can also be toggled using the keyboard shortcut "d". When this option is set to "False", the Assembly window is not updated to draw new beads. Once it is re-enabled, the complete current assembly is drawn. Turning off display updates can make the simulation much faster, at the expense of not being able to watch intermediate assembly steps.
- If the system parameter "Lock without binding" is set to "False", it is possible for the floppy segment to increase its length at each subsequent step when it cannot form any bonds. (See System Parameters for more information.) As the floppy segment grows in length (usually > 9), it quickly becomes more time consuming for the simulator to test all possible configurations, which can cause the simulator to appear to 'hang' while it performs the large number of computations. The menu setting "Settings" -> "Set max floppy length" allows the user to set the maxiumum length that will be tested before the simulator automatically halts and displays a warning. The default value for this setting is 9.
- In order to automatically stop the simulation during fast-forward operation based on certain conditions, breakpoints can be set via the menu option "Control" -> "Breakpoints". A breakpoint can be set based on nondeterminism by using the keyword "NONDET". If the list of breakpoints contains "NONDET", then the simulator will stop fast-forwarding every time it completes a step which requires it to choose a configuration of beads nondeterministically. For each integer that is contained in the list (sorted from smallest to largest), the simulator will stop fast-forwarding the first time it completes a step which results in the assembly having at least that many beads.
- In the case of nondeterministic systems, during at least one simulation step, one configuration of the floppy segment must be randomly selected from a set of multiple configurations with equal binding potentials. Random number selection is done based on a pseudorandom number generator, which can be initialized with a "seed" value that dictates the sequence of pseudorandom numbers which it generates. If it is given two different seed values, it will generate different sequences. However, when it is given the same seed value, it generates the same sequence. By default, each time the simulator is opened, it chooses a seed value based on the current system time (which will effectively cause a random sequence of random numbes to be selected). However, whenever a user loads, reloads, or resets an oritatami system, a dialog box is presented to the user allowing for the seed value to be set manually. By default the seed is reset with that originally generated seed. This allows for the simulation of a nondeterministic system to be reset and occur multiple times, with the same "random" selections being made each time, making the simulation path reproducible for easier debugging. When different nondeterminstic choices and simulation paths are desired, the user can simply change the random seed value to any desired integer, or to -1 for the simulator to use the current system time.