Author: tlinnet
Date: Wed Jun 25 03:41:02 2014
New Revision: 24305
URL: http://svn.gna.org/viewcvs/relax?rev=24305&view=rev
Log:
Triple speed in NS MMQ 2site, after using numpy.linalg.matrix_power instead
of the lib version in relax.
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=24305&r1=24304&r2=24305&view=diff
==============================================================================
--- branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py (original)
+++ branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py Wed Jun 25
03:41:02 2014
@@ -52,11 +52,11 @@
# Python module imports.
from math import floor
from numpy import array, conj, complex64, dot, einsum, float64, log,
multiply, sum
+from numpy.linalg import matrix_power
# relax module imports.
from lib.float import isNaN
from lib.dispersion.matrix_exponential import
matrix_exponential_rank_NS_NM_NO_ND_x_x
-from lib.linear_algebra.matrix_power import square_matrix_power
# Repetitive calculations (to speed up calculations).
m_r20a = array([
@@ -253,16 +253,16 @@
fact = int(floor(power_i / 2))
# (M1.M2.M2.M1)^(n/2).
- A = square_matrix_power(M1_M2_M2_M1_i, fact)
+ A = matrix_power(M1_M2_M2_M1_i, fact)
# (M2*.M1*.M1*.M2*)^(n/2).
- B = square_matrix_power(M2_M1_M1_M2_star_i, fact)
+ B = matrix_power(M2_M1_M1_M2_star_i, fact)
# (M2.M1.M1.M2)^(n/2).
- C = square_matrix_power(M2_M1_M1_M2_i, fact)
+ C = matrix_power(M2_M1_M1_M2_i, fact)
# (M1*.M2*.M2*.M1*)^(n/2).
- D = square_matrix_power(M1_M2_M2_M1_star_i, fact)
+ D = matrix_power(M1_M2_M2_M1_star_i, fact)
# Matrices for odd number of CPMG blocks.
else:
@@ -270,19 +270,19 @@
fact = int(floor((power_i - 1) / 2))
# (M1.M2.M2.M1)^((n-1)/2).M1.M2.
- A = square_matrix_power(M1_M2_M2_M1_i, fact)
+ A = matrix_power(M1_M2_M2_M1_i, fact)
A = dot(A, M1_M2_i)
# (M1*.M2*.M2*.M1*)^((n-1)/2).M1*.M2*.
- B = square_matrix_power(M1_M2_M2_M1_star_i, fact)
+ B = matrix_power(M1_M2_M2_M1_star_i, fact)
B = dot(B, M1_M2_star_i)
# (M2.M1.M1.M2)^((n-1)/2).M2.M1.
- C = square_matrix_power(M2_M1_M1_M2_i, fact)
+ C = matrix_power(M2_M1_M1_M2_i, fact)
C = dot(C, M2_M1_i)
# (M2*.M1*.M1*.M2*)^((n-1)/2).M2*.M1*.
- D = square_matrix_power(M2_M1_M1_M2_star_i, fact)
+ D = matrix_power(M2_M1_M1_M2_star_i, fact)
D = dot(D, M2_M1_star_i)
# The next lines calculate the R2eff using a two-point
approximation, i.e. assuming that the decay is mono-exponential.
@@ -375,7 +375,7 @@
evol_block_i = evol_block_mat[si, mi, oi, i]
# The full evolution.
- evol = square_matrix_power(evol_block_i, power_i)
+ evol = matrix_power(evol_block_i, power_i)
# The next lines calculate the R2eff using a two-point
approximation, i.e. assuming that the decay is mono-exponential.
Mx = dot(F_vector, dot(evol, M0))
_______________________________________________
relax (http://www.nmr-relax.com)
This is the relax-commits mailing list
relax-commits@xxxxxxx
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