mailRe: r21920 - /trunk/test_suite/system_tests/relax_disp.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 December 10, 2013 - 08:36:
Hi Edward.

I will try to look into it today.

Best
Troels


2013/12/9 Edward d'Auvergne <edward@xxxxxxxxxxxxx>
Hi Troels,

Note that I will soon release relax 3.1.1 with all of the recent fixes
(possibly tomorrow).  This includes the 'NS MMQ 3-site', 'NS MMQ
3-site linear', 'NS R1rho 3-site', and 'NS R1rho 3-site linear'
dispersion models which are now implemented, tested, and find similar
results to Dmitry Korzhnev's cpmg_fit software.  If the test is not
functional by then, I will disable it for the release.  It would be
very useful to have fixed though as it looks like variable relaxation
time data (SQ CPMG, MMQ CPMG, or R1rho) will all currently fail in the
auto-analysis.  I've had a look and have another hint for you - the
problem is that has_exponential_exp_type() function is not returning
the correct answer ;)

Regards,

Edward



On 9 December 2013 18:12, Edward d'Auvergne <edward@xxxxxxxxxxxxx> wrote:
> Hi,
>
> This is a strange failure!  The auto-analysis should not be running
> the calc user function for this.  That is the problem, you cannot run
> the calc user function for non-constant relaxation time experiments.
> The error message is the standard one to tell the user that.  The
> grid_search and minimise user functions should be used instead (maybe
> the error message can be modified to clarify this and include this
> info).  But it is the auto-analysis that is running this.  So the
> problem is there.  relax can of course handle variable relaxation
> times for any dispersion data type.
>
> Regards,
>
> Edward
>
>
>
>
> On 9 December 2013 18:02, Troels Emtekær Linnet <tlinnet@xxxxxxxxxxxxx> wrote:
>> Hi Edward.
>>
>> The R1rho data is not constant time.
>>
>> I have only included the models:
>> MODELS = ['R2eff', 'No Rex', 'DPL94']
>>
>> I have set it up, to find a solution for analysing R1rho data, where R1 data
>> has not been acquired, but for
>> different
>>
>> It actually also fails at the moment, and will probably do for some time.
>>
>> --------
>> relax -s Relax_disp.test_r1rho_kjaergaar
>>
>> relax> calc(verbosity=1)
>> Traceback (most recent call last):
>>   File
>> "/sbinlab2/tlinnet/software/NMR-relax/relax_trunk/test_suite/system_tests/relax_disp.py",
>> line 2581, in test_r1rho_kjaergaard
>>     relax_disp.Relax_disp(pipe_name=pipe_name, pipe_bundle=pipe_bundle,
>> results_dir=ds.tmpdir, models=MODELS, grid_inc=GRID_INC, mc_sim_num=MC_NUM,
>> modsel=MODSEL)
>>   File
>> "/sbinlab2/tlinnet/software/NMR-relax/relax_trunk/auto_analyses/relax_disp.py",
>> line 116, in __init__
>>     self.run()
>>   File
>> "/sbinlab2/tlinnet/software/NMR-relax/relax_trunk/auto_analyses/relax_disp.py",
>> line 447, in run
>>     self.interpreter.calc()
>>   File
>> "/sbinlab2/tlinnet/software/NMR-relax/relax_trunk/prompt/uf_objects.py",
>> line 221, in __call__
>>     self._backend(*new_args, **uf_kargs)
>>   File
>> "/sbinlab2/tlinnet/software/NMR-relax/relax_trunk/pipe_control/minimise.py",
>> line 86, in calc
>>     calculate(verbosity=verbosity)
>>   File
>> "/sbinlab2/tlinnet/software/NMR-relax/relax_trunk/specific_analyses/relax_disp/api.py",
>> line 717, in calculate
>>     self._calculate_r2eff()
>>   File
>> "/sbinlab2/tlinnet/software/NMR-relax/relax_trunk/specific_analyses/relax_disp/api.py",
>> line 182, in _calculate_r2eff
>>     check_exp_type_fixed_time()
>>   File
>> "/sbinlab2/tlinnet/software/NMR-relax/relax_trunk/specific_analyses/relax_disp/checks.py",
>> line 112, in check_exp_type_fixed_time
>>     raise RelaxError("The experiment '%s' is not of the fixed relaxation
>> time period data type." % exp_type)
>> RelaxError: RelaxError: The experiment 'R1rho' is not of the fixed
>> relaxation time period data type.
>>
>> --------------
>>
>> Is the R1rho analysis only implemented for fixed time periods?
>>
>> Best
>> Troels
>>
>>
>>
>> 2013/12/9 Edward d'Auvergne <edward@xxxxxxxxxxxxx>
>>>
>>> Hi Troels,
>>>
>>> When looking at this data and analysis, remember that I have not
>>> implemented Dmitry Korzhnev's "correction" for constant time R1rho
>>> data.  I don't know if that was used in the original publication for
>>> your data.  More details are given in the 'To do' section of the
>>> manual (I only recently added this info).  I also don't know what the
>>> rest of the field think of his correction and how it applies to later
>>> models from the Palmer group.
>>>
>>> Regards,
>>>
>>> Edward
>>>
>>>
>>>
>>> On 9 December 2013 17:49,  <tlinnet@xxxxxxxxxxxxx> wrote:
>>> > Author: tlinnet
>>> > Date: Mon Dec  9 17:49:49 2013
>>> > New Revision: 21920
>>> >
>>> > URL: http://svn.gna.org/viewcvs/relax?rev=21920&view=rev
>>> > Log:
>>> > Added system test for the analysis of optimisation of the Kjaergaard et
>>> > al., 2013 Off-resonance R1rho relaxation dispersion experiments using the
>>> > 'DPL' model.
>>> >
>>> > Work in progress for Support Request #3083,
>>> > (https://gna.org/support/index.php?3083) -  Addition of Data-set for R1rho
>>> > analysis.
>>> >
>>> > Modified:
>>> >     trunk/test_suite/system_tests/relax_disp.py
>>> >
>>> > Modified: trunk/test_suite/system_tests/relax_disp.py
>>> > URL:
>>> > http://svn.gna.org/viewcvs/relax/trunk/test_suite/system_tests/relax_disp.py?rev=21920&r1=21919&r2=21920&view=diff
>>> >
>>> > ==============================================================================
>>> > --- trunk/test_suite/system_tests/relax_disp.py (original)
>>> > +++ trunk/test_suite/system_tests/relax_disp.py Mon Dec  9 17:49:49 2013
>>> > @@ -2450,6 +2450,137 @@
>>> >          self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].chi2,
>>> > 0.030959849811015544, 3)
>>> >
>>> >
>>> > +    def test_r1rho_kjaergaard(self):
>>> > +        """Optimisation of the Kjaergaard et al., 2013 Off-resonance
>>> > R1rho relaxation dispersion experiments using the 'DPL' model.
>>> > +
>>> > +        This uses the data from Kjaergaard's paper at U{DOI:
>>> > 10.1021/bi4001062<http://dx.doi.org/10.1021/bi4001062>}.
>>> > +
>>> > +        """
>>> > +
>>> > +        # The path to the data files.
>>> > +        data_path = status.install_path +
>>> > sep+'test_suite'+sep+'shared_data'+sep+'dispersion'+sep+'Kjaergaard_et_al_2013'
>>> > +
>>> > +        # Set pipe name, bundle and type.
>>> > +        pipe_name = 'base pipe'
>>> > +        pipe_bundle = 'relax_disp'
>>> > +        pipe_type= 'relax_disp'
>>> > +
>>> > +        # Create the data pipe.
>>> > +        self.interpreter.pipe.create(pipe_name=pipe_name,
>>> > bundle=pipe_bundle, pipe_type=pipe_type)
>>> > +
>>> > +        # Read the spins.
>>> > +
>>> > self.interpreter.spectrum.read_spins(file='1_0_46_0_max_standard.ser',
>>> > dir=data_path+sep+'peak_lists')
>>> > +
>>> > +        # Test some of the sequence.
>>> > +        self.assertEqual(len(cdp.mol), 1)
>>> > +        self.assertEqual(cdp.mol[0].name, None)
>>> > +        self.assertEqual(len(cdp.mol[0].res), 48)
>>> > +
>>> > +        # Name the isotope for field strength scaling.
>>> > +        self.interpreter.spin.isotope(isotope='15N')
>>> > +
>>> > +        # Set number of experiments to be used.
>>> > +        NR_exp = -1
>>> > +
>>> > +        # Load the experiments settings file.
>>> > +        expfile = open(data_path+sep+'exp_parameters_sort.txt','r')
>>> > +        expfileslines = expfile.readlines()[:NR_exp]
>>> > +        expfile.close()
>>> > +
>>> > +        # In MHz
>>> > +        yOBS = 81.050
>>> > +        # In ppm
>>> > +        yCAR = 118.078
>>> > +        centerPPM_N15 = yCAR
>>> > +
>>> > +        ## Read the chemical shift data.
>>> > +
>>> > self.interpreter.chemical_shift.read(file='1_0_46_0_max_standard.ser',
>>> > dir=data_path+sep+'peak_lists')
>>> > +
>>> > +        # Test the chemical shift data.
>>> > +        cs = [122.223, 122.162, 114.250, 125.852, 118.626, 117.449,
>>> > 119.999, 122.610, 118.602, 118.291, 115.393,
>>> > +        121.288, 117.448, 116.378, 116.316, 117.263, 122.211, 118.748,
>>> > 118.103, 119.421, 119.317, 119.386, 117.279,
>>> > +        122.103, 120.038, 116.698, 111.811, 118.639, 118.285, 121.318,
>>> > 117.770, 119.948, 119.759, 118.314, 118.160,
>>> > +        121.442, 118.714, 113.080, 125.706, 119.183, 120.966, 122.361,
>>> > 126.675, 117.069, 120.875, 109.372, 119.811, 126.048]
>>> > +
>>> > +        i = 0
>>> > +        for spin, spin_id in spin_loop(return_id=True):
>>> > +            print spin.name, spin.num, spin_id, spin.chemical_shift,
>>> > cs[i]
>>> > +            # Check the chemical shift.
>>> > +            self.assertEqual(spin.chemical_shift, cs[i])
>>> > +
>>> > +            # Increment the index.
>>> > +            i += 1
>>> > +
>>> > +        # The lock power to field, has been found in an calibration
>>> > experiment.
>>> > +        spin_lock_field_strengths_Hz = {'35': 431.0, '39': 651.2, '41':
>>> > 800.5, '43': 984.0, '46': 1341.11, '48': 1648.5}
>>> > +
>>> > +        # Apply spectra settings.
>>> > +        for i in range(len(expfileslines)):
>>> > +            line=expfileslines[i]
>>> > +            if line[0] == "#":
>>> > +                continue
>>> > +            else:
>>> > +                # DIRN I deltadof2 dpwr2slock ncyc trim ss sfrq
>>> > +                DIRN = line.split()[0]
>>> > +                I = int(line.split()[1])
>>> > +                deltadof2 = line.split()[2]
>>> > +                dpwr2slock = line.split()[3]
>>> > +                ncyc = int(line.split()[4])
>>> > +                trim = float(line.split()[5])
>>> > +                ss = int(line.split()[6])
>>> > +                set_sfrq = float(line.split()[7])
>>> > +                apod_rmsd = float(line.split()[8])
>>> > +                spin_lock_field_strength =
>>> > spin_lock_field_strengths_Hz[dpwr2slock]
>>> > +
>>> > +                # Calculate spin_lock time
>>> > +                time_sl = 2*ncyc*trim
>>> > +
>>> > +                # Define file name for peak list.
>>> > +                FNAME = "%s_%s_%s_%s_max_standard.ser"%(I, deltadof2,
>>> > dpwr2slock, ncyc)
>>> > +                sp_id = "%s_%s_%s_%s"%(I, deltadof2, dpwr2slock, ncyc)
>>> > +
>>> > +                # Load the peak intensities.
>>> > +                self.interpreter.spectrum.read_intensities(file=FNAME,
>>> > dir=data_path+sep+'peak_lists', spectrum_id=sp_id, int_method='height')
>>> > +
>>> > +                # Set the peak intensity errors, as defined as the
>>> > baseplane RMSD.
>>> > +
>>> > self.interpreter.spectrum.baseplane_rmsd(error=apod_rmsd, spectrum_id=sp_id)
>>> > +
>>> > +                # Set the relaxation dispersion experiment type.
>>> > +                self.interpreter.relax_disp.exp_type(spectrum_id=sp_id,
>>> > exp_type='R1rho')
>>> > +
>>> > +                # Set The spin-lock field strength, nu1, in Hz
>>> > +
>>> > self.interpreter.relax_disp.spin_lock_field(spectrum_id=sp_id,
>>> > field=spin_lock_field_strength)
>>> > +
>>> > +                # Calculating the spin-lock offset in ppm, from offsets
>>> > values provided in Hz.
>>> > +                frq_N15_Hz = yOBS * 1E6
>>> > +                offset_ppm_N15 = float(deltadof2) / frq_N15_Hz * 1E6
>>> > +                omega_rf_ppm = centerPPM_N15 + offset_ppm_N15
>>> > +
>>> > +                # Set The spin-lock offset, omega_rf, in ppm.
>>> > +
>>> > self.interpreter.relax_disp.spin_lock_offset(spectrum_id=sp_id,
>>> > offset=omega_rf_ppm)
>>> > +
>>> > +                # Set the relaxation times (in s).
>>> > +                self.interpreter.relax_fit.relax_time(time=time_sl,
>>> > spectrum_id=sp_id)
>>> > +
>>> > +                # Set the spectrometer frequency.
>>> > +                self.interpreter.spectrometer.frequency(id=sp_id,
>>> > frq=set_sfrq, units='MHz')
>>> > +
>>> > +        # The dispersion models.
>>> > +        MODELS = ['R2eff', 'No Rex', 'DPL94']
>>> > +
>>> > +        # The grid search size (the number of increments per
>>> > dimension).
>>> > +        GRID_INC = 4
>>> > +
>>> > +        # The number of Monte Carlo simulations to be used for error
>>> > analysis at the end of the analysis.
>>> > +        MC_NUM = 3
>>> > +
>>> > +        # Model selection technique.
>>> > +        MODSEL = 'AIC'
>>> > +
>>> > +        # Run the analysis.
>>> > +        relax_disp.Relax_disp(pipe_name=pipe_name,
>>> > pipe_bundle=pipe_bundle, results_dir=ds.tmpdir, models=MODELS,
>>> > grid_inc=GRID_INC, mc_sim_num=MC_NUM, modsel=MODSEL)
>>> > +
>>> > +
>>> >      def test_r2eff_read(self):
>>> >          """Test the operation of the relax_disp.r2eff_read user
>>> > function."""
>>> >
>>> >
>>> >
>>> > _______________________________________________
>>> > 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 Tue Dec 10 09:40:07 2013