Double-ended transition-state (TS) search methods generate guess TS structures based on input reactant and product structures.
Double-ended TS searches start from reactants and products to generate a guess for the transition state connecting these structures. Rowan's platform supports a variety of methods for this, including the freezing-string method (FSM), the growing-string method (GSM), and the nudged elastic band (NEB) method.
FSM and GSM both start from reactant and product geometries and grow strings of geometries that expand towards the opposite string end while attempting to stay within the reaction channel—FSM "freezes" each node once placed, while GSM continues to relax every node as the string grows, trading some speed for added flexibility. NEB instead starts from a full interpolated path between reactant and product and iteratively relaxes every image along that path simultaneously, subject to spring forces that keep the images evenly spaced.
Once the path is complete, the highest-energy point along it is chosen as a guess for the TS and optimized. Learn more about double-ended string methods in our Guessing Transition States blog.

Figure 1: Double-ended FSM with linear synchronous transit interpolation. A step (dotted blue line) is taken along the linear interpolation towards the other end, and then optimized normal to the step (black arrow). This process is repeated until the ends meet.
Rowan's double-ended TS search workflow takes input reactant and product geometries and runs your chosen method to generate a guess for the transition state. The workflow can optionally optimize the reactant and product structures before running the double-ended TS search, as well as optimize the guessed transition state after the search is complete.
The results are streamed to Rowan's web interface in real time, enabling easy monitoring, analysis, and resubmission from double-ended TS searches as they run. Rowan's web interface also allows for visualization of how coordinates change across the course of the double-ended TS search: simply select a geometric coordinate in the molecule viewer and Rowan will automatically plot how this variable evolves on the double-ended TS search graph.
Rowan's double-ended TS search workflow can be run with any method that supports gradients, including DFT, semiempirical, and NNPs:
Double-ended TS searches can also be run via the API, enabling high-throughput and simple integration into existing workflows. The example below uses FSM; set freeze=False on StringMethodSettings to run GSM instead, or pass rowan.NEBSettings() as search_settings to run NEB.
import rowan
folder = rowan.get_folder("examples")
HCN = rowan.Molecule.from_xyz(
"""\
H 0 0 -1.1
C 0 0 0
N 0 0 1.2""",
)
CNH = rowan.Molecule.from_xyz(
"""\
H 0 0 2.3
C 0 0 0
N 0 0 1.2""",
)
# Freezing string method (FSM)
search_settings = rowan.StringMethodSettings(
freeze=True,
interpolation_method=rowan.Interpolation.GEODESIC,
)
# Use `freeze=False` for the growing string method (GSM)
# Use rowan.NEBSettings for nudged elastic band (NEB)
workflow = rowan.submit_double_ended_ts_search_workflow(
reactant=HCN,
product=CNH,
calculation_settings=rowan.Settings(method=rowan.Method.GFN2_XTB),
search_settings=search_settings,
optimize_inputs=True,
optimize_ts=True,
name="H-C≡N Isomerization",
folder=folder,
)
print(
f"View workflow privately at: https://labs.rowansci.com/double-ended-ts-search/{workflow.uuid}"
)
result = workflow.result()
print([p.distance for p in result.forward_path])
print([p.distance for p in result.backward_path])
print(result)
# e.g. <DoubleEndedTSSearchResult ts_uuid='abc123...' fwd=5 bwd=5>
For more examples, see our example scripts on GitHub.