Closed haleydoran closed 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.]
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
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.
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).
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).
I see, and to do that would I manually change the adp.gro
inputs?
I used a JSON validator and the result was valid.
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.
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.
I look forward to seeing the results of the overhaul! And thanks for the help and clarification.
When I try to run the FFS example, the output file is empty and I get the following:
Also, I am using GROMACS.