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
- 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