Get acceptor atoms#

Identifying hydrogen bond acceptor atoms based on chemical rules and electronegative centers.

The function molsysmt.interactions.hbonds.get_acceptor_atoms() identifies potential hydrogen bond acceptor atoms within molecular systems using customizable chemical inclusion and exclusion selection criteria.

Added in version 1.0.0.

Basic usage#

Let’s identify the hydrogen bond acceptor atoms in a protein structure:

import molsysmt as msm
molsys = msm.convert(msm.systems['chicken villin HP35']['chicken_villin_HP35.h5msm'])

We inspect the built-in default inclusion and exclusion rules defined in MolSysMT:

print('Default inclusion rules:', msm.interactions.hbonds.acceptor_inclusion_rules)
print('Default exclusion rules:', msm.interactions.hbonds.acceptor_exclusion_rules)
Default inclusion rules: ["atom_type=='O'", "atom_type=='N'", "atom_type=='S'"]
Default exclusion rules: ["atom_name=='NE2' and group_name=='GLN'", "(atom_name=='NE2' and group_name=='HIS') bonded to (atom_type=='H')", "(atom_name=='ND1' and group_name=='HIS') bonded to (atom_type=='H')"]

Now let’s find all acceptor atoms within the first three residues (group_index in [1, 2, 3]):

acceptor_atoms = msm.interactions.hbonds.get_acceptor_atoms(molsys, selection='group_index==[1, 2, 3]')
print('Acceptor atom indices:', acceptor_atoms)
Acceptor atom indices: [ 6 11 18 23 28 42 47 51]

Inspecting acceptor atom metadata#

We can query detailed attribute information for the identified acceptor atoms:

msm.info(molsys, element='atom', selection=acceptor_atoms)
index id name type group index group id group name group type component index chain index molecule index molecule type entity index entity name
6 7 N N 1 41 MET amino acid 0 0 0 peptide 0 VILLIN
11 12 O O 1 41 MET amino acid 0 0 0 peptide 0 VILLIN
18 19 SD S 1 41 MET amino acid 0 0 0 peptide 0 VILLIN
23 24 N N 2 42 LEU amino acid 0 0 0 peptide 0 VILLIN
28 29 O O 2 42 LEU amino acid 0 0 0 peptide 0 VILLIN
42 43 N N 3 43 SER amino acid 0 0 0 peptide 0 VILLIN
47 48 O O 3 43 SER amino acid 0 0 0 peptide 0 VILLIN
51 52 OG O 3 43 SER amino acid 0 0 0 peptide 0 VILLIN

Custom inclusion and exclusion rules#

Users can specify custom inclusion or exclusion rules to tailor acceptor definitions for non-standard molecules or specific chemical centers:

custom_acceptors = msm.interactions.hbonds.get_acceptor_atoms(molsys, selection='group_index==[1, 2, 3]',
                                                 inclusion_rules="atom_name=='O'")
msm.info(molsys, element='atom', selection=custom_acceptors)
index id name type group index group id group name group type component index chain index molecule index molecule type entity index entity name
6 7 N N 1 41 MET amino acid 0 0 0 peptide 0 VILLIN
11 12 O O 1 41 MET amino acid 0 0 0 peptide 0 VILLIN
18 19 SD S 1 41 MET amino acid 0 0 0 peptide 0 VILLIN
23 24 N N 2 42 LEU amino acid 0 0 0 peptide 0 VILLIN
28 29 O O 2 42 LEU amino acid 0 0 0 peptide 0 VILLIN
42 43 N N 3 43 SER amino acid 0 0 0 peptide 0 VILLIN
47 48 O O 3 43 SER amino acid 0 0 0 peptide 0 VILLIN
51 52 OG O 3 43 SER amino acid 0 0 0 peptide 0 VILLIN