mailRe: r24932 - /branches/R1_fitting/specific_analyses/relax_disp/data.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Troels Emtekær Linnet on August 18, 2014 - 10:44:
Hi Edward.

As I remember, the plotting utility will also call this code.

And that that give problems with On-resonance models, but as I recall,
the plotting of R2eff model also give problems.

You can try to flip to raising an Error instead, and see the problems arise.

Best
Troels

2014-08-18 10:19 GMT+02:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:
Hi Troels,

Would it not be better to raise a RelaxError in both cases?  Or maybe
make a 3rd case - setting the value to 0.0 only makes sense in the
on-resonance R1rho models or CPMG models.  However in both these model
categories, R1 is not used anyway (in the future for certain CPMG
numeric models, this might change when off-resonance effects are
modelled).  So for the M61 models, for example, these checks are
skipped.  A special variable for on-resonace R1rho models could be
created for this.  But for off-resonance R1rho models, setting R1 to
0.0 is just bad!  I added this for helping in the development of the
code, but is it a terrible kludge that should be eliminated.  It will
only result in relax users making mistakes in their analyses.

Regards,

Edward



On 4 August 2014 16:27,  <tlinnet@xxxxxxxxxxxxx> wrote:
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

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

This is the relax-devel mailing list
relax-devel@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-devel



Related Messages


Powered by MHonArc, Updated Mon Aug 18 11:20:13 2014