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 --label and initial / minimized captions

  • relative 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)
../../_images/e436449ca3048988cc145dadd0304406afb09cc2e39e7a261faf29d73f8a21da.png

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