mailr3388 - in /1.3: generic_fns/residue.py relax_errors.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 November 03, 2007 - 16:04:
Author: bugman
Date: Sat Nov  3 16:04:48 2007
New Revision: 3388

URL: http://svn.gna.org/viewcvs/relax?rev=3388&view=rev
Log:
Implemented the generic_fns.residue.renumber() function and fixed its unit 
tests.


Modified:
    1.3/generic_fns/residue.py
    1.3/relax_errors.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=3388&r1=3387&r2=3388&view=diff
==============================================================================
--- 1.3/generic_fns/residue.py (original)
+++ 1.3/generic_fns/residue.py Sat Nov  3 16:04:48 2007
@@ -178,8 +178,46 @@
                 mol.res[i].name = new_name
 
 
-def renumber(res_from, new_number=None):
-    pass
+def renumber(res_id, new_number=None):
+    """Function for renumbering residues.
+
+    @param res_id:      The identifier string for the residue(s) to renumber.
+    @type res_id:       str
+    @param new_number:  The new residue number.
+    @type new_number:   str
+    """
+
+    # Split up the selection string.
+    mol_token, res_token, spin_token = tokenise(res_id)
+
+    # Disallow spin selections.
+    if spin_token != None:
+        raise RelaxSpinSelectDisallowError
+
+    # Parse the tokens.
+    residues = parse_token(res_token)
+
+    # Catch multiple renumberings!
+    number = 0
+    for mol in molecule_loop(mol_token):
+        # Loop over the residues of the molecule.
+        for i in xrange(len(mol.res)):
+            # Rename the residue is there is a match.
+            if mol.res[i].num in residues or mol.res[i].name in residues:
+                number = number + 1
+
+    # Fail if multiple residues are numbered.
+    if number > 1:
+        raise RelaxError, "The renumbering of multiple residues is 
disallowed."
+
+    # Molecule loop.
+    for mol in molecule_loop(mol_token):
+        # Loop over the residues of the molecule.
+        for i in xrange(len(mol.res)):
+            # Rename the residue is there is a match.
+            if mol.res[i].num in residues or mol.res[i].name in residues:
+                mol.res[i].num = new_number
+
 
 class Residue:
     def __init__(self, relax):

Modified: 1.3/relax_errors.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/relax_errors.py?rev=3388&r1=3387&r2=3388&view=diff
==============================================================================
--- 1.3/relax_errors.py (original)
+++ 1.3/relax_errors.py Sat Nov  3 16:04:48 2007
@@ -532,8 +532,8 @@
             self.save_state()
 
 
-# Selection errors.
-###################
+# Spin-Residue-Molecule errors.
+###############################
 
 # Disallow molecule selection.
 class RelaxMolSelectDisallowError(BaseError):

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=3388&r1=3387&r2=3388&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 Sat Nov  3 16:04:48 
2007
@@ -318,7 +318,7 @@
         residue.create(-10, 'His')
 
         # Rename the residue.
-        residue.renumber(res_id='@-10', new_number=10)
+        residue.renumber(res_id=':-10', new_number=10)
 
         # Test that the residue has been renumbered.
         self.assertEqual(relax_data_store['orig'].mol[0].res[0].num, 10)




Related Messages


Powered by MHonArc, Updated Sat Nov 03 18:00:10 2007