Author: tlinnet Date: Mon Jun 16 19:05:38 2014 New Revision: 23992 URL: http://svn.gna.org/viewcvs/relax?rev=23992&view=rev Log: Implemented a frqs_squared calculation in the init of target function. This is to speed up the calculations. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. Modified: branches/disp_spin_speed/target_functions/relax_disp.py 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=23992&r1=23991&r2=23992&view=diff ============================================================================== --- branches/disp_spin_speed/target_functions/relax_disp.py (original) +++ branches/disp_spin_speed/target_functions/relax_disp.py Mon Jun 16 19:05:38 2014 @@ -239,6 +239,7 @@ # Create the data structures to fill in. self.cpmg_frqs = deepcopy(numpy_array_ones) self.frqs = deepcopy(numpy_array_zeros) + self.frqs_squared = deepcopy(numpy_array_zeros) self.relax_times = deepcopy(numpy_array_zeros) self.inv_relax_times = deepcopy(numpy_array_zeros) self.tau_cpmg = deepcopy(numpy_array_zeros) @@ -262,6 +263,7 @@ # Fill the frequency. frq = frqs[ei][si][mi] self.frqs[ei][si][mi][:] = frq + self.frqs_squared[ei][si][mi][:] = frq**2 # Fill the relaxation time. relax_time = relax_times[ei][mi] @@ -969,7 +971,7 @@ kex = params[self.end_index[1]] # Convert phi_ex from ppm^2 to (rad/s)^2. Use the out argument, to pass directly to structure. - multiply( multiply.outer( phi_ex.reshape(self.NE, self.NS), self.nm_no_nd_ones ), self.frqs*self.frqs, out=self.phi_ex_struct ) + multiply( multiply.outer( phi_ex.reshape(self.NE, self.NS), self.nm_no_nd_ones ), self.frqs_squared, out=self.phi_ex_struct ) # Reshape R20 to per experiment, spin and frequency. self.r20_struct[:] = multiply.outer( R20.reshape(self.NE, self.NS, self.NM), self.no_nd_ones ) @@ -1066,9 +1068,8 @@ r20_index = mi + si*self.num_frq # Convert phi_ex (or rex) from ppm^2 to (rad/s)^2. - frq2 = self.frqs[0][si][mi][0][0]**2 - rex_B_scaled = rex_B[si] * frq2 - rex_C_scaled = rex_C[si] * frq2 + rex_B_scaled = rex_B[si] * self.frqs_squared[0][si][mi][0][0] + rex_C_scaled = rex_C[si] * self.frqs_squared[0][si][mi][0][0] # Back calculate the R2eff values. r2eff_LM63_3site(r20=R20[r20_index], rex_B=rex_B_scaled, rex_C=rex_C_scaled, quart_kB=quart_kB, quart_kC=quart_kC, cpmg_frqs=self.cpmg_frqs[0][mi][0], back_calc=self.back_calc[0][si][mi][0], num_points=self.num_disp_points[0][si][mi][0]) @@ -1104,7 +1105,7 @@ kex = params[self.end_index[1]] # Convert phi_ex from ppm^2 to (rad/s)^2. Use the out argument, to pass directly to structure. - multiply( multiply.outer( phi_ex.reshape(self.NE, self.NS), self.nm_no_nd_ones ), self.frqs*self.frqs, out=self.phi_ex_struct ) + multiply( multiply.outer( phi_ex.reshape(self.NE, self.NS), self.nm_no_nd_ones ), self.frqs_squared, out=self.phi_ex_struct ) # Reshape R20 to per experiment, spin and frequency. self.r20_struct[:] = multiply.outer( R20.reshape(self.NE, self.NS, self.NM), self.no_nd_ones ) @@ -1143,7 +1144,7 @@ kex = params[self.end_index[1]] # Convert phi_ex from ppm^2 to (rad/s)^2. Use the out argument, to pass directly to structure. - multiply( multiply.outer( phi_ex.reshape(self.NE, self.NS), self.nm_no_nd_ones ), self.frqs*self.frqs, out=self.phi_ex_struct ) + multiply( multiply.outer( phi_ex.reshape(self.NE, self.NS), self.nm_no_nd_ones ), self.frqs_squared, out=self.phi_ex_struct ) # Reshape R20 to per experiment, spin and frequency. self.r20_struct[:] = multiply.outer( R20.reshape(self.NE, self.NS, self.NM), self.no_nd_ones )