mailr27052 - /trunk/test_suite/system_tests/structure.py


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

Header


Content

Posted by edward on December 10, 2014 - 13:58:
Author: bugman
Date: Wed Dec 10 13:58:30 2014
New Revision: 27052

URL: http://svn.gna.org/viewcvs/relax?rev=27052&view=rev
Log:
Created the Structure.test_align_molecules system test.

This will be used to extend the functionality of the structure.align user 
function to be able to
align different molecules in the same data pipe, rather than requiring either 
models or identically
named structures in different data pipes.


Modified:
    trunk/test_suite/system_tests/structure.py

Modified: trunk/test_suite/system_tests/structure.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/test_suite/system_tests/structure.py?rev=27052&r1=27051&r2=27052&view=diff
==============================================================================
--- trunk/test_suite/system_tests/structure.py  (original)
+++ trunk/test_suite/system_tests/structure.py  Wed Dec 10 13:58:30 2014
@@ -170,6 +170,111 @@
         self.assertEqual(len(data), 
len(cdp.structure.structural_data[1].mol[0].atom_name))
         i = 0
         for res_num, res_name, atom_name, pos in 
cdp.structure.atom_loop(selection=selection, model_num=2, res_num_flag=True, 
res_name_flag=True, atom_name_flag=True, pos_flag=True):
+            self.assertEqual(atom_name, data[i][0])
+            self.assertEqual(res_name, data[i][1])
+            self.assertEqual(res_num, data[i][2])
+            self.assertAlmostEqual(pos[0][0], data[i][3])
+            self.assertAlmostEqual(pos[0][1], data[i][4])
+            self.assertAlmostEqual(pos[0][2], data[i][5])
+            i += 1
+
+
+    def test_align_molecules(self):
+        """Test the U{structure.align user 
function<http://www.nmr-relax.com/manual/structure_align.html>} for aligning 
different molecules in one pipe."""
+
+        # Path of the PDB file.
+        path = status.install_path + 
sep+'test_suite'+sep+'shared_data'+sep+'diffusion_tensor'+sep+'spheroid'
+
+        # Load the reference structure.
+        self.interpreter.structure.read_pdb('uniform.pdb', dir=path, 
set_mol_name='ref')
+
+        # Delete a residue and atom.
+        self.interpreter.structure.delete("#ref:8")
+        self.interpreter.structure.delete("#ref:2@N")
+
+        # Output PDB to stdout to help in debugging.
+        self.interpreter.structure.write_pdb(file=sys.stdout)
+
+        # Load the PDB twice as different models.
+        self.interpreter.structure.read_pdb('uniform.pdb', dir=path, 
set_mol_name='1')
+        self.interpreter.structure.read_pdb('uniform.pdb', dir=path, 
set_mol_name='2')
+
+        # Delete a residue and atom from these two structures.
+        self.interpreter.structure.delete("#1,2:12")
+        self.interpreter.structure.delete("#1,2:20@H")
+
+        # Translate and rotate the models.
+        R = zeros((3, 3), float64)
+        axis_angle_to_R(array([1, 0, 0], float64), 1.0, R)
+        self.interpreter.structure.rotate(R=R, model=1, atom_id='#1')
+        axis_angle_to_R(array([0, 0, 1], float64), 2.0, R)
+        self.interpreter.structure.rotate(R=R, model=2, atom_id='#2')
+        self.interpreter.structure.translate(T=[1., 1., 1.], model=1, 
atom_id='#1')
+        self.interpreter.structure.translate(T=[0., 0., 1.], model=2, 
atom_id='#2')
+
+        # The alignment.
+        self.interpreter.structure.align(molecules=['ref', '1', '2'], 
method='fit to first', atom_id='@N,H')
+
+        # Output PDB to stdout to help in debugging.
+        self.interpreter.structure.write_pdb(file=sys.stdout)
+
+        # The atomic data.
+        data = [
+            ["N", "NH",  1,   0.000,  0.000,  0.000],
+            ["H", "NH",  1,   0.000,  0.000, -1.020],
+            ["N", "NH",  2,   0.000,  0.000,  0.000],
+            ["H", "NH",  2,   0.883,  0.000, -0.510],
+            ["N", "NH",  3,   0.000,  0.000,  0.000],
+            ["H", "NH",  3,   0.883,  0.000,  0.510],
+            ["N", "NH",  4,   0.000,  0.000,  0.000],
+            ["H", "NH",  4,   0.000,  0.000,  1.020],
+            ["N", "NH",  5,   0.000,  0.000,  0.000],
+            ["H", "NH",  5,   0.000,  0.000, -1.020],
+            ["N", "NH",  6,   0.000,  0.000,  0.000],
+            ["H", "NH",  6,   0.273,  0.840, -0.510],
+            ["N", "NH",  7,   0.000,  0.000,  0.000],
+            ["H", "NH",  7,   0.273,  0.840,  0.510],
+            ["N", "NH",  8,   0.000,  0.000,  0.000],
+            ["H", "NH",  8,   0.000,  0.000,  1.020],
+            ["N", "NH",  9,   0.000,  0.000,  0.000],
+            ["H", "NH",  9,  -0.000,  0.000, -1.020],
+            ["N", "NH", 10,   0.000,  0.000,  0.000],
+            ["H", "NH", 10,  -0.715,  0.519, -0.510],
+            ["N", "NH", 11,   0.000,  0.000,  0.000],
+            ["H", "NH", 11,  -0.715,  0.519,  0.510],
+            #["N", "NH", 12,   0.000,  0.000,  0.000],
+            #["H", "NH", 12,  -0.000,  0.000,  1.020],
+            ["N", "NH", 13,   0.000,  0.000,  0.000],
+            ["H", "NH", 13,  -0.000, -0.000, -1.020],
+            ["N", "NH", 14,   0.000,  0.000,  0.000],
+            ["H", "NH", 14,  -0.715, -0.519, -0.510],
+            ["N", "NH", 15,   0.000,  0.000,  0.000],
+            ["H", "NH", 15,  -0.715, -0.519,  0.510],
+            ["N", "NH", 16,   0.000,  0.000,  0.000],
+            ["H", "NH", 16,  -0.000, -0.000,  1.020],
+            ["N", "NH", 17,   0.000,  0.000,  0.000],
+            ["H", "NH", 17,   0.000, -0.000, -1.020],
+            ["N", "NH", 18,   0.000,  0.000,  0.000],
+            ["H", "NH", 18,   0.273, -0.840, -0.510],
+            ["N", "NH", 19,   0.000,  0.000,  0.000],
+            ["H", "NH", 19,   0.273, -0.840,  0.510],
+            ["N", "NH", 20,   0.000,  0.000,  0.000],
+            #["H", "NH", 20,   0.000, -0.000,  1.020]
+        ]
+
+        # The selection object.
+        selection = cdp.structure.selection()
+
+        # Check the molecules.
+        self.assertEqual(len(data), 
len(cdp.structure.structural_data[0].mol[0].atom_name))
+        self.assertEqual(len(data), 
len(cdp.structure.structural_data[0].mol[1].atom_name))
+        self.assertEqual(len(data), 
len(cdp.structure.structural_data[0].mol[2].atom_name))
+        current_mol = ''
+        for mol_name, res_num, res_name, atom_name, pos in 
cdp.structure.atom_loop(selection=selection, model_num=1, mol_name_flag=True, 
res_num_flag=True, res_name_flag=True, atom_name_flag=True, pos_flag=True):
+            print mol_name, res_num, res_name, atom_name, pos
+            if mol_name != current_mol:
+                current_mol = mol_name
+                i = 0
             self.assertEqual(atom_name, data[i][0])
             self.assertEqual(res_name, data[i][1])
             self.assertEqual(res_num, data[i][2])




Related Messages


Powered by MHonArc, Updated Wed Dec 10 14:20:02 2014