Re: field strength off-resonance R1rho constant relax time relaxation dispersion
Hi Atul, Continuing from Troels' post at http://thread.gmane.org/gmane.science.nmr.relax.user/1718/focus=1732, this time with the ppm units: On 21 August 2014 12:00, Troels Emtekær Linnet tlin...@nmr-relax.com wrote: Dear Atul. [snip] # Set the relaxation dispersion experiment type. relax_disp.exp_type(spectrum_id=id, exp_type='R1rho') - Well, the program needs to know which code-path to take. Not CPMG code. :-) # Set the relaxation dispersion spin-lock field strength (nu1). relax_disp.spin_lock_field(spectrum_id=id, field=field) - Here: 'help(relax_disp.spin_lock_field)', show is that this should be in Hz. - Let is review figure Fig1_Palmer_Massi_2006.png - This is the w_1 on S_x axis. - What is here put into relax is nu_1. This is then later converted to w_1, by multiplying with 2*pi. - It seems that you have: 'spin-lock amplitude' / nu_1 / 'spin-lock field' in column 4, while the the sample script has this in Column 3. # Set the spin-lock offset. relax_disp.spin_lock_offset(spectrum_id=id, offset=offset) - Here: 'help(relax_disp.spin_lock_offset)', show is that this should be in ppm. - I see you have the distance/position (in Hz) of the spin-lock carrier in column 3. Values of 2100, 2728, ... ... ...6500 - Relax needs to know the position in ppm. Edward can give you a detailed description why we use ppm. It is related to minimise user error input. - You need to calculate this yourself. If you use NMRPipe, and look in 'fic.com', it could look like this var2pipe -in ./fid \ -noaswap \ -xN 2044 -yN 256 \ -xT 1022 -yT 128 \ -xMODEComplex -yMODE Rance-Kay \ -xSW12001.200 -ySW 2659.928 \ -xOBS 750.061 -yOBS 76.012 \ -xCAR 4.7893 -yCAR 118.536 \ -xLAB HN -yLAB N15 \ -ndim 2 -aq2D States \ -out ./test.fid -verb -ov Or try this script in relax: relax test.py test.py from math import pi from lib.physical_constants import return_gyromagnetic_ratio H_frq = 900.0e6 print(The magnetic field strength as the proton frequency in Mega Hertz: %3.2f % (H_frq / 1.E6) ) xOBS_Hz = H_frq B0_tesla = xOBS_Hz / return_gyromagnetic_ratio(nucleus='1H') * 2.0 * pi print(BO in Tesla: %3.2f % B0_tesla) yOBS_N15_Hz = abs( xOBS_Hz / return_gyromagnetic_ratio(nucleus='1H') * return_gyromagnetic_ratio(nucleus='15N') ) print(The precess frequency for 15N in MHz: %3.2f % (yOBS_N15_Hz / 1.E6) ) offset_Hz = 2100. offset_ppm_N15 = offset_Hz / yOBS_N15_Hz * 1E6 print(The offset ppm: %3.2f % (offset_ppm_N15) ) # Position of carrier. yCAR_N15_ppm = 118.536 print(The center position of the carrier: %3.2f % (yCAR_N15_ppm) ) omega_rf_ppm = yCAR_N15_ppm + offset_ppm_N15 print(The omega_rf in ppm: %3.2f % (omega_rf_ppm) ) This is correct, you will have have to convert to ppm values. The reason is simple, this is the most universal way of specifying the position in the spectrum as it is field strength independent. And it matches the ppm units of the chemical shifts you will have loaded. Some people measure Hz units from the centre of the spectrum, others from the edge of the spectrum. It often depends if you are a Varian, Bruker, or Joel user. But with ppm units, such issues do not need to be handled within relax. Regards, Edward ___ relax (http://www.nmr-relax.com) This is the relax-users mailing list relax-users@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-users
Re: field strength off-resonance R1rho constant relax time relaxation dispersion
Hi Atul, Again continuing from Troels' post at http://thread.gmane.org/gmane.science.nmr.relax.user/1718/focus=1732. Well, actually, as Troels fully covered all of you questions in more detail than I could have provided, I don't have anything to add. If you have other questions, please don't hesitate to ask. Regards, Edward On 21 August 2014 12:00, Troels Emtekær Linnet tlin...@nmr-relax.com wrote: [snip] relax_disp.relax_time(spectrum_id=id, time=relax_time) - This is used for the initial R2eff calculation, for exponential curve fitting. # Set the NMR field strength of the spectrum. spectrometer.frequency(id=id, frq=H_frq) - This is used for conversion between nucleus, etc. # Load the R1 data. relax_data.read(ri_id='500MHz', ri_type='R1', frq=500e6, file='R1_500MHz.out', dir=DATA_PATH, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7) - R1 needs to be loaded. This is because that R1 is part of the equations. :-) The next release of relax, will implement feature where R1 is fitted. Note, that fitting introduces another variable in the equations. # Read the chemical shift data. chemical_shift.read(file='ref_500MHz.list', dir=DATA_PATH) - This is needed to get the ppm position of the nucleus. - See now: http://www.nmr-relax.com/manual/Dispersion_model_summary.html - The average resonance in the rotating frame Omega(bar) = w_(bar) - w_rf. - Here w_bar is the chemical shift, and w_rf is the offset. - Let is review figure Fig1_Palmer_Massi_2006.png - This is the S_z axis. That should be it. If you have any questions, please don't hesitate to write again. If you need more help, consider writing a support request on the homepage tracker. - https://gna.org/support/?group=relax Add following information: # Please attach a system info file relax -i -t relax_i.txt # Please write up, which buttons you pushed, or attach your script. # Consider adding your data in sample format. Meaning that you delete all confidential information from the files, and only have 1-2 residues left for testing. If you write such a support request, it it easier to share script files, and help other users. The benefits from such a support request is: - The information is available to all users, which can benefit others in same situation. - The information can be tracked back. - The relax manual can be expanded, to help future users in same situation. Good luck! Best Troels Emtekær Linnet PhD student Copenhagen University SBiNLab, 3-0-41 Ole Maaloes Vej 5 2200 Copenhagen N Tlf: +45 353-22083 Lync Tlf: +45 353-30195 ___ relax (http://www.nmr-relax.com) This is the relax-users mailing list relax-users@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-users
Re: field strength off-resonance R1rho constant relax time relaxation dispersion
Dear Edward, Thanks for providing help and insights. I used an improved script. The scripts is able to calculate the R2eff and the omegaeffective properly, but it is not able to fit any model. It also sees dispersion point as a constant 1500 Hz (see attached file in results/R2eff/disp_55_N.out). I have attached all sample data, script and results for your review. Please see the last few lines in the log file for the error message. Thanks, Atul On Fri, Aug 22, 2014 at 3:02 AM, Edward d'Auvergne edw...@nmr-relax.com wrote: Hi Atul, Again continuing from Troels' post at http://thread.gmane.org/gmane.science.nmr.relax.user/1718/focus=1732. Well, actually, as Troels fully covered all of you questions in more detail than I could have provided, I don't have anything to add. If you have other questions, please don't hesitate to ask. Regards, Edward On 21 August 2014 12:00, Troels Emtekær Linnet tlin...@nmr-relax.com wrote: [snip] relax_disp.relax_time(spectrum_id=id, time=relax_time) - This is used for the initial R2eff calculation, for exponential curve fitting. # Set the NMR field strength of the spectrum. spectrometer.frequency(id=id, frq=H_frq) - This is used for conversion between nucleus, etc. # Load the R1 data. relax_data.read(ri_id='500MHz', ri_type='R1', frq=500e6, file='R1_500MHz.out', dir=DATA_PATH, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7) - R1 needs to be loaded. This is because that R1 is part of the equations. :-) The next release of relax, will implement feature where R1 is fitted. Note, that fitting introduces another variable in the equations. # Read the chemical shift data. chemical_shift.read(file='ref_500MHz.list', dir=DATA_PATH) - This is needed to get the ppm position of the nucleus. - See now: http://www.nmr-relax.com/manual/Dispersion_model_summary.html - The average resonance in the rotating frame Omega(bar) = w_(bar) - w_rf. - Here w_bar is the chemical shift, and w_rf is the offset. - Let is review figure Fig1_Palmer_Massi_2006.png - This is the S_z axis. That should be it. If you have any questions, please don't hesitate to write again. If you need more help, consider writing a support request on the homepage tracker. - https://gna.org/support/?group=relax Add following information: # Please attach a system info file relax -i -t relax_i.txt # Please write up, which buttons you pushed, or attach your script. # Consider adding your data in sample format. Meaning that you delete all confidential information from the files, and only have 1-2 residues left for testing. If you write such a support request, it it easier to share script files, and help other users. The benefits from such a support request is: - The information is available to all users, which can benefit others in same situation. - The information can be tracked back. - The relax manual can be expanded, to help future users in same situation. Good luck! Best Troels Emtekær Linnet PhD student Copenhagen University SBiNLab, 3-0-41 Ole Maaloes Vej 5 2200 Copenhagen N Tlf: +45 353-22083 Lync Tlf: +45 353-30195 ___ relax (http://www.nmr-relax.com) This is the relax-users mailing list relax-users@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-users
Re: field strength off-resonance R1rho constant relax time relaxation dispersion
Dear Atul. Please use the support tracker when you upload files. The email list is fragile, and cannot handle email attachment. I made small modifications to your script. I normally split them up. 1st script for setup, and printing stuff to check. 2nd script, which just call the previous script, and run analysis. So, I would: relax 1_setup_r1rho.py to check everything. When I am happy, I just: relax 2_pre_run_r2eff.py which call script 1, setup, and then run. Did you know you can also: relax 1_setup_r1rho.py -p This runs the script, and enters terminal. Like python -i script.py Any variable saved in the cdp can be accessed. Try: relax 1_setup_r1rho.py -p print cdp.temp You can also run relax with the debug option -d relax 2_pre_run_r2eff.py -d This gives more information about where the error is. Anyway. The problem seems related to, that you only have one reference intensity per offset. 1_setup_r1rho.py # Python module imports. from os import sep, getcwd # relax module imports. from pipe_control.mol_res_spin import generate_spin_string, return_spin, spin_loop from specific_analyses.relax_disp.data import average_intensity, generate_r20_key, get_curve_type, has_exponential_exp_type, has_r1rho_exp_type, loop_exp_frq, loop_exp_frq_offset_point, loop_exp_frq_offset_point_time, loop_time, return_grace_file_name_ini, return_param_key_from_data # Set up the data pipe. ### # The path to the data files. DATA_PATH = getcwd() # Create the data pipe. pipe_name = 'base pipe' pipe_bundle = 'relax_disp' pipe.create(pipe_name=pipe_name, bundle=pipe_bundle, pipe_type='relax_disp') # Read the spins from a spectum file instead. This already contain the spin name. spectrum.read_spins(file='2100_off_reso_R1rho.list', dir=DATA_PATH) # Set the isotope information. spin.isotope(isotope='15N') # Loop over spins, to see current setup. for cur_spin, mol_name, resi, resn, spin_id in spin_loop(full_info=True, return_id=True, skip_desel=True): print mol_name, resi, resn, spin_id print print cur_spin # The spectral data - spectrum ID, peak list file name, spin-lock field strength (Hz), the spin-lock offset (ppm), the relaxation time (s), spectrometer frequency (Hz), and experimental error (RMSD of the base plane noise for each spectrum). data = [ ['ref_off_reso_R1rho', 'ref_off_reso_R1rho.list', None, 150.87, 0.320, 900.21422558574e6, 9.0], ['2100_off_reso_R1rho', '2100_off_reso_R1rho.list', 1500.0, 141.01, 0.320, 900.21422558574e6, 9.0], ['2728_off_reso_R1rho', '2728_off_reso_R1rho.list', 1500.0, 147.89, 0.320, 900.21422558574e6, 9.0], ['3357_off_reso_R1rho', '3357_off_reso_R1rho.list', 1500.0, 154.78, 0.320, 900.21422558574e6, 9.0], ['3985_off_reso_R1rho', '3985_off_reso_R1rho.list', 1500.0, 161.66, 0.320, 900.21422558574e6, 9.0], ['4614_off_reso_R1rho', '4614_off_reso_R1rho.list', 1500.0, 168.55, 0.320, 900.21422558574e6, 9.0], ['5242_off_reso_R1rho', '5242_off_reso_R1rho.list', 1500.0, 175.43, 0.320, 900.21422558574e6, 9.0], ['5871_off_reso_R1rho', '5871_off_reso_R1rho.list', 1500.0, 182.32, 0.320, 900.21422558574e6, 9.0], ['6500_off_reso_R1rho', '6500_off_reso_R1rho.list', 1500.0, 189.21, 0.320, 900.21422558574e6, 9.0] ] # Loop over the spectra. for id, file, field, offset, relax_time, H_frq, rmsd in data: print(\n###) print(id=%s, field=%s, offset=%3.2f, time=%1.3f, frq=%3.1f, rmsd=%3.2f % (id, field, offset, relax_time, H_frq/1e6, rmsd) ) # Load the peak intensities and set the errors. spectrum.read_intensities(file=file, dir=DATA_PATH, spectrum_id=id, int_method='height') spectrum.baseplane_rmsd(spectrum_id=id, error=rmsd) # Set the relaxation dispersion experiment type. relax_disp.exp_type(spectrum_id=id, exp_type='R1rho') # Set the relaxation dispersion spin-lock field strength (nu1). relax_disp.spin_lock_field(spectrum_id=id, field=field) # Set the spin-lock offset. relax_disp.spin_lock_offset(spectrum_id=id, offset=offset) # Set the relaxation times (in s). relax_disp.relax_time(spectrum_id=id, time=relax_time) # Set the NMR field strength of the spectrum. spectrometer.frequency(id=id, frq=H_frq) # Load the R1 data. relax_data.read(ri_id='R1', ri_type='R1', frq=H_frq, file='R1_relax.out', dir=DATA_PATH, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7) # Read the chemical shift data. chemical_shift.read(file='2100_off_reso_R1rho.list', dir=DATA_PATH) # Loop over spins, to see current setup. for cur_spin, mol_name, resi, resn, spin_id in spin_loop(full_info=True, return_id=True, skip_desel=True): print mol_name, resi, resn, spin_id print print cur_spin print # Loop over setup. for id in cdp.exp_type.keys(): print id, cdp.exp_type[id], cdp.spectrometer_frq[id], cdp.spin_lock_offset[id], cdp.spin_lock_nu1[id] print cdp.temp = []