mailr27143 - /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 19, 2014 - 11:01:
Author: bugman
Date: Fri Dec 19 11:01:02 2014
New Revision: 27143

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

This will be used to implement the mapping of inter-atomic vector angular 
fluctuations between
structures via a new 'measure' keyword argument for the 
structure.atomic_fluctuations user function.


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=27143&r1=27142&r2=27143&view=diff
==============================================================================
--- trunk/test_suite/system_tests/structure.py  (original)
+++ trunk/test_suite/system_tests/structure.py  Fri Dec 19 11:01:02 2014
@@ -21,7 +21,7 @@
 
 # Python module imports.
 from math import sqrt
-from numpy import array, float64, std, zeros
+from numpy import array, average, float64, std, zeros
 from numpy.linalg import norm
 from os import sep
 from re import search
@@ -31,8 +31,9 @@
 # relax module imports.
 from data_store import Relax_data_store; ds = Relax_data_store()
 from pipe_control.mol_res_spin import count_spins, return_spin, spin_loop
+from lib.errors import RelaxError, RelaxNoPdbError
 from lib.geometry.rotations import axis_angle_to_R, euler_to_R_zyz
-from lib.errors import RelaxError, RelaxNoPdbError
+from lib.geometry.vectors import vector_angle_acos
 from lib.io import DummyFileObject
 from status import Status; status = Status()
 from test_suite.system_tests.base_classes import SystemTestCase
@@ -328,6 +329,49 @@
         n =  array([[ 9.464,  -9.232,  27.573], [ 9.211,  -9.425,  26.970], 
[ 7.761,  -6.392,  27.161]], float64)
         ca = array([[10.302,  -8.195,  26.930], [10.077,  -8.221,  26.720], 
[ 9.256,  -6.332,  27.183]], float64)
         sd = std(array([norm(n[0] - ca[0]), norm(n[1] - ca[1]), norm(n[2] - 
ca[2])], float64), ddof=1)
+        expected = []
+        expected.append("# %18s %20s\n" % (":4@N", ":4@CA"))
+        expected.append("%20.15f %20.15f\n" % (0.0, sd))
+        expected.append("%20.15f %20.15f\n" % (sd, 0.0))
+
+        # Check the file.
+        lines = file.readlines()
+        self.assertEqual(len(expected), len(lines))
+        for i in range(len(lines)):
+            self.assertEqual(expected[i], lines[i])
+
+
+    def test_atomic_fluctuations_angle(self):
+        """Check the angular fluctuations calculated by the 
structure.atomic_fluctuations user function.
+
+        This checks the text file (with the format argument set to text) of 
interatomic angle fluctuations calculated by the 
U{structure.atomic_fluctuations user 
function<http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html>}.
+        """
+
+        # Load the file.
+        path = status.install_path + 
sep+'test_suite'+sep+'shared_data'+sep+'structures'
+        self.interpreter.structure.read_pdb('web_of_motion.pdb', dir=path)
+
+        # Run the structure.atomic_fluctuations user function and collect 
the results in a dummy file object.
+        file = DummyFileObject()
+        self.interpreter.structure.atomic_fluctuations(measure='angles', 
atom_id='@N,CA', file=file, format='text')
+
+        # The atom positions.
+        n =  array([[ 9.464,  -9.232,  27.573], [ 9.211,  -9.425,  26.970], 
[ 7.761,  -6.392,  27.161]], float64)
+        ca = array([[10.302,  -8.195,  26.930], [10.077,  -8.221,  26.720], 
[ 9.256,  -6.332,  27.183]], float64)
+
+        # The interatom vectors.
+        vectors = ca - n
+
+        # The inter-vector angles to the average.
+        vect_ave = average(vectors, axis=0)
+        angles = [
+            vector_angle_acos(vect_ave, vectors[0]),
+            vector_angle_acos(vect_ave, vectors[1]),
+            vector_angle_acos(vect_ave, vectors[2])
+        ]
+
+        # The fluctuations.
+        sd = std(array(angles, float64), ddof=1)
         expected = []
         expected.append("# %18s %20s\n" % (":4@N", ":4@CA"))
         expected.append("%20.15f %20.15f\n" % (0.0, sd))




Related Messages


Powered by MHonArc, Updated Fri Dec 19 11:40:02 2014