Restart files
A restart file is a snapshot of a simulation’s configuration that can be used to seed a new simulation. Restart files let you checkpoint long runs, continue a simulation under different conditions, or build up a complex system in stages.
How restart files work
During a run PIMMS periodically writes its state to restart.pimms (a Python
pickle). How often is controlled by RESTART_FREQ, which is either an integer
step frequency or the default sentinel "Every 10th-percentile" (write at 10%,
20%, … 100% of N_STEPS).
The file stores exactly what is needed to reconstruct the configuration:
{
'DIMENSIONS': [x, y, z], # box size (length 2 for 2D)
'HARDWALL' : True | False, # boundary condition the snapshot was taken under
'ENERGY' : <float>, # total energy at write time
'CHAINS' : { # one entry per chain
chainID: [positions, sequence, chainType],
...
},
}
where, for each chain, positions is the list of bead coordinates (in N→C
order), sequence is the one-letter sequence string, and chainType is an
integer grouping identical chains.
What a restart file does capture is the full spatial configuration (every bead of every chain), the box dimensions, and the boundary condition. What it does not capture is the move statistics, accumulated analysis, temperature, or random seed - a restarted run begins fresh in those respects.
Using a restart file as a starting configuration
Point the RESTART_FILE keyword at a restart.pimms file:
RESTART_FILE : restart.pimms
When RESTART_FILE is set, the chains come from the restart file, so the
CHAIN keyword is not required (any CHAIN lines are ignored). You still
provide the run-control keywords (TEMPERATURE, N_STEPS, EQUILIBRATION,
the MOVE_* set, analysis keywords, and a PARAMETER_FILE whose bead types
cover the restart’s sequences).
This makes a simple continuation trivial: take the restart.pimms from one
simulation and start another from it, optionally at a different temperature or
with a different move mix.
Complexities: dimensions, hardwall and when restarts are valid
Restarting into a different box or boundary condition is supported, but with
rules - PIMMS will refuse combinations that could place beads illegally. By default
the new run uses the DIMENSIONS and HARDWALL from your keyfile and
reconciles them against the snapshot. The two RESTART_OVERRIDE_* keywords do the
opposite: they tell PIMMS to ignore those keyfile values and inherit them from the
restart file instead.
Dimensions. By default the run uses the keyfile DIMENSIONS:
For a hardwall snapshot, the keyfile box may be equal to or larger than the snapshot’s. If it is larger, PIMMS grows the box and re-centres the configuration inside it - so growing into a bigger box needs no override, just set
DIMENSIONSto the larger box. The box can never be made smaller than the snapshot (that could force overlaps).For a periodic (PBC) snapshot, the keyfile
DIMENSIONSmust match the snapshot exactly (changing a periodic box would break the wrapping).The dimensionality must always match - you cannot turn a 2D restart into a 3D run.
Setting RESTART_OVERRIDE_DIMENSIONS : True ignores the keyfile DIMENSIONS
and adopts the snapshot’s box exactly as it was. Use it to continue in the original
box without having to repeat its size in the keyfile; it does not grow the box (and
it is incompatible with RESIZED_EQUILIBRATION).
Hardwall. By default the run uses the keyfile HARDWALL, and PIMMS checks the
transition is legal:
Snapshot taken under |
New run requests |
Allowed? |
|---|---|---|
|
|
Yes - hardwall chains never cross a boundary, so they are valid either way. |
|
|
Yes - unchanged boundary. |
|
|
No - PBC chains may already wrap across a boundary, which a hard wall forbids. |
Setting RESTART_OVERRIDE_HARDWALL : True ignores the keyfile HARDWALL and
adopts the snapshot’s boundary condition - a convenience for continuing a run under
the same boundaries it was generated with.
Box-size transitions at a glance:
Transition |
Allowed? |
Notes |
|---|---|---|
30³ → 50³ (grow) |
Yes |
Set |
30³ → 30³ (same) |
Yes |
The default; no override needed. |
30³ → 20³ (shrink) |
No |
Smaller boxes are not supported. |
Resizing on restart also interacts with RESIZED_EQUILIBRATION - a PBC restart
file is incompatible with RESIZED_EQUILIBRATION/RESTART_OVERRIDE_DIMENSIONS
because those features assume a hardwall, growable box.
Adding new chains: EXTRA_CHAIN
EXTRA_CHAIN lets you add chains that were not present in the restart file -
for example, to titrate a second component into a pre-equilibrated condensate. It
uses the same syntax as CHAIN and may be repeated:
RESTART_FILE : restart.pimms
EXTRA_CHAIN : 50 EEEEEEEE # add 50 copies of an 8-bead chain
EXTRA_CHAIN : 10 KKKK # ...and 10 more of another type
The new chains are inserted at random positions that do not overlap the existing
configuration, on top of the restart chains. Because this can be repeated, you can
build a system up in stages - equilibrate component A, restart and add component
B, restart again and add component C, and so on. EXTRA_CHAIN requires a
RESTART_FILE (there must be an existing configuration to add to).