Author: bugman
Date: Sat Nov 1 14:44:03 2014
New Revision: 26399
URL: http://svn.gna.org/viewcvs/relax?rev=26399&view=rev
Log:
Updated the frame_order_solution.py script for directly calculating the frame
order matrix elements.
The MODEL variable has been added in preparation for supporting all model
types, and this is now
added to the file name. The Grace header is now also being automatically
generated and this matches
that for the frame_order_simulation.py script.
Modified:
branches/frame_order_cleanup/test_suite/shared_data/frame_order/sim_vs_pred_matrix/frame_order_solution.py
Modified:
branches/frame_order_cleanup/test_suite/shared_data/frame_order/sim_vs_pred_matrix/frame_order_solution.py
URL:
http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/test_suite/shared_data/frame_order/sim_vs_pred_matrix/frame_order_solution.py?rev=26399&r1=26398&r2=26399&view=diff
==============================================================================
---
branches/frame_order_cleanup/test_suite/shared_data/frame_order/sim_vs_pred_matrix/frame_order_solution.py
(original)
+++
branches/frame_order_cleanup/test_suite/shared_data/frame_order/sim_vs_pred_matrix/frame_order_solution.py
Sat Nov 1 14:44:03 2014
@@ -8,11 +8,13 @@
import sys
# relax module imports.
-from generic_fns.angles import wrap_angles
-from maths_fns.frame_order_matrix_ops import
compile_1st_matrix_pseudo_ellipse, compile_2nd_matrix_pseudo_ellipse
-
+from lib.frame_order.pseudo_ellipse import compile_1st_matrix_pseudo_ellipse,
compile_2nd_matrix_pseudo_ellipse
+from lib.geometry.angles import wrap_angles
+from lib.linear_algebra.kronecker_product import kron_prod
# Variables.
+MODEL = 'pseudo-ellipse'
+MODEL_TEXT = 'Pseudo-ellipse frame order model'
TAG = 'in_frame'
# Angular restrictions.
@@ -60,7 +62,10 @@
"""
# The tag.
- self.tag = '_%s_theta_%s_back_calc.agr' % (TAG, lower(VAR))
+ self.tag = '_%s_%s_theta_%s_calc.agr' % (MODEL, TAG, lower(VAR))
+
+ # The Kronecker product of the eigenframe rotation.
+ Rx2_eigen = kron_prod(EIG_FRAME, EIG_FRAME)
# Set the initial storage structures.
self.init_storage()
@@ -89,11 +94,12 @@
theta_z = theta
# Calculate the frame order matrices.
- compile_1st_matrix_pseudo_ellipse(self.first_frame_order[i],
theta_x, theta_y, theta_z)
- compile_2nd_matrix_pseudo_ellipse(self.second_frame_order[i],
theta_x, theta_y, theta_z)
+ if MODEL == 'pseudo-ellipse':
+ compile_1st_matrix_pseudo_ellipse(self.first_frame_order[i],
theta_x, theta_y, theta_z)
+ compile_2nd_matrix_pseudo_ellipse(self.second_frame_order[i],
Rx2_eigen, theta_x, theta_y, theta_z)
# Write the data.
- self.write_data(legends=True)
+ self.write_data()
def get_angle(self, index, deg=False):
@@ -129,36 +135,79 @@
self.count = zeros(INC)
- def write_data(self, legends=False):
+ def write_data(self):
"""Dump the data to files."""
# Open the files.
- file_1st = open('Sij' + self.tag, 'w')
- file_2nd = open('S2ijkl' + self.tag, 'w')
-
- # Legends.
- if legends:
- # Header for first order matrix.
- graph_num = 0
- for i in range(3):
- for j in range(3):
- # Legend.
- file_1st.write('@ s%i legend \"<\qc\s%s%s\N>\"\n' %
(graph_num, i+1, j+1))
-
- # Inc.
- graph_num = graph_num + 1
-
- # Header for second order matrix.
- graph_num = 0
- for i in range(3):
- for j in range(3):
- for k in range(3):
- for l in range(3):
- # Legend.
- file_2nd.write('@ s%i legend
\"<c%s%s.c%s%s>\"\n' % (graph_num, i+1, j+1, k+1, l+1))
-
- # Inc.
- graph_num = graph_num + 1
+ file_1st = open("Sij" + self.tag, 'w')
+ file_2nd = open("Sijkl" + self.tag, 'w')
+ files = [file_1st, file_2nd]
+
+ # The headers.
+ for i in range(2):
+ # Alias the file.
+ file = files[i]
+
+ # The titles.
+ file.write("@with g0\n")
+ if i == 0:
+ file.write("@ world 0, 0, 180, 1\n")
+ else:
+ file.write("@ world 0, -0.5, 180, 1\n")
+ file.write("@ title \"Calculated frame order matrix
elements\"\n")
+ if i == 0:
+ file.write("@ subtitle \"%s, 1\\Sst\\N degree matrix\"\n" %
MODEL_TEXT)
+ else:
+ file.write("@ subtitle \"%s, 2\\Snd\\N degree matrix\"\n" %
MODEL_TEXT)
+
+ # Legend.
+ if i == 0:
+ file.write("@ legend 0.23, 0.55\n")
+ else:
+ file.write("@ legend off\n")
+
+ # Plot data.
+ file.write("@ xaxis bar linewidth 0.5\n")
+ file.write("@ xaxis label \"Cone half-angle \\xq\\f{}\\s%s\\N
(deg.)\"\n" % VAR)
+ file.write("@ xaxis label char size 1.000000\n")
+ file.write("@ xaxis tick major 45\n")
+ file.write("@ xaxis tick major linewidth 0.5\n")
+ file.write("@ xaxis tick minor ticks 3\n")
+ file.write("@ xaxis tick minor linewidth 0.5\n")
+ file.write("@ yaxis bar linewidth 0.5\n")
+ if i == 0:
+ file.write("@ yaxis label \"Order parameter \qS\sij\"\n")
+ else:
+ file.write("@ yaxis label \"Order parameter \qS\sijkl\"\n")
+ file.write("@ yaxis label char size 1.000000\n")
+ file.write("@ yaxis tick major 0.2\n")
+ file.write("@ yaxis tick major linewidth 0.5\n")
+ file.write("@ yaxis tick minor ticks 1\n")
+ file.write("@ yaxis tick minor linewidth 0.5\n")
+
+ # Header for first order matrix.
+ graph_num = 0
+ for i in range(3):
+ for j in range(3):
+ # Legend.
+ file_1st.write("@ s%i legend \"\\q<c\\s%s%s\\N>\"\n" %
(graph_num, i+1, j+1))
+ file_1st.write("@ s%i linewidth 0.5\n" % graph_num)
+
+ # Inc.
+ graph_num = graph_num + 1
+
+ # Header for second order matrix.
+ graph_num = 0
+ for i in range(3):
+ for j in range(3):
+ for k in range(3):
+ for l in range(3):
+ # Legend.
+ file_2nd.write("@ s%i legend
\"<\\qc\\s%s%s\\N.c\\s%s%s\\N>\"\n" % (graph_num, i+1, j+1, k+1, l+1))
+ file_2nd.write("@ s%i linewidth 0.5\n" % graph_num)
+
+ # Inc.
+ graph_num = graph_num + 1
# Loop over the first rotation matrix index.
graph_num = 0
@@ -166,8 +215,8 @@
# Loop over the second rotation matrix index.
for j in range(3):
# Header.
- file_1st.write('@target G0.S%i\n' % graph_num)
- file_1st.write('@type xy\n')
+ file_1st.write("@target G0.S%i\n" % graph_num)
+ file_1st.write("@type xy\n")
# Loop over each time point.
for k in range(INC):
@@ -175,10 +224,10 @@
angle = self.get_angle(k, deg=True)
# Write.
- file_1st.write('%s %s\n' % (angle,
self.first_frame_order[k, i, j]))
+ file_1st.write("%s %s\n" % (angle,
self.first_frame_order[k, i, j]))
# Footer.
- file_1st.write('&\n')
+ file_1st.write("&\n")
# Inc.
graph_num = graph_num + 1
@@ -206,6 +255,11 @@
# Inc.
graph_num = graph_num + 1
+ # No autoscaling.
+ file_1st.write("@autoscale onread none\n")
+ file_2nd.write("@autoscale onread none\n")
+
+
# Calculate the frame order.
Frame_order()
_______________________________________________
relax (http://www.nmr-relax.com)
This is the relax-commits mailing list
[email protected]
To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits