Source code for molsysmt.hbonds.get_donor_atoms

from molsysmt._private.digestion import digest
import numpy as np


donor_inclusion_rules = [
    "(atom_type=='O') bonded to (atom_type=='H')",
    "(atom_type=='N') bonded to (atom_type=='H')",
]

donor_exclusion_rules = [
    "(atom_name=='NE2') not bonded to (atom_type=='H')",
    "(atom_name=='ND1') not bonded to (atom_type=='H')",
]

[docs] @digest() def get_donor_atoms(molecular_system, selection='all', inclusion_rules=None, exclusion_rules=None, default_inclusion_rules=True, default_exclusion_rules=True, syntax='MolSysMT'): from molsysmt import select from molsysmt.topology import get_covalent_chains output = set() mask = select(molecular_system, selection=selection, syntax=syntax) if default_inclusion_rules: inclusion_rules += donor_inclusion_rules if default_exclusion_rules: exclusion_rules += donor_exclusion_rules for rule in inclusion_rules: tmp_donors = select(molecular_system, selection=rule, mask=mask, syntax=syntax) output.update(tmp_donors) for rule in exclusion_rules: tmp_not_donors = select(molecular_system, selection=rule, mask=mask, syntax=syntax) output.difference_update(tmp_not_donors) output = get_covalent_chains(molecular_system, [list(output), 'atom_type=="H"']) output = np.sort(output, axis=0) return output