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

