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@gna.org 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