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)