import logging
logger = logging.getLogger()
[docs]class InteractionConfig(dict):
"""Generic class to define parameters for interactions.
Parameters
----------
config : dict, optional
A dict containing parameters for calculating interactions.
Examples
--------
>>> config = {"max_ha_dist_hb_inter": 2.5}
>>> inter_config = InteractionConfig(config)
>>> print(inter_config["max_ha_dist_hb_inter"])
2.5
inter_config["max_ha_dist_hb_inter"] = 3
>>> print(inter_config["max_ha_dist_hb_inter"])
3
"""
def __init__(self, config=None):
config = config or {}
super().__init__(config)
@property
def params(self):
"""list: The list of parameters."""
return sorted(self.keys())
[docs]class DefaultInteractionConfig(InteractionConfig):
"""Default parameters for calculating interactions in LUNA."""
def __init__(self):
config = {}
# Hydrogen bond
config["max_da_dist_hb_inter"] = 3.9
config["max_ha_dist_hb_inter"] = 2.8
config["min_dha_ang_hb_inter"] = 90
config["min_har_ang_hb_inter"] = 90
config["min_dar_ang_hb_inter"] = 90
# Weak hydrogen bond
# Ref: Panigrahi, S. K. & Desiraju, G. R. (2007).
# Ref: Desiraju, G. R. & Steiner, T. (2001).
config["max_da_dist_whb_inter"] = 4
config["max_ha_dist_whb_inter"] = 3
config["min_dha_ang_whb_inter"] = 110
config["min_har_ang_whb_inter"] = 90
config["min_dar_ang_whb_inter"] = 90
# Weak hydrogen bonds: hydrogen bonds involving aromatic rings
# Ref: Hydrogen bonds with π-acceptors in proteins: frequencies and role in stabilizing local 3D structures [Steiner, 2001]
# Ref: Strong and Weak Hydrogen Bonds [Panigrahi, 2007]
config["max_dc_dist_whb_inter"] = 4.5
config["max_hc_dist_whb_inter"] = 3.5
config["min_dhc_ang_whb_inter"] = 120
config["max_disp_ang_whb_inter"] = 40
# Ionic interactions
# Ref: Barlow, D. J.; Thornton, J. M. Ion-Pairs in Proteins. Journal of Molecular Biology 1983.
config["max_dist_repuls_inter"] = 6
config["max_dist_attract_inter"] = 6
# Aromatic stacking:
# Ref: Bhattacharyya et al. 2003. Geometry of Interaction of the Histidine Ring with Other Planar and Basic Residues.
# Ref: Chakrabarti, P.; Bhattacharyya, R. 2007. Geometry of Nonbonded Interactions Involving Planar Groups in Proteins.
config["max_cc_dist_pi_pi_inter"] = 6
# Define if a ring is tilted, same plane or in a T-format
config["min_dihed_ang_slope_pi_pi_inter"] = 30
config["max_dihed_ang_slope_pi_pi_inter"] = 60
# Define if the ring is offset or aligned with another ring center.
config["min_disp_ang_offset_pi_pi_inter"] = 30
config["max_disp_ang_offset_pi_pi_inter"] = 60
# Amide-aromatic stacking
# [1] A systematic analysis of atomic protein–ligand interactions in the PDB [Freitas, 2007].
# [2] Efficient Stacking on Protein Amide Fragments [Harder, 2013].
# [3] The environment of amide groups in protein–ligand complexes: H-bonds and beyond [Cotesta, 2006].
# [4] Hydrogen bonds with π-acceptors in proteins: frequencies and role in stabilizing local 3D structures [Steiner, 2001]
# [5] Example of amide-pi: Systematic Investigation of Halogen Bonding in Protein–Ligand Interactions [Hardegger, 2011]
#
# Ref: [1], [2], [4], and [5].
config["max_cc_dist_amide_pi_inter"] = 4.5
# Ref: [1] and [3].
config["max_dihed_ang_amide_pi_inter"] = 30
# Ref: [3]: I use the centroid of an amide, while they use the nitrogen.
config["max_disp_ang_pi_pi_inter"] = 30
# Hydrophobic interaction
config["max_dist_hydrop_inter"] = 4.5
config["min_surf_size"] = 1
config["min_inter_atom_in_surf"] = 1
# Cation-pi interaction
# Ref: Gallivan, J. P.; Dougherty, D. A. Cation-π Interactions in Structural Biology. Proc Natl Acad Sci U S A 1999, 96 (17), 9459–9464.
config["max_dist_cation_pi_inter"] = 6
# Halogen bond.
# Interaction model: C-X ---- A-R, where C is a carbon, X a halogen, A an acceptor and R is an atom bonded to A.
# Ref: Halogen bonds in biological molecules [Auffinger, 2004]
# Ref: The Important Role of Halogen Bond in Substrate Selectivity of Enzymatic Catalysis [Jiang, 2016]
#
# Distance X-A when A is a single atom.
config["max_xa_dist_xbond_inter"] = 4
# Distance X-A when A is an aromatic ring, so C stands for Centroid.
config["max_xc_dist_xbond_inter"] = 4.5
config["min_cxa_ang_xbond_inter"] = 120
config["min_xar_ang_xbond_inter"] = 80
config["max_disp_ang_xbond_inter"] = 60
# Chalcogen bond.
# Interaction model: R-Y ---- A-N,
# Where R is a carbon/sulfur, Y a chalcogen (S, Se, Te), A an acceptor, and N a covalently bonded atom to A.
# Ref: Mining and Structural Characterization of S···X Chalcogen Bonds in Protein Database [Iwaoka, Michio, and Natsuki Babe, 2015].
# Ref: Chalcogen Bonding ‘2S–2N Squares’ versus Competing Interactions: Exploring the Recognition Properties of Sulfur [Ams et al, 2018].
# Ref: S···O and S···N Sulfur Bonding Interactions in Protein–Ligand Complexes:
# Empirical Considerations and Scoring Function [Koebel, 2016].
#
# Distance Y-A when A is a single atom.
config["max_ya_dist_ybond_inter"] = 4
# Distance Y-A, when A (acceptor) is an aromatic ring, so C stands for Centroid.
config["max_yc_dist_ybond_inter"] = 4.5
# Angles
config["min_rya_ang_ybond_inter"] = 120
config["min_yan_ang_ybond_inter"] = 80
# When A (acceptor) is an aromatic ring.
config["max_disp_ang_ybond_inter"] = 60
# Orthogonal multipolar interaction (dipole-dipole)
# All rules were obtained departing from Paulini R, Müller K, Diederich F. 2005.
# Orthogonal multipolar interactions in structural chemistry and biology.
# Model: A-N ... E-Y, where N and E are the nucleophilic and electrophilic atom, respectively.
# Distance between the nucleophilic and electrophilic atom.
config["max_ne_dist_multipolar_inter"] = 4
# The angle NEY have a min and a max angle.
config["min_ney_ang_multipolar_inter"] = 70
config["max_ney_ang_multipolar_inter"] = 110
config["max_disp_ang_multipolar_inter"] = 40
# Orthogonal multipolar
config["min_an_ey_ang_ortho_multipolar_inter"] = 70
config["max_an_ey_ang_ortho_multipolar_inter"] = 110
# Parallel and antiparallel multipolar
config["max_an_ey_ang_para_multipolar_inter"] = 25
config["min_an_ey_ang_antipara_multipolar_inter"] = 155
# Ion-multipole interaction (ion-dipole)
# Model: I ... D-Y, where I is the ion, D the dipole atom of interest (the electrophile or nucleophile) and Y is its counterpart.
config["max_id_dist_ion_multipole_inter"] = 4.5
config["min_idy_ang_ion_multipole_inter"] = 60
config["max_disp_ang_ion_multipole_inter"] = 40
# Proximal interactions
config["max_dist_proximal"] = 6
config["min_dist_proximal"] = 2
# Van der Waals interactions. From: Arpeggio.
config["vdw_tolerance"] = 0.1
# From Chimera: https://www.cgl.ucsf.edu/chimerax/docs/user/commands/clashes.html
config["vdw_clash_tolerance"] = 0.6
# From Chimera: https://www.cgl.ucsf.edu/chimerax/docs/user/commands/clashes.html
# Controls all interactions, except clashes that has its own parameter.
config["min_bond_separation"] = 3
# Controls only clashes.
config["min_bond_separation_for_clash"] = 4
config["boundary_cutoff"] = 6.2
super().__init__(config)