Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Running the FFS example fails #12

Closed
haleydoran opened this issue Apr 26, 2019 · 9 comments
Closed

Running the FFS example fails #12

haleydoran opened this issue Apr 26, 2019 · 9 comments

Comments

@haleydoran
Copy link

haleydoran commented Apr 26, 2019

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
Copy link
Collaborator

mquevill commented May 6, 2019

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
Copy link
Author

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
Copy link
Collaborator

mquevill commented May 7, 2019

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
Copy link

ohenrich commented May 8, 2019

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
Copy link
Collaborator

mquevill commented May 8, 2019

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
Copy link
Author

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
Copy link
Collaborator

mquevill commented May 8, 2019

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
Copy link
Collaborator

mquevill commented Jun 4, 2019

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
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants