mailr3233 - in /1.3: generic_fns/residue.py test_suite/unit_tests/generic_fns/test_residue.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on March 19, 2007 - 06:50:
Author: bugman
Date: Mon Mar 19 06:27:21 2007
New Revision: 3233

URL: http://svn.gna.org/viewcvs/relax?rev=3233&view=rev
Log:
Fixed the generic_fns.residue.delete() function and its associated unit tests.

An additional unit test for deletion using residue names has been added.

Modified:
    1.3/generic_fns/residue.py
    1.3/test_suite/unit_tests/generic_fns/test_residue.py

Modified: 1.3/generic_fns/residue.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/generic_fns/residue.py?rev=3233&r1=3232&r2=3233&view=diff
==============================================================================
--- 1.3/generic_fns/residue.py (original)
+++ 1.3/generic_fns/residue.py Mon Mar 19 06:27:21 2007
@@ -114,7 +114,7 @@
 def delete(res_id=None):
     """Function for deleting residues from the current data pipe.
 
-    @param res_id:  The residue identifier string.
+    @param res_id:  The molecule and residue identifier string.
     @type res_id:   str
     """
 
@@ -130,11 +130,25 @@
 
     # Molecule loop.
     for mol in molecule_loop(mol_token):
+        # List of indecies to delete.
+        indecies = []
+
         # Loop over the residues of the molecule.
         for i in xrange(len(mol.res)):
             # Remove the residue is there is a match.
-            if mol.res[i].num in residues:
-                mol.res[i].pop()
+            if mol.res[i].num in residues or mol.res[i].name in residues:
+                indecies.append(i)
+
+        # Reverse the indecies.
+        indecies.reverse()
+
+        # Delete the residues.
+        for index in indecies:
+            mol.res.pop(index)
+
+        # Create an empty residue container if no residues remain.
+        if len(mol.res) == 0:
+            mol.res.add_item()
 
 
 class Residue:

Modified: 1.3/test_suite/unit_tests/generic_fns/test_residue.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/test_suite/unit_tests/generic_fns/test_residue.py?rev=3233&r1=3232&r2=3233&view=diff
==============================================================================
--- 1.3/test_suite/unit_tests/generic_fns/test_residue.py (original)
+++ 1.3/test_suite/unit_tests/generic_fns/test_residue.py Mon Mar 19 06:27:21 
2007
@@ -27,7 +27,7 @@
 from data import Data as relax_data_store
 from data.pipe_container import PipeContainer
 from generic_fns import residue
-from relax_errors import RelaxError, RelaxNoRunError, RelaxRunError
+from relax_errors import RelaxError, RelaxNoRunError, RelaxRunError, 
RelaxSpinSelectDisallowError
 
 
 
@@ -143,29 +143,56 @@
         self.assertRaises(RelaxError, residue.create, 1, 'Ala')
 
 
-    def test_delete(self):
-        """Test the deletion of a residue.
-
-        The function used is generic_fns.residues.delete().
-        """
-
-        # Create some residues and add some data to the spin containers.
-        residue.create(1, 'Ala')
-        residue.create(2, 'Ala')
-        residue.create(3, 'Ala')
-        residue.create(4, 'Ala')
+    def test_delete_name(self):
+        """Test residue deletion using residue name identifiers.
+
+        The function used is generic_fns.residues.delete().
+        """
+
+        # Create some residues and add some data to the spin containers.
+        residue.create(1, 'Ala')
+        residue.create(2, 'Ala')
+        residue.create(3, 'Ala')
+        residue.create(4, 'Gly')
+        relax_data_store['orig'].mol[0].res[3].spin[0].num = 111
+        relax_data_store['orig'].mol[0].res[3].spin[0].x = 1
+
+        # Delete the first residue.
+        residue.delete(res_id=':Ala')
+
+        # Test that the first residue is 4 Gly.
+        self.assertEqual(relax_data_store['orig'].mol[0].res[0].num, 4)
+        self.assertEqual(relax_data_store['orig'].mol[0].res[0].name, 'Gly')
+        self.assertEqual(relax_data_store['orig'].mol[0].res[0].spin[0].num, 
111)
+        self.assert_(hasattr(relax_data_store['orig'].mol[0].res[0].spin[0], 
'x'))
+
+
+    def test_delete_num(self):
+        """Test residue deletion using residue number identifiers.
+
+        The function used is generic_fns.residues.delete().
+        """
+
+        # Create some residues and add some data to the spin containers.
+        residue.create(1, 'Ala')
+        residue.create(2, 'Ala')
+        residue.create(3, 'Ala')
+        residue.create(4, 'Gly')
         relax_data_store['orig'].mol[0].res[3].spin[0].num = 111
         relax_data_store['orig'].mol[0].res[3].spin[0].x = 1
 
         # Delete the first residue.
         residue.delete(res_id=':1')
 
-        # Test that the residue no longer exists (and defaults back to the 
empty residue).
-        
self.assertNotEqual(relax_data_store['orig'].mol[0].res[1].spin[0].num, 111)
-        self.assert_(not 
hasattr(relax_data_store['orig'].mol[0].res[1].spin[0], 'x'))
-
-        # Delete the first residue.
-        residue.delete(res_id=':1')
+        # Test that the sequence.
+        self.assertEqual(relax_data_store['orig'].mol[0].res[0].num, 2)
+        self.assertEqual(relax_data_store['orig'].mol[0].res[0].name, 'Ala')
+        self.assertEqual(relax_data_store['orig'].mol[0].res[1].num, 3)
+        self.assertEqual(relax_data_store['orig'].mol[0].res[1].name, 'Ala')
+        self.assertEqual(relax_data_store['orig'].mol[0].res[2].num, 4)
+        self.assertEqual(relax_data_store['orig'].mol[0].res[2].name, 'Gly')
+        self.assertEqual(relax_data_store['orig'].mol[0].res[2].spin[0].num, 
111)
+        self.assert_(hasattr(relax_data_store['orig'].mol[0].res[2].spin[0], 
'x'))
 
 
     def test_delete_all(self):
@@ -191,7 +218,7 @@
 
 
     def test_delete_shift(self):
-        """Test the deletion of multiple residue.
+        """Test the deletion of multiple residues.
 
         The function used is generic_fns.residues.delete().
         """
@@ -207,18 +234,18 @@
         # Delete the first and third residues.
         residue.delete(res_id=':1,3')
 
-        # Test that the residue no longer exists (and defaults back to the 
empty residue).
+        # Test that the remaining residues.
+        self.assertEqual(relax_data_store['orig'].mol[0].res[0].num, 2)
+        self.assertEqual(relax_data_store['orig'].mol[0].res[1].num, 4)
         self.assertEqual(relax_data_store['orig'].mol[0].res[1].spin[0].num, 
111)
         self.assert_(hasattr(relax_data_store['orig'].mol[0].res[1].spin[0], 
'x'))
-        self.assertEqual(relax_data_store['orig'].mol[0].res[0].num, None)
-        self.assertEqual(relax_data_store['orig'].mol[0].res[0].name, None)
 
 
     def test_delete_fail(self):
-        """Test the failure of the deletion of a non-existant residue.
-
-        The function used is generic_fns.residues.delete().
-        """
-
-        # Delete a non-existant residue (2).
-        self.assertRaises(RelaxError, residue.delete, res_id=':2')
+        """Test the failure of residue deletion when an atom id is supplied.
+
+        The function used is generic_fns.residues.delete().
+        """
+
+        # Supply an atom id.
+        self.assertRaises(RelaxSpinSelectDisallowError, residue.delete, 
res_id='@2')




Related Messages


Powered by MHonArc, Updated Mon Mar 19 07:40:08 2007