Author: tlinnet
Date: Mon Aug 4 16:27:49 2014
New Revision: 24932
URL: http://svn.gna.org/viewcvs/relax?rev=24932&view=rev
Log:
Modified return_r1_data(), to be dependent on fitting model.
sr #3135(https://gna.org/support/?3135): Optimisation of the R1
relaxation rate for the off-resonance R1rho relaxation dispersion models.
Modified:
branches/R1_fitting/specific_analyses/relax_disp/data.py
Modified: branches/R1_fitting/specific_analyses/relax_disp/data.py
URL:
http://svn.gna.org/viewcvs/relax/branches/R1_fitting/specific_analyses/relax_disp/data.py?rev=24932&r1=24931&r2=24932&view=diff
==============================================================================
--- branches/R1_fitting/specific_analyses/relax_disp/data.py (original)
+++ branches/R1_fitting/specific_analyses/relax_disp/data.py Mon Aug
4 16:27:49 2014
@@ -4031,65 +4031,78 @@
# Initialise the data structure.
r1 = -ones((spin_num, field_count), float64)
+ # Set testing flags.
+ flags = [False]*field_count
+
# Check for the presence of data.
- if not hasattr(cdp, 'ri_ids'):
+ if not hasattr(cdp, 'ri_ids') and spins[0].model not in
MODEL_LIST_R1RHO_FIT_R1:
warn_text = "No R1 relaxation data has been loaded. Setting it
to 0.0. This is essential for the proper handling of offsets in
off-resonance R1rho experiments."
error_text = "No R1 relaxation data has been loaded. This is
essential for the proper handling of offsets in off-resonance R1rho
experiments."
if has_r1rho_exp_type():
- # Spin loop.
- for si in range(spin_num):
- # Assign spin.
- spin=spins[si]
-
- # For all R1rho models using R1, raise an error, if R1
has not been loaded.
- if spin.model in MODEL_LIST_R1RHO_W_R1:
- raise RelaxError(error_text)
-
- # For all R1rho models fitting R1, raise an error, set
value to None.
- elif spin.model in MODEL_LIST_R1RHO_FIT_R1:
- warn_text = "No R1 relaxation data has been loaded.
Setting it to None. This is essential for the proper handling of offsets
in off-resonance R1rho experiments."
- warn(RelaxWarning(warn_text))
- for mi in range(field_count):
- r1[si, mi] = None
-
- # For all models not listed in R1rho models, raise a
warning, and set 0.0 as value.
- else:
- warn(RelaxWarning(warn_text))
- r1[si] = 0.0 * r1[si]
+ # For all R1rho models using R1, raise an error, if R1 has
not been loaded.
+ if spins[0].model in MODEL_LIST_R1RHO_W_R1:
+ raise RelaxError(error_text)
+
+ # For all models not listed in R1rho models, raise a
warning, and set 0.0 as value.
+ else:
+ warn(RelaxWarning(warn_text))
+ r1 = 0.0 * r1
# For all non-R1rho experiments, return 0.0.
else:
r1 = 0.0 * r1
- # Return r1
+ # Return the data.
return r1
- # Loop over the Rx IDs.
- flags = [False]*field_count
- for ri_id in cdp.ri_ids:
- # Only use R1 data.
- if cdp.ri_type[ri_id] != 'R1':
- continue
-
- # The frequency.
- frq = cdp.spectrometer_frq[ri_id]
- mi = return_index_from_frq(frq)
-
- # Flip the flag.
- flags[mi] = True
-
+ # For all R1rho models fitting R1.
+ elif spins[0].model in MODEL_LIST_R1RHO_FIT_R1:
# Spin loop.
for si in range(spin_num):
- # FIXME: This is a kludge - the data randomisation needs to
be incorporated into the dispersion base_data_loop() method and the
standard Monte Carlo simulation pathway used.
- # Randomise the R1 data, when required.
- if sim_index != None and (not hasattr(spins[si],
'ri_data_sim') or ri_id not in spins[si].ri_data_sim):
- randomise_R1(spin=spins[si], ri_id=ri_id,
N=cdp.sim_number)
-
- # Store the data.
- if sim_index != None:
- r1[si, mi] = spins[si].ri_data_sim[ri_id][sim_index]
- else:
- r1[si, mi] = spins[si].ri_data[ri_id]
+ # Assign spin:
+ spin = spins[si]
+
+ # Loop over exp type and frq.
+ for exp_type, frq, ei, mi in
loop_exp_frq(return_indices=True):
+ # Assign key
+ r20_key = generate_r20_key(exp_type=exp_type, frq=frq)
+
+ # If no data is available.
+ if len(spin.r1_fit) == 0:
+ r1[si, mi] = None
+
+ else:
+ r1[si, mi] = spin.r1_fit[r20_key]
+
+ # Flip the flag.
+ flags[mi] = True
+
+ else:
+ # Loop over the Rx IDs.
+ for ri_id in cdp.ri_ids:
+ # Only use R1 data.
+ if cdp.ri_type[ri_id] != 'R1':
+ continue
+
+ # The frequency.
+ frq = cdp.spectrometer_frq[ri_id]
+ mi = return_index_from_frq(frq)
+
+ # Flip the flag.
+ flags[mi] = True
+
+ # Spin loop.
+ for si in range(spin_num):
+ # FIXME: This is a kludge - the data randomisation
needs to be incorporated into the dispersion base_data_loop() method and
the standard Monte Carlo simulation pathway used.
+ # Randomise the R1 data, when required.
+ if sim_index != None and (not hasattr(spins[si],
'ri_data_sim') or ri_id not in spins[si].ri_data_sim):
+ randomise_R1(spin=spins[si], ri_id=ri_id,
N=cdp.sim_number)
+
+ # Store the data.
+ if sim_index != None:
+ r1[si, mi] = spins[si].ri_data_sim[ri_id][sim_index]
+ else:
+ r1[si, mi] = spins[si].ri_data[ri_id]
# Check the data to prevent user mistakes.
for mi in range(field_count):
_______________________________________________
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