Author: bugman Date: Sat Nov 3 14:09:28 2007 New Revision: 3387 URL: http://svn.gna.org/viewcvs/relax?rev=3387&view=rev Log: Created the generic_fns.residue.rename() function and fixed the corresponding unit tests. 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=3387&r1=3386&r2=3387&view=diff ============================================================================== --- 1.3/generic_fns/residue.py (original) +++ 1.3/generic_fns/residue.py Sat Nov 3 14:09:28 2007 @@ -150,6 +150,37 @@ mol.res.add_item() +def rename(res_id, new_name=None): + """Function for renaming residues. + + @param res_id: The identifier string for the residue(s) to rename. + @type res_id: str + @param new_name: The new residue name. + @type new_name: 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) + + # 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].name = new_name + + +def renumber(res_from, new_number=None): + pass + class Residue: def __init__(self, relax): """Class containing functions specific to amino-acid sequence.""" 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=3387&r1=3386&r2=3387&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 14:09:28 2007 @@ -260,7 +260,7 @@ residue.create(-10, 'His') # Rename the residue. - residue.rename(res_from='@-10', new_name='K') + residue.rename(res_id=':-10', new_name='K') # Test that the residue has been renamed. self.assertEqual(relax_data_store['orig'].mol[0].res[0].name, 'K') @@ -281,13 +281,13 @@ residue.copy(res_num_from=1, res_name_from='Ala', res_num_to=3) # Change the first residue's data. - relax_data_store['orig'].mol[0].res[0].spin[0].name = 'His' + relax_data_store['orig'].mol[0].res[0].name = 'His' # Copy the residue once more. residue.copy(res_num_from=1, res_num_to=4, res_name_to='Met') # Rename all alanines. - residue.rename(res_from='Ala', new_name='Gln') + residue.rename(res_id=':Ala', new_name='Gln') # Test the renaming of alanines. self.assertEqual(relax_data_store['orig'].mol[0].res[1].name, 'Gln') @@ -305,7 +305,7 @@ """ # Try renaming using a atom id. - self.assertRaises(RelaxSpinSelectDisallowError, residue.rename, res_from='@111', new_name='K') + self.assertRaises(RelaxSpinSelectDisallowError, residue.rename, res_id='@111', new_name='K') def test_renumber(self): @@ -318,7 +318,7 @@ residue.create(-10, 'His') # Rename the residue. - residue.renumber(res_from='@-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) @@ -344,7 +344,7 @@ residue.copy(res_num_from=1, res_num_to=4, res_name_to='Met') # Try renumbering all alanines. - self.assertRaises(RelaxError, residue.renumber, res_from='Ala', new_number=10) + self.assertRaises(RelaxError, residue.renumber, res_id=':Ala', new_number=10) def test_renumber_no_spin(self): @@ -354,4 +354,4 @@ """ # Try renaming using a atom id. - self.assertRaises(RelaxSpinSelectDisallowError, residue.renumber, res_from='@111', new_number=10) + self.assertRaises(RelaxSpinSelectDisallowError, residue.renumber, res_id='@111', new_number=10)