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 <[email protected]>: > 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, <[email protected]> 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 >> [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 _______________________________________________ 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

