aboutsummaryrefslogtreecommitdiff
path: root/plip/test/test_metal_coordination.py
diff options
context:
space:
mode:
Diffstat (limited to 'plip/test/test_metal_coordination.py')
-rw-r--r--plip/test/test_metal_coordination.py132
1 files changed, 0 insertions, 132 deletions
diff --git a/plip/test/test_metal_coordination.py b/plip/test/test_metal_coordination.py
deleted file mode 100644
index 424b8df..0000000
--- a/plip/test/test_metal_coordination.py
+++ /dev/null
@@ -1,132 +0,0 @@
-# coding=utf-8
-"""
-Protein-Ligand Interaction Profiler - Analyze and visualize protein-ligand interactions in PDB files.
-test_metal_coordination.py - Unit Tests for Metal Coordination.
-"""
-
-
-import unittest
-from plip.structure.preparation import PDBComplex
-
-
-class MetalCoordinationTest(unittest.TestCase):
- """Checks predictions against literature-validated interactions for metal coordination."""
-
- ###############################################
- # Literature-validated cases from publication #
- ###############################################
-
- def test_1rmd(self):
- """Zinc binding sites in RAG1 dimerization domain (1rmd)
- Reference: Harding. The architecture of metal coordination groups in proteins. (2004), Fig. 1a
- """
-
- tmpmol = PDBComplex()
- tmpmol.load_pdb('./pdb/1rmd.pdb')
- bsid = 'ZN:A:119'
- for ligand in tmpmol.ligands:
- if ':'.join([ligand.hetid, ligand.chain, str(ligand.position)]) == bsid:
- tmpmol.characterize_complex(ligand)
- s = tmpmol.interaction_sets[bsid]
- # Coordination by three cysteines and one histidine of the protein
- metalres = [mres.restype for mres in s.metal_complexes]
- self.assertEqual(metalres.count('CYS'), 3)
- self.assertEqual(metalres.count('HIS'), 1)
- # Zn atom with tetrahedral geometry (coordination number 4)
- self.assertEqual(s.metal_complexes[0].coordination_num, 4)
- self.assertEqual(s.metal_complexes[0].geometry, 'tetrahedral')
-
- def test_1rla(self):
- """Rat liver arginase, a binuclear manganese metalloenzyme (1rmd)
- Reference: Harding. The architecture of metal coordination groups in proteins. (2004), Fig. 1b
- """
-
- tmpmol = PDBComplex()
- tmpmol.load_pdb('./pdb/1rla.pdb')
- bsid = 'MN:A:500'
- for ligand in tmpmol.ligands:
- if ':'.join([ligand.hetid, ligand.chain, str(ligand.position)]) == bsid:
- tmpmol.characterize_complex(ligand)
- s = tmpmol.interaction_sets[bsid]
- # Coordination by one histidine, three aspartic acid residues, and one water molecule
- metalres = [mres.restype for mres in s.metal_complexes]
- self.assertEqual(metalres.count('HIS'), 1)
- self.assertEqual(metalres.count('ASP'), 3)
- self.assertEqual(metalres.count('HOH'), 1)
- # Mn atom with square pyramidal geometry (coordination number 5)
- self.assertEqual(s.metal_complexes[0].coordination_num, 5)
- self.assertEqual(s.metal_complexes[0].geometry, 'square.pyramidal')
-
- def test_1het(self):
- """Liver alcohol deshydrogenase (1het)
- Reference: Harding. The architecture of metal coordination groups in proteins. (2004), Fig. 2
- """
-
- tmpmol = PDBComplex()
- tmpmol.load_pdb('./pdb/1het.pdb')
- bsid = 'ZN:A:401'
- for ligand in tmpmol.ligands:
- if ':'.join([ligand.hetid, ligand.chain, str(ligand.position)]) == bsid:
- tmpmol.characterize_complex(ligand)
- s = tmpmol.interaction_sets[bsid]
- # Coordination by four cysteines
- metalres = [mres.restype + str(mres.resnr) for mres in s.metal_complexes]
- self.assertEqual(set(metalres), {'CYS97', 'CYS100', 'CYS103', 'CYS111'})
- # Zn atom with tetrahedral geometry (coordination number 4)
- self.assertEqual(s.metal_complexes[0].coordination_num, 4)
- self.assertEqual(s.metal_complexes[0].geometry, 'tetrahedral')
-
- def test_1vfy(self):
- """Phosphatidylinositol-3-phosphate binding FYVE domain of VPS27P protein (1vfy)
- Reference: Harding. The architecture of metal coordination groups in proteins. (2004), Fig. 5
- """
-
- tmpmol = PDBComplex()
- tmpmol.load_pdb('./pdb/1vfy.pdb')
- bsid = 'ZN:A:300'
- for ligand in tmpmol.ligands:
- if ':'.join([ligand.hetid, ligand.chain, str(ligand.position)]) == bsid:
- tmpmol.characterize_complex(ligand)
- s = tmpmol.interaction_sets[bsid]
- # Coordination by four cysteines
- metalres = [mres.restype for mres in s.metal_complexes]
- self.assertEqual(set(metalres), {'CYS'})
- # Zn atom with tetrahedral geometry (coordination number 4)
- self.assertEqual(s.metal_complexes[0].coordination_num, 4)
- self.assertEqual(s.metal_complexes[0].geometry, 'tetrahedral')
-
- def test_2pvb(self):
- """Pike parvalbumin binding calcium (2pvb)
- Reference: Harding. The architecture of metal coordination groups in proteins. (2004), Fig. 6
- """
-
- tmpmol = PDBComplex()
- tmpmol.load_pdb('./pdb/2pvb.pdb')
- bsid = 'CA:A:110'
- for ligand in tmpmol.ligands:
- if ':'.join([ligand.hetid, ligand.chain, str(ligand.position)]) == bsid:
- tmpmol.characterize_complex(ligand)
- s = tmpmol.interaction_sets[bsid]
- # Ca atom with square pyramidal geometry (coordination number 5)
- self.assertEqual(s.metal_complexes[0].coordination_num, 5)
- self.assertEqual(s.metal_complexes[0].geometry, 'square.pyramidal')
-
- def test_2q8q(self):
- """Crystal Structure of S. aureus IsdE complexed with heme (2q8q)
- Reference: Grigg et al. Heme coordination by Staphylococcus aureus IsdE. (2007)
- """
-
- tmpmol = PDBComplex()
- tmpmol.load_pdb('./pdb/2q8q.pdb')
- bsid = 'HEM:A:300'
- for ligand in tmpmol.ligands:
- if ':'.join([ligand.hetid, ligand.chain, str(ligand.position)]) == bsid:
- tmpmol.characterize_complex(ligand)
- s = tmpmol.interaction_sets[bsid]
- # Coordination by four nitrogens of heme itself and one additional histidine from the protein
- metalres = [mres.restype for mres in s.metal_complexes]
- self.assertEqual(metalres.count('HEM'), 4)
- self.assertEqual(metalres.count('HIS'), 1)
- # Fe atom with square pyramidal geometry (coordination number 5)
- self.assertEqual(s.metal_complexes[0].coordination_num, 5)
- self.assertEqual(s.metal_complexes[0].geometry, 'square.pyramidal')