SSAGESLabs / PySAGES

Python Suite for Advanced General Ensemble Simulations
Other
73 stars 26 forks source link

Completed OpenMM Simulation FES #99

Closed meschw04 closed 2 years ago

meschw04 commented 2 years ago

Hello! Another question for you all. I noticed from the umbrella integration example with HOOMD, I can take results = method.run(...) and use this for getting at the final free energy surface (FES): https://github.com/SSAGESLabs/PySAGES/blob/192e7f9af6fdb50329d2e8fea095537b39a1fc12/examples/umbrella_integration/integration.py#L111 I got the alanine dipeptide ABF working from the example, however in this case I just run the simulation: https://github.com/SSAGESLabs/PySAGES/blob/192e7f9af6fdb50329d2e8fea095537b39a1fc12/examples/abf/alanine-dipeptide_openmm.py#L78 however if I set results = method.run(...), then I find that the new variable results is a NoneType. Is there a reason that I can set results= for a HOOMD simulation, and not results= for an OpenMM simulation to get at the FES? How should I get to the FES using the OpenMM alanine dipeptide example?

Thanks so much!

InnocentBug commented 2 years ago

The reason you are seeing this, is that we ABF does not return anything after running the simulation. I am guessing that you have to log something during your run to get the free energy result out of the ABF. But @pabloferz can help with this probably better than I can. Maybe you have to write a Callback for ABF to get the results?

However, you should be able to use UmbrellaIntegration also with OpenMM. You part about writing the CVS and method should be identical between OpenMM and HOOMD-blue. That is what PySAGES is all about: advanced sampling abstract from the actual MD engine. So you can try to use UmbrellaIntegration with OpenMM as well. The reported results should be the same.

pabloferz commented 2 years ago

The current way to do this is by manually building a Logger to collect the information and then integrate the forces to obtain the FES (we have some tools to do this). I can try to build an example for you to get the FES @meschw04.

Irrespectively of this, I think we should add the context as attribute to the sampling methods, and a mechanism to get copy of the snapshot as we had already discussed (actually, I'm working on this)

InnocentBug commented 2 years ago

I believe this is done now with #135