Substitution#

class autode.substitution.SubstitutionCentre(a_atom_idx, c_atom_idx, x_atom_idx, a_atom_nn_idxs)#
__init__(a_atom_idx, c_atom_idx, x_atom_idx, a_atom_nn_idxs)#

Substitution centre has the following structure:

  H           H  H
  |           |/
  N-- H       C -- Cl
 /           /
H           H

where:

a_atom = N
c_atom = C
x_atom = Cl
a_atom_nn = H, H, H (bonded to N)

all given as their atom indexes in a ReactantComplex

set_attack_r0(species, shift_factor)#

Set the ideal distance between a and c atoms in a substitution centre

autode.substitution.add_dummy_atom(reactant, bond_rearrangement)#

Add a dummy atom above or below the plane of the reactant as a temporary X atom

Parameters:

bond_rearrangement (autode.bond_rearrangement.BondRearrangement) –

autode.substitution.attack_cost(reactant, subst_centres, attacking_mol_idx, a=1.0, b=1.0, c=1.0, d=10.0)#

Calculate the ‘attack cost’ for a molecule attacking in e.g. a substitution or elimination reaction:

C = Σ_ac a * (r_ac - r^0_ac)^2  +  Σ_acx b * (1 - cos(θ))  +
          Σ_acx c*(1 + cos(φ))  +  Σ_ij d/r_ij^4

where:

cos(θ) = (v_ann • v_cx / |v_ann||v_cx|)
cos(φ) = (v_ca • v_cx / |v_ca||v_cx|)
autode.substitution.get_cost_rotate_translate(x, reactant, subst_centres, attacking_mol_idx)#

Get the cost for placing an attacking mol given a specified rotation and translation

Parameters:
Return type:

(float)

autode.substitution.get_substc_and_add_dummy_atoms(reactant, bond_rearrangement, shift_factor)#

Get all the substitution centers in a molecule. A substitution centre is defined as atom that upon reaction has a bond made and broken simultaneously

Parameters:
Returns:

(tuple(list(autode.substitution.SubstitutionCentre),

autode.complex.ReactantComplex)):