moleculekit.tools.detect module#
- moleculekit.tools.detect.connected_component_subgraphs(graph)#
- moleculekit.tools.detect.detectEquivalentAtoms(molecule)#
Detect topologically equivalent atoms.
- Parameters:
molecule (
Molecule
) – Molecule object- Returns:
equivalent_groups (list of tuples) – List of equivalent atom group. Each element is a tuple contain equivalent atom indices.
equivalent_atoms (list of tuples) – List of equivalent atom group for each atom. Each element is a tuple contain equivalent atom indices.
equivalent_group_by_atom (list) – List of equivalent group indices for each atom. The indices corresponds to equivalent_groups order.
Examples
>>> import os >>> from moleculekit.home import home >>> from moleculekit.molecule import Molecule >>> from moleculekit.tools.detect import detectEquivalentAtoms
Get benzamidine >>> molFile = os.path.join(home(‘test-detect’), ‘benzamidine.mol2’) >>> mol = Molecule(molFile)
Find the equivalent atoms of bezamidine >>> equivalent_groups, equivalent_atoms, equivalent_group_by_atom = detectEquivalentAtoms(mol) >>> equivalent_groups [(0,), (1, 5), (2, 4), (3,), (6,), (7, 11), (8, 10), (9,), (12, 13), (14, 15, 16, 17)] >>> equivalent_atoms [(0,), (1, 5), (2, 4), (3,), (2, 4), (1, 5), (6,), (7, 11), (8, 10), (9,), (8, 10), (7, 11), (12, 13), (12, 13), (14, 15, 16, 17), (14, 15, 16, 17), (14, 15, 16, 17), (14, 15, 16, 17)] >>> equivalent_group_by_atom [0, 1, 2, 3, 2, 1, 4, 5, 6, 7, 6, 5, 8, 8, 9, 9, 9, 9]
Get dicarbothioic acid >>> molFile = os.path.join(home(‘test-detect’), ‘dicarbothioic_acid.mol2’) >>> mol = Molecule(molFile)
Find the equivalent atoms of dicarbothioic acid >>> equivalent_groups, equivalent_atoms, equivalent_group_by_atom = detectEquivalentAtoms(mol) >>> equivalent_groups [(0,), (1,), (2,), (3,), (4,), (5,), (6,), (7,)] >>> equivalent_atoms [(0,), (1,), (2,), (3,), (4,), (5,), (6,), (7,)] >>> equivalent_group_by_atom [0, 1, 2, 3, 4, 5, 6, 7]
- moleculekit.tools.detect.detectParameterizableCores(graph)#
Detect parametrizable dihedral angle cores (central atom pairs)
The cores are detected by looking for bridges (bonds which divide the molecule into two parts) in a molecular graph. Terminal cores are skipped.
- moleculekit.tools.detect.detectParameterizableDihedrals(molecule, exclude_atoms=())#
Detect parameterizable dihedral angles
- Parameters:
- Returns:
dihedrals – List of equivalent dihedral angle groups. Each group is a list of equivalent dihedral angles. Each angle is defined as a tuple of four atom indices (0-based).
- Return type:
Examples
>>> import os >>> from moleculekit.home import home >>> from moleculekit.molecule import Molecule >>> from moleculekit.tools.detect import detectParameterizableDihedrals
Find the parameterizable dihedrals of glycol >>> molFile = os.path.join(home(‘test-detect’), ‘glycol.mol2’) >>> mol = Molecule(molFile, guess=(‘bonds’, ‘angles’, ‘dihedrals’)) >>> detectParameterizableDihedrals(mol) [[(0, 1, 2, 3)], [(1, 2, 3, 9), (2, 1, 0, 4)]]
Find the parameterizable dihedrals of ethanolamine >>> molFile = os.path.join(home(‘test-detect’), ‘ethanolamine.mol2’) >>> mol = Molecule(molFile, guess=(‘bonds’, ‘angles’, ‘dihedrals’)) >>> detectParameterizableDihedrals(mol) [[(0, 1, 2, 3)], [(1, 2, 3, 9), (1, 2, 3, 10)], [(2, 1, 0, 4)]]
Find the parameterizable dihedrals of benzamidine >>> molFile = os.path.join(home(‘test-detect’), ‘benzamidine.mol2’) >>> mol = Molecule(molFile, guess=(‘bonds’, ‘angles’, ‘dihedrals’)) >>> detectParameterizableDihedrals(mol) [[(0, 6, 12, 16), (0, 6, 12, 17), (0, 6, 13, 14), (0, 6, 13, 15)], [(1, 0, 6, 12), (1, 0, 6, 13), (5, 0, 6, 12), (5, 0, 6, 13)]]
# Check if the atom swapping does not affect results
Find the parameterizable dihedrals of chlorethene >>> molFile = os.path.join(home(‘test-detect’), ‘chlorethene_1.mol2’) >>> mol = Molecule(molFile, guess=(‘bonds’, ‘angles’, ‘dihedrals’)) >>> detectParameterizableDihedrals(mol) [[(2, 1, 0, 4), (2, 1, 0, 5)]]
Find the parameterizable dihedrals of chlorethene (with swapped atoms) >>> molFile = os.path.join(home(‘test-detect’), ‘chlorethene_2.mol2’) >>> mol = Molecule(molFile, guess=(‘bonds’, ‘angles’, ‘dihedrals’)) >>> detectParameterizableDihedrals(mol) [[(3, 1, 0, 4), (3, 1, 0, 5)]]
# Check if triple bonds are skipped
Find the parameterizable dihedrals of 4-hexinenitrile >>> molFile = os.path.join(home(‘test-detect’), ‘4-hexinenitrile.mol2’) >>> mol = Molecule(molFile, guess=(‘bonds’, ‘angles’, ‘dihedrals’)) >>> detectParameterizableDihedrals(mol) [[(2, 3, 4, 5)]]
# Check the scoring function
Find the parameterizable dihedrals of dicarbothioic acid >>> molFile = os.path.join(home(‘test-detect’), ‘dicarbothioic_acid.mol2’) >>> mol = Molecule(molFile, guess=(‘bonds’, ‘angles’, ‘dihedrals’)) >>> detectParameterizableDihedrals(mol) [[(0, 1, 3, 5)], [(1, 3, 5, 7)], [(3, 1, 0, 6)]]
Find the parameterizable dihedrals of 2-hydroxypyridine >>> molFile = os.path.join(home(‘test-detect’), ‘2-hydroxypyridine.mol2’) >>> mol = Molecule(molFile, guess=(‘bonds’, ‘angles’, ‘dihedrals’)) >>> detectParameterizableDihedrals(mol) [[(6, 1, 0, 7)]]
Find the parameterizable dihedrals of fluorchlorcyclopronol >>> molFile = os.path.join(home(‘test-detect’), ‘fluorchlorcyclopronol.mol2’) >>> mol = Molecule(molFile, guess=(‘bonds’, ‘angles’, ‘dihedrals’)) >>> detectParameterizableDihedrals(mol) [[(2, 4, 5, 9)]]