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:
reactant (autode.complex.ReactantComplex)
subst_centres (list(autode.substitution.SubstitutionCentre))
attacking_mol_idx (int) – Index of the attacking molecule
- 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:
bond_rearrangement (autode.bond_rearrangement.BondRearrangement)
shift_factor (float) – The multiplier in the ideal A–C distance where A is an attacking atom and C a substitution centre
- Returns:
- (tuple(list(autode.substitution.SubstitutionCentre),
autode.complex.ReactantComplex)):