Visualizing optimization trajectories

eOn can embed structured per-iteration metadata directly into trajectory movie frames when write_movies = true is set in the [Debug] section of config.ini. These metadata-rich .con movies enable rich 2D reaction-valley projections and convergence plots via rgpycrumbs and chemparseplot.

For one compatibility window, write_deprecated_outs = true can also be used to emit the older minimization and saddle-search .dat sidecars. NEB continues to write its existing neb.dat / neb_*.dat outputs alongside the .con movies.

Tip

Prefer the built-in potential systems under Real systems for documentation (Morse Pt NEB, LJ minimization) when you want CI-stable examples without downloading a metatomic model. This page keeps the PET-MAD vinyl alcohol case as the metatomic consumer walkthrough.

This tutorial walks through two complete workflows with PET-MAD:

  • a single-ended minimization of a perturbed vinyl alcohol structure

  • an OCI-NEB calculation for vinyl alcohol -> acetaldehyde

For each workflow we run eonclient, then visualize the result through the public rgpycrumbs dispatcher so the tutorial matches current command-line usage.

Plotting conventions used here (and in Real systems for documentation):

Job

CLI

Notes

NEB profile

plt-neb --plot-type profile --highlight-last --plot-structures all

Gold SP star on the final band; full structure strip

NEB landscape

plt-neb --plot-type landscape --project-path --landscape-path all

True 1:1 Å (s, d) panel; two-row strip when many images

Min profile / conv

plt-min --plot-type profile|convergence

Overlay multiple --job-dir / --label pairs

Min landscape

plt-min --plot-type landscape --label reactant

One landscape per endpoint; title + initial/minimized labels

Setup

Minimization

We start by minimizing a slightly distorted vinyl alcohol molecule. rgpycrumbs eon plt-min reads those single-ended optimization outputs.

Energy profile

min_profile = plot_dir / "min_profile.png"
run_rgpycrumbs(
    "eon", "plt-min",
    "--job-dir", str(min_dir),
    "--label", "vinyl alcohol",
    "--prefix", "minimization",
    "--plot-type", "profile",
    "--dpi", "150",
    "--output", str(min_profile),
)
show_plot(min_profile)
$ /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 -m rgpycrumbs.cli eon plt-min --job-dir /tmp/eon_tutorial_7965z29u/minimization --label vinyl alcohol --prefix minimization --plot-type profile --dpi 150 --output /tmp/eon_tutorial_7965z29u/plots/min_profile.png
--> Dispatching to: /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/rgpycrumbs/eon/plt_min.py --job-dir /tmp/eon_tutorial_7965z29u/minimization --label vinyl alcohol --prefix minimization --plot-type profile --dpi 150 --output /tmp/eon_tutorial_7965z29u/plots/min_profile.png
[10/23/26 15:04:29] INFO     INFO - Loading minimization trajectory from        
                             /tmp/eon_tutorial_7965z29u/minimization            
                    INFO     INFO - Using minimization metrics from frame       
                             metadata (17 rows)                                 
                    INFO     INFO - Loaded 17 frames, 17 data rows              
                    INFO     INFO - Loaded minimization trajectory from         
                             /tmp/eon_tutorial_7965z29u/minimization (17 frames)
                    INFO     INFO - Setting global rcParams for ruhi theme      
                    WARNING  WARNING - Font 'Atkinson Hyperlegible' not found.  
                             Falling back to 'sans-serif'.                      
                    INFO     INFO - Saved                                       
                             /tmp/eon_tutorial_7965z29u/plots/min_profile.png   
--> Using active interpreter (readcon/plot stack present or --dev)
../_images/b0f1886f7f4c9f518d73a5b6b16dcae98dbc2dc8499cdf6c153dbca26aaea717.png

2D optimization landscape

One landscape for this job only. Each trajectory defines its own RMSD basis on a (s, d) frame. The title and strip use the --label.

min_landscape = plot_dir / "min_landscape.png"
run_rgpycrumbs(
    "eon", "plt-min",
    "--job-dir", str(min_dir),
    "--label", "vinyl alcohol",
    "--prefix", "minimization",
    "--plot-type", "landscape",
    "--project-path",
    "--surface-type", "grad_imq",
    "--plot-structures", "endpoints",
    "--strip-renderer", "xyzrender",
    "--strip-dividers",
    "--xyzrender-config", "paton",
    "--rotation", "90x,0y,0z",
    "--dpi", "150",
    "--output", str(min_landscape),
)
show_plot(min_landscape)
$ /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 -m rgpycrumbs.cli eon plt-min --job-dir /tmp/eon_tutorial_7965z29u/minimization --label vinyl alcohol --prefix minimization --plot-type landscape --project-path --surface-type grad_imq --plot-structures endpoints --strip-renderer xyzrender --strip-dividers --xyzrender-config paton --rotation 90x,0y,0z --dpi 150 --output /tmp/eon_tutorial_7965z29u/plots/min_landscape.png
--> Dispatching to: /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/rgpycrumbs/eon/plt_min.py --job-dir /tmp/eon_tutorial_7965z29u/minimization --label vinyl alcohol --prefix minimization --plot-type landscape --project-path --surface-type grad_imq --plot-structures endpoints --strip-renderer xyzrender --strip-dividers --xyzrender-config paton --rotation 90x,0y,0z --dpi 150 --output /tmp/eon_tutorial_7965z29u/plots/min_landscape.png
[10/23/26 15:04:31] INFO     INFO - Loading minimization trajectory from        
                             /tmp/eon_tutorial_7965z29u/minimization            
                    INFO     INFO - Using minimization metrics from frame       
                             metadata (17 rows)                                 
                    INFO     INFO - Loaded 17 frames, 17 data rows              
                    INFO     INFO - Loaded minimization trajectory from         
                             /tmp/eon_tutorial_7965z29u/minimization (17 frames)
                    INFO     INFO - Setting global rcParams for ruhi theme      
                    WARNING  WARNING - Font 'Atkinson Hyperlegible' not found.  
                             Falling back to 'sans-serif'.                      
                    INFO     INFO - Calculating landscape coordinates (RMSD-A,  
                             RMSD-B)...                                         
                    INFO     INFO - Generating 2D surface using grad_imq        
                             (Projected: True)...                               
                    INFO     INFO - Unable to initialize backend 'tpu':         
                             INTERNAL: Failed to open libtpu.so: libtpu.so:     
                             cannot open shared object file: No such file or    
                             directory                                          
                    INFO     INFO - Unable to initialize backend 'proxy': The   
                             'proxy' backend requires the address of an IFRT    
                             Proxy server. Set it via the JAX_BACKEND_TARGET    
                             environment variable or the jax_backend_target     
                             config option, e.g.                                
                             JAX_BACKEND_TARGET=grpc://localhost:29000.         
[10/23/26 15:04:38] INFO     INFO - Loading /tmp/tmpxv98fnvg.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpybnrdhek.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Saved                                       
                             /tmp/eon_tutorial_7965z29u/plots/min_landscape.png 
--> Using active interpreter (readcon/plot stack present or --dev)
../_images/43eeb6758531f219475a4ab180c1df224bb39bcd352d96901b78837897599b7b.png

Convergence panel

min_convergence = plot_dir / "min_convergence.png"
run_rgpycrumbs(
    "eon", "plt-min",
    "--job-dir", str(min_dir),
    "--label", "vinyl alcohol",
    "--prefix", "minimization",
    "--plot-type", "convergence",
    "--dpi", "150",
    "--output", str(min_convergence),
)
show_plot(min_convergence)
$ /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 -m rgpycrumbs.cli eon plt-min --job-dir /tmp/eon_tutorial_7965z29u/minimization --label vinyl alcohol --prefix minimization --plot-type convergence --dpi 150 --output /tmp/eon_tutorial_7965z29u/plots/min_convergence.png
--> Dispatching to: /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/rgpycrumbs/eon/plt_min.py --job-dir /tmp/eon_tutorial_7965z29u/minimization --label vinyl alcohol --prefix minimization --plot-type convergence --dpi 150 --output /tmp/eon_tutorial_7965z29u/plots/min_convergence.png
[10/23/26 15:04:40] INFO     INFO - Loading minimization trajectory from        
                             /tmp/eon_tutorial_7965z29u/minimization            
                    INFO     INFO - Using minimization metrics from frame       
                             metadata (17 rows)                                 
                    INFO     INFO - Loaded 17 frames, 17 data rows              
                    INFO     INFO - Loaded minimization trajectory from         
                             /tmp/eon_tutorial_7965z29u/minimization (17 frames)
                    INFO     INFO - Setting global rcParams for ruhi theme      
                    WARNING  WARNING - Font 'Atkinson Hyperlegible' not found.  
                             Falling back to 'sans-serif'.                      
[10/23/26 15:04:41] INFO     INFO - Saved                                       
                             /tmp/eon_tutorial_7965z29u/plots/min_convergence.pn
                             g                                                  
--> Using active interpreter (readcon/plot stack present or --dev)
../_images/24a60a3ef1f52edd28df04cbf59b7e42c7389007012fa3146dafaf542ccfb23a.png

Nudged elastic band

We run an OCI-NEB calculation on the vinyl alcohol -> acetaldehyde keto-enol tautomerization using PET-MAD.

Energy profile

neb_profile = plot_dir / "neb_profile.png"
run_rgpycrumbs(
    "eon", "plt-neb",
    "--input-dat-pattern", str(neb_dir / "neb_*.dat"),
    "--con-file", str(neb_dir / "neb.con"),
    "--ira-kmax", "14",
    "--force-recompute",
    "--plot-type", "profile",
    "--highlight-last",
    "--show-pts",
    # Full band strip (use crit_points for a lighter R/SP/P-only strip).
    "--plot-structures", "all",
    "--strip-renderer", "xyzrender",
    "--strip-dividers",
    "--xyzrender-config", "paton",
    "--rotation", "90x,0y,0z",
    "--show-legend",
    "--title", "Vinyl alcohol NEB path optimization",
    "--dpi", "150",
    "--output-file", str(neb_profile),
)
show_plot(neb_profile)
$ /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 -m rgpycrumbs.cli eon plt-neb --input-dat-pattern /tmp/eon_tutorial_7965z29u/neb/neb_*.dat --con-file /tmp/eon_tutorial_7965z29u/neb/neb.con --ira-kmax 14 --force-recompute --plot-type profile --highlight-last --show-pts --plot-structures all --strip-renderer xyzrender --strip-dividers --xyzrender-config paton --rotation 90x,0y,0z --show-legend --title Vinyl alcohol NEB path optimization --dpi 150 --output-file /tmp/eon_tutorial_7965z29u/plots/neb_profile.png
--> Dispatching to: /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/rgpycrumbs/eon/plt_neb.py --input-dat-pattern /tmp/eon_tutorial_7965z29u/neb/neb_*.dat --con-file /tmp/eon_tutorial_7965z29u/neb/neb.con --ira-kmax 14 --force-recompute --plot-type profile --highlight-last --show-pts --plot-structures all --strip-renderer xyzrender --strip-dividers --xyzrender-config paton --rotation 90x,0y,0z --show-legend --title Vinyl alcohol NEB path optimization --dpi 150 --output-file /tmp/eon_tutorial_7965z29u/plots/neb_profile.png
[10/23/26 15:07:17] INFO     INFO - Setting global rcParams for ruhi theme      
                    WARNING  WARNING - Font 'Atkinson Hyperlegible' not found.  
                             Falling back to 'sans-serif'.                      
                    INFO     INFO - Reading structures from                     
                             /tmp/eon_tutorial_7965z29u/neb/neb.con             
[10/23/26 15:07:18] INFO     INFO - Loaded 19 structures.                       
                    INFO     INFO - Searching for files with pattern:           
                             '/tmp/eon_tutorial_7965z29u/neb/neb_*.dat'         
                    INFO     INFO - Found 160 file(s).                          
                    INFO     INFO - Loading /tmp/tmppy0pug_g.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpg61nrd72.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpsi9mt9hs.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
[10/23/26 15:07:19] INFO     INFO - Loading /tmp/tmpl8e51fo2.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpf3iysgsj.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmp022el37l.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmptkpc8hkp.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give -1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 8 bonds               
                    INFO     INFO - Loading /tmp/tmpisqymi5r.xyz                
                    INFO     INFO - Built graph: 8 atoms, 8 bonds               
                    INFO     INFO - Loading /tmp/tmpq03s2wby.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpp6smyd8o.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
[10/23/26 15:07:20] INFO     INFO - Loading /tmp/tmpuvn4hq5d.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmp7s4i_f59.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmp_0rrq5yv.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmp15v19l6_.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmprhgms_zz.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmph3554k2i.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
[10/23/26 15:07:21] INFO     INFO - Loading /tmp/tmpej6xhq2v.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmp8y31_01v.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give -1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 8 bonds               
                    INFO     INFO - Loading /tmp/tmps3k7w8fo.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Profile content layout: main=3.55 in,       
                             strip=1.95 in, figsize=(6.40, 6.91)                
--> Using active interpreter (readcon/plot stack present or --dev)
../_images/e740aeee192e68b0dc6dff023c7b0489b5a60d347dcb32f508f139a66991adfb.png

2D reaction landscape

neb_landscape = plot_dir / "neb_landscape.png"
run_rgpycrumbs(
    "eon", "plt-neb",
    "--input-dat-pattern", str(neb_dir / "neb_*.dat"),
    "--input-path-pattern", str(neb_dir / "neb_path_*.con"),
    "--con-file", str(neb_dir / "neb.con"),
    "--ira-kmax", "14",
    "--force-recompute",
    "--plot-type", "landscape",
    "--rc-mode", "path",
    "--landscape-mode", "surface",
    "--surface-type", "grad_imq",
    "--show-pts",
    "--highlight-last",
    # Full history for the GP surface; 1:1 Å (s, d) panel via --project-path.
    "--landscape-path", "all",
    "--project-path",
    "--plot-structures", "all",
    "--strip-renderer", "xyzrender",
    "--strip-dividers",
    "--xyzrender-config", "paton",
    "--rotation", "90x,0y,0z",
    "--show-legend",
    "--title", "Vinyl alcohol NEB-RMSD surface",
    "--dpi", "150",
    "--output-file", str(neb_landscape),
)
show_plot(neb_landscape)
$ /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 -m rgpycrumbs.cli eon plt-neb --input-dat-pattern /tmp/eon_tutorial_7965z29u/neb/neb_*.dat --input-path-pattern /tmp/eon_tutorial_7965z29u/neb/neb_path_*.con --con-file /tmp/eon_tutorial_7965z29u/neb/neb.con --ira-kmax 14 --force-recompute --plot-type landscape --rc-mode path --landscape-mode surface --surface-type grad_imq --show-pts --highlight-last --landscape-path all --project-path --plot-structures all --strip-renderer xyzrender --strip-dividers --xyzrender-config paton --rotation 90x,0y,0z --show-legend --title Vinyl alcohol NEB-RMSD surface --dpi 150 --output-file /tmp/eon_tutorial_7965z29u/plots/neb_landscape.png
--> Dispatching to: /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/rgpycrumbs/eon/plt_neb.py --input-dat-pattern /tmp/eon_tutorial_7965z29u/neb/neb_*.dat --input-path-pattern /tmp/eon_tutorial_7965z29u/neb/neb_path_*.con --con-file /tmp/eon_tutorial_7965z29u/neb/neb.con --ira-kmax 14 --force-recompute --plot-type landscape --rc-mode path --landscape-mode surface --surface-type grad_imq --show-pts --highlight-last --landscape-path all --project-path --plot-structures all --strip-renderer xyzrender --strip-dividers --xyzrender-config paton --rotation 90x,0y,0z --show-legend --title Vinyl alcohol NEB-RMSD surface --dpi 150 --output-file /tmp/eon_tutorial_7965z29u/plots/neb_landscape.png
[10/23/26 15:07:23] INFO     INFO - Setting global rcParams for ruhi theme      
                    WARNING  WARNING - Font 'Atkinson Hyperlegible' not found.  
                             Falling back to 'sans-serif'.                      
[10/23/26 15:07:24] INFO     INFO - Reading structures from                     
                             /tmp/eon_tutorial_7965z29u/neb/neb.con             
                    INFO     INFO - Loaded 19 structures.                       
                    INFO     INFO - Searching for files with pattern:           
                             '/tmp/eon_tutorial_7965z29u/neb/neb_*.dat'         
                    INFO     INFO - Found 160 file(s).                          
                    INFO     INFO - Searching for files with pattern:           
                             '/tmp/eon_tutorial_7965z29u/neb/neb_path_*.con'    
                    INFO     INFO - Found 160 file(s).                          
                    INFO     INFO - Computing Landscape data...                 
[10/23/26 15:07:27] INFO     INFO - Saving Landscape cache to                   
                             .neb_landscape.parquet...                          
                    INFO     INFO - Calculated heuristic RBF smoothing: 0.1498  
                    INFO     INFO - Generating 2D surface using grad_imq        
                             (Projected: True)...                               
                    WARNING  WARNING - More than 1000 points, switching to      
                             Nystrom                                            
                    INFO     INFO - Unable to initialize backend 'tpu':         
                             INTERNAL: Failed to open libtpu.so: libtpu.so:     
                             cannot open shared object file: No such file or    
                             directory                                          
                    INFO     INFO - Unable to initialize backend 'proxy': The   
                             'proxy' backend requires the address of an IFRT    
                             Proxy server. Set it via the JAX_BACKEND_TARGET    
                             environment variable or the jax_backend_target     
                             config option, e.g.                                
                             JAX_BACKEND_TARGET=grpc://localhost:29000.         
[10/23/26 15:07:29] WARNING  WARNING - Looks like you are using a tranform that 
                             doesn't support FancyArrowPatch, using ax.annotate 
                             instead. The arrows might strike through texts.    
                             Increasing shrinkA in arrowprops might help.       
[10/23/26 15:07:30] INFO     INFO - Loading /tmp/tmp1k36tobw.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmp8ssijakf.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpprzwwpsm.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpkbbzjr8k.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give -1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 8 bonds               
                    INFO     INFO - Loading /tmp/tmprgy421xn.xyz                
                    INFO     INFO - Built graph: 8 atoms, 8 bonds               
                    INFO     INFO - Loading /tmp/tmp_itxd7q9.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpshso6tqy.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
[10/23/26 15:07:31] INFO     INFO - Loading /tmp/tmpgl2qbbs0.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpuuj6nyaa.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpy8ly499l.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpge3nw73v.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpne6ly3jd.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpq97s9rgk.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
[10/23/26 15:07:32] INFO     INFO - Loading /tmp/tmpz8wyp8h6.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpr9tzj8vm.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpwqvw05e_.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmpjxfuw6b9.xyz                
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Loading /tmp/tmp8kexgmii.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give -1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 8 bonds               
[10/23/26 15:07:33] INFO     INFO - Loading /tmp/tmpihjkr_bk.xyz                
                    WARNING  WARNING - Stated charge +0, but the bond orders    
                             give +1; formal charges follow the structure       
                    INFO     INFO - Built graph: 8 atoms, 7 bonds               
                    INFO     INFO - Set 1:1 (s,d) square panel: Δs=Δd=1.809 Å   
                             (s=[-0.396, 1.413], d=[-0.905, 0.905]);            
                             strip_rows=4; figsize=(8.35, 10.48) in             
--> Using active interpreter (readcon/plot stack present or --dev)
../_images/97790e812b43c9d196c6028fb581a42f6b328526e4b2c3340816280837bb472a.png

See also

For producing your own NEB trajectories beyond this tutorial:

  • Real systems for documentation — built-in Morse Pt NEB, LJ minimization, and Pt saddle systems (recommended for docs / CI)

  • The eon-pet-neb example in the lab-cosmo/atomistic-cookbook: a PET-MAD NEB example that uses ASE for path setup. This is the canonical metatomic-consumer integration test for eOn.

  • HaoZeke/eon_orchestrator: Snakemake-orchestrated workflow for batches of NEB calculations with PET-MAD, including IRA pre-alignment, endpoint minimization, energy profiles, and 2D RMSD landscapes. The vinyl alcohol config used in this tutorial is taken from examples/vinyl_alcohol/.

Further reading