Author: bugman Date: Tue Apr 16 11:15:32 2013 New Revision: 19485 URL: http://svn.gna.org/viewcvs/relax?rev=19485&view=rev Log: Updated the dispersion system test script for Flemming Hansen's data. This script should now be close to the final form for a relaxation dispersion analysis of CPMG data with a fixed relaxation time period. Modified: branches/relax_disp/test_suite/system_tests/scripts/relax_disp/hansen_data_fast_2site.py Modified: branches/relax_disp/test_suite/system_tests/scripts/relax_disp/hansen_data_fast_2site.py URL: http://svn.gna.org/viewcvs/relax/branches/relax_disp/test_suite/system_tests/scripts/relax_disp/hansen_data_fast_2site.py?rev=19485&r1=19484&r2=19485&view=diff ============================================================================== --- branches/relax_disp/test_suite/system_tests/scripts/relax_disp/hansen_data_fast_2site.py (original) +++ branches/relax_disp/test_suite/system_tests/scripts/relax_disp/hansen_data_fast_2site.py Tue Apr 16 11:15:32 2013 @@ -1,132 +1,130 @@ -# Script for CPMG relaxation dispersion curve fitting in the fast-exchange limit. +# Script for CPMG relaxation dispersion curve fitting using Dr. Flemming Hansen's data from http://dx.doi.org/10.1021/jp074793o. # Python module imports. from os import sep # relax module imports. +from auto_analyses.relax_disp import Relax_disp +from data_store import Relax_data_store; ds = Relax_data_store() from status import Status; status = Status() +# Analysis variables. +##################### + +# The dispersion models. +MODELS = ['exp_fit', 'fast 2-site'] + +# The grid search size (the number of increments per dimension). +GRID_INC = 5 + +# The number of Monte Carlo simulations to be used for error analysis at the end of the analysis. +MC_NUM = 3 + + + +# Set up the data pipe. +####################### + +# The results directory. +if not hasattr(ds, 'tmpdir'): + ds.tmpdir = None + # Create the data pipe. -pipe.create('rex', 'relax_disp') +pipe_name = 'base pipe' +pipe_bundle = 'relax_disp' +pipe.create(pipe_name=pipe_name, bundle=pipe_bundle, pipe_type='relax_disp') # The path to the data files. -data_path1 = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'curve_fitting_disp'+sep+'Hansen'+sep+'500_MHz' -data_path2 = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'curve_fitting_disp'+sep+'Hansen'+sep+'800_MHz' +data_path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'dispersion'+sep+'Hansen' # Load the sequence. -sequence.read('fake_sequence.in', dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'curve_fitting_disp'+sep+'Hansen', res_num_col=1, res_name_col=2) +sequence.read('fake_sequence.in', dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'dispersion'+sep+'Hansen', res_num_col=1, res_name_col=2) # Name the spins so they can be matched to the assignments. spin.name(name='N') # Set the relaxation dispersion experiment type. -relax_disp.exp_type('cpmg') +relax_disp.exp_type('cpmg fixed') -# Set the relaxation dispersion curve type. -relax_disp.select_model('fast') - -# Relaxation dispersion magnetic field (in Hz). -frq.set(id='500', frq=500.0 * 1e6) -frq.set(id='800', frq=800.0 * 1e6) - -# Spectrum names. -names = [ - 'reference.in_sparky', - '66.667.in_sparky', - '1000.in_sparky', - '133.33.in_sparky', - '933.33.in_sparky', - '200.in_sparky', - '866.67.in_sparky', - '266.67.in_sparky', - '800.in_sparky', - '333.33.in_sparky', - '733.33.in_sparky', - '400.in_sparky', - '666.67.in_sparky', - '466.67.in_sparky', - '600.in_sparky', - '533.33.in_sparky', - '133.33.in.bis_sparky', - '933.33.in.bis_sparky', - '533.33.in.bis_sparky' -] - -# Relaxation dispersion CPMG constant time delay T (in s). -relax_disp.cpmg_delayT(id='500', delayT=0.030) -relax_disp.cpmg_delayT(id='800', delayT=0.030) - -# Relaxation dispersion CPMG frequencies (in Hz). -cpmg_frq = [ - None, - 66.667, - 1000, - 133.33, - 933.33, - 200, - 866.67, - 266.67, - 800, - 333.33, - 733.33, - 400, - 666.67, - 466.67, - 600, - 533.33, - 133.33, - 933.33, - 533.33 +# The spectral data - spectrum ID, peak list file name, CPMG frequency (Hz), spectrometer frequency in Hertz. +data = [ + ['500_reference.in', '500_MHz'+sep+'reference.in_sparky', None, 500e6], + ['500_66.667.in', '500_MHz'+sep+'66.667.in_sparky', 66.6666, 500e6], + ['500_133.33.in', '500_MHz'+sep+'133.33.in_sparky', 133.3333, 500e6], + ['500_133.33.in.bis', '500_MHz'+sep+'133.33.in.bis_sparky', 133.3333, 500e6], + ['500_200.in', '500_MHz'+sep+'200.in_sparky', 200.0000, 500e6], + ['500_266.67.in', '500_MHz'+sep+'266.67.in_sparky', 266.6666, 500e6], + ['500_333.33.in', '500_MHz'+sep+'333.33.in_sparky', 333.3333, 500e6], + ['500_400.in', '500_MHz'+sep+'400.in_sparky', 400.0000, 500e6], + ['500_466.67.in', '500_MHz'+sep+'466.67.in_sparky', 466.6666, 500e6], + ['500_533.33.in', '500_MHz'+sep+'533.33.in_sparky', 533.3333, 500e6], + ['500_533.33.in.bis', '500_MHz'+sep+'533.33.in.bis_sparky', 533.3333, 500e6], + ['500_600.in', '500_MHz'+sep+'600.in_sparky', 600.0000, 500e6], + ['500_666.67.in', '500_MHz'+sep+'666.67.in_sparky', 666.6666, 500e6], + ['500_733.33.in', '500_MHz'+sep+'733.33.in_sparky', 733.3333, 500e6], + ['500_800.in', '500_MHz'+sep+'800.in_sparky', 800.0000, 500e6], + ['500_866.67.in', '500_MHz'+sep+'866.67.in_sparky', 866.6666, 500e6], + ['500_933.33.in', '500_MHz'+sep+'933.33.in_sparky', 933.3333, 500e6], + ['500_933.33.in.bis', '500_MHz'+sep+'933.33.in.bis_sparky', 933.3333, 500e6], + ['500_1000.in', '500_MHz'+sep+'1000.in_sparky', 1000.0000, 500e6], + ['800_reference.in', '800_MHz'+sep+'reference.in_sparky', None, 800e6], + ['800_66.667.in', '800_MHz'+sep+'66.667.in_sparky', 66.6666, 800e6], + ['800_133.33.in', '800_MHz'+sep+'133.33.in_sparky', 133.3333, 800e6], + ['800_133.33.in.bis', '800_MHz'+sep+'133.33.in.bis_sparky', 133.3333, 800e6], + ['800_200.in', '800_MHz'+sep+'200.in_sparky', 200.0000, 800e6], + ['800_266.67.in', '800_MHz'+sep+'266.67.in_sparky', 266.6666, 800e6], + ['800_333.33.in', '800_MHz'+sep+'333.33.in_sparky', 333.3333, 800e6], + ['800_400.in', '800_MHz'+sep+'400.in_sparky', 400.0000, 800e6], + ['800_466.67.in', '800_MHz'+sep+'466.67.in_sparky', 466.6666, 800e6], + ['800_533.33.in', '800_MHz'+sep+'533.33.in_sparky', 533.3333, 800e6], + ['800_533.33.in.bis', '800_MHz'+sep+'533.33.in.bis_sparky', 533.3333, 800e6], + ['800_600.in', '800_MHz'+sep+'600.in_sparky', 600.0000, 800e6], + ['800_666.67.in', '800_MHz'+sep+'666.67.in_sparky', 666.6666, 800e6], + ['800_733.33.in', '800_MHz'+sep+'733.33.in_sparky', 733.3333, 800e6], + ['800_800.in', '800_MHz'+sep+'800.in_sparky', 800.0000, 800e6], + ['800_866.67.in', '800_MHz'+sep+'866.67.in_sparky', 866.6666, 800e6], + ['800_933.33.in', '800_MHz'+sep+'933.33.in_sparky', 933.3333, 800e6], + ['800_933.33.in.bis', '800_MHz'+sep+'933.33.in.bis_sparky', 933.3333, 800e6], + ['800_1000.in', '800_MHz'+sep+'1000.in_sparky', 1000.0000, 800e6] ] # Loop over the spectra. -for i in xrange(len(names)): +for id, file, cpmg_frq, H_frq in data: # Load the peak intensities. - spectrum.read_intensities(file=names[i], dir=data_path1, spectrum_id=names[i], int_method='height') - spectrum.read_intensities(file=names[i], dir=data_path2, spectrum_id=names[i], int_method='height') + spectrum.read_intensities(file=file, dir=data_path, spectrum_id=id, int_method='height') + + # Relaxation dispersion CPMG constant time delay T (in s). + relax_disp.cpmg_delayT(spectrum_id=id, delayT=0.030) # Set the relaxation dispersion CPMG frequencies. - relax_disp.cpmg_frq(cpmg_frq=cpmg_frq[i], spectrum_id=names[i]) + relax_disp.cpmg_frq(spectrum_id=id, cpmg_frq=cpmg_frq) + + # Set the NMR field strength of the spectrum. + frq.set(id=id, frq=H_frq) # Specify the duplicated spectra. -spectrum.replicated(spectrum_ids=['133.33.in_sparky', '133.33.in.bis_sparky']) -spectrum.replicated(spectrum_ids=['533.33.in_sparky', '533.33.in.bis_sparky']) -spectrum.replicated(spectrum_ids=['933.33.in_sparky', '933.33.in.bis_sparky']) +spectrum.replicated(spectrum_ids=['500_133.33.in', '500_133.33.in.bis']) +spectrum.replicated(spectrum_ids=['500_533.33.in', '500_533.33.in.bis']) +spectrum.replicated(spectrum_ids=['500_933.33.in', '500_933.33.in.bis']) +spectrum.replicated(spectrum_ids=['800_133.33.in', '800_133.33.in.bis']) +spectrum.replicated(spectrum_ids=['800_533.33.in', '800_533.33.in.bis']) +spectrum.replicated(spectrum_ids=['800_933.33.in', '800_933.33.in.bis']) # Peak intensity error analysis. -spectrum.error_analysis() +spectrum.error_analysis(subset=['500_reference.in', '500_66.667.in', '500_133.33.in', '500_133.33.in.bis', '500_200.in', '500_266.67.in', '500_333.33.in', '500_400.in', '500_466.67.in', '500_533.33.in', '500_533.33.in.bis', '500_600.in', '500_666.67.in', '500_733.33.in', '500_800.in', '500_866.67.in', '500_933.33.in', '500_933.33.in.bis', '500_1000.in']) +spectrum.error_analysis(subset=['800_reference.in', '800_66.667.in', '800_133.33.in', '800_133.33.in.bis', '800_200.in', '800_266.67.in', '800_333.33.in', '800_400.in', '800_466.67.in', '800_533.33.in', '800_533.33.in.bis', '800_600.in', '800_666.67.in', '800_733.33.in', '800_800.in', '800_866.67.in', '800_933.33.in', '800_933.33.in.bis', '800_1000.in']) # Deselect unresolved spins. -deselect.read(file='unresolved', dir=data_path1, res_num_col=1) -deselect.read(file='unresolved', dir=data_path2, res_num_col=1) +deselect.read(file='unresolved', dir=data_path+sep+'500_MHz', res_num_col=1) +deselect.read(file='unresolved', dir=data_path+sep+'800_MHz', res_num_col=1) -# Grid search. -grid_search(inc=11) -# Minimise. -minimise('simplex', constraints=False) +# Auto-analysis execution. +########################## -# Monte Carlo simulations. -monte_carlo.setup(number=10) -monte_carlo.create_data() -monte_carlo.initial_values() -minimise('simplex', constraints=False) -monte_carlo.error_analysis() - -# Save the relaxation dispersion parameters. -value.write(param='rex', file='devnull', force=True) - -# Save the results. -results.write(file='devnull', force=True) - -# Create Grace plots of the data. -grace.write(y_data_type='chi2', file='devnull', force=True) # Minimised chi-squared value. -grace.write(y_data_type='R2', file='devnull', force=True) # R2 parameter without Rex contribution. -grace.write(y_data_type='Rex', file='devnull', force=True) # Chemical exchange contribution to observed R2. -grace.write(y_data_type='kex', file='devnull', force=True) # Exchange rate. -grace.write(x_data_type='frq', y_data_type='int', file='devnull', force=True) # Average peak intensities. -grace.write(x_data_type='frq', y_data_type='int', norm=True, file='devnull', force=True) # Average peak intensities (normalised). +# Do not change! +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) # Save the program state. state.save('devnull', force=True)