mailr25728 - in /branches/frame_order_cleanup: specific_analyses/frame_order/uf.py user_functions/frame_order.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 - 11:43:
Author: bugman
Date: Wed Sep 10 11:43:11 2014
New Revision: 25728

URL: http://svn.gna.org/viewcvs/relax?rev=25728&view=rev
Log:
Redesigned the frame_order.permute_axes user function frontend.

Previously only cyclic permutations were considered, however non-cyclic 
permutations are also
allowed when accompanied by an axis inversion.  Therefore 3 combinations 
exist with cone_theta_x <=
cone_theta_y, or 2 when the current combination is excluded.


Modified:
    branches/frame_order_cleanup/specific_analyses/frame_order/uf.py
    branches/frame_order_cleanup/user_functions/frame_order.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=25728&r1=25727&r2=25728&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 11:43:11 2014
@@ -101,8 +101,12 @@
         create_distribution(file=dist, dir=dir, compress_type=compress_type, 
force=force)
 
 
-def permute_axes():
-    """Permute the axes of the motional eigenframe to switch between local 
minima."""
+def permute_axes(permutation='A'):
+    """Permute the axes of the motional eigenframe to switch between local 
minima.
+
+    @keyword permutation:   The permutation to use.  This can be either 'A' 
or 'B' to select between the 3 permutations, excluding the current 
combination.
+    @type permutation:      str
+    """
 
     # Check that the model is valid.
     if cdp.model not in [MODEL_PSEUDO_ELLIPSE, 
MODEL_PSEUDO_ELLIPSE_TORSIONLESS]:

Modified: branches/frame_order_cleanup/user_functions/frame_order.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/user_functions/frame_order.py?rev=25728&r1=25727&r2=25728&view=diff
==============================================================================
--- branches/frame_order_cleanup/user_functions/frame_order.py  (original)
+++ branches/frame_order_cleanup/user_functions/frame_order.py  Wed Sep 10 
11:43:11 2014
@@ -27,6 +27,7 @@
 from specific_analyses.frame_order.uf import num_int_pts, pdb_model, 
permute_axes, pivot, ref_domain, select_model
 from specific_analyses.frame_order.variables import MODEL_DOUBLE_ROTOR, 
MODEL_FREE_ROTOR, MODEL_ISO_CONE, MODEL_ISO_CONE_FREE_ROTOR, 
MODEL_ISO_CONE_TORSIONLESS, MODEL_PSEUDO_ELLIPSE, 
MODEL_PSEUDO_ELLIPSE_FREE_ROTOR, MODEL_PSEUDO_ELLIPSE_TORSIONLESS, 
MODEL_RIGID, MODEL_ROTOR
 from user_functions.data import Uf_info; uf_info = Uf_info()
+from user_functions.data import Uf_tables; uf_tables = Uf_tables()
 from user_functions.objects import Desc_container
 
 
@@ -135,19 +136,40 @@
 uf = uf_info.add_uf('frame_order.permute_axes')
 uf.title = "Permute the axes of the motional eigenframe to switch between 
local minima."
 uf.title_short = "Eigenframe axis permutation."
-# Description.
-uf.desc.append(Desc_container())
-uf.desc[-1].add_paragraph("The pseudo-elliptic frame order models consist of 
multiple solutions as the optimisation space contains multiple local minima.  
Because of the constraint cone_theta_x <= cone_theta_y, there are exactly two 
local minima.  These correspond to permutations of the motional system - the 
eigenframe x, y and z-axes as well as the cone opening angles cone_theta_x, 
cone_theta_y, and cone_sigma_max associated with these axes are 
simultaneously permuted.  But as the mechanics of the cone angles is not 
identical to that of the torsion angle, only one of the two local minima is 
the global minimum.")
-uf.desc[-1].add_paragraph("When optimising the pseudo-elliptic models, 
specifically the '%s' and '%s' model, either of the two local minima can be 
found.  Convergence to the global minimum is not guaranteed.  Therefore this 
user function can be used to permute the motional system to jump from one 
local minimum to the other.  Optimisation will be required as the permuted 
parameters will not be exactly at the minimum." % (MODEL_PSEUDO_ELLIPSE, 
MODEL_PSEUDO_ELLIPSE_TORSIONLESS))
-uf.desc[-1].add_paragraph("The motional system consists of three 
permutations but, because of the cone_theta_x <= cone_theta_y condition, the 
permutation which causes a violation of this constraint will be skipped.")
+uf.add_keyarg(
+    name = "permutation",
+    default = "A",
+    py_type = "str",
+    desc_short = "permutation",
+    desc = "Which of the two permutations 'A' or 'B' to create.  Three 
permutations are possible, and 'A' and 'B' select those which are not the 
starting combination.",
+    wiz_element_type = "combo",
+    wiz_combo_choices = [
+        "A",
+        "B"
+    ],
+    wiz_read_only = True
+)
+# Description.
+uf.desc.append(Desc_container())
+uf.desc[-1].add_paragraph("The pseudo-elliptic frame order models consist of 
multiple solutions as the optimisation space contains multiple local minima.  
Because of the constraint cone_theta_x <= cone_theta_y, there are exactly 
three local minima (out of 6 possible permutations).  These correspond to 
permutations of the motional system - the eigenframe x, y and z-axes as well 
as the cone opening angles cone_theta_x, cone_theta_y, and cone_sigma_max 
associated with these axes.  But as the mechanics of the cone angles is not 
identical to that of the torsion angle, only one of the three local minima is 
the global minimum.")
+uf.desc[-1].add_paragraph("When optimising the pseudo-elliptic models, 
specifically the '%s' and '%s' model, any of the three local minima can be 
found.  Convergence to the global minimum is not guaranteed.  Therefore this 
user function can be used to permute the motional system to jump from one 
local minimum to the other.  Optimisation will be required as the permuted 
parameters will not be exactly at the minimum." % (MODEL_PSEUDO_ELLIPSE, 
MODEL_PSEUDO_ELLIPSE_TORSIONLESS))
+table = uf_tables.add_table(label="table: frame_order.permute_axes 
combinations", caption="The motional eigenframe permutations for the 
frame_order.permute_axes user function.", caption_short="The permutations for 
the frame_order.permute_axes user function.")
+table.add_headings(["Permutation ",  "Axis inversion", "If x < y < z", "If x 
< z < y", "If z < x < y"])
+table.add_row([     "[x', y', z']", "      z        ", "    Self    ", "    
Self    ", "    Self    "])
+table.add_row([     "[x', z', y']", "     -z        ", "     A      ", "     
A      ", "     x      "])
+table.add_row([     "[y', x', z']", "     -z        ", "     x      ", "     
x      ", "     x      "])
+table.add_row([     "[y', z', x']", "      z        ", "     B      ", "     
x      ", "     x      "])
+table.add_row([     "[z', x', y']", "      z        ", "     x      ", "     
x      ", "     A      "])
+table.add_row([     "[z', y', x']", "     -z        ", "     x      ", "     
B      ", "     B      "])
+uf.desc[-1].add_table(table.label)
 # Prompt examples.
 uf.desc.append(Desc_container("Prompt examples"))
-uf.desc[-1].add_paragraph("Simply type:")
-uf.desc[-1].add_prompt("relax> frame_order.permute_axes()")
+uf.desc[-1].add_paragraph("For combination 'A', simply type:")
+uf.desc[-1].add_prompt("relax> frame_order.permute_axes('A')")
 uf.backend = permute_axes
 uf.menu_text = "per&mute_axes"
-uf.wizard_height_desc = 500
-uf.wizard_size = (900, 600)
+uf.wizard_height_desc = 550
+uf.wizard_size = (1000, 750)
 uf.wizard_image = WIZARD_IMAGE_PATH + 'frame_order.png'
 
 




Related Messages


Powered by MHonArc, Updated Wed Sep 10 13:40:03 2014