eOn plot TOML config

Declarative plot configuration

plt-neb, plt-min, and plt-saddle share a TOML plot config via --config path.toml. Prefer this over long CLI flag lists for suite and CI runs.

Architecture

        flowchart TB
  subgraph cli["rgpycrumbs CLI"]
    FLAG["CLI flags\n(job-dir, plot-type, …)"]
    CFG["--config plot.toml"]
  end
  subgraph merge["plot_config.merge_plot_settings"]
    DEF[Built-in defaults]
    TOML["[shared] + [min]/[neb]"]
    OV[CLI overrides win]
  end
  subgraph cpp["chemparseplot"]
    SFC[SurfaceFitConfig]
    PLS[plot_landscape_surface]
  end
  FLAG --> OV
  CFG --> TOML
  DEF --> merge
  TOML --> merge
  OV --> merge
  merge -->|"auto_thin, max_surface_points"| SFC
  SFC --> PLS
  PLS --> GP[rgpycrumbs.surfaces GP]
    
Prefer TOML

Long option sets (surface fit, strips, theme) live in plot.toml.

Defaults stay safe

auto_thin = false unless you opt in for dense force-eval movies.

[shared]
auto_thin = true
max_surface_points = 64

[min]
job_dir = ["min_reactant"]
plot_type = "landscape"
surface_type = "grad_imq"
from rgpycrumbs.eon import plot_neb, plot_min

plot_neb(
    plot_type="landscape",
    con_file="neb.con",
    config="plot.toml",
    output_file="neb.pdf",
)
# Live objects / ConFrames:
# plot(neb, plot_type="profile", output_file="1d.pdf")
# plot(frames, kind="min", plot_type="landscape", output="min.pdf")

from chemparseplot.plot.neb import SurfaceFitConfig
cfg = SurfaceFitConfig(auto_thin=True, max_surface_points=64)

Merge order

  1. Built-in shared defaults

  2. Built-in per-command defaults (neb / min / saddle)

  3. File layers: top-level keys and [shared], then [neb] / [min] / [saddle]

  4. Explicit CLI flags (Click parameter source ≠ default) win last

Example

Package example: rgpycrumbs/eon/examples/plot_config.example.toml.

[shared]
energy_unit = "eV"
theme = "ruhi"
dpi = 200
figsize = [5.37, 5.37]
strip_renderer = "xyzrender"
xyzrender_config = "paton"
ira_kmax = 14.0
# Surface fit (chemparseplot; default off)
auto_thin = false
max_surface_points = 64

[neb]
con_file = "neb.con"
plot_type = "landscape"
output_file = "neb_landscape.pdf"
surface_type = "grad_imq"
plot_structures = "crit_points"

[min]
job_dir = ["min_reactant"]
plot_type = "landscape"
prefix = "minimization"
surface_type = "grad_imq"
plot_structures = "endpoints"
# Opt in for dense eOn write_movies clouds:
# auto_thin = true
output = "min_landscape.pdf"

[saddle]
job_dir = ["saddle_run"]
plot_type = "profile"
output = "saddle_profile.pdf"
rgpycrumbs eon plt-neb --config plot.toml
rgpycrumbs eon plt-min --config plot.toml

Surface-fit keys

Key

Default

Scope

Notes

auto_thin

false

shared or command

TOML-only; not a CLI flag

max_surface_points

64

shared or command

Used when auto_thin is true

surface_type

command-dependent

shared or command

Also available as --surface-type

When auto_thin is true, chemparseplot subsamples the GP training cloud (first/last + evenly spaced intermediates) while the path scatter and viewport still use the full trajectory. This avoids non-finite GradientIMQ grids on dense force-eval movies without silently changing default behaviour.

Requires chemparseplot>=1.9.10 (SurfaceFitConfig).

See Also