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
relax-commits@xxxxxxx
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