Author: tlinnet Date: Thu Jun 19 17:41:49 2014 New Revision: 24153 URL: http://svn.gna.org/viewcvs/relax?rev=24153&view=rev Log: Shifted the computation of Rexpo two loops up. 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=24153&r1=24152&r2=24153&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:41:49 2014 @@ -128,21 +128,15 @@ # Extract the total numbers of experiments, number of spins, number of magnetic field strength, number of offsets, maximum number of dispersion point. NE, NS, NM, NO, ND = back_calc.shape + # 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) # Loop over the spins for si in range(NS): # Loop over the spectrometer frequencies. for mi in range(NM): - - # Extract the values from the higher dimensional arrays. - R2A_si_mi = r20a[0, si, mi, 0, 0] - R2B_si_mi = r20b[0, si, mi, 0, 0] - dw_si_mi = dw[0, si, mi, 0, 0] + # Extract number of points. num_points_si_mi = int(num_points[0, si, mi, 0]) - - # The matrix R that contains all the contributions to the evolution, i.e. relaxation, exchange and chemical shift evolution. - R = rcpmg_3d(R1A=r10a, R1B=r10b, R2A=R2A_si_mi, R2B=R2B_si_mi, pA=pA, pB=pB, dw=dw_si_mi, k_AB=k_AB, k_BA=k_BA) # Loop over the time points, back calculating the R2eff values. for di in range(num_points_si_mi): @@ -156,22 +150,9 @@ Mint = M0 # This matrix is a propagator that will evolve the magnetization with the matrix R for a delay tcp. - R_tcp = R*tcp_si_mi_di R_mat_i = R_mat[0, si, mi, 0, di] - # Test if they are equal. - diff = R_tcp - R_mat_i - if abs(sum(diff)) > 1.e-14: - import sys - print "oh no" - print R_tcp - print R_mat_i - print diff - print abs(sum(diff)) - print si, mi, di - sys.exit() - - Rexpo = matrix_exponential(R_tcp) + Rexpo = matrix_exponential(R_mat_i) # The essential evolution matrix. # This is the first round.