SSAGESproject / SSAGES

Software Suite for Advanced General Ensemble Simulations
GNU General Public License v3.0
81 stars 28 forks source link

Running the FFS example fails #12

Closed haleydoran closed 5 years ago

haleydoran commented 5 years ago

When I try to run the FFS example, the output file is empty and I get the following:

Please provide an initial configuration in State A. Exiting ....
application called MPI_Abort(MPI_COMM_WORLD, 1) - process 0
application called MPI_Abort(MPI_COMM_WORLD, 1) - process 1

Also, I am using GROMACS.

mquevill commented 5 years ago

This means that the FFS input file did not have a defined initial configuration. The tutorial uses a Python script to generate the inputs with user-defined parameters. Did you use that script to generate your inputs? What does your input .json file look like?

[There was an error in the template .json file that was corrected in 13f10f3. If this caused your issue, please update your source and retry.]

haleydoran commented 5 years ago

No, I saw that and fixed it. My .json file: Input-2walkers.txt

When I saw looking through the Forward Flux source code I noticed: if ( _cvvalue > _firstInterfaceLocation) { std::cerr << "Please provide an initial configuration in State A. Exiting ...." << std::endl; MPI_Abort(world_, EXIT_FAILURE); } So, I edited the interfaces to be positive numbers. This got passed that error, but of course no interfaces were passed, and the output was the following: FFS_positive_interfaces_error.txt

I should also add that the .json file was not generated by the python code, it was already in the Examples file. When I tried to run the Python script I got the following output: Traceback (most recent call last): File "FF_Input_Generator.py", line 58, in <module> root = json.load(f) File "/usr/lib/python2.7/json/__init__.py", line 291, in load **kw) File "/usr/lib/python2.7/json/__init__.py", line 339, in loads return _default_decoder.decode(s) File "/usr/lib/python2.7/json/decoder.py", line 364, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode raise ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded

mquevill commented 5 years ago

The interfaces do not necessarily need to be at positive numbers, but your initial CV must be within the first state (less than the first interface location). With your input file, you need to provide an initial configuration that has a torsional angle that is greater than -2.61.

The ValueError: No JSON object could be decoded message usually occurs when there is an error in the input .json file, so it cannot be interpreted properly. This might be related to the issue fixed with the most recent commit, since a trailing comma throws this error too. I would suggest using a JSON validator such as https://jsonlint.com/ or https://jsonformatter.curiousconcept.com/ to ensure it is a valid JSON format.

ohenrich commented 5 years ago

Does it work in serial? Does it work as long as the number of walkers is the same as the number of MPI tasks? The FFS example crashes also with LAMMPS (see open issue #10).

mquevill commented 5 years ago

With the provided example files and using FF_Input_Generator.py, I was able to start running, with either 2 or 4 tasks for 2 walkers. The error @haleydoran is facing occurs during a check before the simulation can even start. This is also a different example (ADP vs Langevin particle).

haleydoran commented 5 years ago

I see, and to do that would I manually change the adp.gro inputs? I used a JSON validator and the result was valid.

mquevill commented 5 years ago

You could change your initial configuration, so that it exists in state A (at the first interface). Or adjust your interface values, so that state A includes the initial CV value.

If the JSON is valid, that addresses the issue with ValueError: No JSON object could be decoded, but the error with Please provide an initial configuration in State A. Exiting .... is more user-dependent to ensure that FFS and its interfaces are set up properly.

mquevill commented 5 years ago

There are several shortcomings of the FFS method that our developers have identified recently. For instance, the interfaces can be either all monotonically increasing or decreasing, but we only check that the CV is less than the value of state A. If they are decreasing, the initial CV should be larger than the value of state A. We have an eventual overhaul of FFS planned, but the current implementation has this quirk in it.

haleydoran commented 5 years ago

I look forward to seeing the results of the overhaul! And thanks for the help and clarification.