Reaction#

class autode.reactions.reaction.Reaction(*args: str | Species, name: str = 'reaction', solvent_name: str | None = None, smiles: str | None = None, temp: ~autode.values.Temperature = Temperature(298.15 kelvin))#
__init__(*args: str | Species, name: str = 'reaction', solvent_name: str | None = None, smiles: str | None = None, temp: ~autode.values.Temperature = Temperature(298.15 kelvin))#

Elementary chemical reaction formed from reactants and products. Number of atoms, charge and solvent must match on either side of the reaction. For example:

                H                             H    H
               /                               \  /
H   +    H -- C -- H     --->     H--H   +      C
              \                                 |
               H                                H
Parameters:

args – Reactant and Product objects or a SMILES string of the whole reaction.

property atomic_symbols: List[str]#

Atomic symbols of all atoms in this reaction sorted alphabetically. For example:

>>> from autode import Atom, Reactant, Product, Reaction
>>>rxn = Reaction(Reactant(smiles='O'),
                  Product(atoms=[Atom('O'), Atom('H', x=0.9)]),
                  Product(atoms=[Atom('H')]))
>>> rxn.atomic_symbols
['H', 'H', 'O']
calculate_complexes() None#

Find the lowest energy conformers of reactant and product complexes using optimisation and single points

calculate_reaction_profile(units: Unit | str = 'kcal mol-1', with_complexes: bool = False, free_energy: bool = False, enthalpy: bool = False) None#

Calculate and plot a reaction profile for this elemtary reaction. Will search conformers, find the lowest energy TS and plot a profile. Calculations are performed in a new directory (self.name/)

Keyword Arguments:
  • with_complexes (bool) – Calculate the lowest energy conformers of the reactant and product complexes

  • free_energy (bool) – Calculate the free energy profile (G)

  • enthalpy (bool) – Calculate the enthalpic profile (H)

calculate_single_points() None#

Perform a single point energy evaluations on all the reactants and products using the hmethod

calculate_thermochemical_cont(free_energy: bool = True, enthalpy: bool = True) None#

Calculate thermochemical contributions to the energies

enthalpy (bool):

delta(delta_type: str) Energy | None#

Energy difference for either reactants->TS or reactants -> products. Allows for equivelances “E‡” == “E ddagger” == “E double dagger” all return the potential energy barrier ∆E^‡. Can return None if energies of the reactants/products are None but will estimate for a TS (provided reactants and product energies are present). Example:

>>> import autode as ade
>>> rxn = ade.Reaction(ade.Reactant(), ade.Product())
>>> rxn.delta('E') is None
True

For reactants and products with energies:

>>> A = ade.Reactant()
>>> A.energy = 1
>>> B = ade.Product()
>>> B.energy = 2
>>>
>>> rxn = ade.Reaction(A, B)
>>> rxn.delta('E')
Energy(1.0 Ha)
Parameters:

delta_type (str) – Type of difference to calculate. Possibles: {E, H, G, E‡, H‡, G‡}

Returns:

Difference if all energies are

defined or None otherwise

Return type:

(autode.values.Energy | None)

find_lowest_energy_conformers() None#

Try and locate the lowest energy conformation using simulated annealing, then optimise them with xtb, then optimise the unique (defined by an energy cut-off) conformers with an electronic structure method

find_lowest_energy_ts_conformer() None#

Find the lowest energy conformer of the transition state

classmethod from_checkpoint(filepath: str) Reaction#

Create a reaction from a checkpoint file

has_identical_composition_as(reaction: Reaction) bool#

Does this reaction have the same chemical identity as another?

property is_barrierless: bool#

Is this reaction barrierless? i.e. without a barrier either because there is no enthalpic barrier to the reaction, or because a TS cannot be located.

load(filepath: str) None#

Load a reaction state from a binary file

locate_transition_state() None#
optimise_reacs_prods() None#

Perform a geometry optimisation on all the reactants and products using the method

print_output() None#

Print the final optimised structures along with the methods used

property product: ProductComplex#

Product complex comprising all the products in this reaction

property reactant: ReactantComplex#

Reactant complex comprising all the reactants in this reaction

save(filepath: str) None#

Save the state of this reaction to a binary file that can be reloaded

switch_reactants_products() None#

Addition reactions are hard to find the TSs for, so swap reactants and products and classify as dissociation. Likewise for reactions wher the change in the number of bonds is negative

property ts: TransitionState | None#

_The_ transition state for this reaction. If there are multiple then return the lowest energy but if there are no transtion states then return None