https://dna.physics.ox.ac.uk/api.php?action=feedcontributions&user=Rovigattil&feedformat=atomOxDNA - User contributions [en]2024-03-29T00:44:20ZUser contributionsMediaWiki 1.39.6https://dna.physics.ox.ac.uk/index.php?title=Documentation&diff=1203Documentation2019-05-22T14:45:24Z<p>Rovigattil: /* Configuration file */</p>
<hr />
<div>==Compile options==<br />
<br />
Compiling oxDNA requires that you have a working <tt>cmake</tt> software and C++ compiler on your machine. The instructions are provided in the [[Download and Installation]] section.<br />
<br />
==Usage==<br />
<br />
<pre>oxDNA input_file</pre><br />
<br />
The input file contains all the relevant information for the program to run, such as what initial configuration to use, the topology of the system, how often to print the energies to a file, etc. Please make sure you read the [[Thermostat|thermostat]] page if you use molecular dynamics.<br />
<br />
==Input file==<br />
<br />
As always in UNIX environments, everything is case sensitive.<br />
<br />
*Options are in the form key = value<br />
*There can be arbitrary spaces before and after both key and value<br />
*Line with a leading # will be treated as comments<br />
*The | (pipe) sign is the separator between the different values that can be used to specify a value for the key.<br />
*Keys between [ and ] are optional, the value after the equal sign is the default value<br />
<br />
Here we provide a list of the most commonly used input options. The complete and most up-to-date list of possible options can be found [[Input_options|here]] or in the <tt>README</tt> file in the main directory of the simulation code.<br />
<br />
The input options of the previous oxDNA version can be found [[Input_options_of_the_previous_version|here]].<br />
<br />
===Generic options===<br />
The options listed here define the generic behavior of the entire program.<br />
;[interaction_type = DNA]: DNA|DNA2|RNA|patchy|LJ<br />
: (selects the model for the simulation. DNA ([[DNA_model_introduction|oxDNA model]]) is the default option. DNA2 ([[DNA_model_introduction#oxDNA2|oxDNA2 model]]), RNA ([[RNA_model_introduction|oxRNA model]]), LJ (Lennard-Jones) and patchy particles are also implemented<br />
;[sim_type=MD]: MD|MC|VMMC<br />
:MD = Molecular Dynamics, MC = Monte Carlo, VMMC = Virtual Move Monte Carlo<br />
;backend: CPU | CUDA <br />
: (only sim_type=MD is supported if you choose CUDA backend)<br />
;backend_precision: float|double|mixed<br />
: (mixed option is available only for CUDA backend. It is recommended choice for optimal performance on CUDA machines, double is recommended for CPU simulations)<br />
;[debug=0]: 0|1<br />
: 1 if you want verbose logs, 0 otherwise.<br />
<br />
===Simulation options===<br />
The options listed here specify the behaviour of the simulation.<br />
<br />
;steps: number of steps to be performed.<br />
<br />
;[restart_step_counter=0]: 0|1<br />
:0 means that the step counter will start from the value read in the configuration file; if 1, the step counter will be reset to 0. The total duration of the simulation is unchanged.<br />
<br />
;[seed=time(NULL)]: seed for the random number generator. On Unix systems, it will use by default a number from /dev/urandom + time(NULL)<br />
<br />
;T: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
:Examples:<br />
{|<br />
|-<br />
! Value<br />
! Simulation Units<br />
|-<br />
| 0.1<br />
| 0.1<br />
|-<br />
| 300 K<br />
| 0.1<br />
|-<br />
| 300k<br />
| 0.1<br />
|-<br />
| 26.85c<br />
| 0.1<br />
|-<br />
| 26.85 C <br />
| 0.1<br />
|-<br />
|}<br />
;[fix_diffusion=1]: 0|1<br />
:If true, particles that leave the simulation box are brought back in via periodic boundary conditions. Defaults to true. <br />
;verlet_skin: if a particle moves more than verlet_skin then the lists will be updated. Its name is somewhat misleading: the actual verlet skin is 2*verlet_skin.<br />
<br />
;[back_in_box=0]: 0|1<br />
whether particles should be brought back into the box when a configuration is printed or not, defaults to false<br />
<br />
;salt_concentration: used if interaction_type = DNA2. It specifies the salt concentration in M.<br />
<br />
;[use_average_seq=1]: 0|1<br />
: specifies whether to use the default hard-coded average parameters for base-pairing and stacking interaction strengths or not. If sequence dependence is to be used, set this to 0 and specify seq_dep_file.<br />
<br />
;[seq_dep_file]: specifies the file from which the sequence dependent parameters should be read. Mandatory if use_average_seq=no, ignored otherwise. A sample file is provided (sequence_dependent_parameters.txt).<br />
<br />
;[external_forces=0]: 0|1<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file).<br />
<br />
;[external_forces_file]: specifies the file containing all the external forces' configurations. Currently there are six supported force types (see EXAMPLES/TRAPS for some examples):<br />
:*string<br />
:*twist<br />
:*trap<br />
:*repulsion_plane<br />
:*repulsion_plane_moving<br />
:*mutual_trap<br />
<br />
====Molecular dynamics simulations options====<br />
<br />
;dt: time step of the integration.<br />
<br />
;thermostat: no|refresh|brownian <br />
:no means no thermostat will be used. refresh will refresh all the particle's velocities from a maxwellian every newtonian_steps steps. john is an Anderson-like thermostat (see pt). Make sure you read [[Thermostat|thermostat]].<br />
<br />
;newtonian_steps: required if thermostat != no<br />
:number of steps after which a procedure of thermalization will be performed.<br />
<br />
;pt: used if thermostat == john. It's the probability that a particle's velocity will be refreshed during a thermalization procedure.<br />
<br />
;diff_coeff: required if pt is not specified<br />
:used internally to automatically compute the pt that would be needed if we wanted such a self diffusion coefficient. Not used if pt is set.<br />
<br />
====Monte Carlo simulations options====<br />
<br />
;[check_energy_every=10]: this number times print_energy_every gives the number of steps after which the energy will be computed from scratch and checked against the actual value computed adding energy differences.<br />
<br />
;[check_energy_threshold=1e-4]: if abs((old_energy - new_energy)/old_energy) > check_energy_threshold then the program will die and warn the user.<br />
<br />
;ensemble: NVT<br />
:ensemble of the simulation. More ensembles could be added in future versions.<br />
<br />
;delta_translation: maximum displacement (per dimension) for translational moves in simulation units.<br />
<br />
;delta_translation: maximum displacement for rotational moves in simulation units.<br />
<br />
===Input/output===<br />
The options listed here are used to manage the I/O (read and write configurations, energies and so on)<br />
<br />
;conf_file: initial configuration file. <br />
<br />
;topology: file containing the system's topology.<br />
<br />
;trajectory_file: the main output of the program. All the configurations will be appended to this file as they are printed.<br />
<br />
;[confs_to_skip=0]: valid only if conf_file is a trajectory. Skip the first confs_to_skip configurations and then load in memory the (confs_to_skip+1)th.<br />
<br />
;[lastconf_file=last_conf.dat]: this is the file where the last configuration is saved (when the program finishes or is killed). Set to last_conf.dat by default<br />
<br />
;[lastconf_file_bin]: path to the file where the last configuration will be printed in binary format, if not specified no binary configurations will be printed.<br />
<br />
;[binary_initial_conf=0]: 0|1<br />
whether the initial configuration is a binary configuration or not<br />
<br />
;[refresh_vel=0]: 0|1<br />
:if 1 the initial velocities will be refreshed from a maxwellian.<br />
<br />
;energy_file: energy output file.<br />
<br />
;[print_energy_every=1000]: this will make the program print the energies every print_energy_every steps.<br />
<br />
;[no_stdout_energy=0]: 0|1<br />
:if 1 the energy will be printed just to the energy_file.<br />
<br />
;[time_scale=linear]: linear|log_lin<br />
:using linear configurations will be saved every print_conf_interval.<br />
:using log_lin configurations will be saved logarithmically for print_conf_ppc times. After that the logarithmic sequence will restart.<br />
<br />
; [print_conf_ppc times]:<br />
mandatory only if time_scale == log_line. This is the number of printed configurations in a single logarithmic cycle.<br />
<br />
;print_conf_interval: linear interval if time_scale == linear. First step of the logarithmic scale if time_scale == log_lin.<br />
<br />
;[print_reduced_conf_every=0]: every print_reduced_conf_every steps the program will print out the reduced configurations (i.e. confs containing only the centers of mass of strands).<br />
<br />
;reduced_conf_output_dir: used if print_reduced_conf_every > 0<br />
:output directory for reduced_conf files.<br />
<br />
;[log_file=stderr]: file where generic and debug informations will be logged. If not specified then stderr will be used.<br />
<br />
;[print_timings = 0]: 0|1<br />
whether oxDNA should print out to a file performance timings at the end of the simulation or not.<br />
<br />
;[timings_filename]: path to the file where timings will be printed<br />
<br />
;[output_prefix]: the name of all output files will be preceded by this prefix, defaults to an empty string<br />
<br />
;[print_input = 0]: 0|1<br />
make oxDNA write the input key=value pairs used by the simulation in a file named input.pid, with pid being the oxDNA pid.<br />
<br />
;[equilibration_steps]: number of equilibration steps. During equilibration, oxDNA does not generate any output. Defaults to 0<br />
==Output files==<br />
*The log file contains all the relevant information about the simulation (specified options, activated external forces, warnings about misconfigurations, critical errors, etc.). If the log file is omitted, all this information will be displayed on the standard output.<br />
<br />
*The energy file layout for MD simulations is<br />
<br />
:{|<br />
| [time (steps * dt)]<br />
| [potential energy]<br />
| [kinetic energy]<br />
| [total energy]<br />
|}<br />
<br />
:while for MC simulations is<br />
<br />
:{|<br />
| [time (steps)]<br />
| [potential energy]<br />
| [acceptance ratio for translational moves]<br />
| [acceptance ratio for rotational moves]<br />
| [acceptance ratio for volume moves]<br />
|}<br />
<br />
:VMMC output also produces the following extra columns if umbrella sampling is enabled<br />
:{|<br />
|[order parameter coordinate 1]<br />
|[order parameter coordinate 1]<br />
|...<br />
|[order parameter coordinate n]<br />
|[current weight]<br />
|}<br />
<br />
:N.B. potential, kinetic and total energies are divided by the total number of particles.<br />
<br />
*Configurations are saved in the trajectory file.<br />
<br />
==Configuration and topology files==<br />
The current state of a system, as specified by oxDNA, is described by two files: a configuration file and a topology file. The configuration file contains all the general information (timestep, energy and box size) and the orientations and positions of each nucleotide. The topology file, on the other hand, keeps track of the backbone-backbone bonds between nucleotides in the same strand. Working configuration and topology files can be found in the <tt>[[Examples|EXAMPLES]]</tt> directory.<br />
<br />
===Configuration file===<br />
The first three rows of a configuration file contain the timestep <tt>T</tt> at which the configuration has been printed, the length of the box sides <tt>Lx</tt>, <tt>Ly</tt> and <tt>Lz</tt> and the total, potential and kinetic energies, <tt>Etot</tt>, <tt>U</tt> and <tt>K</tt>, respectively:<br />
<br />
<pre><br />
t = T<br />
b = Lz Ly Lz<br />
E = Etot U K<br />
</pre><br />
<br />
after this header, each row contains position of the centre of mass, orientation, velocity and angular velocity of a single nucleotide in the following order:<br />
<br />
<math>\overbrace{r_x r_y r_z}^{\rm Position} \overbrace{b_x b_y b_z}^{\rm Backbone-base\,\, versor} \overbrace{n_x n_y n_z}^{\rm Normal\,\, versor} \overbrace{v_x v_y v_z}^{\rm Velocity} \overbrace{L_x L_y L_z}^{\rm Angular\,\, velocity}</math><br />
<br />
===Topology file===<br />
The topology file stores the intra-strand, fixed bonding topology (i.e. which nucleotides share backbone links). The first row contains the total number of nucleotides <tt>N</tt> and the number of strands <tt>Ns</tt>:<br />
<br />
<pre><br />
N Ns<br />
</pre><br />
<br />
After this header, the <tt>i</tt>-th row specifies strand, base and 3' and 5' neighbors of the <tt>i</tt>-th nucleotide in this way:<br />
<br />
<pre><br />
S B 3' 5'<br />
</pre><br />
<br />
where S is the index of the strand (starting from 1) which the nucleotide belongs to, B is the base and 3' and 5' specify the index of the nucleotides with which the <tt>i</tt>-th nucleotide is bonded in the 3' and 5' direction, respectively. A <tt>-1</tt> signals that the nucleotide terminates the strand in either 3' or 5' direction. The topology file of a strand of sequence <tt>GCGTTG</tt> would be:<br />
<br />
<pre><br />
6 1<br />
1 G -1 1<br />
1 C 0 2<br />
1 G 1 3<br />
1 T 2 4<br />
1 T 3 5<br />
1 G 4 -1<br />
</pre><br />
<br />
Specifying the topology in this way can simplify the process of simulating, for example, circular DNA.<br />
<br />
===Generation of initial configurations===<br />
In order to generate initial configuration and topology files, we provide the <tt>${oxDNA}/UTILS/generate-sa.py</tt> script. The usage of the script is<br />
<br />
<pre>generate-sa.py <box side> <file with sequence></pre> <br />
<br />
where <tt><box side></tt> specifies the length of the box side in simulation units and <tt><file with sequence></tt> contains the sequence of the strands to be generated, one row per strand. If double strands are needed, each sequence must be preceded by <tt>DOUBLE</tt>. For example, a file containing<br />
<br />
<pre><br />
DOUBLE AGGGCT<br />
CCTGTA<br />
</pre><br />
<br />
would generate a double strand with a sequence <tt>AGGGCT</tt> and a single strand with a sequence <tt>CCTGTA</tt>. The sequences are given in 3'-5' order.<br />
<br />
Positions and orientations of the strands are all chosen at random in such a way that the resulting initial configuration does not contain significant excluded volume interactions between nucleotides belonging to different strands. Generated single- and double-strands have helical conformations (i.e. they are in the minimum of the intra-strand interaction energy).<br />
<br />
The output configuration and topology are stored in <tt>generated.dat</tt> and <tt>generated.top</tt>, respectively. <br />
Since this script will initialize nucleotides' velocities and angular velocities to 0, when performing a molecular (or Brownian) dynamics simulation remember to put <tt>refresh_vel = 1</tt> in the [[Documentation#Input_file|input]] file.<br />
<br />
==Analysis of configurations==<br />
The configurations produced by oxDNA can be analysed with the <tt>output_bonds.py</tt> program in <tt>${oxDNA}/UTILS/</tt> directory. This program takes as command line arguments the input file (to recover the temperature and topology file), a configuration/trajectory file and an optional number. Since <tt>output_bonds</tt> reads analyses a single configuration, the optional number selects the configuration which it needs to analyse in the trajectory. Analysing a whole trajectory can be done by looping over a counter.<br />
<br />
<br />
<tt>output_bonds</tt> can be used as follows:<br />
<pre><br />
${oxDNA}/UTILS/output_bonds.py <input_file> <trajectory_file> [counter]<br />
</pre><br />
<br />
The program outputs some debugging information to the standard error and information regarding the interaction energies to the standard output. The contributions arising from each of the terms in the potential (see the appendix of [[Publications|Ref. 2]]) are reported for each pair of nucleotides that have non-zero total interactions.<br />
<br />
This output can be easily parsed to analyse the configurations.<br />
<br />
For each pair of nucleotides that do interact in the configuration, the program prints out a line containing:<br />
* The id of the two particles (starting from 0)<br />
* The total interaction energy<br />
* The hydrogen bonding (base pairing) energy<br />
* The stacking energy<br />
* The cross stacking energy<br />
* The excluded volume energy<br />
* The FENE interaction energy<br />
* A letter indicating a status code. This will be <tt>N</tt> for pairs that interact through bonded interactions (i.e. they are neighbors along a strand) and it will be <tt>H</tt> when a base pair is present. Our definition of base pair is when two nucleotides have a hydrogen bonding energy less than -0.1 in simulation units (see [[Publications|Ref. 2]]).<br />
<br />
===Geometry of the Model===<br />
In the configuration/trajectory files only the positions and orientations of the nucleotides are stored. If one wants to recover the positions of the individual interaction sites in the model, some maths need to be done.<br />
<br />
The position of the base, stacking and backbone sites can be recovered as follows:<br />
<br />
base site: (center) + 0.40 * (axis vector)<br />
<br />
stacking site: (center) + 0.34 * (axis vector)<br />
<br />
backbone site: (center) - 0.40 * (axis_vector)<br />
<br />
The picture in the [[Model_introduction|introduction]] might help understanding where the sites are.<br />
<br />
==External Forces==<br />
The code implements several types of external forces that can be imposed on the system that can be used either to simulate tension exerted on DNA or simply to accelerate the formation of secondary or tertiary structure. External forces can be tricky to treat, especially in a dynamics simulation, since they are an external source of work. Care should be taken in adjusting the time step, thermostat parameters and such.<br />
<br />
To enable external forces, one needs to specify <tt>external_forces = 1</tt> in the input file and also supply an external force file to read from with the key <tt>external_forces_file = <file></tt>.<br />
<br />
The syntax of the external forces file is quite simple. Examples of such files can be found in the [[Hairpin_formation|hairpin formation]] and [[Pseudoknot|Pseudoknot formation]] examples. Each force is specified within a block contained in curly brackets. Empty lines and lines beginning with an hash symbol (<tt>#</tt>) are ignored. Different forces require different keys to be present. If the file has the wrong syntax, oxDNA should spit out a sensible error message while parsing the file.<br />
<br />
The different types of forces implemented at the moment are:<br />
* harmonic trap<br />
* string <br />
* repulsion plane<br />
* mutual trap<br />
* repulsive sphere<br />
<br />
All forces act on the centre of mass of the particles.<br />
<br />
Forces of different kinds can be combined in the same simulation. There is a maximum number of 10 external forces per particle for memory reasons. This can be manually overridden recompiling the code with a different value of the macro <tt>MAX_EXT_FORCES</tt> (currently 10) in <tt>defs.h</tt>.<br />
<br />
===String===<br />
A string is implemented as a force that does not depend on the particle position. Its value can be constant or can change linearly with time. It is useful as it does not fluctuate with time.<br />
<br />
A force of this kind is specified with <tt>type = string</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''F0''' (float) the value of the force at time = 0 in simulation units (please note that the value of the time may or may not be reset when starting a simulation, depending on the input file)<br />
* '''rate''' (float) growing rate of the force (simulation units/time steps). Typical values are very small (< 10^(-5))<br />
* '''dir''' (3 floats separated by commas) direction of the force (automatically normalised by the code)<br />
<br />
The following bit of code will create an external force on the first nucleotide in the system starting at 1 simulation units (48.6 pN) and growing linearly with time at the rate of 48.6pN every million time steps. The force will pull the nucleotide along the <tt>z</tt> direction.<br />
<br />
<pre><br />
{<br />
type = string<br />
particle = 0<br />
F0 = 1.<br />
rate = 1e-6<br />
dir = 0., 0., 1.<br />
} <br />
</pre><br />
<br />
===Harmonic trap===<br />
This type of force implements an harmonic trap, of arbitrary stiffness, that can move linearly with time. It can be useful to fix the position of the nucleotides to simulate attachment to something or to implement (quasi) constant extension simulations.<br />
<br />
A force of this kind is specified with <tt>type = trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) rest position of the trap<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) speed of the trap (length simulation units/time steps)<br />
* '''dir''' (3 floats separated by commas) direction of movement of the trap<br />
<br />
Here is an example input for a harmonic trap acting on the third nucleotide constraining it to stay close to the origin. In this example the trap does not move (<tt>rate=0</tt>), but one could have it move at a constant speed along the direction specified by <tt>dir</tt>, in this case the <tt>x</tt> direction.<br />
<br />
<pre><br />
{<br />
type = trap<br />
particle = 2<br />
pos0 = 0., 0., 0.<br />
stiff = 1.0<br />
rate = 0.<br />
dir = 1.,0.,0.<br />
}<br />
</pre><br />
<br />
Please note that the trap does not comply with periodic boundary conditions. This is most likely what you want.<br />
<br />
===Rotating harmonic trap===<br />
Same as the harmonic trap, with the exception that the trap position rotates in space with constant angular velocity. Several of these can be used e.g. to twist DNA.<br />
<br />
A force of this kind is specified with <tt>type = twist</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) position of the trap when the rotation angle equals 0<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) angular velocity of the trap (length simulation units/time steps)<br />
* '''base''' (float) initial phase of the trap <br />
* '''axis''' (3 floats separated by commas) rotation axis of the trap<br />
* '''mask''' (3 floats separated by commas) masking vector of the trap - the force vector will be element-wise multiplied by the masking vector. <br />
<br />
The following is an example input for a rotating trap acting on the first nucleotide forcing it to stay close to a point that starts at <tt>pos0</tt> and then rotates around an axis containing the <tt>center</tt> point and parallel to the z axis. In this case we want to neglect the force component along the z-axis, so we set <tt> mask </tt> accordingly.<br />
<pre><br />
{<br />
type = twist<br />
particle = 0<br />
stiff = 1.00<br />
rate = 1e-5<br />
base = 0.<br />
pos0 = 15, 0.674909093169, 18.6187733563<br />
center = 13., 0.674909093169, 18.6187733563<br />
axis = 0, 0, 1<br />
mask = 1, 1, 0<br />
}<br />
</pre><br />
===Repulsion plane===<br />
This kind of external force implements a repulsion plane that constrains a particle (or the whole system) to stay on one side of it. It is implemented as a harmonic repulsion, but the stiffness can be made arbitrarily high to mimic a hard repulsion.<br />
<br />
A force of this kind is specified with <tt>type = repulsion_plane</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force. If set to the special value -1, the force will be exerted on all particles.<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * D, where D is distance from the plane. The force is exerted only if the nucleotide is below the plane)<br />
* '''dir''' (3 floats separated by commas) a direction normal to the plane<br />
* '''position''' (1 float number) specifies the position of the plane<br />
<br />
If direction is <tt> direction = u,v,w </tt> , then the plane contains all the points (x,y,z) that satisfy the equation: u*x + v*y + w*z + position = 0.<br />
Only nucleotides with coordinates (x,y,z) that satisfy u*x + v*y + w*z + position < 0 will feel the force.<br />
The force exerted on a nucleotide is equal to stiff * D, where D is the distance of the nucleotide from the plane, where <math> D = | ux + vy + wz + \mbox{position}| / \sqrt{u^2 + v^2 + w^2 }.</math><br />
For nucleotides for which u*x + v*y + w*z + position >= 0, no force will be exerted.<br />
<br />
Here is an example. This plane acts on the whole system and will not exert any force on nucleotides with a positive <tt>x</tt> coordinate. A force proportional to 48.6 pN * (<tt>x</tt> coordinate) will be exerted on all particles . <br />
<br />
<pre><br />
{<br />
type = repulsion_plane<br />
#whole system<br />
particle = -1<br />
stiff = 1. #48.6 pN /(simulation length unit) <br />
dir = 1, 0, 0<br />
position = 0<br />
}<br />
</pre><br />
<br />
If in the above example you would specify position = 3, then the force would be exerted on all nucleotides with coordinate x > -3.<br />
<br />
===Mutual trap===<br />
This force is useful to form initial configurations. It is a harmonic force that at every moment pulls a particle towards a reference particle. It is possible to specify the separation at which the force will be 0.<br />
<br />
A force of this kind is specified with <tt>type = mutual_trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''ref_particle''' (int) particle to pull towards. Please note that this particle will not feel any force (the name mutual trap is thus misleading).<br />
* '''stiff''' (float) stiffness of the trap.<br />
* '''r0''' (float) equilibrium distance of the trap.<br />
<br />
Here is an example, extracted from the [[Pseudoknot|pseudoknot formation example]]. This will pull particle 14 towards particle 39, favouring an equilibrium distance of 1.4 (which corresponds roughly to the minimum of the hydrogen bonding potential, not a coincidence). The same force with opposite sign is exerted on particle 39 through a separate force. It is not necessary to have both particles feel the force, but it usually works much better.<br />
<br />
<pre><br />
{<br />
type = mutual_trap<br />
particle = 14<br />
ref_particle = 39<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
<br />
{<br />
type = mutual_trap<br />
particle = 39<br />
ref_particle = 14<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
</pre><br />
<br />
===Repulsive sphere===<br />
This force encloses particle(s) in a repulsive sphere. The repulsion force is harmonic.<br />
<br />
A force of this kind is specified with <tt>type = sphere</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''center''' (float,float,float) the center of the sphere. This key should be specified as three comma-separated numbers (e.g. 0,0,0).<br />
* '''stiff''' (float) stiffness of the trap.<br />
* '''r0''' (float) initial radius of the sphere.<br />
* '''rate''' (float) optional: if not null, the radius of the sphere at time step t will be given by r = r0 + rate * t.<br />
<br />
==Visualisation of structures==<br />
oxDNA produces a trajectory file where all the relevant information is<br />
stored. A converter is provided (<tt>traj2vis.py</tt>) in the<br />
<tt>UTILS</tt> directory that is able to produce files in the <tt>xyz</tt><br />
and <tt>pdb</tt> formats. The same program can be used on a configuration<br />
file and it will produce a snapshot.<br />
<br />
Since the model is coarse-grained, we have to "trick" the visualisers into<br />
thinking that the interaction sites in the model are actually atoms.<br />
Advanced nucleic acids representations such as ribbons will not work on the<br />
outputs.<br />
<br />
All the images in the [[Screenshots]] page were produced with the pdb representation using UCSF chimera (see later on).<br />
<br />
===xyz format===<br />
<br />
just run <br />
<br />
<pre>$oxDNA/UTILS/traj2vis.py xyz <trajectory> <topology> </pre><br />
<br />
(where <tt>$oxDNA</tt> is the oxDNA source directory) to get the xyz representation in a file called the same as the trajectory<br />
file with <tt>.xyz</tt> appended. Please note that boundary conditions are<br />
implemented strand-wise, so strands that are bound might appear at two<br />
different sizes of the box. Also, the center of mass of the system (where<br />
each strand is weighted the same regardless of the length) is set to 0 at<br />
each frame. Carbons represent the backbone sites and oxygens the base sites.<br />
<br />
The resulting file can be read with a variety of programs. Here we will<br />
explain how to visualise it sensibly in [http://www.ks.uiuc.edu/Research/vmd/ VMD].<br />
<br />
* Run VMD and load the xyz file.<br />
* In the graphics menu, go to Representations.<br />
* In the Selected Atoms line, input <tt>name C</tt>. Also select Drawing method CPK, sphere scale 0.8 and Bond Radius 0.<br />
* In the Selected Atoms line, input <tt>name O</tt>. Also select Drawing method CPK, sphere scale 0.6 and Bond Radius 0.<br />
<br />
This should produce a ball representation of our model DNA. Bonds<br />
automatically produced by VMD are NOT meaningful in our context.<br />
<br />
===pdb format===<br />
Run <br />
<br />
<pre>$oxDNA/UTILS/traj2chimera.py <trajectory> <topology> </pre><br />
<br />
to produce a trajectory/configuration in the pdb format. A further file<br />
called <tt>chimera.com</tt> will be produced (more on this later). All<br />
comments above about periodic boundaries and centre of mass apply here as<br />
well.<br />
<br />
The pdb file can be visualised in VMD just like the xyz format, but a nicer<br />
output can be produced with [http://www.cgl.ucsf.edu/chimera/ UCSF Chimera] (although only for snapshots at<br />
the moment) as follows:<br />
<br />
Run chimera and load the pdb file. An ugly output will be displayed.<br />
<br />
Bring up the command line under the <tt>Tools → General Controls</tt> menu.<br />
Input <tt>read chimera.com</tt> in the command line and press enter. You<br />
should get a nicer visualisation with different bases in different colors,<br />
all the covalent bonds in the right place, etc.<br />
<br />
On large configurations, the production of ellipsoids will be extremely<br />
slow. You can remove it by removing the line<br />
<br />
<code>aniso scale 0.75 smoothing 4</code><br />
<br />
from the commands file. Loading the resulting file should be much faster.<br />
<br />
UCSF chimera can in turn export the scene in a variety of formats.<br />
<br />
===cogli1===<br />
<br />
OxDNA configurations and trajectories can now be directly visualized using [https://sourceforge.net/projects/cogli1/ cogli1].</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Documentation&diff=1202Documentation2019-05-22T14:45:11Z<p>Rovigattil: /* Configuration file */</p>
<hr />
<div>==Compile options==<br />
<br />
Compiling oxDNA requires that you have a working <tt>cmake</tt> software and C++ compiler on your machine. The instructions are provided in the [[Download and Installation]] section.<br />
<br />
==Usage==<br />
<br />
<pre>oxDNA input_file</pre><br />
<br />
The input file contains all the relevant information for the program to run, such as what initial configuration to use, the topology of the system, how often to print the energies to a file, etc. Please make sure you read the [[Thermostat|thermostat]] page if you use molecular dynamics.<br />
<br />
==Input file==<br />
<br />
As always in UNIX environments, everything is case sensitive.<br />
<br />
*Options are in the form key = value<br />
*There can be arbitrary spaces before and after both key and value<br />
*Line with a leading # will be treated as comments<br />
*The | (pipe) sign is the separator between the different values that can be used to specify a value for the key.<br />
*Keys between [ and ] are optional, the value after the equal sign is the default value<br />
<br />
Here we provide a list of the most commonly used input options. The complete and most up-to-date list of possible options can be found [[Input_options|here]] or in the <tt>README</tt> file in the main directory of the simulation code.<br />
<br />
The input options of the previous oxDNA version can be found [[Input_options_of_the_previous_version|here]].<br />
<br />
===Generic options===<br />
The options listed here define the generic behavior of the entire program.<br />
;[interaction_type = DNA]: DNA|DNA2|RNA|patchy|LJ<br />
: (selects the model for the simulation. DNA ([[DNA_model_introduction|oxDNA model]]) is the default option. DNA2 ([[DNA_model_introduction#oxDNA2|oxDNA2 model]]), RNA ([[RNA_model_introduction|oxRNA model]]), LJ (Lennard-Jones) and patchy particles are also implemented<br />
;[sim_type=MD]: MD|MC|VMMC<br />
:MD = Molecular Dynamics, MC = Monte Carlo, VMMC = Virtual Move Monte Carlo<br />
;backend: CPU | CUDA <br />
: (only sim_type=MD is supported if you choose CUDA backend)<br />
;backend_precision: float|double|mixed<br />
: (mixed option is available only for CUDA backend. It is recommended choice for optimal performance on CUDA machines, double is recommended for CPU simulations)<br />
;[debug=0]: 0|1<br />
: 1 if you want verbose logs, 0 otherwise.<br />
<br />
===Simulation options===<br />
The options listed here specify the behaviour of the simulation.<br />
<br />
;steps: number of steps to be performed.<br />
<br />
;[restart_step_counter=0]: 0|1<br />
:0 means that the step counter will start from the value read in the configuration file; if 1, the step counter will be reset to 0. The total duration of the simulation is unchanged.<br />
<br />
;[seed=time(NULL)]: seed for the random number generator. On Unix systems, it will use by default a number from /dev/urandom + time(NULL)<br />
<br />
;T: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
:Examples:<br />
{|<br />
|-<br />
! Value<br />
! Simulation Units<br />
|-<br />
| 0.1<br />
| 0.1<br />
|-<br />
| 300 K<br />
| 0.1<br />
|-<br />
| 300k<br />
| 0.1<br />
|-<br />
| 26.85c<br />
| 0.1<br />
|-<br />
| 26.85 C <br />
| 0.1<br />
|-<br />
|}<br />
;[fix_diffusion=1]: 0|1<br />
:If true, particles that leave the simulation box are brought back in via periodic boundary conditions. Defaults to true. <br />
;verlet_skin: if a particle moves more than verlet_skin then the lists will be updated. Its name is somewhat misleading: the actual verlet skin is 2*verlet_skin.<br />
<br />
;[back_in_box=0]: 0|1<br />
whether particles should be brought back into the box when a configuration is printed or not, defaults to false<br />
<br />
;salt_concentration: used if interaction_type = DNA2. It specifies the salt concentration in M.<br />
<br />
;[use_average_seq=1]: 0|1<br />
: specifies whether to use the default hard-coded average parameters for base-pairing and stacking interaction strengths or not. If sequence dependence is to be used, set this to 0 and specify seq_dep_file.<br />
<br />
;[seq_dep_file]: specifies the file from which the sequence dependent parameters should be read. Mandatory if use_average_seq=no, ignored otherwise. A sample file is provided (sequence_dependent_parameters.txt).<br />
<br />
;[external_forces=0]: 0|1<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file).<br />
<br />
;[external_forces_file]: specifies the file containing all the external forces' configurations. Currently there are six supported force types (see EXAMPLES/TRAPS for some examples):<br />
:*string<br />
:*twist<br />
:*trap<br />
:*repulsion_plane<br />
:*repulsion_plane_moving<br />
:*mutual_trap<br />
<br />
====Molecular dynamics simulations options====<br />
<br />
;dt: time step of the integration.<br />
<br />
;thermostat: no|refresh|brownian <br />
:no means no thermostat will be used. refresh will refresh all the particle's velocities from a maxwellian every newtonian_steps steps. john is an Anderson-like thermostat (see pt). Make sure you read [[Thermostat|thermostat]].<br />
<br />
;newtonian_steps: required if thermostat != no<br />
:number of steps after which a procedure of thermalization will be performed.<br />
<br />
;pt: used if thermostat == john. It's the probability that a particle's velocity will be refreshed during a thermalization procedure.<br />
<br />
;diff_coeff: required if pt is not specified<br />
:used internally to automatically compute the pt that would be needed if we wanted such a self diffusion coefficient. Not used if pt is set.<br />
<br />
====Monte Carlo simulations options====<br />
<br />
;[check_energy_every=10]: this number times print_energy_every gives the number of steps after which the energy will be computed from scratch and checked against the actual value computed adding energy differences.<br />
<br />
;[check_energy_threshold=1e-4]: if abs((old_energy - new_energy)/old_energy) > check_energy_threshold then the program will die and warn the user.<br />
<br />
;ensemble: NVT<br />
:ensemble of the simulation. More ensembles could be added in future versions.<br />
<br />
;delta_translation: maximum displacement (per dimension) for translational moves in simulation units.<br />
<br />
;delta_translation: maximum displacement for rotational moves in simulation units.<br />
<br />
===Input/output===<br />
The options listed here are used to manage the I/O (read and write configurations, energies and so on)<br />
<br />
;conf_file: initial configuration file. <br />
<br />
;topology: file containing the system's topology.<br />
<br />
;trajectory_file: the main output of the program. All the configurations will be appended to this file as they are printed.<br />
<br />
;[confs_to_skip=0]: valid only if conf_file is a trajectory. Skip the first confs_to_skip configurations and then load in memory the (confs_to_skip+1)th.<br />
<br />
;[lastconf_file=last_conf.dat]: this is the file where the last configuration is saved (when the program finishes or is killed). Set to last_conf.dat by default<br />
<br />
;[lastconf_file_bin]: path to the file where the last configuration will be printed in binary format, if not specified no binary configurations will be printed.<br />
<br />
;[binary_initial_conf=0]: 0|1<br />
whether the initial configuration is a binary configuration or not<br />
<br />
;[refresh_vel=0]: 0|1<br />
:if 1 the initial velocities will be refreshed from a maxwellian.<br />
<br />
;energy_file: energy output file.<br />
<br />
;[print_energy_every=1000]: this will make the program print the energies every print_energy_every steps.<br />
<br />
;[no_stdout_energy=0]: 0|1<br />
:if 1 the energy will be printed just to the energy_file.<br />
<br />
;[time_scale=linear]: linear|log_lin<br />
:using linear configurations will be saved every print_conf_interval.<br />
:using log_lin configurations will be saved logarithmically for print_conf_ppc times. After that the logarithmic sequence will restart.<br />
<br />
; [print_conf_ppc times]:<br />
mandatory only if time_scale == log_line. This is the number of printed configurations in a single logarithmic cycle.<br />
<br />
;print_conf_interval: linear interval if time_scale == linear. First step of the logarithmic scale if time_scale == log_lin.<br />
<br />
;[print_reduced_conf_every=0]: every print_reduced_conf_every steps the program will print out the reduced configurations (i.e. confs containing only the centers of mass of strands).<br />
<br />
;reduced_conf_output_dir: used if print_reduced_conf_every > 0<br />
:output directory for reduced_conf files.<br />
<br />
;[log_file=stderr]: file where generic and debug informations will be logged. If not specified then stderr will be used.<br />
<br />
;[print_timings = 0]: 0|1<br />
whether oxDNA should print out to a file performance timings at the end of the simulation or not.<br />
<br />
;[timings_filename]: path to the file where timings will be printed<br />
<br />
;[output_prefix]: the name of all output files will be preceded by this prefix, defaults to an empty string<br />
<br />
;[print_input = 0]: 0|1<br />
make oxDNA write the input key=value pairs used by the simulation in a file named input.pid, with pid being the oxDNA pid.<br />
<br />
;[equilibration_steps]: number of equilibration steps. During equilibration, oxDNA does not generate any output. Defaults to 0<br />
==Output files==<br />
*The log file contains all the relevant information about the simulation (specified options, activated external forces, warnings about misconfigurations, critical errors, etc.). If the log file is omitted, all this information will be displayed on the standard output.<br />
<br />
*The energy file layout for MD simulations is<br />
<br />
:{|<br />
| [time (steps * dt)]<br />
| [potential energy]<br />
| [kinetic energy]<br />
| [total energy]<br />
|}<br />
<br />
:while for MC simulations is<br />
<br />
:{|<br />
| [time (steps)]<br />
| [potential energy]<br />
| [acceptance ratio for translational moves]<br />
| [acceptance ratio for rotational moves]<br />
| [acceptance ratio for volume moves]<br />
|}<br />
<br />
:VMMC output also produces the following extra columns if umbrella sampling is enabled<br />
:{|<br />
|[order parameter coordinate 1]<br />
|[order parameter coordinate 1]<br />
|...<br />
|[order parameter coordinate n]<br />
|[current weight]<br />
|}<br />
<br />
:N.B. potential, kinetic and total energies are divided by the total number of particles.<br />
<br />
*Configurations are saved in the trajectory file.<br />
<br />
==Configuration and topology files==<br />
The current state of a system, as specified by oxDNA, is described by two files: a configuration file and a topology file. The configuration file contains all the general information (timestep, energy and box size) and the orientations and positions of each nucleotide. The topology file, on the other hand, keeps track of the backbone-backbone bonds between nucleotides in the same strand. Working configuration and topology files can be found in the <tt>[[Examples|EXAMPLES]]</tt> directory.<br />
<br />
===Configuration file===<br />
The first three rows of a configuration file contain the timestep <tt>T</tt> at which the configuration has been printed, the length of the box sides <tt>Lx</tt>, <tt>Ly</tt> and <tt>Lz</tt> and the total, potential and kinetic energies, <tt>Etot</tt>, <tt>U</tt> and <tt>K</tt>, respectively:<br />
<br />
<pre><br />
t = T<br />
b = Lz Ly Lz<br />
E = Etot U K<br />
</pre><br />
<br />
after this header, each row contains position of the centre of mass, orientation, velocity and angular velocity of a single nucleotide in the following order:<br />
<br />
<math>\overbrace{r_x r_y r_z}^{\rm Position} \overbrace{b_x b_y b_z}^{\rm Backbone-base\q versor} \overbrace{n_x n_y n_z}^{\rm Normal\q versor} \overbrace{v_x v_y v_z}^{\rm Velocity} \overbrace{L_x L_y L_z}^{\rm Angular\q velocity}</math><br />
<br />
===Topology file===<br />
The topology file stores the intra-strand, fixed bonding topology (i.e. which nucleotides share backbone links). The first row contains the total number of nucleotides <tt>N</tt> and the number of strands <tt>Ns</tt>:<br />
<br />
<pre><br />
N Ns<br />
</pre><br />
<br />
After this header, the <tt>i</tt>-th row specifies strand, base and 3' and 5' neighbors of the <tt>i</tt>-th nucleotide in this way:<br />
<br />
<pre><br />
S B 3' 5'<br />
</pre><br />
<br />
where S is the index of the strand (starting from 1) which the nucleotide belongs to, B is the base and 3' and 5' specify the index of the nucleotides with which the <tt>i</tt>-th nucleotide is bonded in the 3' and 5' direction, respectively. A <tt>-1</tt> signals that the nucleotide terminates the strand in either 3' or 5' direction. The topology file of a strand of sequence <tt>GCGTTG</tt> would be:<br />
<br />
<pre><br />
6 1<br />
1 G -1 1<br />
1 C 0 2<br />
1 G 1 3<br />
1 T 2 4<br />
1 T 3 5<br />
1 G 4 -1<br />
</pre><br />
<br />
Specifying the topology in this way can simplify the process of simulating, for example, circular DNA.<br />
<br />
===Generation of initial configurations===<br />
In order to generate initial configuration and topology files, we provide the <tt>${oxDNA}/UTILS/generate-sa.py</tt> script. The usage of the script is<br />
<br />
<pre>generate-sa.py <box side> <file with sequence></pre> <br />
<br />
where <tt><box side></tt> specifies the length of the box side in simulation units and <tt><file with sequence></tt> contains the sequence of the strands to be generated, one row per strand. If double strands are needed, each sequence must be preceded by <tt>DOUBLE</tt>. For example, a file containing<br />
<br />
<pre><br />
DOUBLE AGGGCT<br />
CCTGTA<br />
</pre><br />
<br />
would generate a double strand with a sequence <tt>AGGGCT</tt> and a single strand with a sequence <tt>CCTGTA</tt>. The sequences are given in 3'-5' order.<br />
<br />
Positions and orientations of the strands are all chosen at random in such a way that the resulting initial configuration does not contain significant excluded volume interactions between nucleotides belonging to different strands. Generated single- and double-strands have helical conformations (i.e. they are in the minimum of the intra-strand interaction energy).<br />
<br />
The output configuration and topology are stored in <tt>generated.dat</tt> and <tt>generated.top</tt>, respectively. <br />
Since this script will initialize nucleotides' velocities and angular velocities to 0, when performing a molecular (or Brownian) dynamics simulation remember to put <tt>refresh_vel = 1</tt> in the [[Documentation#Input_file|input]] file.<br />
<br />
==Analysis of configurations==<br />
The configurations produced by oxDNA can be analysed with the <tt>output_bonds.py</tt> program in <tt>${oxDNA}/UTILS/</tt> directory. This program takes as command line arguments the input file (to recover the temperature and topology file), a configuration/trajectory file and an optional number. Since <tt>output_bonds</tt> reads analyses a single configuration, the optional number selects the configuration which it needs to analyse in the trajectory. Analysing a whole trajectory can be done by looping over a counter.<br />
<br />
<br />
<tt>output_bonds</tt> can be used as follows:<br />
<pre><br />
${oxDNA}/UTILS/output_bonds.py <input_file> <trajectory_file> [counter]<br />
</pre><br />
<br />
The program outputs some debugging information to the standard error and information regarding the interaction energies to the standard output. The contributions arising from each of the terms in the potential (see the appendix of [[Publications|Ref. 2]]) are reported for each pair of nucleotides that have non-zero total interactions.<br />
<br />
This output can be easily parsed to analyse the configurations.<br />
<br />
For each pair of nucleotides that do interact in the configuration, the program prints out a line containing:<br />
* The id of the two particles (starting from 0)<br />
* The total interaction energy<br />
* The hydrogen bonding (base pairing) energy<br />
* The stacking energy<br />
* The cross stacking energy<br />
* The excluded volume energy<br />
* The FENE interaction energy<br />
* A letter indicating a status code. This will be <tt>N</tt> for pairs that interact through bonded interactions (i.e. they are neighbors along a strand) and it will be <tt>H</tt> when a base pair is present. Our definition of base pair is when two nucleotides have a hydrogen bonding energy less than -0.1 in simulation units (see [[Publications|Ref. 2]]).<br />
<br />
===Geometry of the Model===<br />
In the configuration/trajectory files only the positions and orientations of the nucleotides are stored. If one wants to recover the positions of the individual interaction sites in the model, some maths need to be done.<br />
<br />
The position of the base, stacking and backbone sites can be recovered as follows:<br />
<br />
base site: (center) + 0.40 * (axis vector)<br />
<br />
stacking site: (center) + 0.34 * (axis vector)<br />
<br />
backbone site: (center) - 0.40 * (axis_vector)<br />
<br />
The picture in the [[Model_introduction|introduction]] might help understanding where the sites are.<br />
<br />
==External Forces==<br />
The code implements several types of external forces that can be imposed on the system that can be used either to simulate tension exerted on DNA or simply to accelerate the formation of secondary or tertiary structure. External forces can be tricky to treat, especially in a dynamics simulation, since they are an external source of work. Care should be taken in adjusting the time step, thermostat parameters and such.<br />
<br />
To enable external forces, one needs to specify <tt>external_forces = 1</tt> in the input file and also supply an external force file to read from with the key <tt>external_forces_file = <file></tt>.<br />
<br />
The syntax of the external forces file is quite simple. Examples of such files can be found in the [[Hairpin_formation|hairpin formation]] and [[Pseudoknot|Pseudoknot formation]] examples. Each force is specified within a block contained in curly brackets. Empty lines and lines beginning with an hash symbol (<tt>#</tt>) are ignored. Different forces require different keys to be present. If the file has the wrong syntax, oxDNA should spit out a sensible error message while parsing the file.<br />
<br />
The different types of forces implemented at the moment are:<br />
* harmonic trap<br />
* string <br />
* repulsion plane<br />
* mutual trap<br />
* repulsive sphere<br />
<br />
All forces act on the centre of mass of the particles.<br />
<br />
Forces of different kinds can be combined in the same simulation. There is a maximum number of 10 external forces per particle for memory reasons. This can be manually overridden recompiling the code with a different value of the macro <tt>MAX_EXT_FORCES</tt> (currently 10) in <tt>defs.h</tt>.<br />
<br />
===String===<br />
A string is implemented as a force that does not depend on the particle position. Its value can be constant or can change linearly with time. It is useful as it does not fluctuate with time.<br />
<br />
A force of this kind is specified with <tt>type = string</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''F0''' (float) the value of the force at time = 0 in simulation units (please note that the value of the time may or may not be reset when starting a simulation, depending on the input file)<br />
* '''rate''' (float) growing rate of the force (simulation units/time steps). Typical values are very small (< 10^(-5))<br />
* '''dir''' (3 floats separated by commas) direction of the force (automatically normalised by the code)<br />
<br />
The following bit of code will create an external force on the first nucleotide in the system starting at 1 simulation units (48.6 pN) and growing linearly with time at the rate of 48.6pN every million time steps. The force will pull the nucleotide along the <tt>z</tt> direction.<br />
<br />
<pre><br />
{<br />
type = string<br />
particle = 0<br />
F0 = 1.<br />
rate = 1e-6<br />
dir = 0., 0., 1.<br />
} <br />
</pre><br />
<br />
===Harmonic trap===<br />
This type of force implements an harmonic trap, of arbitrary stiffness, that can move linearly with time. It can be useful to fix the position of the nucleotides to simulate attachment to something or to implement (quasi) constant extension simulations.<br />
<br />
A force of this kind is specified with <tt>type = trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) rest position of the trap<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) speed of the trap (length simulation units/time steps)<br />
* '''dir''' (3 floats separated by commas) direction of movement of the trap<br />
<br />
Here is an example input for a harmonic trap acting on the third nucleotide constraining it to stay close to the origin. In this example the trap does not move (<tt>rate=0</tt>), but one could have it move at a constant speed along the direction specified by <tt>dir</tt>, in this case the <tt>x</tt> direction.<br />
<br />
<pre><br />
{<br />
type = trap<br />
particle = 2<br />
pos0 = 0., 0., 0.<br />
stiff = 1.0<br />
rate = 0.<br />
dir = 1.,0.,0.<br />
}<br />
</pre><br />
<br />
Please note that the trap does not comply with periodic boundary conditions. This is most likely what you want.<br />
<br />
===Rotating harmonic trap===<br />
Same as the harmonic trap, with the exception that the trap position rotates in space with constant angular velocity. Several of these can be used e.g. to twist DNA.<br />
<br />
A force of this kind is specified with <tt>type = twist</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) position of the trap when the rotation angle equals 0<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) angular velocity of the trap (length simulation units/time steps)<br />
* '''base''' (float) initial phase of the trap <br />
* '''axis''' (3 floats separated by commas) rotation axis of the trap<br />
* '''mask''' (3 floats separated by commas) masking vector of the trap - the force vector will be element-wise multiplied by the masking vector. <br />
<br />
The following is an example input for a rotating trap acting on the first nucleotide forcing it to stay close to a point that starts at <tt>pos0</tt> and then rotates around an axis containing the <tt>center</tt> point and parallel to the z axis. In this case we want to neglect the force component along the z-axis, so we set <tt> mask </tt> accordingly.<br />
<pre><br />
{<br />
type = twist<br />
particle = 0<br />
stiff = 1.00<br />
rate = 1e-5<br />
base = 0.<br />
pos0 = 15, 0.674909093169, 18.6187733563<br />
center = 13., 0.674909093169, 18.6187733563<br />
axis = 0, 0, 1<br />
mask = 1, 1, 0<br />
}<br />
</pre><br />
===Repulsion plane===<br />
This kind of external force implements a repulsion plane that constrains a particle (or the whole system) to stay on one side of it. It is implemented as a harmonic repulsion, but the stiffness can be made arbitrarily high to mimic a hard repulsion.<br />
<br />
A force of this kind is specified with <tt>type = repulsion_plane</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force. If set to the special value -1, the force will be exerted on all particles.<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * D, where D is distance from the plane. The force is exerted only if the nucleotide is below the plane)<br />
* '''dir''' (3 floats separated by commas) a direction normal to the plane<br />
* '''position''' (1 float number) specifies the position of the plane<br />
<br />
If direction is <tt> direction = u,v,w </tt> , then the plane contains all the points (x,y,z) that satisfy the equation: u*x + v*y + w*z + position = 0.<br />
Only nucleotides with coordinates (x,y,z) that satisfy u*x + v*y + w*z + position < 0 will feel the force.<br />
The force exerted on a nucleotide is equal to stiff * D, where D is the distance of the nucleotide from the plane, where <math> D = | ux + vy + wz + \mbox{position}| / \sqrt{u^2 + v^2 + w^2 }.</math><br />
For nucleotides for which u*x + v*y + w*z + position >= 0, no force will be exerted.<br />
<br />
Here is an example. This plane acts on the whole system and will not exert any force on nucleotides with a positive <tt>x</tt> coordinate. A force proportional to 48.6 pN * (<tt>x</tt> coordinate) will be exerted on all particles . <br />
<br />
<pre><br />
{<br />
type = repulsion_plane<br />
#whole system<br />
particle = -1<br />
stiff = 1. #48.6 pN /(simulation length unit) <br />
dir = 1, 0, 0<br />
position = 0<br />
}<br />
</pre><br />
<br />
If in the above example you would specify position = 3, then the force would be exerted on all nucleotides with coordinate x > -3.<br />
<br />
===Mutual trap===<br />
This force is useful to form initial configurations. It is a harmonic force that at every moment pulls a particle towards a reference particle. It is possible to specify the separation at which the force will be 0.<br />
<br />
A force of this kind is specified with <tt>type = mutual_trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''ref_particle''' (int) particle to pull towards. Please note that this particle will not feel any force (the name mutual trap is thus misleading).<br />
* '''stiff''' (float) stiffness of the trap.<br />
* '''r0''' (float) equilibrium distance of the trap.<br />
<br />
Here is an example, extracted from the [[Pseudoknot|pseudoknot formation example]]. This will pull particle 14 towards particle 39, favouring an equilibrium distance of 1.4 (which corresponds roughly to the minimum of the hydrogen bonding potential, not a coincidence). The same force with opposite sign is exerted on particle 39 through a separate force. It is not necessary to have both particles feel the force, but it usually works much better.<br />
<br />
<pre><br />
{<br />
type = mutual_trap<br />
particle = 14<br />
ref_particle = 39<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
<br />
{<br />
type = mutual_trap<br />
particle = 39<br />
ref_particle = 14<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
</pre><br />
<br />
===Repulsive sphere===<br />
This force encloses particle(s) in a repulsive sphere. The repulsion force is harmonic.<br />
<br />
A force of this kind is specified with <tt>type = sphere</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''center''' (float,float,float) the center of the sphere. This key should be specified as three comma-separated numbers (e.g. 0,0,0).<br />
* '''stiff''' (float) stiffness of the trap.<br />
* '''r0''' (float) initial radius of the sphere.<br />
* '''rate''' (float) optional: if not null, the radius of the sphere at time step t will be given by r = r0 + rate * t.<br />
<br />
==Visualisation of structures==<br />
oxDNA produces a trajectory file where all the relevant information is<br />
stored. A converter is provided (<tt>traj2vis.py</tt>) in the<br />
<tt>UTILS</tt> directory that is able to produce files in the <tt>xyz</tt><br />
and <tt>pdb</tt> formats. The same program can be used on a configuration<br />
file and it will produce a snapshot.<br />
<br />
Since the model is coarse-grained, we have to "trick" the visualisers into<br />
thinking that the interaction sites in the model are actually atoms.<br />
Advanced nucleic acids representations such as ribbons will not work on the<br />
outputs.<br />
<br />
All the images in the [[Screenshots]] page were produced with the pdb representation using UCSF chimera (see later on).<br />
<br />
===xyz format===<br />
<br />
just run <br />
<br />
<pre>$oxDNA/UTILS/traj2vis.py xyz <trajectory> <topology> </pre><br />
<br />
(where <tt>$oxDNA</tt> is the oxDNA source directory) to get the xyz representation in a file called the same as the trajectory<br />
file with <tt>.xyz</tt> appended. Please note that boundary conditions are<br />
implemented strand-wise, so strands that are bound might appear at two<br />
different sizes of the box. Also, the center of mass of the system (where<br />
each strand is weighted the same regardless of the length) is set to 0 at<br />
each frame. Carbons represent the backbone sites and oxygens the base sites.<br />
<br />
The resulting file can be read with a variety of programs. Here we will<br />
explain how to visualise it sensibly in [http://www.ks.uiuc.edu/Research/vmd/ VMD].<br />
<br />
* Run VMD and load the xyz file.<br />
* In the graphics menu, go to Representations.<br />
* In the Selected Atoms line, input <tt>name C</tt>. Also select Drawing method CPK, sphere scale 0.8 and Bond Radius 0.<br />
* In the Selected Atoms line, input <tt>name O</tt>. Also select Drawing method CPK, sphere scale 0.6 and Bond Radius 0.<br />
<br />
This should produce a ball representation of our model DNA. Bonds<br />
automatically produced by VMD are NOT meaningful in our context.<br />
<br />
===pdb format===<br />
Run <br />
<br />
<pre>$oxDNA/UTILS/traj2chimera.py <trajectory> <topology> </pre><br />
<br />
to produce a trajectory/configuration in the pdb format. A further file<br />
called <tt>chimera.com</tt> will be produced (more on this later). All<br />
comments above about periodic boundaries and centre of mass apply here as<br />
well.<br />
<br />
The pdb file can be visualised in VMD just like the xyz format, but a nicer<br />
output can be produced with [http://www.cgl.ucsf.edu/chimera/ UCSF Chimera] (although only for snapshots at<br />
the moment) as follows:<br />
<br />
Run chimera and load the pdb file. An ugly output will be displayed.<br />
<br />
Bring up the command line under the <tt>Tools → General Controls</tt> menu.<br />
Input <tt>read chimera.com</tt> in the command line and press enter. You<br />
should get a nicer visualisation with different bases in different colors,<br />
all the covalent bonds in the right place, etc.<br />
<br />
On large configurations, the production of ellipsoids will be extremely<br />
slow. You can remove it by removing the line<br />
<br />
<code>aniso scale 0.75 smoothing 4</code><br />
<br />
from the commands file. Loading the resulting file should be much faster.<br />
<br />
UCSF chimera can in turn export the scene in a variety of formats.<br />
<br />
===cogli1===<br />
<br />
OxDNA configurations and trajectories can now be directly visualized using [https://sourceforge.net/projects/cogli1/ cogli1].</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Documentation&diff=1201Documentation2019-05-22T14:44:28Z<p>Rovigattil: /* Configuration file */</p>
<hr />
<div>==Compile options==<br />
<br />
Compiling oxDNA requires that you have a working <tt>cmake</tt> software and C++ compiler on your machine. The instructions are provided in the [[Download and Installation]] section.<br />
<br />
==Usage==<br />
<br />
<pre>oxDNA input_file</pre><br />
<br />
The input file contains all the relevant information for the program to run, such as what initial configuration to use, the topology of the system, how often to print the energies to a file, etc. Please make sure you read the [[Thermostat|thermostat]] page if you use molecular dynamics.<br />
<br />
==Input file==<br />
<br />
As always in UNIX environments, everything is case sensitive.<br />
<br />
*Options are in the form key = value<br />
*There can be arbitrary spaces before and after both key and value<br />
*Line with a leading # will be treated as comments<br />
*The | (pipe) sign is the separator between the different values that can be used to specify a value for the key.<br />
*Keys between [ and ] are optional, the value after the equal sign is the default value<br />
<br />
Here we provide a list of the most commonly used input options. The complete and most up-to-date list of possible options can be found [[Input_options|here]] or in the <tt>README</tt> file in the main directory of the simulation code.<br />
<br />
The input options of the previous oxDNA version can be found [[Input_options_of_the_previous_version|here]].<br />
<br />
===Generic options===<br />
The options listed here define the generic behavior of the entire program.<br />
;[interaction_type = DNA]: DNA|DNA2|RNA|patchy|LJ<br />
: (selects the model for the simulation. DNA ([[DNA_model_introduction|oxDNA model]]) is the default option. DNA2 ([[DNA_model_introduction#oxDNA2|oxDNA2 model]]), RNA ([[RNA_model_introduction|oxRNA model]]), LJ (Lennard-Jones) and patchy particles are also implemented<br />
;[sim_type=MD]: MD|MC|VMMC<br />
:MD = Molecular Dynamics, MC = Monte Carlo, VMMC = Virtual Move Monte Carlo<br />
;backend: CPU | CUDA <br />
: (only sim_type=MD is supported if you choose CUDA backend)<br />
;backend_precision: float|double|mixed<br />
: (mixed option is available only for CUDA backend. It is recommended choice for optimal performance on CUDA machines, double is recommended for CPU simulations)<br />
;[debug=0]: 0|1<br />
: 1 if you want verbose logs, 0 otherwise.<br />
<br />
===Simulation options===<br />
The options listed here specify the behaviour of the simulation.<br />
<br />
;steps: number of steps to be performed.<br />
<br />
;[restart_step_counter=0]: 0|1<br />
:0 means that the step counter will start from the value read in the configuration file; if 1, the step counter will be reset to 0. The total duration of the simulation is unchanged.<br />
<br />
;[seed=time(NULL)]: seed for the random number generator. On Unix systems, it will use by default a number from /dev/urandom + time(NULL)<br />
<br />
;T: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
:Examples:<br />
{|<br />
|-<br />
! Value<br />
! Simulation Units<br />
|-<br />
| 0.1<br />
| 0.1<br />
|-<br />
| 300 K<br />
| 0.1<br />
|-<br />
| 300k<br />
| 0.1<br />
|-<br />
| 26.85c<br />
| 0.1<br />
|-<br />
| 26.85 C <br />
| 0.1<br />
|-<br />
|}<br />
;[fix_diffusion=1]: 0|1<br />
:If true, particles that leave the simulation box are brought back in via periodic boundary conditions. Defaults to true. <br />
;verlet_skin: if a particle moves more than verlet_skin then the lists will be updated. Its name is somewhat misleading: the actual verlet skin is 2*verlet_skin.<br />
<br />
;[back_in_box=0]: 0|1<br />
whether particles should be brought back into the box when a configuration is printed or not, defaults to false<br />
<br />
;salt_concentration: used if interaction_type = DNA2. It specifies the salt concentration in M.<br />
<br />
;[use_average_seq=1]: 0|1<br />
: specifies whether to use the default hard-coded average parameters for base-pairing and stacking interaction strengths or not. If sequence dependence is to be used, set this to 0 and specify seq_dep_file.<br />
<br />
;[seq_dep_file]: specifies the file from which the sequence dependent parameters should be read. Mandatory if use_average_seq=no, ignored otherwise. A sample file is provided (sequence_dependent_parameters.txt).<br />
<br />
;[external_forces=0]: 0|1<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file).<br />
<br />
;[external_forces_file]: specifies the file containing all the external forces' configurations. Currently there are six supported force types (see EXAMPLES/TRAPS for some examples):<br />
:*string<br />
:*twist<br />
:*trap<br />
:*repulsion_plane<br />
:*repulsion_plane_moving<br />
:*mutual_trap<br />
<br />
====Molecular dynamics simulations options====<br />
<br />
;dt: time step of the integration.<br />
<br />
;thermostat: no|refresh|brownian <br />
:no means no thermostat will be used. refresh will refresh all the particle's velocities from a maxwellian every newtonian_steps steps. john is an Anderson-like thermostat (see pt). Make sure you read [[Thermostat|thermostat]].<br />
<br />
;newtonian_steps: required if thermostat != no<br />
:number of steps after which a procedure of thermalization will be performed.<br />
<br />
;pt: used if thermostat == john. It's the probability that a particle's velocity will be refreshed during a thermalization procedure.<br />
<br />
;diff_coeff: required if pt is not specified<br />
:used internally to automatically compute the pt that would be needed if we wanted such a self diffusion coefficient. Not used if pt is set.<br />
<br />
====Monte Carlo simulations options====<br />
<br />
;[check_energy_every=10]: this number times print_energy_every gives the number of steps after which the energy will be computed from scratch and checked against the actual value computed adding energy differences.<br />
<br />
;[check_energy_threshold=1e-4]: if abs((old_energy - new_energy)/old_energy) > check_energy_threshold then the program will die and warn the user.<br />
<br />
;ensemble: NVT<br />
:ensemble of the simulation. More ensembles could be added in future versions.<br />
<br />
;delta_translation: maximum displacement (per dimension) for translational moves in simulation units.<br />
<br />
;delta_translation: maximum displacement for rotational moves in simulation units.<br />
<br />
===Input/output===<br />
The options listed here are used to manage the I/O (read and write configurations, energies and so on)<br />
<br />
;conf_file: initial configuration file. <br />
<br />
;topology: file containing the system's topology.<br />
<br />
;trajectory_file: the main output of the program. All the configurations will be appended to this file as they are printed.<br />
<br />
;[confs_to_skip=0]: valid only if conf_file is a trajectory. Skip the first confs_to_skip configurations and then load in memory the (confs_to_skip+1)th.<br />
<br />
;[lastconf_file=last_conf.dat]: this is the file where the last configuration is saved (when the program finishes or is killed). Set to last_conf.dat by default<br />
<br />
;[lastconf_file_bin]: path to the file where the last configuration will be printed in binary format, if not specified no binary configurations will be printed.<br />
<br />
;[binary_initial_conf=0]: 0|1<br />
whether the initial configuration is a binary configuration or not<br />
<br />
;[refresh_vel=0]: 0|1<br />
:if 1 the initial velocities will be refreshed from a maxwellian.<br />
<br />
;energy_file: energy output file.<br />
<br />
;[print_energy_every=1000]: this will make the program print the energies every print_energy_every steps.<br />
<br />
;[no_stdout_energy=0]: 0|1<br />
:if 1 the energy will be printed just to the energy_file.<br />
<br />
;[time_scale=linear]: linear|log_lin<br />
:using linear configurations will be saved every print_conf_interval.<br />
:using log_lin configurations will be saved logarithmically for print_conf_ppc times. After that the logarithmic sequence will restart.<br />
<br />
; [print_conf_ppc times]:<br />
mandatory only if time_scale == log_line. This is the number of printed configurations in a single logarithmic cycle.<br />
<br />
;print_conf_interval: linear interval if time_scale == linear. First step of the logarithmic scale if time_scale == log_lin.<br />
<br />
;[print_reduced_conf_every=0]: every print_reduced_conf_every steps the program will print out the reduced configurations (i.e. confs containing only the centers of mass of strands).<br />
<br />
;reduced_conf_output_dir: used if print_reduced_conf_every > 0<br />
:output directory for reduced_conf files.<br />
<br />
;[log_file=stderr]: file where generic and debug informations will be logged. If not specified then stderr will be used.<br />
<br />
;[print_timings = 0]: 0|1<br />
whether oxDNA should print out to a file performance timings at the end of the simulation or not.<br />
<br />
;[timings_filename]: path to the file where timings will be printed<br />
<br />
;[output_prefix]: the name of all output files will be preceded by this prefix, defaults to an empty string<br />
<br />
;[print_input = 0]: 0|1<br />
make oxDNA write the input key=value pairs used by the simulation in a file named input.pid, with pid being the oxDNA pid.<br />
<br />
;[equilibration_steps]: number of equilibration steps. During equilibration, oxDNA does not generate any output. Defaults to 0<br />
==Output files==<br />
*The log file contains all the relevant information about the simulation (specified options, activated external forces, warnings about misconfigurations, critical errors, etc.). If the log file is omitted, all this information will be displayed on the standard output.<br />
<br />
*The energy file layout for MD simulations is<br />
<br />
:{|<br />
| [time (steps * dt)]<br />
| [potential energy]<br />
| [kinetic energy]<br />
| [total energy]<br />
|}<br />
<br />
:while for MC simulations is<br />
<br />
:{|<br />
| [time (steps)]<br />
| [potential energy]<br />
| [acceptance ratio for translational moves]<br />
| [acceptance ratio for rotational moves]<br />
| [acceptance ratio for volume moves]<br />
|}<br />
<br />
:VMMC output also produces the following extra columns if umbrella sampling is enabled<br />
:{|<br />
|[order parameter coordinate 1]<br />
|[order parameter coordinate 1]<br />
|...<br />
|[order parameter coordinate n]<br />
|[current weight]<br />
|}<br />
<br />
:N.B. potential, kinetic and total energies are divided by the total number of particles.<br />
<br />
*Configurations are saved in the trajectory file.<br />
<br />
==Configuration and topology files==<br />
The current state of a system, as specified by oxDNA, is described by two files: a configuration file and a topology file. The configuration file contains all the general information (timestep, energy and box size) and the orientations and positions of each nucleotide. The topology file, on the other hand, keeps track of the backbone-backbone bonds between nucleotides in the same strand. Working configuration and topology files can be found in the <tt>[[Examples|EXAMPLES]]</tt> directory.<br />
<br />
===Configuration file===<br />
The first three rows of a configuration file contain the timestep <tt>T</tt> at which the configuration has been printed, the length of the box sides <tt>Lx</tt>, <tt>Ly</tt> and <tt>Lz</tt> and the total, potential and kinetic energies, <tt>Etot</tt>, <tt>U</tt> and <tt>K</tt>, respectively:<br />
<br />
<pre><br />
t = T<br />
b = Lz Ly Lz<br />
E = Etot U K<br />
</pre><br />
<br />
after this header, each row contains position of the centre of mass, orientation, velocity and angular velocity of a single nucleotide in the following order:<br />
<br />
<math>\overbrace{r_x r_y r_z}^{\rm Position} \overbrace{b_x b_y b_z}^{\rm Backbone-base\, versor} \overbrace{n_x n_y n_z}^{\rm Normal\, versor} \overbrace{v_x v_y v_z}^{\rm Velocity} \overbrace{L_x L_y L_z}^{\rm Angular velocity}</math><br />
<br />
===Topology file===<br />
The topology file stores the intra-strand, fixed bonding topology (i.e. which nucleotides share backbone links). The first row contains the total number of nucleotides <tt>N</tt> and the number of strands <tt>Ns</tt>:<br />
<br />
<pre><br />
N Ns<br />
</pre><br />
<br />
After this header, the <tt>i</tt>-th row specifies strand, base and 3' and 5' neighbors of the <tt>i</tt>-th nucleotide in this way:<br />
<br />
<pre><br />
S B 3' 5'<br />
</pre><br />
<br />
where S is the index of the strand (starting from 1) which the nucleotide belongs to, B is the base and 3' and 5' specify the index of the nucleotides with which the <tt>i</tt>-th nucleotide is bonded in the 3' and 5' direction, respectively. A <tt>-1</tt> signals that the nucleotide terminates the strand in either 3' or 5' direction. The topology file of a strand of sequence <tt>GCGTTG</tt> would be:<br />
<br />
<pre><br />
6 1<br />
1 G -1 1<br />
1 C 0 2<br />
1 G 1 3<br />
1 T 2 4<br />
1 T 3 5<br />
1 G 4 -1<br />
</pre><br />
<br />
Specifying the topology in this way can simplify the process of simulating, for example, circular DNA.<br />
<br />
===Generation of initial configurations===<br />
In order to generate initial configuration and topology files, we provide the <tt>${oxDNA}/UTILS/generate-sa.py</tt> script. The usage of the script is<br />
<br />
<pre>generate-sa.py <box side> <file with sequence></pre> <br />
<br />
where <tt><box side></tt> specifies the length of the box side in simulation units and <tt><file with sequence></tt> contains the sequence of the strands to be generated, one row per strand. If double strands are needed, each sequence must be preceded by <tt>DOUBLE</tt>. For example, a file containing<br />
<br />
<pre><br />
DOUBLE AGGGCT<br />
CCTGTA<br />
</pre><br />
<br />
would generate a double strand with a sequence <tt>AGGGCT</tt> and a single strand with a sequence <tt>CCTGTA</tt>. The sequences are given in 3'-5' order.<br />
<br />
Positions and orientations of the strands are all chosen at random in such a way that the resulting initial configuration does not contain significant excluded volume interactions between nucleotides belonging to different strands. Generated single- and double-strands have helical conformations (i.e. they are in the minimum of the intra-strand interaction energy).<br />
<br />
The output configuration and topology are stored in <tt>generated.dat</tt> and <tt>generated.top</tt>, respectively. <br />
Since this script will initialize nucleotides' velocities and angular velocities to 0, when performing a molecular (or Brownian) dynamics simulation remember to put <tt>refresh_vel = 1</tt> in the [[Documentation#Input_file|input]] file.<br />
<br />
==Analysis of configurations==<br />
The configurations produced by oxDNA can be analysed with the <tt>output_bonds.py</tt> program in <tt>${oxDNA}/UTILS/</tt> directory. This program takes as command line arguments the input file (to recover the temperature and topology file), a configuration/trajectory file and an optional number. Since <tt>output_bonds</tt> reads analyses a single configuration, the optional number selects the configuration which it needs to analyse in the trajectory. Analysing a whole trajectory can be done by looping over a counter.<br />
<br />
<br />
<tt>output_bonds</tt> can be used as follows:<br />
<pre><br />
${oxDNA}/UTILS/output_bonds.py <input_file> <trajectory_file> [counter]<br />
</pre><br />
<br />
The program outputs some debugging information to the standard error and information regarding the interaction energies to the standard output. The contributions arising from each of the terms in the potential (see the appendix of [[Publications|Ref. 2]]) are reported for each pair of nucleotides that have non-zero total interactions.<br />
<br />
This output can be easily parsed to analyse the configurations.<br />
<br />
For each pair of nucleotides that do interact in the configuration, the program prints out a line containing:<br />
* The id of the two particles (starting from 0)<br />
* The total interaction energy<br />
* The hydrogen bonding (base pairing) energy<br />
* The stacking energy<br />
* The cross stacking energy<br />
* The excluded volume energy<br />
* The FENE interaction energy<br />
* A letter indicating a status code. This will be <tt>N</tt> for pairs that interact through bonded interactions (i.e. they are neighbors along a strand) and it will be <tt>H</tt> when a base pair is present. Our definition of base pair is when two nucleotides have a hydrogen bonding energy less than -0.1 in simulation units (see [[Publications|Ref. 2]]).<br />
<br />
===Geometry of the Model===<br />
In the configuration/trajectory files only the positions and orientations of the nucleotides are stored. If one wants to recover the positions of the individual interaction sites in the model, some maths need to be done.<br />
<br />
The position of the base, stacking and backbone sites can be recovered as follows:<br />
<br />
base site: (center) + 0.40 * (axis vector)<br />
<br />
stacking site: (center) + 0.34 * (axis vector)<br />
<br />
backbone site: (center) - 0.40 * (axis_vector)<br />
<br />
The picture in the [[Model_introduction|introduction]] might help understanding where the sites are.<br />
<br />
==External Forces==<br />
The code implements several types of external forces that can be imposed on the system that can be used either to simulate tension exerted on DNA or simply to accelerate the formation of secondary or tertiary structure. External forces can be tricky to treat, especially in a dynamics simulation, since they are an external source of work. Care should be taken in adjusting the time step, thermostat parameters and such.<br />
<br />
To enable external forces, one needs to specify <tt>external_forces = 1</tt> in the input file and also supply an external force file to read from with the key <tt>external_forces_file = <file></tt>.<br />
<br />
The syntax of the external forces file is quite simple. Examples of such files can be found in the [[Hairpin_formation|hairpin formation]] and [[Pseudoknot|Pseudoknot formation]] examples. Each force is specified within a block contained in curly brackets. Empty lines and lines beginning with an hash symbol (<tt>#</tt>) are ignored. Different forces require different keys to be present. If the file has the wrong syntax, oxDNA should spit out a sensible error message while parsing the file.<br />
<br />
The different types of forces implemented at the moment are:<br />
* harmonic trap<br />
* string <br />
* repulsion plane<br />
* mutual trap<br />
* repulsive sphere<br />
<br />
All forces act on the centre of mass of the particles.<br />
<br />
Forces of different kinds can be combined in the same simulation. There is a maximum number of 10 external forces per particle for memory reasons. This can be manually overridden recompiling the code with a different value of the macro <tt>MAX_EXT_FORCES</tt> (currently 10) in <tt>defs.h</tt>.<br />
<br />
===String===<br />
A string is implemented as a force that does not depend on the particle position. Its value can be constant or can change linearly with time. It is useful as it does not fluctuate with time.<br />
<br />
A force of this kind is specified with <tt>type = string</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''F0''' (float) the value of the force at time = 0 in simulation units (please note that the value of the time may or may not be reset when starting a simulation, depending on the input file)<br />
* '''rate''' (float) growing rate of the force (simulation units/time steps). Typical values are very small (< 10^(-5))<br />
* '''dir''' (3 floats separated by commas) direction of the force (automatically normalised by the code)<br />
<br />
The following bit of code will create an external force on the first nucleotide in the system starting at 1 simulation units (48.6 pN) and growing linearly with time at the rate of 48.6pN every million time steps. The force will pull the nucleotide along the <tt>z</tt> direction.<br />
<br />
<pre><br />
{<br />
type = string<br />
particle = 0<br />
F0 = 1.<br />
rate = 1e-6<br />
dir = 0., 0., 1.<br />
} <br />
</pre><br />
<br />
===Harmonic trap===<br />
This type of force implements an harmonic trap, of arbitrary stiffness, that can move linearly with time. It can be useful to fix the position of the nucleotides to simulate attachment to something or to implement (quasi) constant extension simulations.<br />
<br />
A force of this kind is specified with <tt>type = trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) rest position of the trap<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) speed of the trap (length simulation units/time steps)<br />
* '''dir''' (3 floats separated by commas) direction of movement of the trap<br />
<br />
Here is an example input for a harmonic trap acting on the third nucleotide constraining it to stay close to the origin. In this example the trap does not move (<tt>rate=0</tt>), but one could have it move at a constant speed along the direction specified by <tt>dir</tt>, in this case the <tt>x</tt> direction.<br />
<br />
<pre><br />
{<br />
type = trap<br />
particle = 2<br />
pos0 = 0., 0., 0.<br />
stiff = 1.0<br />
rate = 0.<br />
dir = 1.,0.,0.<br />
}<br />
</pre><br />
<br />
Please note that the trap does not comply with periodic boundary conditions. This is most likely what you want.<br />
<br />
===Rotating harmonic trap===<br />
Same as the harmonic trap, with the exception that the trap position rotates in space with constant angular velocity. Several of these can be used e.g. to twist DNA.<br />
<br />
A force of this kind is specified with <tt>type = twist</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) position of the trap when the rotation angle equals 0<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) angular velocity of the trap (length simulation units/time steps)<br />
* '''base''' (float) initial phase of the trap <br />
* '''axis''' (3 floats separated by commas) rotation axis of the trap<br />
* '''mask''' (3 floats separated by commas) masking vector of the trap - the force vector will be element-wise multiplied by the masking vector. <br />
<br />
The following is an example input for a rotating trap acting on the first nucleotide forcing it to stay close to a point that starts at <tt>pos0</tt> and then rotates around an axis containing the <tt>center</tt> point and parallel to the z axis. In this case we want to neglect the force component along the z-axis, so we set <tt> mask </tt> accordingly.<br />
<pre><br />
{<br />
type = twist<br />
particle = 0<br />
stiff = 1.00<br />
rate = 1e-5<br />
base = 0.<br />
pos0 = 15, 0.674909093169, 18.6187733563<br />
center = 13., 0.674909093169, 18.6187733563<br />
axis = 0, 0, 1<br />
mask = 1, 1, 0<br />
}<br />
</pre><br />
===Repulsion plane===<br />
This kind of external force implements a repulsion plane that constrains a particle (or the whole system) to stay on one side of it. It is implemented as a harmonic repulsion, but the stiffness can be made arbitrarily high to mimic a hard repulsion.<br />
<br />
A force of this kind is specified with <tt>type = repulsion_plane</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force. If set to the special value -1, the force will be exerted on all particles.<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * D, where D is distance from the plane. The force is exerted only if the nucleotide is below the plane)<br />
* '''dir''' (3 floats separated by commas) a direction normal to the plane<br />
* '''position''' (1 float number) specifies the position of the plane<br />
<br />
If direction is <tt> direction = u,v,w </tt> , then the plane contains all the points (x,y,z) that satisfy the equation: u*x + v*y + w*z + position = 0.<br />
Only nucleotides with coordinates (x,y,z) that satisfy u*x + v*y + w*z + position < 0 will feel the force.<br />
The force exerted on a nucleotide is equal to stiff * D, where D is the distance of the nucleotide from the plane, where <math> D = | ux + vy + wz + \mbox{position}| / \sqrt{u^2 + v^2 + w^2 }.</math><br />
For nucleotides for which u*x + v*y + w*z + position >= 0, no force will be exerted.<br />
<br />
Here is an example. This plane acts on the whole system and will not exert any force on nucleotides with a positive <tt>x</tt> coordinate. A force proportional to 48.6 pN * (<tt>x</tt> coordinate) will be exerted on all particles . <br />
<br />
<pre><br />
{<br />
type = repulsion_plane<br />
#whole system<br />
particle = -1<br />
stiff = 1. #48.6 pN /(simulation length unit) <br />
dir = 1, 0, 0<br />
position = 0<br />
}<br />
</pre><br />
<br />
If in the above example you would specify position = 3, then the force would be exerted on all nucleotides with coordinate x > -3.<br />
<br />
===Mutual trap===<br />
This force is useful to form initial configurations. It is a harmonic force that at every moment pulls a particle towards a reference particle. It is possible to specify the separation at which the force will be 0.<br />
<br />
A force of this kind is specified with <tt>type = mutual_trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''ref_particle''' (int) particle to pull towards. Please note that this particle will not feel any force (the name mutual trap is thus misleading).<br />
* '''stiff''' (float) stiffness of the trap.<br />
* '''r0''' (float) equilibrium distance of the trap.<br />
<br />
Here is an example, extracted from the [[Pseudoknot|pseudoknot formation example]]. This will pull particle 14 towards particle 39, favouring an equilibrium distance of 1.4 (which corresponds roughly to the minimum of the hydrogen bonding potential, not a coincidence). The same force with opposite sign is exerted on particle 39 through a separate force. It is not necessary to have both particles feel the force, but it usually works much better.<br />
<br />
<pre><br />
{<br />
type = mutual_trap<br />
particle = 14<br />
ref_particle = 39<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
<br />
{<br />
type = mutual_trap<br />
particle = 39<br />
ref_particle = 14<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
</pre><br />
<br />
===Repulsive sphere===<br />
This force encloses particle(s) in a repulsive sphere. The repulsion force is harmonic.<br />
<br />
A force of this kind is specified with <tt>type = sphere</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''center''' (float,float,float) the center of the sphere. This key should be specified as three comma-separated numbers (e.g. 0,0,0).<br />
* '''stiff''' (float) stiffness of the trap.<br />
* '''r0''' (float) initial radius of the sphere.<br />
* '''rate''' (float) optional: if not null, the radius of the sphere at time step t will be given by r = r0 + rate * t.<br />
<br />
==Visualisation of structures==<br />
oxDNA produces a trajectory file where all the relevant information is<br />
stored. A converter is provided (<tt>traj2vis.py</tt>) in the<br />
<tt>UTILS</tt> directory that is able to produce files in the <tt>xyz</tt><br />
and <tt>pdb</tt> formats. The same program can be used on a configuration<br />
file and it will produce a snapshot.<br />
<br />
Since the model is coarse-grained, we have to "trick" the visualisers into<br />
thinking that the interaction sites in the model are actually atoms.<br />
Advanced nucleic acids representations such as ribbons will not work on the<br />
outputs.<br />
<br />
All the images in the [[Screenshots]] page were produced with the pdb representation using UCSF chimera (see later on).<br />
<br />
===xyz format===<br />
<br />
just run <br />
<br />
<pre>$oxDNA/UTILS/traj2vis.py xyz <trajectory> <topology> </pre><br />
<br />
(where <tt>$oxDNA</tt> is the oxDNA source directory) to get the xyz representation in a file called the same as the trajectory<br />
file with <tt>.xyz</tt> appended. Please note that boundary conditions are<br />
implemented strand-wise, so strands that are bound might appear at two<br />
different sizes of the box. Also, the center of mass of the system (where<br />
each strand is weighted the same regardless of the length) is set to 0 at<br />
each frame. Carbons represent the backbone sites and oxygens the base sites.<br />
<br />
The resulting file can be read with a variety of programs. Here we will<br />
explain how to visualise it sensibly in [http://www.ks.uiuc.edu/Research/vmd/ VMD].<br />
<br />
* Run VMD and load the xyz file.<br />
* In the graphics menu, go to Representations.<br />
* In the Selected Atoms line, input <tt>name C</tt>. Also select Drawing method CPK, sphere scale 0.8 and Bond Radius 0.<br />
* In the Selected Atoms line, input <tt>name O</tt>. Also select Drawing method CPK, sphere scale 0.6 and Bond Radius 0.<br />
<br />
This should produce a ball representation of our model DNA. Bonds<br />
automatically produced by VMD are NOT meaningful in our context.<br />
<br />
===pdb format===<br />
Run <br />
<br />
<pre>$oxDNA/UTILS/traj2chimera.py <trajectory> <topology> </pre><br />
<br />
to produce a trajectory/configuration in the pdb format. A further file<br />
called <tt>chimera.com</tt> will be produced (more on this later). All<br />
comments above about periodic boundaries and centre of mass apply here as<br />
well.<br />
<br />
The pdb file can be visualised in VMD just like the xyz format, but a nicer<br />
output can be produced with [http://www.cgl.ucsf.edu/chimera/ UCSF Chimera] (although only for snapshots at<br />
the moment) as follows:<br />
<br />
Run chimera and load the pdb file. An ugly output will be displayed.<br />
<br />
Bring up the command line under the <tt>Tools → General Controls</tt> menu.<br />
Input <tt>read chimera.com</tt> in the command line and press enter. You<br />
should get a nicer visualisation with different bases in different colors,<br />
all the covalent bonds in the right place, etc.<br />
<br />
On large configurations, the production of ellipsoids will be extremely<br />
slow. You can remove it by removing the line<br />
<br />
<code>aniso scale 0.75 smoothing 4</code><br />
<br />
from the commands file. Loading the resulting file should be much faster.<br />
<br />
UCSF chimera can in turn export the scene in a variety of formats.<br />
<br />
===cogli1===<br />
<br />
OxDNA configurations and trajectories can now be directly visualized using [https://sourceforge.net/projects/cogli1/ cogli1].</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Main_Page&diff=1195Main Page2019-03-18T09:22:40Z<p>Rovigattil: /* oxDNA */</p>
<hr />
<div>== oxDNA == <br />
<br />
oxDNA is a simulation code originally developed to implement the coarse-grained DNA model introduced by T. E. Ouldridge, J. P. K. Doye and A. A. Louis. It has been since reworked and it is now an extensible simulation+analysis framework. It natively supports simulations of DNA (oxDNA and oxDNA2) and RNA (oxRNA) on both CPUs and NVIDIA GPUs.<br />
<br />
The code implements Monte Carlo and Molecular Dynamics. The developers are L. Rovigatti, F. Romano, P. Šulc, B. Snodin, F. Randisi and T. E. Ouldridge in the [http://physchem.ox.ac.uk/~doye/jon/ Doye] and [http://www-thphys.physics.ox.ac.uk/people/ArdLouis/ Louis] groups at the University of Oxford. Additionally, Molecular Dynamics simulations modeling DNA-linked nanoparticles have been implemented by J. Hendricks, T. Fochtman, and B. Walcutt in the [http://self-assembly.net/ Patitz] group at the University of Arkansas.<br />
<br />
The oxDNA and oxRNA models are intended to provide a physical representation of the thermodynamic and mechanical properties of single- and double-stranded DNA and RNA, as well as the transition between the two. At the same time, the representation of DNA and RNA is sufficiently simple to allow access to assembly processes which occur on long timescales, beyond the reach of atomistic simulations. Basic examples include duplex formation from single strands, and the folding of a self-complementary single strand into a hairpin. These are the underlying processes of the fast-growing field of [http://en.wikipedia.org/wiki/DNA_nanotechnology DNA nanotechnology] and RNA nanotechnology, as well as many biophysical uses of DNA/RNA, allowing the model to be used to understand these fascinating systems.<br />
<br />
There also exists an implementation of the oxDNA and oxDNA2 models for [http://lammps.sandia.gov/ LAMMPS] in the USER-CGDNA package, developed by [http://www.oliverhenrich.com/ Oliver Henrich] (with the help of Tom E. Ouldridge, F. Romano and L. Rovigatti). The package documentation can be found [https://lammps.sandia.gov/doc/Packages_details.html#pkg-user-cgdna here]. The code comes with any regular download from the central LAMMPS repository, and it is also available [https://github.com/ohenrich/cgdna here].<br />
<br />
* [[Download and Installation]]<br />
<br />
* [[Features]]<br />
<br />
* [[DNA model introduction]]<br />
<br />
* [[RNA model introduction]]<br />
<br />
* [[Documentation]]<br />
<br />
* [[:Category:Examples|Examples]]<br />
<br />
* [[How To Write An Interaction]]<br />
<br />
* [[Publications]]<br />
<br />
* [[External Resources]]<br />
<br />
* [[Gallery of Journal Covers]]<br />
<br />
* [[Screenshots|Screenshots and movies]]<br />
<br />
* [[Gallery of studied systems]]<br />
<br />
* [[License and Copyright]]<br />
<br />
* [[Previous version]]<br />
<br />
* [[Contact information]]<br />
<br />
== News ==<br />
* Code implementing [[DNA_model_introduction#oxDNA2|oxDNA2]], a new version of the oxDNA model, is now included in the latest release. See [https://doi.org/10.1063/1.4921957 ''J. Chem. Phys.'' '''142''', 234901 (2015)] for more information about the new model.<br />
* Follow the latest updates about oxDNA on our twitter account: [https://twitter.com/ox_dna ox_dna]<br />
* More simulation movies can be found on the [https://www.youtube.com/channel/UCz3DCaoBsa9MvVSrVhyoU4A oxDNA YouTube channel]<br />
* You can post questions about the installation and usage of our code to the newly created [http://sourceforge.net/p/oxdna/discussion/ Discussion forum] for oxDNA at sourceforge.net<br />
<br />
== Acknowledgments ==<br />
<br />
We thank our co-workers C. Matek, R. Harrison and W. Smith for having contributed bits of code and/or material for the examples and our webmasters Russell Jones and Greg Agacinski for maintaining the website.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Main_Page&diff=1104Main Page2018-05-30T09:20:22Z<p>Rovigattil: </p>
<hr />
<div>== oxDNA == <br />
<br />
oxDNA is a simulation code originally developed to implement the coarse-grained DNA model introduced by T. E. Ouldridge, J. P. K. Doye and A. A. Louis. It has been since reworked and it is now an extensible simulation+analysis framework. It natively supports simulations of DNA (oxDNA and oxDNA2) and RNA (oxRNA) on both CPUs and NVIDIA GPUs.<br />
<br />
The code implements Monte Carlo and Molecular Dynamics. The developers are L. Rovigatti, F. Romano, P. Šulc, B. Snodin, F. Randisi and T. E. Ouldridge in the [http://physchem.ox.ac.uk/~doye/jon/ Doye] and [http://www-thphys.physics.ox.ac.uk/people/ArdLouis/ Louis] groups at the University of Oxford. Additionally, Molecular Dynamics simulations modeling DNA-linked nanoparticles have been implemented by J. Hendricks, T. Fochtman, and B. Walcutt in the [http://self-assembly.net/ Patitz] group at the University of Arkansas.<br />
<br />
The oxDNA and oxRNA models are intended to provide a physical representation of the thermodynamic and mechanical properties of single- and double-stranded DNA and RNA, as well as the transition between the two. At the same time, the representation of DNA and RNA is sufficiently simple to allow access to assembly processes which occur on long timescales, beyond the reach of atomistic simulations. Basic examples include duplex formation from single strands, and the folding of a self-complementary single strand into a hairpin. These are the underlying processes of the fast-growing field of [http://en.wikipedia.org/wiki/DNA_nanotechnology DNA nanotechnology] and RNA nanotechnology, as well as many biophysical uses of DNA/RNA, allowing the model to be used to understand these fascinating systems.<br />
<br />
There also exists an implementation of the oxDNA and oxDNA2 models for [http://lammps.sandia.gov/ LAMMPS] in the USER-CGDNA package, developed by [http://www.oliverhenrich.com/ Oliver Henrich] (with the help of Tom E. Ouldridge, F. Romano and L. Rovigatti). The package documentation can be found [http://lammps.sandia.gov/doc/Section_packages.html#user-cgdna here]. The code comes with any regular download from the central LAMMPS repository, and it is also available [https://github.com/ohenrich/cgdna here].<br />
<br />
* [[Download and Installation]]<br />
<br />
* [[Features]]<br />
<br />
* [[DNA model introduction]]<br />
<br />
* [[RNA model introduction]]<br />
<br />
* [[Documentation]]<br />
<br />
* [[:Category:Examples|Examples]]<br />
<br />
* [[Screenshots|Screenshots and movies]]<br />
<br />
* [[Gallery of studied systems]]<br />
<br />
* [[Publications]]<br />
<br />
* [[Gallery of Journal Covers]]<br />
<br />
* [[License and Copyright]]<br />
<br />
* [[Previous version]]<br />
<br />
* [[Contact information]]<br />
<br />
<br />
* [[How To Write An Interaction]]<br />
<br />
== News ==<br />
* Code implementing [[DNA_model_introduction#oxDNA2|oxDNA2]], a new version of the oxDNA model, is now included in the latest release. See the recent arXiv publication [http://arxiv.org/abs/1504.00821] for more information about the new model.<br />
* Follow the latest updates about oxDNA on our twitter account: [https://twitter.com/ox_dna ox_dna]<br />
* You can post questions about the installation and usage of our code to the newly created [http://sourceforge.net/p/oxdna/discussion/ Discussion forum] for oxDNA at sourceforge.net<br />
<br />
== Acknowledgments ==<br />
<br />
We thank our co-workers C. Matek, R. Harrison and W. Smith for having contributed bits of code and/or material for the examples and our webmasters Russell Jones and Greg Agacinski for maintaining the website.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Documentation&diff=1066Documentation2017-08-23T09:58:29Z<p>Rovigattil: /* External Forces */</p>
<hr />
<div>==Compile options==<br />
<br />
Compiling oxDNA requires that you have a working <tt>cmake</tt> software and C++ compiler on your machine. The instructions are provided in the [[Download and Installation]] section.<br />
<br />
==Usage==<br />
<br />
<pre>oxDNA input_file</pre><br />
<br />
The input file contains all the relevant information for the program to run, such as what initial configuration to use, the topology of the system, how often to print the energies to a file, etc. Please make sure you read the [[Thermostat|thermostat]] page if you use molecular dynamics.<br />
<br />
==Input file==<br />
<br />
As always in UNIX environments, everything is case sensitive.<br />
<br />
*Options are in the form key = value<br />
*There can be arbitrary spaces before and after both key and value<br />
*Line with a leading # will be treated as comments<br />
*The | (pipe) sign is the separator between the different values that can be used to specify a value for the key.<br />
*Keys between [ and ] are optional, the value after the equal sign is the default value<br />
<br />
Here we provide a list of the most commonly used input options. The complete and most up-to-date list of possible options can be found [[Input_options|here]] or in the <tt>README</tt> file in the main directory of the simulation code.<br />
<br />
The input options of the previous oxDNA version can be found [[Input_options_of_the_previous_version|here]].<br />
<br />
===Generic options===<br />
The options listed here define the generic behavior of the entire program.<br />
;[interaction_type = DNA]: DNA|DNA2|RNA|patchy|LJ<br />
: (selects the model for the simulation. DNA ([[DNA_model_introduction|oxDNA model]]) is the default option. DNA2 ([[DNA_model_introduction#oxDNA2|oxDNA2 model]]), RNA ([[RNA_model_introduction|oxRNA model]]), LJ (Lennard-Jones) and patchy particles are also implemented<br />
;[sim_type=MD]: MD|MC|VMMC<br />
:MD = Molecular Dynamics, MC = Monte Carlo, VMMC = Virtual Move Monte Carlo<br />
;backend: CPU | CUDA <br />
: (only sim_type=MD is supported if you choose CUDA backend)<br />
;backend_precision: float|double|mixed<br />
: (mixed option is available only for CUDA backend. It is recommended choice for optimal performance on CUDA machines, double is recommended for CPU simulations)<br />
;[debug=0]: 0|1<br />
: 1 if you want verbose logs, 0 otherwise.<br />
<br />
===Simulation options===<br />
The options listed here specify the behaviour of the simulation.<br />
<br />
;steps: number of steps to be performed.<br />
<br />
;[restart_step_counter=0]: 0|1<br />
:0 means that the step counter will start from the value read in the configuration file; if 1, the step counter will be reset to 0. The total duration of the simulation is unchanged.<br />
<br />
;[seed=time(NULL)]: seed for the random number generator. On Unix systems, it will use by default a number from /dev/urandom + time(NULL)<br />
<br />
;T: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
:Examples:<br />
{|<br />
|-<br />
! Value<br />
! Simulation Units<br />
|-<br />
| 0.1<br />
| 0.1<br />
|-<br />
| 300 K<br />
| 0.1<br />
|-<br />
| 300k<br />
| 0.1<br />
|-<br />
| 26.85c<br />
| 0.1<br />
|-<br />
| 26.85 C <br />
| 0.1<br />
|-<br />
|}<br />
;[fix_diffusion=1]: 0|1<br />
:If true, particles that leave the simulation box are brought back in via periodic boundary conditions. Defaults to true. <br />
;verlet_skin: if a particle moves more than verlet_skin then the lists will be updated. Its name is somewhat misleading: the actual verlet skin is 2*verlet_skin.<br />
<br />
;[back_in_box=0]: 0|1<br />
whether particles should be brought back into the box when a configuration is printed or not, defaults to false<br />
<br />
;salt_concentration: used if interaction_type = DNA2. It specifies the salt concentration in M.<br />
<br />
;[use_average_seq=1]: 0|1<br />
: specifies whether to use the default hard-coded average parameters for base-pairing and stacking interaction strengths or not. If sequence dependence is to be used, set this to 0 and specify seq_dep_file.<br />
<br />
;[seq_dep_file]: specifies the file from which the sequence dependent parameters should be read. Mandatory if use_average_seq=no, ignored otherwise. A sample file is provided (sequence_dependent_parameters.txt).<br />
<br />
;[external_forces=0]: 0|1<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file).<br />
<br />
;[external_forces_file]: specifies the file containing all the external forces' configurations. Currently there are six supported force types (see EXAMPLES/TRAPS for some examples):<br />
:*string<br />
:*twist<br />
:*trap<br />
:*repulsion_plane<br />
:*repulsion_plane_moving<br />
:*mutual_trap<br />
<br />
====Molecular dynamics simulations options====<br />
<br />
;dt: time step of the integration.<br />
<br />
;thermostat: no|refresh|brownian <br />
:no means no thermostat will be used. refresh will refresh all the particle's velocities from a maxwellian every newtonian_steps steps. john is an Anderson-like thermostat (see pt). Make sure you read [[Thermostat|thermostat]].<br />
<br />
;newtonian_steps: required if thermostat != no<br />
:number of steps after which a procedure of thermalization will be performed.<br />
<br />
;pt: used if thermostat == john. It's the probability that a particle's velocity will be refreshed during a thermalization procedure.<br />
<br />
;diff_coeff: required if pt is not specified<br />
:used internally to automatically compute the pt that would be needed if we wanted such a self diffusion coefficient. Not used if pt is set.<br />
<br />
====Monte Carlo simulations options====<br />
<br />
;[check_energy_every=10]: this number times print_energy_every gives the number of steps after which the energy will be computed from scratch and checked against the actual value computed adding energy differences.<br />
<br />
;[check_energy_threshold=1e-4]: if abs((old_energy - new_energy)/old_energy) > check_energy_threshold then the program will die and warn the user.<br />
<br />
;ensemble: NVT<br />
:ensemble of the simulation. More ensembles could be added in future versions.<br />
<br />
;delta_translation: maximum displacement (per dimension) for translational moves in simulation units.<br />
<br />
;delta_translation: maximum displacement for rotational moves in simulation units.<br />
<br />
===Input/output===<br />
The options listed here are used to manage the I/O (read and write configurations, energies and so on)<br />
<br />
;conf_file: initial configuration file. <br />
<br />
;topology: file containing the system's topology.<br />
<br />
;trajectory_file: the main output of the program. All the configurations will be appended to this file as they are printed.<br />
<br />
;[confs_to_skip=0]: valid only if conf_file is a trajectory. Skip the first confs_to_skip configurations and then load in memory the (confs_to_skip+1)th.<br />
<br />
;[lastconf_file=last_conf.dat]: this is the file where the last configuration is saved (when the program finishes or is killed). Set to last_conf.dat by default<br />
<br />
;[lastconf_file_bin]: path to the file where the last configuration will be printed in binary format, if not specified no binary configurations will be printed.<br />
<br />
;[binary_initial_conf=0]: 0|1<br />
whether the initial configuration is a binary configuration or not<br />
<br />
;[refresh_vel=0]: 0|1<br />
:if 1 the initial velocities will be refreshed from a maxwellian.<br />
<br />
;energy_file: energy output file.<br />
<br />
;[print_energy_every=1000]: this will make the program print the energies every print_energy_every steps.<br />
<br />
;[no_stdout_energy=0]: 0|1<br />
:if 1 the energy will be printed just to the energy_file.<br />
<br />
;[time_scale=linear]: linear|log_lin<br />
:using linear configurations will be saved every print_conf_interval.<br />
:using log_lin configurations will be saved logarithmically for print_conf_ppc times. After that the logarithmic sequence will restart.<br />
<br />
; [print_conf_ppc times]:<br />
mandatory only if time_scale == log_line. This is the number of printed configurations in a single logarithmic cycle.<br />
<br />
;print_conf_interval: linear interval if time_scale == linear. First step of the logarithmic scale if time_scale == log_lin.<br />
<br />
;[print_reduced_conf_every=0]: every print_reduced_conf_every steps the program will print out the reduced configurations (i.e. confs containing only the centers of mass of strands).<br />
<br />
;reduced_conf_output_dir: used if print_reduced_conf_every > 0<br />
:output directory for reduced_conf files.<br />
<br />
;[log_file=stderr]: file where generic and debug informations will be logged. If not specified then stderr will be used.<br />
<br />
;[print_timings = 0]: 0|1<br />
whether oxDNA should print out to a file performance timings at the end of the simulation or not.<br />
<br />
;[timings_filename]: path to the file where timings will be printed<br />
<br />
;[output_prefix]: the name of all output files will be preceded by this prefix, defaults to an empty string<br />
<br />
;[print_input = 0]: 0|1<br />
make oxDNA write the input key=value pairs used by the simulation in a file named input.pid, with pid being the oxDNA pid.<br />
<br />
;[equilibration_steps]: number of equilibration steps. During equilibration, oxDNA does not generate any output. Defaults to 0<br />
==Output files==<br />
*The log file contains all the relevant information about the simulation (specified options, activated external forces, warnings about misconfigurations, critical errors, etc.). If the log file is omitted, all this information will be displayed on the standard output.<br />
<br />
*The energy file layout for MD simulations is<br />
<br />
:{|<br />
| [time (steps * dt)]<br />
| [potential energy]<br />
| [kinetic energy]<br />
| [total energy]<br />
|}<br />
<br />
:while for MC simulations is<br />
<br />
:{|<br />
| [time (steps)]<br />
| [potential energy]<br />
| [acceptance ratio for translational moves]<br />
| [acceptance ratio for rotational moves]<br />
| [acceptance ratio for volume moves]<br />
|}<br />
<br />
:VMMC output also produces the following extra columns if umbrella sampling is enabled<br />
:{|<br />
|[order parameter coordinate 1]<br />
|[order parameter coordinate 1]<br />
|...<br />
|[order parameter coordinate n]<br />
|[current weight]<br />
|}<br />
<br />
:N.B. potential, kinetic and total energies are divided by the total number of particles.<br />
<br />
*Configurations are saved in the trajectory file.<br />
<br />
==Configuration and topology files==<br />
The current state of a system, as specified by oxDNA, is described by two files: a configuration file and a topology file. The configuration file contains all the general information (timestep, energy and box size) and the orientations and positions of each nucleotide. The topology file, on the other hand, keeps track of the backbone-backbone bonds between nucleotides in the same strand. Working configuration and topology files can be found in the <tt>[[Examples|EXAMPLES]]</tt> directory.<br />
<br />
===Configuration file===<br />
The first three rows of a configuration file contain the timestep <tt>T</tt> at which the configuration has been printed, the length of the box sides <tt>Lx</tt>, <tt>Ly</tt> and <tt>Lz</tt> and the total, potential and kinetic energies, <tt>Etot</tt>, <tt>U</tt> and <tt>K</tt>, respectively:<br />
<br />
<pre><br />
t = T<br />
b = Lz Ly Lz<br />
E = Etot U K<br />
</pre><br />
<br />
after this header, each row contains position of the centre of mass, orientation, velocity and angular velocity of a single nucleotide in the following order:<br />
<br />
<math>\overbrace{r_x r_y r_z}^{\rm Position} \overbrace{b_x b_y b_z}^{\rm Backbone-base versor} \overbrace{n_x n_y n_z}^{\rm Normal versor} \overbrace{v_x v_y v_z}^{\rm Velocity} \overbrace{L_x L_y L_z}^{\rm Angular velocity}</math><br />
<br />
===Topology file===<br />
The topology file stores the intra-strand, fixed bonding topology (i.e. which nucleotides share backbone links). The first row contains the total number of nucleotides <tt>N</tt> and the number of strands <tt>Ns</tt>:<br />
<br />
<pre><br />
N Ns<br />
</pre><br />
<br />
After this header, the <tt>i</tt>-th row specifies strand, base and 3' and 5' neighbors of the <tt>i</tt>-th nucleotide in this way:<br />
<br />
<pre><br />
S B 3' 5'<br />
</pre><br />
<br />
where S is the index of the strand (starting from 1) which the nucleotide belongs to, B is the base and 3' and 5' specify the index of the nucleotides with which the <tt>i</tt>-th nucleotide is bonded in the 3' and 5' direction, respectively. A <tt>-1</tt> signals that the nucleotide terminates the strand in either 3' or 5' direction. The topology file of a strand of sequence <tt>GCGTTG</tt> would be:<br />
<br />
<pre><br />
6 1<br />
1 G -1 1<br />
1 C 0 2<br />
1 G 1 3<br />
1 T 2 4<br />
1 T 3 5<br />
1 G 4 -1<br />
</pre><br />
<br />
Specifying the topology in this way can simplify the process of simulating, for example, circular DNA.<br />
<br />
===Generation of initial configurations===<br />
In order to generate initial configuration and topology files, we provide the <tt>${oxDNA}/UTILS/generate-sa.py</tt> script. The usage of the script is<br />
<br />
<pre>generate-sa.py <box side> <file with sequence></pre> <br />
<br />
where <tt><box side></tt> specifies the length of the box side in simulation units and <tt><file with sequence></tt> contains the sequence of the strands to be generated, one row per strand. If double strands are needed, each sequence must be preceded by <tt>DOUBLE</tt>. For example, a file containing<br />
<br />
<pre><br />
DOUBLE AGGGCT<br />
CCTGTA<br />
</pre><br />
<br />
would generate a double strand with a sequence <tt>AGGGCT</tt> and a single strand with a sequence <tt>CCTGTA</tt>. The sequences are given in 3'-5' order.<br />
<br />
Positions and orientations of the strands are all chosen at random in such a way that the resulting initial configuration does not contain significant excluded volume interactions between nucleotides belonging to different strands. Generated single- and double-strands have helical conformations (i.e. they are in the minimum of the intra-strand interaction energy).<br />
<br />
The output configuration and topology are stored in <tt>generated.dat</tt> and <tt>generated.top</tt>, respectively. <br />
Since this script will initialize nucleotides' velocities and angular velocities to 0, when performing a molecular (or Brownian) dynamics simulation remember to put <tt>refresh_vel = 1</tt> in the [[Documentation#Input_file|input]] file.<br />
<br />
==Analysis of configurations==<br />
The configurations produced by oxDNA can be analysed with the <tt>output_bonds.py</tt> program in <tt>${oxDNA}/UTILS/</tt> directory. This program takes as command line arguments the input file (to recover the temperature and topology file), a configuration/trajectory file and an optional number. Since <tt>output_bonds</tt> reads analyses a single configuration, the optional number selects the configuration which it needs to analyse in the trajectory. Analysing a whole trajectory can be done by looping over a counter.<br />
<br />
<br />
<tt>output_bonds</tt> can be used as follows:<br />
<pre><br />
${oxDNA}/UTILS/output_bonds.py <input_file> <trajectory_file> [counter]<br />
</pre><br />
<br />
The program outputs some debugging information to the standard error and information regarding the interaction energies to the standard output. The contributions arising from each of the terms in the potential (see the appendix of [[Publications|Ref. 2]]) are reported for each pair of nucleotides that have non-zero total interactions.<br />
<br />
This output can be easily parsed to analyse the configurations.<br />
<br />
For each pair of nucleotides that do interact in the configuration, the program prints out a line containing:<br />
* The id of the two particles (starting from 0)<br />
* The total interaction energy<br />
* The hydrogen bonding (base pairing) energy<br />
* The stacking energy<br />
* The cross stacking energy<br />
* The excluded volume energy<br />
* The FENE interaction energy<br />
* A letter indicating a status code. This will be <tt>N</tt> for pairs that interact through bonded interactions (i.e. they are neighbors along a strand) and it will be <tt>H</tt> when a base pair is present. Our definition of base pair is when two nucleotides have a hydrogen bonding energy less than -0.1 in simulation units (see [[Publications|Ref. 2]]).<br />
<br />
===Geometry of the Model===<br />
In the configuration/trajectory files only the positions and orientations of the nucleotides are stored. If one wants to recover the positions of the individual interaction sites in the model, some maths need to be done.<br />
<br />
The position of the base, stacking and backbone sites can be recovered as follows:<br />
<br />
base site: (center) + 0.40 * (axis vector)<br />
<br />
stacking site: (center) + 0.34 * (axis vector)<br />
<br />
backbone site: (center) - 0.40 * (axis_vector)<br />
<br />
The picture in the [[Model_introduction|introduction]] might help understanding where the sites are.<br />
<br />
==External Forces==<br />
The code implements several types of external forces that can be imposed on the system that can be used either to simulate tension exerted on DNA or simply to accelerate the formation of secondary or tertiary structure. External forces can be tricky to treat, especially in a dynamics simulation, since they are an external source of work. Care should be taken in adjusting the time step, thermostat parameters and such.<br />
<br />
To enable external forces, one needs to specify <tt>external_forces = 1</tt> in the input file and also supply an external force file to read from with the key <tt>external_forces_file = <file></tt>.<br />
<br />
The syntax of the external forces file is quite simple. Examples of such files can be found in the [[Hairpin_formation|hairpin formation]] and [[Pseudoknot|Pseudoknot formation]] examples. Each force is specified within a block contained in curly brackets. Empty lines and lines beginning with an hash symbol (<tt>#</tt>) are ignored. Different forces require different keys to be present. If the file has the wrong syntax, oxDNA should spit out a sensible error message while parsing the file.<br />
<br />
The different types of forces implemented at the moment are:<br />
* harmonic trap<br />
* string <br />
* repulsion plane<br />
* mutual trap<br />
* repulsive sphere<br />
<br />
All forces act on the centre of mass of the particles.<br />
<br />
Forces of different kinds can be combined in the same simulation. There is a maximum number of 10 external forces per particle for memory reasons. This can be manually overridden recompiling the code with a different value of the macro <tt>MAX_EXT_FORCES</tt> (currently 10) in <tt>defs.h</tt>.<br />
<br />
===String===<br />
A string is implemented as a force that does not depend on the particle position. Its value can be constant or can change linearly with time. It is useful as it does not fluctuate with time.<br />
<br />
A force of this kind is specified with <tt>type = string</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''F0''' (float) the value of the force at time = 0 in simulation units (please note that the value of the time may or may not be reset when starting a simulation, depending on the input file)<br />
* '''rate''' (float) growing rate of the force (simulation units/time steps). Typical values are very small (< 10^(-5))<br />
* '''dir''' (3 floats separated by commas) direction of the force (automatically normalised by the code)<br />
<br />
The following bit of code will create an external force on the first nucleotide in the system starting at 1 simulation units (48.6 pN) and growing linearly with time at the rate of 48.6pN every million time steps. The force will pull the nucleotide along the <tt>z</tt> direction.<br />
<br />
<pre><br />
{<br />
type = string<br />
particle = 0<br />
F0 = 1.<br />
rate = 1e-6<br />
dir = 0., 0., 1.<br />
} <br />
</pre><br />
<br />
===Harmonic trap===<br />
This type of force implements an harmonic trap, of arbitrary stiffness, that can move linearly with time. It can be useful to fix the position of the nucleotides to simulate attachment to something or to implement (quasi) constant extension simulations.<br />
<br />
A force of this kind is specified with <tt>type = trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) rest position of the trap<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) speed of the trap (length simulation units/time steps)<br />
* '''dir''' (3 floats separated by commas) direction of movement of the trap<br />
<br />
Here is an example input for a harmonic trap acting on the third nucleotide constraining it to stay close to the origin. In this example the trap does not move (<tt>rate=0</tt>), but one could have it move at a constant speed along the direction specified by <tt>dir</tt>, in this case the <tt>x</tt> direction.<br />
<br />
<pre><br />
{<br />
type = trap<br />
particle = 2<br />
pos0 = 0., 0., 0.<br />
stiff = 1.0<br />
rate = 0.<br />
dir = 1.,0.,0.<br />
}<br />
</pre><br />
<br />
Please note that the trap does not comply with periodic boundary conditions. This is most likely what you want.<br />
<br />
===Rotating harmonic trap===<br />
Same as the harmonic trap, with the exception that the trap position rotates in space with constant angular velocity. Several of these can be used e.g. to twist DNA.<br />
<br />
A force of this kind is specified with <tt>type = twist</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) position of the trap when the rotation angle equals 0<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) angular velocity of the trap (length simulation units/time steps)<br />
* '''base''' (float) initial phase of the trap <br />
* '''axis''' (3 floats separated by commas) rotation axis of the trap<br />
* '''mask''' (3 floats separated by commas) masking vector of the trap - the force vector will be element-wise multiplied by the masking vector. <br />
<br />
The following is an example input for a rotating trap acting on the first nucleotide forcing it to stay close to a point that starts at <tt>pos0</tt> and then rotates around an axis containing the <tt>center</tt> point and parallel to the z axis. In this case we want to neglect the force component along the z-axis, so we set <tt> mask </tt> accordingly.<br />
<pre><br />
{<br />
type = twist<br />
particle = 0<br />
stiff = 1.00<br />
rate = 1e-5<br />
base = 0.<br />
pos0 = 15, 0.674909093169, 18.6187733563<br />
center = 13., 0.674909093169, 18.6187733563<br />
axis = 0, 0, 1<br />
mask = 1, 1, 0<br />
}<br />
</pre><br />
===Repulsion plane===<br />
This kind of external force implements a repulsion plane that constrains a particle (or the whole system) to stay on one side of it. It is implemented as a harmonic repulsion, but the stiffness can be made arbitrarily high to mimic a hard repulsion.<br />
<br />
A force of this kind is specified with <tt>type = repulsion_plane</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force. If set to the special value -1, the force will be exerted on all particles.<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * D, where D is distance from the plane. The force is exerted only if the nucleotide is below the plane)<br />
* '''dir''' (3 floats separated by commas) a direction normal to the plane<br />
* '''position''' (1 float number) specifies the position of the plane<br />
<br />
If direction is <tt> direction = u,v,w </tt> , then the plane contains all the points (x,y,z) that satisfy the equation: u*x + v*y + w*z + position = 0.<br />
Only nucleotides with coordinates (x,y,z) that satisfy u*x + v*y + w*z + position < 0 will feel the force.<br />
The force exerted on a nucleotide is equal to stiff * D, where D is the distance of the nucleotide from the plane, where <math> D = | ux + vy + wz + \mbox{position}| / \sqrt{u^2 + v^2 + w^2 }.</math><br />
For nucleotides for which u*x + v*y + w*z + position >= 0, no force will be exerted.<br />
<br />
Here is an example. This plane acts on the whole system and will not exert any force on nucleotides with a positive <tt>x</tt> coordinate. A force proportional to 48.6 pN * (<tt>x</tt> coordinate) will be exerted on all particles . <br />
<br />
<pre><br />
{<br />
type = repulsion_plane<br />
#whole system<br />
particle = -1<br />
stiff = 1. #48.6 pN /(simulation length unit) <br />
dir = 1, 0, 0<br />
position = 0<br />
}<br />
</pre><br />
<br />
If in the above example you would specify position = 3, then the force would be exerted on all nucleotides with coordinate x > -3.<br />
<br />
===Mutual trap===<br />
This force is useful to form initial configurations. It is a harmonic force that at every moment pulls a particle towards a reference particle. It is possible to specify the separation at which the force will be 0.<br />
<br />
A force of this kind is specified with <tt>type = mutual_trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''ref_particle''' (int) particle to pull towards. Please note that this particle will not feel any force (the name mutual trap is thus misleading).<br />
* '''stiff''' (float) stiffness of the trap.<br />
* '''r0''' (float) equilibrium distance of the trap.<br />
<br />
Here is an example, extracted from the [[Pseudoknot|pseudoknot formation example]]. This will pull particle 14 towards particle 39, favouring an equilibrium distance of 1.4 (which corresponds roughly to the minimum of the hydrogen bonding potential, not a coincidence). The same force with opposite sign is exerted on particle 39 through a separate force. It is not necessary to have both particles feel the force, but it usually works much better.<br />
<br />
<pre><br />
{<br />
type = mutual_trap<br />
particle = 14<br />
ref_particle = 39<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
<br />
{<br />
type = mutual_trap<br />
particle = 39<br />
ref_particle = 14<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
</pre><br />
<br />
===Repulsive sphere===<br />
This force encloses particle(s) in a repulsive sphere. The repulsion force is harmonic.<br />
<br />
A force of this kind is specified with <tt>type = sphere</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''center''' (float,float,float) the center of the sphere. This key should be specified as three comma-separated numbers (e.g. 0,0,0).<br />
* '''stiff''' (float) stiffness of the trap.<br />
* '''r0''' (float) initial radius of the sphere.<br />
* '''rate''' (float) optional: if not null, the radius of the sphere at time step t will be given by r = r0 + rate * t.<br />
<br />
==Visualisation of structures==<br />
oxDNA produces a trajectory file where all the relevant information is<br />
stored. A converter is provided (<tt>traj2vis.py</tt>) in the<br />
<tt>UTILS</tt> directory that is able to produce files in the <tt>xyz</tt><br />
and <tt>pdb</tt> formats. The same program can be used on a configuration<br />
file and it will produce a snapshot.<br />
<br />
Since the model is coarse-grained, we have to "trick" the visualisers into<br />
thinking that the interaction sites in the model are actually atoms.<br />
Advanced nucleic acids representations such as ribbons will not work on the<br />
outputs.<br />
<br />
All the images in the [[Screenshots]] page were produced with the pdb representation using UCSF chimera (see later on).<br />
<br />
===xyz format===<br />
<br />
just run <br />
<br />
<pre>$oxDNA/UTILS/traj2vis.py xyz <trajectory> <topology> </pre><br />
<br />
(where <tt>$oxDNA</tt> is the oxDNA source directory) to get the xyz representation in a file called the same as the trajectory<br />
file with <tt>.xyz</tt> appended. Please note that boundary conditions are<br />
implemented strand-wise, so strands that are bound might appear at two<br />
different sizes of the box. Also, the center of mass of the system (where<br />
each strand is weighted the same regardless of the length) is set to 0 at<br />
each frame. Carbons represent the backbone sites and oxygens the base sites.<br />
<br />
The resulting file can be read with a variety of programs. Here we will<br />
explain how to visualise it sensibly in [http://www.ks.uiuc.edu/Research/vmd/ VMD].<br />
<br />
* Run VMD and load the xyz file.<br />
* In the graphics menu, go to Representations.<br />
* In the Selected Atoms line, input <tt>name C</tt>. Also select Drawing method CPK, sphere scale 0.8 and Bond Radius 0.<br />
* In the Selected Atoms line, input <tt>name O</tt>. Also select Drawing method CPK, sphere scale 0.6 and Bond Radius 0.<br />
<br />
This should produce a ball representation of our model DNA. Bonds<br />
automatically produced by VMD are NOT meaningful in our context.<br />
<br />
===pdb format===<br />
Run <br />
<br />
<pre>$oxDNA/UTILS/traj2chimera.py <trajectory> <topology> </pre><br />
<br />
to produce a trajectory/configuration in the pdb format. A further file<br />
called <tt>chimera.com</tt> will be produced (more on this later). All<br />
comments above about periodic boundaries and centre of mass apply here as<br />
well.<br />
<br />
The pdb file can be visualised in VMD just like the xyz format, but a nicer<br />
output can be produced with [http://www.cgl.ucsf.edu/chimera/ UCSF Chimera] (although only for snapshots at<br />
the moment) as follows:<br />
<br />
Run chimera and load the pdb file. An ugly output will be displayed.<br />
<br />
Bring up the command line under the <tt>Tools → General Controls</tt> menu.<br />
Input <tt>read chimera.com</tt> in the command line and press enter. You<br />
should get a nicer visualisation with different bases in different colors,<br />
all the covalent bonds in the right place, etc.<br />
<br />
On large configurations, the production of ellipsoids will be extremely<br />
slow. You can remove it by removing the line<br />
<br />
<code>aniso scale 0.75 smoothing 4</code><br />
<br />
from the commands file. Loading the resulting file should be much faster.<br />
<br />
UCSF chimera can in turn export the scene in a variety of formats.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=1064Publications2017-07-13T10:20:29Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://aip.scitation.org/doi/abs/10.1063/1.3552946?journalCode=jcp Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://dx.doi.org/10.1063/1.4722203 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' '''116''', 1161-11625 (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://dx.doi.org/10.1063/1.4754132 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://dx.doi.org/10.1063/1.4792252 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' '''7''', 2479-2490 (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'' '''41''', 8886-8895 (2013) <br />
#:[https://dx.doi.org/10.1093%2Fnar%2Fgkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' '''15''', 20395-20414 (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'' '''41''', 10641-10658 (2013)<br />
#:[http://dx.doi.org/10.1093/nar/gkt801 On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' '''13''', 535 (2014) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''J. Chem. Phys.'' '''140''', 154903 (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''140''', 235102 (2014)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/140/23/10.1063/1.4881424 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'' '''8''', 3567-3574 (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#Q. Wang, B. M. Pettitt, ''Biophys. J.'' '''106''', 1182–1193 (2014)<br />
#:[http://www.sciencedirect.com/science/article/pii/S0006349514000927 Modeling DNA Thermodynamics under Torsional Stress]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, P. Šulc, L. Shaw, A. A. Louis, J.P.K. Doye, ''Nucleic Acids Res.'' '''43''', 6181-6190 (2014)<br />
#:[http://nar.oxfordjournals.org/content/43/13/6181 DNA hairpins primarily promote duplex melting rather than inhibiting hybridization] ([http://arxiv.org/abs/1408.4401 arXiv])<br />
# R. Machinek, T.E. Ouldridge, N.E.C. Haley, J. Bath, A. J. Turberfield, ''Nature Comm.'' '''5''', 5324 (2014)<br />
#:[http://www.nature.com/ncomms/2014/141110/ncomms6324/full/ncomms6324.html Programmable energy landscapes for kinetic control of DNA strand displacement]<br />
# M. Mosayebi, F. Romano, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''J. Phys. Chem. B'' '''118''', 14326-14335 (2014)<br />
#:[http://arxiv.org/ct?url=http%3A%2F%2Fdx.doi.org%2F10%252E1021%2Fjp510061f&v=13bb91c1 The role of loop stacking in the dynamics of DNA hairpin formation] ([http://arxiv.org/abs/1410.1218 arXiv])<br />
# I. Y. Loh, J.Cheng, S. R. Tee, A. Efremov, and Z. Wang, ''ACS Nano'' '''8''', 10293–10304 (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn5034983 From bistate molecular switches to self-directed track-walking nanomotors]<br />
# C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''Sci. Rep.'', '''5''', 7655 (2015)<br />
#:[http://dx.doi.org/10.1038/srep07655 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA] ([http://arxiv.org/abs/1404.2869 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''J. Comput. Chem.'', '''36''', 1-8 (2015)<br />
#:[http://onlinelibrary.wiley.com/doi/10.1002/jcc.23763/abstract A comparison between parallelization approaches in molecular dynamics simulations on GPUs] ([http://arxiv.org/abs/1401.4350 arXiv])<br />
# P. Krstić, B. Ashcroft and S. Lindsay, ''Nanotechnology'', '''26''', 084001 (2015)<br />
#:[http://dx.doi.org/10.1088/0957-4484/26/8/084001 Physical model for recognition tunneling]<br />
# F. Romano and F. Sciortino, ''Phys. Rev. Lett.'' '''114''', 078104 (2015)<br />
#:[http://dx.doi.org/10.1103/PhysRevLett.114.078104 Switching Bonds in a DNA Gel: An All-DNA Vitrimer]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, A. A. Louis, J.P.K. Doye, ''J. Chem. Phys.'' '''142''', 165101 (2015)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/142/16/10.1063/1.4917199 Characterizing the bending and flexibility induced by bulges in DNA duplexes] ([http://arxiv.org/abs/1412.6309 arXiv])<br />
# M. Mosayebi, A. A. Louis, J.P.K. Doye, T. E. Ouldridge ''ACS Nano'' '''9''', 11993 (2015)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.5b04726 Force-Induced Rupture of a DNA Duplex: From Fundamentals to Force Sensors] ([http://arxiv.org/abs/1502.03623 arXiv])<br />
# T. E. Ouldridge, ''Mol. Phys.'' '''113''', 1-15 (2015)<br />
#:[http://www.tandfonline.com/doi/abs/10.1080/00268976.2014.975293 DNA nanotechnology: understanding and optimisation through simulation] ([http://arxiv.org/abs/1411.1927 arXiv])<br />
# P. Šulc, T. E. Ouldridge, F. Romano, J.P.K. Doye, A. A. Louis, ''Biophys. J.'' '''108''', 1238-1247 (2015)<br />
#:[http://dx.doi.org/10.1016/j.bpj.2015.01.023 Modelling toehold-mediated RNA strand displacement] ([http://arxiv.org/abs/1411.3239 arXiv])<br />
# B. E. K. Snodin, F. Randisi, M. Mosayebi, P. Šulc, J. S. Schreck, F. Romano, T. E. Ouldridge, R. Tsukanov, E. Nir, A. A. Louis, J. P. K. Doye, ''J. Chem. Phys.'' '''142''', 234901 (2015)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/142/23/10.1063/1.4921957 Introducing Improved Structural Properties and Salt Dependence into a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/1504.00821 arXiv])<br />
# C. Matek, P. Šulc, F. Randisi, J.P.K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''143''', 243122 (2015)<br />
#:[http://dx.doi.org/10.1063/1.4933066 Coarse-grained modelling of supercoiled RNA] ([http://arxiv.org/abs/1506.02539 arXiv])<br />
# Q. Wang, C.G. Myers, and B.M. Pettitt, ''J. Phys. Chem. B'' '''119''', 4937–4943 (2015)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acs.jpcb.5b00865 Twist-induced defects of the P-SSP7 genome revealed by modeling the cryo-EM density]<br />
# R. M. Harrison, F. Romano, T. E. Ouldridge, A. A. Louis, J.P.K. Doye, ''arXiv'' (2015)<br />
#:[http://arxiv.org/abs/1506.09005 Coarse-grained modelling of strong DNA bending I: Thermodynamics and comparison to an experimental "molecular vice"]<br />
# R. M. Harrison, F. Romano, T. E. Ouldridge, A. A. Louis, J.P.K. Doye, ''arXiv'' (2015)<br />
#:[http://arxiv.org/abs/1506.09008 Coarse-grained modelling of strong DNA bending II: Cyclization]<br />
# J. Y. Lee, T. Terakawa, Z. Qi, J. B. Steinfeld, S. Redding, Y. Kwon, W. A. Gaines, W. Zhao, P. Sung, E. C. Greene, ''Science'' '''349''', 977-981 (2015)<br />
#:[http://dx.doi.org/10.1126/science.aab2666 Base triplet stepping by the Rad51/RecA family of recombinases]<br />
# B. E. K. Snodin, F. Romano, L. Rovigatti, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''ACS Nano'' '''10''', 1724-1737 (2016)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.5b05865 Direct Simulation of the Self-Assembly of a Small DNA Origami]<br />
# V. Kočar, J. S. Schreck, S. Čeru, H. Gradišar, N. Bašić, T. Pisanski, J. P. K. Doye, and R. Jerala, ''Nat. Commun.'' '''7''', 10803 (2016)<br />
#:[http://dx.doi.org/10.1038/ncomms10803 Design principles for rapid folding of knotted DNA nanostructures]<br />
# J. S. Schreck, F. Romano, M.H. Zimmer, A.A. Louis and J.P.K. Doye, ''ACS Nano'', '''10''', 4236-4247 (2016)<br />
#:[http://dx.doi.org/10.1021/acsnano.5b07664 Characterizing DNA star-tile-based nanostructures using a coarse-grained model]<br />
# M. Liu, J. Cheng, S.R. Tee, S. Sreelatha, I.Y. Loh, and Z. Wang, ''ACS Nano'', '''10''', 5882–5890 (2016)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.6b01035 Biomimetic autonomous enzymatic nanowalker of high fuel efficiency]<br />
# J. Fernandez-Castanon, F. Bomboi, L. Rovigatti, M. Zanatta, A. Paciaroni, ''J. Chem. Phys.'' '''145''', 084910 (2016)<br />
#:[http://dx.doi.org/10.1063/1.4961398 Small-angle neutron scattering and molecular dynamics structural study of gelling DNA nanostars]<br />
# T. Sutthibutpong, C. Matek, C. Benham, G.G. Slade, A. Noy, C. Laughton, J.P.K. Doye, A.A. Louis and S.A. Harris, ''Nucl. Acids Res.'' '''44''', 9121-9130 (2016)<br />
#:[http://dx.doi.org/10.1093/nar/gkw815 Long-range correlations in the mechanics of small DNA circles under topological stress revealed by multi-scale simulation]<br />
# Q. Wang and B.M. Pettitt, ''J. Phys. Chem. Lett'' '''7''', 1042–1046 (2016)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acs.jpclett.6b00246 Sequence affects the cyclization of DNA minicircles]<br />
# A. Reinhardt, J.S. Schreck, F. Romano and J.P.K. Doye, ''J. Phys: Condens. Matter'', '''29''', 014006 (2017).<br />
#:[http://iopscience.iop.org/article/10.1088/0953-8984/29/1/014006 Self-assembly of two-dimensional binary quasicrystals: A possible route to a DNA quasicrystal] ([http://arxiv.org/abs/1607.06626 arXiv])<br />
# E. Locatelli, P. H. Handle, C. N. Likos, F. Sciortino and L. Rovigatti, ''ACS Nano'', '''11''', 2094-2102 (2017)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.6b08287 Condensation and demixing in solutions of DNA nanostars and their mixtures]<br />
# E. Skoruppa, M. Laleman, S. Nomidis, E. Carlon, arXiv (2017)<br />
#:[http://dx.doi.org/10.1063/1.4984039 DNA elasticity from coarse-grained simulations: the effect of groove asymmetry] [https://arxiv.org/abs/1703.02598 (arXiv)]<br />
# A. Suma and C. Micheletti, ''Proc. Natl. Acad. Sci. USA'', '''114''', E2991–E2997 (2017)<br />
#:[http://dx.doi.org/10.1073/pnas.1701321114 Pore translocation of knotted DNA rings]<br />
# Z. Shi, C. E. Castro and G. Arya, ''ACS Nano'', '''11''', 4617–4630 (2017)<br />
#:[http://dx.doi.org/10.1021/acsnano.7b00242 Conformational dynamics of mechanically compliant DNA nanostructures from coarse-grained molecular dynamics simulations]<br />
# H. Yagyu, J.-Y. Lee, D.-N. Kim, and O. Tabata, ''J. Phys. Chem. B'', '''121''' 5033–5039 (2017)<br />
#:[http://dx.doi.org/10.1021/acs.jpcb.7b03931 Coarse-grained molecular dynamics model of double-stranded DNA for DNA nanostructure design]<br />
# S. Vangaveti, R. J. D'Esposito, J. L. Lippens, D. Fabris and S. V. Ranganathan, ''Phys. Chem. Chem Phys'' (2017)<br />
#:[http://pubs.rsc.org/en/content/articlehtml/2017/cp/c7cp00717e A coarse-grained model for assisting the investigation of structure and dynamics of large nucleic acids by ion mobility spectrometry–mass spectrometry]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=1063Publications2017-07-13T09:37:05Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://aip.scitation.org/doi/abs/10.1063/1.3552946?journalCode=jcp Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' '''116''', 1161-11625 (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' '''7''', 2479-2490 (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'' '''41''', 8886-8895 (2013) <br />
#:[http://nar.oxfordjournals.org/cgi/content/full/gkt687?ijkey=BXQkepyS0xSnFqg&keytype=ref DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' '''15''', 20395-20414 (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'' '''41''', 10641-10658 (2013)<br />
#:[http://dx.doi.org/10.1093/nar/gkt801 On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' '''13''', 535 (2014) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''J. Chem. Phys.'' '''140''', 154903 (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''140''', 235102 (2014)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/140/23/10.1063/1.4881424 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'' '''8''', 3567-3574 (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#Q. Wang, B. M. Pettitt, ''Biophys. J.'' '''106''', 1182–1193 (2014)<br />
#:[http://www.sciencedirect.com/science/article/pii/S0006349514000927 Modeling DNA Thermodynamics under Torsional Stress]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, P. Šulc, L. Shaw, A. A. Louis, J.P.K. Doye, ''Nucleic Acids Res.'' '''43''', 6181-6190 (2014)<br />
#:[http://nar.oxfordjournals.org/content/43/13/6181 DNA hairpins primarily promote duplex melting rather than inhibiting hybridization] ([http://arxiv.org/abs/1408.4401 arXiv])<br />
# R. Machinek, T.E. Ouldridge, N.E.C. Haley, J. Bath, A. J. Turberfield, ''Nature Comm.'' '''5''', 5324 (2014)<br />
#:[http://www.nature.com/ncomms/2014/141110/ncomms6324/full/ncomms6324.html Programmable energy landscapes for kinetic control of DNA strand displacement]<br />
# M. Mosayebi, F. Romano, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''J. Phys. Chem. B'' '''118''', 14326-14335 (2014)<br />
#:[http://arxiv.org/ct?url=http%3A%2F%2Fdx.doi.org%2F10%252E1021%2Fjp510061f&v=13bb91c1 The role of loop stacking in the dynamics of DNA hairpin formation] ([http://arxiv.org/abs/1410.1218 arXiv])<br />
# I. Y. Loh, J.Cheng, S. R. Tee, A. Efremov, and Z. Wang, ''ACS Nano'' '''8''', 10293–10304 (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn5034983 From bistate molecular switches to self-directed track-walking nanomotors]<br />
# C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''Sci. Rep.'', '''5''', 7655 (2015)<br />
#:[http://dx.doi.org/10.1038/srep07655 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA] ([http://arxiv.org/abs/1404.2869 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''J. Comput. Chem.'', '''36''', 1-8 (2015)<br />
#:[http://onlinelibrary.wiley.com/doi/10.1002/jcc.23763/abstract A comparison between parallelization approaches in molecular dynamics simulations on GPUs] ([http://arxiv.org/abs/1401.4350 arXiv])<br />
# P. Krstić, B. Ashcroft and S. Lindsay, ''Nanotechnology'', '''26''', 084001 (2015)<br />
#:[http://dx.doi.org/10.1088/0957-4484/26/8/084001 Physical model for recognition tunneling]<br />
# F. Romano and F. Sciortino, ''Phys. Rev. Lett.'' '''114''', 078104 (2015)<br />
#:[http://dx.doi.org/10.1103/PhysRevLett.114.078104 Switching Bonds in a DNA Gel: An All-DNA Vitrimer]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, A. A. Louis, J.P.K. Doye, ''J. Chem. Phys.'' '''142''', 165101 (2015)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/142/16/10.1063/1.4917199 Characterizing the bending and flexibility induced by bulges in DNA duplexes] ([http://arxiv.org/abs/1412.6309 arXiv])<br />
# M. Mosayebi, A. A. Louis, J.P.K. Doye, T. E. Ouldridge ''ACS Nano'' '''9''', 11993 (2015)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.5b04726 Force-Induced Rupture of a DNA Duplex: From Fundamentals to Force Sensors] ([http://arxiv.org/abs/1502.03623 arXiv])<br />
# T. E. Ouldridge, ''Mol. Phys.'' '''113''', 1-15 (2015)<br />
#:[http://www.tandfonline.com/doi/abs/10.1080/00268976.2014.975293 DNA nanotechnology: understanding and optimisation through simulation] ([http://arxiv.org/abs/1411.1927 arXiv])<br />
# P. Šulc, T. E. Ouldridge, F. Romano, J.P.K. Doye, A. A. Louis, ''Biophys. J.'' '''108''', 1238-1247 (2015)<br />
#:[http://dx.doi.org/10.1016/j.bpj.2015.01.023 Modelling toehold-mediated RNA strand displacement] ([http://arxiv.org/abs/1411.3239 arXiv])<br />
# B. E. K. Snodin, F. Randisi, M. Mosayebi, P. Šulc, J. S. Schreck, F. Romano, T. E. Ouldridge, R. Tsukanov, E. Nir, A. A. Louis, J. P. K. Doye, ''J. Chem. Phys.'' '''142''', 234901 (2015)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/142/23/10.1063/1.4921957 Introducing Improved Structural Properties and Salt Dependence into a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/1504.00821 arXiv])<br />
# C. Matek, P. Šulc, F. Randisi, J.P.K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''143''', 243122 (2015)<br />
#:[http://dx.doi.org/10.1063/1.4933066 Coarse-grained modelling of supercoiled RNA] ([http://arxiv.org/abs/1506.02539 arXiv])<br />
# Q. Wang, C.G. Myers, and B.M. Pettitt, ''J. Phys. Chem. B'' '''119''', 4937–4943 (2015)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acs.jpcb.5b00865 Twist-induced defects of the P-SSP7 genome revealed by modeling the cryo-EM density]<br />
# R. M. Harrison, F. Romano, T. E. Ouldridge, A. A. Louis, J.P.K. Doye, ''arXiv'' (2015)<br />
#:[http://arxiv.org/abs/1506.09005 Coarse-grained modelling of strong DNA bending I: Thermodynamics and comparison to an experimental "molecular vice"]<br />
# R. M. Harrison, F. Romano, T. E. Ouldridge, A. A. Louis, J.P.K. Doye, ''arXiv'' (2015)<br />
#:[http://arxiv.org/abs/1506.09008 Coarse-grained modelling of strong DNA bending II: Cyclization]<br />
# J. Y. Lee, T. Terakawa, Z. Qi, J. B. Steinfeld, S. Redding, Y. Kwon, W. A. Gaines, W. Zhao, P. Sung, E. C. Greene, ''Science'' '''349''', 977-981 (2015)<br />
#:[http://dx.doi.org/10.1126/science.aab2666 Base triplet stepping by the Rad51/RecA family of recombinases]<br />
# B. E. K. Snodin, F. Romano, L. Rovigatti, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''ACS Nano'' '''10''', 1724-1737 (2016)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.5b05865 Direct Simulation of the Self-Assembly of a Small DNA Origami]<br />
# V. Kočar, J. S. Schreck, S. Čeru, H. Gradišar, N. Bašić, T. Pisanski, J. P. K. Doye, and R. Jerala, ''Nat. Commun.'' '''7''', 10803 (2016)<br />
#:[http://dx.doi.org/10.1038/ncomms10803 Design principles for rapid folding of knotted DNA nanostructures]<br />
# J. S. Schreck, F. Romano, M.H. Zimmer, A.A. Louis and J.P.K. Doye, ''ACS Nano'', '''10''', 4236-4247 (2016)<br />
#:[http://dx.doi.org/10.1021/acsnano.5b07664 Characterizing DNA star-tile-based nanostructures using a coarse-grained model]<br />
# M. Liu, J. Cheng, S.R. Tee, S. Sreelatha, I.Y. Loh, and Z. Wang, ''ACS Nano'', '''10''', 5882–5890 (2016)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.6b01035 Biomimetic autonomous enzymatic nanowalker of high fuel efficiency]<br />
# J. Fernandez-Castanon, F. Bomboi, L. Rovigatti, M. Zanatta, A. Paciaroni, ''J. Chem. Phys.'' '''145''', 084910 (2016)<br />
#:[http://dx.doi.org/10.1063/1.4961398 Small-angle neutron scattering and molecular dynamics structural study of gelling DNA nanostars]<br />
# T. Sutthibutpong, C. Matek, C. Benham, G.G. Slade, A. Noy, C. Laughton, J.P.K. Doye, A.A. Louis and S.A. Harris, ''Nucl. Acids Res.'' '''44''', 9121-9130 (2016)<br />
#:[http://dx.doi.org/10.1093/nar/gkw815 Long-range correlations in the mechanics of small DNA circles under topological stress revealed by multi-scale simulation]<br />
# Q. Wang and B.M. Pettitt, ''J. Phys. Chem. Lett'' '''7''', 1042–1046 (2016)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acs.jpclett.6b00246 Sequence affects the cyclization of DNA minicircles]<br />
# A. Reinhardt, J.S. Schreck, F. Romano and J.P.K. Doye, ''J. Phys: Condens. Matter'', '''29''', 014006 (2017).<br />
#:[http://iopscience.iop.org/article/10.1088/0953-8984/29/1/014006 Self-assembly of two-dimensional binary quasicrystals: A possible route to a DNA quasicrystal] ([http://arxiv.org/abs/1607.06626 arXiv])<br />
# E. Locatelli, P. H. Handle, C. N. Likos, F. Sciortino and L. Rovigatti, ''ACS Nano'', '''11''', 2094-2102 (2017)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.6b08287 Condensation and demixing in solutions of DNA nanostars and their mixtures]<br />
# E. Skoruppa, M. Laleman, S. Nomidis, E. Carlon, arXiv (2017)<br />
#:[https://arxiv.org/abs/1703.02598 DNA elasticity from coarse-grained simulations: the effect of groove asymmetry]<br />
# A. Suma and C. Micheletti, ''Proc. Natl. Acad. Sci. USA'', '''114''', E2991–E2997 (2017)<br />
#:[http://dx.doi.org/10.1073/pnas.1701321114 Pore translocation of knotted DNA rings]<br />
# Z. Shi, C. E. Castro and G. Arya, ''ACS Nano'', '''11''', 4617–4630 (2017)<br />
#:[http://dx.doi.org/10.1021/acsnano.7b00242 Conformational dynamics of mechanically compliant DNA nanostructures from coarse-grained molecular dynamics simulations]<br />
# H. Yagyu, J.-Y. Lee, D.-N. Kim, and O. Tabata, ''J. Phys. Chem. B'', '''121''' 5033–5039 (2017)<br />
#:[http://dx.doi.org/10.1021/acs.jpcb.7b03931 Coarse-grained molecular dynamics model of double-stranded DNA for DNA nanostructure design]<br />
# S. Vangaveti, R. J. D'Esposito, J. L. Lippens, D. Fabris and S. V. Ranganathan, ''Phys. Chem. Chem Phys'' (2017)<br />
#:[http://pubs.rsc.org/en/content/articlehtml/2017/cp/c7cp00717e A coarse-grained model for assisting the investigation of structure and dynamics of large nucleic acids by ion mobility spectrometry–mass spectrometry]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=1062Publications2017-07-13T09:32:50Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' '''116''', 1161-11625 (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' '''7''', 2479-2490 (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'' '''41''', 8886-8895 (2013) <br />
#:[http://nar.oxfordjournals.org/cgi/content/full/gkt687?ijkey=BXQkepyS0xSnFqg&keytype=ref DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' '''15''', 20395-20414 (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'' '''41''', 10641-10658 (2013)<br />
#:[http://dx.doi.org/10.1093/nar/gkt801 On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' '''13''', 535 (2014) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''J. Chem. Phys.'' '''140''', 154903 (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''140''', 235102 (2014)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/140/23/10.1063/1.4881424 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'' '''8''', 3567-3574 (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#Q. Wang, B. M. Pettitt, ''Biophys. J.'' '''106''', 1182–1193 (2014)<br />
#:[http://www.sciencedirect.com/science/article/pii/S0006349514000927 Modeling DNA Thermodynamics under Torsional Stress]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, P. Šulc, L. Shaw, A. A. Louis, J.P.K. Doye, ''Nucleic Acids Res.'' '''43''', 6181-6190 (2014)<br />
#:[http://nar.oxfordjournals.org/content/43/13/6181 DNA hairpins primarily promote duplex melting rather than inhibiting hybridization] ([http://arxiv.org/abs/1408.4401 arXiv])<br />
# R. Machinek, T.E. Ouldridge, N.E.C. Haley, J. Bath, A. J. Turberfield, ''Nature Comm.'' '''5''', 5324 (2014)<br />
#:[http://www.nature.com/ncomms/2014/141110/ncomms6324/full/ncomms6324.html Programmable energy landscapes for kinetic control of DNA strand displacement]<br />
# M. Mosayebi, F. Romano, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''J. Phys. Chem. B'' '''118''', 14326-14335 (2014)<br />
#:[http://arxiv.org/ct?url=http%3A%2F%2Fdx.doi.org%2F10%252E1021%2Fjp510061f&v=13bb91c1 The role of loop stacking in the dynamics of DNA hairpin formation] ([http://arxiv.org/abs/1410.1218 arXiv])<br />
# I. Y. Loh, J.Cheng, S. R. Tee, A. Efremov, and Z. Wang, ''ACS Nano'' '''8''', 10293–10304 (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn5034983 From bistate molecular switches to self-directed track-walking nanomotors]<br />
# C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''Sci. Rep.'', '''5''', 7655 (2015)<br />
#:[http://dx.doi.org/10.1038/srep07655 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA] ([http://arxiv.org/abs/1404.2869 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''J. Comput. Chem.'', '''36''', 1-8 (2015)<br />
#:[http://onlinelibrary.wiley.com/doi/10.1002/jcc.23763/abstract A comparison between parallelization approaches in molecular dynamics simulations on GPUs] ([http://arxiv.org/abs/1401.4350 arXiv])<br />
# P. Krstić, B. Ashcroft and S. Lindsay, ''Nanotechnology'', '''26''', 084001 (2015)<br />
#:[http://dx.doi.org/10.1088/0957-4484/26/8/084001 Physical model for recognition tunneling]<br />
# F. Romano and F. Sciortino, ''Phys. Rev. Lett.'' '''114''', 078104 (2015)<br />
#:[http://dx.doi.org/10.1103/PhysRevLett.114.078104 Switching Bonds in a DNA Gel: An All-DNA Vitrimer]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, A. A. Louis, J.P.K. Doye, ''J. Chem. Phys.'' '''142''', 165101 (2015)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/142/16/10.1063/1.4917199 Characterizing the bending and flexibility induced by bulges in DNA duplexes] ([http://arxiv.org/abs/1412.6309 arXiv])<br />
# M. Mosayebi, A. A. Louis, J.P.K. Doye, T. E. Ouldridge ''ACS Nano'' '''9''', 11993 (2015)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.5b04726 Force-Induced Rupture of a DNA Duplex: From Fundamentals to Force Sensors] ([http://arxiv.org/abs/1502.03623 arXiv])<br />
# T. E. Ouldridge, ''Mol. Phys.'' '''113''', 1-15 (2015)<br />
#:[http://www.tandfonline.com/doi/abs/10.1080/00268976.2014.975293 DNA nanotechnology: understanding and optimisation through simulation] ([http://arxiv.org/abs/1411.1927 arXiv])<br />
# P. Šulc, T. E. Ouldridge, F. Romano, J.P.K. Doye, A. A. Louis, ''Biophys. J.'' '''108''', 1238-1247 (2015)<br />
#:[http://dx.doi.org/10.1016/j.bpj.2015.01.023 Modelling toehold-mediated RNA strand displacement] ([http://arxiv.org/abs/1411.3239 arXiv])<br />
# B. E. K. Snodin, F. Randisi, M. Mosayebi, P. Šulc, J. S. Schreck, F. Romano, T. E. Ouldridge, R. Tsukanov, E. Nir, A. A. Louis, J. P. K. Doye, ''J. Chem. Phys.'' '''142''', 234901 (2015)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/142/23/10.1063/1.4921957 Introducing Improved Structural Properties and Salt Dependence into a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/1504.00821 arXiv])<br />
# C. Matek, P. Šulc, F. Randisi, J.P.K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''143''', 243122 (2015)<br />
#:[http://dx.doi.org/10.1063/1.4933066 Coarse-grained modelling of supercoiled RNA] ([http://arxiv.org/abs/1506.02539 arXiv])<br />
# Q. Wang, C.G. Myers, and B.M. Pettitt, ''J. Phys. Chem. B'' '''119''', 4937–4943 (2015)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acs.jpcb.5b00865 Twist-induced defects of the P-SSP7 genome revealed by modeling the cryo-EM density]<br />
# R. M. Harrison, F. Romano, T. E. Ouldridge, A. A. Louis, J.P.K. Doye, ''arXiv'' (2015)<br />
#:[http://arxiv.org/abs/1506.09005 Coarse-grained modelling of strong DNA bending I: Thermodynamics and comparison to an experimental "molecular vice"]<br />
# R. M. Harrison, F. Romano, T. E. Ouldridge, A. A. Louis, J.P.K. Doye, ''arXiv'' (2015)<br />
#:[http://arxiv.org/abs/1506.09008 Coarse-grained modelling of strong DNA bending II: Cyclization]<br />
# J. Y. Lee, T. Terakawa, Z. Qi, J. B. Steinfeld, S. Redding, Y. Kwon, W. A. Gaines, W. Zhao, P. Sung, E. C. Greene, ''Science'' '''349''', 977-981 (2015)<br />
#:[http://dx.doi.org/10.1126/science.aab2666 Base triplet stepping by the Rad51/RecA family of recombinases]<br />
# B. E. K. Snodin, F. Romano, L. Rovigatti, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''ACS Nano'' '''10''', 1724-1737 (2016)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.5b05865 Direct Simulation of the Self-Assembly of a Small DNA Origami]<br />
# V. Kočar, J. S. Schreck, S. Čeru, H. Gradišar, N. Bašić, T. Pisanski, J. P. K. Doye, and R. Jerala, ''Nat. Commun.'' '''7''', 10803 (2016)<br />
#:[http://dx.doi.org/10.1038/ncomms10803 Design principles for rapid folding of knotted DNA nanostructures]<br />
# J. S. Schreck, F. Romano, M.H. Zimmer, A.A. Louis and J.P.K. Doye, ''ACS Nano'', '''10''', 4236-4247 (2016)<br />
#:[http://dx.doi.org/10.1021/acsnano.5b07664 Characterizing DNA star-tile-based nanostructures using a coarse-grained model]<br />
# M. Liu, J. Cheng, S.R. Tee, S. Sreelatha, I.Y. Loh, and Z. Wang, ''ACS Nano'', '''10''', 5882–5890 (2016)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.6b01035 Biomimetic autonomous enzymatic nanowalker of high fuel efficiency]<br />
# J. Fernandez-Castanon, F. Bomboi, L. Rovigatti, M. Zanatta, A. Paciaroni, ''J. Chem. Phys.'' '''145''', 084910 (2016)<br />
#:[http://dx.doi.org/10.1063/1.4961398 Small-angle neutron scattering and molecular dynamics structural study of gelling DNA nanostars]<br />
# T. Sutthibutpong, C. Matek, C. Benham, G.G. Slade, A. Noy, C. Laughton, J.P.K. Doye, A.A. Louis and S.A. Harris, ''Nucl. Acids Res.'' '''44''', 9121-9130 (2016)<br />
#:[http://dx.doi.org/10.1093/nar/gkw815 Long-range correlations in the mechanics of small DNA circles under topological stress revealed by multi-scale simulation]<br />
# Q. Wang and B.M. Pettitt, ''J. Phys. Chem. Lett'' '''7''', 1042–1046 (2016)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acs.jpclett.6b00246 Sequence affects the cyclization of DNA minicircles]<br />
# A. Reinhardt, J.S. Schreck, F. Romano and J.P.K. Doye, ''J. Phys: Condens. Matter'', '''29''', 014006 (2017).<br />
#:[http://iopscience.iop.org/article/10.1088/0953-8984/29/1/014006 Self-assembly of two-dimensional binary quasicrystals: A possible route to a DNA quasicrystal] ([http://arxiv.org/abs/1607.06626 arXiv])<br />
# E. Locatelli, P. H. Handle, C. N. Likos, F. Sciortino and L. Rovigatti, ''ACS Nano'', '''11''', 2094-2102 (2017)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.6b08287 Condensation and demixing in solutions of DNA nanostars and their mixtures]<br />
# E. Skoruppa, M. Laleman, S. Nomidis, E. Carlon, arXiv (2017)<br />
#:[https://arxiv.org/abs/1703.02598 DNA elasticity from coarse-grained simulations: the effect of groove asymmetry]<br />
# A. Suma and C. Micheletti, ''Proc. Natl. Acad. Sci. USA'', '''114''', E2991–E2997 (2017)<br />
#:[http://dx.doi.org/10.1073/pnas.1701321114 Pore translocation of knotted DNA rings]<br />
# Z. Shi, C. E. Castro and G. Arya, ''ACS Nano'', '''11''', 4617–4630 (2017)<br />
#:[http://dx.doi.org/10.1021/acsnano.7b00242 Conformational dynamics of mechanically compliant DNA nanostructures from coarse-grained molecular dynamics simulations]<br />
# H. Yagyu, J.-Y. Lee, D.-N. Kim, and O. Tabata, ''J. Phys. Chem. B'', '''121''' 5033–5039 (2017)<br />
#:[http://dx.doi.org/10.1021/acs.jpcb.7b03931 Coarse-grained molecular dynamics model of double-stranded DNA for DNA nanostructure design]<br />
# S. Vangaveti, R. J. D'Esposito, J. L. Lippens, D. Fabris and S. V. Ranganathan, ''Phys. Chem. Chem Phys'' (2017)<br />
#:[http://pubs.rsc.org/en/content/articlehtml/2017/cp/c7cp00717e A coarse-grained model for assisting the investigation of structure and dynamics of large nucleic acids by ion mobility spectrometry–mass spectrometry]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Main_Page&diff=1051Main Page2017-03-31T13:46:37Z<p>Rovigattil: /* oxDNA */</p>
<hr />
<div>== oxDNA == <br />
<br />
oxDNA is a simulation code originally developed to implement the coarse-grained DNA model introduced by T. E. Ouldridge, J. P. K. Doye and A. A. Louis. It has been since reworked and it is now an extensible simulation+analysis framework. It natively supports simulations of DNA (oxDNA and oxDNA2) and RNA (oxRNA) on both CPUs and NVIDIA GPUs.<br />
<br />
The code implements Monte Carlo and Molecular Dynamics. The developers are L. Rovigatti, F. Romano, P. Šulc, B. Snodin, F. Randisi and T. E. Ouldridge in the [http://physchem.ox.ac.uk/~doye/jon/ Doye] and [http://www-thphys.physics.ox.ac.uk/people/ArdLouis/ Louis] groups at the University of Oxford. Additionally, Molecular Dynamics simulations modeling DNA-linked nanoparticles have been implemented by J. Hendricks, T. Fochtman, and B. Walcutt in the [http://self-assembly.net/ Patitz] group at the University of Arkansas.<br />
<br />
The oxDNA and oxRNA models are intended to provide a physical representation of the thermodynamic and mechanical properties of single- and double-stranded DNA and RNA, as well as the transition between the two. At the same time, the representation of DNA and RNA is sufficiently simple to allow access to assembly processes which occur on long timescales, beyond the reach of atomistic simulations. Basic examples include duplex formation from single strands, and the folding of a self-complementary single strand into a hairpin. These are the underlying processes of the fast-growing field of [http://en.wikipedia.org/wiki/DNA_nanotechnology DNA nanotechnology] and RNA nanotechnology, as well as many biophysical uses of DNA/RNA, allowing the model to be used to understand these fascinating systems.<br />
<br />
There also exists an implementation of the oxDNA and oxDNA2 models for [http://lammps.sandia.gov/ LAMMPS] in the USER-CGDNA package, developed by [http://www.oliverhenrich.com/ Oliver Henrich] (with the help of Tom E. Ouldridge, F. Romano and L. Rovigatti). The package documentation can be found [http://lammps.sandia.gov/doc/Section_packages.html#user-cgdna here], while the code is available [https://ccpforge.cse.rl.ac.uk/gf/project/cgdna/ here].<br />
<br />
* [[Download and Installation]]<br />
<br />
* [[Features]]<br />
<br />
* [[DNA model introduction]]<br />
<br />
* [[RNA model introduction]]<br />
<br />
* [[Documentation]]<br />
<br />
* [[:Category:Examples|Examples]]<br />
<br />
* [[Screenshots|Screenshots and movies]]<br />
<br />
* [[Gallery of studied systems]]<br />
<br />
* [[Publications]]<br />
<br />
* [[Gallery of Journal Covers]]<br />
<br />
* [[License and Copyright]]<br />
<br />
* [[Previous version]]<br />
<br />
* [[Contact information]]<br />
<br />
== News ==<br />
* Code implementing [[DNA_model_introduction#oxDNA2|oxDNA2]], a new version of the oxDNA model, is now included in the latest release. See the recent arXiv publication [http://arxiv.org/abs/1504.00821] for more information about the new model.<br />
* Follow the latest updates about oxDNA on our twitter account: [https://twitter.com/ox_dna ox_dna]<br />
* You can post questions about the installation and usage of our code to the newly created [http://sourceforge.net/p/oxdna/discussion/ Discussion forum] for oxDNA at sourceforge.net<br />
<br />
== Acknowledgments ==<br />
<br />
We thank our co-workers C. Matek, R. Harrison and W. Smith for having contributed bits of code and/or material for the examples and our webmasters Russell Jones and Greg Agacinski for maintaining the website.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Main_Page&diff=1032Main Page2017-01-13T14:33:39Z<p>Rovigattil: /* oxDNA */</p>
<hr />
<div>== oxDNA == <br />
<br />
oxDNA is a simulation code originally developed to implement the coarse-grained DNA model introduced by T. E. Ouldridge, J. P. K. Doye and A. A. Louis. It has been since reworked and it is now an extensible simulation+analysis framework. It natively supports DNA (oxDNA model), RNA (oxRNA model), Lennard-Jones and patchy particle simulations on both CPUs and NVIDIA GPUs.<br />
<br />
The code implements Monte Carlo and Molecular Dynamics and can be used as a basis to numerically study DNA, RNA, Lennard-Jones and patchy particle systems. The developers are L. Rovigatti, F. Romano, P. Šulc, B. Snodin, F. Randisi and T. E. Ouldridge in the [http://physchem.ox.ac.uk/~doye/jon/ Doye] and [http://www-thphys.physics.ox.ac.uk/people/ArdLouis/ Louis] groups at the University of Oxford. Additionally, Molecular Dynamics simulations modeling DNA-linked nanoparticles have been implemented by J. Hendricks, T. Fochtman, and B. Walcutt in the [http://self-assembly.net/ Patitz] group at the University of Arkansas.<br />
<br />
The oxDNA and oxRNA models are intended to provide a physical representation of the thermodynamic and mechanical properties of single- and double-stranded DNA and RNA, as well as the transition between the two. At the same time, the representation of DNA and RNA is sufficiently simple to allow access to assembly processes which occur on long timescales, beyond the reach of atomistic simulations. Basic examples include duplex formation from single strands, and the folding of a self-complementary single strand into a hairpin. These are the underlying processes of the fast-growing field of [http://en.wikipedia.org/wiki/DNA_nanotechnology DNA nanotechnology] and RNA nanotechnology, as well as many biophysical uses of DNA/RNA, allowing the model to be used to understand these fascinating systems.<br />
<br />
* [[Download and Installation]]<br />
<br />
* [[Features]]<br />
<br />
* [[DNA model introduction]]<br />
<br />
* [[RNA model introduction]]<br />
<br />
* [[Documentation]]<br />
<br />
* [[:Category:Examples|Examples]]<br />
<br />
* [[Screenshots|Screenshots and movies]]<br />
<br />
* [[Gallery of studied systems]]<br />
<br />
* [[Publications]]<br />
<br />
* [[Gallery of Journal Covers]]<br />
<br />
* [[License and Copyright]]<br />
<br />
* [[Previous version]]<br />
<br />
* [[Contact information]]<br />
<br />
== News ==<br />
* Code implementing [[DNA_model_introduction#oxDNA2|oxDNA2]], a new version of the oxDNA model, is now included in the latest release. See the recent arXiv publication [http://arxiv.org/abs/1504.00821] for more information about the new model.<br />
* Follow the latest updates about oxDNA on our twitter account: [https://twitter.com/ox_dna ox_dna]<br />
* You can post questions about the installation and usage of our code to the newly created [http://sourceforge.net/p/oxdna/discussion/ Discussion forum] for oxDNA at sourceforge.net<br />
<br />
== Acknowledgments ==<br />
<br />
We thank our co-workers C. Matek, R. Harrison and W. Smith for having contributed bits of code and/or material for the examples and our webmasters Russell Jones and Greg Agacinski for maintaining the website.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Making_a_simulation_movie_with_a_running_plot&diff=1023Making a simulation movie with a running plot2016-11-26T15:50:08Z<p>Rovigattil: </p>
<hr />
<div>[[Category:Examples]]<br />
<br />
oxDNA simulations can be very informative to look at if presented in the form of a movie. Here we'll see how to make one with <tt>cogli1</tt>, a lightweight visualisation tool that can draw oxDNA configurations natively. It's so lightweight that can quickly render configurations with thousands of nucleotides, unlike other visualisation tools we've tried in the past. <br />
<br />
== Making a movie ==<br />
<br />
The only pre-requisite for this tutorial is cogli1, a very simple visualization program that can be downloaded [https://sourceforge.net/projects/cogli1/ here]. Note that some of the options used in the tutorial require the bleeding-edge version, which can be checked out with the following command:<br />
<br />
<pre><br />
svn checkout svn://svn.code.sf.net/p/cogli1/code/ cogli1-code<br />
</pre><br />
<br />
To make a movie, we are going to load a trajectory in <tt>cogli1</tt>, choose a view, and then export each frame in the simulation as a trajectory file. Then we'll render them in <tt>povray</tt> and convert them in a movie with <tt>mencoder</tt>. Make sure these programs are installed before running this tutorial.<br />
<br />
# Open the trajectory with <tt>cogli1</tt>:<br />
#:<pre><br />
#::cogli1 --always-centre -I -v -m -t prova.top trajectory.dat</pre>The only necessary option is <tt>-t</tt> (though you will want to use <tt>-m</tt> if you're using the DNA2 interaction), which specifies the topology file. The others are nice for this particular system and for many others, but you might or might not want to use them for the system you're working on. Their use is as follows:<br />
#*;<tt>-I</tt><br />
#*: rotate the system to attempt fix its orientation in space. Simulated objects often float freely in solution and can rotate very sharply from a snapshot to the other, so that a movie would be confusing. This tries to copmensate for that. This does fail from time to time, so you might want to double check that everything works fine before rendering the final, hi-quality version of your images.<br />
#*;<tt>-v</tt><br />
#*: Start the simulation with a centered configuration.<br />
#*;<tt>--always-centre</tt><br />
#*: Move the system around to keep its center of mass to the centre of the simulation box throughout all the frames<br />
#*;<tt>-m</tt><br />
#*:Show oxDNA2 nucleotides, which present major-minor groove asimmetry (just like real DNA), unlike oxDNA1.<br />
#:Several other options can be used. You can see the documentation for <tt>cogli1</tt> by launching it without any other arguments.<br />
# Find a view that you like by moving the configuration around, zooming in, zooming out, etc. See the <tt>cogli1</tt> documentation for details on how to do this. Verify that the view is good for every frame in your trajectory by skimming through it, holding the + button. When you are satisfied that you've found a good view, just press <br />
#:<pre><br />
#::u</pre><br />
#: to save the simulation snapshot to a <tt>.cpy</tt> file. An example of a good view for this system is saved in <tt> sample_view.cpy </tt>.<br />
# Now let's export each trajectory frames to <tt>.pov</tt>.<br />
#:<pre><br />
#::cogli1 -o -l view.cpy -t prova.top trajectory.dat</pre><br />
#: where <tt> view.cpy</tt> is the name of your view. Note the -o option, which tells cogli1 to generate pov files without showing any GUI window. This will produce as many <tt>.pov</tt> files as there are simulation snapshots, and each of them will generate a movie frame. You can edit any <tt>.pov</tt> file if you so wish, replace it with one taken from another view, or with something completely different if you feel like playing Tyler Durden :)<br />
# Rendering the images in povray can take a long, time, so first we're going to do that with a low resolution to quickly create a preview. Use the command:<br />
#:<pre><br />
#:: for d in $(ls -v1 *.pov); do povray -D +H600 +W860 $d; done</pre><br />
#: in order to generate the png images at a low resolution, with 600 pixels of height and 860 of width (i.e. with a format of 16:10). Further decrease the resolution if you want it to run even faster, or change the aspect ration as you please.<br />
# Encode the povray images in a <tt>.avi</tt> movie with the commands (use only one of the two mencoder commands)<br />
#:<pre><br />
#::ls -1v output_*.png > storyboard.txt<br />
#::mencoder mf://@storyboard.txt -mf w=860:h=600:fps=6:type=png -ovc xvid -xvidencopts bitrate=200 -o preview.avi<br />
#::mencoder mf://@storyboard.txt -mf w=860:h=600:fps=6:type=png -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o preview.avi # this usually results in a higher-quality movie<br />
</pre><br />
#:Notice that the width and height of the movie should be the same as the one used in the povray command above.<br />
#:;w and h<br />
#::respectively the width and hegiht of the movie (in pixels, here 3200 and 2400). This should be the same as the output_*.png files if you don't want the screen to view to be distorted.<br />
#:;fps<br />
#::the number of frames per second (here 6).<br />
#:;png<br />
#::the type of image (here png)<br />
#:;ovc<br />
#::the codec used (here <tt>xvid</tt>)<br />
#:;xvidencopts bitrate<br />
#:: the bitrate, which is an option of the xvid codec (here set to 200)<br />
#:;o<br />
#::the name of the movie file (here <tt>output.avi</tt>).<br />
# Visualise the movie with the editor of choice and verify that everything is fine. Go back to the previous points if you see that something isn't quite right.<br />
# If you're happy with the view of the movie, you might want to actually use a better resolution. Notice that povray might take a few hours or days to render the scenes depending on your GPU. Notice that if you are going to make a video with a running plot in the top/bottom part of the screen and the simulation movie in the other (i.e. using the <tt>append</tt> below) you'll need to accomodate the resolution for that, so that if e.g. you want to keep the aspect ratio of the video at 16:10 and your plot takes e.g. 20% of the screen you'll want to use a resolution of 1920x1000, so that the plot can be created with a resolution of 1920x200 and the composite frames have a resolution of 1920x1200. The encoded video is higher quality for the same amount of disk space if you allow <tt>mencoder</tt> to compress it in time as well as in space. This is done by using the two-pass mode as described below:<br />
#:<pre><br />
#::for d in $(ls -v1 *.pov); do povray -D +A +H1200 +W1920 $d; done<br />
#::ls -1v output_*.png > storyboard.txt<br />
#::mencoder mf://@storyboard.txt -mf w=1920:h=1200:fps=6:type=png -ovc xvid -xvidencopts pass=1 -o /dev/null<br />
#::mencoder mf://@storyboard.txt -mf w=1920:h=1200:fps=6:type=png -ovc xvid -xvidencopts pass=2:bitrate=3000 -o output.avi</pre><br />
# Your video is ready! Enjoy :-D See below how to add a running plot superimposed to the video or above it.<br />
<br />
== Adding a running plot ==<br />
Sometimes a system undergoes a structural change that can be seen in the variation of some physical quantity. It's then nice to show the plot updating as the system's configuration evolves. To do that: , but <br />
# create the <tt>.png</tt> frames as we do in the section above (again, you probably want to do this in 2 steps if your system is demanding to render on your machine).<br />
# Create the plots of the quantity you want to show. Here we'll use gnuplot. This can be done with e.g. the following <tt>gnuplot</tt> commands, which should work in <tt>gnuplot</tt> >=4.6. If you're stuck with an old version of gnuplot that doesn't support for loops, you can use another program to generate a text file that writes the instructions to be performed at every iteration of the loop, and then run the resulting script in gnuplot. In this example we'll create plots for the energy of the system, which is not a terribly informative quantity for this system and so I might change this example to something else in the future.<br />
#:<pre><br />
#::set terminal png linewidth 4 font 'arial,28pt' size 3200,600<br />
#::set xrange [25e3:25e3*40]<br />
#::set yrange [-1.42; -1.24]<br />
#::set xlabel 'time [SU]'<br />
#::set ylabel 'Energy/# particles [SU]'<br />
#::set grid<br />
#::unset key<br />
#::do for [i = 0:39]{ set out 'plot_'.i.'.png'; plot 'energy.dat' every 1000::1000::1000*(i+1) w lp }<br />
</pre> <br />
notice that several things should be changed here according to your needs, including: <br />
#*the terminal type (to change the font, resolution, linewidth, etc). The resolution should be compatible with the one of the simulation snapshots (see last point above).<br />
#*the xrange, to make sure that it fits all the points, just barely).<br />
#*the yrange, to make sure that everything fits as needed).<br />
#*the plot command, to change the appearence of the plot, the line-type, how many frames do we have, whether to print the observable only when we have a frame or for all the frames up until a point, (type <tt> help every</tt> in gnuplot to learn more about that) etc.<br />
#*possibly adding some modifiers before plotting, including title, etc.<br />
#*any other edit you might wish to make<br />
#After both points above are finished, you can compose the images by either pasting the plots on the simulation snapshots, or appending the images together. This can easily be done with `convert` on linux and cygwin, with either of the following 2 lines: <br />
#:<pre><br />
#::TO SUPERIMPOSE THE PLOT TO THE SIMULATION SNAPSHOT``<br />
#::for i in {0..39}; do convert trajectory.dat_${i}_time_*.png plot_${i}.png -composite output_${i}.png; done<br />
#::OR TO APPEND IT ABOVE IT<br />
#::for i in {0..39}; do convert trajectory.dat_${i}_time_*.png plot_${i}.png -append output_${i}.png; done</pre><br />
#:swap the order of the plots and the simulations snapshots above to have the plot display below the simulation system instead.<br />
# Convert the png files into a movie, with <tt>mencoder</tt> or <tt>ffmpeg</tt>, as usual, with:<br />
<pre><br />
ls -1v output_*.png > storyboard.txt<br />
mencoder mf://@storyboard.txt -mf w=3200:h=2400:fps=6:type=png -ovc xvid -xvidencopts bitrate=200 -o output.avi<br />
</pre><br />
<br />
<br />
An example of this thing is the movie that I'm attaching here [[sample movie]]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Making_a_simulation_movie_with_a_running_plot&diff=1022Making a simulation movie with a running plot2016-11-26T12:10:49Z<p>Rovigattil: </p>
<hr />
<div>[[Category:Examples]]<br />
<br />
oxDNA simulations can be very informative to look at if presented in the form of a movie. Here we'll see how to make one with <tt>cogli1</tt>, a lightweight visualisation tool that can draw oxDNA configurations natively. It's so lightweight that can quickly render configurations with thousands of nucleotides, unlike other visualisation tools we've tried in the past. <br />
<br />
== Making a movie ==<br />
<br />
The only pre-requisite for this tutorial is cogli1, a very simple visualization program that can be downloaded [https://sourceforge.net/projects/cogli1/ here]. Note that some of the options used in the tutorial require the bleeding-edge version, which can be checked out with the following command:<br />
<br />
<pre><br />
svn checkout svn://svn.code.sf.net/p/cogli1/code/ cogli1-code<br />
</pre><br />
<br />
To make a movie, we are going to load a trajectory in <tt>cogli1</tt>, choose a view, and then export each frame in the simulation as a trajectory file. Then we'll render them in <tt>povray</tt> and convert them in a movie with <tt>mencoder</tt>. Make sure these programs are installed before running this tutorial.<br />
<br />
# Open the trajectory with <tt>cogli1</tt>:<br />
#:<pre><br />
#::cogli1 --always-centre -I -v -m -t prova.top trajectory.dat</pre>The only necessary option is <tt>-t</tt> (though you will want to use <tt>-m</tt> if you're using the DNA2 interaction), which specifies the topology file. The others are nice for this particular system and for many others, but you might or might not want to use them for the system you're working on. Their use is as follows:<br />
#*;<tt>-I</tt><br />
#*: rotate the system to attempt fix its orientation in space. Simulated objects often float freely in solution and can rotate very sharply from a snapshot to the other, so that a movie would be confusing. This tries to copmensate for that. This does fail from time to time, so you might want to double check that everything works fine before rendering the final, hi-quality version of your images.<br />
#*;<tt>-v</tt><br />
#*: Start the simulation with a centered configuration.<br />
#*;<tt>--always-centre</tt><br />
#*: Move the system around to keep its center of mass to the centre of the simulation box throughout all the frames<br />
#*;<tt>-m</tt><br />
#*:Show oxDNA2 nucleotides, which present major-minor groove asimmetry (just like real DNA), unlike oxDNA1.<br />
#:Several other options can be used. You can see the documentation for <tt>cogli1</tt> by launching it without any other arguments.<br />
# Find a view that you like by moving the configuration around, zooming in, zooming out, etc. See the <tt>cogli1</tt> documentation for details on how to do this. Verify that the view is good for every frame in your trajectory by skimming through it, holding the + button. When you are satisfied that you've found a good view, just press <br />
#:<pre><br />
#::u</pre><br />
#: to save the simulation snapshot to a <tt>.cpy</tt> file. An example of a good view for this system is saved in <tt> sample_view.cpy </tt>.<br />
# Now let's export each trajectory frames to <tt>.pov</tt>.<br />
#:<pre><br />
#::cogli1 -o -l view.cpy -t prova.top trajectory.dat</pre><br />
#: where <tt> view.cpy</tt> is the name of your view. Note the -o option, which tells cogli1 to generate pov files without showing any GUI window. This will produce as many <tt>.pov</tt> files as there are simulation snapshots, and each of them will generate a movie frame. You can edit any <tt>.pov</tt> file if you so wish, replace it with one taken from another view, or with something completely different if you feel like playing Tyler Durden :)<br />
# Rendering the images in povray can take a long, time, so first we're going to do that with a low resolution to quickly create a preview. Use the command:<br />
#:<pre><br />
#:: for d in $(ls -v1 *.pov); do povray -D +H600 +W860 $d; done</pre><br />
#: in order to generate the png images at a low resolution, with 600 pixels of height and 860 of width (i.e. with a format of 16:10). Further decrease the resolution if you want it to run even faster, or change the aspect ration as you please.<br />
# Encode the povray images in a <tt>.avi</tt> movie with the commands<br />
#:<pre><br />
#::ls -1v output_*.png > storyboard.txt<br />
#::mencoder mf://@storyboard.txt -mf w=860:h=600:fps=6:type=png -ovc xvid -xvidencopts bitrate=200 -o preview.avi</pre><br />
#:Notice that the width and height of the movie should be the same as the one used in the povray command above.<br />
#:;w and h<br />
#::respectively the width and hegiht of the movie (in pixels, here 3200 and 2400). This should be the same as the output_*.png files if you don't want the screen to view to be distorted.<br />
#:;fps<br />
#::the number of frames per second (here 6).<br />
#:;png<br />
#::the type of image (here png)<br />
#:;ovc<br />
#::the codec used (here <tt>xvid</tt>)<br />
#:;xvidencopts bitrate<br />
#:: the bitrate, which is an option of the xvid codec (here set to 200)<br />
#:;o<br />
#::the name of the movie file (here <tt>output.avi</tt>).<br />
# Visualise the movie with the editor of choice and verify that everything is fine. Go back to the previous points if you see that something isn't quite right.<br />
# If you're happy with the view of the movie, you might want to actually use a better resolution. Notice that povray might take a few hours or days to render the scenes depending on your GPU. Notice that if you are going to make a video with a running plot in the top/bottom part of the screen and the simulation movie in the other (i.e. using the <tt>append</tt> below) you'll need to accomodate the resolution for that, so that if e.g. you want to keep the aspect ratio of the video at 16:10 and your plot takes e.g. 20% of the screen you'll want to use a resolution of 1920x1000, so that the plot can be created with a resolution of 1920x200 and the composite frames have a resolution of 1920x1200. The encoded video is higher quality for the same amount of disk space if you allow <tt>mencoder</tt> to compress it in time as well as in space. This is done by using the two-pass mode as described below:<br />
#:<pre><br />
#::for d in $(ls -v1 *.pov); do povray -D +A +H1200 +W1920 $d; done<br />
#::ls -1v output_*.png > storyboard.txt<br />
#::mencoder mf://@storyboard.txt -mf w=1920:h=1200:fps=6:type=png -ovc xvid -xvidencopts pass=1 -o /dev/null<br />
#::mencoder mf://@storyboard.txt -mf w=1920:h=1200:fps=6:type=png -ovc xvid -xvidencopts pass=2:bitrate=3000 -o output.avi</pre><br />
# Your video is ready! Enjoy :-D See below how to add a running plot superimposed to the video or above it.<br />
<br />
== Adding a running plot ==<br />
Sometimes a system undergoes a structural change that can be seen in the variation of some physical quantity. It's then nice to show the plot updating as the system's configuration evolves. To do that: , but <br />
# create the <tt>.png</tt> frames as we do in the section above (again, you probably want to do this in 2 steps if your system is demanding to render on your machine).<br />
# Create the plots of the quantity you want to show. Here we'll use gnuplot. This can be done with e.g. the following <tt>gnuplot</tt> commands, which should work in <tt>gnuplot</tt> >=4.6. If you're stuck with an old version of gnuplot that doesn't support for loops, you can use another program to generate a text file that writes the instructions to be performed at every iteration of the loop, and then run the resulting script in gnuplot. In this example we'll create plots for the energy of the system, which is not a terribly informative quantity for this system and so I might change this example to something else in the future.<br />
#:<pre><br />
#::set terminal png linewidth 4 font 'arial,28pt' size 3200,600<br />
#::set xrange [25e3:25e3*40]<br />
#::set yrange [-1.42; -1.24]<br />
#::set xlabel 'time [SU]'<br />
#::set ylabel 'Energy/# particles [SU]'<br />
#::set grid<br />
#::unset key<br />
#::do for [i = 0:39]{ set out 'plot_'.i.'.png'; plot 'energy.dat' every 1000::1000::1000*(i+1) w lp }<br />
</pre> <br />
notice that several things should be changed here according to your needs, including: <br />
#*the terminal type (to change the font, resolution, linewidth, etc). The resolution should be compatible with the one of the simulation snapshots (see last point above).<br />
#*the xrange, to make sure that it fits all the points, just barely).<br />
#*the yrange, to make sure that everything fits as needed).<br />
#*the plot command, to change the appearence of the plot, the line-type, how many frames do we have, whether to print the observable only when we have a frame or for all the frames up until a point, (type <tt> help every</tt> in gnuplot to learn more about that) etc.<br />
#*possibly adding some modifiers before plotting, including title, etc.<br />
#*any other edit you might wish to make<br />
#After both points above are finished, you can compose the images by either pasting the plots on the simulation snapshots, or appending the images together. This can easily be done with `convert` on linux and cygwin, with either of the following 2 lines: <br />
#:<pre><br />
#::TO SUPERIMPOSE THE PLOT TO THE SIMULATION SNAPSHOT``<br />
#::for i in {0..39}; do convert trajectory.dat_${i}_time_*.png plot_${i}.png -composite output_${i}.png; done<br />
#::OR TO APPEND IT ABOVE IT<br />
#::for i in {0..39}; do convert trajectory.dat_${i}_time_*.png plot_${i}.png -append output_${i}.png; done</pre><br />
#:swap the order of the plots and the simulations snapshots above to have the plot display below the simulation system instead.<br />
# Convert the png files into a movie, with <tt>mencoder</tt> or <tt>ffmpeg</tt>, as usual, with:<br />
<pre><br />
ls -1v output_*.png > storyboard.txt<br />
mencoder mf://@storyboard.txt -mf w=3200:h=2400:fps=6:type=png -ovc xvid -xvidencopts bitrate=200 -o output.avi<br />
</pre><br />
<br />
<br />
An example of this thing is the movie that I'm attaching here [[sample movie]]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Making_a_simulation_movie_with_a_running_plot&diff=1017Making a simulation movie with a running plot2016-11-04T15:57:37Z<p>Rovigattil: /* Making a movie */</p>
<hr />
<div><br />
oxDNA simulations can be very informative to look at if presented in the form of a movie. Here we'll see how to make one with <tt>cogli1</tt>, a lightweight visualisation tool that can draw oxDNA configurations natively. It's so lightweight that can quickly render configurations with thousands of nucleotides, unlike other visualisation tools we've tried in the past. <br />
<br />
== Making a movie ==<br />
<br />
The only pre-requisite for this tutorial is cogli1, a very simple visualization program that can be downloaded [https://sourceforge.net/projects/cogli1/ here]. Note that some of the options used in the tutorial require the bleeding-edge version, which can be checked out with the following command:<br />
<br />
<pre><br />
svn checkout svn://svn.code.sf.net/p/cogli1/code/ cogli1-code<br />
</pre><br />
<br />
To make a movie, we are going to load a trajectory in <tt>cogli1</tt>, choose a view, and then export each frame in the simulation as a trajectory file. Then we'll render them in <tt>povray</tt> and convert them in a movie with <tt>mencoder</tt>. Make sure these programs are installed before running this tutorial.<br />
<br />
# Open the trajectory with <tt>cogli1</tt>:<br />
#:<pre><br />
#::cogli1 --always-centre -I -v -m -t prova.top trajectory.dat</pre>The only necessary option is <tt>-t</tt> (though you will want to use <tt>-m</tt> if you're using the DNA2 interaction), which specifies the topology file. The others are nice for this particular system and for many others, but you might or might not want to use them for the system you're working on. Their use is as follows:<br />
#*;<tt>-I</tt><br />
#*: rotate the system to attempt fix its orientation in space. Simulated objects often float freely in solution and can rotate very sharply from a snapshot to the other, so that a movie would be confusing. This tries to copmensate for that. This does fail from time to time, so you might want to double check that everything works fine before rendering the final, hi-quality version of your images.<br />
#*;<tt>-v</tt><br />
#*: Start the simulation with a centered configuration.<br />
#*;<tt>--always-centre</tt><br />
#*: Move the system around to keep its center of mass to the centre of the simulation box throughout all the frames<br />
#*;<tt>-m</tt><br />
#*:Show oxDNA2 nucleotides, which present major-minor groove asimmetry (just like real DNA), unlike oxDNA1.<br />
#:Several other options can be used. You can see the documentation for <tt>cogli1</tt> by launching it without any other arguments.<br />
# Find a view that you like by moving the configuration around, zooming in, zooming out, etc. See the <tt>cogli1</tt> documentation for details on how to do this. Verify that the view is good for every frame in your trajectory by skimming through it, holding the + button. When you are satisfied that you've found a good view, just press <br />
#:<pre><br />
#::u</pre><br />
#: to save the simulation snapshot to a <tt>.cpy</tt> file. An example of a good view for this system is saved in <tt> sample_view.cpy </tt>.<br />
# Now let's export each trajectory frames to <tt>.pov</tt>.<br />
#:<pre><br />
#::cogli1 -o -l view.cpy -t prova.top trajectory.dat</pre><br />
#: where <tt> view.cpy</tt> is the name of your view. Note the -o option, which tells cogli1 to generate pov files without showing any GUI window. This will produce as many <tt>.pov</tt> files as there are simulation snapshots, and each of them will generate a movie frame. You can edit any <tt>.pov</tt> file if you so wish, replace it with one taken from another view, or with something copletely different if you feel like playing Tyler Durden :)<br />
# Rendering the images in povray can take a long, time, so first we're going to do that with a low resolution to quickly create a preview. Use the command:<br />
#:<pre><br />
#:: povray -D +H600 +W860 *.pov</pre><br />
#: in order to generate the png images at a low resolution, with 600 pixels of height and 860 of width (i.e. with a format of 16:10). Further decrease the resolution if you want it to run even faster, or change the aspect ration as you please.<br />
# Encode the povray images in a <tt>.avi</tt> movie with the commands<br />
#:<pre><br />
#::ls -1v output_*.png > storyboard.txt<br />
#::mencoder mf://@storyboard.txt -mf w=860:h=600:fps=6:type=png -ovc xvid -xvidencopts bitrate=200 -o preview.avi</pre><br />
#:Notice that the width and height of the movie should be the same as the one used in the povray command above.<br />
#:;w and h<br />
#::respectively the width and hegiht of the movie (in pixels, here 3200 and 2400). This should be the same as the output_*.png files if you don't want the screen to view to be distorted.<br />
#:;fps<br />
#::the number of frames per second (here 6).<br />
#:;png<br />
#::the type of image (here png)<br />
#:;ovc<br />
#::the codec used (here <tt>xvid</tt>)<br />
#:;xvidencopts bitrate<br />
#:: the bitrate, which is an option of the xvid codec (here set to 200)<br />
#:;o<br />
#::the name of the movie file (here <tt>output.avi</tt>).<br />
# Visualise the movie with the editor of choice and verify that everything is fine. Go back to the previous points if you see that something isn't quite right.<br />
# If you're happy with the view of the movie, you might want to actually use a better resolution. Notice that povray might take a few hours or days to render the scenes depending on your GPU. Notice that if you are going to make a video with a running plot in the top/bottom part of the screen and the simulation movie in the other (i.e. using the <tt>append</tt> below) you'll need to accomodate the resolution for that, so that if e.g. you want to keep the aspect ratio of the video at 16:10 and your plot takes e.g. 20% of the screen you'll want to use a resolution of 1920x1000, so that the plot can be created with a resolution of 1920x200 and the composite frames have a resolution of 1920x1200.<br />
#:<pre><br />
#::povray -D +A +H1200 +W1920 *.pov<br />
#::ls -1v output_*.png > storyboard.txt<br />
#::mencoder mf://@storyboard.txt -mf w=1920:h=1200:fps=6:type=png -ovc xvid -xvidencopts bitrate=600 -o output.avi</pre><br />
# Your video is ready! Enjoy :-D See below how to add a running plot superimposed to the video or above it.<br />
<br />
== Adding a running plot ==<br />
Sometimes a system undergoes a structural change that can be seen in the variation of some physical quantity. It's then nice to show the plot updating as the system's configuration evolves. To do that: , but <br />
# create the <tt>.png</tt> frames as we do in the section above (again, you probably want to do this in 2 steps if your system is demanding to render on your machine).<br />
# Create the plots of the quantity you want to show. Here we'll use gnuplot. This can be done with e.g. the following <tt>gnuplot</tt> commands, which should work in <tt>gnuplot</tt> >=4.6. If you're stuck with an old version of gnuplot that doesn't support for loops, you can use another program to generate a text file that writes the instructions to be performed at every iteration of the loop, and then run the resulting script in gnuplot. In this example we'll create plots for the energy of the system, which is not a terribly informative quantity for this system and so I might change this example to something else in the future.<br />
#:<pre><br />
#::set terminal png linewidth 4 font 'arial,28pt' size 3200,600<br />
#::set xrange [25e3:25e3*40]<br />
#::set yrange [-1.42; -1.24]<br />
#::set xlabel 'time [SU]'<br />
#::set ylabel 'Energy/# particles [SU]'<br />
#::set grid<br />
#::unset key<br />
#::do for [i = 0:39]{ set out 'plot_'.i.'.png'; plot 'energy.dat' every 1000::1000::1000*(i+1) w lp }<br />
</pre> <br />
notice that several things should be changed here according to your needs, including: <br />
#*the terminal type (to change the font, resolution, linewidth, etc). The resolution should be compatible with the one of the simulation snapshots (see last point above).<br />
#*the xrange, to make sure that it fits all the points, just barely).<br />
#*the yrange, to make sure that everything fits as needed).<br />
#*the plot command, to change the appearence of the plot, the line-type, how many frames do we have, whether to print the observable only when we have a frame or for all the frames up until a point, (type <tt> help every</tt> in gnuplot to learn more about that) etc.<br />
#*possibly adding some modifiers before plotting, including title, etc.<br />
#*any other edit you might wish to make<br />
#After both points above are finished, you can compose the images by either pasting the plots on the simulation snapshots, or appending the images together. This can easily be done with `convert` on linux and cygwin, with either of the following 2 lines: <br />
#:<pre><br />
#::TO SUPERIMPOSE THE PLOT TO THE SIMULATION SNAPSHOT``<br />
#::for i in {0..39}; do convert trajectory.dat_${i}_time_*.png plot_${i}.png -composite output_${i}.png; done<br />
#::OR TO APPEND IT ABOVE IT<br />
#::for i in {0..39}; do convert trajectory.dat_${i}_time_*.png plot_${i}.png -append output_${i}.png; done</pre><br />
#:swap the order of the plots and the simulations snapshots above to have the plot display below the simulation system instead.<br />
# Convert the png files into a movie, with <tt>mencoder</tt> or <tt>ffmpeg</tt>, as usual, with:<br />
<pre><br />
ls -1v output_*.png > storyboard.txt<br />
mencoder mf://@storyboard.txt -mf w=3200:h=2400:fps=6:type=png -ovc xvid -xvidencopts bitrate=200 -o output.avi<br />
</pre><br />
<br />
<br />
An example of this thing is the movie that I'm attaching here [[sample movie]]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=1002Publications2016-02-29T12:11:14Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' '''116''', 1161-11625 (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' '''7''', 2479-2490 (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'' (2013) <br />
#:[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' '''15''', 20395-20414 (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'', (2013)<br />
#:[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' '''13''', 535 (2014) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''J. Chem. Phys.'' '''140''', 154903 (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''140''', 235102 (2014)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/140/23/10.1063/1.4881424 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'' '''8''', 3567-3574 (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#Q. Wang, B. M. Pettitt, ''Biophys. J.'' '''106''', 1182–1193 (2014)<br />
#:[http://www.sciencedirect.com/science/article/pii/S0006349514000927 Modeling DNA Thermodynamics under Torsional Stress]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, P. Šulc, L. Shaw, A. A. Louis, J.P.K. Doye, ''Nucleic Acids Res.'' '''43''', 6181-6190 (2014)<br />
#:[http://nar.oxfordjournals.org/content/43/13/6181 DNA hairpins primarily promote duplex melting rather than inhibiting hybridization] ([http://arxiv.org/abs/1408.4401 arXiv])<br />
# R. Machinek, T.E. Ouldridge, N.E.C. Haley, J. Bath, A. J. Turberfield, ''Nature Comm.'' '''5''', (2014)<br />
#:[http://www.nature.com/ncomms/2014/141110/ncomms6324/full/ncomms6324.html Programmable energy landscapes for kinetic control of DNA strand displacement]<br />
# M. Mosayebi, F. Romano, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''J. Phys. Chem. B'' '''118''', 14326-14335 (2014)<br />
#:[http://arxiv.org/ct?url=http%3A%2F%2Fdx.doi.org%2F10%252E1021%2Fjp510061f&v=13bb91c1 The role of loop stacking in the dynamics of DNA hairpin formation] ([http://arxiv.org/abs/1410.1218 arXiv])<br />
# C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''Sci. Rep.'', '''5''', 7655 (2015)<br />
#:[http://dx.doi.org/10.1038/srep07655 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA] ([http://arxiv.org/abs/1404.2869 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''J. Comput. Chem.'', '''36''', 1 (2015)<br />
#:[http://onlinelibrary.wiley.com/doi/10.1002/jcc.23763/pdf A comparison between parallelization approaches in molecular dynamics simulations on GPUs] ([http://arxiv.org/abs/1401.4350 arXiv])<br />
# P. Krstić, B. Ashcroft and S. Lindsay, ''Nanotechnology'', (2015)<br />
#:[http://dx.doi.org/10.1088/0957-4484/26/8/084001 Physical model for recognition tunneling]<br />
# F. Romano and F. Sciortino, ''Phys. Rev. Lett.'' '''114''', 078104 (2015)<br />
#:[http://dx.doi.org/10.1103/PhysRevLett.114.078104 Switching Bonds in a DNA Gel: An All-DNA Vitrimer]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, A. A. Louis, J.P.K. Doye, ''J. Chem. Phys.'' '''142''', 165101 (2015)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/142/16/10.1063/1.4917199 Characterizing the bending and flexibility induced by bulges in DNA duplexes] ([http://arxiv.org/abs/1412.6309 arXiv])<br />
# M. Mosayebi, A. A. Louis, J.P.K. Doye, T. E. Ouldridge ''ACS Nano'' '''9''', 11993 (2015)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/acsnano.5b04726 Force-Induced Rupture of a DNA Duplex: From Fundamentals to Force Sensors] ([http://arxiv.org/abs/1502.03623 arXiv])<br />
# T. E. Ouldridge, ''Mol. Phys.'' '''113''', 1-15 (2015)<br />
#:[http://www.tandfonline.com/doi/abs/10.1080/00268976.2014.975293 DNA nanotechnology: understanding and optimisation through simulation] ([http://arxiv.org/abs/1411.1927 arXiv])<br />
# P. Šulc, T. E. Ouldridge, F. Romano, J.P.K. Doye, A. A. Louis, ''Biophys. J.'' '''108''', iss. 5, 1238-1247 (2015)<br />
#:[http://dx.doi.org/10.1016/j.bpj.2015.01.023 Modelling toehold-mediated RNA strand displacement] ([http://arxiv.org/abs/1411.3239 arXiv])<br />
# B. E. K. Snodin, F. Randisi, M. Mosayebi, P. Šulc, J. S. Schreck, F. Romano, T. E. Ouldridge, R. Tsukanov, E. Nir, A. A. Louis, J. P. K. Doye, ''J. Chem. Phys.'' '''142''', 234901 (2015)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/142/23/10.1063/1.4921957 Introducing Improved Structural Properties and Salt Dependence into a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/1504.00821 arXiv])<br />
# C. Matek, P. Šulc, F. Randisi, J.P.K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''143''', 243122 (2015)<br />
#:[http://dx.doi.org/10.1063/1.4933066 Coarse-grained modelling of supercoiled RNA] ([http://arxiv.org/abs/1506.02539 arXiv])<br />
# R. M. Harryson, F. Romano, T. E. Ouldridge, A. A. Louis, J.P.K. Doye, ''arXiv'' (2015)<br />
#:[http://arxiv.org/abs/1506.09005 Coarse-grained modelling of strong DNA bending I: Thermodynamics and comparison to an experimental "molecular vice"]<br />
# R. M. Harryson, F. Romano, T. E. Ouldridge, A. A. Louis, J.P.K. Doye, ''arXiv'' (2015)<br />
#:[http://arxiv.org/abs/1506.09008 Coarse-grained modelling of strong DNA bending II: Cyclization]<br />
# J. Y. Lee, T. Terakawa, Z. Qi, J. B. Steinfeld, S. Redding, Y. Kwon, W. A. Gaines, W. Zhao, P. Sung, E. C. Greene, ''Science'' '''349''', 977-981 (2015)<br />
#:[http://dx.doi.org/10.1126/science.aab2666 Base triplet stepping by the Rad51/RecA family of recombinases]<br />
# B.E.K. Snodin, F. Romano, L. Rovigatti, T.E. Ouldridge, A.A. Louis, J.P.K. Doye, ''ACS Nano'' '''10''', 1724-1737 (2016)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Direct Simulation of the Self-Assembly of a Small DNA Origami]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=995Publications2015-11-20T09:45:35Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' '''13''', 535 (2014) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'', (2013) <br />
#:[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'', (2013)<br />
#:[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''J. Chem. Phys.'' '''140''', 154903 (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''J. Comput. Chem.'', '''36''', 1 (2015)<br />
#:[http://onlinelibrary.wiley.com/doi/10.1002/jcc.23763/pdf A comparison between parallelization approaches in molecular dynamics simulations on GPUs] ([http://arxiv.org/abs/1401.4350 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''140''', 235102 (2014)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/140/23/10.1063/1.4881424 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'', (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''Sci. Rep.'', '''5''', 7655 (2015)<br />
#:[http://dx.doi.org/10.1038/srep07655 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA] ([http://arxiv.org/abs/1404.2869 arXiv])<br />
#Q. Wang, B. M. Pettitt, ''Biophys. J.'' '''106''', 1182–1193 (2014)<br />
#:[http://www.sciencedirect.com/science/article/pii/S0006349514000927 Modeling DNA Thermodynamics under Torsional Stress]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, P. Šulc, L. Shaw, A. A. Louis, J.P.K. Doye, ''Nucleic Acids Res.'' '''43''', 6181-6190 (2014)<br />
#:[http://nar.oxfordjournals.org/content/43/13/6181 DNA hairpins primarily promote duplex melting rather than inhibiting hybridization] ([http://arxiv.org/abs/1408.4401 arXiv])<br />
# R. Machinek, T.E. Ouldridge, N.E.C. Haley, J. Bath, A. J. Turberfield, ''Nature Comm.'' (2014)<br />
#:[http://www.nature.com/ncomms/2014/141110/ncomms6324/full/ncomms6324.html Programmable energy landscapes for kinetic control of DNA strand displacement]<br />
# M. Mosayebi, F. Romano, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''J. Phys. Chem. B'' '''118''', 14326-14335 (2014)<br />
#:[http://arxiv.org/ct?url=http%3A%2F%2Fdx.doi.org%2F10%252E1021%2Fjp510061f&v=13bb91c1 The role of loop stacking in the dynamics of DNA hairpin formation] ([http://arxiv.org/abs/1410.1218 arXiv])<br />
# P. Krstić, B. Ashcroft and S. Lindsay, ''Nanotechnology'', (2015)<br />
#:[http://dx.doi.org/10.1088/0957-4484/26/8/084001 Physical model for recognition tunneling]<br />
# F. Romano and F. Sciortino, ''Phys. Rev. Lett.'' '''114''', 078104 (2015)<br />
#:[http://dx.doi.org/10.1103/PhysRevLett.114.078104 Switching Bonds in a DNA Gel: An All-DNA Vitrimer]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, A. A. Louis, J.P.K. Doye, ''J. Chem. Phys.'' '''142''', 165101 (2015)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/142/16/10.1063/1.4917199 Characterizing the bending and flexibility induced by bulges in DNA duplexes] ([http://arxiv.org/abs/1412.6309 arXiv])<br />
# M. Mosayebi, A. A. Louis, J.P.K. Doye, T. E. Ouldridge ''arxiv'' (2015)<br />
#:[http://arxiv.org/abs/1502.03623 Force-induced rupture of a DNA duplex]<br />
# T. E. Ouldridge, ''Mol. Phys.'' '''113''', 1-15 (2015)<br />
#:[http://www.tandfonline.com/doi/abs/10.1080/00268976.2014.975293 DNA nanotechnology: understanding and optimisation through simulation] ([http://arxiv.org/abs/1411.1927 arXiv])<br />
# P. Šulc, T. E. Ouldridge, F. Romano, J.P.K. Doye, A. A. Louis, ''Biophys. J.'' '''108''', iss. 5, 1238-1247 (2015)<br />
#:[http://dx.doi.org/10.1016/j.bpj.2015.01.023 Modelling toehold-mediated RNA strand displacement] ([http://arxiv.org/abs/1411.3239 arXiv])<br />
# B. E. K. Snodin, F. Randisi, M. Mosayebi, P. Šulc, J. S. Schreck, F. Romano, T. E. Ouldridge, R. Tsukanov, E. Nir, A. A. Louis, J. P. K. Doye, ''J. Chem. Phys.'' '''142''', 234901 (2015)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/142/23/10.1063/1.4921957 Introducing Improved Structural Properties and Salt Dependence into a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/1504.00821 arXiv])<br />
# C. Matek, P. Šulc, F. Randisi, J.P.K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''143''', 243122 (2015)<br />
#:[http://dx.doi.org/10.1063/1.4933066 Coarse-grained modelling of supercoiled RNA] ([http://arxiv.org/abs/1506.02539 arXiv])<br />
# R. M. Harryson, F. Romano, T. E. Ouldridge, A. A. Louis, J.P.K. Doye, ''arXiv'' (2015)<br />
#:[http://arxiv.org/abs/1506.09005 Coarse-grained modelling of strong DNA bending I: Thermodynamics and comparison to an experimental "molecular vice"]<br />
# R. M. Harryson, F. Romano, T. E. Ouldridge, A. A. Louis, J.P.K. Doye, ''arXiv'' (2015)<br />
#:[http://arxiv.org/abs/1506.09008 Coarse-grained modelling of strong DNA bending II: Cyclization]<br />
# J. Y. Lee, T. Terakawa, Z. Qi, J. B. Steinfeld, S. Redding, Y. Kwon, W. A. Gaines, W. Zhao, P. Sung, E. C. Greene, ''Science'' '''349''', 977-981 (2015)<br />
#:[http://dx.doi.org/10.1126/science.aab2666 Base triplet stepping by the Rad51/RecA family of recombinases]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=License_and_Copyright&diff=994License and Copyright2015-11-19T19:22:19Z<p>Rovigattil: </p>
<hr />
<div>oxDNA is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.<br />
<br />
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<br />
<br />
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. You can also find it on the GNU web site:<br />
<br />
[http://www.gnu.org/copyleft/gpl.html http://www.gnu.org/copyleft/gpl.html]<br />
<br />
A copy of the GNU General Public License version 3 can be found in the [[Download_and_Installation#Download|source]] tarball.<br />
<br />
==Referencing==<br />
We kindly ask you to reference oxDNA and its authors in any publication for which oxDNA was used. Since you are not legally required to do so, it is up to your common sense to decide whether you want to comply with this request or not.<br />
<br />
You can cite us in this way:<br />
<br />
*P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
<br />
or, if you use [http://en.wikipedia.org/wiki/BibTeX BibTeX], <br />
<br />
<pre><br />
@Article{oxDNA,<br />
author = {Petr \v{S}ulc and Flavio Romano and Thomas E. Ouldridge and Lorenzo Rovigatti and Jonathan P. K. Doye and Ard A. Louis},<br />
title = {Sequence-dependent thermodynamics of a coarse-grained DNA model},<br />
publisher = {AIP},<br />
year = {2012},<br />
journal = {The Journal of Chemical Physics},<br />
volume = {137},<br />
number = {13},<br />
eid = {135101},<br />
numpages = {14},<br />
pages = {135101},<br />
keywords = {biology computing; DNA; melting point; molecular biophysics; molecular configurations; thermodynamics},<br />
url = {http://link.aip.org/link/?JCP/137/135101/1},<br />
doi = {10.1063/1.4754132}<br />
}<br />
</pre><br />
<br />
If you use the CUDA backend, please cite at least<br />
<br />
*L. Rovigatti, P. Šulc, I. Z. Reguly,Flavio Romano, ''J. Comput. Chem.'' '''36''', 1 (2015)<br />
<br />
<pre><br />
@article {oxDNA_edge,<br />
author = {Rovigatti, Lorenzo and Šulc, Petr and Reguly, István Z. and Romano, Flavio},<br />
title = {A comparison between parallelization approaches in molecular dynamics simulations on GPUs},<br />
journal = {Journal of Computational Chemistry},<br />
volume = {36},<br />
number = {1},<br />
issn = {1096-987X},<br />
url = {http://dx.doi.org/10.1002/jcc.23763},<br />
doi = {10.1002/jcc.23763},<br />
pages = {1--8},<br />
keywords = {graphics processing unit, parallelization, molecular dynamics, soft matter},<br />
year = {2015},<br />
}<br />
<br />
</pre><br />
<br />
<br />
and, if you use the oxRNA model as well, please also cite<br />
<br />
*P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis: A nucleotide-level coarse-grained model of RNA, ''J. Chem. Phys.'' '''140''', 235102 (2014) <br />
<br />
<pre><br />
@Article{oxRNA,<br />
author = "\v{S}ulc, Petr and Romano, Flavio and Ouldridge, Thomas E. and Doye, Jonathan P. K. and Louis, Ard A.",<br />
title = "A nucleotide-level coarse-grained model of RNA",<br />
journal = "The Journal of Chemical Physics",<br />
year = "2014",<br />
volume = "140",<br />
number = "23", <br />
eid = 235102,<br />
}<br />
</pre></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Hairpin_formation&diff=956Hairpin formation2015-06-18T08:24:39Z<p>Rovigattil: </p>
<hr />
<div><!--<div style="text-align:center"><br />
http://kratos.phys.uniroma1.it/hairpin.png<br />
</div>--><br />
<br />
[[Category:Examples]]<br />
== Introduction ==<br />
In this example, you will simulate a single strand of length 18 and sequence <tt>GCGTTGCTTCTCCAACGC</tt> at 334 K (~61 °C) in three different ways:<br />
* with a virtual move Monte Carlo (VMMC) simulation of the sequence-averaged (SA) model. The input file is <tt>input</tt>.<br />
* with a VMMC simulation of the sequence-dependent (SD) model. The input file is <code>input_seq_dep</code>.<br />
* with a VMMC simulation of the SA model in which two base pairs are connected by mutual traps (i.e. additional attractive interactions between two nucleotides). The input file is <tt>input_trap</tt>.<br />
The traps act between the pairs depicted in blue and red in the sequence G<span style="color:red">C</span><span style="color:blue">G</span>TTGCTTCTCCAA<span style="color:blue">C</span><span style="color:red">G</span>C. The details of the interaction associated to the traps can be changed in the file <tt>hairpin_forces.dat</tt>.<br />
<br />
This strand, if ''T'' is sufficiently low, tends to form an hairpin with a 6-base long stem and a 6-base long loop.<br />
The temperature has been chosen to be close to the melting temperature of such a hairpin in the SA version of the model<br />
<br />
This document explains how to prepare the ''hairpin'' example (see [[#Preparation|Preparation]]) and how to run it ([[#Running|Running]]). Section [[#Results|Results]] contains results and plots extracted from the simulation output. In the following, <tt>$EXEC</tt> refers to the oxDNA executable.<br />
<br />
== Preparation ==<br />
The script <tt>run.sh</tt> generates the input files and runs all the three simulations, one after the other. With the default input files, each simulation, lasting <math>10^8</math> steps by default, takes approximately one hour on a modern CPU. The default <tt>run.sh</tt> expects <tt>$EXEC</tt> to be in the <tt>../../bin</tt> directory . If this is not the case, open <tt>run.sh</tt> and change the variables <tt>CODEDIR</tt> and <tt>$OXDNA_BIN</tt> accordingly.<br />
<br />
If you only want to generate the initial configuration, you can issue <tt>./run.sh --generate-only</tt>. Then you can run the simulations by yourself. The generated initial configuration files are <tt>initial.top</tt> (which contains the topology) and <tt>initial.conf</tt> (which contains positions and orientations of the nucleotides).<br />
<br />
== Running ==<br />
In order to run the whole example, it is sufficient to issue the command <tt>./run.sh</tt> (or <tt>bash run.sh</tt>). As described in [[#Preparation|Preparation]], you can generate the initial configuration and then run the simulations by hand. The three simulations, described in [[#Introduction|Introduction]], can be performed issuing <tt>$EXEC input</tt>, where <tt>input</tt> is a text file that specifies the simulation configuration. For this example, three files have been prepared: <tt>inputMD</tt>, <tt>inputMD_seq_dep</tt> and <tt>inputTRAP</tt>. The table below reports all the files associated to each simulations.<br />
<br />
{|<br />
|-<br />
! Type <br />
! Input<br />
! energy file<br />
! HB energy file<br />
! trajectory file<br />
! last configuration file<br />
! log file<br />
|-<br />
|SA model<br />
|input<br />
|energy.dat<br />
|hb_energy.dat<br />
|trajectory.dat<br />
|last_conf.dat<br />
|log.dat<br />
|-<br />
|SD model<br />
|input_seq_dep<br />
|energy_seq_dep.dat<br />
|hb_energy_seq_dep.dat<br />
|trajectory_seq_dep.dat<br />
|last_conf_seq_dep.dat<br />
|log_seq_dep.dat<br />
|-<br />
|SA model with traps<br />
|input_trap<br />
|energy_trap.dat<br />
|hb_energy_trap.dat<br />
|trajectory_trap.dat<br />
|last_conf_trap.dat<br />
|log_trap.dat<br />
|-<br />
|}<br />
<br />
== Results ==<br />
As mentioned in the [[#Introduction|introduction]], temperature has been chosen so that the hairpin is near its melting temperature when simulated via SA model. Figure 1 shows the probability distribution histogram <math>P(U_{HB})</math> for the hydrogen-bonding (HB) energy <math>U_{HB}</math> of the system (in simulation units). <math>U_{HB}</math> is stored in the second column of the HB energy file as a function of MD steps. Both the minimum in <math>P(U_{HB})</math> and a direct inspection of the time series (inset) show that the hairpin is indeed near the melting temperature, since <math>U_{HB}</math> oscillates between 0 (no HBs) and ~ -3.5, which corresponds to 4-5 hydrogen-bonded nucleotides. At this temperature the fraying effect is relevant, and therefore the last base-pair is not always formed.<br />
<br />
<div style="text-align:center"><br />
[[Image:histo_MD.png]]<br />
<br />
<h5>Figure 1: Probability of having a hydrogen-bonding interaction energy <math>U_{HB}</math> for the SA model. Inset: time series of the hydrogen-bonding energy.</h5><br />
</div><br />
<br />
<br />
Figure 2 shows <math>P(U_{HB})</math> and <math>U_{HB}</math> for the SD hairpin. In this case, one expects a different melting temperature. Indeed, at this temperature the hairpin is nearly always in its folded conformation and the average value of <math>U_{HB}</math> is lower than in the SA case. Although stacking interactions play a role, the major contribution to this effect is due to the presence of four <tt>GC</tt> only two <tt>AT</tt> base-pairs in the stem.<br />
<br />
<div style="text-align:center"><br />
[[Image:histo_MD_seq_dep.png]]<br />
<br />
<h5>Figure 2: Same as Figure 1, but for the SD model.</h5><br />
</div><br />
<br />
<br />
If mutual traps between stem base-pairs are introduced, then the equilibrium properties of the hairpin are changed and, even if the SA model is employed, the hairpin is always (after the initial equilibration) in its folded conformation. The use of mutual traps can highly decrease the simulation time required by the folding of strands into target structures (like DNA origami or DNA constructs).<br />
<br />
<div style="text-align:center"><br />
[[Image:histo_TRAP.png]]<br />
<br />
<h5>Figure 3: Same as Figure 1, but for the system with mutual traps. Time is expressed in Monte Carlo sweeps.</h5><br />
</div></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Hairpin_formation&diff=954Hairpin formation2015-06-16T09:28:20Z<p>Rovigattil: </p>
<hr />
<div><!--<div style="text-align:center"><br />
http://kratos.phys.uniroma1.it/hairpin.png<br />
</div>--><br />
<br />
[[Category:Examples]]<br />
== Introduction ==<br />
In this example, you will simulate a single strand of length 18 and sequence <tt>GCGTTGCTTCTCCAACGC</tt> at 334 K (~61 °C) in three different ways:<br />
* with a molecular dynamics (MD) simulation of the sequence-averaged (SA) model. The input file is <tt>inputMD</tt>.<br />
* with an MD simulation of the sequence-dependent (SD) model. The input file is <code>inputMD_seq_dep</code>.<br />
* with a Monte Carlo (MC) simulation of the SA model in which two base pairs are connected by mutual traps (i.e. additional attractive interactions between two nucleotides). The input file is <tt>inputTRAP</tt>.<br />
The traps act between the pairs depicted in blue and red in the sequence G<span style="color:red">C</span><span style="color:blue">G</span>TTGCTTCTCCAA<span style="color:blue">C</span><span style="color:red">G</span>C. The details of the interaction associated to the traps can be changed in the file <tt>hairpin_forces.dat</tt>.<br />
<br />
This strand, if ''T'' is sufficiently low, tends to form an hairpin with a 6-base long stem and a 6-base long loop.<br />
The temperature has been chosen to be close to the melting temperature of such a hairpin in the SA version of the model<br />
<br />
This document explains how to prepare the ''hairpin'' example (see [[#Preparation|Preparation]]) and how to run it ([[#Running|Running]]). Section [[#Results|Results]] contains results and plots extracted from the simulation output. In the following, <tt>$EXEC</tt> refers to the oxDNA executable.<br />
<br />
== Preparation ==<br />
The script <tt>run.sh</tt> generates the input files and runs all the three simulations, one after the other. With the default input files, each simulation, lasting <math>10^8</math> steps by default, takes approximately one hour on a modern CPU. The default <tt>run.sh</tt> expects <tt>$EXEC</tt> to be in the <tt>../../bin</tt> directory . If this is not the case, open <tt>run.sh</tt> and change the variables <tt>CODEDIR</tt> and <tt>$OXDNA_BIN</tt> accordingly.<br />
<br />
If you only want to generate the initial configuration, you can issue <tt>./run.sh --generate-only</tt>. Then you can run the simulations by yourself. The generated initial configuration files are <tt>initial.top</tt> (which contains the topology) and <tt>initial.conf</tt> (which contains positions and orientations of the nucleotides).<br />
<br />
== Running ==<br />
In order to run the whole example, it is sufficient to issue the command <tt>./run.sh</tt> (or <tt>bash run.sh</tt>). As described in [[#Preparation|Preparation]], you can generate the initial configuration and then run the simulations by hand. The three simulations, described in [[#Introduction|Introduction]], can be performed issuing <tt>$EXEC input</tt>, where <tt>input</tt> is a text file that specifies the simulation configuration. For this example, three files have been prepared: <tt>inputMD</tt>, <tt>inputMD_seq_dep</tt> and <tt>inputTRAP</tt>. The table below reports all the files associated to each simulations.<br />
<br />
{|<br />
|-<br />
! Type <br />
! Input<br />
! energy file<br />
! HB energy file<br />
! trajectory file<br />
! last configuration file<br />
! log file<br />
|-<br />
|SA model<br />
|inputMD<br />
|energy.dat<br />
|hb_energy.dat<br />
|trajectory.dat<br />
|last_conf.dat<br />
|log.dat<br />
|-<br />
|SD model<br />
|inputMD_seq_dep<br />
|energy_seq_dep.dat<br />
|hb_energy_seq_dep.dat<br />
|trajectory_seq_dep.dat<br />
|last_conf_seq_dep.dat<br />
|log_seq_dep.dat<br />
|-<br />
|SA model with traps<br />
|inputTRAP<br />
|energy_trap.dat<br />
|hb_energy_trap.dat<br />
|trajectory_trap.dat<br />
|last_conf_trap.dat<br />
|log_trap.dat<br />
|-<br />
|}<br />
<br />
== Results ==<br />
As mentioned in the [[#Introduction|introduction]], temperature has been chosen so that the hairpin is near its melting temperature when simulated via SA model. Figure 1 shows the probability distribution histogram <math>P(U_{HB})</math> for the hydrogen-bonding (HB) energy <math>U_{HB}</math> of the system (in simulation units). <math>U_{HB}</math> is stored in the second column of the HB energy file as a function of MD steps. Both the minimum in <math>P(U_{HB})</math> and a direct inspection of the time series (inset) show that the hairpin is indeed near the melting temperature, since <math>U_{HB}</math> oscillates between 0 (no HBs) and ~ -3.5, which corresponds to 4-5 hydrogen-bonded nucleotides. At this temperature the fraying effect is relevant, and therefore the last base-pair is not always formed. This is clearly visible in the snapshot at the beginning of this document, in which 4 base-pairs are formed.<br />
<br />
<div style="text-align:center"><br />
[[Image:histo_MD.png]]<br />
<br />
<h5>Figure 1: Probability of having a hydrogen-bonding interaction energy <math>U_{HB}</math> for the SA model. Inset: time series of the hydrogen-bonding energy.</h5><br />
</div><br />
<br />
<br />
Figure 2 shows <math>P(U_{HB})</math> and <math>U_{HB}</math> for the SD hairpin. In this case, one expects a different melting temperature. Indeed, at this temperature the hairpin is nearly always in its folded conformation and the average value of <math>U_{HB}</math> is lower than in the SA case. Although stacking interactions play a role, the major contribution to this effect is due to the presence of four <tt>GC</tt> only two <tt>AT</tt> base-pairs in the stem.<br />
<br />
<div style="text-align:center"><br />
[[Image:histo_MD_seq_dep.png]]<br />
<br />
<h5>Figure 2: Same as Figure 1, but for the SD model.</h5><br />
</div><br />
<br />
<br />
If mutual traps between stem base-pairs are introduced, then the equilibrium properties of the hairpin are changed and, even if the SA model is employed, the hairpin is always (after the initial equilibration) in its folded conformation. The use of mutual traps can highly decrease the simulation time required by the folding of strands into target structures (like DNA origami or DNA constructs).<br />
<br />
<div style="text-align:center"><br />
[[Image:histo_TRAP.png]]<br />
<br />
<h5>Figure 3: Same as Figure 1, but for the system with mutual traps. Time is expressed in Monte Carlo sweeps.</h5><br />
</div></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=930Publications2015-03-06T11:40:10Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' '''13''', 535 (2014) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'', (2013) <br />
#:[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'', (2013)<br />
#:[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''J. Chem. Phys.'' '''140''', 154903 (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''J. Comput. Chem.'', '''36''', 1 (2015)<br />
#:[http://onlinelibrary.wiley.com/doi/10.1002/jcc.23763/pdf A comparison between parallelization approaches in molecular dynamics simulations on GPUs] ([http://arxiv.org/abs/1401.4350 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''140''', 235102 (2014)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/140/23/10.1063/1.4881424 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'', (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''Sci. Rep.'', '''5''', 7655 (2015)<br />
#:[http://dx.doi.org/10.1038/srep07655 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA] ([http://arxiv.org/abs/1404.2869 arXiv])<br />
#Q. Wang, B. M. Pettitt, ''Biophys. J.'' '''106''', 1182–1193 (2014)<br />
#:[http://www.sciencedirect.com/science/article/pii/S0006349514000927 Modeling DNA Thermodynamics under Torsional Stress]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, P. Šulc, L. Shaw, A. A. Louis, J.P.K. Doye, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1408.4401 DNA hairpins primarily promote duplex melting rather than inhibiting hybridization]<br />
# T. E. Ouldridge, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1411.1927 DNA nanotechnology: understanding and optimisation through simulation]<br />
# R. Machinek, T.E. Ouldridge, N.E.C. Haley, J. Bath, A. J. Turberfield, ''Nature Comm.'' (2014)<br />
#:[http://www.nature.com/ncomms/2014/141110/ncomms6324/full/ncomms6324.html Programmable energy landscapes for kinetic control of DNA strand displacement]<br />
# M. Mosayebi, F. Romano, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''J. Phys. Chem. B'' '''118''', 14326-14335 (2014)<br />
#:[http://arxiv.org/ct?url=http%3A%2F%2Fdx.doi.org%2F10%252E1021%2Fjp510061f&v=13bb91c1 The role of loop stacking in the dynamics of DNA hairpin formation] ([http://arxiv.org/abs/1410.1218 arXiv])<br />
# P. Šulc, T. E. Ouldridge, F. Romano, J.P.K. Doye, A. A. Louis ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1411.3239 Modelling toehold-mediated RNA strand displacement]<br />
# P. Krstić, B. Ashcroft and S. Lindsay, ''Nanotechnology'', (2015)<br />
#:[http://dx.doi.org/10.1088/0957-4484/26/8/084001 Physical model for recognition tunneling]<br />
# F. Romano and F. Sciortino, ''Phys. Rev. Lett.'' '''114''', 078104 (2015)<br />
#:[http://dx.doi.org/10.1103/PhysRevLett.114.078104 Switching Bonds in a DNA Gel: An All-DNA Vitrimer]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, A. A. Louis, J.P.K. Doye, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1412.6309 Characterizing the bending and flexibility induced by bulges in DNA duplexes]<br />
# M. Mosayebi, A. A. Louis, J.P.K. Doye, T. E. Ouldridge ''arxiv'' (2015)<br />
#:[http://arxiv.org/abs/1502.03623 Force-induced rupture of a DNA duplex]<br />
# T. E. Ouldridge, ''Mol. Phys.'' '''113''', 1-15 (2015)<br />
#:[http://www.tandfonline.com/doi/abs/10.1080/00268976.2014.975293 DNA nanotechnology: understanding and optimisation through simulation] ([http://arxiv.org/abs/1411.1927 arXiv])</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=925Publications2015-02-20T13:08:56Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' '''13''', 535 (2014) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'', (2013) <br />
#:[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'', (2013)<br />
#:[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''J. Chem. Phys.'' '''140''', 154903 (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''J. Comput. Chem.'', '''36''', 1 (2015)<br />
#:[http://onlinelibrary.wiley.com/doi/10.1002/jcc.23763/pdf A comparison between parallelization approaches in molecular dynamics simulations on GPUs] ([http://arxiv.org/abs/1401.4350 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''140''', 235102 (2014)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/140/23/10.1063/1.4881424 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'', (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''Sci. Rep.'', '''5''', 7655 (2015)<br />
#:[http://dx.doi.org/10.1038/srep07655 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA] ([http://arxiv.org/abs/1404.2869 arXiv])<br />
#Q. Wang, B. M. Pettitt, ''Biophys. J.'' '''106''', 1182–1193 (2014)<br />
#:[http://www.sciencedirect.com/science/article/pii/S0006349514000927 Modeling DNA Thermodynamics under Torsional Stress]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, P. Šulc, L. Shaw, A. A. Louis, J.P.K. Doye, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1408.4401 DNA hairpins primarily promote duplex melting rather than inhibiting hybridization]<br />
# T. E. Ouldridge, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1411.1927 DNA nanotechnology: understanding and optimisation through simulation]<br />
# M. Mosayebi, F. Romano, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''J. Phys. Chem. B'' '''118''', 14326-14335 (2014)<br />
#:[http://arxiv.org/ct?url=http%3A%2F%2Fdx.doi.org%2F10%252E1021%2Fjp510061f&v=13bb91c1 The role of loop stacking in the dynamics of DNA hairpin formation] ([http://arxiv.org/abs/1410.1218 arXiv])<br />
# P. Šulc, T. E. Ouldridge, F. Romano, J.P.K. Doye, A. A. Louis ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1411.3239 Modelling toehold-mediated RNA strand displacement]<br />
# P. Krstić, B. Ashcroft and S. Lindsay, ''Nanotechnology'', (2015)<br />
#:[http://dx.doi.org/10.1088/0957-4484/26/8/084001 Physical model for recognition tunneling]<br />
# F. Romano and F. Sciortino, ''Phys. Rev. Lett.'' '''114''', 078104 (2015)<br />
#:[http://dx.doi.org/10.1103/PhysRevLett.114.078104 Switching Bonds in a DNA Gel: An All-DNA Vitrimer]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=922Publications2015-02-04T11:58:16Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' '''13''', 535 (2014) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'', (2013) <br />
#:[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'', (2013)<br />
#:[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''J. Chem. Phys.'' '''140''', 154903 (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''J. Comput. Chem.'', '''36''', 1 (2015)<br />
#:[http://onlinelibrary.wiley.com/doi/10.1002/jcc.23763/pdf A comparison between parallelization approaches in molecular dynamics simulations on GPUs] ([http://arxiv.org/abs/1401.4350 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''140''', 235102 (2014)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/140/23/10.1063/1.4881424 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'', (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''Sci. Rep.'', '''5''', 7655 (2015)<br />
#:[http://dx.doi.org/10.1038/srep07655 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA] ([http://arxiv.org/abs/1404.2869 arXiv])<br />
#Q. Wang, B. M. Pettitt, ''Biophys. J.'' '''106''', 1182–1193 (2014)<br />
#:[http://www.sciencedirect.com/science/article/pii/S0006349514000927 Modeling DNA Thermodynamics under Torsional Stress]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, P. Šulc, L. Shaw, A. A. Louis, J.P.K. Doye, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1408.4401 DNA hairpins primarily promote duplex melting rather than inhibiting hybridization]<br />
# T. E. Ouldridge, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1411.1927 DNA nanotechnology: understanding and optimisation through simulation]<br />
# M. Mosayebi, F. Romano, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''J. Phys. Chem. B'' '''118''', 14326-14335 (2014)<br />
#:[http://arxiv.org/ct?url=http%3A%2F%2Fdx.doi.org%2F10%252E1021%2Fjp510061f&v=13bb91c1 The role of loop stacking in the dynamics of DNA hairpin formation] ([http://arxiv.org/abs/1410.1218 arXiv])<br />
# P. Šulc, T. E. Ouldridge, F. Romano, J.P.K. Doye, A. A. Louis ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1411.3239 Modelling toehold-mediated RNA strand displacement]<br />
# P. Krstić, B. Ashcroft and S. Lindsay, ''Nanotechnology'', (2015)<br />
#:[http://dx.doi.org/10.1088/0957-4484/26/8/084001 Physical model for recognition tunneling]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=License_and_Copyright&diff=920License and Copyright2014-12-11T13:16:33Z<p>Rovigattil: /* Referencing */</p>
<hr />
<div>oxDNA is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.<br />
<br />
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<br />
<br />
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. You can also find it on the GNU web site:<br />
<br />
[http://www.gnu.org/copyleft/gpl.html http://www.gnu.org/copyleft/gpl.html]<br />
<br />
A copy of the GNU General Public License version 3 can be found in the [[Download_and_Installation#Download|source]] tarball.<br />
<br />
==Referencing==<br />
We kindly ask you to reference oxDNA and its authors in any publication for which oxDNA was used. Since you are not legally required to do so, it is up to your common sense to decide whether you want to comply with this request or not.<br />
<br />
You can cite us in this way:<br />
<br />
*P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
<br />
or, if you use [http://en.wikipedia.org/wiki/BibTeX BibTeX], <br />
<br />
<pre><br />
@Article{oxDNA,<br />
author = {Petr \v{S}ulc and Flavio Romano and Thomas E. Ouldridge and Lorenzo Rovigatti and Jonathan P. K. Doye and Ard A. Louis},<br />
title = {Sequence-dependent thermodynamics of a coarse-grained DNA model},<br />
publisher = {AIP},<br />
year = {2012},<br />
journal = {The Journal of Chemical Physics},<br />
volume = {137},<br />
number = {13},<br />
eid = {135101},<br />
numpages = {14},<br />
pages = {135101},<br />
keywords = {biology computing; DNA; melting point; molecular biophysics; molecular configurations; thermodynamics},<br />
url = {http://link.aip.org/link/?JCP/137/135101/1},<br />
doi = {10.1063/1.4754132}<br />
}<br />
</pre><br />
<br />
If you use the CUDA backend, please cite at least<br />
<br />
*L. Rovigatti, P. Šulc, I. Z. Reguly,Flavio Romano, ''J. Comput. Chem.'' '''36''', 1 (2015)<br />
<br />
<pre><br />
@article {oxDNA_edge,<br />
author = {Rovigatti, Lorenzo and Šulc, Petr and Reguly, István Z. and Romano, Flavio},<br />
title = {A comparison between parallelization approaches in molecular dynamics simulations on GPUs},<br />
journal = {Journal of Computational Chemistry},<br />
volume = {36},<br />
number = {1},<br />
issn = {1096-987X},<br />
url = {http://dx.doi.org/10.1002/jcc.23763},<br />
doi = {10.1002/jcc.23763},<br />
pages = {1--8},<br />
keywords = {graphics processing unit, parallelization, molecular dynamics, soft matter},<br />
year = {2015},<br />
}<br />
<br />
</pre><br />
<br />
<br />
and, if you use the oxRNA model as well, please also cite<br />
<br />
P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis: A nucleotide-level coarse-grained model of RNA, ''J. Chem. Phys.'' '''140''', 235102 (2014) <br />
<br />
<pre><br />
@Article{oxRNA,<br />
author = "\v{S}ulc, Petr and Romano, Flavio and Ouldridge, Thomas E. and Doye, Jonathan P. K. and Louis, Ard A.",<br />
title = "A nucleotide-level coarse-grained model of RNA",<br />
journal = "The Journal of Chemical Physics",<br />
year = "2014",<br />
volume = "140",<br />
number = "23", <br />
eid = 235102,<br />
}<br />
</pre></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Download_and_Installation&diff=919Download and Installation2014-12-03T14:58:51Z<p>Rovigattil: /* Compiler */</p>
<hr />
<div>In this section, we outline the procedure for dowloading and compiling oxDNA.<br />
<br />
==Requirements==<br />
===Compiler===<br />
The recommended compiler is gcc 4.6.x. oxDNA compilation has been thoroughly tested with gcc >= 4.1.x and icpc >= 10. Note that compiling with gcc 4.6.x rather than with gcc 4.1.x results in a significant increase in performances. Since oxDNA is written in standard c++, it '''should''' be also compatible with other compilers. Optionally, oxDNA can be compiled to run on [http://www.nvidia.com NVIDIA] GPUs by enabling [http://www.nvidia.com/object/cuda_home_new.html CUDA] support at compile time.<br />
<br />
===Operating system===<br />
oxDNA has been tested on Linux (kernel >= 2.6.x) and Mac OS X. Since it is written in ANSI c++, it '''should''' also work out-of-the-box on other OSes.<br />
<br />
===Dependencies===<br />
The pre-compilation stage requires [http://www.cmake.org/ cmake], while compilation is carried out with [http://www.gnu.org/software/make/ GNU Make].<br />
<br />
The CPU-only oxDNA does not depend on any external library apart from the standard c++ library. <br />
<br />
The GPU-enabled oxDNA requires CUDA >= 3.2.<br />
<br />
==Download==<br />
There are currently no available binary packages for oxDNA. The last stable source package can be downloaded <br />
[http://sourceforge.net/projects/oxdna/files/ here], while bleeding edge (possibly unstable) versions are available <br />
''via'' a [http://subversion.apache.org/ subversion] repository, accessible [http://sourceforge.net/p/oxdna/code/HEAD/tree/ here].<br />
<br />
==Compilation==<br />
We recommend using an out-of-source build to compile oxDNA. A standard out-of-source build is as follows<br />
<br />
<pre><br />
cd oxDNA<br />
mkdir build<br />
cd build<br />
cmake .. # cmake options go here, more on this later<br />
make -j4 # use 4 threads for compilation, sensibly shortening compiling time<br />
</pre><br />
<br />
===Compile options===<br />
<br />
The following parameters can be passed to cmake:<br />
<br />
*'''-DDebug=1''' oxDNA will be compiled with debug flags (both for nvcc and gcc).<br />
*'''-DG=1''' oxDNA will be compiled with both debug and optimization flags.<br />
*'''-DINTEL=1''' oxDNA will be compiled using the Intel icpc compiler.<br />
*'''-DCUDA=1''' oxDNA will be compiled with CUDA support. This requires a CUDA runtime version >= 3.2.<br />
*'''-DMPI=1''' oxDNA will be compilted with MPI support. This is currently an '''unsupported''' feature and it should be used by developers only.<br />
<br />
The compilation process will generate three executables in the build/bin folder: <tt>oxDNA</tt>, <tt>DNAnalysis</tt> and <tt>confGenerator</tt>.<br />
Their usage is as follows:<br />
<br />
<pre><br />
oxDNA <input><br />
DNAnalysis <input><br />
confGenerator <input> <box_size/density> # the second argument will be interpreted as a density if it is less than 2.0<br />
</pre><br />
<br />
If you want some oxDNA hands-on examples, there are some in the <tt>EXAMPLES</tt> subdirectory, some of which are documented in more detail in [[:Category:Examples|Examples]] section.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Hairpin_formation&diff=918Hairpin formation2014-12-03T10:40:52Z<p>Rovigattil: /* Results */</p>
<hr />
<div><!--<div style="text-align:center"><br />
http://kratos.phys.uniroma1.it/hairpin.png<br />
</div>--><br />
<br />
[[Category:Examples]]<br />
== Introduction ==<br />
In this example, you will simulate a single strand of length 18 and sequence <tt>GCGTTGCTTCTCCAACGC</tt> at 334 K (~61 °C) in three different ways:<br />
* with a molecular dynamics (MD) simulation of the sequence-averaged (SA) model. The input file is <tt>inputMD</tt>.<br />
* with an MD simulation of the sequence-dependent (SD) model. The input file is <code>inputMD_seq_dep</code>.<br />
* with a Monte Carlo (MC) simulation of the SA model in which two base pairs are connected by mutual traps (i.e. additional attractive interactions between two nucleotides). The input file is <tt>inputTRAP</tt>.<br />
The traps act between the pairs depicted in blue and red in the sequence G<span style="color:red">C</span><span style="color:blue">G</span>TTGCTTCTCCAA<span style="color:blue">C</span><span style="color:red">G</span>C. The details of the interaction associated to the traps can be changed in the file <tt>hairpin_forces.dat</tt>.<br />
<br />
This strand, if ''T'' is sufficiently low, tends to form an hairpin with a 6-base long stem and a 6-base long loop.<br />
The temperature has been chosen to be close to the melting temperature of such a hairpin in the SA version of the model<br />
<br />
This document explains how to prepare the ''hairpin'' example (see [[#Preparation|Preparation]]) and how to run it ([[#Running|Running]]). Section [[#Results|Results]] contains results and plots extracted from the simulation output. In the following, <tt>$EXEC</tt> refers to the oxDNA executable.<br />
<br />
== Preparation ==<br />
The script <tt>run.sh</tt> generates the input files and runs all the three simulations, one after the other. With the default input files, each simulation, lasting <math>10^8</math> steps by default, takes approximately one hour on a modern CPU. The default <tt>run.sh</tt> expects <tt>$EXEC</tt> to be in the <tt>../..</tt> directory. If this is not the case, open <tt>run.sh</tt> and change the variable <tt>CODEDIR</tt> accordingly.<br />
<br />
If you only want to generate the initial configuration, you can issue <tt>./run.sh --generate-only</tt>. Then you can run the simulations by yourself. The generated initial configuration files are <tt>initial.top</tt> (which contains the topology) and <tt>initial.conf</tt> (which contains positions and orientations of the nucleotides).<br />
<br />
== Running ==<br />
In order to run the whole example, it is sufficient to issue the command <tt>./run.sh</tt> (or <tt>bash run.sh</tt>). As described in [[#Preparation|Preparation]], you can generate the initial configuration and then run the simulations by hand. The three simulations, described in [[#Introduction|Introduction]], can be performed issuing <tt>$EXEC input</tt>, where <tt>input</tt> is a text file that specifies the simulation configuration. For this example, three files have been prepared: <tt>inputMD</tt>, <tt>inputMD_seq_dep</tt> and <tt>inputTRAP</tt>. The table below reports all the files associated to each simulations.<br />
<br />
{|<br />
|-<br />
! Type <br />
! Input<br />
! energy file<br />
! trajectory file<br />
! last configuration file<br />
! log file<br />
|-<br />
|SA model<br />
|inputMD<br />
|energy.dat<br />
|trajectory.dat<br />
|last_conf.dat<br />
|log.dat<br />
|-<br />
|SD model<br />
|inputMD_seq_dep<br />
|energy_seq_dep.dat<br />
|trajectory_seq_dep.dat<br />
|last_conf_seq_dep.dat<br />
|log_seq_dep.dat<br />
|-<br />
|SA model with traps<br />
|inputTRAP<br />
|energy_trap.dat<br />
|trajectory_trap.dat<br />
|last_conf_trap.dat<br />
|log_trap.dat<br />
|-<br />
|}<br />
<br />
== Results ==<br />
As mentioned in the [[#Introduction|introduction]], temperature has been chosen so that the hairpin is near its melting temperature when simulated via SA model. Figure 1 shows the probability distribution histogram <math>P(U_{HB})</math> for the hydrogen-bonding (HB) energy <math>U_{HB}</math> of the system (in simulation units). <math>U_{HB}</math> is stored in the fifth column of the energy file as a function of MD steps. Both the minimum in <math>P(U_{HB})</math> and a direct inspection of the time series (inset) show that the hairpin is indeed near the melting temperature, since <math>U_{HB}</math> oscillates between 0 (no HBs) and ~ -3.5, which corresponds to 4-5 hydrogen-bonded nucleotides. At this temperature the fraying effect is relevant, and therefore the last base-pair is not always formed. This is clearly visible in the snapshot at the beginning of this document, in which 4 base-pairs are formed.<br />
<br />
<div style="text-align:center"><br />
[[Image:histo_MD.png]]<br />
<br />
<h5>Figure 1: Probability of having a hydrogen-bonding interaction energy <math>U_{HB}</math> for the SA model. Inset: time series of the hydrogen-bonding energy.</h5><br />
</div><br />
<br />
<br />
Figure 2 shows <math>P(U_{HB})</math> and <math>U_{HB}</math> for the SD hairpin. In this case, one expects a different melting temperature. Indeed, at this temperature the hairpin is nearly always in its folded conformation and the average value of <math>U_{HB}</math> is lower than in the SA case. Although stacking interactions play a role, the major contribution to this effect is due to the presence of four <tt>GC</tt> only two <tt>AT</tt> base-pairs in the stem.<br />
<br />
<div style="text-align:center"><br />
[[Image:histo_MD_seq_dep.png]]<br />
<br />
<h5>Figure 2: Same as Figure 1, but for the SD model.</h5><br />
</div><br />
<br />
<br />
If mutual traps between stem base-pairs are introduced, then the equilibrium properties of the hairpin are changed and, even if the SA model is employed, the hairpin is always (after the initial equilibration) in its folded conformation. The use of mutual traps can highly decrease the simulation time required by the folding of strands into target structures (like DNA origami or DNA constructs).<br />
<br />
<div style="text-align:center"><br />
[[Image:histo_TRAP.png]]<br />
<br />
<h5>Figure 3: Same as Figure 1, but for the system with mutual traps. Time is expressed in Monte Carlo sweeps.</h5><br />
</div></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=File:Histo_MD_seq_dep.png&diff=917File:Histo MD seq dep.png2014-12-03T10:40:43Z<p>Rovigattil: </p>
<hr />
<div></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=File:Histo_TRAP.png&diff=916File:Histo TRAP.png2014-12-03T10:39:37Z<p>Rovigattil: </p>
<hr />
<div></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=File:Histo_MD.png&diff=915File:Histo MD.png2014-12-03T10:38:53Z<p>Rovigattil: uploaded "File:Histo MD.png"</p>
<hr />
<div></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=914Publications2014-11-25T09:59:47Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' '''13''', 535 (2014) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'', (2013) <br />
#:[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'', (2013)<br />
#:[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''J. Chem. Phys.'' '''140''', 154903 (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''J. Comput. Chem.'', '''36''', 1 (2015)<br />
#:[http://onlinelibrary.wiley.com/doi/10.1002/jcc.23763/pdf A comparison between parallelization approaches in molecular dynamics simulations on GPUs] ([http://arxiv.org/abs/1401.4350 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''140''', 235102 (2014)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/140/23/10.1063/1.4881424 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'', (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''arXiv'', (2014)<br />
#:[http://arxiv.org/abs/1404.2869 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA]<br />
#Q. Wang, B. M. Pettitt, ''Biophys. J.'' '''106''', 1182–1193 (2014)<br />
#:[http://www.sciencedirect.com/science/article/pii/S0006349514000927 Modeling DNA Thermodynamics under Torsional Stress]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, P. Šulc, L. Shaw, A. A. Louis, J.P.K. Doye, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1408.4401 DNA hairpins primarily promote duplex melting rather than inhibiting hybridization]<br />
# T. E. Ouldridge, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1411.1927 DNA nanotechnology: understanding and optimisation through simulation]<br />
# M. Mosayebi, F. Romano, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1410.1218 The role of loop stacking in the dynamics of DNA hairpin formation]<br />
# P. Šulc, T. E. Ouldridge, F. Romano, J.P.K. Doye, A. A. Louis ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1411.3239 Modelling toehold-mediated RNA strand displacement]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=913Publications2014-11-25T09:59:06Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' '''13''', 535 (2014) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'', (2013) <br />
#:[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'', (2013)<br />
#:[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''J. Chem. Phys.'' '''140''', 154903 (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''J. Comput. Chem.'', '''36''', 1 (2015)<br />
#:[http://onlinelibrary.wiley.com/doi/10.1002/jcc.23763/pdf A comparison between parallelization approaches in molecular dynamics simulations on GPUs] ([http://arxiv.org/abs/1401.4350 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''140''', 235102 (2014)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/140/23/10.1063/1.4881424 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'', (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis,''arXiv'', (2014)<br />
#:[http://arxiv.org/abs/1404.2869 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA]<br />
#Q. Wang, B. M. Pettitt, ''Biophys. J.'' '''106''', 1182–1193 (2014)<br />
#:[http://www.sciencedirect.com/science/article/pii/S0006349514000927 Modeling DNA Thermodynamics under Torsional Stress]<br />
# J. S. Schreck, T. E. Ouldridge, F. Romano, P. Šulc, L. Shaw, A. A. Louis, J.P.K. Doye, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1408.4401 DNA hairpins primarily promote duplex melting rather than inhibiting hybridization]<br />
# T. E. Ouldridge, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1411.1927 DNA nanotechnology: understanding and optimisation through simulation]<br />
# M. Mosayebi, F. Romano, T. E. Ouldridge, A. A. Louis, J. P. K. Doye, ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1410.1218 The role of loop stacking in the dynamics of DNA hairpin formation]<br />
# P. Šulc, T. E. Ouldridge, F. Romano, J.P.K. Doye, A. A. Louis ''arxiv'' (2014)<br />
#:[http://arxiv.org/abs/1411.3239 Modelling toehold-mediated RNA strand displacement]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Contact_information&diff=903Contact information2014-06-16T22:40:56Z<p>Rovigattil: </p>
<hr />
<div>The authors of the code can be contacted at the following addresses:<br />
<br />
*Thomas Ouldridge: t(dot)ouldridge1(at)physics(dot)ox(dot)ac(dot)uk<br />
<br />
*Petr Šulc: p(dot)sulc1(at)physics(dot)ox(dot)ac(dot)uk <br/><br />
<em>Rudolf Peierls Centre for Theoretical Physics, <br />
University of Oxford, 1 Keble Road, Oxford, OX1 3NP, United Kingdom </em><br />
<br />
*Flavio Romano: flavio(dot)romano(at)chem(dot)ox(dot)ac(dot)uk <br/> <em><br />
Physical and Theoretical Chemistry Laboratory, Department of Chemistry, University of Oxford, South Parks Road, Oxford, OX1 3QZ, United Kingdom<br />
</em><br />
<br />
*[http://homepage.univie.ac.at/lorenzo.rovigatti/ Lorenzo Rovigatti] lorenzo(dot)rovigatti(at)univie(dot)ac(dot)at <br/><br />
<em><br />
Faculty of Computational Physics, University of Vienna (Austria)<br />
</em><br />
<br />
If you have a question about the installation or usage of the oxDNA code, you can post it to the [http://sourceforge.net/p/oxdna/discussion/ Discussion forum] at sourceforge.net, where our project is hosted.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Gallery_of_studied_systems&diff=885Gallery of studied systems2014-05-08T08:47:11Z<p>Rovigattil: /* DNA systems */</p>
<hr />
<div>The systems studied with the oxDNA or oxRNA model with the links to the respective papers provided below:<br />
<br />
==DNA systems==<br />
<br />
<gallery mode="packed-overlay" widths=250px heights=180px ><br />
Image:tweezers.png|''[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA nanotweezers]''<br />
Image:burntbridges.png|''[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Burnt bridges motor]'' <br />
Image:two_foot.png|''[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Two-footed DNA walker]''<br />
Image:ss_pull.png|''[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Single stranded pulling]''<br />
Image:kissing_hairpins.png|''Kissing hairpins (studied with [http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 the average model] and [http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 the sequence-dependent model])''<br />
Image:longhpin.png|''[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Loop sequence effects on melting temperatures of hairpins]''<br />
Image:sstack.png|''[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Heterogeneous stacking transition in single strands]''<br />
Image:fray.png|''[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Duplex fraying]''<br />
Image:strand_displace.png|''[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed Biophysics of strand displacement]''<br />
Image:over_stretch.png|''[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Overstretching]''<br />
Image:cruci.png|''[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA Cruciforms]''<br />
Image:hybridization.png|''[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 Hybridization kinetics]''<br />
Image:plecto.png|''[http://arxiv.org/abs/1404.2869 Plectonemes]''<br />
Image:colorato.png|''[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels made of tetravalent DNA nanostars]''<br />
Image:DNA_nematic.png|''[http://pubs.rsc.org/en/content/articlehtml/2012/sm/c2sm25845e Nematic phases formed by short DNA duplexes]''<br />
</gallery><br />
<br />
==RNA systems==<br />
<gallery mode="packed-overlay" widths=250px heights=180px ><br />
Image:pseudo.png|''[http://arxiv.org/abs/1403.4180 Pseudoknot folding thermodynamics]''<br />
Image:khp.png|''[http://arxiv.org/abs/1403.4180 Kissing complex]''<br />
Image:nanoring.png|''[http://arxiv.org/abs/1403.4180 Nanoring]''<br />
Image:unzip.png|''[http://arxiv.org/abs/1403.4180 Hairpin unzipping]''<br />
<br />
</gallery></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Gallery_of_studied_systems&diff=884Gallery of studied systems2014-05-08T08:40:50Z<p>Rovigattil: /* DNA systems */</p>
<hr />
<div>The systems studied with the oxDNA or oxRNA model with the links to the respective papers provided below:<br />
<br />
==DNA systems==<br />
<br />
<gallery mode="packed-overlay" widths=250px heights=180px ><br />
Image:tweezers.png|''[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA nanotweezers]''<br />
Image:burntbridges.png|''[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Burnt bridges motor]'' <br />
Image:two_foot.png|''[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Two-footed DNA walker]''<br />
Image:ss_pull.png|''[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Single stranded pulling]''<br />
Image:kissing_hairpins.png|''Kissing hairpins (studied with [http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 the average model] and [http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 the sequence-dependent model])''<br />
Image:longhpin.png|''[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Loop sequence effects on melting temperatures of hairpins]''<br />
Image:sstack.png|''[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Heterogeneous stacking transition in single strands]''<br />
Image:fray.png|''[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Duplex fraying]''<br />
Image:strand_displace.png|''[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed Biophysics of strand displacement]''<br />
Image:over_stretch.png|''[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Overstretching]''<br />
Image:cruci.png|''[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA Cruciforms]''<br />
Image:hybridization.png|''[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 Hybridization kinetics]''<br />
Image:plecto.png|''[http://arxiv.org/abs/1404.2869 Plectonemes]''<br />
Image:colorato.png|''[http://pubs.acs.org/doi/abs/10.1021/nn501138w A gel made of tetravalent DNA nanostars]''<br />
Image:DNA_nematic.png|''[http://pubs.rsc.org/en/content/articlehtml/2012/sm/c2sm25845e Short DNA duplexes form nematic phases at high concentration]''<br />
</gallery><br />
<br />
==RNA systems==<br />
<gallery mode="packed-overlay" widths=250px heights=180px ><br />
Image:pseudo.png|''[http://arxiv.org/abs/1403.4180 Pseudoknot folding thermodynamics]''<br />
Image:khp.png|''[http://arxiv.org/abs/1403.4180 Kissing complex]''<br />
Image:nanoring.png|''[http://arxiv.org/abs/1403.4180 Nanoring]''<br />
Image:unzip.png|''[http://arxiv.org/abs/1403.4180 Hairpin unzipping]''<br />
<br />
</gallery></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=File:DNA_nematic.png&diff=883File:DNA nematic.png2014-05-08T08:40:40Z<p>Rovigattil: uploaded a new version of "File:DNA nematic.png"</p>
<hr />
<div></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=File:DNA_nematic.png&diff=882File:DNA nematic.png2014-05-08T08:37:52Z<p>Rovigattil: </p>
<hr />
<div></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=File:Colorato.png&diff=881File:Colorato.png2014-05-08T08:34:29Z<p>Rovigattil: </p>
<hr />
<div></div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Main_Page&diff=834Main Page2014-04-30T08:49:15Z<p>Rovigattil: /* oxDNA */</p>
<hr />
<div>== oxDNA == <br />
<br />
oxDNA is a simulation code originally developed to implement the coarse-grained DNA model introduced by T. E. Ouldridge, J. P. K. Doye and A. A. Louis. It has been since reworked and it is now an extensible simulation+analysis framework. It natively supports DNA (oxDNA model), RNA (oxRNA model), Lennard-Jones and patchy particle simulations on both CPUs and NVIDIA GPUs.<br />
<br />
The code implements Monte Carlo and Molecular Dynamics and can be used as a basis to numerically study DNA, RNA, Lennard-Jones and patchy particle systems. The developers are F. Romano, P. Šulc, B. Snodin and T. E. Ouldridge in the [http://physchem.ox.ac.uk/~doye/jon/ Doye] and [http://www-thphys.physics.ox.ac.uk/people/ArdLouis/ Louis] groups at the University of Oxford and L. Rovigatti, formerly in the [http://pacci.phys.uniroma1.it/?q=node/40 Sciortino] group in Rome and now in the [http://comp-phys.univie.ac.at/homepages/homepage-likos/likos-group/ Likos] group in Vienna.<br />
<br />
The oxDNA and oxRNA models are intended to provide a physical representation of the thermodynamic and mechanical properties of single- and double-stranded DNA and RNA, as well as the transition between the two. At the same time, the representation of DNA and RNA is sufficiently simple to allow access to assembly processes which occur on long timescales, beyond the reach of atomistic simulations. Basic examples include duplex formation from single strands, and the folding of a self-complementary single strand into a hairpin. These are the underlying processes of the fast-growing field of [http://en.wikipedia.org/wiki/DNA_nanotechnology DNA nanotechnology] and RNA nanotechnology, as well as many biophysical uses of DNA/RNA, allowing the model to be used to understand these fascinating systems.<br />
<br />
* [[Download and Installation]]<br />
<br />
* [[Features]]<br />
<br />
* [[DNA model introduction]]<br />
<br />
* [[RNA model introduction]]<br />
<br />
* [[Documentation]]<br />
<br />
* [[:Category:Examples|Examples]]<br />
<br />
* [[Screenshots|Screenshots and movies]]<br />
<br />
* [[Publications]]<br />
<br />
* [[License and Copyright]]<br />
<br />
* [[Previous version]]<br />
<br />
* [[Contact information]]<br />
<br />
== News ==<br />
* Follow the latest updates about oxDNA on our twitter account: [https://twitter.com/ox_dna ox_dna]<br />
* You can post questions about the installation and usage of our code to the newly created [http://sourceforge.net/p/oxdna/discussion/ Discussion forum] for oxDNA at sourceforge.net<br />
<br />
== Acknowledgments ==<br />
<br />
We thank our co-workers C. Matek, R. Harrison and W. Smith for having contributed bits of code and/or material for the examples and to our webmasters Russell Jones and Greg Agacinski for maintaining the website.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=813Publications2014-04-16T08:51:49Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' (2013) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'', (2013) <br />
#:[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'', (2013)<br />
#:[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''J. Chem. Phys.'' '''140''', 154903 (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''arXiv'', (2014)<br />
#:[http://arxiv.org/abs/1401.4350 A comparison between parallelization approaches in molecular dynamics simulations on GPUs]<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''arXiv'' (2014) <br />
#:[http://arxiv.org/abs/1403.4180 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'', (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis,''arXiv'', (2014)<br />
#:[http://arxiv.org/abs/1404.2869 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=812Publications2014-04-16T08:50:21Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' (2013) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'', (2013) <br />
#:[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'', (2013)<br />
#:[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''arXiv'' (2014)<br />
#:[http://dx.doi.org/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''arXiv'', (2014)<br />
#:[http://arxiv.org/abs/1401.4350 A comparison between parallelization approaches in molecular dynamics simulations on GPUs]<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''arXiv'' (2014) <br />
#:[http://arxiv.org/abs/1403.4180 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'', (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis,''arXiv'', (2014)<br />
#:[http://arxiv.org/abs/1404.2869 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=811Publications2014-04-15T12:44:39Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' (2013) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'', (2013) <br />
#:[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'', (2013)<br />
#:[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''arXiv'' (2014)<br />
#:[http://scitation.aip.org/content/aip/journal/jcp/140/15/10.1063/1.4870467 Accurate phase diagram of tetravalent DNA nanostars] ([http://arxiv.org/abs/1401.2837 arXiv])<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''arXiv'', (2014)<br />
#:[http://arxiv.org/abs/1401.4350 A comparison between parallelization approaches in molecular dynamics simulations on GPUs]<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''arXiv'' (2014) <br />
#:[http://arxiv.org/abs/1403.4180 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'', (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]<br />
#C. Matek, T. E. Ouldridge, J. P. K. Doye, A. A. Louis,''arXiv'', (2014)<br />
#:[http://arxiv.org/abs/1404.2869 Plectoneme tip bubbles: Coupled denaturation and writhing in supercoiled DNA]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Documentation&diff=800Documentation2014-04-02T10:03:12Z<p>Rovigattil: /* Mutual trap */</p>
<hr />
<div>==Compile options==<br />
<br />
Compiling oxDNA requires that you have a working <tt>cmake</tt> software and C++ compiler on your machine. The instructions are provided in the [[Download and Installation]] section.<br />
<br />
==Usage==<br />
<br />
<pre>oxDNA input_file</pre><br />
<br />
The input file contains all the relevant information for the program to run, such as what initial configuration to use, the topology of the system, how often to print the energies to a file, etc. Please make sure you read the [[Thermostat|thermostat]] page if you use molecular dynamics.<br />
<br />
==Input file==<br />
<br />
As always in UNIX environments, everything is case sensitive.<br />
<br />
*Options are in the form key = value<br />
*There can be arbitrary spaces before and after both key and value<br />
*Line with a leading # will be treated as comments<br />
*The | (pipe) sign is the separator between the different values that can be used to specify a value for the key.<br />
*Keys between [ and ] are optional, the value after the equal sign is the default value<br />
<br />
Here we provide a list of the most commonly used input options. The complete and most up-to-date list of possible options can be found [[Input_options|here]] or in the <tt>README</tt> file in the main directory of the simulation code.<br />
<br />
The input options of the previous oxDNA version can be found [[Input_options_of_the_previous_version|here]].<br />
<br />
===Generic options===<br />
The options listed here define the generic behavior of the entire program.<br />
;[interaction_type = DNA]: DNA|RNA|patchy|LJ<br />
: (selects the model for the simulation. DNA ([[DNA_model_introduction|oxDNA model]]) is the default option. RNA ([[RNA_model_introduction|oxRNA model]]), LJ (Lennard-Jones) and patchy particles are also implemented<br />
;[sim_type=MD]: MD|MC|VMMC<br />
:MD = Molecular Dynamics, MC = Monte Carlo, VMMC = Virtual Move Monte Carlo<br />
;backend: CPU | CUDA <br />
: (only sim_type=MD is supported if you choose CUDA backend)<br />
;backend_precision: float|double|mixed<br />
: (mixed option is available only for CUDA backend. It is recommended choice for optimal performance on CUDA machines, double is recommended for CPU simulations)<br />
;[debug=0]: 0|1<br />
: 1 if you want verbose logs, 0 otherwise.<br />
<br />
===Simulation options===<br />
The options listed here specify the behaviour of the simulation.<br />
<br />
;steps: number of steps to be performed.<br />
<br />
;[restart_step_counter=0]: 0|1<br />
:0 means that the step counter will start from the value read in the configuration file; if 1, the step counter will be reset to 0. The total duration of the simulation is unchanged.<br />
<br />
;[seed=time(NULL)]: seed for the random number generator. On Unix systems, it will use by default a number from /dev/urandom + time(NULL)<br />
<br />
;T: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
:Examples:<br />
{|<br />
|-<br />
! Value<br />
! Simulation Units<br />
|-<br />
| 0.1<br />
| 0.1<br />
|-<br />
| 300 K<br />
| 0.1<br />
|-<br />
| 300k<br />
| 0.1<br />
|-<br />
| 26.85c<br />
| 0.1<br />
|-<br />
| 26.85 C <br />
| 0.1<br />
|-<br />
|}<br />
<br />
;verlet_skin: if a particle moves more than verlet_skin then the lists will be updated. Its name is somewhat misleading: the actual verlet skin is 2*verlet_skin.<br />
<br />
;[use_average_seq=1]: 0|1<br />
: specifies whether to use the default hard-coded average parameters for base-pairing and stacking interaction strengths or not. If sequence dependence is to be used, set this to 0 and specify seq_dep_file.<br />
<br />
;[seq_dep_file]: specifies the file from which the sequence dependent parameters should be read. Mandatory if use_average_seq=no, ignored otherwise. A sample file is provided (sequence_dependent_parameters.txt).<br />
<br />
;[external_forces=0]: 0|1<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file).<br />
<br />
;[external_forces_file]: specifies the file containing all the external forces' configurations. Currently there are six supported force types (see EXAMPLES/TRAPS for some examples):<br />
:*string<br />
:*twist<br />
:*trap<br />
:*repulsion_plane<br />
:*repulsion_plane_moving<br />
:*mutual_trap<br />
<br />
====Molecular dynamics simulations options====<br />
<br />
;dt: time step of the integration.<br />
<br />
;thermostat: no|refresh|brownian <br />
:no means no thermostat will be used. refresh will refresh all the particle's velocities from a maxwellian every newtonian_steps steps. john is an Anderson-like thermostat (see pt). Make sure you read [[Thermostat|thermostat]].<br />
<br />
;newtonian_steps: required if thermostat != no<br />
:number of steps after which a procedure of thermalization will be performed.<br />
<br />
;pt: used if thermostat == john. It's the probability that a particle's velocity will be refreshed during a thermalization procedure.<br />
<br />
;diff_coeff: required if pt is not specified<br />
:used internally to automatically compute the pt that would be needed if we wanted such a self diffusion coefficient. Not used if pt is set.<br />
<br />
====Monte Carlo simulations options====<br />
<br />
;[check_energy_every=10]: this number times print_energy_every gives the number of steps after which the energy will be computed from scratch and checked against the actual value computed adding energy differences.<br />
<br />
;[check_energy_threshold=1e-4]: if abs((old_energy - new_energy)/old_energy) > check_energy_threshold then the program will die and warn the user.<br />
<br />
;ensemble: NVT<br />
:ensemble of the simulation. More ensembles could be added in future versions.<br />
<br />
;delta_translation: maximum displacement (per dimension) for translational moves in simulation units.<br />
<br />
;delta_translation: maximum displacement for rotational moves in simulation units.<br />
<br />
===Input/output===<br />
The options listed here are used to manage the I/O (read and write configurations, energies and so on)<br />
<br />
;conf_file: initial configuration file. <br />
<br />
;topology: file containing the system's topology.<br />
<br />
;trajectory_file: the main output of the program. All the configurations will be appended to this file as they are printed.<br />
<br />
;[confs_to_skip=0]: valid only if conf_file is a trajectory. Skip the first confs_to_skip configurations and then load in memory the (confs_to_skip+1)th.<br />
<br />
;[lastconf_file=last_conf.dat]: this is the file where the last configuration is saved (when the program finishes or is killed). Set to last_conf.dat by default<br />
<br />
;[refresh_vel=0]: 0|1<br />
:if 1 the initial velocities will be refreshed from a maxwellian.<br />
<br />
;energy_file: energy output file.<br />
<br />
;[print_energy_every=1000]: this will make the program print the energies every print_energy_every steps.<br />
<br />
;[no_stdout_energy=0]: 0|1<br />
:if 1 the energy will be printed just to the energy_file.<br />
<br />
;[time_scale=linear]: linear|log_lin<br />
:using linear configurations will be saved every print_conf_interval.<br />
:using log_lin configurations will be saved logarithmically for print_conf_ppc times. After that the logarithmic sequence will restart.<br />
<br />
;print_conf_interval: linear interval if time_scale == linear. First step of the logarithmic scale if time_scale == log_lin.<br />
<br />
;[print_reduced_conf_every=0]: every print_reduced_conf_every steps the program will print out the reduced configurations (i.e. confs containing only the centers of mass of strands).<br />
<br />
;reduced_conf_output_dir: used if print_reduced_conf_every > 0<br />
:output directory for reduced_conf files.<br />
<br />
;[log_file=stderr]: file where generic and debug informations will be logged. If not specified then stderr will be used.<br />
<br />
==Output files==<br />
*The log file contains all the relevant information about the simulation (specified options, activated external forces, warnings about misconfigurations, critical errors, etc.). If the log file is omitted, all this information will be displayed on the standard output.<br />
<br />
*The energy file layout for MD simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| kinetic energy<br />
| total energy<br />
| hydrogen bonding energy<br />
|}<br />
<br />
:while for MC simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| hydrogen bonding energy<br />
| acceptance ratio for translational moves<br />
| acceptance ratio for rotational moves<br />
|}<br />
<br />
:N.B. potential, kinetic and total energies are divided by the number of particles whereas the hydrogen bonding energy is not.<br />
<br />
*Configurations are saved in the trajectory file.<br />
<br />
==Configuration and topology files==<br />
The current state of a system, as specified by oxDNA, is described by two files: a configuration file and a topology file. The configuration file contains all the general information (timestep, energy and box size) and the orientations and positions of each nucleotide. The topology file, on the other hand, keeps track of the backbone-backbone bonds between nucleotides in the same strand. Working configuration and topology files can be found in the <tt>[[Examples|EXAMPLES]]</tt> directory.<br />
<br />
===Configuration file===<br />
The first three rows of a configuration file contain the timestep <tt>T</tt> at which the configuration has been printed, the length of the box sides <tt>Lx</tt>, <tt>Ly</tt> and <tt>Lz</tt> and the total, potential and kinetic energies, <tt>Etot</tt>, <tt>U</tt> and <tt>K</tt>, respectively:<br />
<br />
<pre><br />
t = T<br />
b = Lz Ly Lz<br />
E = Etot U K<br />
</pre><br />
<br />
after this header, each row contains position of the centre of mass, orientation, velocity and angular velocity of a single nucleotide in the following order:<br />
<br />
<math>\overbrace{r_x r_y r_z}^{\rm Position} \overbrace{b_x b_y b_z}^{\rm Backbone-base versor} \overbrace{n_x n_y n_z}^{\rm Normal versor} \overbrace{v_x v_y v_z}^{\rm Velocity} \overbrace{L_x L_y L_z}^{\rm Angular velocity}</math><br />
<br />
===Topology file===<br />
The topology file stores the intra-strand, fixed bonding topology (i.e. which nucleotides share backbone links). The first row contains the total number of nucleotides <tt>N</tt> and the number of strands <tt>Ns</tt>:<br />
<br />
<pre><br />
N Ns<br />
</pre><br />
<br />
After this header, the <tt>i</tt>-th row specifies strand, base and 3' and 5' neighbors of the <tt>i</tt>-th nucleotide in this way:<br />
<br />
<pre><br />
S B 3' 5'<br />
</pre><br />
<br />
where S is the index of the strand (starting from 1) which the nucleotide belongs to, B is the base and 3' and 5' specify the index of the nucleotides with which the <tt>i</tt>-th nucleotide is bonded in the 3' and 5' direction, respectively. A <tt>-1</tt> signals that the nucleotide terminates the strand in either 3' or 5' direction. The topology file of a strand of sequence <tt>GCGTTG</tt> would be:<br />
<br />
<pre><br />
6 1<br />
1 G -1 1<br />
1 C 0 2<br />
1 G 1 3<br />
1 T 2 4<br />
1 T 3 5<br />
1 G 4 -1<br />
</pre><br />
<br />
Specifying the topology in this way can simplify the process of simulating, for example, circular DNA.<br />
<br />
===Generation of initial configurations===<br />
In order to generate initial configuration and topology files, we provide the <tt>${oxDNA}/UTILS/generate-sa.py</tt> script. The usage of the script is<br />
<br />
<pre>generate-sa.py <box side> <file with sequence></pre> <br />
<br />
where <tt><box side></tt> specifies the length of the box side in simulation units and <tt><file with sequence></tt> contains the sequence of the strands to be generated, one row per strand. If double strands are needed, each sequence must be preceded by <tt>DOUBLE</tt>. For example, a file containing<br />
<br />
<pre><br />
DOUBLE AGGGCT<br />
CCTGTA<br />
</pre><br />
<br />
would generate a double strand with a sequence <tt>AGGGCT</tt> and a single strand with a sequence <tt>CCTGTA</tt>. The sequences are given in 3'-5' order.<br />
<br />
Positions and orientations of the strands are all chosen at random in such a way that the resulting initial configuration does not contain significant excluded volume interactions between nucleotides belonging to different strands. Generated single- and double-strands have helical conformations (i.e. they are in the minimum of the intra-strand interaction energy).<br />
<br />
The output configuration and topology are stored in <tt>generated.dat</tt> and <tt>generated.top</tt>, respectively. <br />
Since this script will initialize nucleotides' velocities and angular velocities to 0, when performing a molecular (or Brownian) dynamics simulation remember to put <tt>refresh_vel = 1</tt> in the [[Documentation#Input_file|input]] file.<br />
<br />
==Analysis of configurations==<br />
The configurations produced by oxDNA can be analysed with the <tt>output_bonds</tt> program in <tt>${oxDNA}/UTILS/process_data/</tt> directory. This program takes as command line arguments the input file (to recover the temperature and topology file), a configuration/trajectory file and an optional number. Since <tt>output_bonds</tt> reads analyses a single configuration, the optional number selects the configuration which it needs to analyse in the trajectory. Analysing a whole trajectory can be done by looping over a counter.<br />
<br />
Please note that <tt>output_bonds</tt> is not compiled automatically. If you never compiled it, do so as described in the [[Download_and_Installation#Installation|installation instructions]].<br />
<br />
<tt>output_bonds</tt> can be used as follows:<br />
<pre><br />
${oxDNA}/UTILS/process_data/output_bonds <input_file> <trajectory_file> [counter]<br />
</pre><br />
<br />
The program outputs some debugging information to the standard error and information regarding the interaction energies to the standard output. The contributions arising from each of the terms in the potential (see the appendix of [[Publications|Ref. 2]]) are reported for each pair of nucleotides that have non-zero total interactions.<br />
<br />
This output can be easily parsed to analyse the configurations.<br />
<br />
For each pair of nucleotides that do interact in the configuration, the program prints out a line containing:<br />
* The id of the two particles (starting from 0)<br />
* The total interaction energy<br />
* The hydrogen bonding (base pairing) energy<br />
* The stacking energy<br />
* The cross stacking energy<br />
* The excluded volume energy<br />
* The FENE interaction energy<br />
* A letter indicating a status code. This will be <tt>N</tt> for pairs that interact through bonded interactions (i.e. they are neighbors along a strand) and it will be <tt>H</tt> when a base pair is present. Our definition of base pair is when two nucleotides have a hydrogen bonding energy less than 0.1 in simulation units (see [[Publications|Ref. 2]]).<br />
<br />
===Geometry of the Model===<br />
In the configuration/trajectory files only the positions and orientations of the nucleotides are stored. If one wants to recover the positions of the individual interaction sites in the model, some maths need to be done.<br />
<br />
The position of the base, stacking and backbone sites can be recovered as follows:<br />
<br />
base site: (center) + 0.40 * (axis vector)<br />
<br />
stacking site: (center) + 0.34 * (axis vector)<br />
<br />
backbone site: (center) - 0.40 * (axis_vector)<br />
<br />
The picture in the [[Model_introduction|introduction]] might help understanding where the sites are.<br />
<br />
==External Forces==<br />
The code implements several types of external forces that can be imposed on the system that can be used either to simulate tension exerted on DNA or simply to accelerate the formation of secondary or tertiary structure. External forces can be tricky to treat, especially in a dynamics simulation, since they are an external source of work. Care should be taken in adjusting the time step, thermostat parameters and such.<br />
<br />
To enable external forces, one needs to specify <tt>external_forces = 1</tt> in the input file and also supply an external force file to read from with the key <tt>external_forces_file = <file></tt>.<br />
<br />
The syntax of the external forces file is quite simple. Examples of such files can be found in the [[Hairpin_formation|hairpin formation]] and [[Pseudoknot|Pseudoknot formation]] examples. Each force is specified within a block contained in curly brackets. Empty lines and lines beginning with an hash symbol (<tt>#</tt>) are ignored. Different forces require different keys to be present. If the file has the wrong syntax, oxDNA should spit out a sensible error message while parsing the file.<br />
<br />
The different types of forces implemented at the moment are:<br />
* harmonic trap<br />
* string <br />
* repulsion plane<br />
* mutual trap<br />
<br />
All forces act on the centre of the particle.<br />
<br />
Forces of different kinds can be combined in the same simulation. There is a maximum number of 10 external forces per particle for memory reasons. This can be manually overridden recompiling the code with a different value of the macro <tt>MAX_EXT_FORCES</tt> (currently 10) in <tt>defs.h</tt>.<br />
<br />
===String===<br />
A string is implemented as a force that does not depend on the particle position. Its value can be constant or can change linearly with time. It is useful as it does not fluctuate with time.<br />
<br />
A force of this kind is specified with <tt>type = string</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''F0''' (float) the value of the force at time = 0 in simulation units (please note that the value of the time may or may not be reset when starting a simulation, depending on the input file)<br />
* '''rate''' (float) growing rate of the force (simulation units/time steps). Typical values are very small (< 10^(-5))<br />
* '''dir''' (3 floats separated by commas) direction of the force (automatically normalised by the code)<br />
<br />
The following bit of code will create an external force on the first nucleotide in the system starting at 1 simulation units (48.6 pN) and growing linearly with time at the rate of 48.6pN every million time steps. The force will pull the nucleotide along the <tt>z</tt> direction.<br />
<br />
<pre><br />
{<br />
type = string<br />
particle = 0<br />
F0 = 1.<br />
rate = 1e-6<br />
dir = 0., 0., 1.<br />
} <br />
</pre><br />
<br />
===Harmonic trap===<br />
This type of force implements an harmonic trap, of arbitrary stiffness, that can move linearly with time. It can be useful to fix the position of the nucleotides to simulate attachment to something or to implement (quasi) constant extension simulations.<br />
<br />
A force of this kind is specified with <tt>type = trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) rest position of the trap<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) speed of the trap (length simulation units/time steps)<br />
* '''dir''' (3 floats separated by commas) direction of movement of the trap<br />
<br />
Here is an example input for a harmonic trap acting on the third nucleotide constraining it to stay close to the origin. In this example the trap does not move (<tt>rate=0</tt>), but one could have it move at a constant speed along the direction specified by <tt>dir</tt>, in this case the <tt>x</tt> direction.<br />
<br />
<pre><br />
{<br />
type = trap<br />
particle = 2<br />
pos0 = 0., 0., 0.<br />
stiff = 1.0<br />
rate = 0.<br />
dir = 1.,0.,0.<br />
}<br />
</pre><br />
<br />
Please note that the trap does not comply with periodic boundary conditions. This is most likely what you want.<br />
<br />
===Repulsion plane===<br />
This kind of external force implements a repulsion plane that constrains a particle (or the whole system) to stay on one side of it. It is implemented as a harmonic repulsion, but the stiffness can be made arbitrarily high to mimic a hard repulsion.<br />
<br />
A force of this kind is specified with <tt>type = repulsion_plane</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force. If set to the special value -1, the force will be exerted on all particles.<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * D, where D is distance from the plane. The force is exerted only if the nucleotide is below the plane)<br />
* '''dir''' (3 floats separated by commas) a direction normal to the plane<br />
* '''position''' (1 float number) specifies the position of the plane<br />
<br />
If direction is <tt> direction = u,v,w </tt> , then the plane contains all the points (x,y,z) that satisfy the equation: u*x + v*y + w*z + position = 0.<br />
Only nucleotides with coordinates (x,y,z) that satisfy u*x + v*y + w*z + position < 0 will feel the force.<br />
The force exerted on a nucleotide is equal to stiff * D, where D is the distance of the nucleotide from the plane, where <math> D = | ux + vy + wz + \mbox{position}| / \sqrt{v^2 + u^2 + z^2 }.</math><br />
For nucleotides for which u*x + v*y + w*z + position >= 0, no force will be exerted.<br />
<br />
Here is an example. This plane acts on the whole system and will not exert any force on nucleotides with a positive <tt>x</tt> coordinate. A force proportional to 48.6 pN * (<tt>x</tt> coordinate) will be exerted on all particles . <br />
<br />
<pre><br />
{<br />
type = repulsion_plane<br />
#whole system<br />
particle = -1<br />
stiff = 1. #48.6 pN in simulation units<br />
dir = 1, 0, 0<br />
position = 0<br />
}<br />
</pre><br />
<br />
If in the above example you would specify position = 3, then the force would be exerted on all nucleotides with coordinate x > -3.<br />
<br />
===Mutual trap===<br />
This force is useful to form initial configurations. It is a harmonic force that at every moment pulls a particle towards a reference particle. It is possible to specify the separation at which the force will be 0.<br />
<br />
A force of this kind is specified with <tt>type = mutual_trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''ref_particle''' (int) particle to pull towards. Please note that this particle will not feel any force (the name mutual trap is thus misleading).<br />
* '''stiff''' (float) stiffness of the trap<br />
* '''r0''' (float) equilibrium distance of the trap.<br />
<br />
Here is an example, extracted from the [[Pseudoknot|pseudoknot formation example]]. This will pull particle 14 towards particle 39, favouring an equilibrium distance of 1.4 (which corresponds roughly to the minimum of the hydrogen bonding potential, not a coincidence). The same force with opposite sign is exerted on particle 39 through a separate force. It is not necessary to have both particles feel the force, but it usually works much better.<br />
<br />
<pre><br />
{<br />
type = mutual_trap<br />
particle = 14<br />
ref_particle = 39<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
<br />
{<br />
type = mutual_trap<br />
particle = 39<br />
ref_particle = 14<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
</pre><br />
<br />
==Visualisation of structures==<br />
oxDNA produces a trajectory file where all the relevant information is<br />
stored. A converter is provided (<tt>traj2vis.py</tt>) in the<br />
<tt>UTILS</tt> directory that is able to produce files in the <tt>xyz</tt><br />
and <tt>pdb</tt> formats. The same program can be used on a configuration<br />
file and it will produce a snapshot.<br />
<br />
Since the model is coarse-grained, we have to "trick" the visualisers into<br />
thinking that the interaction sites in the model are actually atoms.<br />
Advanced nucleic acids representations such as ribbons will not work on the<br />
outputs.<br />
<br />
All the images in the [[Screenshots]] page were produced with the pdb representation using UCSF chimera (see later on).<br />
<br />
===xyz format===<br />
<br />
just run <br />
<br />
<pre>$oxDNA/UTILS/traj2vis.py xyz <trajectory> <topology> </pre><br />
<br />
(where <tt>$oxDNA</tt> is the oxDNA source directory) to get the xyz representation in a file called the same as the trajectory<br />
file with <tt>.xyz</tt> appended. Please note that boundary conditions are<br />
implemented strand-wise, so strands that are bound might appear at two<br />
different sizes of the box. Also, the center of mass of the system (where<br />
each strand is weighted the same regardless of the length) is set to 0 at<br />
each frame. Carbons represent the backbone sites and oxygens the base sites.<br />
<br />
The resulting file can be read with a variety of programs. Here we will<br />
explain how to visualise it sensibly in [http://www.ks.uiuc.edu/Research/vmd/ VMD].<br />
<br />
* Run VMD and load the xyz file.<br />
* In the graphics menu, go to Representations.<br />
* In the Selected Atoms line, input <tt>name C</tt>. Also select Drawing method CPK, sphere scale 0.8 and Bond Radius 0.<br />
* In the Selected Atoms line, input <tt>name O</tt>. Also select Drawing method CPK, sphere scale 0.6 and Bond Radius 0.<br />
<br />
This should produce a ball representation of our model DNA. Bonds<br />
automatically produced by VMD are NOT meaningful in our context.<br />
<br />
===pdb format===<br />
Run <br />
<br />
<pre>$oxDNA/UTILS/traj2chimera.py <trajectory> <topology> </pre><br />
<br />
to produce a trajectory/configuration in the pdb format. A further file<br />
called <tt>chimera.com</tt> will be produced (more on this later). All<br />
comments above about periodic boundaries and centre of mass apply here as<br />
well.<br />
<br />
The pdb file can be visualised in VMD just like the xyz format, but a nicer<br />
output can be produced with [http://www.cgl.ucsf.edu/chimera/ UCSF Chimera] (although only for snapshots at<br />
the moment) as follows:<br />
<br />
Run chimera and load the pdb file. An ugly output will be displayed.<br />
<br />
Bring up the command line under the <tt>Tools → General Controls</tt> menu.<br />
Input <tt>read chimera.com</tt> in the command line and press enter. You<br />
should get a nicer visualisation with different bases in different colors,<br />
all the covalent bonds in the right place, etc.<br />
<br />
On large configurations, the production of ellipsoids will be extremely<br />
slow. You can remove it by removing the line<br />
<br />
<code>aniso scale 0.75 smoothing 4</code><br />
<br />
from the commands file. Loading the resulting file should be much faster.<br />
<br />
UCSF chimera can in turn export the scene in a variety of formats.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Publications&diff=799Publications2014-03-20T09:11:14Z<p>Rovigattil: </p>
<hr />
<div>#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''Phys. Rev. Lett''. '''104''', 178101 (2010)<br />
#:[http://prl.aps.org/abstract/PRL/v104/i17/e178101 DNA Nanotweezers Studied with a Coarse-Grained Model of DNA] ([http://arxiv.org/abs/0911.0555 arXiv])<br />
#T. E. Ouldridge, A. A. Louis and J. P. K. Doye, ''J. Chem. Phys'', '''134''', 085101 (2011)<br />
#:[http://link.aip.org/link/?JCP/134/085101 Structural, mechanical and thermodynamic properties of a coarse-grained DNA model] ([http://arxiv.org/abs/arXiv:1009.4480 arXiv])<br />
#T. E. Ouldridge, D.Phil. Thesis, University of Oxford, 2011.<br />
#:[http://ora.ox.ac.uk/objects/uuid:b2415bb2-7975-4f59-b5e2-8c022b4a3719 Coarse-grained modelling of DNA and DNA self-assembly]<br />
#F. Romano, A. Hudson, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''136''', 215102 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v136/i21/p215102_s1 The effect of topology on the structure and free energy landscape of DNA kissing complexes] ([http://arxiv.org/abs/1203.3577 arXiv])<br />
#C. De Michele, L. Rovigatti, T. Bellini, F. Sciortino, ''Soft Matter'' '''8''', 8388 (2012)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2012/sm/c2sm25845e Self-assembly of short DNA duplexes: from a coarse-grained model to experiments through a theoretical link] ([http://arxiv.org/abs/1204.0985 arXiv])<br />
#C. Matek, T. E. Ouldridge, A. Levy, J. P. K. Doye, A. A. Louis, ''J. Phys. Chem. B'' (2012)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/jp3080755 DNA cruciform arms nucleate through a correlated but non-synchronous cooperative mechanism] ([http://arxiv.org/abs/1206.2636 arXiv])<br />
#P. Šulc, F. Romano, T. E. Ouldridge, L. Rovigatti, J. P. K. Doye, A. A. Louis, ''J. Chem. Phys.'' '''137''', 135101 (2012)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v137/i13/p135101_s1 Sequence-dependent thermodynamics of a coarse-grained DNA model] ([http://arxiv.org/abs/1207.3391 arxiv]) <br />
#F. Romano, D. Chakraborty, J. P. K. Doye, T. E. Ouldridge, A. A. Louis, ''J. Chem. Phys.'' '''138''', 085101 (2013)<br />
#:[http://jcp.aip.org/resource/1/jcpsa6/v138/i8/p085101_s1 Coarse-grained simulations of DNA overstretching] ([http://arxiv.org/abs/1209.5892 arXiv])<br />
#P. Šulc, T. E. Ouldridge, F. Romano, J. P. K. Doye, A. A. Louis, ''Natural Computing'' (2013) <br />
#:[http://link.springer.com/article/10.1007%2Fs11047-013-9391-8 Simulating a burnt-bridges DNA motor with a coarse-grained DNA model] ([http://arxiv.org/abs/1212.4536 arXiv])<br />
#T. E. Ouldridge, R. L. Hoare, A. A. Louis, J. P. K. Doye, J. Bath, A. J. Turberfield, ''ACS Nano'' (2013) <br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn3058483 Optimizing DNA nanotechnology through coarse-grained modelling: a two-footed DNA walker]<br />
#T. E. Ouldridge, P. Šulc, F. Romano, J. P. K. Doye, A. A. Louis, ''Nucleic Acids Res.'', (2013) <br />
#:[http://nar.oxfordjournals.org/content/early/2013/08/08/nar.gkt687 DNA hybridization kinetics: zippering, internal displacement and sequence dependence] ([http://arxiv.org/abs/1303.3370 arXiv])<br />
#J.P.K. Doye, T. E. Ouldridge, A. A. Louis, F. Romano, P. Šulc, C. Matek, B.E.K. Snodin, L. Rovigatti, J. S. Schreck, R.M. Harrison, W.P.J. Smith, ''Phys. Chem. Chem. Phys'' (2013)<br />
#:[http://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp53545b#!divAbstract Coarse-graining DNA for simulations of DNA nanotechnology] ([http://arxiv.org/abs/1308.3843 arXiv])<br />
# N. Srinivas, T. E. Ouldridge, P. Šulc, J. M. Schaeffer, B. Yurke, A. A. Louis, J. P. K. Doye, E. Winfree, ''Nucleic Acids Res.'', (2013)<br />
#:[http://nar.oxfordjournals.org/content/early/2013/09/07/nar.gkt801.full?sid=762d341b-b72f-4a09-9235-20ad3ef8aeed On the biophysics and kinetics of toehold-mediated DNA strand displacement]<br />
#L. Rovigatti, F. Bomboi, F. Sciortino, ''arXiv'' (2014)<br />
#:[http://arxiv.org/abs/1401.2837 Accurate phase diagram of tetravalent DNA nanostars]<br />
# L. Rovigatti, P. Šulc, I. Reguly, F. Romano, ''arXiv'', (2014)<br />
#:[http://arxiv.org/abs/1401.4350 A comparison between parallelization approaches in molecular dynamics simulations on GPUs]<br />
#P. Šulc, F. Romano, T. E. Ouldridge, J. P. K. Doye, A. A. Louis, ''arXiv'' (2014) <br />
#:[http://arxiv.org/abs/1403.4180 A nucleotide-level coarse-grained model of RNA] ([http://arxiv.org/abs/1403.4180 arXiv])<br />
#L. Rovigatti, F. Smallenburg, F. Romano, F. Sciortino, ''ACS Nano'', (2014)<br />
#:[http://pubs.acs.org/doi/abs/10.1021/nn501138w Gels of DNA Nanostars Never Crystallise]</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Documentation&diff=798Documentation2014-03-19T11:35:38Z<p>Rovigattil: /* Input file */</p>
<hr />
<div>==Compile options==<br />
<br />
Compiling oxDNA requires that you have a working <tt>cmake</tt> software and C++ compiler on your machine. The instructions are provided in the [[Download and Installation]] section.<br />
<br />
==Usage==<br />
<br />
<pre>oxDNA input_file</pre><br />
<br />
The input file contains all the relevant information for the program to run, such as what initial configuration to use, the topology of the system, how often to print the energies to a file, etc. Please make sure you read the [[Thermostat|thermostat]] page if you use molecular dynamics.<br />
<br />
==Input file==<br />
<br />
As always in UNIX environments, everything is case sensitive.<br />
<br />
*Options are in the form key = value<br />
*There can be arbitrary spaces before and after both key and value<br />
*Line with a leading # will be treated as comments<br />
*The | (pipe) sign is the separator between the different values that can be used to specify a value for the key.<br />
*Keys between [ and ] are optional, the value after the equal sign is the default value<br />
<br />
Here we provide a list of the most commonly used input options. The complete and most up-to-date list of possible options can be found [[Input_options|here]] or in the <tt>README</tt> file in the main directory of the simulation code.<br />
<br />
The input options of the previous oxDNA version can be found [[Input_options_of_the_previous_version|here]].<br />
<br />
===Generic options===<br />
The options listed here define the generic behavior of the entire program.<br />
;[interaction_type = DNA]: DNA|RNA|patchy|LJ<br />
: (selects the model for the simulation. DNA ([[DNA_model_introduction|oxDNA model]]) is the default option. RNA ([[RNA_model_introduction|oxRNA model]]), LJ (Lennard-Jones) and patchy particles are also implemented<br />
;[sim_type=MD]: MD|MC|VMMC<br />
:MD = Molecular Dynamics, MC = Monte Carlo, VMMC = Virtual Move Monte Carlo<br />
;backend: CPU | CUDA <br />
: (only sim_type=MD is supported if you choose CUDA backend)<br />
;backend_precision: float|double|mixed<br />
: (mixed option is available only for CUDA backend. It is recommended choice for optimal performance on CUDA machines, double is recommended for CPU simulations)<br />
;[debug=0]: 0|1<br />
: 1 if you want verbose logs, 0 otherwise.<br />
<br />
===Simulation options===<br />
The options listed here specify the behaviour of the simulation.<br />
<br />
;steps: number of steps to be performed.<br />
<br />
;[restart_step_counter=0]: 0|1<br />
:0 means that the step counter will start from the value read in the configuration file; if 1, the step counter will be reset to 0. The total duration of the simulation is unchanged.<br />
<br />
;[seed=time(NULL)]: seed for the random number generator. On Unix systems, it will use by default a number from /dev/urandom + time(NULL)<br />
<br />
;T: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
:Examples:<br />
{|<br />
|-<br />
! Value<br />
! Simulation Units<br />
|-<br />
| 0.1<br />
| 0.1<br />
|-<br />
| 300 K<br />
| 0.1<br />
|-<br />
| 300k<br />
| 0.1<br />
|-<br />
| 26.85c<br />
| 0.1<br />
|-<br />
| 26.85 C <br />
| 0.1<br />
|-<br />
|}<br />
<br />
;verlet_skin: if a particle moves more than verlet_skin then the lists will be updated. Its name is somewhat misleading: the actual verlet skin is 2*verlet_skin.<br />
<br />
;[use_average_seq=1]: 0|1<br />
: specifies whether to use the default hard-coded average parameters for base-pairing and stacking interaction strengths or not. If sequence dependence is to be used, set this to 0 and specify seq_dep_file.<br />
<br />
;[seq_dep_file]: specifies the file from which the sequence dependent parameters should be read. Mandatory if use_average_seq=no, ignored otherwise. A sample file is provided (sequence_dependent_parameters.txt).<br />
<br />
;[external_forces=0]: 0|1<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file).<br />
<br />
;[external_forces_file]: specifies the file containing all the external forces' configurations. Currently there are six supported force types (see EXAMPLES/TRAPS for some examples):<br />
:*string<br />
:*twist<br />
:*trap<br />
:*repulsion_plane<br />
:*repulsion_plane_moving<br />
:*mutual_trap<br />
<br />
====Molecular dynamics simulations options====<br />
<br />
;dt: time step of the integration.<br />
<br />
;thermostat: no|refresh|brownian <br />
:no means no thermostat will be used. refresh will refresh all the particle's velocities from a maxwellian every newtonian_steps steps. john is an Anderson-like thermostat (see pt). Make sure you read [[Thermostat|thermostat]].<br />
<br />
;newtonian_steps: required if thermostat != no<br />
:number of steps after which a procedure of thermalization will be performed.<br />
<br />
;pt: used if thermostat == john. It's the probability that a particle's velocity will be refreshed during a thermalization procedure.<br />
<br />
;diff_coeff: required if pt is not specified<br />
:used internally to automatically compute the pt that would be needed if we wanted such a self diffusion coefficient. Not used if pt is set.<br />
<br />
====Monte Carlo simulations options====<br />
<br />
;[check_energy_every=10]: this number times print_energy_every gives the number of steps after which the energy will be computed from scratch and checked against the actual value computed adding energy differences.<br />
<br />
;[check_energy_threshold=1e-4]: if abs((old_energy - new_energy)/old_energy) > check_energy_threshold then the program will die and warn the user.<br />
<br />
;ensemble: NVT<br />
:ensemble of the simulation. More ensembles could be added in future versions.<br />
<br />
;delta_translation: maximum displacement (per dimension) for translational moves in simulation units.<br />
<br />
;delta_translation: maximum displacement for rotational moves in simulation units.<br />
<br />
===Input/output===<br />
The options listed here are used to manage the I/O (read and write configurations, energies and so on)<br />
<br />
;conf_file: initial configuration file. <br />
<br />
;topology: file containing the system's topology.<br />
<br />
;trajectory_file: the main output of the program. All the configurations will be appended to this file as they are printed.<br />
<br />
;[confs_to_skip=0]: valid only if conf_file is a trajectory. Skip the first confs_to_skip configurations and then load in memory the (confs_to_skip+1)th.<br />
<br />
;[lastconf_file=last_conf.dat]: this is the file where the last configuration is saved (when the program finishes or is killed). Set to last_conf.dat by default<br />
<br />
;[refresh_vel=0]: 0|1<br />
:if 1 the initial velocities will be refreshed from a maxwellian.<br />
<br />
;energy_file: energy output file.<br />
<br />
;[print_energy_every=1000]: this will make the program print the energies every print_energy_every steps.<br />
<br />
;[no_stdout_energy=0]: 0|1<br />
:if 1 the energy will be printed just to the energy_file.<br />
<br />
;[time_scale=linear]: linear|log_lin<br />
:using linear configurations will be saved every print_conf_interval.<br />
:using log_lin configurations will be saved logarithmically for print_conf_ppc times. After that the logarithmic sequence will restart.<br />
<br />
;print_conf_interval: linear interval if time_scale == linear. First step of the logarithmic scale if time_scale == log_lin.<br />
<br />
;[print_reduced_conf_every=0]: every print_reduced_conf_every steps the program will print out the reduced configurations (i.e. confs containing only the centers of mass of strands).<br />
<br />
;reduced_conf_output_dir: used if print_reduced_conf_every > 0<br />
:output directory for reduced_conf files.<br />
<br />
;[log_file=stderr]: file where generic and debug informations will be logged. If not specified then stderr will be used.<br />
<br />
==Output files==<br />
*The log file contains all the relevant information about the simulation (specified options, activated external forces, warnings about misconfigurations, critical errors, etc.). If the log file is omitted, all this information will be displayed on the standard output.<br />
<br />
*The energy file layout for MD simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| kinetic energy<br />
| total energy<br />
| hydrogen bonding energy<br />
|}<br />
<br />
:while for MC simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| hydrogen bonding energy<br />
| acceptance ratio for translational moves<br />
| acceptance ratio for rotational moves<br />
|}<br />
<br />
:N.B. potential, kinetic and total energies are divided by the number of particles whereas the hydrogen bonding energy is not.<br />
<br />
*Configurations are saved in the trajectory file.<br />
<br />
==Configuration and topology files==<br />
The current state of a system, as specified by oxDNA, is described by two files: a configuration file and a topology file. The configuration file contains all the general information (timestep, energy and box size) and the orientations and positions of each nucleotide. The topology file, on the other hand, keeps track of the backbone-backbone bonds between nucleotides in the same strand. Working configuration and topology files can be found in the <tt>[[Examples|EXAMPLES]]</tt> directory.<br />
<br />
===Configuration file===<br />
The first three rows of a configuration file contain the timestep <tt>T</tt> at which the configuration has been printed, the length of the box sides <tt>Lx</tt>, <tt>Ly</tt> and <tt>Lz</tt> and the total, potential and kinetic energies, <tt>Etot</tt>, <tt>U</tt> and <tt>K</tt>, respectively:<br />
<br />
<pre><br />
t = T<br />
b = Lz Ly Lz<br />
E = Etot U K<br />
</pre><br />
<br />
after this header, each row contains position of the centre of mass, orientation, velocity and angular velocity of a single nucleotide in the following order:<br />
<br />
<math>\overbrace{r_x r_y r_z}^{\rm Position} \overbrace{b_x b_y b_z}^{\rm Backbone-base versor} \overbrace{n_x n_y n_z}^{\rm Normal versor} \overbrace{v_x v_y v_z}^{\rm Velocity} \overbrace{L_x L_y L_z}^{\rm Angular velocity}</math><br />
<br />
===Topology file===<br />
The topology file stores the intra-strand, fixed bonding topology (i.e. which nucleotides share backbone links). The first row contains the total number of nucleotides <tt>N</tt> and the number of strands <tt>Ns</tt>:<br />
<br />
<pre><br />
N Ns<br />
</pre><br />
<br />
After this header, the <tt>i</tt>-th row specifies strand, base and 3' and 5' neighbors of the <tt>i</tt>-th nucleotide in this way:<br />
<br />
<pre><br />
S B 3' 5'<br />
</pre><br />
<br />
where S is the index of the strand (starting from 1) which the nucleotide belongs to, B is the base and 3' and 5' specify the index of the nucleotides with which the <tt>i</tt>-th nucleotide is bonded in the 3' and 5' direction, respectively. A <tt>-1</tt> signals that the nucleotide terminates the strand in either 3' or 5' direction. The topology file of a strand of sequence <tt>GCGTTG</tt> would be:<br />
<br />
<pre><br />
6 1<br />
1 G -1 1<br />
1 C 0 2<br />
1 G 1 3<br />
1 T 2 4<br />
1 T 3 5<br />
1 G 4 -1<br />
</pre><br />
<br />
Specifying the topology in this way can simplify the process of simulating, for example, circular DNA.<br />
<br />
===Generation of initial configurations===<br />
In order to generate initial configuration and topology files, we provide the <tt>${oxDNA}/UTILS/generate-sa.py</tt> script. The usage of the script is<br />
<br />
<pre>generate-sa.py <box side> <file with sequence></pre> <br />
<br />
where <tt><box side></tt> specifies the length of the box side in simulation units and <tt><file with sequence></tt> contains the sequence of the strands to be generated, one row per strand. If double strands are needed, each sequence must be preceded by <tt>DOUBLE</tt>. For example, a file containing<br />
<br />
<pre><br />
DOUBLE AGGGCT<br />
CCTGTA<br />
</pre><br />
<br />
would generate a double strand with a sequence <tt>AGGGCT</tt> and a single strand with a sequence <tt>CCTGTA</tt>. The sequences are given in 3'-5' order.<br />
<br />
Positions and orientations of the strands are all chosen at random in such a way that the resulting initial configuration does not contain significant excluded volume interactions between nucleotides belonging to different strands. Generated single- and double-strands have helical conformations (i.e. they are in the minimum of the intra-strand interaction energy).<br />
<br />
The output configuration and topology are stored in <tt>generated.dat</tt> and <tt>generated.top</tt>, respectively. <br />
Since this script will initialize nucleotides' velocities and angular velocities to 0, when performing a molecular (or Brownian) dynamics simulation remember to put <tt>refresh_vel = 1</tt> in the [[Documentation#Input_file|input]] file.<br />
<br />
==Analysis of configurations==<br />
The configurations produced by oxDNA can be analysed with the <tt>output_bonds</tt> program in <tt>${oxDNA}/UTILS/process_data/</tt> directory. This program takes as command line arguments the input file (to recover the temperature and topology file), a configuration/trajectory file and an optional number. Since <tt>output_bonds</tt> reads analyses a single configuration, the optional number selects the configuration which it needs to analyse in the trajectory. Analysing a whole trajectory can be done by looping over a counter.<br />
<br />
Please note that <tt>output_bonds</tt> is not compiled automatically. If you never compiled it, do so as described in the [[Download_and_Installation#Installation|installation instructions]].<br />
<br />
<tt>output_bonds</tt> can be used as follows:<br />
<pre><br />
${oxDNA}/UTILS/process_data/output_bonds <input_file> <trajectory_file> [counter]<br />
</pre><br />
<br />
The program outputs some debugging information to the standard error and information regarding the interaction energies to the standard output. The contributions arising from each of the terms in the potential (see the appendix of [[Publications|Ref. 2]]) are reported for each pair of nucleotides that have non-zero total interactions.<br />
<br />
This output can be easily parsed to analyse the configurations.<br />
<br />
For each pair of nucleotides that do interact in the configuration, the program prints out a line containing:<br />
* The id of the two particles (starting from 0)<br />
* The total interaction energy<br />
* The hydrogen bonding (base pairing) energy<br />
* The stacking energy<br />
* The cross stacking energy<br />
* The excluded volume energy<br />
* The FENE interaction energy<br />
* A letter indicating a status code. This will be <tt>N</tt> for pairs that interact through bonded interactions (i.e. they are neighbors along a strand) and it will be <tt>H</tt> when a base pair is present. Our definition of base pair is when two nucleotides have a hydrogen bonding energy less than 0.1 in simulation units (see [[Publications|Ref. 2]]).<br />
<br />
===Geometry of the Model===<br />
In the configuration/trajectory files only the positions and orientations of the nucleotides are stored. If one wants to recover the positions of the individual interaction sites in the model, some maths need to be done.<br />
<br />
The position of the base, stacking and backbone sites can be recovered as follows:<br />
<br />
base site: (center) + 0.40 * (axis vector)<br />
<br />
stacking site: (center) + 0.34 * (axis vector)<br />
<br />
backbone site: (center) - 0.40 * (axis_vector)<br />
<br />
The picture in the [[Model_introduction|introduction]] might help understanding where the sites are.<br />
<br />
==External Forces==<br />
The code implements several types of external forces that can be imposed on the system that can be used either to simulate tension exerted on DNA or simply to accelerate the formation of secondary or tertiary structure. External forces can be tricky to treat, especially in a dynamics simulation, since they are an external source of work. Care should be taken in adjusting the time step, thermostat parameters and such.<br />
<br />
To enable external forces, one needs to specify <tt>external_forces = 1</tt> in the input file and also supply an external force file to read from with the key <tt>external_forces_file = <file></tt>.<br />
<br />
The syntax of the external forces file is quite simple. Examples of such files can be found in the [[Hairpin_formation|hairpin formation]] and [[Pseudoknot|Pseudoknot formation]] examples. Each force is specified within a block contained in curly brackets. Empty lines and lines beginning with an hash symbol (<tt>#</tt>) are ignored. Different forces require different keys to be present. If the file has the wrong syntax, oxDNA should spit out a sensible error message while parsing the file.<br />
<br />
The different types of forces implemented at the moment are:<br />
* harmonic trap<br />
* string <br />
* repulsion plane<br />
* mutual trap<br />
<br />
All forces act on the centre of the particle.<br />
<br />
Forces of different kinds can be combined in the same simulation. There is a maximum number of 10 external forces per particle for memory reasons. This can be manually overridden recompiling the code with a different value of the macro <tt>MAX_EXT_FORCES</tt> (currently 10) in <tt>defs.h</tt>.<br />
<br />
===String===<br />
A string is implemented as a force that does not depend on the particle position. Its value can be constant or can change linearly with time. It is useful as it does not fluctuate with time.<br />
<br />
A force of this kind is specified with <tt>type = string</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''F0''' (float) the value of the force at time = 0 in simulation units (please note that the value of the time may or may not be reset when starting a simulation, depending on the input file)<br />
* '''rate''' (float) growing rate of the force (simulation units/time steps). Typical values are very small (< 10^(-5))<br />
* '''dir''' (3 floats separated by commas) direction of the force (automatically normalised by the code)<br />
<br />
The following bit of code will create an external force on the first nucleotide in the system starting at 1 simulation units (48.6 pN) and growing linearly with time at the rate of 48.6pN every million time steps. The force will pull the nucleotide along the <tt>z</tt> direction.<br />
<br />
<pre><br />
{<br />
type = string<br />
particle = 0<br />
F0 = 1.<br />
rate = 1e-6<br />
dir = 0., 0., 1.<br />
} <br />
</pre><br />
<br />
===Harmonic trap===<br />
This type of force implements an harmonic trap, of arbitrary stiffness, that can move linearly with time. It can be useful to fix the position of the nucleotides to simulate attachment to something or to implement (quasi) constant extension simulations.<br />
<br />
A force of this kind is specified with <tt>type = trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) rest position of the trap<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) speed of the trap (length simulation units/time steps)<br />
* '''dir''' (3 floats separated by commas) direction of movement of the trap<br />
<br />
Here is an example input for a harmonic trap acting on the third nucleotide constraining it to stay close to the origin. In this example the trap does not move (<tt>rate=0</tt>), but one could have it move at a constant speed along the direction specified by <tt>dir</tt>, in this case the <tt>x</tt> direction.<br />
<br />
<pre><br />
{<br />
type = trap<br />
particle = 2<br />
pos0 = 0., 0., 0.<br />
stiff = 1.0<br />
rate = 0.<br />
dir = 1.,0.,0.<br />
}<br />
</pre><br />
<br />
Please note that the trap does not comply with periodic boundary conditions. This is most likely what you want.<br />
<br />
===Repulsion plane===<br />
This kind of external force implements a repulsion plane that constrains a particle (or the whole system) to stay on one side of it. It is implemented as a harmonic repulsion, but the stiffness can be made arbitrarily high to mimic a hard repulsion.<br />
<br />
A force of this kind is specified with <tt>type = repulsion_plane</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force. If set to the special value -1, the force will be exerted on all particles.<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * D, where D is distance from the plane. The force is exerted only if the nucleotide is below the plane)<br />
* '''dir''' (3 floats separated by commas) a direction normal to the plane<br />
* '''position''' (1 float number) specifies the position of the plane<br />
<br />
If direction is <tt> direction = u,v,w </tt> , then the plane contains all the points (x,y,z) that satisfy the equation: u*x + v*y + w*z + position = 0.<br />
Only nucleotides with coordinates (x,y,z) that satisfy u*x + v*y + w*z + position < 0 will feel the force.<br />
The force exerted on a nucleotide is equal to stiff * D, where D is the distance of the nucleotide from the plane, where <math> D = | ux + vy + wz + \mbox{position}| / \sqrt{v^2 + u^2 + z^2 }.</math><br />
For nucleotides for which u*x + v*y + w*z + position >= 0, no force will be exerted.<br />
<br />
Here is an example. This plane acts on the whole system and will not exert any force on nucleotides with a positive <tt>x</tt> coordinate. A force proportional to 48.6 pN * (<tt>x</tt> coordinate) will be exerted on all particles . <br />
<br />
<pre><br />
{<br />
type = repulsion_plane<br />
#whole system<br />
particle = -1<br />
stiff = 1. #48.6 pN in simulation units<br />
dir = 1, 0, 0<br />
position = 0<br />
}<br />
</pre><br />
<br />
If in the above example you would specify position = 3, then the force would be exerted on all nucleotides with coordinate x > -3.<br />
<br />
===Mutual trap===<br />
This force is useful to form initial configurations. It is a harmonic force that at every moment pulls a particle towards a reference particle. It is possible to specify the separation at which the force will be 0.<br />
<br />
A force of this kind is specified with <tt>type = mutual_trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''ref_particle''' (int) particle to pull towards. Please note that this particle will not feel any force (the name mutual trap is thus misleading).<br />
* '''stiff''' (float) stiffness of the trap<br />
* '''r0''' (float) equilibrium distance of the trap.<br />
<br />
Here is an example, extracted from the [[Pseudoknot|pseudoknot formation example]]. This will pull particle 14 towards particle 39, favouring an equilibrium distance of 1.4 (which corresponds roughly to the minimum of the hydrogen bonding potential, not a coincidence). The same force with opposite sign is exerted on particle 39 through a separate force. It is not necessary to have both particles feel the force, but it is usually works much better.<br />
<br />
<pre><br />
{<br />
type = mutual_trap<br />
particle = 14<br />
ref_particle = 39<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
<br />
{<br />
type = mutual_trap<br />
particle = 39<br />
ref_particle = 14<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
</pre><br />
<br />
==Visualisation of structures==<br />
oxDNA produces a trajectory file where all the relevant information is<br />
stored. A converter is provided (<tt>traj2vis.py</tt>) in the<br />
<tt>UTILS</tt> directory that is able to produce files in the <tt>xyz</tt><br />
and <tt>pdb</tt> formats. The same program can be used on a configuration<br />
file and it will produce a snapshot.<br />
<br />
Since the model is coarse-grained, we have to "trick" the visualisers into<br />
thinking that the interaction sites in the model are actually atoms.<br />
Advanced nucleic acids representations such as ribbons will not work on the<br />
outputs.<br />
<br />
All the images in the [[Screenshots]] page were produced with the pdb representation using UCSF chimera (see later on).<br />
<br />
===xyz format===<br />
<br />
just run <br />
<br />
<pre>$oxDNA/UTILS/traj2vis.py xyz <trajectory> <topology> </pre><br />
<br />
(where <tt>$oxDNA</tt> is the oxDNA source directory) to get the xyz representation in a file called the same as the trajectory<br />
file with <tt>.xyz</tt> appended. Please note that boundary conditions are<br />
implemented strand-wise, so strands that are bound might appear at two<br />
different sizes of the box. Also, the center of mass of the system (where<br />
each strand is weighted the same regardless of the length) is set to 0 at<br />
each frame. Carbons represent the backbone sites and oxygens the base sites.<br />
<br />
The resulting file can be read with a variety of programs. Here we will<br />
explain how to visualise it sensibly in [http://www.ks.uiuc.edu/Research/vmd/ VMD].<br />
<br />
* Run VMD and load the xyz file.<br />
* In the graphics menu, go to Representations.<br />
* In the Selected Atoms line, input <tt>name C</tt>. Also select Drawing method CPK, sphere scale 0.8 and Bond Radius 0.<br />
* In the Selected Atoms line, input <tt>name O</tt>. Also select Drawing method CPK, sphere scale 0.6 and Bond Radius 0.<br />
<br />
This should produce a ball representation of our model DNA. Bonds<br />
automatically produced by VMD are NOT meaningful in our context.<br />
<br />
===pdb format===<br />
Run <br />
<br />
<pre>$oxDNA/UTILS/traj2chimera.py <trajectory> <topology> </pre><br />
<br />
to produce a trajectory/configuration in the pdb format. A further file<br />
called <tt>chimera.com</tt> will be produced (more on this later). All<br />
comments above about periodic boundaries and centre of mass apply here as<br />
well.<br />
<br />
The pdb file can be visualised in VMD just like the xyz format, but a nicer<br />
output can be produced with [http://www.cgl.ucsf.edu/chimera/ UCSF Chimera] (although only for snapshots at<br />
the moment) as follows:<br />
<br />
Run chimera and load the pdb file. An ugly output will be displayed.<br />
<br />
Bring up the command line under the <tt>Tools → General Controls</tt> menu.<br />
Input <tt>read chimera.com</tt> in the command line and press enter. You<br />
should get a nicer visualisation with different bases in different colors,<br />
all the covalent bonds in the right place, etc.<br />
<br />
On large configurations, the production of ellipsoids will be extremely<br />
slow. You can remove it by removing the line<br />
<br />
<code>aniso scale 0.75 smoothing 4</code><br />
<br />
from the commands file. Loading the resulting file should be much faster.<br />
<br />
UCSF chimera can in turn export the scene in a variety of formats.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Documentation&diff=797Documentation2014-03-19T11:34:54Z<p>Rovigattil: /* Input/output */</p>
<hr />
<div>==Compile options==<br />
<br />
Compiling oxDNA requires that you have a working <tt>cmake</tt> software and C++ compiler on your machine. The instructions are provided in the [[Download and Installation]] section.<br />
<br />
==Usage==<br />
<br />
<pre>oxDNA input_file</pre><br />
<br />
The input file contains all the relevant information for the program to run, such as what initial configuration to use, the topology of the system, how often to print the energies to a file, etc. Please make sure you read the [[Thermostat|thermostat]] page if you use molecular dynamics.<br />
<br />
==Input file==<br />
<br />
As always in UNIX environments, everything is case sensitive.<br />
<br />
*Options are in the form key = value<br />
*There can be arbitrary spaces before and after both key and value<br />
*Line with a leading # will be treated as comments<br />
*The | (pipe) sign is the separator between the different values that can be used to specify a value for the key.<br />
*Keys between [ and ] are optional, the value after the equal sign is the default value<br />
<br />
Here we provide a list of the most commonly used input options. The complete and most up-to-date list of possible options can be found [[Input_options|here]] or in the <tt>README</tt> file in the main directory of the simulation code.<br />
<br />
The input options of the previous oxDNA version can be found [[Input_options_of_the_previous_version|here]]<br />
<br />
===Generic options===<br />
The options listed here define the generic behavior of the entire program.<br />
;[interaction_type = DNA]: DNA|RNA|patchy|LJ<br />
: (selects the model for the simulation. DNA ([[DNA_model_introduction|oxDNA model]]) is the default option. RNA ([[RNA_model_introduction|oxRNA model]]), LJ (Lennard-Jones) and patchy particles are also implemented<br />
;[sim_type=MD]: MD|MC|VMMC<br />
:MD = Molecular Dynamics, MC = Monte Carlo, VMMC = Virtual Move Monte Carlo<br />
;backend: CPU | CUDA <br />
: (only sim_type=MD is supported if you choose CUDA backend)<br />
;backend_precision: float|double|mixed<br />
: (mixed option is available only for CUDA backend. It is recommended choice for optimal performance on CUDA machines, double is recommended for CPU simulations)<br />
;[debug=0]: 0|1<br />
: 1 if you want verbose logs, 0 otherwise.<br />
<br />
===Simulation options===<br />
The options listed here specify the behaviour of the simulation.<br />
<br />
;steps: number of steps to be performed.<br />
<br />
;[restart_step_counter=0]: 0|1<br />
:0 means that the step counter will start from the value read in the configuration file; if 1, the step counter will be reset to 0. The total duration of the simulation is unchanged.<br />
<br />
;[seed=time(NULL)]: seed for the random number generator. On Unix systems, it will use by default a number from /dev/urandom + time(NULL)<br />
<br />
;T: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
:Examples:<br />
{|<br />
|-<br />
! Value<br />
! Simulation Units<br />
|-<br />
| 0.1<br />
| 0.1<br />
|-<br />
| 300 K<br />
| 0.1<br />
|-<br />
| 300k<br />
| 0.1<br />
|-<br />
| 26.85c<br />
| 0.1<br />
|-<br />
| 26.85 C <br />
| 0.1<br />
|-<br />
|}<br />
<br />
;verlet_skin: if a particle moves more than verlet_skin then the lists will be updated. Its name is somewhat misleading: the actual verlet skin is 2*verlet_skin.<br />
<br />
;[use_average_seq=1]: 0|1<br />
: specifies whether to use the default hard-coded average parameters for base-pairing and stacking interaction strengths or not. If sequence dependence is to be used, set this to 0 and specify seq_dep_file.<br />
<br />
;[seq_dep_file]: specifies the file from which the sequence dependent parameters should be read. Mandatory if use_average_seq=no, ignored otherwise. A sample file is provided (sequence_dependent_parameters.txt).<br />
<br />
;[external_forces=0]: 0|1<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file).<br />
<br />
;[external_forces_file]: specifies the file containing all the external forces' configurations. Currently there are six supported force types (see EXAMPLES/TRAPS for some examples):<br />
:*string<br />
:*twist<br />
:*trap<br />
:*repulsion_plane<br />
:*repulsion_plane_moving<br />
:*mutual_trap<br />
<br />
====Molecular dynamics simulations options====<br />
<br />
;dt: time step of the integration.<br />
<br />
;thermostat: no|refresh|brownian <br />
:no means no thermostat will be used. refresh will refresh all the particle's velocities from a maxwellian every newtonian_steps steps. john is an Anderson-like thermostat (see pt). Make sure you read [[Thermostat|thermostat]].<br />
<br />
;newtonian_steps: required if thermostat != no<br />
:number of steps after which a procedure of thermalization will be performed.<br />
<br />
;pt: used if thermostat == john. It's the probability that a particle's velocity will be refreshed during a thermalization procedure.<br />
<br />
;diff_coeff: required if pt is not specified<br />
:used internally to automatically compute the pt that would be needed if we wanted such a self diffusion coefficient. Not used if pt is set.<br />
<br />
====Monte Carlo simulations options====<br />
<br />
;[check_energy_every=10]: this number times print_energy_every gives the number of steps after which the energy will be computed from scratch and checked against the actual value computed adding energy differences.<br />
<br />
;[check_energy_threshold=1e-4]: if abs((old_energy - new_energy)/old_energy) > check_energy_threshold then the program will die and warn the user.<br />
<br />
;ensemble: NVT<br />
:ensemble of the simulation. More ensembles could be added in future versions.<br />
<br />
;delta_translation: maximum displacement (per dimension) for translational moves in simulation units.<br />
<br />
;delta_translation: maximum displacement for rotational moves in simulation units.<br />
<br />
===Input/output===<br />
The options listed here are used to manage the I/O (read and write configurations, energies and so on)<br />
<br />
;conf_file: initial configuration file. <br />
<br />
;topology: file containing the system's topology.<br />
<br />
;trajectory_file: the main output of the program. All the configurations will be appended to this file as they are printed.<br />
<br />
;[confs_to_skip=0]: valid only if conf_file is a trajectory. Skip the first confs_to_skip configurations and then load in memory the (confs_to_skip+1)th.<br />
<br />
;[lastconf_file=last_conf.dat]: this is the file where the last configuration is saved (when the program finishes or is killed). Set to last_conf.dat by default<br />
<br />
;[refresh_vel=0]: 0|1<br />
:if 1 the initial velocities will be refreshed from a maxwellian.<br />
<br />
;energy_file: energy output file.<br />
<br />
;[print_energy_every=1000]: this will make the program print the energies every print_energy_every steps.<br />
<br />
;[no_stdout_energy=0]: 0|1<br />
:if 1 the energy will be printed just to the energy_file.<br />
<br />
;[time_scale=linear]: linear|log_lin<br />
:using linear configurations will be saved every print_conf_interval.<br />
:using log_lin configurations will be saved logarithmically for print_conf_ppc times. After that the logarithmic sequence will restart.<br />
<br />
;print_conf_interval: linear interval if time_scale == linear. First step of the logarithmic scale if time_scale == log_lin.<br />
<br />
;[print_reduced_conf_every=0]: every print_reduced_conf_every steps the program will print out the reduced configurations (i.e. confs containing only the centers of mass of strands).<br />
<br />
;reduced_conf_output_dir: used if print_reduced_conf_every > 0<br />
:output directory for reduced_conf files.<br />
<br />
;[log_file=stderr]: file where generic and debug informations will be logged. If not specified then stderr will be used.<br />
<br />
==Output files==<br />
*The log file contains all the relevant information about the simulation (specified options, activated external forces, warnings about misconfigurations, critical errors, etc.). If the log file is omitted, all this information will be displayed on the standard output.<br />
<br />
*The energy file layout for MD simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| kinetic energy<br />
| total energy<br />
| hydrogen bonding energy<br />
|}<br />
<br />
:while for MC simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| hydrogen bonding energy<br />
| acceptance ratio for translational moves<br />
| acceptance ratio for rotational moves<br />
|}<br />
<br />
:N.B. potential, kinetic and total energies are divided by the number of particles whereas the hydrogen bonding energy is not.<br />
<br />
*Configurations are saved in the trajectory file.<br />
<br />
==Configuration and topology files==<br />
The current state of a system, as specified by oxDNA, is described by two files: a configuration file and a topology file. The configuration file contains all the general information (timestep, energy and box size) and the orientations and positions of each nucleotide. The topology file, on the other hand, keeps track of the backbone-backbone bonds between nucleotides in the same strand. Working configuration and topology files can be found in the <tt>[[Examples|EXAMPLES]]</tt> directory.<br />
<br />
===Configuration file===<br />
The first three rows of a configuration file contain the timestep <tt>T</tt> at which the configuration has been printed, the length of the box sides <tt>Lx</tt>, <tt>Ly</tt> and <tt>Lz</tt> and the total, potential and kinetic energies, <tt>Etot</tt>, <tt>U</tt> and <tt>K</tt>, respectively:<br />
<br />
<pre><br />
t = T<br />
b = Lz Ly Lz<br />
E = Etot U K<br />
</pre><br />
<br />
after this header, each row contains position of the centre of mass, orientation, velocity and angular velocity of a single nucleotide in the following order:<br />
<br />
<math>\overbrace{r_x r_y r_z}^{\rm Position} \overbrace{b_x b_y b_z}^{\rm Backbone-base versor} \overbrace{n_x n_y n_z}^{\rm Normal versor} \overbrace{v_x v_y v_z}^{\rm Velocity} \overbrace{L_x L_y L_z}^{\rm Angular velocity}</math><br />
<br />
===Topology file===<br />
The topology file stores the intra-strand, fixed bonding topology (i.e. which nucleotides share backbone links). The first row contains the total number of nucleotides <tt>N</tt> and the number of strands <tt>Ns</tt>:<br />
<br />
<pre><br />
N Ns<br />
</pre><br />
<br />
After this header, the <tt>i</tt>-th row specifies strand, base and 3' and 5' neighbors of the <tt>i</tt>-th nucleotide in this way:<br />
<br />
<pre><br />
S B 3' 5'<br />
</pre><br />
<br />
where S is the index of the strand (starting from 1) which the nucleotide belongs to, B is the base and 3' and 5' specify the index of the nucleotides with which the <tt>i</tt>-th nucleotide is bonded in the 3' and 5' direction, respectively. A <tt>-1</tt> signals that the nucleotide terminates the strand in either 3' or 5' direction. The topology file of a strand of sequence <tt>GCGTTG</tt> would be:<br />
<br />
<pre><br />
6 1<br />
1 G -1 1<br />
1 C 0 2<br />
1 G 1 3<br />
1 T 2 4<br />
1 T 3 5<br />
1 G 4 -1<br />
</pre><br />
<br />
Specifying the topology in this way can simplify the process of simulating, for example, circular DNA.<br />
<br />
===Generation of initial configurations===<br />
In order to generate initial configuration and topology files, we provide the <tt>${oxDNA}/UTILS/generate-sa.py</tt> script. The usage of the script is<br />
<br />
<pre>generate-sa.py <box side> <file with sequence></pre> <br />
<br />
where <tt><box side></tt> specifies the length of the box side in simulation units and <tt><file with sequence></tt> contains the sequence of the strands to be generated, one row per strand. If double strands are needed, each sequence must be preceded by <tt>DOUBLE</tt>. For example, a file containing<br />
<br />
<pre><br />
DOUBLE AGGGCT<br />
CCTGTA<br />
</pre><br />
<br />
would generate a double strand with a sequence <tt>AGGGCT</tt> and a single strand with a sequence <tt>CCTGTA</tt>. The sequences are given in 3'-5' order.<br />
<br />
Positions and orientations of the strands are all chosen at random in such a way that the resulting initial configuration does not contain significant excluded volume interactions between nucleotides belonging to different strands. Generated single- and double-strands have helical conformations (i.e. they are in the minimum of the intra-strand interaction energy).<br />
<br />
The output configuration and topology are stored in <tt>generated.dat</tt> and <tt>generated.top</tt>, respectively. <br />
Since this script will initialize nucleotides' velocities and angular velocities to 0, when performing a molecular (or Brownian) dynamics simulation remember to put <tt>refresh_vel = 1</tt> in the [[Documentation#Input_file|input]] file.<br />
<br />
==Analysis of configurations==<br />
The configurations produced by oxDNA can be analysed with the <tt>output_bonds</tt> program in <tt>${oxDNA}/UTILS/process_data/</tt> directory. This program takes as command line arguments the input file (to recover the temperature and topology file), a configuration/trajectory file and an optional number. Since <tt>output_bonds</tt> reads analyses a single configuration, the optional number selects the configuration which it needs to analyse in the trajectory. Analysing a whole trajectory can be done by looping over a counter.<br />
<br />
Please note that <tt>output_bonds</tt> is not compiled automatically. If you never compiled it, do so as described in the [[Download_and_Installation#Installation|installation instructions]].<br />
<br />
<tt>output_bonds</tt> can be used as follows:<br />
<pre><br />
${oxDNA}/UTILS/process_data/output_bonds <input_file> <trajectory_file> [counter]<br />
</pre><br />
<br />
The program outputs some debugging information to the standard error and information regarding the interaction energies to the standard output. The contributions arising from each of the terms in the potential (see the appendix of [[Publications|Ref. 2]]) are reported for each pair of nucleotides that have non-zero total interactions.<br />
<br />
This output can be easily parsed to analyse the configurations.<br />
<br />
For each pair of nucleotides that do interact in the configuration, the program prints out a line containing:<br />
* The id of the two particles (starting from 0)<br />
* The total interaction energy<br />
* The hydrogen bonding (base pairing) energy<br />
* The stacking energy<br />
* The cross stacking energy<br />
* The excluded volume energy<br />
* The FENE interaction energy<br />
* A letter indicating a status code. This will be <tt>N</tt> for pairs that interact through bonded interactions (i.e. they are neighbors along a strand) and it will be <tt>H</tt> when a base pair is present. Our definition of base pair is when two nucleotides have a hydrogen bonding energy less than 0.1 in simulation units (see [[Publications|Ref. 2]]).<br />
<br />
===Geometry of the Model===<br />
In the configuration/trajectory files only the positions and orientations of the nucleotides are stored. If one wants to recover the positions of the individual interaction sites in the model, some maths need to be done.<br />
<br />
The position of the base, stacking and backbone sites can be recovered as follows:<br />
<br />
base site: (center) + 0.40 * (axis vector)<br />
<br />
stacking site: (center) + 0.34 * (axis vector)<br />
<br />
backbone site: (center) - 0.40 * (axis_vector)<br />
<br />
The picture in the [[Model_introduction|introduction]] might help understanding where the sites are.<br />
<br />
==External Forces==<br />
The code implements several types of external forces that can be imposed on the system that can be used either to simulate tension exerted on DNA or simply to accelerate the formation of secondary or tertiary structure. External forces can be tricky to treat, especially in a dynamics simulation, since they are an external source of work. Care should be taken in adjusting the time step, thermostat parameters and such.<br />
<br />
To enable external forces, one needs to specify <tt>external_forces = 1</tt> in the input file and also supply an external force file to read from with the key <tt>external_forces_file = <file></tt>.<br />
<br />
The syntax of the external forces file is quite simple. Examples of such files can be found in the [[Hairpin_formation|hairpin formation]] and [[Pseudoknot|Pseudoknot formation]] examples. Each force is specified within a block contained in curly brackets. Empty lines and lines beginning with an hash symbol (<tt>#</tt>) are ignored. Different forces require different keys to be present. If the file has the wrong syntax, oxDNA should spit out a sensible error message while parsing the file.<br />
<br />
The different types of forces implemented at the moment are:<br />
* harmonic trap<br />
* string <br />
* repulsion plane<br />
* mutual trap<br />
<br />
All forces act on the centre of the particle.<br />
<br />
Forces of different kinds can be combined in the same simulation. There is a maximum number of 10 external forces per particle for memory reasons. This can be manually overridden recompiling the code with a different value of the macro <tt>MAX_EXT_FORCES</tt> (currently 10) in <tt>defs.h</tt>.<br />
<br />
===String===<br />
A string is implemented as a force that does not depend on the particle position. Its value can be constant or can change linearly with time. It is useful as it does not fluctuate with time.<br />
<br />
A force of this kind is specified with <tt>type = string</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''F0''' (float) the value of the force at time = 0 in simulation units (please note that the value of the time may or may not be reset when starting a simulation, depending on the input file)<br />
* '''rate''' (float) growing rate of the force (simulation units/time steps). Typical values are very small (< 10^(-5))<br />
* '''dir''' (3 floats separated by commas) direction of the force (automatically normalised by the code)<br />
<br />
The following bit of code will create an external force on the first nucleotide in the system starting at 1 simulation units (48.6 pN) and growing linearly with time at the rate of 48.6pN every million time steps. The force will pull the nucleotide along the <tt>z</tt> direction.<br />
<br />
<pre><br />
{<br />
type = string<br />
particle = 0<br />
F0 = 1.<br />
rate = 1e-6<br />
dir = 0., 0., 1.<br />
} <br />
</pre><br />
<br />
===Harmonic trap===<br />
This type of force implements an harmonic trap, of arbitrary stiffness, that can move linearly with time. It can be useful to fix the position of the nucleotides to simulate attachment to something or to implement (quasi) constant extension simulations.<br />
<br />
A force of this kind is specified with <tt>type = trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) rest position of the trap<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) speed of the trap (length simulation units/time steps)<br />
* '''dir''' (3 floats separated by commas) direction of movement of the trap<br />
<br />
Here is an example input for a harmonic trap acting on the third nucleotide constraining it to stay close to the origin. In this example the trap does not move (<tt>rate=0</tt>), but one could have it move at a constant speed along the direction specified by <tt>dir</tt>, in this case the <tt>x</tt> direction.<br />
<br />
<pre><br />
{<br />
type = trap<br />
particle = 2<br />
pos0 = 0., 0., 0.<br />
stiff = 1.0<br />
rate = 0.<br />
dir = 1.,0.,0.<br />
}<br />
</pre><br />
<br />
Please note that the trap does not comply with periodic boundary conditions. This is most likely what you want.<br />
<br />
===Repulsion plane===<br />
This kind of external force implements a repulsion plane that constrains a particle (or the whole system) to stay on one side of it. It is implemented as a harmonic repulsion, but the stiffness can be made arbitrarily high to mimic a hard repulsion.<br />
<br />
A force of this kind is specified with <tt>type = repulsion_plane</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force. If set to the special value -1, the force will be exerted on all particles.<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * D, where D is distance from the plane. The force is exerted only if the nucleotide is below the plane)<br />
* '''dir''' (3 floats separated by commas) a direction normal to the plane<br />
* '''position''' (1 float number) specifies the position of the plane<br />
<br />
If direction is <tt> direction = u,v,w </tt> , then the plane contains all the points (x,y,z) that satisfy the equation: u*x + v*y + w*z + position = 0.<br />
Only nucleotides with coordinates (x,y,z) that satisfy u*x + v*y + w*z + position < 0 will feel the force.<br />
The force exerted on a nucleotide is equal to stiff * D, where D is the distance of the nucleotide from the plane, where <math> D = | ux + vy + wz + \mbox{position}| / \sqrt{v^2 + u^2 + z^2 }.</math><br />
For nucleotides for which u*x + v*y + w*z + position >= 0, no force will be exerted.<br />
<br />
Here is an example. This plane acts on the whole system and will not exert any force on nucleotides with a positive <tt>x</tt> coordinate. A force proportional to 48.6 pN * (<tt>x</tt> coordinate) will be exerted on all particles . <br />
<br />
<pre><br />
{<br />
type = repulsion_plane<br />
#whole system<br />
particle = -1<br />
stiff = 1. #48.6 pN in simulation units<br />
dir = 1, 0, 0<br />
position = 0<br />
}<br />
</pre><br />
<br />
If in the above example you would specify position = 3, then the force would be exerted on all nucleotides with coordinate x > -3.<br />
<br />
===Mutual trap===<br />
This force is useful to form initial configurations. It is a harmonic force that at every moment pulls a particle towards a reference particle. It is possible to specify the separation at which the force will be 0.<br />
<br />
A force of this kind is specified with <tt>type = mutual_trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''ref_particle''' (int) particle to pull towards. Please note that this particle will not feel any force (the name mutual trap is thus misleading).<br />
* '''stiff''' (float) stiffness of the trap<br />
* '''r0''' (float) equilibrium distance of the trap.<br />
<br />
Here is an example, extracted from the [[Pseudoknot|pseudoknot formation example]]. This will pull particle 14 towards particle 39, favouring an equilibrium distance of 1.4 (which corresponds roughly to the minimum of the hydrogen bonding potential, not a coincidence). The same force with opposite sign is exerted on particle 39 through a separate force. It is not necessary to have both particles feel the force, but it is usually works much better.<br />
<br />
<pre><br />
{<br />
type = mutual_trap<br />
particle = 14<br />
ref_particle = 39<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
<br />
{<br />
type = mutual_trap<br />
particle = 39<br />
ref_particle = 14<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
</pre><br />
<br />
==Visualisation of structures==<br />
oxDNA produces a trajectory file where all the relevant information is<br />
stored. A converter is provided (<tt>traj2vis.py</tt>) in the<br />
<tt>UTILS</tt> directory that is able to produce files in the <tt>xyz</tt><br />
and <tt>pdb</tt> formats. The same program can be used on a configuration<br />
file and it will produce a snapshot.<br />
<br />
Since the model is coarse-grained, we have to "trick" the visualisers into<br />
thinking that the interaction sites in the model are actually atoms.<br />
Advanced nucleic acids representations such as ribbons will not work on the<br />
outputs.<br />
<br />
All the images in the [[Screenshots]] page were produced with the pdb representation using UCSF chimera (see later on).<br />
<br />
===xyz format===<br />
<br />
just run <br />
<br />
<pre>$oxDNA/UTILS/traj2vis.py xyz <trajectory> <topology> </pre><br />
<br />
(where <tt>$oxDNA</tt> is the oxDNA source directory) to get the xyz representation in a file called the same as the trajectory<br />
file with <tt>.xyz</tt> appended. Please note that boundary conditions are<br />
implemented strand-wise, so strands that are bound might appear at two<br />
different sizes of the box. Also, the center of mass of the system (where<br />
each strand is weighted the same regardless of the length) is set to 0 at<br />
each frame. Carbons represent the backbone sites and oxygens the base sites.<br />
<br />
The resulting file can be read with a variety of programs. Here we will<br />
explain how to visualise it sensibly in [http://www.ks.uiuc.edu/Research/vmd/ VMD].<br />
<br />
* Run VMD and load the xyz file.<br />
* In the graphics menu, go to Representations.<br />
* In the Selected Atoms line, input <tt>name C</tt>. Also select Drawing method CPK, sphere scale 0.8 and Bond Radius 0.<br />
* In the Selected Atoms line, input <tt>name O</tt>. Also select Drawing method CPK, sphere scale 0.6 and Bond Radius 0.<br />
<br />
This should produce a ball representation of our model DNA. Bonds<br />
automatically produced by VMD are NOT meaningful in our context.<br />
<br />
===pdb format===<br />
Run <br />
<br />
<pre>$oxDNA/UTILS/traj2chimera.py <trajectory> <topology> </pre><br />
<br />
to produce a trajectory/configuration in the pdb format. A further file<br />
called <tt>chimera.com</tt> will be produced (more on this later). All<br />
comments above about periodic boundaries and centre of mass apply here as<br />
well.<br />
<br />
The pdb file can be visualised in VMD just like the xyz format, but a nicer<br />
output can be produced with [http://www.cgl.ucsf.edu/chimera/ UCSF Chimera] (although only for snapshots at<br />
the moment) as follows:<br />
<br />
Run chimera and load the pdb file. An ugly output will be displayed.<br />
<br />
Bring up the command line under the <tt>Tools → General Controls</tt> menu.<br />
Input <tt>read chimera.com</tt> in the command line and press enter. You<br />
should get a nicer visualisation with different bases in different colors,<br />
all the covalent bonds in the right place, etc.<br />
<br />
On large configurations, the production of ellipsoids will be extremely<br />
slow. You can remove it by removing the line<br />
<br />
<code>aniso scale 0.75 smoothing 4</code><br />
<br />
from the commands file. Loading the resulting file should be much faster.<br />
<br />
UCSF chimera can in turn export the scene in a variety of formats.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Documentation&diff=796Documentation2014-03-19T11:34:17Z<p>Rovigattil: /* Molecular dynamics simulations options */</p>
<hr />
<div>==Compile options==<br />
<br />
Compiling oxDNA requires that you have a working <tt>cmake</tt> software and C++ compiler on your machine. The instructions are provided in the [[Download and Installation]] section.<br />
<br />
==Usage==<br />
<br />
<pre>oxDNA input_file</pre><br />
<br />
The input file contains all the relevant information for the program to run, such as what initial configuration to use, the topology of the system, how often to print the energies to a file, etc. Please make sure you read the [[Thermostat|thermostat]] page if you use molecular dynamics.<br />
<br />
==Input file==<br />
<br />
As always in UNIX environments, everything is case sensitive.<br />
<br />
*Options are in the form key = value<br />
*There can be arbitrary spaces before and after both key and value<br />
*Line with a leading # will be treated as comments<br />
*The | (pipe) sign is the separator between the different values that can be used to specify a value for the key.<br />
*Keys between [ and ] are optional, the value after the equal sign is the default value<br />
<br />
Here we provide a list of the most commonly used input options. The complete and most up-to-date list of possible options can be found [[Input_options|here]] or in the <tt>README</tt> file in the main directory of the simulation code.<br />
<br />
The input options of the previous oxDNA version can be found [[Input_options_of_the_previous_version|here]]<br />
<br />
===Generic options===<br />
The options listed here define the generic behavior of the entire program.<br />
;[interaction_type = DNA]: DNA|RNA|patchy|LJ<br />
: (selects the model for the simulation. DNA ([[DNA_model_introduction|oxDNA model]]) is the default option. RNA ([[RNA_model_introduction|oxRNA model]]), LJ (Lennard-Jones) and patchy particles are also implemented<br />
;[sim_type=MD]: MD|MC|VMMC<br />
:MD = Molecular Dynamics, MC = Monte Carlo, VMMC = Virtual Move Monte Carlo<br />
;backend: CPU | CUDA <br />
: (only sim_type=MD is supported if you choose CUDA backend)<br />
;backend_precision: float|double|mixed<br />
: (mixed option is available only for CUDA backend. It is recommended choice for optimal performance on CUDA machines, double is recommended for CPU simulations)<br />
;[debug=0]: 0|1<br />
: 1 if you want verbose logs, 0 otherwise.<br />
<br />
===Simulation options===<br />
The options listed here specify the behaviour of the simulation.<br />
<br />
;steps: number of steps to be performed.<br />
<br />
;[restart_step_counter=0]: 0|1<br />
:0 means that the step counter will start from the value read in the configuration file; if 1, the step counter will be reset to 0. The total duration of the simulation is unchanged.<br />
<br />
;[seed=time(NULL)]: seed for the random number generator. On Unix systems, it will use by default a number from /dev/urandom + time(NULL)<br />
<br />
;T: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
:Examples:<br />
{|<br />
|-<br />
! Value<br />
! Simulation Units<br />
|-<br />
| 0.1<br />
| 0.1<br />
|-<br />
| 300 K<br />
| 0.1<br />
|-<br />
| 300k<br />
| 0.1<br />
|-<br />
| 26.85c<br />
| 0.1<br />
|-<br />
| 26.85 C <br />
| 0.1<br />
|-<br />
|}<br />
<br />
;verlet_skin: if a particle moves more than verlet_skin then the lists will be updated. Its name is somewhat misleading: the actual verlet skin is 2*verlet_skin.<br />
<br />
;[use_average_seq=1]: 0|1<br />
: specifies whether to use the default hard-coded average parameters for base-pairing and stacking interaction strengths or not. If sequence dependence is to be used, set this to 0 and specify seq_dep_file.<br />
<br />
;[seq_dep_file]: specifies the file from which the sequence dependent parameters should be read. Mandatory if use_average_seq=no, ignored otherwise. A sample file is provided (sequence_dependent_parameters.txt).<br />
<br />
;[external_forces=0]: 0|1<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file).<br />
<br />
;[external_forces_file]: specifies the file containing all the external forces' configurations. Currently there are six supported force types (see EXAMPLES/TRAPS for some examples):<br />
:*string<br />
:*twist<br />
:*trap<br />
:*repulsion_plane<br />
:*repulsion_plane_moving<br />
:*mutual_trap<br />
<br />
====Molecular dynamics simulations options====<br />
<br />
;dt: time step of the integration.<br />
<br />
;thermostat: no|refresh|brownian <br />
:no means no thermostat will be used. refresh will refresh all the particle's velocities from a maxwellian every newtonian_steps steps. john is an Anderson-like thermostat (see pt). Make sure you read [[Thermostat|thermostat]].<br />
<br />
;newtonian_steps: required if thermostat != no<br />
:number of steps after which a procedure of thermalization will be performed.<br />
<br />
;pt: used if thermostat == john. It's the probability that a particle's velocity will be refreshed during a thermalization procedure.<br />
<br />
;diff_coeff: required if pt is not specified<br />
:used internally to automatically compute the pt that would be needed if we wanted such a self diffusion coefficient. Not used if pt is set.<br />
<br />
====Monte Carlo simulations options====<br />
<br />
;[check_energy_every=10]: this number times print_energy_every gives the number of steps after which the energy will be computed from scratch and checked against the actual value computed adding energy differences.<br />
<br />
;[check_energy_threshold=1e-4]: if abs((old_energy - new_energy)/old_energy) > check_energy_threshold then the program will die and warn the user.<br />
<br />
;ensemble: NVT<br />
:ensemble of the simulation. More ensembles could be added in future versions.<br />
<br />
;delta_translation: maximum displacement (per dimension) for translational moves in simulation units.<br />
<br />
;delta_translation: maximum displacement for rotational moves in simulation units.<br />
<br />
===Input/output===<br />
The options listed here are used to manage the I/O (read and write configurations, energies and so on)<br />
<br />
;conf_file: initial configuration file. <br />
<br />
;topology: file containing the system's topology.<br />
<br />
;trajectory_file: the main output of the program. All the configurations will be appended to this file as they are printed.<br />
<br />
;[confs_to_skip=0]: valid only if conf_file is a trajectory. Skip the first confs_to_skip configurations and then load in memory the (confs_to_skip+1)th.<br />
<br />
;[lastconf_file=last_conf.dat]: this is the file where the last configuration is saved (when the program finishes or is killed). Set to last_conf.dat by default<br />
<br />
;[refresh_vel=0]: 0|1<br />
:if 1 the initial velocities will be refreshed from a maxwellian.<br />
<br />
;energy_file: energy output file.<br />
<br />
;[print_energy_every=1000]: this will make the program print the energies every print_energy_every steps.<br />
<br />
;[no_stdout_energy=0]: 0|1<br />
:if 1 the energy will be printed just to the energy_file.<br />
<br />
;[time_scale=linear]: linear|log_lin<br />
:using linear configurations will be saved every print_conf_interval.<br />
:using log_lin configurations will be saved logarithmically for print_conf_ppc times. After that the logarithmic sequence will restart.<br />
<br />
;print_conf_interval: linear interval if time_scale == linear. First step of the logarithmic scale if time_scale == log_lin.<br />
<br />
;print_conf_ppc: used if time_scale == log_lin<br />
:points per logarithmic cycle.<br />
<br />
;[print_reduced_conf_every=0]: every print_reduced_conf_every steps the program will print out the reduced configurations (i.e. confs containing only the centers of mass of strands).<br />
<br />
;reduced_conf_output_dir: used if print_reduced_conf_every > 0<br />
:output directory for reduced_conf files.<br />
<br />
;[log_file=stderr]: file where generic and debug informations will be logged. If not specified then stderr will be used.<br />
<br />
;[print_timings=0]: 0|1<br />
:if 1 the MD step timing have be printed to a file.<br />
<br />
;timings_filename: used if print_timings == 1<br />
:output file where the MD step timing will be appended to.<br />
<br />
==Output files==<br />
*The log file contains all the relevant information about the simulation (specified options, activated external forces, warnings about misconfigurations, critical errors, etc.). If the log file is omitted, all this information will be displayed on the standard output.<br />
<br />
*The energy file layout for MD simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| kinetic energy<br />
| total energy<br />
| hydrogen bonding energy<br />
|}<br />
<br />
:while for MC simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| hydrogen bonding energy<br />
| acceptance ratio for translational moves<br />
| acceptance ratio for rotational moves<br />
|}<br />
<br />
:N.B. potential, kinetic and total energies are divided by the number of particles whereas the hydrogen bonding energy is not.<br />
<br />
*Configurations are saved in the trajectory file.<br />
<br />
==Configuration and topology files==<br />
The current state of a system, as specified by oxDNA, is described by two files: a configuration file and a topology file. The configuration file contains all the general information (timestep, energy and box size) and the orientations and positions of each nucleotide. The topology file, on the other hand, keeps track of the backbone-backbone bonds between nucleotides in the same strand. Working configuration and topology files can be found in the <tt>[[Examples|EXAMPLES]]</tt> directory.<br />
<br />
===Configuration file===<br />
The first three rows of a configuration file contain the timestep <tt>T</tt> at which the configuration has been printed, the length of the box sides <tt>Lx</tt>, <tt>Ly</tt> and <tt>Lz</tt> and the total, potential and kinetic energies, <tt>Etot</tt>, <tt>U</tt> and <tt>K</tt>, respectively:<br />
<br />
<pre><br />
t = T<br />
b = Lz Ly Lz<br />
E = Etot U K<br />
</pre><br />
<br />
after this header, each row contains position of the centre of mass, orientation, velocity and angular velocity of a single nucleotide in the following order:<br />
<br />
<math>\overbrace{r_x r_y r_z}^{\rm Position} \overbrace{b_x b_y b_z}^{\rm Backbone-base versor} \overbrace{n_x n_y n_z}^{\rm Normal versor} \overbrace{v_x v_y v_z}^{\rm Velocity} \overbrace{L_x L_y L_z}^{\rm Angular velocity}</math><br />
<br />
===Topology file===<br />
The topology file stores the intra-strand, fixed bonding topology (i.e. which nucleotides share backbone links). The first row contains the total number of nucleotides <tt>N</tt> and the number of strands <tt>Ns</tt>:<br />
<br />
<pre><br />
N Ns<br />
</pre><br />
<br />
After this header, the <tt>i</tt>-th row specifies strand, base and 3' and 5' neighbors of the <tt>i</tt>-th nucleotide in this way:<br />
<br />
<pre><br />
S B 3' 5'<br />
</pre><br />
<br />
where S is the index of the strand (starting from 1) which the nucleotide belongs to, B is the base and 3' and 5' specify the index of the nucleotides with which the <tt>i</tt>-th nucleotide is bonded in the 3' and 5' direction, respectively. A <tt>-1</tt> signals that the nucleotide terminates the strand in either 3' or 5' direction. The topology file of a strand of sequence <tt>GCGTTG</tt> would be:<br />
<br />
<pre><br />
6 1<br />
1 G -1 1<br />
1 C 0 2<br />
1 G 1 3<br />
1 T 2 4<br />
1 T 3 5<br />
1 G 4 -1<br />
</pre><br />
<br />
Specifying the topology in this way can simplify the process of simulating, for example, circular DNA.<br />
<br />
===Generation of initial configurations===<br />
In order to generate initial configuration and topology files, we provide the <tt>${oxDNA}/UTILS/generate-sa.py</tt> script. The usage of the script is<br />
<br />
<pre>generate-sa.py <box side> <file with sequence></pre> <br />
<br />
where <tt><box side></tt> specifies the length of the box side in simulation units and <tt><file with sequence></tt> contains the sequence of the strands to be generated, one row per strand. If double strands are needed, each sequence must be preceded by <tt>DOUBLE</tt>. For example, a file containing<br />
<br />
<pre><br />
DOUBLE AGGGCT<br />
CCTGTA<br />
</pre><br />
<br />
would generate a double strand with a sequence <tt>AGGGCT</tt> and a single strand with a sequence <tt>CCTGTA</tt>. The sequences are given in 3'-5' order.<br />
<br />
Positions and orientations of the strands are all chosen at random in such a way that the resulting initial configuration does not contain significant excluded volume interactions between nucleotides belonging to different strands. Generated single- and double-strands have helical conformations (i.e. they are in the minimum of the intra-strand interaction energy).<br />
<br />
The output configuration and topology are stored in <tt>generated.dat</tt> and <tt>generated.top</tt>, respectively. <br />
Since this script will initialize nucleotides' velocities and angular velocities to 0, when performing a molecular (or Brownian) dynamics simulation remember to put <tt>refresh_vel = 1</tt> in the [[Documentation#Input_file|input]] file.<br />
<br />
==Analysis of configurations==<br />
The configurations produced by oxDNA can be analysed with the <tt>output_bonds</tt> program in <tt>${oxDNA}/UTILS/process_data/</tt> directory. This program takes as command line arguments the input file (to recover the temperature and topology file), a configuration/trajectory file and an optional number. Since <tt>output_bonds</tt> reads analyses a single configuration, the optional number selects the configuration which it needs to analyse in the trajectory. Analysing a whole trajectory can be done by looping over a counter.<br />
<br />
Please note that <tt>output_bonds</tt> is not compiled automatically. If you never compiled it, do so as described in the [[Download_and_Installation#Installation|installation instructions]].<br />
<br />
<tt>output_bonds</tt> can be used as follows:<br />
<pre><br />
${oxDNA}/UTILS/process_data/output_bonds <input_file> <trajectory_file> [counter]<br />
</pre><br />
<br />
The program outputs some debugging information to the standard error and information regarding the interaction energies to the standard output. The contributions arising from each of the terms in the potential (see the appendix of [[Publications|Ref. 2]]) are reported for each pair of nucleotides that have non-zero total interactions.<br />
<br />
This output can be easily parsed to analyse the configurations.<br />
<br />
For each pair of nucleotides that do interact in the configuration, the program prints out a line containing:<br />
* The id of the two particles (starting from 0)<br />
* The total interaction energy<br />
* The hydrogen bonding (base pairing) energy<br />
* The stacking energy<br />
* The cross stacking energy<br />
* The excluded volume energy<br />
* The FENE interaction energy<br />
* A letter indicating a status code. This will be <tt>N</tt> for pairs that interact through bonded interactions (i.e. they are neighbors along a strand) and it will be <tt>H</tt> when a base pair is present. Our definition of base pair is when two nucleotides have a hydrogen bonding energy less than 0.1 in simulation units (see [[Publications|Ref. 2]]).<br />
<br />
===Geometry of the Model===<br />
In the configuration/trajectory files only the positions and orientations of the nucleotides are stored. If one wants to recover the positions of the individual interaction sites in the model, some maths need to be done.<br />
<br />
The position of the base, stacking and backbone sites can be recovered as follows:<br />
<br />
base site: (center) + 0.40 * (axis vector)<br />
<br />
stacking site: (center) + 0.34 * (axis vector)<br />
<br />
backbone site: (center) - 0.40 * (axis_vector)<br />
<br />
The picture in the [[Model_introduction|introduction]] might help understanding where the sites are.<br />
<br />
==External Forces==<br />
The code implements several types of external forces that can be imposed on the system that can be used either to simulate tension exerted on DNA or simply to accelerate the formation of secondary or tertiary structure. External forces can be tricky to treat, especially in a dynamics simulation, since they are an external source of work. Care should be taken in adjusting the time step, thermostat parameters and such.<br />
<br />
To enable external forces, one needs to specify <tt>external_forces = 1</tt> in the input file and also supply an external force file to read from with the key <tt>external_forces_file = <file></tt>.<br />
<br />
The syntax of the external forces file is quite simple. Examples of such files can be found in the [[Hairpin_formation|hairpin formation]] and [[Pseudoknot|Pseudoknot formation]] examples. Each force is specified within a block contained in curly brackets. Empty lines and lines beginning with an hash symbol (<tt>#</tt>) are ignored. Different forces require different keys to be present. If the file has the wrong syntax, oxDNA should spit out a sensible error message while parsing the file.<br />
<br />
The different types of forces implemented at the moment are:<br />
* harmonic trap<br />
* string <br />
* repulsion plane<br />
* mutual trap<br />
<br />
All forces act on the centre of the particle.<br />
<br />
Forces of different kinds can be combined in the same simulation. There is a maximum number of 10 external forces per particle for memory reasons. This can be manually overridden recompiling the code with a different value of the macro <tt>MAX_EXT_FORCES</tt> (currently 10) in <tt>defs.h</tt>.<br />
<br />
===String===<br />
A string is implemented as a force that does not depend on the particle position. Its value can be constant or can change linearly with time. It is useful as it does not fluctuate with time.<br />
<br />
A force of this kind is specified with <tt>type = string</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''F0''' (float) the value of the force at time = 0 in simulation units (please note that the value of the time may or may not be reset when starting a simulation, depending on the input file)<br />
* '''rate''' (float) growing rate of the force (simulation units/time steps). Typical values are very small (< 10^(-5))<br />
* '''dir''' (3 floats separated by commas) direction of the force (automatically normalised by the code)<br />
<br />
The following bit of code will create an external force on the first nucleotide in the system starting at 1 simulation units (48.6 pN) and growing linearly with time at the rate of 48.6pN every million time steps. The force will pull the nucleotide along the <tt>z</tt> direction.<br />
<br />
<pre><br />
{<br />
type = string<br />
particle = 0<br />
F0 = 1.<br />
rate = 1e-6<br />
dir = 0., 0., 1.<br />
} <br />
</pre><br />
<br />
===Harmonic trap===<br />
This type of force implements an harmonic trap, of arbitrary stiffness, that can move linearly with time. It can be useful to fix the position of the nucleotides to simulate attachment to something or to implement (quasi) constant extension simulations.<br />
<br />
A force of this kind is specified with <tt>type = trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) rest position of the trap<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) speed of the trap (length simulation units/time steps)<br />
* '''dir''' (3 floats separated by commas) direction of movement of the trap<br />
<br />
Here is an example input for a harmonic trap acting on the third nucleotide constraining it to stay close to the origin. In this example the trap does not move (<tt>rate=0</tt>), but one could have it move at a constant speed along the direction specified by <tt>dir</tt>, in this case the <tt>x</tt> direction.<br />
<br />
<pre><br />
{<br />
type = trap<br />
particle = 2<br />
pos0 = 0., 0., 0.<br />
stiff = 1.0<br />
rate = 0.<br />
dir = 1.,0.,0.<br />
}<br />
</pre><br />
<br />
Please note that the trap does not comply with periodic boundary conditions. This is most likely what you want.<br />
<br />
===Repulsion plane===<br />
This kind of external force implements a repulsion plane that constrains a particle (or the whole system) to stay on one side of it. It is implemented as a harmonic repulsion, but the stiffness can be made arbitrarily high to mimic a hard repulsion.<br />
<br />
A force of this kind is specified with <tt>type = repulsion_plane</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force. If set to the special value -1, the force will be exerted on all particles.<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * D, where D is distance from the plane. The force is exerted only if the nucleotide is below the plane)<br />
* '''dir''' (3 floats separated by commas) a direction normal to the plane<br />
* '''position''' (1 float number) specifies the position of the plane<br />
<br />
If direction is <tt> direction = u,v,w </tt> , then the plane contains all the points (x,y,z) that satisfy the equation: u*x + v*y + w*z + position = 0.<br />
Only nucleotides with coordinates (x,y,z) that satisfy u*x + v*y + w*z + position < 0 will feel the force.<br />
The force exerted on a nucleotide is equal to stiff * D, where D is the distance of the nucleotide from the plane, where <math> D = | ux + vy + wz + \mbox{position}| / \sqrt{v^2 + u^2 + z^2 }.</math><br />
For nucleotides for which u*x + v*y + w*z + position >= 0, no force will be exerted.<br />
<br />
Here is an example. This plane acts on the whole system and will not exert any force on nucleotides with a positive <tt>x</tt> coordinate. A force proportional to 48.6 pN * (<tt>x</tt> coordinate) will be exerted on all particles . <br />
<br />
<pre><br />
{<br />
type = repulsion_plane<br />
#whole system<br />
particle = -1<br />
stiff = 1. #48.6 pN in simulation units<br />
dir = 1, 0, 0<br />
position = 0<br />
}<br />
</pre><br />
<br />
If in the above example you would specify position = 3, then the force would be exerted on all nucleotides with coordinate x > -3.<br />
<br />
===Mutual trap===<br />
This force is useful to form initial configurations. It is a harmonic force that at every moment pulls a particle towards a reference particle. It is possible to specify the separation at which the force will be 0.<br />
<br />
A force of this kind is specified with <tt>type = mutual_trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''ref_particle''' (int) particle to pull towards. Please note that this particle will not feel any force (the name mutual trap is thus misleading).<br />
* '''stiff''' (float) stiffness of the trap<br />
* '''r0''' (float) equilibrium distance of the trap.<br />
<br />
Here is an example, extracted from the [[Pseudoknot|pseudoknot formation example]]. This will pull particle 14 towards particle 39, favouring an equilibrium distance of 1.4 (which corresponds roughly to the minimum of the hydrogen bonding potential, not a coincidence). The same force with opposite sign is exerted on particle 39 through a separate force. It is not necessary to have both particles feel the force, but it is usually works much better.<br />
<br />
<pre><br />
{<br />
type = mutual_trap<br />
particle = 14<br />
ref_particle = 39<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
<br />
{<br />
type = mutual_trap<br />
particle = 39<br />
ref_particle = 14<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
</pre><br />
<br />
==Visualisation of structures==<br />
oxDNA produces a trajectory file where all the relevant information is<br />
stored. A converter is provided (<tt>traj2vis.py</tt>) in the<br />
<tt>UTILS</tt> directory that is able to produce files in the <tt>xyz</tt><br />
and <tt>pdb</tt> formats. The same program can be used on a configuration<br />
file and it will produce a snapshot.<br />
<br />
Since the model is coarse-grained, we have to "trick" the visualisers into<br />
thinking that the interaction sites in the model are actually atoms.<br />
Advanced nucleic acids representations such as ribbons will not work on the<br />
outputs.<br />
<br />
All the images in the [[Screenshots]] page were produced with the pdb representation using UCSF chimera (see later on).<br />
<br />
===xyz format===<br />
<br />
just run <br />
<br />
<pre>$oxDNA/UTILS/traj2vis.py xyz <trajectory> <topology> </pre><br />
<br />
(where <tt>$oxDNA</tt> is the oxDNA source directory) to get the xyz representation in a file called the same as the trajectory<br />
file with <tt>.xyz</tt> appended. Please note that boundary conditions are<br />
implemented strand-wise, so strands that are bound might appear at two<br />
different sizes of the box. Also, the center of mass of the system (where<br />
each strand is weighted the same regardless of the length) is set to 0 at<br />
each frame. Carbons represent the backbone sites and oxygens the base sites.<br />
<br />
The resulting file can be read with a variety of programs. Here we will<br />
explain how to visualise it sensibly in [http://www.ks.uiuc.edu/Research/vmd/ VMD].<br />
<br />
* Run VMD and load the xyz file.<br />
* In the graphics menu, go to Representations.<br />
* In the Selected Atoms line, input <tt>name C</tt>. Also select Drawing method CPK, sphere scale 0.8 and Bond Radius 0.<br />
* In the Selected Atoms line, input <tt>name O</tt>. Also select Drawing method CPK, sphere scale 0.6 and Bond Radius 0.<br />
<br />
This should produce a ball representation of our model DNA. Bonds<br />
automatically produced by VMD are NOT meaningful in our context.<br />
<br />
===pdb format===<br />
Run <br />
<br />
<pre>$oxDNA/UTILS/traj2chimera.py <trajectory> <topology> </pre><br />
<br />
to produce a trajectory/configuration in the pdb format. A further file<br />
called <tt>chimera.com</tt> will be produced (more on this later). All<br />
comments above about periodic boundaries and centre of mass apply here as<br />
well.<br />
<br />
The pdb file can be visualised in VMD just like the xyz format, but a nicer<br />
output can be produced with [http://www.cgl.ucsf.edu/chimera/ UCSF Chimera] (although only for snapshots at<br />
the moment) as follows:<br />
<br />
Run chimera and load the pdb file. An ugly output will be displayed.<br />
<br />
Bring up the command line under the <tt>Tools → General Controls</tt> menu.<br />
Input <tt>read chimera.com</tt> in the command line and press enter. You<br />
should get a nicer visualisation with different bases in different colors,<br />
all the covalent bonds in the right place, etc.<br />
<br />
On large configurations, the production of ellipsoids will be extremely<br />
slow. You can remove it by removing the line<br />
<br />
<code>aniso scale 0.75 smoothing 4</code><br />
<br />
from the commands file. Loading the resulting file should be much faster.<br />
<br />
UCSF chimera can in turn export the scene in a variety of formats.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Documentation&diff=795Documentation2014-03-19T11:31:07Z<p>Rovigattil: /* Input file */</p>
<hr />
<div>==Compile options==<br />
<br />
Compiling oxDNA requires that you have a working <tt>cmake</tt> software and C++ compiler on your machine. The instructions are provided in the [[Download and Installation]] section.<br />
<br />
==Usage==<br />
<br />
<pre>oxDNA input_file</pre><br />
<br />
The input file contains all the relevant information for the program to run, such as what initial configuration to use, the topology of the system, how often to print the energies to a file, etc. Please make sure you read the [[Thermostat|thermostat]] page if you use molecular dynamics.<br />
<br />
==Input file==<br />
<br />
As always in UNIX environments, everything is case sensitive.<br />
<br />
*Options are in the form key = value<br />
*There can be arbitrary spaces before and after both key and value<br />
*Line with a leading # will be treated as comments<br />
*The | (pipe) sign is the separator between the different values that can be used to specify a value for the key.<br />
*Keys between [ and ] are optional, the value after the equal sign is the default value<br />
<br />
Here we provide a list of the most commonly used input options. The complete and most up-to-date list of possible options can be found [[Input_options|here]] or in the <tt>README</tt> file in the main directory of the simulation code.<br />
<br />
The input options of the previous oxDNA version can be found [[Input_options_of_the_previous_version|here]]<br />
<br />
===Generic options===<br />
The options listed here define the generic behavior of the entire program.<br />
;[interaction_type = DNA]: DNA|RNA|patchy|LJ<br />
: (selects the model for the simulation. DNA ([[DNA_model_introduction|oxDNA model]]) is the default option. RNA ([[RNA_model_introduction|oxRNA model]]), LJ (Lennard-Jones) and patchy particles are also implemented<br />
;[sim_type=MD]: MD|MC|VMMC<br />
:MD = Molecular Dynamics, MC = Monte Carlo, VMMC = Virtual Move Monte Carlo<br />
;backend: CPU | CUDA <br />
: (only sim_type=MD is supported if you choose CUDA backend)<br />
;backend_precision: float|double|mixed<br />
: (mixed option is available only for CUDA backend. It is recommended choice for optimal performance on CUDA machines, double is recommended for CPU simulations)<br />
;[debug=0]: 0|1<br />
: 1 if you want verbose logs, 0 otherwise.<br />
<br />
===Simulation options===<br />
The options listed here specify the behaviour of the simulation.<br />
<br />
;steps: number of steps to be performed.<br />
<br />
;[restart_step_counter=0]: 0|1<br />
:0 means that the step counter will start from the value read in the configuration file; if 1, the step counter will be reset to 0. The total duration of the simulation is unchanged.<br />
<br />
;[seed=time(NULL)]: seed for the random number generator. On Unix systems, it will use by default a number from /dev/urandom + time(NULL)<br />
<br />
;T: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
:Examples:<br />
{|<br />
|-<br />
! Value<br />
! Simulation Units<br />
|-<br />
| 0.1<br />
| 0.1<br />
|-<br />
| 300 K<br />
| 0.1<br />
|-<br />
| 300k<br />
| 0.1<br />
|-<br />
| 26.85c<br />
| 0.1<br />
|-<br />
| 26.85 C <br />
| 0.1<br />
|-<br />
|}<br />
<br />
;verlet_skin: if a particle moves more than verlet_skin then the lists will be updated. Its name is somewhat misleading: the actual verlet skin is 2*verlet_skin.<br />
<br />
;[use_average_seq=1]: 0|1<br />
: specifies whether to use the default hard-coded average parameters for base-pairing and stacking interaction strengths or not. If sequence dependence is to be used, set this to 0 and specify seq_dep_file.<br />
<br />
;[seq_dep_file]: specifies the file from which the sequence dependent parameters should be read. Mandatory if use_average_seq=no, ignored otherwise. A sample file is provided (sequence_dependent_parameters.txt).<br />
<br />
;[external_forces=0]: 0|1<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file).<br />
<br />
;[external_forces_file]: specifies the file containing all the external forces' configurations. Currently there are six supported force types (see EXAMPLES/TRAPS for some examples):<br />
:*string<br />
:*twist<br />
:*trap<br />
:*repulsion_plane<br />
:*repulsion_plane_moving<br />
:*mutual_trap<br />
<br />
====Molecular dynamics simulations options====<br />
<br />
;dt: time step of the integration.<br />
<br />
;thermostat: no|refresh|john <br />
:no means no thermostat will be used. refresh will refresh all the particle's velocities from a maxwellian every newtonian_steps steps. john is an Anderson-like thermostat (see pt). Make sure you read [[Thermostat|thermostat]].<br />
<br />
;newtonian_steps: required if thermostat != no<br />
:number of steps after which a procedure of thermalization will be performed.<br />
<br />
;pt: used if thermostat == john. It's the probability that a particle's velocity will be refreshed during a thermalization procedure.<br />
<br />
;diff_coeff: required if pt is not specified<br />
:used internally to automatically compute the pt that would be needed if we wanted such a self diffusion coefficient. Not used if pt is set.<br />
<br />
====Monte Carlo simulations options====<br />
<br />
;[check_energy_every=10]: this number times print_energy_every gives the number of steps after which the energy will be computed from scratch and checked against the actual value computed adding energy differences.<br />
<br />
;[check_energy_threshold=1e-4]: if abs((old_energy - new_energy)/old_energy) > check_energy_threshold then the program will die and warn the user.<br />
<br />
;ensemble: NVT<br />
:ensemble of the simulation. More ensembles could be added in future versions.<br />
<br />
;delta_translation: maximum displacement (per dimension) for translational moves in simulation units.<br />
<br />
;delta_translation: maximum displacement for rotational moves in simulation units.<br />
<br />
===Input/output===<br />
The options listed here are used to manage the I/O (read and write configurations, energies and so on)<br />
<br />
;conf_file: initial configuration file. <br />
<br />
;topology: file containing the system's topology.<br />
<br />
;trajectory_file: the main output of the program. All the configurations will be appended to this file as they are printed.<br />
<br />
;[confs_to_skip=0]: valid only if conf_file is a trajectory. Skip the first confs_to_skip configurations and then load in memory the (confs_to_skip+1)th.<br />
<br />
;[lastconf_file=last_conf.dat]: this is the file where the last configuration is saved (when the program finishes or is killed). Set to last_conf.dat by default<br />
<br />
;[refresh_vel=0]: 0|1<br />
:if 1 the initial velocities will be refreshed from a maxwellian.<br />
<br />
;energy_file: energy output file.<br />
<br />
;[print_energy_every=1000]: this will make the program print the energies every print_energy_every steps.<br />
<br />
;[no_stdout_energy=0]: 0|1<br />
:if 1 the energy will be printed just to the energy_file.<br />
<br />
;[time_scale=linear]: linear|log_lin<br />
:using linear configurations will be saved every print_conf_interval.<br />
:using log_lin configurations will be saved logarithmically for print_conf_ppc times. After that the logarithmic sequence will restart.<br />
<br />
;print_conf_interval: linear interval if time_scale == linear. First step of the logarithmic scale if time_scale == log_lin.<br />
<br />
;print_conf_ppc: used if time_scale == log_lin<br />
:points per logarithmic cycle.<br />
<br />
;[print_reduced_conf_every=0]: every print_reduced_conf_every steps the program will print out the reduced configurations (i.e. confs containing only the centers of mass of strands).<br />
<br />
;reduced_conf_output_dir: used if print_reduced_conf_every > 0<br />
:output directory for reduced_conf files.<br />
<br />
;[log_file=stderr]: file where generic and debug informations will be logged. If not specified then stderr will be used.<br />
<br />
;[print_timings=0]: 0|1<br />
:if 1 the MD step timing have be printed to a file.<br />
<br />
;timings_filename: used if print_timings == 1<br />
:output file where the MD step timing will be appended to.<br />
<br />
==Output files==<br />
*The log file contains all the relevant information about the simulation (specified options, activated external forces, warnings about misconfigurations, critical errors, etc.). If the log file is omitted, all this information will be displayed on the standard output.<br />
<br />
*The energy file layout for MD simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| kinetic energy<br />
| total energy<br />
| hydrogen bonding energy<br />
|}<br />
<br />
:while for MC simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| hydrogen bonding energy<br />
| acceptance ratio for translational moves<br />
| acceptance ratio for rotational moves<br />
|}<br />
<br />
:N.B. potential, kinetic and total energies are divided by the number of particles whereas the hydrogen bonding energy is not.<br />
<br />
*Configurations are saved in the trajectory file.<br />
<br />
==Configuration and topology files==<br />
The current state of a system, as specified by oxDNA, is described by two files: a configuration file and a topology file. The configuration file contains all the general information (timestep, energy and box size) and the orientations and positions of each nucleotide. The topology file, on the other hand, keeps track of the backbone-backbone bonds between nucleotides in the same strand. Working configuration and topology files can be found in the <tt>[[Examples|EXAMPLES]]</tt> directory.<br />
<br />
===Configuration file===<br />
The first three rows of a configuration file contain the timestep <tt>T</tt> at which the configuration has been printed, the length of the box sides <tt>Lx</tt>, <tt>Ly</tt> and <tt>Lz</tt> and the total, potential and kinetic energies, <tt>Etot</tt>, <tt>U</tt> and <tt>K</tt>, respectively:<br />
<br />
<pre><br />
t = T<br />
b = Lz Ly Lz<br />
E = Etot U K<br />
</pre><br />
<br />
after this header, each row contains position of the centre of mass, orientation, velocity and angular velocity of a single nucleotide in the following order:<br />
<br />
<math>\overbrace{r_x r_y r_z}^{\rm Position} \overbrace{b_x b_y b_z}^{\rm Backbone-base versor} \overbrace{n_x n_y n_z}^{\rm Normal versor} \overbrace{v_x v_y v_z}^{\rm Velocity} \overbrace{L_x L_y L_z}^{\rm Angular velocity}</math><br />
<br />
===Topology file===<br />
The topology file stores the intra-strand, fixed bonding topology (i.e. which nucleotides share backbone links). The first row contains the total number of nucleotides <tt>N</tt> and the number of strands <tt>Ns</tt>:<br />
<br />
<pre><br />
N Ns<br />
</pre><br />
<br />
After this header, the <tt>i</tt>-th row specifies strand, base and 3' and 5' neighbors of the <tt>i</tt>-th nucleotide in this way:<br />
<br />
<pre><br />
S B 3' 5'<br />
</pre><br />
<br />
where S is the index of the strand (starting from 1) which the nucleotide belongs to, B is the base and 3' and 5' specify the index of the nucleotides with which the <tt>i</tt>-th nucleotide is bonded in the 3' and 5' direction, respectively. A <tt>-1</tt> signals that the nucleotide terminates the strand in either 3' or 5' direction. The topology file of a strand of sequence <tt>GCGTTG</tt> would be:<br />
<br />
<pre><br />
6 1<br />
1 G -1 1<br />
1 C 0 2<br />
1 G 1 3<br />
1 T 2 4<br />
1 T 3 5<br />
1 G 4 -1<br />
</pre><br />
<br />
Specifying the topology in this way can simplify the process of simulating, for example, circular DNA.<br />
<br />
===Generation of initial configurations===<br />
In order to generate initial configuration and topology files, we provide the <tt>${oxDNA}/UTILS/generate-sa.py</tt> script. The usage of the script is<br />
<br />
<pre>generate-sa.py <box side> <file with sequence></pre> <br />
<br />
where <tt><box side></tt> specifies the length of the box side in simulation units and <tt><file with sequence></tt> contains the sequence of the strands to be generated, one row per strand. If double strands are needed, each sequence must be preceded by <tt>DOUBLE</tt>. For example, a file containing<br />
<br />
<pre><br />
DOUBLE AGGGCT<br />
CCTGTA<br />
</pre><br />
<br />
would generate a double strand with a sequence <tt>AGGGCT</tt> and a single strand with a sequence <tt>CCTGTA</tt>. The sequences are given in 3'-5' order.<br />
<br />
Positions and orientations of the strands are all chosen at random in such a way that the resulting initial configuration does not contain significant excluded volume interactions between nucleotides belonging to different strands. Generated single- and double-strands have helical conformations (i.e. they are in the minimum of the intra-strand interaction energy).<br />
<br />
The output configuration and topology are stored in <tt>generated.dat</tt> and <tt>generated.top</tt>, respectively. <br />
Since this script will initialize nucleotides' velocities and angular velocities to 0, when performing a molecular (or Brownian) dynamics simulation remember to put <tt>refresh_vel = 1</tt> in the [[Documentation#Input_file|input]] file.<br />
<br />
==Analysis of configurations==<br />
The configurations produced by oxDNA can be analysed with the <tt>output_bonds</tt> program in <tt>${oxDNA}/UTILS/process_data/</tt> directory. This program takes as command line arguments the input file (to recover the temperature and topology file), a configuration/trajectory file and an optional number. Since <tt>output_bonds</tt> reads analyses a single configuration, the optional number selects the configuration which it needs to analyse in the trajectory. Analysing a whole trajectory can be done by looping over a counter.<br />
<br />
Please note that <tt>output_bonds</tt> is not compiled automatically. If you never compiled it, do so as described in the [[Download_and_Installation#Installation|installation instructions]].<br />
<br />
<tt>output_bonds</tt> can be used as follows:<br />
<pre><br />
${oxDNA}/UTILS/process_data/output_bonds <input_file> <trajectory_file> [counter]<br />
</pre><br />
<br />
The program outputs some debugging information to the standard error and information regarding the interaction energies to the standard output. The contributions arising from each of the terms in the potential (see the appendix of [[Publications|Ref. 2]]) are reported for each pair of nucleotides that have non-zero total interactions.<br />
<br />
This output can be easily parsed to analyse the configurations.<br />
<br />
For each pair of nucleotides that do interact in the configuration, the program prints out a line containing:<br />
* The id of the two particles (starting from 0)<br />
* The total interaction energy<br />
* The hydrogen bonding (base pairing) energy<br />
* The stacking energy<br />
* The cross stacking energy<br />
* The excluded volume energy<br />
* The FENE interaction energy<br />
* A letter indicating a status code. This will be <tt>N</tt> for pairs that interact through bonded interactions (i.e. they are neighbors along a strand) and it will be <tt>H</tt> when a base pair is present. Our definition of base pair is when two nucleotides have a hydrogen bonding energy less than 0.1 in simulation units (see [[Publications|Ref. 2]]).<br />
<br />
===Geometry of the Model===<br />
In the configuration/trajectory files only the positions and orientations of the nucleotides are stored. If one wants to recover the positions of the individual interaction sites in the model, some maths need to be done.<br />
<br />
The position of the base, stacking and backbone sites can be recovered as follows:<br />
<br />
base site: (center) + 0.40 * (axis vector)<br />
<br />
stacking site: (center) + 0.34 * (axis vector)<br />
<br />
backbone site: (center) - 0.40 * (axis_vector)<br />
<br />
The picture in the [[Model_introduction|introduction]] might help understanding where the sites are.<br />
<br />
==External Forces==<br />
The code implements several types of external forces that can be imposed on the system that can be used either to simulate tension exerted on DNA or simply to accelerate the formation of secondary or tertiary structure. External forces can be tricky to treat, especially in a dynamics simulation, since they are an external source of work. Care should be taken in adjusting the time step, thermostat parameters and such.<br />
<br />
To enable external forces, one needs to specify <tt>external_forces = 1</tt> in the input file and also supply an external force file to read from with the key <tt>external_forces_file = <file></tt>.<br />
<br />
The syntax of the external forces file is quite simple. Examples of such files can be found in the [[Hairpin_formation|hairpin formation]] and [[Pseudoknot|Pseudoknot formation]] examples. Each force is specified within a block contained in curly brackets. Empty lines and lines beginning with an hash symbol (<tt>#</tt>) are ignored. Different forces require different keys to be present. If the file has the wrong syntax, oxDNA should spit out a sensible error message while parsing the file.<br />
<br />
The different types of forces implemented at the moment are:<br />
* harmonic trap<br />
* string <br />
* repulsion plane<br />
* mutual trap<br />
<br />
All forces act on the centre of the particle.<br />
<br />
Forces of different kinds can be combined in the same simulation. There is a maximum number of 10 external forces per particle for memory reasons. This can be manually overridden recompiling the code with a different value of the macro <tt>MAX_EXT_FORCES</tt> (currently 10) in <tt>defs.h</tt>.<br />
<br />
===String===<br />
A string is implemented as a force that does not depend on the particle position. Its value can be constant or can change linearly with time. It is useful as it does not fluctuate with time.<br />
<br />
A force of this kind is specified with <tt>type = string</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''F0''' (float) the value of the force at time = 0 in simulation units (please note that the value of the time may or may not be reset when starting a simulation, depending on the input file)<br />
* '''rate''' (float) growing rate of the force (simulation units/time steps). Typical values are very small (< 10^(-5))<br />
* '''dir''' (3 floats separated by commas) direction of the force (automatically normalised by the code)<br />
<br />
The following bit of code will create an external force on the first nucleotide in the system starting at 1 simulation units (48.6 pN) and growing linearly with time at the rate of 48.6pN every million time steps. The force will pull the nucleotide along the <tt>z</tt> direction.<br />
<br />
<pre><br />
{<br />
type = string<br />
particle = 0<br />
F0 = 1.<br />
rate = 1e-6<br />
dir = 0., 0., 1.<br />
} <br />
</pre><br />
<br />
===Harmonic trap===<br />
This type of force implements an harmonic trap, of arbitrary stiffness, that can move linearly with time. It can be useful to fix the position of the nucleotides to simulate attachment to something or to implement (quasi) constant extension simulations.<br />
<br />
A force of this kind is specified with <tt>type = trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) rest position of the trap<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) speed of the trap (length simulation units/time steps)<br />
* '''dir''' (3 floats separated by commas) direction of movement of the trap<br />
<br />
Here is an example input for a harmonic trap acting on the third nucleotide constraining it to stay close to the origin. In this example the trap does not move (<tt>rate=0</tt>), but one could have it move at a constant speed along the direction specified by <tt>dir</tt>, in this case the <tt>x</tt> direction.<br />
<br />
<pre><br />
{<br />
type = trap<br />
particle = 2<br />
pos0 = 0., 0., 0.<br />
stiff = 1.0<br />
rate = 0.<br />
dir = 1.,0.,0.<br />
}<br />
</pre><br />
<br />
Please note that the trap does not comply with periodic boundary conditions. This is most likely what you want.<br />
<br />
===Repulsion plane===<br />
This kind of external force implements a repulsion plane that constrains a particle (or the whole system) to stay on one side of it. It is implemented as a harmonic repulsion, but the stiffness can be made arbitrarily high to mimic a hard repulsion.<br />
<br />
A force of this kind is specified with <tt>type = repulsion_plane</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force. If set to the special value -1, the force will be exerted on all particles.<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * D, where D is distance from the plane. The force is exerted only if the nucleotide is below the plane)<br />
* '''dir''' (3 floats separated by commas) a direction normal to the plane<br />
* '''position''' (1 float number) specifies the position of the plane<br />
<br />
If direction is <tt> direction = u,v,w </tt> , then the plane contains all the points (x,y,z) that satisfy the equation: u*x + v*y + w*z + position = 0.<br />
Only nucleotides with coordinates (x,y,z) that satisfy u*x + v*y + w*z + position < 0 will feel the force.<br />
The force exerted on a nucleotide is equal to stiff * D, where D is the distance of the nucleotide from the plane, where <math> D = | ux + vy + wz + \mbox{position}| / \sqrt{v^2 + u^2 + z^2 }.</math><br />
For nucleotides for which u*x + v*y + w*z + position >= 0, no force will be exerted.<br />
<br />
Here is an example. This plane acts on the whole system and will not exert any force on nucleotides with a positive <tt>x</tt> coordinate. A force proportional to 48.6 pN * (<tt>x</tt> coordinate) will be exerted on all particles . <br />
<br />
<pre><br />
{<br />
type = repulsion_plane<br />
#whole system<br />
particle = -1<br />
stiff = 1. #48.6 pN in simulation units<br />
dir = 1, 0, 0<br />
position = 0<br />
}<br />
</pre><br />
<br />
If in the above example you would specify position = 3, then the force would be exerted on all nucleotides with coordinate x > -3.<br />
<br />
===Mutual trap===<br />
This force is useful to form initial configurations. It is a harmonic force that at every moment pulls a particle towards a reference particle. It is possible to specify the separation at which the force will be 0.<br />
<br />
A force of this kind is specified with <tt>type = mutual_trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''ref_particle''' (int) particle to pull towards. Please note that this particle will not feel any force (the name mutual trap is thus misleading).<br />
* '''stiff''' (float) stiffness of the trap<br />
* '''r0''' (float) equilibrium distance of the trap.<br />
<br />
Here is an example, extracted from the [[Pseudoknot|pseudoknot formation example]]. This will pull particle 14 towards particle 39, favouring an equilibrium distance of 1.4 (which corresponds roughly to the minimum of the hydrogen bonding potential, not a coincidence). The same force with opposite sign is exerted on particle 39 through a separate force. It is not necessary to have both particles feel the force, but it is usually works much better.<br />
<br />
<pre><br />
{<br />
type = mutual_trap<br />
particle = 14<br />
ref_particle = 39<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
<br />
{<br />
type = mutual_trap<br />
particle = 39<br />
ref_particle = 14<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
</pre><br />
<br />
==Visualisation of structures==<br />
oxDNA produces a trajectory file where all the relevant information is<br />
stored. A converter is provided (<tt>traj2vis.py</tt>) in the<br />
<tt>UTILS</tt> directory that is able to produce files in the <tt>xyz</tt><br />
and <tt>pdb</tt> formats. The same program can be used on a configuration<br />
file and it will produce a snapshot.<br />
<br />
Since the model is coarse-grained, we have to "trick" the visualisers into<br />
thinking that the interaction sites in the model are actually atoms.<br />
Advanced nucleic acids representations such as ribbons will not work on the<br />
outputs.<br />
<br />
All the images in the [[Screenshots]] page were produced with the pdb representation using UCSF chimera (see later on).<br />
<br />
===xyz format===<br />
<br />
just run <br />
<br />
<pre>$oxDNA/UTILS/traj2vis.py xyz <trajectory> <topology> </pre><br />
<br />
(where <tt>$oxDNA</tt> is the oxDNA source directory) to get the xyz representation in a file called the same as the trajectory<br />
file with <tt>.xyz</tt> appended. Please note that boundary conditions are<br />
implemented strand-wise, so strands that are bound might appear at two<br />
different sizes of the box. Also, the center of mass of the system (where<br />
each strand is weighted the same regardless of the length) is set to 0 at<br />
each frame. Carbons represent the backbone sites and oxygens the base sites.<br />
<br />
The resulting file can be read with a variety of programs. Here we will<br />
explain how to visualise it sensibly in [http://www.ks.uiuc.edu/Research/vmd/ VMD].<br />
<br />
* Run VMD and load the xyz file.<br />
* In the graphics menu, go to Representations.<br />
* In the Selected Atoms line, input <tt>name C</tt>. Also select Drawing method CPK, sphere scale 0.8 and Bond Radius 0.<br />
* In the Selected Atoms line, input <tt>name O</tt>. Also select Drawing method CPK, sphere scale 0.6 and Bond Radius 0.<br />
<br />
This should produce a ball representation of our model DNA. Bonds<br />
automatically produced by VMD are NOT meaningful in our context.<br />
<br />
===pdb format===<br />
Run <br />
<br />
<pre>$oxDNA/UTILS/traj2chimera.py <trajectory> <topology> </pre><br />
<br />
to produce a trajectory/configuration in the pdb format. A further file<br />
called <tt>chimera.com</tt> will be produced (more on this later). All<br />
comments above about periodic boundaries and centre of mass apply here as<br />
well.<br />
<br />
The pdb file can be visualised in VMD just like the xyz format, but a nicer<br />
output can be produced with [http://www.cgl.ucsf.edu/chimera/ UCSF Chimera] (although only for snapshots at<br />
the moment) as follows:<br />
<br />
Run chimera and load the pdb file. An ugly output will be displayed.<br />
<br />
Bring up the command line under the <tt>Tools → General Controls</tt> menu.<br />
Input <tt>read chimera.com</tt> in the command line and press enter. You<br />
should get a nicer visualisation with different bases in different colors,<br />
all the covalent bonds in the right place, etc.<br />
<br />
On large configurations, the production of ellipsoids will be extremely<br />
slow. You can remove it by removing the line<br />
<br />
<code>aniso scale 0.75 smoothing 4</code><br />
<br />
from the commands file. Loading the resulting file should be much faster.<br />
<br />
UCSF chimera can in turn export the scene in a variety of formats.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Documentation&diff=794Documentation2014-03-19T11:28:23Z<p>Rovigattil: /* Input file */</p>
<hr />
<div>==Compile options==<br />
<br />
Compiling oxDNA requires that you have a working <tt>cmake</tt> software and C++ compiler on your machine. The instructions are provided in the [[Download and Installation]] section.<br />
<br />
==Usage==<br />
<br />
<pre>oxDNA input_file</pre><br />
<br />
The input file contains all the relevant information for the program to run, such as what initial configuration to use, the topology of the system, how often to print the energies to a file, etc. Please make sure you read the [[Thermostat|thermostat]] page if you use molecular dynamics.<br />
<br />
==Input file==<br />
<br />
As always in UNIX environments, everything is case sensitive.<br />
The options are in the form key = value. There can be arbitrary spaces before and after both key and value. Line with a leading # will be treated as comments.<br />
In this part | (pipe) is the separator between the different values that can be used to specify a value for the key.<br />
Keys between [ and ] are optional, the value after the equal sign is the default value. Here we provide a list of the most commonly used input options. The complete and most up-to-date list of possible options is provided in [[Input_options|here]] or in the <tt>README</tt> file in the main directory of the simulation code. The input options of the previous oxDNA version can be found [[Input_options_of_the_previous_version|here]]<br />
<br />
===Generic options===<br />
The options listed here define the generic behavior of the entire program.<br />
;[interaction_type = DNA]: DNA|RNA|patchy|LJ<br />
: (selects the model for the simulation. DNA ([[DNA_model_introduction|oxDNA model]]) is the default option. RNA ([[RNA_model_introduction|oxRNA model]]), LJ (Lennard-Jones) and patchy particles are also implemented<br />
;[sim_type=MD]: MD|MC|VMMC<br />
:MD = Molecular Dynamics, MC = Monte Carlo, VMMC = Virtual Move Monte Carlo<br />
;backend: CPU | CUDA <br />
: (only sim_type=MD is supported if you choose CUDA backend)<br />
;backend_precision: float|double|mixed<br />
: (mixed option is available only for CUDA backend. It is recommended choice for optimal performance on CUDA machines, double is recommended for CPU simulations)<br />
;[debug=0]: 0|1<br />
: 1 if you want verbose logs, 0 otherwise.<br />
<br />
===Simulation options===<br />
The options listed here specify the behaviour of the simulation.<br />
<br />
;steps: number of steps to be performed.<br />
<br />
;[restart_step_counter=0]: 0|1<br />
:0 means that the step counter will start from the value read in the configuration file; if 1, the step counter will be reset to 0. The total duration of the simulation is unchanged.<br />
<br />
;[seed=time(NULL)]: seed for the random number generator. On Unix systems, it will use by default a number from /dev/urandom + time(NULL)<br />
<br />
;T: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
:Examples:<br />
{|<br />
|-<br />
! Value<br />
! Simulation Units<br />
|-<br />
| 0.1<br />
| 0.1<br />
|-<br />
| 300 K<br />
| 0.1<br />
|-<br />
| 300k<br />
| 0.1<br />
|-<br />
| 26.85c<br />
| 0.1<br />
|-<br />
| 26.85 C <br />
| 0.1<br />
|-<br />
|}<br />
<br />
;verlet_skin: if a particle moves more than verlet_skin then the lists will be updated. Its name is somewhat misleading: the actual verlet skin is 2*verlet_skin.<br />
<br />
;[use_average_seq=1]: 0|1<br />
: specifies whether to use the default hard-coded average parameters for base-pairing and stacking interaction strengths or not. If sequence dependence is to be used, set this to 0 and specify seq_dep_file.<br />
<br />
;[seq_dep_file]: specifies the file from which the sequence dependent parameters should be read. Mandatory if use_average_seq=no, ignored otherwise. A sample file is provided (sequence_dependent_parameters.txt).<br />
<br />
;[external_forces=0]: 0|1<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file).<br />
<br />
;[external_forces_file]: specifies the file containing all the external forces' configurations. Currently there are six supported force types (see EXAMPLES/TRAPS for some examples):<br />
:*string<br />
:*twist<br />
:*trap<br />
:*repulsion_plane<br />
:*repulsion_plane_moving<br />
:*mutual_trap<br />
<br />
====Molecular dynamics simulations options====<br />
<br />
;dt: time step of the integration.<br />
<br />
;thermostat: no|refresh|john <br />
:no means no thermostat will be used. refresh will refresh all the particle's velocities from a maxwellian every newtonian_steps steps. john is an Anderson-like thermostat (see pt). Make sure you read [[Thermostat|thermostat]].<br />
<br />
;newtonian_steps: required if thermostat != no<br />
:number of steps after which a procedure of thermalization will be performed.<br />
<br />
;pt: used if thermostat == john. It's the probability that a particle's velocity will be refreshed during a thermalization procedure.<br />
<br />
;diff_coeff: required if pt is not specified<br />
:used internally to automatically compute the pt that would be needed if we wanted such a self diffusion coefficient. Not used if pt is set.<br />
<br />
====Monte Carlo simulations options====<br />
<br />
;[check_energy_every=10]: this number times print_energy_every gives the number of steps after which the energy will be computed from scratch and checked against the actual value computed adding energy differences.<br />
<br />
;[check_energy_threshold=1e-4]: if abs((old_energy - new_energy)/old_energy) > check_energy_threshold then the program will die and warn the user.<br />
<br />
;ensemble: NVT<br />
:ensemble of the simulation. More ensembles could be added in future versions.<br />
<br />
;delta_translation: maximum displacement (per dimension) for translational moves in simulation units.<br />
<br />
;delta_translation: maximum displacement for rotational moves in simulation units.<br />
<br />
===Input/output===<br />
The options listed here are used to manage the I/O (read and write configurations, energies and so on)<br />
<br />
;conf_file: initial configuration file. <br />
<br />
;topology: file containing the system's topology.<br />
<br />
;trajectory_file: the main output of the program. All the configurations will be appended to this file as they are printed.<br />
<br />
;[confs_to_skip=0]: valid only if conf_file is a trajectory. Skip the first confs_to_skip configurations and then load in memory the (confs_to_skip+1)th.<br />
<br />
;[lastconf_file=last_conf.dat]: this is the file where the last configuration is saved (when the program finishes or is killed). Set to last_conf.dat by default<br />
<br />
;[refresh_vel=0]: 0|1<br />
:if 1 the initial velocities will be refreshed from a maxwellian.<br />
<br />
;energy_file: energy output file.<br />
<br />
;[print_energy_every=1000]: this will make the program print the energies every print_energy_every steps.<br />
<br />
;[no_stdout_energy=0]: 0|1<br />
:if 1 the energy will be printed just to the energy_file.<br />
<br />
;[time_scale=linear]: linear|log_lin<br />
:using linear configurations will be saved every print_conf_interval.<br />
:using log_lin configurations will be saved logarithmically for print_conf_ppc times. After that the logarithmic sequence will restart.<br />
<br />
;print_conf_interval: linear interval if time_scale == linear. First step of the logarithmic scale if time_scale == log_lin.<br />
<br />
;print_conf_ppc: used if time_scale == log_lin<br />
:points per logarithmic cycle.<br />
<br />
;[print_reduced_conf_every=0]: every print_reduced_conf_every steps the program will print out the reduced configurations (i.e. confs containing only the centers of mass of strands).<br />
<br />
;reduced_conf_output_dir: used if print_reduced_conf_every > 0<br />
:output directory for reduced_conf files.<br />
<br />
;[log_file=stderr]: file where generic and debug informations will be logged. If not specified then stderr will be used.<br />
<br />
;[print_timings=0]: 0|1<br />
:if 1 the MD step timing have be printed to a file.<br />
<br />
;timings_filename: used if print_timings == 1<br />
:output file where the MD step timing will be appended to.<br />
<br />
==Output files==<br />
*The log file contains all the relevant information about the simulation (specified options, activated external forces, warnings about misconfigurations, critical errors, etc.). If the log file is omitted, all this information will be displayed on the standard output.<br />
<br />
*The energy file layout for MD simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| kinetic energy<br />
| total energy<br />
| hydrogen bonding energy<br />
|}<br />
<br />
:while for MC simulations is<br />
<br />
:{|<br />
| time<br />
| potential energy<br />
| hydrogen bonding energy<br />
| acceptance ratio for translational moves<br />
| acceptance ratio for rotational moves<br />
|}<br />
<br />
:N.B. potential, kinetic and total energies are divided by the number of particles whereas the hydrogen bonding energy is not.<br />
<br />
*Configurations are saved in the trajectory file.<br />
<br />
==Configuration and topology files==<br />
The current state of a system, as specified by oxDNA, is described by two files: a configuration file and a topology file. The configuration file contains all the general information (timestep, energy and box size) and the orientations and positions of each nucleotide. The topology file, on the other hand, keeps track of the backbone-backbone bonds between nucleotides in the same strand. Working configuration and topology files can be found in the <tt>[[Examples|EXAMPLES]]</tt> directory.<br />
<br />
===Configuration file===<br />
The first three rows of a configuration file contain the timestep <tt>T</tt> at which the configuration has been printed, the length of the box sides <tt>Lx</tt>, <tt>Ly</tt> and <tt>Lz</tt> and the total, potential and kinetic energies, <tt>Etot</tt>, <tt>U</tt> and <tt>K</tt>, respectively:<br />
<br />
<pre><br />
t = T<br />
b = Lz Ly Lz<br />
E = Etot U K<br />
</pre><br />
<br />
after this header, each row contains position of the centre of mass, orientation, velocity and angular velocity of a single nucleotide in the following order:<br />
<br />
<math>\overbrace{r_x r_y r_z}^{\rm Position} \overbrace{b_x b_y b_z}^{\rm Backbone-base versor} \overbrace{n_x n_y n_z}^{\rm Normal versor} \overbrace{v_x v_y v_z}^{\rm Velocity} \overbrace{L_x L_y L_z}^{\rm Angular velocity}</math><br />
<br />
===Topology file===<br />
The topology file stores the intra-strand, fixed bonding topology (i.e. which nucleotides share backbone links). The first row contains the total number of nucleotides <tt>N</tt> and the number of strands <tt>Ns</tt>:<br />
<br />
<pre><br />
N Ns<br />
</pre><br />
<br />
After this header, the <tt>i</tt>-th row specifies strand, base and 3' and 5' neighbors of the <tt>i</tt>-th nucleotide in this way:<br />
<br />
<pre><br />
S B 3' 5'<br />
</pre><br />
<br />
where S is the index of the strand (starting from 1) which the nucleotide belongs to, B is the base and 3' and 5' specify the index of the nucleotides with which the <tt>i</tt>-th nucleotide is bonded in the 3' and 5' direction, respectively. A <tt>-1</tt> signals that the nucleotide terminates the strand in either 3' or 5' direction. The topology file of a strand of sequence <tt>GCGTTG</tt> would be:<br />
<br />
<pre><br />
6 1<br />
1 G -1 1<br />
1 C 0 2<br />
1 G 1 3<br />
1 T 2 4<br />
1 T 3 5<br />
1 G 4 -1<br />
</pre><br />
<br />
Specifying the topology in this way can simplify the process of simulating, for example, circular DNA.<br />
<br />
===Generation of initial configurations===<br />
In order to generate initial configuration and topology files, we provide the <tt>${oxDNA}/UTILS/generate-sa.py</tt> script. The usage of the script is<br />
<br />
<pre>generate-sa.py <box side> <file with sequence></pre> <br />
<br />
where <tt><box side></tt> specifies the length of the box side in simulation units and <tt><file with sequence></tt> contains the sequence of the strands to be generated, one row per strand. If double strands are needed, each sequence must be preceded by <tt>DOUBLE</tt>. For example, a file containing<br />
<br />
<pre><br />
DOUBLE AGGGCT<br />
CCTGTA<br />
</pre><br />
<br />
would generate a double strand with a sequence <tt>AGGGCT</tt> and a single strand with a sequence <tt>CCTGTA</tt>. The sequences are given in 3'-5' order.<br />
<br />
Positions and orientations of the strands are all chosen at random in such a way that the resulting initial configuration does not contain significant excluded volume interactions between nucleotides belonging to different strands. Generated single- and double-strands have helical conformations (i.e. they are in the minimum of the intra-strand interaction energy).<br />
<br />
The output configuration and topology are stored in <tt>generated.dat</tt> and <tt>generated.top</tt>, respectively. <br />
Since this script will initialize nucleotides' velocities and angular velocities to 0, when performing a molecular (or Brownian) dynamics simulation remember to put <tt>refresh_vel = 1</tt> in the [[Documentation#Input_file|input]] file.<br />
<br />
==Analysis of configurations==<br />
The configurations produced by oxDNA can be analysed with the <tt>output_bonds</tt> program in <tt>${oxDNA}/UTILS/process_data/</tt> directory. This program takes as command line arguments the input file (to recover the temperature and topology file), a configuration/trajectory file and an optional number. Since <tt>output_bonds</tt> reads analyses a single configuration, the optional number selects the configuration which it needs to analyse in the trajectory. Analysing a whole trajectory can be done by looping over a counter.<br />
<br />
Please note that <tt>output_bonds</tt> is not compiled automatically. If you never compiled it, do so as described in the [[Download_and_Installation#Installation|installation instructions]].<br />
<br />
<tt>output_bonds</tt> can be used as follows:<br />
<pre><br />
${oxDNA}/UTILS/process_data/output_bonds <input_file> <trajectory_file> [counter]<br />
</pre><br />
<br />
The program outputs some debugging information to the standard error and information regarding the interaction energies to the standard output. The contributions arising from each of the terms in the potential (see the appendix of [[Publications|Ref. 2]]) are reported for each pair of nucleotides that have non-zero total interactions.<br />
<br />
This output can be easily parsed to analyse the configurations.<br />
<br />
For each pair of nucleotides that do interact in the configuration, the program prints out a line containing:<br />
* The id of the two particles (starting from 0)<br />
* The total interaction energy<br />
* The hydrogen bonding (base pairing) energy<br />
* The stacking energy<br />
* The cross stacking energy<br />
* The excluded volume energy<br />
* The FENE interaction energy<br />
* A letter indicating a status code. This will be <tt>N</tt> for pairs that interact through bonded interactions (i.e. they are neighbors along a strand) and it will be <tt>H</tt> when a base pair is present. Our definition of base pair is when two nucleotides have a hydrogen bonding energy less than 0.1 in simulation units (see [[Publications|Ref. 2]]).<br />
<br />
===Geometry of the Model===<br />
In the configuration/trajectory files only the positions and orientations of the nucleotides are stored. If one wants to recover the positions of the individual interaction sites in the model, some maths need to be done.<br />
<br />
The position of the base, stacking and backbone sites can be recovered as follows:<br />
<br />
base site: (center) + 0.40 * (axis vector)<br />
<br />
stacking site: (center) + 0.34 * (axis vector)<br />
<br />
backbone site: (center) - 0.40 * (axis_vector)<br />
<br />
The picture in the [[Model_introduction|introduction]] might help understanding where the sites are.<br />
<br />
==External Forces==<br />
The code implements several types of external forces that can be imposed on the system that can be used either to simulate tension exerted on DNA or simply to accelerate the formation of secondary or tertiary structure. External forces can be tricky to treat, especially in a dynamics simulation, since they are an external source of work. Care should be taken in adjusting the time step, thermostat parameters and such.<br />
<br />
To enable external forces, one needs to specify <tt>external_forces = 1</tt> in the input file and also supply an external force file to read from with the key <tt>external_forces_file = <file></tt>.<br />
<br />
The syntax of the external forces file is quite simple. Examples of such files can be found in the [[Hairpin_formation|hairpin formation]] and [[Pseudoknot|Pseudoknot formation]] examples. Each force is specified within a block contained in curly brackets. Empty lines and lines beginning with an hash symbol (<tt>#</tt>) are ignored. Different forces require different keys to be present. If the file has the wrong syntax, oxDNA should spit out a sensible error message while parsing the file.<br />
<br />
The different types of forces implemented at the moment are:<br />
* harmonic trap<br />
* string <br />
* repulsion plane<br />
* mutual trap<br />
<br />
All forces act on the centre of the particle.<br />
<br />
Forces of different kinds can be combined in the same simulation. There is a maximum number of 10 external forces per particle for memory reasons. This can be manually overridden recompiling the code with a different value of the macro <tt>MAX_EXT_FORCES</tt> (currently 10) in <tt>defs.h</tt>.<br />
<br />
===String===<br />
A string is implemented as a force that does not depend on the particle position. Its value can be constant or can change linearly with time. It is useful as it does not fluctuate with time.<br />
<br />
A force of this kind is specified with <tt>type = string</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''F0''' (float) the value of the force at time = 0 in simulation units (please note that the value of the time may or may not be reset when starting a simulation, depending on the input file)<br />
* '''rate''' (float) growing rate of the force (simulation units/time steps). Typical values are very small (< 10^(-5))<br />
* '''dir''' (3 floats separated by commas) direction of the force (automatically normalised by the code)<br />
<br />
The following bit of code will create an external force on the first nucleotide in the system starting at 1 simulation units (48.6 pN) and growing linearly with time at the rate of 48.6pN every million time steps. The force will pull the nucleotide along the <tt>z</tt> direction.<br />
<br />
<pre><br />
{<br />
type = string<br />
particle = 0<br />
F0 = 1.<br />
rate = 1e-6<br />
dir = 0., 0., 1.<br />
} <br />
</pre><br />
<br />
===Harmonic trap===<br />
This type of force implements an harmonic trap, of arbitrary stiffness, that can move linearly with time. It can be useful to fix the position of the nucleotides to simulate attachment to something or to implement (quasi) constant extension simulations.<br />
<br />
A force of this kind is specified with <tt>type = trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force<br />
* '''pos0''' (3 floats separated by commas) rest position of the trap<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * dx)<br />
* '''rate''' (float) speed of the trap (length simulation units/time steps)<br />
* '''dir''' (3 floats separated by commas) direction of movement of the trap<br />
<br />
Here is an example input for a harmonic trap acting on the third nucleotide constraining it to stay close to the origin. In this example the trap does not move (<tt>rate=0</tt>), but one could have it move at a constant speed along the direction specified by <tt>dir</tt>, in this case the <tt>x</tt> direction.<br />
<br />
<pre><br />
{<br />
type = trap<br />
particle = 2<br />
pos0 = 0., 0., 0.<br />
stiff = 1.0<br />
rate = 0.<br />
dir = 1.,0.,0.<br />
}<br />
</pre><br />
<br />
Please note that the trap does not comply with periodic boundary conditions. This is most likely what you want.<br />
<br />
===Repulsion plane===<br />
This kind of external force implements a repulsion plane that constrains a particle (or the whole system) to stay on one side of it. It is implemented as a harmonic repulsion, but the stiffness can be made arbitrarily high to mimic a hard repulsion.<br />
<br />
A force of this kind is specified with <tt>type = repulsion_plane</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force. If set to the special value -1, the force will be exerted on all particles.<br />
* '''stiff''' (float) stiffness of the trap (the force is stiff * D, where D is distance from the plane. The force is exerted only if the nucleotide is below the plane)<br />
* '''dir''' (3 floats separated by commas) a direction normal to the plane<br />
* '''position''' (1 float number) specifies the position of the plane<br />
<br />
If direction is <tt> direction = u,v,w </tt> , then the plane contains all the points (x,y,z) that satisfy the equation: u*x + v*y + w*z + position = 0.<br />
Only nucleotides with coordinates (x,y,z) that satisfy u*x + v*y + w*z + position < 0 will feel the force.<br />
The force exerted on a nucleotide is equal to stiff * D, where D is the distance of the nucleotide from the plane, where <math> D = | ux + vy + wz + \mbox{position}| / \sqrt{v^2 + u^2 + z^2 }.</math><br />
For nucleotides for which u*x + v*y + w*z + position >= 0, no force will be exerted.<br />
<br />
Here is an example. This plane acts on the whole system and will not exert any force on nucleotides with a positive <tt>x</tt> coordinate. A force proportional to 48.6 pN * (<tt>x</tt> coordinate) will be exerted on all particles . <br />
<br />
<pre><br />
{<br />
type = repulsion_plane<br />
#whole system<br />
particle = -1<br />
stiff = 1. #48.6 pN in simulation units<br />
dir = 1, 0, 0<br />
position = 0<br />
}<br />
</pre><br />
<br />
If in the above example you would specify position = 3, then the force would be exerted on all nucleotides with coordinate x > -3.<br />
<br />
===Mutual trap===<br />
This force is useful to form initial configurations. It is a harmonic force that at every moment pulls a particle towards a reference particle. It is possible to specify the separation at which the force will be 0.<br />
<br />
A force of this kind is specified with <tt>type = mutual_trap</tt>. The relevant keys are:<br />
* '''particle''' (int) the particle on which to exert the force.<br />
* '''ref_particle''' (int) particle to pull towards. Please note that this particle will not feel any force (the name mutual trap is thus misleading).<br />
* '''stiff''' (float) stiffness of the trap<br />
* '''r0''' (float) equilibrium distance of the trap.<br />
<br />
Here is an example, extracted from the [[Pseudoknot|pseudoknot formation example]]. This will pull particle 14 towards particle 39, favouring an equilibrium distance of 1.4 (which corresponds roughly to the minimum of the hydrogen bonding potential, not a coincidence). The same force with opposite sign is exerted on particle 39 through a separate force. It is not necessary to have both particles feel the force, but it is usually works much better.<br />
<br />
<pre><br />
{<br />
type = mutual_trap<br />
particle = 14<br />
ref_particle = 39<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
<br />
{<br />
type = mutual_trap<br />
particle = 39<br />
ref_particle = 14<br />
stiff = 1.<br />
r0 = 1.2<br />
}<br />
</pre><br />
<br />
==Visualisation of structures==<br />
oxDNA produces a trajectory file where all the relevant information is<br />
stored. A converter is provided (<tt>traj2vis.py</tt>) in the<br />
<tt>UTILS</tt> directory that is able to produce files in the <tt>xyz</tt><br />
and <tt>pdb</tt> formats. The same program can be used on a configuration<br />
file and it will produce a snapshot.<br />
<br />
Since the model is coarse-grained, we have to "trick" the visualisers into<br />
thinking that the interaction sites in the model are actually atoms.<br />
Advanced nucleic acids representations such as ribbons will not work on the<br />
outputs.<br />
<br />
All the images in the [[Screenshots]] page were produced with the pdb representation using UCSF chimera (see later on).<br />
<br />
===xyz format===<br />
<br />
just run <br />
<br />
<pre>$oxDNA/UTILS/traj2vis.py xyz <trajectory> <topology> </pre><br />
<br />
(where <tt>$oxDNA</tt> is the oxDNA source directory) to get the xyz representation in a file called the same as the trajectory<br />
file with <tt>.xyz</tt> appended. Please note that boundary conditions are<br />
implemented strand-wise, so strands that are bound might appear at two<br />
different sizes of the box. Also, the center of mass of the system (where<br />
each strand is weighted the same regardless of the length) is set to 0 at<br />
each frame. Carbons represent the backbone sites and oxygens the base sites.<br />
<br />
The resulting file can be read with a variety of programs. Here we will<br />
explain how to visualise it sensibly in [http://www.ks.uiuc.edu/Research/vmd/ VMD].<br />
<br />
* Run VMD and load the xyz file.<br />
* In the graphics menu, go to Representations.<br />
* In the Selected Atoms line, input <tt>name C</tt>. Also select Drawing method CPK, sphere scale 0.8 and Bond Radius 0.<br />
* In the Selected Atoms line, input <tt>name O</tt>. Also select Drawing method CPK, sphere scale 0.6 and Bond Radius 0.<br />
<br />
This should produce a ball representation of our model DNA. Bonds<br />
automatically produced by VMD are NOT meaningful in our context.<br />
<br />
===pdb format===<br />
Run <br />
<br />
<pre>$oxDNA/UTILS/traj2chimera.py <trajectory> <topology> </pre><br />
<br />
to produce a trajectory/configuration in the pdb format. A further file<br />
called <tt>chimera.com</tt> will be produced (more on this later). All<br />
comments above about periodic boundaries and centre of mass apply here as<br />
well.<br />
<br />
The pdb file can be visualised in VMD just like the xyz format, but a nicer<br />
output can be produced with [http://www.cgl.ucsf.edu/chimera/ UCSF Chimera] (although only for snapshots at<br />
the moment) as follows:<br />
<br />
Run chimera and load the pdb file. An ugly output will be displayed.<br />
<br />
Bring up the command line under the <tt>Tools → General Controls</tt> menu.<br />
Input <tt>read chimera.com</tt> in the command line and press enter. You<br />
should get a nicer visualisation with different bases in different colors,<br />
all the covalent bonds in the right place, etc.<br />
<br />
On large configurations, the production of ellipsoids will be extremely<br />
slow. You can remove it by removing the line<br />
<br />
<code>aniso scale 0.75 smoothing 4</code><br />
<br />
from the commands file. Loading the resulting file should be much faster.<br />
<br />
UCSF chimera can in turn export the scene in a variety of formats.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Input_options&diff=793Input options2014-03-19T11:25:57Z<p>Rovigattil: Created page with "===Core options=== ;T = <float> : temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C …"</p>
<hr />
<div>===Core options===<br />
<br />
;T = <float><br />
: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
;[fix_diffusion = <bool>]<br />
: if true, particles that leave the simulation box are brought back in via periodic boundary conditions. Defaults to true.<br />
;[seed = <int>]<br />
: seed for the random number generator. On Unix systems, defaults to either a number from /dev/urandom or to time(NULL)<br />
;[confs_to_skip = <int>]<br />
: how many configurations should be skipped before using the next one as the initial configuration, defaults to 0<br />
;restart_step_counter = <boolean>/<bool><br />
: false means that the step counter will start from the value read in the configuration file, true means that the step counter will start from 0/if True oxDNA will reset the step counter to 0, otherwise it will start from the step counter found in the initial configuration. Defaults to False.<br />
;[external_forces = <bool>]<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file)<br />
;[external_forces_file = <path>]<br />
: specifies the file containing all the external forces' configurations. Currently there are six supported force types: string, twist, trap, repulsion_plane, repulsion_plane_moving and mutual_trap (see EXAMPLES/TRAPS for some examples)<br />
;[back_in_box = <bool>]<br />
: whether particles should be brought back into the box when a configuration is printed or not, defaults to false<br />
;[lastconf_file = <path>]<br />
: path to the file where the last configuration will be dumped<br />
;trajectory_file = <path><br />
: path to the file which will contain the output trajectory of the simulation<br />
;[binary_initial_conf = <bool>]<br />
: whether the initial configuration is a binary configuration or not, defaults to false<br />
;[lastconf_file_bin = <path>]<br />
: path to the file where the last configuration will be printed in binary format, if not specified no binary configurations will be printed<br />
;[print_reduced_conf_every = <int>]<br />
: every how many time steps configurations containing only the centres of mass of the strands should be printed. If 0, no reduced configurations will be printed<br />
;[reduced_conf_output_dir = <path>]<br />
: path to the folder where reduced configurations will be printed<br />
;[no_stdout_energy = <bool>]<br />
: if true oxDNA will not print the default simulation output, including the energy, to stdout. Defaults to false<br />
;[print_timings = <bool>]<br />
: whether oxDNA should print out to a file performance timings at the end of the simulation or not, defaults to false<br />
;[timings_filename = <path>]<br />
: path to the file where timings will be printed<br />
;[print_input = <bool>]<br />
: make oxDNA write the input key=value pairs used by the simulation in a file named input.pid, with pid being the oxDNA pid. Defaults to False.<br />
;conf_file = <string><br />
: path to the starting configuration<br />
;steps = <int><br />
: length of the simulation, in time steps<br />
;[equilibration_steps = <int>]<br />
: number of equilibration steps. During equilibration, oxDNA does not generate any output. Defaults to 0<br />
;time_scale = linear/log_lin<br />
: a linear time_scale will make oxDNA print linearly-spaced configurations. a log_lin will make it print linearly-spaced cycles of logarithmically-spaced configurations.<br />
;print_conf_interval = <int><br />
: if the time scale is linear, this is the number of time steps between the outputing of configurations, otherwise this is just the first point of the logarithmic part of the log_lin time scale<br />
;print_conf_ppc = <int><br />
: mandatory only if time_scale == log_line. This is the number of printed configurations in a single logarithmic cycle.<br />
;[print_energy_every = <int>]<br />
: number of time steps between the outputing of the energy (and of the other default observables such as acceptance ratios in Monte Carlo simulations). Defaults to 0.<br />
;[list_type = verlet|cells|no]<br />
: Type of neighbouring list to be used in CPU simulations. 'no' implies a O(N^2) computational complexity. Defaults to verlet.<br />
;verlet_skin = <float><br />
: width of the skin that controls the maximum displacement after which Verlet lists need to be updated.<br />
;name = stream name<br />
: name of the output stream. stdout or stderr are accepted values<br />
;print_every = <integer><br />
: frequency of output, in number steps for oxDNA, in number of configurations for DNAnalysis<br />
;[start_from = <integer>]<br />
: start outputing from the given step, defaults to 0<br />
;[stop_at = <integer>]<br />
: stop outputing at this step, defaults to -1 (which means never)<br />
;[only_last = <bool>]<br />
: if true, the output will not be appended to the stream, but it will overwrite the previous output each time, defaults to false<br />
;[binary = <bool>]<br />
: if true, the output will be printed in binary, defaults to false<br />
;col_<n> = {<br />type = name of the first observable<br />[other observable options as lines of 'key = value']<br />}<br />
: this syntax specifies the column of the output file. Note that <n> is the column index and should start from 1<br />
<br />
===MD options===<br />
<br />
;backend = CPU<br />
: For CPU FFS<br />
;backend_precision = <any><br />
: CPU FFS may use any precision allowed for a normal CPU MD simulation<br />
;sim_type = FFS_MD<br />
: This must be set for an FFS simulation<br />
;[thermostat = no|refresh|brownian|langevin|srd]<br />
: Select the simulation thermostat for MD simulations. 'no' means constant-energy simulations. 'refresh' is the Anderson thermostat. 'brownian' is an Anderson-like thermostat that refreshes momenta of randomly chosen particles. 'langevin' implements a regular Langevin thermostat. 'srd' is an (experimental) implementation of a stochastic rotational dynamics algorithm. 'no' and 'brownian' are also available on CUDA. Defaults to 'no'.<br />
;newtonian_steps = <int><br />
: number of integration timesteps after which momenta are refreshed<br />
;pt = <float><br />
: probability of refreshing the momenta of each particle<br />
;diff_coeff = <float><br />
: base diffusion coefficient. Either pt or diff_coeff should be specified in the input file<br />
;gamma_trans = <float><br />
: translational damping coefficient for the Langevin thermostat. Either this or diff_coeff should be specified in the input file.<br />
<br />
===MC options===<br />
<br />
;ensemble = nvt|npt<br />
: ensemble of the simulation<br />
;[check_energy_every = <float>]<br />
: oxDNA will compute the energy from scratch, compare it with the current energy and throw an error if the difference is larger then check_energy_threshold. Defaults to 10.<br />
;[check_energy_threshold = <float>]<br />
: threshold for the energy check. Defaults to 1e-2f for single precision and 1e-6 for double precision.<br />
;delta_translation = <float><br />
: controls the trial translational displacement, which is a randomly chosen number between -0.5*delta and 0.5*delta for each direction.<br />
;delta_rotation = <float><br />
: controls the angular rotational displacement, given by a randomly chosen angle between -0.5*delta and 0.5*delta radians.<br />
;delta_volume = <float><br />
: controls the volume change in npt simulations.<br />
;P = <float><br />
: the pressure of the simulation. Used only if ensemble == npt.<br />
;[adjust_moves = <bool>]<br />
: if true, oxDNA will run for equilibration_steps time steps while changing the delta of the moves in order to have an optimal acceptance ratio. It does not make sense if equilibration_steps is 0 or not given. Defaults to false<br />
;[maxclust = <int>]<br />
: Default: N; maximum number of particles to be moved together. Defaults to the whole system<br />
;[small_system = <bool>]<br />
: Default: false; whether to use an interaction computation suited for small systems.<br />
;[preserve_topology = <bool>]<br />
: Default: false; sets a maximum size for the move attempt to 0.5, which guarantees that the topology of the system is conserved. Also prevents very large moves and might speed up simulations of larger systems, while suppressing diffusion<br />
;[umbrella_sampling = <bool>]<br />
: Default: false; whether to use umbrella sampling<br />
;[op_file = <string>]<br />
: Mandatory if umbrella_sampling is set to true; path to file with the description of the order parameter<br />
;[weights_file = <string>]<br />
: Mandatory if umbrella_sampling is set to true; path to file with the weights to use in umbrella sampling<br />
;[last_hist_file = <string>]<br />
: Optional if umbrella_sampling is set to true, otherwise ignored; Default: last_hist.dat; path to file where the histograms associated with umbrella sampling will be stored. This is printed with the same frequency as the energy file. Should become an observable sooner or later<br />
;[traj_hist_file = <string>]<br />
: Optional if umbrella_sampling is set to true, otherwise ignored; Default: traj_hist.dat; path to file where the series histograms associated with umbrella sampling will be stored, allowing to monitor the time evolution of the histogram and possibly to remove parts of the simulation. This is printed with the same frequency as the energy file. Should become an observable sooner or later<br />
;[init_hist_file = <string>]<br />
: Optional if umbrella_sampling is set to true, otherwise ignored; Default: none; path to a file to load a previous histogram from, useful if one wants to continue a simulation to obtain more statistics.<br />
;[extrapolate_hist = <float>,<float>,..., <float>]<br />
: Optional if umbrella_sampling is set to true, otherwise ignored; Default: none; series of temperatures to which to extrapolate the histograms. They can be given as float in reduced units, or the units can be specified as in the T option<br />
;[safe_weights = <bool>]<br />
: Default: true; whether to check consistency in between order parameter file and weight file. Only used if umbrella_sampling = true<br />
;[default_weight = <float>]<br />
: Default: none; mandatory if safe_weights = true; default weight for states that have no specified weight assigned from the weights file<br />
;[skip_hist_zeros = <bool>]<br />
: Default: false; Wether to skip zero entries in the traj_hist file<br />
<br />
===Interactions/DNAInteraction.h options===<br />
<br />
;[use_average_seq = <boolean>]<br />
: defaults to yes<br />
;[hb_multiplier = <float>]<br />
: HB interaction multiplier applied to all the nucleotides having a custom numbered base whose magnitude is > 300, defaults to 1.0<br />
<br />
===Interactions/DHSInteraction.h options===<br />
<br />
;DHS_eps = <float><br />
: background dielectrci constant for reaction field treatment<br />
;DHS_rcut = <float><br />
: cutoff for the reaction field treatment<br />
<br />
===Interactions/RNAInteraction.h options===<br />
<br />
;[use_average_seq = <boolean>]<br />
: defaults to yes<br />
;[seq_dep_file = <string>]<br />
: sets the location of the files with sequence-dependent parameters<br />
;[external_model = <string>]<br />
: overrides default constants for the model, set in rna_model.h), by values specified by this option<br />
<br />
===Interactions/DirkInteraction2.h options===<br />
<br />
;length = <float><br />
: lenght of the cylinders<br />
;DHS_radius = <float><br />
: radius of the diploar hard sphere on top of each cylinder<br />
;DHS_rcut = <float><br />
: distance cutoff for the reaction field treatment<br />
;DHS_eps = <float><br />
: background dielectric constant for the reaction field treatment<br />
<br />
===Interactions/InteractionFactory.h options===<br />
<br />
;[interaction_type = DNA|RNA|HS|LJ|patchy|TSP|DNA_relax|DNA_nomesh|Box|HardCylinder|HardSpheroCylinder|DHS|Dirk]<br />
: Particle-particle interaction of choice. Check the documentation relative to the specific interaction for more details. Defaults to dna.<br />
<br />
===Interactions/HardSpheroCylinderInteraction.h options===<br />
<br />
;length = <float><br />
: length of the spherocylinder<br />
<br />
===Interactions/BoxInteraction.h options===<br />
<br />
;box_sides = <float>, <float>, <float><br />
: sides of the box<br />
<br />
===Interactions/DirkInteraction.h options===<br />
<br />
;length = <float><br />
: lenght of the cylinders<br />
;DHS_radius = <float><br />
: radius of the diploar hard sphere on top of each cylinder<br />
;DHS_rcut = <float><br />
: distance cutoff for the reaction field treatment<br />
;DHS_eps = <float><br />
: background dielectric constant for the reaction field treatment<br />
<br />
===Interactions/LJInteraction.h options===<br />
<br />
;LJ_rcut = <float><br />
: interaction cutoff<br />
;[LJ_kob_andersen = <bool>]<br />
: Simulate a Kob-Andersen mixture. Defaults to false.<br />
<br />
===Interactions/HardCylinderInteraction.h options===<br />
<br />
;height = <float><br />
: cylinder length<br />
<br />
===Interactions/DNAInteraction_relax.h options===<br />
<br />
;relax_type = <string><br />
: Possible values: constant_force, harmonic_force; Relaxation algorithm used<br />
;relax_strength = <float><br />
: Force constant for the replacement of the FENE potential<br />
<br />
===Interactions/PatchyInteraction.h options===<br />
<br />
;PATCHY_N = <int><br />
: number of patches<br />
;[PATCHY_N_B = <int>]<br />
: number of patches on species B<br />
;[PATCHY_alpha = <float>]<br />
: width of patches, defaults to 0.12<br />
<br />
===Interactions/TSPInteraction.h options===<br />
<br />
;TSP_rfene = <float><br />
: FENE length constant for bonded interactions<br />
;TSP_sigma[type] = <float><br />
: particle diameter associated to each interaction<br />
;TSP_epsilon[type] = <float><br />
: energy scale associated to each interaction<br />
;TSP_attractive[type] = <float><br />
: whether the interaction contains an attractive tail or not<br />
;TSP_n[type] = <int><br />
: exponent for the generalised LJ potential for each interaction<br />
<br />
===CUDA options===<br />
<br />
;[CUDA_list = no|verlet]<br />
: Neighbour lists for CUDA simulations. Defaults to 'no'.<br />
;[CUDA_device = <int>]<br />
: CUDA-enabled device to run the simulation on. If it is not specified or it is given a negative number, a suitable device will be automatically chosen.<br />
;[CUDA_sort_every = <int>]<br />
: sort particles according to a 3D Hilbert curve every CUDA_sort_every time steps. This will greatly enhnance performances for some types of interaction. Defaults to 0, which disables sorting.<br />
;[threads_per_block = <int>]<br />
: Number of threads per block on the CUDA grid. defaults to 2 * the size of a warp.<br />
;backend = CUDA<br />
: For CUDA FFS -- NB unlike the CPU implementation, the CUDA implementation does not print extra columns with the current order parameter values whenever the energy is printed<br />
;backend_precision = mixed<br />
: CUDA FFS is currently only implemented for mixed precision<br />
;sim_type = FFS_MD<br />
: This must be set for an FFS simulation<br />
;order_parameters_file = <string><br />
: path to the order parameters file<br />
;ffs_file = <string><br />
: path to the file with the simulation stopping conditions. Optionally, one may use 'master conditions' (CUDA FFS only), which allow one to more easily handle very high dimensional order parameters. See the EXAMPLES/CUDA_FFS/README file for more information<br />
;[ffs_generate_flux = <bool>]<br />
: CUDA FFS only. Default: False; if False, the simulation will run until a stopping condition is reached; if True, a flux generation simulation will be run, in which case reaching a condition will cause a configuration to be saved but will not terminate the simulation. In the stopping condition file, the conditions must be labelled forward1, forward2, ... (for the forward conditions); and backward1, backward2, ... (for the backward conditions), ... instead of condition1, condition2, ... . To get standard flux generation, set the forward and backward conditions to correspond to crossing the same interface (and use conditions corresponding to different interfaces for Tom's flux generation). As with the single shooting run mode, the name of the condition crossed will be printed to stderr each time.<br />
;[gen_flux_save_every = <integer>]<br />
: CUDA FFS only. Mandatory if ffs_generate_flux is True; save a configuration for 1 in every N forward crossings<br />
;[gen_flux_total_crossings = <integer>]<br />
: CUDA FFS only. Mandatory if ffs_generate_flux is True; stop the simulation after N crossings achieved<br />
;[gen_flux_conf_prefix = <string>]<br />
: CUDA FFS only. Mandatory if ffs_generate_flux is True; the prefix used for the file names of configurations corresponding to the saved forward crossings. Counting starts at zero so the 3rd crossing configuration will be saved as MY_PREFIX_N2.dat<br />
;[gen_flux_debug = <bool>]<br />
: CUDA FFS only. Default: False; In a flux generation simulation, set to true to save backward-crossing configurations for debugging<br />
;[check_initial_state = <bool>]<br />
: CUDA FFS only. Default: False; in a flux generation simulation, set to true to turn on initial state checking. In this mode an initial configuration that crosses the forward conditions after only 1 step will cause the code to complain and exit. Useful for checking that a flux generation simulation does not start out of the A-state<br />
;[die_on_unexpected_master = <bool>]<br />
: CUDA FFS only. Default: False; in a flux generation simulation that uses master conditions, set to true to cause the simulation to die if any master conditions except master_forward1 or master_backward1 are reached. Useful for checking that a flux generation simulation does not enter any unwanted free energy basins (i.e. other than the initial state and the desired final state)<br />
;[unexpected_master_prefix = <string>]<br />
: CUDA FFS only. Mandatory if die_on_unexpected_master is True; the prefix used for the file names of configurations corresponding to reaching any unexpected master conditions (see die_on_unexpected_master).<br />
<br />
===Analysis options===<br />
<br />
;[analysis_confs_to_skip = <int>]<br />
: number of configurations that should be excluded from the analysis.<br />
;analysis_data_output_<n> = {<br />ObservableOutput<br />}<br />
: specify an analysis output stream. <n> is an integer number and should start from 1. The setup and usage of output streams are documented in the ObservableOutput class.<br />
<br />
===Observables/Step.h options===<br />
<br />
;[units = steps|MD]<br />
: units to print the time on. time in MD units = steps * dt, defaults to step<br />
<br />
===Observables/ParticlePosition.h options===<br />
<br />
;particle_id = <int><br />
: particle id<br />
;[orientation = <bool>]<br />
: defaults to false. If 1, it also prints out the orientation<br />
;[absolute = <bool>]<br />
: defaults to false. If 1, does not use periodic boundaries and it prints out the absolute position of the center of mass<br />
<br />
===Observables/Pressure.h options===<br />
<br />
;type = pressure<br />
: an observable that computes the osmotic pressure of the system<br />
;[stress_tensor = <bool>]<br />
: if true, the output will contain 7 fields, with the first being the total pressure and the other 6 the six independent components of the stress tensor, xx, yy, zz, xy, xz, yz<br />
<br />
===Observables/CoaxVariables.h options===<br />
<br />
;particle1_id = <int><br />
: particle 1 id<br />
;particle2_id = <int><br />
: particle 2 id<br />
<br />
===Observables/PotentialEnergy.h options===<br />
<br />
;[split = <bool>]<br />
: defaults to false, it tells the observable to print all the terms contributing to the potential energy<br />
<br />
===Observables/ObservableOutput.h options===<br />
<br />
;name = stream name<br />
: name of the output stream. stdout or stderr are accepted values<br />
;print_every = <integer><br />
: frequency of output, in number steps for oxDNA, in number of configurations for DNAnalysis<br />
;[start_from = <integer>]<br />
: start outputing from the given step, defaults to 0<br />
;[stop_at = <integer>]<br />
: stop outputing at this step, defaults to -1 (which means never)<br />
;[only_last = <bool>]<br />
: if true, the output will not be appended to the stream, but it will overwrite the previous output each time, defaults to false<br />
;[binary = <bool>]<br />
: if true, the output will be printed in binary, defaults to false<br />
;col_<n> = {<br />type = name of the first observable<br />[other observable options as lines of 'key = value']<br />}<br />
: this syntax specifies the column of the output file. Note that <n> is the column index and should start from 1<br />
<br />
===Observables/DensityProfile.h options===<br />
<br />
;max_value = <float><br />
: anything with a relevant coordinate grater than this will be ignored. Mind that the observable is PBC-aware.<br />
;bin_size = <float><br />
: the bin size for the profile<br />
;axis = <char><br />
: Possible values: x, y, z the axis along which to compute the profile<br />
<br />
===Observables/HBEnergy.h options===<br />
<br />
;[pairs_file = <string>]<br />
: OrderParameter file containing the list of pairs whose HB energy is to be computed<br />
;[base_file = <string>]<br />
: file containing a list of nucleotides whose HB energy is to be computed, one nucleotide per line<br />
<br />
===Observables/Distance.h options===<br />
<br />
;particle_1 = <int><br />
: index of the first particle<br />
;particle_2 = <int><br />
: index of the second particle. The distance is returned as r(2) - r(1)<br />
;[PBC = <bool>]<br />
: Whether to honour PBC. Defaults to True<br />
;[dir = <float>, <float>, <float>]<br />
: vector to project the distance along. Beware that it gets normalized after reading. Defaults to (1, 1, 1) / sqrt(3)<br />
<br />
===Observables/Rdf.h options===<br />
<br />
;max_value = <float><br />
: maximum r to consider<br />
;bin_size = <float><br />
: bin size for the g(r)<br />
;[axes = <string>]<br />
: Possible values: x, y, z, xy, yx, zy, yz, xz, zx. Those are the axes to consider in the computation. Mind that the normalization always assumes 3D sytems for the time being.<br />
<br />
===Observables/Configurations/TclOutput.h options===<br />
<br />
;[back_in_box = <bool>]<br />
: Default: true; if true the particle positions will be brought back in the box<br />
;[show = <int>,<int>,...]<br />
: Default: all particles; list of comma-separated indexes of the particles that will be shown. Other particles will not appear<br />
;[hide = <int>,<int>,...]<br />
: Default: no particles; list of comma-separated indexes of particles that will not be shown<br />
;[print_labels = <bool>]<br />
: Default: false; if true labels with the strand id are printed next to one end of the strand.<br />
;[resolution = <int>]<br />
: Default: 20; resolution set in the tcl file.<br />
;[ref_particle = <int>]<br />
: Default: -1, no action; The nucleotide with the id specified (starting from 0) is set at the centre of the box. Overriden if ref_strands is specified. Ignored if negative or too large for the system.<br />
;[ref_strand = <int>]<br />
: Default: -1, no action; The strand with the id specified, starting from 1, is set at the centre of the box. Ignored if negative or too large for the system.<br />
<br />
===Observables/Configurations/Configuration.h options===<br />
<br />
;[back_in_box = <bool>]<br />
: if true the particle positions will be brought back in the box, defaults to false<br />
;[show = <int>,<int>,...]<br />
: list of comma-separated particle indexes whose positions will be put into the final configuration<br />
;[hide = <int>,<int>,...]<br />
: list of comma-separated particle indexes whose positions won't be put into the final configuration<br />
;[reduced = <bool>]<br />
: if true only the strand centres of mass will be printed, defaults to false<br />
<br />
===Observables/Configurations/PdbOutput.h options===<br />
<br />
;[back_in_box = <bool>]<br />
: Default: true; if true the particle positions will be brought back in the box<br />
;[show = <int>,<int>,...]<br />
: Default: all particles; list of comma-separated indexes of the particles that will be shown. Other particles will not appear<br />
;[hide = <int>,<int>,...]<br />
: Default: no particles; list of comma-separated indexes of particles that will not be shown<br />
;[ref_particle = <int>]<br />
: Default: -1, no action; The nucleotide with the id specified (starting from 0) is set at the centre of the box. Overriden if ref_strands is specified. Ignored if negative or too large for the system.<br />
;[ref_strand = <int>]<br />
: Default: -1, no action; The strand with the id specified (starts from 1) is set at the centre of the box. Ignored if negative or too large for the system.<br />
<br />
===Observables/Configurations/ChimeraOutput.h options===<br />
<br />
;[colour_by_sequece = <bool>]<br />
: Default: false; whether to coulour the bases according to the base type (A, C, G, T<br />
<br />
===Forward Flux Sampling (FFS) options===<br />
<br />
;backend = CPU/CUDA<br />
: For CPU FFS/For CUDA FFS -- NB unlike the CPU implementation, the CUDA implementation does not print extra columns with the current order parameter values whenever the energy is printed<br />
;backend_precision = <any>/mixed<br />
: CPU FFS may use any precision allowed for a normal CPU MD simulation/CUDA FFS is currently only implemented for mixed precision<br />
;sim_type = FFS_MD<br />
: This must be set for an FFS simulation<br />
;order_parameters_file = <string><br />
: path to the order parameters file<br />
;ffs_file = <string><br />
: path to the file with the simulation stopping conditions. Optionally, one may use 'master conditions' (CUDA FFS only), which allow one to more easily handle very high dimensional order parameters. See the EXAMPLES/CUDA_FFS/README file for more information<br />
;[ffs_generate_flux = <bool>]<br />
: CUDA FFS only. Default: False; if False, the simulation will run until a stopping condition is reached; if True, a flux generation simulation will be run, in which case reaching a condition will cause a configuration to be saved but will not terminate the simulation. In the stopping condition file, the conditions must be labelled forward1, forward2, ... (for the forward conditions); and backward1, backward2, ... (for the backward conditions), ... instead of condition1, condition2, ... . To get standard flux generation, set the forward and backward conditions to correspond to crossing the same interface (and use conditions corresponding to different interfaces for Tom's flux generation). As with the single shooting run mode, the name of the condition crossed will be printed to stderr each time.<br />
;[gen_flux_save_every = <integer>]<br />
: CUDA FFS only. Mandatory if ffs_generate_flux is True; save a configuration for 1 in every N forward crossings<br />
;[gen_flux_total_crossings = <integer>]<br />
: CUDA FFS only. Mandatory if ffs_generate_flux is True; stop the simulation after N crossings achieved<br />
;[gen_flux_conf_prefix = <string>]<br />
: CUDA FFS only. Mandatory if ffs_generate_flux is True; the prefix used for the file names of configurations corresponding to the saved forward crossings. Counting starts at zero so the 3rd crossing configuration will be saved as MY_PREFIX_N2.dat<br />
;[gen_flux_debug = <bool>]<br />
: CUDA FFS only. Default: False; In a flux generation simulation, set to true to save backward-crossing configurations for debugging<br />
;[check_initial_state = <bool>]<br />
: CUDA FFS only. Default: False; in a flux generation simulation, set to true to turn on initial state checking. In this mode an initial configuration that crosses the forward conditions after only 1 step will cause the code to complain and exit. Useful for checking that a flux generation simulation does not start out of the A-state<br />
;[die_on_unexpected_master = <bool>]<br />
: CUDA FFS only. Default: False; in a flux generation simulation that uses master conditions, set to true to cause the simulation to die if any master conditions except master_forward1 or master_backward1 are reached. Useful for checking that a flux generation simulation does not enter any unwanted free energy basins (i.e. other than the initial state and the desired final state)<br />
;[unexpected_master_prefix = <string>]<br />
: CUDA FFS only. Mandatory if die_on_unexpected_master is True; the prefix used for the file names of configurations corresponding to reaching any unexpected master conditions (see die_on_unexpected_master).</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Input_options_of_the_previous_version&diff=792Input options of the previous version2014-03-19T11:25:37Z<p>Rovigattil: Created page with "===Generic options=== The options listed here define the generic behavior of the entire program. ;[interaction_type = DNA]: DNA|RNA|patchy|LJ : (selects the model for the simulat…"</p>
<hr />
<div>===Generic options===<br />
The options listed here define the generic behavior of the entire program.<br />
;[interaction_type = DNA]: DNA|RNA|patchy|LJ<br />
: (selects the model for the simulation. DNA ([[DNA_model_introduction|oxDNA model]]) is the default option. RNA ([[RNA_model_introduction|oxRNA model]]), LJ (Lennard-Jones) and patchy particles are also implemented<br />
;[sim_type=MD]: MD|MC<br />
:MD = Molecular Dynamics, MC = Monte Carlo<br />
;backend: CPU | CUDA <br />
: (only sim_type=MD is supported if you choose CUDA backend)<br />
;backend_precision: float|double|mixed<br />
: (mixed option is available only for CUDA backend. It is recommended choice for optimal performance on CUDA machines, double is recommended for CPU simulations)<br />
;[debug=0]: 0|1<br />
: 1 if you want verbose logs, 0 otherwise.<br />
<br />
===Simulation options===<br />
The options listed here specify the behaviour of the simulation.<br />
<br />
;steps: number of steps to be performed.<br />
<br />
;[restart_step_counter=0]: 0|1<br />
:0 means that the step counter will start from the value read in the configuration file; if 1, the step counter will be reset to 0. The total duration of the simulation is unchanged.<br />
<br />
;[seed=time(NULL)]: seed for the random number generator. On Unix systems, it will use by default a number from /dev/urandom + time(NULL)<br />
<br />
;T: temperature of the simulation. It can be expressed in simulation units or kelvin (append a k or K after the value) or celsius (append a c or C after the value).<br />
:Examples:<br />
{|<br />
|-<br />
! Value<br />
! Simulation Units<br />
|-<br />
| 0.1<br />
| 0.1<br />
|-<br />
| 300 K<br />
| 0.1<br />
|-<br />
| 300k<br />
| 0.1<br />
|-<br />
| 26.85c<br />
| 0.1<br />
|-<br />
| 26.85 C <br />
| 0.1<br />
|-<br />
|}<br />
<br />
;verlet_skin: if a particle moves more than verlet_skin then the lists will be updated. Its name is somewhat misleading: the actual verlet skin is 2*verlet_skin.<br />
<br />
;[use_average_seq=1]: 0|1<br />
: specifies whether to use the default hard-coded average parameters for base-pairing and stacking interaction strengths or not. If sequence dependence is to be used, set this to 0 and specify seq_dep_file.<br />
<br />
;[seq_dep_file]: specifies the file from which the sequence dependent parameters should be read. Mandatory if use_average_seq=no, ignored otherwise. A sample file is provided (sequence_dependent_parameters.txt).<br />
<br />
;[external_forces=0]: 0|1<br />
: specifies whether there are external forces acting on the nucleotides or not. If it is set to 1, then a file which specifies the external forces' configuration has to be provided (see external_forces_file).<br />
<br />
;[external_forces_file]: specifies the file containing all the external forces' configurations. Currently there are six supported force types (see EXAMPLES/TRAPS for some examples):<br />
:*string<br />
:*twist<br />
:*trap<br />
:*repulsion_plane<br />
:*repulsion_plane_moving<br />
:*mutual_trap<br />
<br />
====Molecular dynamics simulations options====<br />
<br />
;dt: time step of the integration.<br />
<br />
;thermostat: no|refresh|john <br />
:no means no thermostat will be used. refresh will refresh all the particle's velocities from a maxwellian every newtonian_steps steps. john is an Anderson-like thermostat (see pt). Make sure you read [[Thermostat|thermostat]].<br />
<br />
;newtonian_steps: required if thermostat != no<br />
:number of steps after which a procedure of thermalization will be performed.<br />
<br />
;pt: used if thermostat == john. It's the probability that a particle's velocity will be refreshed during a thermalization procedure.<br />
<br />
;diff_coeff: required if pt is not specified<br />
:used internally to automatically compute the pt that would be needed if we wanted such a self diffusion coefficient. Not used if pt is set.<br />
<br />
====Monte Carlo simulations options====<br />
<br />
;[check_energy_every=10]: this number times print_energy_every gives the number of steps after which the energy will be computed from scratch and checked against the actual value computed adding energy differences.<br />
<br />
;[check_energy_threshold=1e-4]: if abs((old_energy - new_energy)/old_energy) > check_energy_threshold then the program will die and warn the user.<br />
<br />
;ensemble: NVT<br />
:ensemble of the simulation. More ensembles could be added in future versions.<br />
<br />
;delta_translation: maximum displacement (per dimension) for translational moves in simulation units.<br />
<br />
;delta_translation: maximum displacement for rotational moves in simulation units.<br />
<br />
===Input/output===<br />
The options listed here are used to manage the I/O (read and write configurations, energies and so on)<br />
<br />
;conf_file: initial configuration file. <br />
<br />
;topology: file containing the system's topology.<br />
<br />
;trajectory_file: the main output of the program. All the configurations will be appended to this file as they are printed.<br />
<br />
;[confs_to_skip=0]: valid only if conf_file is a trajectory. Skip the first confs_to_skip configurations and then load in memory the (confs_to_skip+1)th.<br />
<br />
;[lastconf_file=last_conf.dat]: this is the file where the last configuration is saved (when the program finishes or is killed). Set to last_conf.dat by default<br />
<br />
;[refresh_vel=0]: 0|1<br />
:if 1 the initial velocities will be refreshed from a maxwellian.<br />
<br />
;energy_file: energy output file.<br />
<br />
;[print_energy_every=1000]: this will make the program print the energies every print_energy_every steps.<br />
<br />
;[no_stdout_energy=0]: 0|1<br />
:if 1 the energy will be printed just to the energy_file.<br />
<br />
;[time_scale=linear]: linear|log_lin<br />
:using linear configurations will be saved every print_conf_interval.<br />
:using log_lin configurations will be saved logarithmically for print_conf_ppc times. After that the logarithmic sequence will restart.<br />
<br />
;print_conf_interval: linear interval if time_scale == linear. First step of the logarithmic scale if time_scale == log_lin.<br />
<br />
;print_conf_ppc: used if time_scale == log_lin<br />
:points per logarithmic cycle.<br />
<br />
;[print_reduced_conf_every=0]: every print_reduced_conf_every steps the program will print out the reduced configurations (i.e. confs containing only the centers of mass of strands).<br />
<br />
;reduced_conf_output_dir: used if print_reduced_conf_every > 0<br />
:output directory for reduced_conf files.<br />
<br />
;[log_file=stderr]: file where generic and debug informations will be logged. If not specified then stderr will be used.<br />
<br />
;[print_timings=0]: 0|1<br />
:if 1 the MD step timing have be printed to a file.<br />
<br />
;timings_filename: used if print_timings == 1<br />
:output file where the MD step timing will be appended to.</div>Rovigattilhttps://dna.physics.ox.ac.uk/index.php?title=Previous_version&diff=791Previous version2014-03-19T10:47:36Z<p>Rovigattil: </p>
<hr />
<div>In this section, we outline the procedure for compiling the previously released (2012) version of oxDNA simulation code. This version is no longer developed, but the links for the download and installation instructions are provided below for convenience. We note that the 2012 version of oxDNA requires <tt>make</tt> software and a C++ compiler. <br />
<br />
<br />
Before starting, we recall that the features of oxDNA are <br />
<br />
*Molecular and Brownian dynamics<br />
*Regular Monte Carlo<br />
*External forces<br />
*A stand-alone single- and double-strand generator (<tt>UTILS/generate-sa.py</tt>)<br />
*An output-converter from oxDNA configuration files to .pdb and VMD-supported .xyz files (<tt>UTILS/traj2vis.py</tt>)<br />
<br />
[[Features_of_the_previous_version|This]] page contains a more detailed list.<br />
<br />
==Requirements==<br />
===Compiler===<br />
The recommended compiler is gcc 4.6.x. oxDNA compilation has been thoroughly tested with gcc >= 4.1.x and icpc >= 10. Note that compiling with gcc 4.6.x rather than with gcc 4.1.x results in a significant increase in performances. Since oxDNA is writtern in standard c++, it '''should''' be also compatible with other compilers.<br />
<br />
===Operating system===<br />
oxDNA has been tested on Linux (kernel >= 2.6.x) and Mac OS X. Since it is written in ANSI c++, it '''should''' also work on other OSes, provided that the makefile is changed accordingly.<br />
<br />
===Dependencies===<br />
oxDNA does not depend on any external library apart from the standard c++ library and therefore is completely self-contained.<br />
<br />
==Download==<br />
The source package can be downloaded [http://pacci.phys.uniroma1.it/sites/default/files/oxdna/index.php here]. There are currently no available binary packages.<br />
<br />
==Compilation==<br />
To install the program, untar <tt>oxDNA.tar</tt> and enter the oxDNA directory. Compile the code with <br />
<br />
<pre>make</pre><br />
<br />
==Compile options==<br />
<br />
Compiling oxDNA requires that you change the first rows in the makefile to match your machine configuration. The following parameters can be passed to make:<br />
<br />
*'''dbg=1''' oxDNA will be compiled with debug flags (both for nvcc and gcc). The resulting executable will be put in the Debug directory.<br />
*'''g=1''' oxDNA will be compiled with both debug and optimization flags. The resulting executable will be put in the Release directory.<br />
*'''intel=1''' oxDNA will be compiled using the Intel icpc compiler. The resulting executable will be named oxDNA_intel.<br />
<br />
The compilation process will generate an <tt>oxDNA</tt> executable in the <tt>Release</tt> directory. The usage of oxDNA is<br />
<br />
<pre><br />
oxDNA <input><br />
</pre><br />
<br />
The complete list of supported input options can be found [[Documentation#Input_file|here]]. If you want some hands-on examples, there are some in the [[Examples|EXAMPLES]] directory.<br />
<br />
A useful analysis tool that prints out all the interactions for a configuration is in the <tt>UTILS/process_data/</tt> directory. To compile it, one needs to go into that directory and type <tt>make</tt>. The program will be called <tt>output_bonds</tt> and its usage is described in the [[Documentation#Analysis_of_configurations|Documentation]].</div>Rovigattil