Reaction exploration

Generate transition states and reaction path

One of the key steps in reaction exploration is to enumerate reaction steps. MLatom supports generating transition states as well as reaction paths given reactants and products with the state-of-the-art diffusion model ECTS:

  • Xu M, Li B, Dong Z, Dral P, Zhu T, Chen H. ECTS: An ultra-fast diffusion model for exploring chemical reactions with equivariant consistency. ChemRxiv. 2025; doi:10.26434/chemrxiv-2025-f9vdp.

Prerequisites

  • MLatom 3.17.4 or later

  • EcTs 1.0 (Installation instructions can be found in https://github.com/AI4Reactions/ECTS. The required setting files in .json and models can also be there)

An example to generate TS

reactant = ml.data.molecule.from_xyz_file('./r.xyz')
product = ml.data.molecule.from_xyz_file('./p.xyz')

results = ml.simulations.gen_ts(
    reactant=reactant, product=product, program='ects',
    program_kwargs_json='./ts_kwargs.json',
    n_ts=8, avg_ts=True,
    working_directory='ects_ts'
)

generated_ts = results.ts
generated_avg_ts = results.avg_ts

The returned generated_ts contain a list of sampled transition states with the same length as n_ts. If avg_ts is set to True, you can obtain the averaged transition state generated_avg_ts based on the all the samples.

An example to generate reaction path

reactant = ml.data.molecule.from_xyz_file('./r.xyz')
product = ml.data.molecule.from_xyz_file('./p.xyz')

results = ml.simulations.gen_ts(
    reactant=reactant, product=product, program='ects',
    program_kwargs_json='./path_kwargs.json',
    path=True, n_path=8
    avg_ts=True,
    working_directory='ects_path')

reaction_path = results.path

The reaction_path contains a list of molecular database and each molecular database consists of one reaction path.