Author: tlinnet Date: Fri Jun 20 19:44:05 2014 New Revision: 24223 URL: http://svn.gna.org/viewcvs/relax?rev=24223&view=rev Log: Moved parameter conversion for ns r1rho 3site inside lib function. 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_r1rho_3site.py branches/disp_spin_speed/target_functions/relax_disp.py Modified: branches/disp_spin_speed/lib/dispersion/ns_r1rho_3site.py URL: http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/lib/dispersion/ns_r1rho_3site.py?rev=24223&r1=24222&r2=24223&view=diff ============================================================================== --- branches/disp_spin_speed/lib/dispersion/ns_r1rho_3site.py (original) +++ branches/disp_spin_speed/lib/dispersion/ns_r1rho_3site.py Fri Jun 20 19:44:05 2014 @@ -65,7 +65,7 @@ from lib.linear_algebra.matrix_exponential import matrix_exponential, matrix_exponential_rankN -def ns_r1rho_3site(M0=None, r1rho_prime=None, omega=None, offset=None, r1=0.0, pA=None, pB=None, dw_AB=None, dw_AC=None, kex_AB=None, kex_BC=None, kex_AC=None, spin_lock_fields=None, relax_time=None, inv_relax_time=None, back_calc=None, num_points=None): +def ns_r1rho_3site(M0=None, r1rho_prime=None, omega=None, offset=None, r1=0.0, pA=None, pB=None, dw_AB=None, dw_BC=None, kex_AB=None, kex_BC=None, kex_AC=None, spin_lock_fields=None, relax_time=None, inv_relax_time=None, back_calc=None, num_points=None): """The 3-site numerical solution to the Bloch-McConnell equation for R1rho data. This function calculates and stores the R1rho values. @@ -87,8 +87,8 @@ @type pB: float @keyword dw_AB: The chemical exchange difference between states A and B in rad/s. @type dw_AB: numpy float array of rank [NS][NM][NO][ND] - @keyword dw_AC: The chemical exchange difference between states A and C in rad/s. - @type dw_AC: numpy float array of rank [NS][NM][NO][ND] + @keyword dw_BC: The chemical exchange difference between states B and C in rad/s. + @type dw_BC: numpy float array of rank [NS][NM][NO][ND] @keyword kex_AB: The exchange rate between sites A and B for 3-site exchange with kex_AB = k_AB + k_BA (rad.s^-1) @type kex_AB: float @keyword kex_BC: The exchange rate between sites A and C for 3-site exchange with kex_AC = k_AC + k_CA (rad.s^-1) @@ -108,6 +108,7 @@ """ # Once off parameter conversions. + dw_AC = dw_AB + dw_BC pC = 1.0 - pA - pB pA_pB = pA + pB pA_pC = pA + pC Modified: branches/disp_spin_speed/target_functions/relax_disp.py URL: http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/target_functions/relax_disp.py?rev=24223&r1=24222&r2=24223&view=diff ============================================================================== --- branches/disp_spin_speed/target_functions/relax_disp.py (original) +++ branches/disp_spin_speed/target_functions/relax_disp.py Fri Jun 20 19:44:05 2014 @@ -234,6 +234,7 @@ self.dwH_struct = deepcopy(numpy_array_zeros) self.dw_AB_struct = deepcopy(numpy_array_zeros) self.dw_AC_struct = deepcopy(numpy_array_zeros) + self.dw_BC_struct = deepcopy(numpy_array_zeros) self.dwH_AB_struct = deepcopy(numpy_array_zeros) self.dwH_AC_struct = deepcopy(numpy_array_zeros) self.phi_ex_struct = deepcopy(numpy_array_zeros) @@ -764,18 +765,15 @@ @rtype: float """ - # Once off parameter conversions. - dw_AC = dw_AB + dw_BC - # Convert dw from ppm to rad/s. Use the out argument, to pass directly to structure. multiply( multiply.outer( dw_AB.reshape(1, self.NS), self.nm_no_nd_ones ), self.frqs, out=self.dw_AB_struct ) - multiply( multiply.outer( dw_AC.reshape(1, self.NS), self.nm_no_nd_ones ), self.frqs, out=self.dw_AC_struct ) + multiply( multiply.outer( dw_BC.reshape(1, self.NS), self.nm_no_nd_ones ), self.frqs, out=self.dw_BC_struct ) # Reshape R20 to per experiment, spin and frequency. self.r20_struct[:] = multiply.outer( r1rho_prime.reshape(self.NE, self.NS, self.NM), self.no_nd_ones ) # Back calculate the R2eff values for each experiment type. - ns_r1rho_3site(M0=self.M0, r1rho_prime=self.r20_struct, omega=self.chemical_shifts, offset=self.offset, r1=self.r1, pA=pA, pB=pB, dw_AB=self.dw_AB_struct, dw_AC=self.dw_AC_struct, kex_AB=kex_AB, kex_BC=kex_BC, kex_AC=kex_AC, spin_lock_fields=self.spin_lock_omega1, relax_time=self.relax_times, inv_relax_time=self.inv_relax_times, back_calc=self.back_calc, num_points=self.num_disp_points) + ns_r1rho_3site(M0=self.M0, r1rho_prime=self.r20_struct, omega=self.chemical_shifts, offset=self.offset, r1=self.r1, pA=pA, pB=pB, dw_AB=self.dw_AB_struct, dw_BC=self.dw_BC_struct, kex_AB=kex_AB, kex_BC=kex_BC, kex_AC=kex_AC, spin_lock_fields=self.spin_lock_omega1, relax_time=self.relax_times, inv_relax_time=self.inv_relax_times, back_calc=self.back_calc, num_points=self.num_disp_points) # Clean the data for all values, which is left over at the end of arrays. self.back_calc = self.back_calc*self.disp_struct