Docs are under construction. Content may be incomplete or change.

tako.reactionPath Settings

Page type: Reference · Generated from src/script/takoScriptDocs.ts · Verified 2026-07-11T00:00:00.000Z
On this page

This page is generated from code-owned Doxygen-style metadata in src/script/takoScriptDocs.ts. Update that file first, then regenerate this page so runtime capability descriptions, docs, and agent guidance stay aligned.

tako.reactionPath

Runs NEB/reaction-path calculations between an initial and final structure.

Signature: await tako.reactionPath(initialStructure, { calculator, reactionFinalStructure, reactionImageCount, reactionInterpolation, reactionNebMethod, reactionOptimizer, ... })

Theory

  • Nudged elastic band represents a reaction path as images connected by springs. True forces are projected perpendicular to the path, while spring forces act along the path to maintain image spacing.
  • The highest-energy image approximates the transition region. Climbing image NEB removes the spring component on that image and drives it uphill along the path to refine the saddle estimate.
  • IDPP interpolation builds a better initial path by preserving pair-distance changes between endpoints. It often reduces atom crossing and improves convergence compared with pure linear interpolation.
  • Barrier heights are model- and endpoint-dependent. Endpoints should be relaxed consistently, atom ordering must match between endpoints, and reported barriers should state whether zero-point, entropy, or solvent effects are omitted.

Usage Notes

  • Always provide reactionFinalStructure with the same atoms in the same order as the initial structure.
  • Use reactionInterpolateOnly: true to inspect generated images before committing to a full NEB run.
  • Keep endpoint, path, and optional saddle vibration checks under the same calculator/settings for consistent barrier bookkeeping.
  • Prefer the default bfgs optimizer for reaction paths. Any optimizer can reach a numerically converged unintended path, so inspect the image trajectory and mechanism.
  • For periodic paths, verify matching endpoint cells and consistently wrapped coordinates yourself; the runtime endpoint validator checks atom count and element order, not cell equality.
  • Do not blindly pre-optimize both endpoints before calling reactionPath, especially for weakly-bound or degenerate-exchange systems: independent endpoint relaxation can collapse reactant and product into the same minimum and destroy the path.
  • Use tako.structure.fix(structure, indices) to freeze anchor atoms (for example a shared spectator atom in an exchange reaction) when the mechanism needs a constrained coordinate.

Settings

SettingTypeDefaultValuesUnitValidationDescription
calculatorcalculatorRequired for calculator-backed operations; validate the operation, structure element coverage, and requested properties before executionCalculator object from tako.calculator.gxtb(...), gfn2(...), mlip(...), or dft(...). It controls the level of theory, charge/spin where supported, runtime assets, property availability, and the synchronous supported-element list used by TakoScript and the UI.
propertiesproperties['energy', 'forces']energy, forcesOther requested property channels are not returned by the reaction-path operationEnergy and forces drive each image. The public reaction-path result does not expose charges, DOS/PDOS, density, NCI, WFN, or stress channels.
reactionFinalStructurestructureFinal endpoint structure. Required for a real reaction path and must match the initial structure atom ordering.
reactionImageCountinteger7Integer, clamped to 3–21Total images including endpoints. More images resolve complex paths better but increase calculation cost.
reactionNebMaxStepsinteger150Integer, clamped to 1–1000Maximum steps in the final optimizer run. For staged climbing, reactionPreclimbSteps run first and are not included in neb.steps.
reactionOptimizerenumbfgsbfgs, fire, mdmin, ode, staticNEB optimizer. bfgs and fire are common choices; ode exposes ODE-specific tolerances; static uses fixed step scaling.
reactionNebMethodenumimprovedTangentimprovedTangent, aseneb, fullSpring, spline, stringNEB tangent/spring formulation. improvedTangent is a robust default for most paths.
reactionInterpolationenumlinearlinear, idppInitial image interpolation. linear interpolates coordinates; idpp pre-optimizes pair distances to reduce bad intermediate geometries.
reactionInterpolateOnlybooleanfalseGenerate the seed without NEB. The result reports neb.converged: true, neb.steps: 0, and no reaction_barrier; convergence here means interpolation completed.
reactionNebClimbbooleantrueEnable climbing image refinement of the highest-energy image after the path has formed.
reactionSpringConstantnumber0.1eV A^-2Positive; invalid values use the defaultSpring constant coupling neighboring images.
reactionFmaxEvPerAngstromnumber0.05eV A^-1Positive; invalid values use the defaultNEB residual convergence threshold.
reactionMaxstepAngstromnumber0.05APositive; invalid values use the defaultMaximum image displacement per optimizer step.
reactionVibrationCheckbooleanfalseBooleanRun a vibration calculation on the selected highest image after the optimizer stops, even when the band is unconverged. Such data is not transition-state verification unless the band and saddle are independently validated.
reactionIdppFmaxEvPerAngstromnumber0.1eV A^-1Positive; invalid values use the defaultIDPP pre-optimization threshold when interpolation is idpp.
reactionIdppStepsinteger100Integer, clamped to 1–1000Maximum IDPP pre-optimization steps before NEB starts.
reactionPreclimbStepsinteger30Integer, clamped to 0–1000Separate ordinary-band budget before a fresh climbing run for any optimizer. Set 0 to climb in the only run; pre-climb steps are not included in final neb.steps.
reactionDynamicRelaxationbooleanfalseSkip or reduce work on already-converged images where supported by the NEB backend.
reactionDynamicFmaxEvPerAngstromnumber0.05eV A^-1Positive; invalid values use the registered default, 0.05Force threshold used by dynamic relaxation image selection.
reactionDynamicScaleFmaxnumber0Nonnegative; negative values normalize to 0Dynamic relaxation residual scaling factor. Zero disables scaling.
reactionOptimizerRtolnumber0.1Positive fallback; used only by ODERelative tolerance of the ODE optimizer.
reactionOptimizerC1number0.01Positive fallback; used only by ODEODE optimizer control parameter c1.
reactionOptimizerC2number2Positive fallback; used only by ODEODE optimizer control parameter c2.
reactionOptimizerHminnumber1e-10Positive fallback; used only by ODEMinimum ODE optimizer step size.
reactionStaticAlphanumber0.1eV^-1 A^2Positive fallback; used only by staticStatic optimizer step scale.

Example

const initial = await tako.input("input/reactant.extxyz");
const final = await tako.input("input/product.extxyz");
const calculator = tako.calculator.gfn2({ dispersion: "d4" });
const result = await tako.reactionPath(initial, {
  calculator,
  reactionFinalStructure: final,
  reactionImageCount: 7,
  reactionInterpolation: "idpp",
  reactionNebMethod: "improvedTangent",
  reactionNebClimb: true,
  reactionFmaxEvPerAngstrom: 0.05,
});
await tako.output("output/reaction-path.json", result);

Result

Reaction-path output contains NEB/path/barrier/saddle data; it does not return the common charges, DOS/PDOS, density, NCI, WFN, or stress channels. Validation, engine failure, timeout, and cancellation reject the promise; cancelled bands are not restartable.

FieldTypeUnitAvailabilityDescription
kind”reaction_path”Every successful returnOperation identity.
level_of_theorystringEvery successful returnNormalized calculator level recorded by the operation.
engine”gfn2” | “mlip”Every successful returnCalculation backend.
neb.convergedbooleanAlways on successful returnFinal optimizer convergence; for interpolation-only, means seed generation completed.
neb.stepsintegerAlways on successful returnFinal optimizer-run steps; excludes a preceding staged pre-climb run.
neb.image_countintegerEvery successful returnNormalized total image count including endpoints.
neb.residual_hartree_per_bohrnumber | nullHartree Bohr^-1Optimized bandFinal backend NEB residual in atomic units.
neb.residual_ev_per_angstromnumber | nulleV A^-1Optimized bandFinal backend NEB residual.
neb.saddle_imageinteger | nullEvery successful return; null for interpolation-onlySelected highest-energy image index.
neb.settings.max_stepsintegerEvery successful returnNormalized final optimizer-run budget.
neb.settings.fmax_ev_per_angstromnumbereV A^-1Every successful returnRequested NEB residual threshold.
neb.settings.maxstep_angstromnumberAEvery successful returnMaximum image displacement per step.
neb.settings.optimizerstringEvery successful returnNormalized optimizer name.
neb.settings.methodstringEvery successful returnNormalized NEB formulation.
neb.settings.interpolationstringEvery successful returnNormalized interpolation name.
neb.settings.interpolate_onlybooleanEvery successful returnWhether only the seed was generated.
neb.settings.climbbooleanEvery successful returnWhether climbing image was requested.
neb.settings.spring_constantnumbereV A^-2Every successful returnSpring constant used by the band.
neb.settings.idpp_fmax_ev_per_angstromnumbereV A^-1Every successful returnIDPP threshold.
neb.settings.idpp_stepsintegerEvery successful returnIDPP step budget.
neb.settings.preclimb_stepsintegerOptimized bandOrdinary-band pre-climb budget.
neb.settings.dynamic_relaxationbooleanOptimized bandDynamic relaxation setting.
neb.settings.dynamic_fmax_ev_per_angstromnumbereV A^-1Optimized bandDynamic relaxation threshold.
neb.settings.dynamic_scale_fmaxnumberOptimized bandDynamic residual scaling factor.
neb.settings.optimizer_rtolnumberOptimized bandODE relative tolerance setting.
neb.settings.optimizer_c1numberOptimized bandODE c1 setting.
neb.settings.optimizer_c2numberOptimized bandODE c2 setting.
neb.settings.optimizer_hminnumberOptimized bandODE minimum step setting.
neb.settings.static_alphanumbereV^-1 A^2Optimized bandStatic optimizer step scale.
neb.result.convergedbooleanEvery successful returnBackend final-run convergence; true for completed interpolation-only.
neb.result.stepsintegerEvery successful returnBackend final-run step count; zero for interpolation-only.
neb.result.final_energy_hartreenumberHartreeOptimized bandFinal optimizer energy summary.
neb.result.final_energy_evnumbereVOptimized bandFinal optimizer energy summary.
neb.result.final_fmax_hartree_per_bohrnumberHartree Bohr^-1Optimized bandFinal optimizer residual.
neb.result.final_fmax_ev_per_angstromnumbereV A^-1Optimized bandFinal optimizer residual.
neb.result.tracearrayOptimized bandPer-step optimizer trace.
neb.result.trace[].stepintegerEvery optimizer trace entryFinal-run optimizer step.
neb.result.trace[].energy_hartreenumberHartreeEvery optimizer trace entryOptimizer energy summary.
neb.result.trace[].energy_evnumbereVEvery optimizer trace entryOptimizer energy summary.
neb.result.trace[].fmax_hartree_per_bohrnumberHartree Bohr^-1Every optimizer trace entryBackend residual.
neb.result.trace[].fmax_ev_per_angstromnumbereV A^-1Every optimizer trace entryBackend residual.
neb.result.trace[].maxstep_bohrnumberBohrEvery optimizer trace entryLargest step.
neb.result.trace[].maxstep_angstromnumberAEvery optimizer trace entryLargest step.
reaction_path.framesarrayEvery successful returnOrdered band images and associated data.
reaction_path.frames[].stepintegerEvery path frameImage index.
reaction_path.frames[].time_fsnullfsEvery path frameReserved time field; null for reaction paths.
reaction_path.frames[].energy_hartreenumberHartreeEvery path frame; zero for interpolation-onlyImage electronic energy.
reaction_path.frames[].energy_evnumbereVEvery path frame; zero for interpolation-onlyImage electronic energy.
reaction_path.frames[].kinetic_energy_evnulleVEvery path frameReserved field; null for reaction paths.
reaction_path.frames[].total_energy_evnulleVEvery path frameReserved field; null for reaction paths.
reaction_path.frames[].temperature_knullKEvery path frameReserved field; null for reaction paths.
reaction_path.frames[].fmax_hartree_per_bohrnumberHartree Bohr^-1Every path frameFrame-schema residual field; zero in stored path frames.
reaction_path.frames[].fmax_ev_per_angstromnumbereV A^-1Every path frameFrame-schema residual field; zero in stored path frames.
reaction_path.frames[].maxstep_bohrnumberBohrEvery path frameFrame-schema step field; zero in stored path frames.
reaction_path.frames[].maxstep_angstromnumberAEvery path frameFrame-schema step field; zero in stored path frames.
reaction_path.frames[].labelstringEvery path frameIS, FS, TS, or interior image label.
reaction_path.frames[].cellarray | nullAEvery path framePeriodic cell when present.
reaction_path.frames[].atomsstructureAEvery path frameAtomic symbols and Cartesian positions.
reaction_path.xyzstringEvery successful returnBand serialized as XYZ text inside the path object.
reaction_path_xyzstringEvery successful returnBand serialized as XYZ text.
reaction_barrier.energies_evnumber[]eVOptimized band onlyAbsolute energy of every image.
reaction_barrier.energies_hartreenumber[]HartreeOptimized band onlyAbsolute energy of every image.
reaction_barrier.relative_energies_evnumber[]eVOptimized band onlyImage energies relative to the first endpoint.
reaction_barrier.coordinatenumber[]Optimized band onlyNormalized image indices i/(N-1), not geometric arc length.
reaction_barrier.barrier_evnumbereVOptimized band onlyMaximum image energy minus first-endpoint energy.
reaction_barrier.reaction_energy_evnumbereVOptimized band onlyFinal-endpoint energy minus first-endpoint energy.
reaction_barrier.saddle_imageintegerOptimized band onlyHighest-energy image index used in the barrier summary.
reaction_barrier.dimer_energy_hartreenumber | nullHartreeAlways null for reactionPathReserved dimer-refined energy field used by combined transition-state workflows.
reaction_barrier.dimer_energy_evnumber | nulleVAlways null for reactionPathReserved dimer-refined energy field.
reaction_barrier.dimer_relative_energy_evnumber | nulleVAlways null for reactionPathReserved dimer-refined energy relative to the first endpoint.
saddle_atomsstructureOptimized band onlySelected highest-energy image for follow-up refinement.
vibration_checkobject | nullOptimized result; object when requested, otherwise null; absent for interpolation-onlyVibration result on the selected image; may exist for an unconverged band.