In order to use pre-computed potentials one needs to enter data in three different blocks. Firstly, you need to state:
<calc_preComp = 1>
within the <param>
block.
Secondly, beads for each conformation need to be in a separate file using the standard PDB format:
ATOM 1 B4 Pro A 1 -142.098 -12.009 5.325 ATOM 2 B1 Pro A 1 -145.067 -7.988 7.025 ATOM 3 B1 Pro A 1 -146.489 -11.901 3.324 ATOM 4 B4 Pro A 1 -151.897 -7.813 7.042 ATOM 5 B2 Pro A 1 -154.550 -11.857 6.645 ATOM 6 B2 Pro A 1 -155.957 -6.345 10.220 ATOM 7 B4 Pro A 1 -157.703 -7.778 6.177
where the only fields that are taken into account are B1
, B2
, ... standing for the bead type (single word, no further restrictions) and the position of each bead x
, y
, z
(using the same units as the nodes
file). This file is entered as beads
within block <blob>
(or within <conformation>
, if multiple conformations are defined):
<beads = beadsForBlobXConfY.pdb>
At the beginning of the simulation, each bead is assigned onto a tetrahedron, and during the simulation, the forces that these beads experiment will be linearly interpolated onto the nodes of the corresponding tetrahedra. The initial assignment is done to the nearest tetrahedra centroid. However, this can be altered individually adding a directive at the end of every line within the "beads" file. More specifically, if we were assigning bead 2, to a tetrahedron that has either nodes 7, 10 or 15 to 20, we would write:
ATOM 1 B4 Pro A 1 -142.098 -12.009 5.325 ATOM 2 B1 Pro A 1 -145.067 -7.988 7.025 <nodes = 7,10,15-20> ATOM 3 B1 Pro A 1 -146.489 -11.901 3.324 ATOM 4 B4 Pro A 1 -151.897 -7.813 7.042 ATOM 5 B2 Pro A 1 -154.550 -11.857 6.645 ATOM 6 B2 Pro A 1 -155.957 -6.345 10.220 ATOM 7 B4 Pro A 1 -157.703 -7.778 6.177
where the directive nodes
ensures that no accidental confusion arises with B-factors or other information after the position of the beads. Note that nodes
belongs to the <blob>
block (or to the <conformation>
block, if multiple conformations are defined) and therefore, the coordinates given will be rescaled according to <blob>
scale
, as well as possibly rotated and translated if rotation
and centroid
are set, too.
Finally, the rest of the input flags are passed within block <precomp>
in <interactions>
which in turn belongs to <system>
(see the input file syntax). Fields to be provided are:
types
inputData
folder
dist_to_m
E_to_J
Details on how to use these keywords can be found in the corresponding subsection of the FFEA input file.
Optionally, the trajectory for the beads can be saved in a .pdb
formatted file if beads_out_fname
is set in the <params>
block of the .ffea
input file. Because beads will stay bound to the elements where they have been assigned to, this feature aims to proof whether the system has been configured correctly, so once the user is sure, it can be unset. Restarts are currently not supported.
In summary the structure of a .ffea
file with two blobs would interacting through pre-computed potentials would look like:
<param> ... </param> <system> <blob> ... </blob> <blob> ... </blob> <interactions> <precomp> ... </precomp> ... </interactions> </system>
I try to keep all the methods and functions together in a module named ForceMatch.