# How can I identify acceptor and donor atoms using BioPython?

I know how to traverse through structures, models, residues, and atoms in a protein chain using BioPython (which is very easy).

How can I identify donor and acceptor atoms in a chain?

• donor/acceptor belongs to the main chain (MC) or side chain (SC) of amino acids ?? Oct 27 '21 at 16:59
• @pippo1980, side chain. My target is to measure the distance between donor and acceptor atoms. Oct 27 '21 at 17:24
• Ligand or hydrogen atoms of other side chains ? Just trying to put it into a perspective Oct 27 '21 at 17:39
• I guess once you know coordinates of each putative donor and acceptor, you calculate the distances between all the possible pairs and take the ones under a threshold. My PhD examiner was blabbing about right geometry too … but we were talking about X-ray crystallography no way to know where the hydrogens are and a kind of middle resolution so … but remember geometry is important too Oct 27 '21 at 17:44
• Here a informative link biostars.org/p/182325 this links to another post : most software simply looks for donor + acceptor pairs separated by an appropriate distance and bond angle. Oct 27 '21 at 17:45

A hydrogen bond donor heavy atom is one that is protonated, while the acceptor has a lone pair. If you talking about amino acids, then it's simple as they are fixed.

atom name description role note
N backbone nitrogen donor SS
CA backbone Cα apolar
C backbone carboxyl C sterically hindered and electrophilic nucleophilic attack
O backbone carboxyl O acceptor SS
CB etc. sidechain carbons apolar
OXT C-terminal oxygen acceptor may be protonated especially if a membrane embedded C-terminus
Serine's OG / Threonine's OG1 sidechain hydroxyl donor SS: may form ST turns. Fairly uncommon: may be a donor
Asp OD1/OD2/Asn OD1 sidechain carboxyl/amide O acceptor SS: may form Asx turns
Glu OG1/OG2/Gln OG1 sidechain carboxyl/amide O acceptor
Lysine NZ sidechain amine donor
Asn ND2 / Gln NG2 terminal admide N donor the direction of an Asn/Gln may be accidentally filled if manually assigned as N/O have the same density in X-ray crystals

Water can be both a donor and an acceptor. Two charged residues form a salt bridge more so than a hydrogen bond, because the interaction is driven by the Coulomb electrostatic forces of the two heavy atoms.

• A hydrogen bond donor heavy atom is one that is protonated, while the acceptor has a lone pair. -- Does this apply to BioPython's Atom object? I mean, can I test or search it using BioPython? Oct 28 '21 at 10:49
• Yeah nah. A heavy atom is an atom that diffracts under X-ray crystallography —not hydrogens. The Atom instance is a graph network node representation of any atom. It may be a hydrogen —_in silico_ protonated, neutron diffraction or 1H NMR. Technically to the most pedantically punctilious level, it could be virtual (e.g. Drude particle)... Oct 28 '21 at 10:57
• So, can I use your supplied information and apply them on a PDB file via BioPython and extract donor and acceptor atom info from that PDB file? Oct 28 '21 at 11:03
• Totally — assuming a pair is within about 3Å Oct 28 '21 at 11:06
• 2.8Å is an ideal, >3.2Å is weak. Mathematically the Lenard-Jones term is used in thermodynamic simulations —in the wiki page you can see the potential plateaus quickly. Sure, the true distance will be marginally affected by the b-factors of the atoms (both anisotropic/isotropic) but in solution the distance is likely a distribution (i.e. the atoms wobbling around). Oct 28 '21 at 17:26