mailr21191 - in /branches/relax_disp/lib/dispersion: mq_ns_cpmg_2site.py ns_cpmg_2site_star.py


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

Header


Content

Posted by edward on October 21, 2013 - 08:55:
Author: bugman
Date: Mon Oct 21 08:55:18 2013
New Revision: 21191

URL: http://svn.gna.org/viewcvs/relax?rev=21191&view=rev
Log:
Shifted all of the numerical dispersion code to use the internal matrix power 
function.

Instead of using the numpy.linalg.matrix_power() function, the relax
lib.linear_algebra.square_matrix_power() function is being used instead.  
This allows the code to
run on many older systems, as the numpy function is relatively new.


Modified:
    branches/relax_disp/lib/dispersion/mq_ns_cpmg_2site.py
    branches/relax_disp/lib/dispersion/ns_cpmg_2site_star.py

Modified: branches/relax_disp/lib/dispersion/mq_ns_cpmg_2site.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/lib/dispersion/mq_ns_cpmg_2site.py?rev=21191&r1=21190&r2=21191&view=diff
==============================================================================
--- branches/relax_disp/lib/dispersion/mq_ns_cpmg_2site.py (original)
+++ branches/relax_disp/lib/dispersion/mq_ns_cpmg_2site.py Mon Oct 21 
08:55:18 2013
@@ -35,12 +35,12 @@
 # Python module imports.
 from math import fabs, log
 from numpy import array, conj, dot, float64
-from numpy.linalg import matrix_power
 
 # relax module imports.
 from lib.dispersion.ns_matrices import rcpmg_3d
 from lib.float import isNaN
 from lib.linear_algebra.matrix_exponential import matrix_exponential
+from lib.linear_algebra.matrix_power import square_matrix_power
 
 
 def populate_matrix(matrix=None, r20=None, dw=None, dwH=None, k_AB=None, 
k_BA=None):
@@ -141,16 +141,16 @@
             fact = int(power[i] / 2)
 
             # (M1.M2.M2.M1)^(n/2)
-            A = matrix_power(M1_M2_M2_M1, fact)
+            A = square_matrix_power(M1_M2_M2_M1, fact)
 
             # (M2*.M1*.M1*.M2*)^(n/2)
-            B = matrix_power(M2_M1_M1_M2_star, fact)
+            B = square_matrix_power(M2_M1_M1_M2_star, fact)
 
             # (M2.M1.M1.M2)^(n/2)
-            C = matrix_power(M2_M1_M1_M2, fact)
+            C = square_matrix_power(M2_M1_M1_M2, fact)
 
             # (M1*.M2*.M2*.M1*)^(n/2)
-            D = matrix_power(M1_M2_M2_M1_star, fact)
+            D = square_matrix_power(M1_M2_M2_M1_star, fact)
 
         # Matrices for odd n.
         else:
@@ -158,19 +158,19 @@
             fact = int((power[i] - 1) / 2)
 
             # (M1.M2.M2.M1)^((n-1)/2).M1.M2
-            A = matrix_power(M1_M2_M2_M1, fact)
+            A = square_matrix_power(M1_M2_M2_M1, fact)
             A = dot(A, M1_M2)
 
             # (M1*.M2*.M2*.M1*)^((n-1)/2).M1*.M2*
-            B = matrix_power(M1_M2_M2_M1_star, fact)
+            B = square_matrix_power(M1_M2_M2_M1_star, fact)
             B = dot(B, M1_M2_star)
 
             # (M2.M1.M1.M2)^((n-1)/2).M2.M1
-            C = matrix_power(M2_M1_M1_M2, fact)
+            C = square_matrix_power(M2_M1_M1_M2, fact)
             C = dot(C, M2_M1)
 
             # (M2*.M1*.M1*.M2*)^((n-1)/2).M2*.M1*
-            D = matrix_power(M2_M1_M1_M2_star, fact)
+            D = square_matrix_power(M2_M1_M1_M2_star, fact)
             D = dot(D, M2_M1_star)
 
         # The next lines calculate the R2eff using a two-point 
approximation, i.e. assuming that the decay is mono-exponential.

Modified: branches/relax_disp/lib/dispersion/ns_cpmg_2site_star.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/lib/dispersion/ns_cpmg_2site_star.py?rev=21191&r1=21190&r2=21191&view=diff
==============================================================================
--- branches/relax_disp/lib/dispersion/ns_cpmg_2site_star.py (original)
+++ branches/relax_disp/lib/dispersion/ns_cpmg_2site_star.py Mon Oct 21 
08:55:18 2013
@@ -38,11 +38,11 @@
 # Python module imports.
 from math import log
 from numpy import add, complex, conj, dot
-from numpy.linalg import matrix_power
 
 # relax module imports.
 from lib.float import isNaN
 from lib.linear_algebra.matrix_exponential import matrix_exponential
+from lib.linear_algebra.matrix_power import square_matrix_power
 
 
 def r2eff_ns_cpmg_2site_star(Rr=None, Rex=None, RCS=None, R=None, M0=None, 
r20a=None, r20b=None, dw=None, inv_tcpmg=None, tcp=None, back_calc=None, 
num_points=None, power=None):
@@ -102,7 +102,7 @@
         prop_2 = dot(dot(eR_tcp, matrix_exponential(cR2*tcp[i])), eR_tcp)
 
         # Now create the total propagator that will evolve the magnetization 
under the CPMG train, i.e. it applies the above tau-180-tau-tau-180-tau so 
many times as required for the CPMG frequency under consideration.
-        prop_total = matrix_power(prop_2, power[i])
+        prop_total = square_matrix_power(prop_2, power[i])
 
         # Now we apply the above propagator to the initial magnetization 
vector - resulting in the magnetization that remains after the full CPMG 
pulse train.  It is called M of t (t is the time after the CPMG train).
         Moft = dot(prop_total, M0)




Related Messages


Powered by MHonArc, Updated Mon Oct 21 09:20:02 2013