eOn Saddle Search Analysis¶
This tutorial shows how to parse saddle search results from eOn calculations.
Prerequisites¶
from pathlib import Path
from chemparseplot.parse.eon.saddle_search import parse_eon_saddle
from rgpycrumbs.basetypes import SpinID
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 2
1 from pathlib import Path
----> 2 from chemparseplot.parse.eon.saddle_search import parse_eon_saddle
3 from rgpycrumbs.basetypes import SpinID
File ~/work/chemparseplot/chemparseplot/chemparseplot/parse/eon/saddle_search.py:10
7 from pathlib import Path
9 import numpy as np
---> 10 from rgpycrumbs.basetypes import DimerOpt, MolGeom, SaddleMeasure, SpinID
11 from rgpycrumbs.parsers.bless import BLESS_LOG
12 from rgpycrumbs.parsers.common import _NUM
ModuleNotFoundError: No module named 'rgpycrumbs'
Parsing Saddle Search Results¶
eOn stores saddle search results in directories with results.dat and log files.
Example Usage¶
# Point to your eOn results directory
# results_dir = Path("/path/to/eon/results/")
# Create a SpinID for the location
# rloc = SpinID(mol_id="H2O", spin=0)
# Parse the saddle search results
# saddle_data = parse_eon_saddle(results_dir, rloc)
# Access results
# print(f"Success: {saddle_data.success}")
# print(f"Barrier: {saddle_data.barrier}")
# print(f"Method: {saddle_data.method}")
Accessing Saddle Search Data¶
# SaddleMeasure provides:
# - success: bool - whether the search converged
# - barrier: Q_ - energy barrier with units
# - saddle_energy: Q_ - saddle point energy
# - init_energy: Q_ - initial state energy
# - pes_calls: int - number of PES evaluations
# - iter_steps: int - optimization iterations
# - tot_time: float - wall time in seconds
# - method: DimerOpt - optimization method details
# - termination_status: str - reason for termination
Batch Processing¶
# Process multiple saddle searches
# from glob import glob
#
# results_dirs = glob("saddle_searches/*/")
# all_results = []
#
# for i, res_dir in enumerate(results_dirs):
# rloc = SpinID(mol_id=f"mol_{i}", spin=0)
# result = parse_eon_saddle(Path(res_dir), rloc)
# all_results.append(result)
#
# print(f"Processed {len(all_results)} saddle searches")
# print(f"Success rate: {sum(r.success for r in all_results) / len(all_results):.1%}")