mailr25730 - /branches/frame_order_cleanup/specific_analyses/frame_order/uf.py


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

Header


Content

Posted by edward on September 10, 2014 - 13:41:
Author: bugman
Date: Wed Sep 10 13:41:33 2014
New Revision: 25730

URL: http://svn.gna.org/viewcvs/relax?rev=25730&view=rev
Log:
Implemented the new frame_order.permute_axes backend.

The 3 starting conditions x<y<z, x<z<y, and z<x<y and the two permutations 
'A' and 'B' (for each of
these which do not include the starting permutation) are now supported.  For 
these 6 combinations,
the axis and order parameter permutation and the z-axis inversion are 
selected and applied to the
current system.


Modified:
    branches/frame_order_cleanup/specific_analyses/frame_order/uf.py

Modified: branches/frame_order_cleanup/specific_analyses/frame_order/uf.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/specific_analyses/frame_order/uf.py?rev=25730&r1=25729&r2=25730&view=diff
==============================================================================
--- branches/frame_order_cleanup/specific_analyses/frame_order/uf.py    
(original)
+++ branches/frame_order_cleanup/specific_analyses/frame_order/uf.py    Wed 
Sep 10 13:41:33 2014
@@ -29,7 +29,7 @@
 # relax module imports.
 from lib.arg_check import is_float_array
 from lib.check_types import is_float
-from lib.errors import RelaxError
+from lib.errors import RelaxError, RelaxFault
 from lib.geometry.rotations import euler_to_R_zyz, R_to_euler_zyz
 from lib.warnings import RelaxWarning
 from pipe_control import pipes
@@ -121,6 +121,7 @@
     if cdp.model == MODEL_PSEUDO_ELLIPSE:
         cone_sigma_max = cdp.cone_sigma_max
     angles = array([cdp.cone_theta_y, cdp.cone_theta_x, cone_sigma_max], 
float64)
+    y, x, z = angles
 
     # Generate the eigenframe of the motion.
     frame = zeros((3, 3), float64)
@@ -128,19 +129,61 @@
 
     # Start printout.
     print("\nOriginal parameters:")
+    print("%-20s %20.10f" % ("cone_theta_x", cdp.cone_theta_x))
+    print("%-20s %20.10f" % ("cone_theta_y", cdp.cone_theta_y))
+    print("%-20s %20.10f" % ("cone_sigma_max", cone_sigma_max))
     print("%-20s %20.10f" % ("eigen_alpha", cdp.eigen_alpha))
     print("%-20s %20.10f" % ("eigen_beta", cdp.eigen_beta))
     print("%-20s %20.10f" % ("eigen_gamma", cdp.eigen_gamma))
     print("%-20s\n%s" % ("eigenframe", frame))
-    print("%-20s %20.10f" % ("cone_theta_x", cdp.cone_theta_x))
-    print("%-20s %20.10f" % ("cone_theta_y", cdp.cone_theta_y))
-    print("%-20s %20.10f" % ("cone_sigma_max", cone_sigma_max))
-
-    # The permutation with the condition that cone_theta_x <= cone_theta_y.
-    if angles[1] <= angles[2]:
-        perm = [2, 0, 1]
+    print("\nPermutation '%s':" % permutation)
+
+    # The starting condition x <= y <= z.
+    if x <= y and y <= z:
+        # Printout.
+        print("%-20s %-20s" % ("Starting condition", "x <= y <= z"))
+
+        # The permutation and axis inversion.
+        if permutation == 'A':
+            perm = [0, 2, 1]
+            z_factor = -1.0
+        else:
+            perm = [2, 0, 1]
+            z_factor = 1.0
+
+    # The starting condition x <= z <= y.
+    elif x <= z and z <= y:
+        # Printout.
+        print("%-20s %-20s" % ("Starting condition", "x <= z <= y"))
+
+        # The permutation and axis inversion.
+        if permutation == 'A':
+            perm = [0, 2, 1]
+            z_factor = -1.0
+        else:
+            perm = [1, 2, 0]
+            z_factor = -1.0
+
+    # The starting condition z <= x <= y.
+    elif z <= x  and x <= y:
+        # Printout.
+        print("%-20s %-20s" % ("Starting condition", "z <= x <= y"))
+
+        # The permutation and axis inversion.
+        if permutation == 'A':
+            perm = [1, 2, 0]
+            z_factor = 1.0
+        else:
+            perm = [2, 1, 0]
+            z_factor = -1.0
+
+    # Cannot be here.
     else:
-        perm = [1, 2, 0]
+        raise RelaxFault
+
+    # Printout.
+    print("%-20s %-20s" % ("permutation", perm))
+    print("%-20s %-20s" % ("z-axis inversion", z_factor))
 
     # Permute the angles.
     cdp.cone_theta_y = angles[perm[0]]
@@ -148,22 +191,21 @@
     if cdp.model == MODEL_PSEUDO_ELLIPSE:
         cdp.cone_sigma_max = angles[perm[2]]
 
-    # Permute the axes.
-    frame_new = transpose(array([frame[:, perm[0]], frame[:, perm[1]], 
frame[:, perm[2]]], float64))
+    # Permute the axes and invert the z-axis as necessary.
+    frame_new = transpose(array([frame[:, perm[0]], frame[:, perm[1]], 
z_factor*frame[:, perm[2]]], float64))
 
     # Convert the permuted frame to Euler angles and store them.
     cdp.eigen_alpha, cdp.eigen_beta, cdp.eigen_gamma = 
R_to_euler_zyz(frame_new)
 
     # End printout.
     print("\nPermuted parameters:")
-    print("%-20s %20s" % ("permutation", perm))
+    print("%-20s %20.10f" % ("cone_theta_x", cdp.cone_theta_x))
+    print("%-20s %20.10f" % ("cone_theta_y", cdp.cone_theta_y))
+    print("%-20s %20.10f" % ("cone_sigma_max", cdp.cone_sigma_max))
     print("%-20s %20.10f" % ("eigen_alpha", cdp.eigen_alpha))
     print("%-20s %20.10f" % ("eigen_beta", cdp.eigen_beta))
     print("%-20s %20.10f" % ("eigen_gamma", cdp.eigen_gamma))
     print("%-20s\n%s" % ("eigenframe", frame_new))
-    print("%-20s %20.10f" % ("cone_theta_x", cdp.cone_theta_x))
-    print("%-20s %20.10f" % ("cone_theta_y", cdp.cone_theta_y))
-    print("%-20s %20.10f" % ("cone_sigma_max", cdp.cone_sigma_max))
 
 
 def pivot(pivot=None, order=1, fix=False):




Related Messages


Powered by MHonArc, Updated Wed Sep 10 14:00:03 2014