Author: tlinnet
Date: Thu Jun 19 17:42:02 2014
New Revision: 24157
URL: http://svn.gna.org/viewcvs/relax?rev=24157&view=rev
Log:
Inserted intermediate step, to check if the matrix propagator to evolve the
magnetization is equal
when done for lower dimensional data of shape [7][7] and higher dimensional
data of shape [NE][NS][NM][NO][ND][7][7].
A short example is shown at the wiki:
http://wiki.nmr-relax.com/Numpy_linalg#Ellipsis_broadcasting_in_numpy.einsum
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_cpmg_2site_3d.py
Modified: branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py
URL:
http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py?rev=24157&r1=24156&r2=24157&view=diff
==============================================================================
--- branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py (original)
+++ branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py Thu Jun 19
17:42:02 2014
@@ -62,7 +62,7 @@
# relax module imports.
from lib.dispersion.ns_matrices import rcpmg_3d, rcpmg_3d_rankN
from lib.float import isNaN
-from lib.linear_algebra.matrix_exponential import matrix_exponential
+from lib.linear_algebra.matrix_exponential import matrix_exponential,
matrix_exponential_rankN
def r2eff_ns_cpmg_2site_3D(r180x=None, M0=None, r10a=0.0, r10b=0.0,
r20a=None, r20b=None, pA=None, dw=None, dw_orig=None, kex=None,
inv_tcpmg=None, tcp=None, back_calc=None, num_points=None, power=None):
@@ -131,8 +131,9 @@
# The matrix R that contains all the contributions to the evolution,
i.e. relaxation, exchange and chemical shift evolution.
R_mat = rcpmg_3d_rankN(R1A=r10a, R1B=r10b, R2A=r20a, R2B=r20b, pA=pA,
pB=pB, dw=dw, k_AB=k_AB, k_BA=k_BA, tcp=tcp)
- # Holds the Rexpo.
- Rexpo_mat = R_mat * 0.0
+ # This matrix is a propagator that will evolve the magnetization with
the matrix R for a delay tcp.
+ Rexpo_mat = matrix_exponential_rankN(R_mat)
+
# Loop over the spins
for si in range(NS):
# Loop over the spectrometer frequencies.
@@ -148,14 +149,17 @@
# Store the Rexpo. Is it not possible to find the matrix
exponential of higher dimensional data?
Rexpo = matrix_exponential(R_mat_i)
- Rexpo_mat[0, si, mi, 0, di] = Rexpo
+ Rexpo_t = Rexpo_mat[0, si, mi, 0, di]
+
+ diff = Rexpo - Rexpo_t
+ if abs(sum(diff)) > 1e-15:
+ print abs(sum(diff))
+ import sys
+ sys.exit()
# Initial magnetisation.
Mint_mat = tile(M0[None, None, None, None, None, :, None], (NE, NS,
NM, NO, ND, 1, 1) )
r180x_mat = tile(r180x[None, None, None, None, None, :, :], (NE, NS,
NM, NO, ND, 1, 1) )
- #print Mint.shape
- #print r180x_mat.shape
- #print Rexpo_mat.shape
# Loop over the spins
for si in range(NS):
_______________________________________________
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