LJ cluster minimization (built-in potential)¶
Minimize a small Lennard-Jones cluster (ljcluster) from
benchmarks/data/min_lj_cluster/. Movies are required for the modern plot
stack.
Plotting conventions:
energy profile and convergence from the minimization trajectory
a single 2D landscape for this job (one endpoint → one RMSD frame), with title from
--labeland initial / minimized captionsrelative energy on the landscape colorbar for readable ticks
Setup and run¶
Energy profile¶
out = plot_dir / "min_1d.png"
run_rgpycrumbs(
"eon",
"plt-min",
"--job-dir",
str(work),
"--label",
"lj cluster",
"--plot-type",
"profile",
"--dpi",
"150",
"-o",
str(out),
)
show_plot(out)
$ /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 -m rgpycrumbs.cli eon plt-min --job-dir /tmp/eon_lj_min_ayweir9q --label lj cluster --plot-type profile --dpi 150 -o /tmp/eon_lj_min_ayweir9q/plots/min_1d.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_lj_min_ayweir9q --label lj cluster --plot-type profile --dpi 150 -o /tmp/eon_lj_min_ayweir9q/plots/min_1d.png
[08/25/26 09:57:06] INFO INFO - Loading minimization trajectory from
/tmp/eon_lj_min_ayweir9q
INFO INFO - Using minimization metrics from frame
metadata (1 rows)
INFO INFO - Loaded 1 frames, 1 data rows
INFO INFO - Loaded minimization trajectory from
/tmp/eon_lj_min_ayweir9q (1 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_lj_min_ayweir9q/plots/min_1d.png
--> Using active interpreter (readcon/plot stack present or --dev)
2D optimization landscape¶
One landscape for this trajectory only. The title becomes Lj cluster minimization; endpoints are labeled initial / minimized.
out = plot_dir / "min_2d.png"
run_rgpycrumbs(
"eon",
"plt-min",
"--job-dir",
str(work),
"--label",
"lj cluster",
"--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",
"-o",
str(out),
)
show_plot(out)
$ /home/runner/work/eOn/eOn/.pixi/envs/docs-mta/bin/python3.12 -m rgpycrumbs.cli eon plt-min --job-dir /tmp/eon_lj_min_ayweir9q --label lj cluster --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 -o /tmp/eon_lj_min_ayweir9q/plots/min_2d.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_lj_min_ayweir9q --label lj cluster --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 -o /tmp/eon_lj_min_ayweir9q/plots/min_2d.png
[08/25/26 09:57:08] INFO INFO - Loading minimization trajectory from
/tmp/eon_lj_min_ayweir9q
INFO INFO - Using minimization metrics from frame
metadata (1 rows)
INFO INFO - Loaded 1 frames, 1 data rows
INFO INFO - Loaded minimization trajectory from
/tmp/eon_lj_min_ayweir9q (1 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)...
--> Using active interpreter (readcon/plot stack present or --dev)
Traceback (most recent call last):
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/rgpycrumbs/eon/plt_min.py", line 402, in <module>
main()
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/click/core.py", line 1485, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/click/core.py", line 1406, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/click/core.py", line 1269, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/click/core.py", line 824, in invoke
return callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/click/decorators.py", line 34, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/rgpycrumbs/eon/plt_min.py", line 293, in main
return run_from_click("min", plot_min_from_settings, ctx, config=config, **params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/rgpycrumbs/eon/plot_config.py", line 346, in run_from_click
return runner(resolve_from_click(command, ctx, config=config, **params))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/rgpycrumbs/eon/plt_min.py", line 153, in plot_min_from_settings
_plot_landscape(
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/rgpycrumbs/eon/plt_min.py", line 353, in _plot_landscape
render_single_ended_landscape(
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/chemparseplot/plot/optimization.py", line 421, in render_single_ended_landscape
f_para = -np.gradient(energies_plot)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/eOn/eOn/.pixi/envs/docs-mta/lib/python3.12/site-packages/numpy/lib/_function_base_impl.py", line 1297, in gradient
raise ValueError(
ValueError: Shape of array too small to calculate a numerical gradient, at least (edge_order + 1) elements are required.
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
Cell In[3], line 2
1 out = plot_dir / "min_2d.png"
----> 2 run_rgpycrumbs(
3 "eon",
4 "plt-min",
5 "--job-dir",
6 str(work),
7 "--label",
8 "lj cluster",
9 "--plot-type",
10 "landscape",
11 "--project-path",
12 "--surface-type",
13 "grad_imq",
14 "--plot-structures",
15 "endpoints",
16 "--strip-renderer",
17 "xyzrender",
18 "--strip-dividers",
19 "--xyzrender-config",
20 "paton",
21 "--rotation",
22 "90x,0y,0z",
23 "--dpi",
24 "150",
25 "-o",
26 str(out),
27 )
28 show_plot(out)
Cell In[1], line 60, in run_rgpycrumbs(cwd, timeout, *args)
58 print(r.stderr, file=sys.stderr)
59 if r.returncode != 0:
---> 60 raise RuntimeError(f"rgpycrumbs failed ({r.returncode})")
61 return r
RuntimeError: rgpycrumbs failed (1)
Convergence¶
out = plot_dir / "min_conv.png"
run_rgpycrumbs(
"eon",
"plt-min",
"--job-dir",
str(work),
"--label",
"lj cluster",
"--plot-type",
"convergence",
"--dpi",
"150",
"-o",
str(out),
)
show_plot(out)
Multiple endpoints (reactant and product)¶
When both ends of a path are minimized, plot two landscapes (one job dir each). Overlay only the 1D profile / convergence panels:
# separate 2D frames
python -m rgpycrumbs.cli eon plt-min --job-dir min_reactant --label reactant \
--plot-type landscape --project-path --plot-structures endpoints -o min_2D_reactant.png
python -m rgpycrumbs.cli eon plt-min --job-dir min_product --label product \
--plot-type landscape --project-path --plot-structures endpoints -o min_2D_product.png
# shared 1D overlays
python -m rgpycrumbs.cli eon plt-min \
--job-dir min_reactant --label reactant \
--job-dir min_product --label product \
--plot-type profile -o min_1D.png
See also¶
Morse Pt NEB (built-in potential): built-in NEB +
plt-nebVisualizing optimization trajectories: PET-MAD vinyl alcohol visualization