Author: tlinnet Date: Tue May 6 17:22:17 2014 New Revision: 23004 URL: http://svn.gna.org/viewcvs/relax?rev=23004&view=rev Log: Speed-up. Moved the calculation of deltaR2 and alpha_m out of library function. sr #3154: (https://gna.org/support/?3154) Implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales. This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging Modified: trunk/lib/dispersion/b14.py trunk/target_functions/relax_disp.py Modified: trunk/lib/dispersion/b14.py URL: http://svn.gna.org/viewcvs/relax/trunk/lib/dispersion/b14.py?rev=23004&r1=23003&r2=23004&view=diff ============================================================================== --- trunk/lib/dispersion/b14.py (original) +++ trunk/lib/dispersion/b14.py Tue May 6 17:22:17 2014 @@ -102,7 +102,7 @@ from numpy import arccosh, cos, cosh, log, sin, sinh, sqrt, power -def r2eff_B14(r20a=None, r20b=None, pA=None, pB=None, dw=None, kex=None, k_AB=None, k_BA=None, ncyc=None, inv_tcpmg=None, tcp=None, back_calc=None, num_points=None): +def r2eff_B14(r20a=None, r20b=None, pA=None, pB=None, dw=None, kex=None, k_AB=None, k_BA=None, deltaR2=None, alpha_m=None, ncyc=None, inv_tcpmg=None, tcp=None, back_calc=None, num_points=None): """Calculate the R2eff values for the CR72 model. See the module docstring for details. @@ -124,6 +124,10 @@ @type k_AB: float @keyword k_BA: The rate of exchange from site B to A (rad/s). @type k_BA: float + @keyword deltaR2: The difference r20a - r20b. + @type deltaR2: float + @keyword alpha_m: The Carver and Richards (1972) alpha_minus short notation. alpha_m = deltaR2 + k_AB - k_BA = r20a - r20b + k_AB - k_BA. + @type alpha_m: float @keyword ncyc: The matrix exponential power array. The number of CPMG blocks. @type ncyc: numpy int16, rank-1 array @keyword inv_tcpmg: The inverse of the total duration of the CPMG element (in inverse seconds). @@ -142,8 +146,6 @@ ######################################################################### ##### Baldwins code. ######################################################################### - deltaR2 = r20a - r20b - alpha_m = r20a - r20b + k_AB - k_BA ######################################################################### #get the real and imaginary components of the exchange induced shift Modified: trunk/target_functions/relax_disp.py URL: http://svn.gna.org/viewcvs/relax/trunk/target_functions/relax_disp.py?rev=23004&r1=23003&r2=23004&view=diff ============================================================================== --- trunk/target_functions/relax_disp.py (original) +++ trunk/target_functions/relax_disp.py Tue May 6 17:22:17 2014 @@ -803,6 +803,12 @@ # The R20 index. r20_index = mi + si*self.num_frq + # Repetitive calculations (to speed up calculations). + r20a = R20A[r20_index] + r20b = R20B[r20_index] + deltaR2 = r20a - r20b + alpha_m = deltaR2 + k_AB - k_BA + # Convert dw from ppm to rad/s. dw_frq = dw[si] * self.frqs[ei][si][mi] @@ -813,7 +819,7 @@ aliased_dw = dw_frq # Back calculate the R2eff values. - r2eff_B14(r20a=R20A[r20_index], r20b=R20B[r20_index], pA=pA, pB=pB, dw=dw_frq, kex=kex, k_AB=k_AB, k_BA=k_BA, ncyc=self.power[ei][mi], inv_tcpmg=self.inv_relax_times[ei][mi], tcp=self.tau_cpmg[ei][mi], back_calc=self.back_calc[ei][si][mi][0], num_points=self.num_disp_points[ei][si][mi][0]) + r2eff_B14(r20a=r20a, r20b=r20b, pA=pA, pB=pB, dw=dw_frq, kex=kex, k_AB=k_AB, k_BA=k_BA, deltaR2=deltaR2, alpha_m=alpha_m, ncyc=self.power[ei][mi], inv_tcpmg=self.inv_relax_times[ei][mi], tcp=self.tau_cpmg[ei][mi], back_calc=self.back_calc[ei][si][mi][0], num_points=self.num_disp_points[ei][si][mi][0]) # For all missing data points, set the back-calculated value to the measured values so that it has no effect on the chi-squared value. for di in range(self.num_disp_points[ei][si][mi][0]): @@ -825,7 +831,6 @@ # Return the total chi-squared value. return chi2_sum - def func_CR72(self, params):