Hi Troels,

You can take this one step future.  Replace all the following:

- [ei, si, mi][:] with [ei, si, mi, :],
- [0][si, mi] with [0, si, mi],
- [ei, si, mi, oi][:num_disp_points] with [ei, si, mi, oi, :num_disp_points],
- [0, si, mi, 0][di] with [0, si, mi, 0, di]

The important point is that in a pure numpy array structure, you
should never use "][" between any indices.  However I'm not 100% sure
if everything is converted to pure numpy arrays yet, so maybe not
everything can be converted.

Regards,

Edward


On 17 June 2014 13:07,  <[email protected]> wrote:
> Author: tlinnet
> Date: Tue Jun 17 13:07:40 2014
> New Revision: 24026
>
> URL: http://svn.gna.org/viewcvs/relax?rev=24026&view=rev
> Log:
> Replaced index to numpy array from example [0][si][mi][oi] to [0, si, mi, oi].
>
> 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=24026&r1=24025&r2=24026&view=diff
> ==============================================================================
> --- branches/disp_spin_speed/target_functions/relax_disp.py     (original)
> +++ branches/disp_spin_speed/target_functions/relax_disp.py     Tue Jun 17 
> 13:07:40 2014
> @@ -263,39 +263,39 @@
>                  for mi in range(self.NM):
>                      # Fill the frequency.
>                      frq = frqs[ei][si][mi]
> -                    self.frqs[ei][si][mi][:] = frq
> -                    self.frqs_squared[ei][si][mi][:] = frq**2
> +                    self.frqs[ei, si, mi][:] = frq
> +                    self.frqs_squared[ei, si, mi][:] = frq**2
>                      frq_H = frqs_H[ei][si][mi]
> -                    self.frqs_H[ei][si][mi][:] = frq_H
> +                    self.frqs_H[ei, si, mi][:] = frq_H
>
>                      # Fill the relaxation time.
> -                    relax_time = relax_times[ei][mi]
> -                    self.relax_times[ei][si][mi][:] = relax_time
> +                    relax_time = relax_times[ei, mi]
> +                    self.relax_times[ei, si, mi][:] = relax_time
>
>                      # Fill r1.
>                      r1_l = r1[si][mi]
> -                    self.r1[ei][si][mi][:] = r1_l
> +                    self.r1[ei, si, mi][:] = r1_l
>
>                      # Fill chemical shift.
>                      chemical_shift = chemical_shifts[ei][si][mi]
> -                    self.chemical_shifts[ei][si][mi][:] = chemical_shift
> +                    self.chemical_shifts[ei, si, mi][:] = chemical_shift
>
>                      # The inverted relaxation delay.
>                      if model in [MODEL_B14, MODEL_B14_FULL, MODEL_MMQ_CR72, 
> MODEL_NS_CPMG_2SITE_3D, MODEL_NS_CPMG_2SITE_3D_FULL, 
> MODEL_NS_CPMG_2SITE_EXPANDED, MODEL_NS_CPMG_2SITE_STAR, 
> MODEL_NS_CPMG_2SITE_STAR_FULL, MODEL_NS_MMQ_2SITE, MODEL_NS_MMQ_3SITE, 
> MODEL_NS_MMQ_3SITE_LINEAR, MODEL_NS_R1RHO_2SITE, MODEL_NS_R1RHO_3SITE, 
> MODEL_NS_R1RHO_3SITE_LINEAR]:
> -                        self.inv_relax_times[ei][si][mi][:] = 1.0 / 
> relax_time
> +                        self.inv_relax_times[ei, si, mi][:] = 1.0 / 
> relax_time
>
>                      # The number of offset data points.
>                      if len(offset[ei][si][mi]):
> -                        self.num_offsets[ei][si][mi] = 
> len(self.offset[ei][si][mi])
> +                        self.num_offsets[ei, si, mi] = len(self.offset[ei, 
> si, mi])
>                      else:
> -                        self.num_offsets[ei][si][mi] = 0
> +                        self.num_offsets[ei, si, mi] = 0
>
>                      # Loop over offsets.
>                      for oi in range(self.NO):
>                          if cpmg_frqs != None and len(cpmg_frqs[ei][mi][oi]):
>                              cpmg_frqs_list = cpmg_frqs[ei][mi][oi]
>                              num_disp_points = len(cpmg_frqs_list)
> -                            self.cpmg_frqs[ei][si][mi][oi][:num_disp_points] 
> = cpmg_frqs_list
> +                            self.cpmg_frqs[ei, si, mi, oi][:num_disp_points] 
> = cpmg_frqs_list
>
>                              for di in range(num_disp_points):
>                                  cpmg_frq = cpmg_frqs[ei][mi][oi][di]
> @@ -305,42 +305,42 @@
>                                  # Normal value.
>                                  else:
>                                      power = int(round(cpmg_frq * relax_time))
> -                                self.power[ei][si][mi][oi][di] = power
> +                                self.power[ei, si, mi, oi, di] = power
>
>                                  # Recalculate the tau_cpmg times to avoid 
> any user induced truncation in the input files.
>                                  if recalc_tau:
>                                      tau_cpmg = 0.25 * relax_time / power
>                                  else:
>                                      tau_cpmg = 0.25 / frq
> -                                self.tau_cpmg[ei][si][mi][oi][di] = tau_cpmg
> +                                self.tau_cpmg[ei, si, mi, oi, di] = tau_cpmg
>
>                          elif spin_lock_nu1 != None and 
> len(spin_lock_nu1[ei][mi][oi]):
>                              num_disp_points = len( spin_lock_nu1[ei][mi][oi] 
> )
>                          else:
>                              num_disp_points = 0
>
> -                        self.num_disp_points[ei][si][mi][oi] = 
> num_disp_points
> +                        self.num_disp_points[ei, si, mi, oi] = 
> num_disp_points
>
>                          # Get the values and errors.
> -                        self.values[ei][si][mi][oi][:num_disp_points] = 
> values[ei][si][mi][oi]
> -                        self.errors[ei][si][mi][oi][:num_disp_points] = 
> errors[ei][si][mi][oi]
> -                        self.disp_struct[ei][si][mi][oi][:num_disp_points] = 
> ones(num_disp_points)
> +                        self.values[ei, si, mi, oi][:num_disp_points] = 
> values[ei][si][mi][oi]
> +                        self.errors[ei, si, mi, oi][:num_disp_points] = 
> errors[ei][si][mi][oi]
> +                        self.disp_struct[ei, si, mi, oi][:num_disp_points] = 
> ones(num_disp_points)
>
>                          # Loop over dispersion points.
>                          for di in range(num_disp_points):
>                              if missing[ei][si][mi][oi][di]:
>                                  self.has_missing = True
> -                                self.missing[ei][si][mi][oi][di] = 1.0
> +                                self.missing[ei, si, mi, oi, di] = 1.0
>
>                              # For R1rho data.
>                              if model in MODEL_LIST_R1RHO_FULL and model != 
> MODEL_NOREX:
> -                                self.disp_struct[ei][si][mi][oi][di] = 1.0
> +                                self.disp_struct[ei, si, mi, oi, di] = 1.0
>                                  # Get the tilt angles.
> -                                self.tilt_angles[ei][si][mi][oi][di] = 
> tilt_angles[ei][si][mi][oi][di]
> -                                self.offset[ei][si][mi][oi] = 
> offset[ei][si][mi][oi]
> +                                self.tilt_angles[ei, si, mi, oi, di] = 
> tilt_angles[ei][si][mi][oi][di]
> +                                self.offset[ei, si, mi, oi] = 
> offset[ei][si][mi][oi]
>                                  ## Convert the spin-lock data to rad.s^-1.
> -                                self.spin_lock_omega1[ei][si][mi][oi][di] = 
> 2.0 * pi * spin_lock_nu1[ei][mi][oi][di]
> -                                
> self.spin_lock_omega1_squared[ei][si][mi][oi][di] = 
> self.spin_lock_omega1[ei][si][mi][oi][di] ** 2
> +                                self.spin_lock_omega1[ei, si, mi, oi, di] = 
> 2.0 * pi * spin_lock_nu1[ei][mi][oi][di]
> +                                self.spin_lock_omega1_squared[ei, si, mi, 
> oi, di] = self.spin_lock_omega1[ei, si, mi, oi, di] ** 2
>
>          # Create the structure for holding the back-calculated R2eff values 
> (matching the dimensions of the values structure).
>          self.back_calc = deepcopy(self.values)
> @@ -695,10 +695,10 @@
>                      r20_index = mi + ei*self.num_frq + 
> si*self.num_frq*self.num_exp
>
>                      # Convert dw from ppm to rad/s.
> -                    dw_AB_frq = dw_AB[si] * self.frqs[ei][si][mi][0][0]
> -                    dw_AC_frq = dw_AC[si] * self.frqs[ei][si][mi][0][0]
> -                    dwH_AB_frq = dwH_AB[si] * self.frqs_H[ei][si][mi][0][0]
> -                    dwH_AC_frq = dwH_AC[si] * self.frqs_H[ei][si][mi][0][0]
> +                    dw_AB_frq = dw_AB[si] * self.frqs[ei, si, mi, 0, 0]
> +                    dw_AC_frq = dw_AC[si] * self.frqs[ei, si, mi, 0, 0]
> +                    dwH_AB_frq = dwH_AB[si] * self.frqs_H[ei, si, mi, 0, 0]
> +                    dwH_AC_frq = dwH_AC[si] * self.frqs_H[ei, si, mi, 0, 0]
>
>                      # Alias the dw frequency combinations.
>                      aliased_dwH_AB = 0.0
> @@ -727,15 +727,15 @@
>                          aliased_dwH_AC = dw_AC_frq
>
>                      # Back calculate the R2eff values for each experiment 
> type.
> -                    self.r2eff_ns_mmq[ei](M0=self.M0, m1=self.m1, 
> m2=self.m2, R20A=R20A[r20_index], R20B=R20B[r20_index], R20C=R20C[r20_index], 
> pA=pA, pB=pB, pC=pC, dw_AB=aliased_dw_AB, dw_AC=aliased_dw_AC, 
> dwH_AB=aliased_dwH_AB, dwH_AC=aliased_dwH_AC, k_AB=k_AB, k_BA=k_BA, 
> k_BC=k_BC, k_CB=k_CB, k_AC=k_AC, k_CA=k_CA, 
> inv_tcpmg=self.inv_relax_times[ei][si][mi][0], 
> tcp=self.tau_cpmg[ei][si][mi][0], back_calc=self.back_calc[ei][si][mi][0], 
> num_points=self.num_disp_points[ei][si][mi][0], 
> power=self.power[ei][si][mi][0])
> +                    self.r2eff_ns_mmq[ei](M0=self.M0, m1=self.m1, 
> m2=self.m2, R20A=R20A[r20_index], R20B=R20B[r20_index], R20C=R20C[r20_index], 
> pA=pA, pB=pB, pC=pC, dw_AB=aliased_dw_AB, dw_AC=aliased_dw_AC, 
> dwH_AB=aliased_dwH_AB, dwH_AC=aliased_dwH_AC, k_AB=k_AB, k_BA=k_BA, 
> k_BC=k_BC, k_CB=k_CB, k_AC=k_AC, k_CA=k_CA, 
> inv_tcpmg=self.inv_relax_times[ei, si, mi, 0], tcp=self.tau_cpmg[ei, si, mi, 
> 0], back_calc=self.back_calc[ei, si, mi, 0], 
> num_points=self.num_disp_points[ei, si, mi, 0], power=self.power[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]):
> -                        if self.missing[ei][si][mi][0][di]:
> -                            self.back_calc[ei][si][mi][0][di] = 
> self.values[ei][si][mi][0][di]
> +                    for di in range(self.num_disp_points[ei, si, mi, 0]):
> +                        if self.missing[ei, si, mi, 0, di]:
> +                            self.back_calc[ei, si, mi, 0, di] = 
> self.values[ei, si, mi, 0, di]
>
>                      # Calculate and return the chi-squared value.
> -                    chi2_sum += chi2(self.values[ei][si][mi][0], 
> self.back_calc[ei][si][mi][0], self.errors[ei][si][mi][0])
> +                    chi2_sum += chi2(self.values[ei, si, mi, 0], 
> self.back_calc[ei, si, mi, 0], self.errors[ei, si, mi, 0])
>
>          # Return the total chi-squared value.
>          return chi2_sum
> @@ -786,21 +786,21 @@
>                  r20_index = mi + si*self.num_frq
>
>                  # Convert dw from ppm to rad/s.
> -                dw_AB_frq = dw_AB[si] * self.frqs[0][si][mi][0][0]
> -                dw_AC_frq = dw_AC[si] * self.frqs[0][si][mi][0][0]
> +                dw_AB_frq = dw_AB[si] * self.frqs[0, si, mi, 0, 0]
> +                dw_AC_frq = dw_AC[si] * self.frqs[0, si, mi, 0, 0]
>
>                  # Loop over the offsets.
> -                for oi in range(self.num_offsets[0][si][mi]):
> +                for oi in range(self.num_offsets[0][si, mi]):
>                      # Back calculate the R2eff values for each experiment 
> type.
> -                    ns_r1rho_3site(M0=self.M0, matrix=self.matrix, 
> r1rho_prime=r1rho_prime[r20_index], 
> omega=self.chemical_shifts[0][si][mi][oi][0], 
> offset=self.offset[0][si][mi][oi][0], r1=self.r1[0][si][mi][oi][0], pA=pA, 
> pB=pB, pC=pC, dw_AB=dw_AB_frq, dw_AC=dw_AC_frq, k_AB=k_AB, k_BA=k_BA, 
> k_BC=k_BC, k_CB=k_CB, k_AC=k_AC, k_CA=k_CA, 
> spin_lock_fields=self.spin_lock_omega1[0][si][mi][oi], 
> relax_time=self.relax_times[0][si][mi][oi], 
> inv_relax_time=self.inv_relax_times[0][si][mi][oi], 
> back_calc=self.back_calc[0][si][mi][oi], 
> num_points=self.num_disp_points[0][si][mi][oi])
> +                    ns_r1rho_3site(M0=self.M0, matrix=self.matrix, 
> r1rho_prime=r1rho_prime[r20_index], omega=self.chemical_shifts[0, si, mi, oi, 
> 0], offset=self.offset[0, si, mi, oi, 0], r1=self.r1[0, si, mi, oi, 0], 
> pA=pA, pB=pB, pC=pC, dw_AB=dw_AB_frq, dw_AC=dw_AC_frq, k_AB=k_AB, k_BA=k_BA, 
> k_BC=k_BC, k_CB=k_CB, k_AC=k_AC, k_CA=k_CA, 
> spin_lock_fields=self.spin_lock_omega1[0, si, mi, oi], 
> relax_time=self.relax_times[0, si, mi, oi], 
> inv_relax_time=self.inv_relax_times[0, si, mi, oi], 
> back_calc=self.back_calc[0, si, mi, oi], num_points=self.num_disp_points[0, 
> si, mi, oi])
>
>                      # 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[0][si][mi][oi]):
> -                        if self.missing[0][si][mi][oi][di]:
> -                            self.back_calc[0][si][mi][oi][di] = 
> self.values[0][si][mi][oi][di]
> +                    for di in range(self.num_disp_points[0, si, mi, oi]):
> +                        if self.missing[0, si, mi, oi, di]:
> +                            self.back_calc[0, si, mi, oi, di] = 
> self.values[0, si, mi, oi, di]
>
>                      # Calculate and return the chi-squared value.
> -                    chi2_sum += chi2(self.values[0][si][mi][oi], 
> self.back_calc[0][si][mi][oi], self.errors[0][si][mi][oi])
> +                    chi2_sum += chi2(self.values[0, si, mi, oi], 
> self.back_calc[0, si, mi, oi], self.errors[0, si, mi, oi])
>
>          # Return the total chi-squared value.
>          return chi2_sum
> @@ -1071,19 +1071,19 @@
>                  r20_index = mi + si*self.num_frq
>
>                  # Convert phi_ex (or rex) from ppm^2 to (rad/s)^2.
> -                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]
> +                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][si][mi][0], 
> back_calc=self.back_calc[0][si][mi][0], 
> num_points=self.num_disp_points[0][si][mi][0])
> +                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, si, mi, 0], back_calc=self.back_calc[0, si, mi, 
> 0], num_points=self.num_disp_points[0, 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[0][si][mi][0]):
> -                    if self.missing[0][si][mi][0][di]:
> -                        self.back_calc[0][si][mi][0][di] = 
> self.values[0][si][mi][0][di]
> +                for di in range(self.num_disp_points[0, si, mi, 0]):
> +                    if self.missing[0, si, mi, 0][di]:
> +                        self.back_calc[0, si, mi, 0][di] = self.values[0, 
> si, mi, 0][di]
>
>                  # Calculate and return the chi-squared value.
> -                chi2_sum += chi2(self.values[0][si][mi][0], 
> self.back_calc[0][si][mi][0], self.errors[0][si][mi][0])
> +                chi2_sum += chi2(self.values[0, si, mi, 0], 
> self.back_calc[0, si, mi, 0], self.errors[0, si, mi, 0])
>
>          # Return the total chi-squared value.
>          return chi2_sum
> @@ -1657,20 +1657,20 @@
>                  r20_index = mi + si*self.num_frq
>
>                  # Convert dw from ppm to rad/s.
> -                dw_frq = dw[si] * self.frqs[0][si][mi][0][0]
> +                dw_frq = dw[si] * self.frqs[0, si, mi, 0, 0]
>
>                  # Loop over the offsets.
> -                for oi in range(self.num_offsets[0][si][mi]):
> +                for oi in range(self.num_offsets[0][si, mi]):
>                      # Back calculate the R2eff values.
> -                    ns_r1rho_2site(M0=self.M0, matrix=self.matrix, 
> r1rho_prime=r1rho_prime[r20_index], 
> omega=self.chemical_shifts[0][si][mi][oi][0], 
> offset=self.offset[0][si][mi][oi][0], r1=self.r1[0][si][mi][oi][0], pA=pA, 
> pB=pB, dw=dw_frq, k_AB=k_AB, k_BA=k_BA, 
> spin_lock_fields=self.spin_lock_omega1[0][si][mi][oi], 
> relax_time=self.relax_times[0][si][mi][oi], 
> inv_relax_time=self.inv_relax_times[0][si][mi][oi], 
> back_calc=self.back_calc[0][si][mi][oi], 
> num_points=self.num_disp_points[0][si][mi][oi])
> +                    ns_r1rho_2site(M0=self.M0, matrix=self.matrix, 
> r1rho_prime=r1rho_prime[r20_index], omega=self.chemical_shifts[0, si, mi, oi, 
> 0], offset=self.offset[0, si, mi, oi, 0], r1=self.r1[0, si, mi, oi, 0], 
> pA=pA, pB=pB, dw=dw_frq, k_AB=k_AB, k_BA=k_BA, 
> spin_lock_fields=self.spin_lock_omega1[0, si, mi, oi], 
> relax_time=self.relax_times[0, si, mi, oi], 
> inv_relax_time=self.inv_relax_times[0, si, mi, oi], 
> back_calc=self.back_calc[0, si, mi, oi], num_points=self.num_disp_points[0, 
> si, mi, oi])
>
>                      # 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[0][si][mi][oi]):
> -                        if self.missing[0][si][mi][oi][di]:
> -                            self.back_calc[0][si][mi][oi][di] = 
> self.values[0][si][mi][oi][di]
> +                    for di in range(self.num_disp_points[0, si, mi, oi]):
> +                        if self.missing[0, si, mi, oi, di]:
> +                            self.back_calc[0, si, mi, oi, di] = 
> self.values[0, si, mi, oi, di]
>
>                      # Calculate and return the chi-squared value.
> -                    chi2_sum += chi2(self.values[0][si][mi][oi], 
> self.back_calc[0][si][mi][oi], self.errors[0][si][mi][oi])
> +                    chi2_sum += chi2(self.values[0, si, mi, oi], 
> self.back_calc[0, si, mi, oi], self.errors[0, si, mi, oi])
>
>          # Return the total chi-squared value.
>          return chi2_sum
>
>
> _______________________________________________
> 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