rgpycrumbs.eon.seed_dimers

Seed eOn dimer (min-mode) saddle searches from a converged NEB band.

Reads a converged NEB band (neb.con), locates every interior local maximum of the per-image energy profile, and writes one eOn job=saddle_search seed directory per peak. Each seed dir holds the peak geometry (pos.con), an initial unstable mode (direction.dat), a finite-difference displaced geometry (displacement.con), and a dimer config.ini.

The initial mode prefers a matching eOn peak{MM}_mode.dat (paired by RMSD of peak{MM}_pos.con against the peak frame) when peak_files_dir is given; otherwise it uses the normalized NEB tangent pos[i+1] - pos[i-1].

Added in version 1.8.0.

Changed in version 1.9.x: Seed config.ini is a minimal explicit section map written with eon_schema write_ini (validated L0 keys; no full L1 dump).

Attributes

Classes

PeakSeed

Summary of one seed directory created for a NEB peak.

Functions

_image_energies(→ numpy.ndarray)

Return per-image energies, falling back to a sibling neb.dat.

_neb_tangent(→ numpy.ndarray)

Normalized central-difference tangent pos[i+1] - pos[i-1].

_match_eon_mode(→ numpy.ndarray | None)

Return the eOn mode whose peak*_pos.con best matches peak_atoms.

_dimer_config_sections(→ dict[str, dict[str, object]])

Minimal eOn dimer saddle-search INI sections (explicit keys only).

find_neb_peaks(→ list[int])

Return interior local-maximum image indices (endpoints excluded).

seed_dimers_from_peaks(→ tuple[list[pathlib.Path], ...)

Write one eOn dimer saddle-search seed dir per interior NEB peak.

_write_dimer_config(→ None)

Write slim seed config.ini via eon-schema write_ini (+ L0 validate).

Module Contents

rgpycrumbs.eon.seed_dimers.log[source]
rgpycrumbs.eon.seed_dimers._RANDOM_SEED = 706253457[source]
rgpycrumbs.eon.seed_dimers._DISPLACE_MAGNITUDE = 0.01[source]
class rgpycrumbs.eon.seed_dimers.PeakSeed[source]

Summary of one seed directory created for a NEB peak.

Added in version 1.8.0.

peak_index: int[source]
image_index: int[source]
energy: float[source]
energy_vs_reactant: float[source]
seed_dir: pathlib.Path[source]
mode_source: str[source]
rgpycrumbs.eon.seed_dimers._image_energies(frames, neb_con: pathlib.Path) numpy.ndarray[source]

Return per-image energies, falling back to a sibling neb.dat.

rgpycrumbs.eon.seed_dimers._neb_tangent(frames, idx: int) numpy.ndarray[source]

Normalized central-difference tangent pos[i+1] - pos[i-1].

rgpycrumbs.eon.seed_dimers._match_eon_mode(peak_atoms, peak_files_dir: pathlib.Path, rmsd_tol: float) numpy.ndarray | None[source]

Return the eOn mode whose peak*_pos.con best matches peak_atoms.

Pairs by direct (non-aligned) RMSD of atom positions; eOn peak geometries share atom ordering and frame with the NEB band, so no reordering is needed.

rgpycrumbs.eon.seed_dimers._dimer_config_sections(settings_name: str, socket: str) dict[str, dict[str, object]][source]

Minimal eOn dimer saddle-search INI sections (explicit keys only).

Aligns improved-dimer with L2 DimerSpec (method=improved). Written via eon_schema.config.write_ini with L0 key validation on covered sections. Requires eon-schema>=0.2.

rgpycrumbs.eon.seed_dimers.find_neb_peaks(energies: numpy.ndarray, prominence: float) list[int][source]

Return interior local-maximum image indices (endpoints excluded).

Added in version 1.8.0.

rgpycrumbs.eon.seed_dimers.seed_dimers_from_peaks(neb_con, out_dir, settings_name: str, socket: str, peak_files_dir=None, prominence: float = 0.02, rmsd_tol: float = 0.1) tuple[list[pathlib.Path], list[PeakSeed]][source]

Write one eOn dimer saddle-search seed dir per interior NEB peak.

Parameters

neb_con:

Path to the converged NEB band (neb.con). Per-image energies are read from readcon.ConFrame energy; if absent a sibling neb.dat is used.

out_dir:

Parent directory; each peak gets out_dir/peak_<NN>/.

settings_name:

Name of the NWChem .nwi settings fragment referenced by config.ini.

socket:

Unix socket path/name for [SocketNWChemPot].

peak_files_dir:

Optional directory holding eOn peak{MM}_pos.con + peak{MM}_mode.dat pairs; the matching mode (by RMSD) seeds direction.dat when found.

prominence:

scipy.signal.find_peaks prominence threshold on the energy profile.

rmsd_tol:

Max RMSD (Angstrom) for an eOn peak geometry to count as a match.

Returns

seed_dirs, summary:

List of created seed directories and a list of PeakSeed.

Added in version 1.8.0.

rgpycrumbs.eon.seed_dimers._write_dimer_config(path: pathlib.Path, sections: dict[str, dict[str, object]]) None[source]

Write slim seed config.ini via eon-schema write_ini (+ L0 validate).