lorenzo-rovigatti / oxDNA

A new version of the code to simulate the oxDNA/oxRNA models, now equipped with Python bindings
https://dna.physics.ox.ac.uk/
GNU General Public License v3.0
43 stars 28 forks source link

Location of interaction threshold energies? (General question) #52

Closed dhollis6 closed 1 year ago

dhollis6 commented 1 year ago

Hi there,

I have a program which takes the output from output_bonds.py (in analysis tools) and determines whether any stacking or hydrogen bonds are broken throughout the trajectory. I need to define threshold values so that if the energy of an interaction is below this threshold, it is considered bonded.

It looks like the threshold for hydrogen bonding (HB_CUTOFF) is -0.1 as defined in src>Utilities>OrderParameters.h. However I can't find the threshold for normal, coaxial or cross stacking. The stacking observable UnstackedList.h references a value called threshold_fraction, and reads "the nucleotides will be counted as stacked if their stacking energy is at least this fraction of the maximum stacking energy." Where is this defined? And where do I find the maximum stacking energy?

Any guidance would be greatly appreciated. Thank you.

Kind regards Daniel H.

lorenzo-rovigatti commented 1 year ago

Hi,

the maximum stacking energy depends on temperature T, on the model and on whether you are using the sequence-dependent or average-sequence parametrisation. For the average-sequence models:

For the sequence-dependent models the maximum stacking energy also depends on the pair of nucleotides you are looking at:

where STACK_FACT_EPS and ST_T_DEP and STCK_X_Y (where X and Y are A, C, G, T or U if RNA) can be found in the files that specify the sequence-dependent parametrisations (usually oxDNA/oxDNA1_sequence_dependent_parameters.txt, oxDNA/oxDNA2_sequence_dependent_parameters.txt and oxDNA/rna_sequence_dependent_parameters.txt).

Edit: usually nucleotides are either bonded/stacked or not, meaning that the specific value of the threshold is not super important, as long as you don't pick a value that's too close to the maximum. Using something like -0.2-0.3 should work, but look at the distributions of the energies you get from your simulations before choosing!

dhollis6 commented 1 year ago

This is very helpful, thank you! And your last comment confirms a suspicion I had, since I noticed these thresholds are never set to precise values.

I'm assuming these values are only for normal stacking. Would the maximum stacking energies for cross stacking or coaxial stacking be much different? i.e. would the same thresholds work? I'm using the average sequence model.

lorenzo-rovigatti commented 1 year ago

The functional form of the cross- and coaxial stacking is a bit different than the stacking one, and it's a bit harder to obtain the numbers you are after just looking at the code. It's probably faster if you simulate a fully-formed duplex, use output_bonds and look at the energy distributions for the cross- and coaxial-stacking terms.

dhollis6 commented 1 year ago

That makes sense. Thanks again!