Step 2: Path Guessers¶
Path guessers take reactant complexes from Step 1 and generate transition state (TS) guess geometries.
Execution order¶
The methods are implemented, but they have a data dependency in the default workflow:
- Run RMSD-PP first to create initial TS guesses.
- Run RacerTS second to find lower-energy conformers from the initial RMSD-PP TS guesses.
Available methods¶
RMSD-PP¶
Uses the xTB RMSD-PP algorithm to interpolate a reaction path between reactant and product geometries, then extracts the highest-energy point as the TS guess.
Reference: xTB RMSD-PP documentation
RacerTS¶
Conformer sampling approach to find lower-energy conformers from the RMSD-PP TS guesses.
ML-FSM (Freezing String Method)¶
Double-ended TS search via the Freezing String Method (mlfsm). A string is grown and optimized between the reactant complex and its respective product on the same OMol25/FAIRChem MLIP ("eSEN", esen-sm-conserving-all-omol) used by the MLIP validator; the highest-energy node of the converged string is the TS guess.
python -m motsart.path_guessers.ml_fsm.ml_fsm_reaction_path_guesser env=test fsm_cfg=test env.rxn_num=0
The MLIP is configured through the env preset (mlip_model, mlip_task_name, mlip_device); FSM parameters (interpolation/optimization coordinates, node count, optimizer settings) are set via the fsm_cfg group (base / test / local, see FSMPathGuesserParams).
ASE CI-NEB¶
Climbing-image Nudged Elastic Band via ASE. A band is IDPP-interpolated between the reactant complex and its respective product and relaxed on the same OMol25/FAIRChem MLIP ("eSEN", esen-sm-conserving-all-omol) used by the MLIP validator; the highest-energy (climbing) image of the converged band is the TS guess.
The MLIP is configured through the env preset (mlip_model, mlip_task_name, mlip_device); NEB parameters (image count, interpolation, optimizer, force tolerance, spring constant) are set via the neb_cfg group (base / test / local, see NEBPathGuesserParams).
Learning / GoFlow¶
Neural network-based TS guessing using trained GoFlow models. See Learning.
Adding a new path guesser¶
To implement a new path-guessing algorithm to use desired methods such as NEB, FSM, etc.:
- Create a new module under
src/motsart/path_guessers/. - Inherit from
BaseReactionPathGuesser. - Implement
guess_reaction_path().
from motsart.path_guessers.base_reaction_path_guesser import BaseReactionPathGuesser
class MyPathGuesser(BaseReactionPathGuesser):
def guess_reaction_path(self):
# Your implementation here
...
Output¶
TS guesses are saved to:
results*/R{rxn_id}/ts/{method}/ts_to_validate/*.xyz
TSs in those ts_to_validate folders are saddle point optimized and IRC validated when the validator module is called.