NEBScape settings¶
NEBScape defines surface-reaction exploration and pathway search. Its SODA
integration exposes scientific controls in [NEBScape], with force-model
settings in [ASE Calculator]. Start with the
MACE surface-reaction example.
Keep [Main] job = nebscape. Use "$SODA_BIN" --help-config to inspect
the INI schema and "$SODA_BIN" --help for runtime options after activating
your build’s environment. The tables below list selected settings; the
configuration schema gives the complete
INI reference.
Reaction inputs and placement selection¶
These options belong to [NEBScape]. Scientific defaults match the reviewed native
path; the example explicitly enables selection_prerelax_sample.
Option |
Default |
Purpose |
|---|---|---|
|
|
Reaction SMILES input file. |
|
|
JSON preparation options, including |
|
|
Enables placement pre-relaxation, intactness filtering, and K-means selection. |
|
|
Placement relaxation force threshold in eV/Å. |
|
|
Maximum placement relaxation steps. |
|
|
Maximum selected placements per preparation target, not per whole run. |
|
|
Placement energy window above the lowest energy, in eV. |
|
|
Dimer adsorbate center-of-mass separation cutoff in Å. |
|
|
Neighbor-cutoff multiplier for preparation and post-hopping intactness checks against the original prepared topology. Native MinHop |
The pre-relaxation and sampling controls apply when
selection_prerelax_sample = true. As in native NEBScape, the sampler skips
energy/distance filtering when at most selection_n_kmeans intact placements
remain; otherwise dimer placements can pass either the energy or distance test.
Native difference: SODA performs pre-relaxation as a separate preparation
phase and stores its results in HDF5. Native files such as
initial_structures.xyz do not determine whether SODA skips this phase.
Minima hopping¶
minhop_settings_json contains a JSON object of supported native scientific
settings. The MACE example uses:
minhop_settings_json = {"Ediff0": 1.0, "T0": 2000, "timestep": 0.5, "totalsteps": 10, "maxtemp": 10000, "optimizer": "FIRE"}
JSON key |
Meaning |
|---|---|
|
Initial energy acceptance threshold in eV. |
|
Initial MD search temperature in K; independent of |
|
MD time step in fs. |
|
Counter limit per start, including the initial relaxation; not MD steps or accepted minima. |
|
Stops the search when its temperature reaches this value in K. |
|
Local relaxation optimizer: |
Native difference: minhop_share_minima_traj (default false) replaces
native share_minima_traj. When enabled, starts in the same history group
share SODA’s typed seed and accepted-minima records rather than a shared
trajectory file. With pre-relaxation, every intact group seed is present before
the first start, including unselected and unconverged seeds. Seeds count as
prior minima and precede all proposals for duplicate handling.
After a group’s hopping history is settled, mandatory native finalization
relaxes every retained search minimum and preparation seed with FIRE,
fmax=0.05 eV/Å and at most 500 steps. It removes Hookean constraints, retains
fixed atoms, and checks connectivity against the original prepared structure
using selection_graph_mult. These fixed relaxation settings do not inherit
the hopping optimizer or the configurable placement relaxation thresholds.
Raw search geometries and constrained energies remain in the audit history;
geometry preparation uses only intact, converged finalized endpoints after the
whole dependency group completes. Independent groups may overlap.
With minhop_settings_json = {"optimize_only": true}, every prepared start goes
directly to the same finalizer, using its original group reference. Each start
is relaxed once; no hopping jobs or hopping-history rows are created.
Non-intact and unconverged results remain recorded but ineligible. Native
omissions produce completed zero-output outcomes; execution exceptions remain
errors.
Search finalization can add up to 500 FIRE steps per source. It restores the
native scientific pipeline, with no promised speedup or Sella success rate.
Rebuild the C++ executable and deploy the matching Python adapters and analyzer
from the same source version, then start a fresh run. Its schema-7 checkpoints
include explicit run mode, reference, finalization-work and finalization-result
counts, with finalization contract revision 2. Old databases are not upgraded or
repaired by this change. Newly created databases use the ordinary checkpoint
and --loadrun routines.
SODA-only limit: max_minima_per_job (default 20) caps staged MinHop
proposals per job, including rejected proposals. At the limit, a continuing
chain returns to the master for ordinary continuation scheduling. It is a
buffer/batching bound, not a scientific stopping criterion; longer chains do
not require raising it. An internal violation of the staging bound aborts.
Geometry pairs and interpolation¶
Option in |
Default |
Purpose |
|---|---|---|
|
|
Endpoint reduction method: |
|
|
K-means centroid count and reduction threshold. |
|
|
Energy window above the lowest minimum, in eV, for ranged Pareto selection. |
|
|
Absolute distance cutoff in Å: donor–acceptor separation for transfer, or breaking-bond length for dissociation. |
|
|
Maximum number of DECAF groups. |
|
|
Ranked-pair limit per reaction mapping; native early-return paths can retain more. |
|
|
Includes native slab-symmetry alignment variants. |
|
|
Force threshold for aligned final-state relaxation in eV/Å. |
|
|
Uses the converged aligned final state only if its absolute energy change is below this value in eV. |
|
|
Number of internal images, excluding both endpoints. |
|
|
Maximum index-permuted interpolations per geometry pair. |
|
|
Maximum final interpolations retained per atom mapping. |
Eighteen internal images make twenty with endpoints, matching native
prepare_neb(numimages=18). Larger pair and permutation limits increase
downstream work; they do not set NEB convergence.
NEB scientific controls¶
Set supported NEB options in neb_settings_json. An empty object {} uses
the reviewed NEBScape 0.3.1 defaults below.
JSON key |
Default |
Purpose |
|---|---|---|
|
|
Enables the native non-climbing then climbing sequence. |
|
|
Non-climbing optimizer step limit and force threshold in eV/Å. |
|
|
Climbing optimizer step limit and force threshold in eV/Å. |
|
|
Optimizer step limit and force threshold in eV/Å when climbing is disabled. |
|
|
ASE NEB method and spring constant in eV/Ų. |
|
|
Endpoint pre-relaxation force threshold in eV/Å; |
|
|
Checks chemical fidelity and can split/rerun a band before climbing. |
|
|
Enables native Sella refinement and IRC validation when required. |
|
|
Retains IRC frames from Sella refinement; does not enable refinement itself. |
|
|
Number of native Sella retries when that refinement is enabled. |
For example, this explicitly retains the two-stage step limits:
neb_settings_json = {"switch_climb": true, "no_climb_step": 200, "no_climb_fmax": 0.05, "climb_step": 2000, "climb_fmax": 0.05}
As in native NEBScape, switch_climb: true uses the stage-specific limits;
changing steps alone does not change the climbing stage. Use the [NEBScape]
NEB settings rather than the example’s
general [Optimizer] or [Saddle Search] entries to tune this calculation.
The NEB settings reference lists
all admitted scientific keys and their defaults.
Calculator and runtime controls¶
The MACE example sets [ASE Calculator] kind = mace_foundation,
device = gpu, model = mh-1, and the oc20_usemppbe head in
kwargs_json. These are example choices, not the schema defaults.
See calculator preparation
for the checkpoint and environment requirements.
MPI ranks and --num-gpu-workers-per-node determine worker capacity.
Keep CPU workers available for geometry preparation and interpolation.
--storesummariesinfile=1 enables stored search summaries, while
--flushafterjobsdone controls result flushing. These are runtime controls,
separate from scientific sampling and convergence settings.
Stop at a phase boundary¶
Use a SODA executable rebuilt from the updated sources. To save a reproducible
starting point for NEB, add this to config.ini:
[Debug]
nebscape_stop_after_phase = final_interpolation
SODA completes all work through final interpolation, including band selection, and saves the ordinary completed-phase checkpoint. It then shuts down normally with exit code zero, without admitting any NEB jobs. Earlier permitted phases can still overlap. Collection, result registration, persistence, and shutdown use the ordinary workflow routines.
The accepted values are:
Value |
Last phase allowed to compute |
|---|---|
|
Unrestricted run; also the default when the option is omitted. |
|
Placement preparation and selection. |
|
Minima hopping, continuations, filtering, and mandatory native finalization; optimize-only completes its prepared-start finalization here. |
|
Endpoint selection, mapping, and geometry-pair candidate generation. |
|
Relaxation and final-state choice for aligned candidates. |
|
Final interpolation and retained-band selection, before NEB. |
|
NEB and any enabled Sella/IRC work; this finishes the full workflow. |
A completed phase means all its tasks reached their ordinary terminal outcomes. It does not mean every optimization converged or every band passed its scientific checks. Allowed phases with no work still complete normally; excluded phases remain unstarted. The option does not impose a timeout on a calculation that has yet to finish.
The target is read at startup and stays fixed for that invocation. Non-none
values require [Main] job = nebscape. Despite its placement in [Debug], the
option is available in normal builds and does not require runtime test probes.
Mandatory NEBScape phase/result records are saved independently of the optional
--storesummariesinfile setting.
Resume the saved run¶
Remove nebscape_stop_after_phase or set it to none, retain the same scientific
configuration and required inputs, and use ordinary --loadrun:
mpirun -n 3 "$SODA_BIN" \
--loadrun=/absolute/path/to/stopped/output/output.h5 \
--num-gpu-workers-per-node=1
Run this example from a new working directory with the matching inputs and
calculator environment; it assumes one head, one CPU worker, and one GPU
worker. Set SODA_BIN to an absolute executable path. No analyzer extraction,
database conversion, or special restart command is needed. Use an absolute
checkpoint path: relative --loadrun paths are resolved inside outputdir.
See Restarting a run for the general restart rules.
Keeping an already-reached target launches no new scientific work. Choosing an earlier target does not rewind the database or remove historical partial downstream results. Choosing a later target allows unfinished phases through that new boundary. The option and worker allocation do not change the scientific fingerprint; incompatible scientific settings or reaction catalogs still fail the normal restart checks.
Unsupported and redirected settings¶
Native parameters cannot all be copied directly
Native difference marks replaced behavior; unsupported marks rejected choices. These notes apply to the SODA integration and conversion helpers.
Native parameter or input |
Restriction or alternative when using SODA |
|---|---|
|
Native difference: MPI allocation and SODA worker options replace native scheduling; these keys are rejected in NEB JSON. |
|
Native difference: use |
|
Native difference: SODA schedules preparation; leave unset or |
|
Renamed: use |
ASE |
Unsupported overrides. Each band runs serially within one task; SODA distributes tasks. |
MinHop |
Unsupported when non-null, including in directly written JSON. |
Lambdas and instantiated calculator objects |
Unsupported by static conversion. Use a calculator preset or importable custom calculator factory. |
Native constructor |
Not converted: native |
Unknown keys in neb_settings_json are rejected. Conversion reports may
instead list omitted native execution controls: review that report before
running converted inputs. The
native parameter conversion guide
describes supported mappings and explicit omissions.