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

Strange relaxation trajectory #36

Closed RodenLuo closed 2 years ago

RodenLuo commented 2 years ago

Hi,

I relaxed a structure and got the following trajectory. Some nucleotides first got exploded and then dragged back. And sometime later, the same phenomenon happened again. Is this normal? The structure and input files are mentioned after the video. For this structure, the end conf is fine to feed to the MD production run. However, I met the same issue for the oxview's icosahedron example, and the end conf cannot be simulated because of the long backbone distances (ERROR: Distance between bonded neighbors 1848 and 1849 exceeds acceptable values (d = 5.591129)). For the icosahedron, the structure is in the exploded state even after 1e8 steps of MD relaxation. For both cases, I'm using the generated external forces file, so stiff = 0.09 r0 = 1.2 PBC = 1 are in the file. back_in_box=1 is in the input file. Any help is much appreciated. Thanks.

https://user-images.githubusercontent.com/8460424/190377039-74a6f1e9-f99f-460d-9142-5f3d8aae43e6.mp4

I used the following structure and input files.

Structure: Feed this cndo file to tacoxdna CanDo → oxDNAbeta and check the Print an external-forces file option. Input MC and MD relaxation files: input_relax_MC.txt, input_relax_MD.txt

zoombya commented 2 years ago

Hi Roden, the files you provided are very interesting. Sometimes the conversion script from Cando files sets bases at the exact same positions. If this happens usually even MC simulations don't run. (if used in ox-serve) to check for it you can use the following script:

// all base positions
let = pos = [...elements].map(e=>e[1].getPos())
// place to store the bad bases
let same = [];
for (let i=0; i< pos.length; i++){
    let cp = pos[i];
    for (let j=0; j< pos.length;j++){
      if(cp.equals(pos[j])&& i!=j && !same.includes(i) && !same.includes(j)){
          same.push(i,j);
      }
    }
}
console.log(same);
api.selectElementIDs(same); render();

but this is not the only issue with that configuration.

zoombya commented 2 years ago

it's really interesting that

interaction_type=DNA_relax
relax_type = harmonic_force

is able to relax it despite the positions issue.

RodenLuo commented 2 years ago

Hi Michael Thanks! For this tetrahedron CanDo file (converted oxDNA configuration), it can run through the MC relax, and the MD relax, and the result can be MD simulated. Only that the MD relax gave this strange trajectory that the structure first explodes and then forms again. And it happened twice.

For this example from oxview: oxdna-viewer/tree/master/examples/icosahedron, it really gives me huge trouble now. I have not been able to run through the relaxation. And so far I have not got a configuration that can be MD simulated. If you happen to have a way or configuration for it that can be simulated, could you please kindly provide or advise? Thanks!

RodenLuo commented 2 years ago

The tetrahedron CanDo file is the "Example 5: DNA tetrahedron" from https://cando-dna-origami.org/examples/.

zoombya commented 2 years ago

To the best of my knowledge the icosahedron example you need to do RBD relax for quite some time. What exactly are you after?

zoombya commented 2 years ago

I'm able to relax the icosahedron quite easily, the slowest step is the clustering before the RBD. Crutial step here is that you should not have the forcetraps computed before you finish the RBD step. As those slow down the RBD thread. After that using ox-serve:

1) After that using ox-serve you have to do ~200 steps MC: 200 -1.349121 0.068 0.606 0.000
2) MD with relax settings 56000 168.0000 -1.438079 0.304985 -1.133095 3) MD equilibration 10000 30.0000 -1.449197 0.300652 -1.148546

The only problem with all of this is that you end up with only one of the 2 possible isomers (scaffold facing outside, vs scaffold facing inside) of the structure and unless there's experimental data supporting that one forms preferentially over the other you need to simulate both.

relaxation steps ico.zip

RodenLuo commented 2 years ago

Hi Michael, Thanks very much! Using your attached 4 MD Relax.oxviewI'm able to simulate it.

I'm actually after 1) the revision of a paper: https://arxiv.org/abs/2205.01628; 2) experiment with and learn oxDNA related in general. We are developing a new visualization framework and rendering techniques to enable better visualization of MD trajectories at different scales. We call it SynopSpace. Except for what's shown in the arXiv preprint, I also attach a few screenshots in the end. I'm currently looking for exemplary MD trajectories. Take the icosahedron, if the transition between isoform 1 and isoform 2 can be in one MD trajectory, that would be one of the best cases for us. We want the tool can be genuinely beneficial to the oxDNA community rather than only showing off some graphics rendering. So, I'm also learning more and more about oxDNA. Hope this explains a bit of my seemingly strange behavior (probably the same strange level as the trajectory above :)) that I am at one second asking for the tetrahedron, while at the other second jumping to the icosahedron.

Back to the main thread, I figured out that my icosahedron is having a different issue than the tetrahedron. I was using the already relaxed (at least to some extent) configuration in the given files: "Click here to directly load the relaxed end result". I have to say that the relaxed conf given by you is much more relaxed. The main reason I was not able to relax it is https://github.com/sulcgroup/oxdna-viewer/issues/87. I only noticed this when I compared step by step between my file and yours.

Two small remaining questions: 1) I tried to understand "the 2 possible isomers (scaffold facing outside, vs scaffold facing inside) of the structure", but I could not. Probably that's also why I do not understand the difference between 4 MD Relax.oxview and 5 MD Relax off.oxview. 2) How did you generate the force pairs? Thanks!

Snipaste_2022-09-17_19-57-25

Snipaste_2022-09-17_20-00-47

https://user-images.githubusercontent.com/8460424/190869812-305eae83-95cb-44ff-b449-9b48f9825545.mp4

zoombya commented 2 years ago

Nice graphics as usual (:, the difference between 4 and 5 is that I have run 5 for a bit with relaxation settings switched off. To answer your question about the isomers compare the 2 files in this attachment. isomers.zip All forces I generated where done using findBasePairs using oxview functionality, and the entire relaxation after RBD was done using ox-serve on Nanobase.

RodenLuo commented 2 years ago

OMG, huge thanks, Michael. I moved to findBasePairs the other day and went to the downstream processing. I looked into the two isomers just now again and it became super clear to me that it looks like the icosahedron gets flipped inside out. Now, I am very curious how this difference gets noticed. :)

zoombya commented 2 years ago

Untill you do smth like dimerization experiments, or obtain very precise CryoEM maps it's not easty to tell. Here are 2 papers you can look up:

RodenLuo commented 2 years ago

Oh, I meant, how did you notice the difference in this specific case? It is such a big structure, I might finish all my computational analysis without even knowing there is another isomer. I have the feeling that this might be a common characteristic (similar to "chirality" in chemistry) of certain designs (that you can flip inside out). Is there a systematic way to test if there are multiple isomers?

zoombya commented 2 years ago

At the best of my knowledge, this isomer question is a thing which people who are attempting to realize a wireframe design have to be avare of. It's an open question wherever oxDNA can distinguish between one isomer being prefered over the other. There might be a slight difference in the energies, of the 2 isomers but i haven't tested it. (and it's probably very dependent on the structure) The biggest difference will be probably during the actual assembly, which is once again a somewhat demanding thing to simulate. Overall, for me its actually an area I am deeply interested in, but have very little answers so far. (: And keep in mind oxDNA is just a model, and this might be one of the limmits.

RodenLuo commented 2 years ago

Thanks again! I learned oxDNA/MD stuff mostly by myself with occasional discussions such as in this thread (which I appreciate a lot), but without formal training. Good to know this is a common issue of wireframe designs.

I tried using oxDNA to do assembly simulations. But even on extremely small systems (100, 300, 1000 NTs), it looks like it's impossible to get the structures assembled without any interventions. With such a big structure here, I believe some systematic interventions on oxDNA or other models are needed. Great to know that this fits your interest, we may update each other if we later have some news.

zoombya commented 2 years ago

My pleasure, wireframes is what got me started with oxDNA to begin with. So I'm always happy to exchange info on them ;)