mailRe: Is it possible to analyse CPMG experiments with relax?


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Troels Emtekær Linnet on May 02, 2013 - 16:58:
Dear Edward.

Thank you for your generous email, which helped a-lot.

I am happy to see the active development, and I would be more than happy to join in.
I am "quite" good in python programming, and are confident i revision programs as svn and git.
And I have courses in scientific computing, so I think i get along quite good.

My reason for my interest, is that I think I should change my working habits, to something more effect full.

My work-flow at the moment, is this.

1) CPMG/T1-rho experiment acquisition with NLS, through VnmrJ.
2) Data reconstruction in qMDD.
(3) Main peak positioning in CcpNmr  Analysis.)
4) Small peak adjustment, control in SPARKY.
5) Point sum integration in with: seriesTab with: -dx 1 -dy 1
6) Integration analysis in gnuplot/IgorPro,Originlab.
The use of IgorPro,Originlab have been used because of easy use of the global fitting routine, but pose a problem, since
we only have a very few licenses. And I weigh open-source very high. :-)

The last weeks, I have fiddling around my workflow to try something like this:
1) CPMG/T1-rho experiment acquisition with NLS, through VnmrJ.
2) Data reconstruction in qMDD.
(3) Main peak positioning in CcpNmr  Analysis.)
4) Small peak adjustment, control in SPARKY.
5) Point sum integration in nmrglue, and easy visualization of each integration. Preparation of data for fitting.
6) Global fitting. Either with nessy, relax or with python scipy leastsq.

Here I tried to make a nessy database, but nessy came out very buggy.
And I was about to set out for some python scipy fitting after nmrglue.

But I had a hard time imagining that NMR software were not already developed for this, 
and I was very pleased to see the development of relax, which have not come to my attention before.
And especially the inclusion of the python interpreter, and possibility to write scripts, is genius.
Which is similar to the where the power of pymol is shining through.

An optimal workflow would be this.
1) CPMG/T1-rho experiment acquisition with NLS, through VnmrJ.
2) Data reconstruction in qMDD.
(3) Main peak positioning in CcpNmr  Analysis.)
4) Small peak adjustment, control in SPARKY.
5) Point sum integration in nmrglue, and easy visualization of each integration. Preparation of data for fitting.
6) nmrglue script preparation for relax, execution, save of result.
7) Graphical inspection of result through relax.

So, I think I will try out the current state of the relax-disp branch.
Are there any others developing on this branch?

Best
Troels

--
Troels Emtekær Linnet
PhD student
Copenhagen University
SBiNLab, 3-0-41
Ole Maaloes Vej 5
2200 Copenhagen N
Tlf: +45 353-22083



2013/5/2 Edward d'Auvergne <edward@xxxxxxxxxxxxx>
Hi Troels,

Welcome to the relax mailing lists.  For now the answer to your
question is, unfortunately, no - relax does not officially support
relaxation dispersion.  The analysis you are running is simple two
parameter exponential curve-fitting
(http://www.nmr-relax.com/manual/Relaxation_curve_fitting.html).  This
can be used to find the R2eff or R1rho values if you have measured the
full exponential curves, but otherwise you cannot perform a dispersion
analysis with this.

This may not be of use for you at the moment, but note that relax has
unofficial and incomplete support for dispersion analyses (both
CPMG-type and R1rho-type data sets).  As relax is open source, there
are many NMR spectroscopists who have added code to relax (for example
see http://gna.org/project/memberlist.php?group=relax).  An initial
implementation of the relaxation dispersion analysis was added to a
relax branch back in 2009 by Sebastian Morin
(http://thread.gmane.org/gmane.science.nmr.relax.devel/1728).  But as
this was not completed at the time, it was never merged back into the
relax main line (the source code where official relax releases come
from).  I have recently restored the branch to a partially working
state and added a graphical interface for the analysis - mainly for my
own purposes (http://svn.gna.org/viewcvs/relax/branches/).  So at some
point in the near future relax will be able to perform the analyses
you are interested in.

As relax is open source, if you are interested and adventurous enough
you are most welcome to help in the development.  Even if you do not
know how to code, there are many other things which can be done.  For
example calculating the partial derivatives of the analytic solutions
to obtain the gradients and Hessians so that with relax you can have
access to far more powerful optimisation algorithms than any of the
other dispersion software has access to.  Or to create test data
whereby the solution is know, or to collect the input and output test
data from published results.  If you have the subversion version
control software installed, you can obtain the code by typing either:

$ svn co svn://svn.gna.org/svn/relax/branches/relax-disp

or:

$ svn co http://svn.gna.org/svn/relax/branches/relax-disp

If you are more interested in quickly performing the analysis, I would
point you to Dr. Flemming Hansen's CATIA program:

http://www.biochem.ucl.ac.uk/hansen/catia/ (the old page is
http://pound.med.utoronto.ca/~flemming/catia/).

This performs numerically integration of the Bloch-McConnell
equations, so not the optimisation of the analytic solutions of
Meiboom, Richard-Carver, etc.  It is also only for CPMG-type data
rather than R1rho, whereas the relax branch will handle both.  I hope
this information helps.

Regards,

Edward




On 30 April 2013 18:40, Troels Emtekær Linnet <tlinnet@xxxxxxxxx> wrote:
> Dear relax users.
>
> I am looking into different NMR programs to fit
> relaxation data for CPMG relaxation dispersion experiments and T1rho.
>
> Essentially, I am looking for programs for which can fit functions, which
> for example nessy provide:
> http://home.gna.org/nessy/reference.html
> The Meiboom equation or Richard-Carver equation
>
> Nessy is very buggy, and I am looking for a replacement.
>
> I should be able to:
> R2eff = -1.0/time_T2*log(Intensity/averageZero)
>
> ncyc_arr=[28, 0, 4, 32, 60, 2, 10, 16, 8, 20, 50, 18, 40, 6, 12, 0, 24]
> time_T2 = 0.06 second
> nu = ncyc_arr[i]/time_T2
>
> R2cpmg_slow:
> tau_cpmg = 1.0/(4*nu)
> R2eff = R2+ka*(1.0-sin(Domega*tau_cpmg)/(Domega*tau_cpmg))
>
>
> I have followed the tutorial in the homepage manual:
>
> Can relax analyse these kinds of experiments?
> Should i provide the: relax_fit.relax_time(time to be equal tau_cpmg ?
> I put in time_T2, even though its wrong. I just wanted to try the program.
> :-)
>
> ----------------------------------------------------------------
> """Script for relaxation curve fitting."""
> # Create the 'rx' data pipe.
> pipe.create('rx', 'relax_fit')
> ## Load the backbone amide 15N spins from a PDB file.
> pdbfile=False
> if pdbfile:
>     structure.read_pdb(pdbfile)
>     structure.load_spins(spin_id='@N')
> else:
>     molecule.create(mol_name='protein', mol_type='protein')
>     residue.create(res_num=2, res_name='VAL')
>     spin.create(res_num=2, spin_name='N')
>     residue.create(res_num=3, res_name='PHE')
>     spin.create(res_num=3, spin_name='N')
>     residue.create(res_num=4, res_name='GLY')
>     spin.create(res_num=4, spin_name='N')
>     residue.create(res_num=5, res_name='ARG')
>     spin.create(res_num=5, spin_name='N')
>     residue.create(res_num=6, res_name='CYS')
>     .... and so on
>
> ## Loop over the spectra intensities. Relaxation times should be in seconds.
> readint=True
> if readint:
>     spectrum.read_intensities(dir='relax', file='proc_list.txt.0int',
> spectrum_id='0_0.0', int_method='point sum', heteronuc='N', proton='HN',
> int_col=3)
>     relax_fit.relax_time(time=0.06, spectrum_id='0_0.0')
>     spectrum.read_intensities(dir='relax', file='proc_list.txt.1int',
> spectrum_id='1_133.33', int_method='point sum', heteronuc='N', proton='HN',
> int_col=3)
>     relax_fit.relax_time(time=0.06, spectrum_id='1_133.33')
>     spectrum.read_intensities(dir='relax', file='proc_list.txt.2int',
> spectrum_id='2_166.67', int_method='point sum', heteronuc='N', proton='HN',
> int_col=3)
>     relax_fit.relax_time(time=0.06, spectrum_id='2_166.67')
>     spectrum.read_intensities(dir='relax', file='proc_list.txt.3int',
> spectrum_id='3_333.33', int_method='point sum', heteronuc='N', proton='HN',
> int_col=3)
>     relax_fit.relax_time(time=0.06, spectrum_id='3_333.33')
>     spectrum.read_intensities(dir='relax', file='proc_list.txt.4int',
> spectrum_id='4_33.33', int_method='point sum', heteronuc='N', proton='HN',
> int_col=3)
>     relax_fit.relax_time(time=0.06, spectrum_id='4_33.33')
>    ... and so on
>
> # Specify the duplicated spectra.
> spectrum.replicated(spectrum_ids=['0_0.0', '18_0.0'])
> spectrum.error_analysis()
>
> # Deselect unresolved spins.
> #deselect.read(file='unresolved', mol_name_col=1, res_num_col=2,
> res_name_col=3, spin_num_col=4, spin_name_col=5)
>
> # Set the relaxation curve type.
> relax_fit.select_model('exp')
>
> # Grid search.
> grid_search(inc=11)
>
> # Minimise.
> minimise('simplex', scaling=False, constraints=False)
>
> ## Monte Carlo simulations.
> monte_carlo.setup(number=10)
> monte_carlo.create_data()
> monte_carlo.initial_values()
> minimise('simplex', scaling=False, constraints=False)
> monte_carlo.error_analysis()
>
> ## Save the relaxation rates.
> value.write(param='rx', file='rx.out', force=True)
>
> ## Save the results.
> results.write(file='results', force=True)
>
> # Save the program state.
> state.save('rx.save', force=True)
>
> Best
>
> Troels Emtekær Linnet
> Ved kløvermarken 9, 1.th
> 2300 København S
> Mobil: +45 60210234
>
> _______________________________________________
> relax (http://www.nmr-relax.com)
>
> This is the relax-users mailing list
> relax-users@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-users
>


Related Messages


Powered by MHonArc, Updated Thu May 02 18:40:05 2013