TS Optimization with Sella
SkillDev toolsOptimize non-periodic molecular TS guesses and verify first-order saddle point from vibrational modes.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the TS Optimization with Sella skill
What this skill tells your AI
The instructions your AI receives, as published by learningmatter-mit/atomisticskills in .agents/skills/chem-ts-optimization/SKILL.md and read by ahel’s review.
Optimize a transition-state guess and check whether it is a first-order saddle point.
Scope
- Domain: molecular chemistry only (non-periodic systems).
- Trigger: user has a TS guess and needs TS optimization plus frequency validation.
- Exclusions: periodic diffusion/path workflows (use
chem-neb-barrierinstead).
Tool
optimize_ts_sella.py
Runs Sella TS optimization followed by finite-difference vibrations.
Use with MACE
# Env: mace-agent
python .agents/skills/chem-ts-optimization/scripts/optimize_ts_sella.py \
--ts_guess ts_guess.xyz \
--model_type mace \
--model_name MACE-OFF23-small \
--fmax 0.02 \
--steps 500 \
--imag_cutoff_cm1 -50.0 \
--output_dir results/ts_opt
Use with FAIRChem (UMA)
# Env: fairchem-agent
python .agents/skills/chem-ts-optimization/scripts/optimize_ts_sella.py \
--ts_guess ts_guess.xyz \
--model_type fairchem \
--model_name uma-s-1p1 \
--task_name omol \
--fmax 0.02 \
--steps 500 \
--imag_cutoff_cm1 -50.0 \
--output_dir results/ts_opt
Arguments
--ts_guess: required TS guess geometry (XYZ supported by ASE I/O).--model_type: required backend (maceorfairchem).--model_name: optional model identifier/checkpoint.--task_name: optional model head/task (for UMA molecular runs useomol).--device:auto|cpu|cuda(defaultauto).--fmax: Sella convergence threshold in eV/A (default0.02).--steps: maximum TS optimization steps (default500).--vib_delta: finite-difference displacement in A (default0.01).--vib_nfree: finite-difference stencil size (2or4, default2).--imag_cutoff_cm1: imaginary mode cutoff in cm^-1 (default-50.0).--keep_vib_cache: optional flag to keep vibration cache files inoutput_dir/vib.--output_dir: required output directory.
Outputs
ts_optimized.xyz: optimized TS geometry.ts_opt.traj: TS optimization trajectory.ts_opt.log: optimizer log.ts_optimization_results.json: run summary and pass/fail decision.vib/cache files only when--keep_vib_cacheis set.
ts_optimization_results.json fields include:
- run/model metadata
- convergence (
sella_converged,optimization_steps,max_force_eV_per_A) - vibrational data (
all_frequencies_cm1,imaginary_modes) - classification (
n_imag_below_cutoff,is_first_order_saddle)
TS Pass Criterion
A structure is accepted as first-order saddle only if:
- exactly one frequency satisfies
frequency < imag_cutoff_cm1
Default criterion: exactly one mode below -50 cm^-1.
Model Guidance
- Recommended for molecules:
MACE-OFF23-small/MACE-OFF23-mediumuma-s-1p1with--task_name omol
- Use the same backend/model/head across reactant/product/TS optimization and TS validation.
Prerequisites And Constraints
- Activate
mace-agentorfairchem-agentdepending on backend. - Script enforces
pbc=False(non-periodic only). - TS guess quality matters; poor guesses can converge to minima or higher-order saddles.
Examples
See examples/ directory for sample inputs and outputs.
Author: Juno Nam Contact: GitHub @recisic
Signals
- GitHub stars
- 164
- Forks
- 24
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
chem-ts-optimization- Source
- github.com/learningmatter-mit/atomisticskills