mailr24194 - /branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py


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

Header


Content

Posted by tlinnet on June 20, 2014 - 10:54:
Author: tlinnet
Date: Fri Jun 20 10:54:01 2014
New Revision: 24194

URL: http://svn.gna.org/viewcvs/relax?rev=24194&view=rev
Log:
Implemented same functionality in mmq_2site_sq_dq_zq.

Problem, following system test fails!
test_korzhnev_2005_15n_dq_data
test_korzhnev_2005_15n_mq_data
test_korzhnev_2005_15n_sq_data
test_korzhnev_2005_1h_mq_data
test_korzhnev_2005_1h_sq_data
test_korzhnev_2005_all_data
test_korzhnev_2005_all_data_disp_speed_bug

Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion 
models for Clustered analysis.

Modified:
    branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py

Modified: branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py?rev=24194&r1=24193&r2=24194&view=diff
==============================================================================
--- branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py     (original)
+++ branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py     Fri Jun 20 
10:54:01 2014
@@ -378,30 +378,31 @@
     # Extract shape of experiment.
     NS, NM, NO = num_points.shape
 
+    # Populate the m1 and m2 matrices (only once per function call for 
speed).
+    m1_mat = populate_matrix_rankN(R20A=R20A, R20B=R20B, dw=dw, k_AB=k_AB, 
k_BA=k_BA, tcp=tcp)
+    m2_mat = populate_matrix_rankN(R20A=R20A, R20B=R20B, dw=-dw, k_AB=k_AB, 
k_BA=k_BA, tcp=tcp)
+
+    # The A+/- matrices.
+    A_pos_mat = matrix_exponential_rankN(m1_mat)
+    A_neg_mat = matrix_exponential_rankN(m2_mat)
+
     # Loop over spins.
     for si in range(NS):
         # Loop over the spectrometer frequencies.
         for mi in range(NM):
             # Loop over offsets:
             for oi in range(NO):
-                # Extract parameters from array.
-                r20a_i = R20A[si, mi, oi, 0]
-                r20b_i = R20B[si, mi, oi, 0]
-                dw_i = dw[si, mi, oi, 0]
+                # Extract number of points.
                 num_points_i = num_points[si, mi, oi]
-
-                # Populate the m1 and m2 matrices (only once per function 
call for speed).
-                populate_matrix(matrix=m1, R20A=r20a_i , R20B=r20b_i, 
dw=dw_i, k_AB=k_AB, k_BA=k_BA)
-                populate_matrix(matrix=m2, R20A=r20a_i , R20B=r20b_i, 
dw=-dw_i, k_AB=k_AB, k_BA=k_BA)
 
                 # Loop over the time points, back calculating the R2eff 
values.
                 for i in range(num_points_i):
                     # The A+/- matrices.
-                    A_pos = matrix_exponential(m1*tcp[si, mi, oi, i])
-                    A_neg = matrix_exponential(m2*tcp[si, mi, oi, i])
+                    A_pos_i = A_pos_mat[si, mi, oi, i]
+                    A_neg_i = A_neg_mat[si, mi, oi, i]
 
                     # The evolution for one n.
-                    evol_block = dot(A_pos, dot(A_neg, dot(A_neg, A_pos)))
+                    evol_block = dot(A_pos_i, dot(A_neg_i, dot(A_neg_i, 
A_pos_i)))
 
                     # The full evolution.
                     evol = square_matrix_power(evol_block, power[si, mi, oi, 
i])




Related Messages


Powered by MHonArc, Updated Fri Jun 20 11:00:03 2014