Re: field strength off-resonance R1rho constant relax time relaxation dispersion

2014-08-22 Thread Edward d'Auvergne
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

2014-08-22 Thread Edward d'Auvergne
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

2014-08-22 Thread Atul Srivastava
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

2014-08-22 Thread Troels Emtekær Linnet
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 = []