I think I have to leave all of that text for the release notes ;)

Edward

On 10 June 2014 01:01,  <[email protected]> wrote:
> Author: tlinnet
> Date: Tue Jun 10 01:01:53 2014
> New Revision: 23762
>
> URL: http://svn.gna.org/viewcvs/relax?rev=23762&view=rev
> Log:
> Removed all looping over spin and spectrometer frequency.
>
> This is the last loop!
> Wuhu.
>
> 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=23762&r1=23761&r2=23762&view=diff
> ==============================================================================
> --- branches/disp_spin_speed/target_functions/relax_disp.py     (original)
> +++ branches/disp_spin_speed/target_functions/relax_disp.py     Tue Jun 10 
> 01:01:53 2014
> @@ -417,8 +417,6 @@
>              # All numpy arrays have to have same shape to allow to multiply 
> together.
>              # The dimensions should be [ei][si][mi][oi][di]. 
> [Experiment][spins][spec. frq][offset][disp points].
>              # The number of disp point can change per spectrometer, so we 
> make the maximum size.
> -            self.R20A_a = deepcopy(self.ones_a)
> -            self.R20B_a = deepcopy(self.ones_a)
>              self.cpmg_frqs_a = deepcopy(self.ones_a)
>              self.num_disp_points_a = deepcopy(self.ones_a)
>              self.back_calc_a = deepcopy(self.ones_a)
> @@ -538,7 +536,7 @@
>
>          # Expand dw to number of axis.
>          dw_axis = dw[None,:,None,None,None]
> -        # Tile tw according to dimensions.
> +        # Tile dw according to dimensions.
>          dw_axis = np.tile(dw_axis, (self.numpy_array_shape[0], 
> self.numpy_array_shape[2],self.numpy_array_shape[3], 
> self.numpy_array_shape[4]))
>
>          # Convert dw from ppm to rad/s.
> @@ -547,23 +545,21 @@
>          # Calculate pA and kex per frequency.
>          pA_arr = pA*self.spins_a
>          kex_arr = kex*self.spins_a + self.not_spins_a
> -
> -        # Loop over the spectrometer frequencies.
> -        for mi in range(self.num_frq):
> -            # Extract number of dispersion points. Always the same per sin.
> -            num_disp_points = self.num_disp_points[0][0][mi][0]
> -
> -            # Loop over the spins.
> -            for si in range(self.num_spins):
> -                # The R20 index.
> -                r20_index = mi + si*self.num_frq
> -
> -                # Store r20a and r20b values per disp point.
> -                self.R20A_a[0][si][mi][0][:num_disp_points] = array( 
> [R20A[r20_index]] * num_disp_points, float64)
> -                self.R20B_a[0][si][mi][0][:num_disp_points]  = array( 
> [R20B[r20_index]] * num_disp_points, float64)
> +
> +        # Reshape R20A and R20B to per experiment, spin and frequency.
> +        R20A_axis = R20A.reshape(self.numpy_array_shape[0], 
> self.numpy_array_shape[1], self.numpy_array_shape[2])
> +        R20B_axis = R20B.reshape(self.numpy_array_shape[0], 
> self.numpy_array_shape[1], self.numpy_array_shape[2])
> +
> +        # Expand R20A and R20B axis to offset and dispersion points.
> +        R20A_axis = R20A_axis[:,:,:,None,None]
> +        R20B_axis = R20B_axis[:,:,:,None,None]
> +
> +        # Tile R20A and R20B according to maximum of dispersion points. 
> Multiply with spin ON array. Add 1.
> +        R20A_axis = np.tile(R20A_axis, (1, 1, 1, 1, 
> self.max_num_disp_points)) * self.spins_a + self.not_spins_a
> +        R20B_axis = np.tile(R20B_axis, (1, 1, 1, 1, 
> self.max_num_disp_points)) * self.spins_a + self.not_spins_a
>
>          ## Back calculate the R2eff values.
> -        r2eff_CR72(r20a=self.R20A_a, r20b=self.R20B_a, pA=pA_arr, 
> dw=dw_frq_a, kex=kex_arr, cpmg_frqs=self.cpmg_frqs_a, 
> back_calc=self.back_calc_a, num_points=self.num_disp_points_a)
> +        r2eff_CR72(r20a=R20A_axis, r20b=R20B_axis, pA=pA_arr, dw=dw_frq_a, 
> kex=kex_arr, cpmg_frqs=self.cpmg_frqs_a, back_calc=self.back_calc_a, 
> num_points=self.num_disp_points_a)
>
>          ## 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.
>          if self.has_missing:
>
>
> _______________________________________________
> relax (http://www.nmr-relax.com)
>
> This is the relax-commits mailing list
> [email protected]
>
> 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

_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-devel mailing list
[email protected]

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-devel

Reply via email to