Hi Troels,

Before I delete them, apart from the R2eff file do we need the results
files in the 
test_suite/shared_data/dispersion/Kjaergaard_et_al_2013/check_graphs/mc_2000/*/
directories?  These directories take up too much room, mainly because
of the interpolated Grace files in the final directory.  Is this
information required?  Or do you plan on using it in the future?

Cheers,

Edward


On 21 August 2014 10:02, Edward d'Auvergne <[email protected]> wrote:
> Hi Troels,
>
> I've now converted your code to handle the R1 parameter dynamically,
> so that is it part of the standard models.  Therefore the '* R1 fit'
> models have been removed.  Some parts using the MODEL_LIST_*_W_R1 and
> MODEL_LIST_*_FIT_R1 were a bit more complicated than expected to sort
> out.  But most things should now operate fine.  The
> Relax_disp.test_r1rho_kjaergaard_missing_r1 system test is still
> problematic as it is using the pre-run directory and loading the saved
> states of the models whereby R1 has not been optimised, rather than
> using model nesting as it should, but I should have a solution for
> that soon.  Anyway, this is only a small amount of work which uses the
> infrastructure you added to do everything.
>
> Regards,
>
> Edward
>
> On 20 August 2014 19:36, Troels Emtekær Linnet <[email protected]> wrote:
>> Hi Edward.
>>
>> I trust that you know how to better plan programming than me.
>>
>> Please convert if you feel that this is a necessary step.
>>
>> Best
>> Troels
>>
>> 2014-08-20 19:25 GMT+02:00 Edward d'Auvergne <[email protected]>:
>>> I have just obliterated the wall.  I have implemented:
>>>
>>> 1)  The relax_disp.r1_fit user function
>>> (http://thread.gmane.org/gmane.science.nmr.relax.scm/22858).
>>> 2)  The specific_analyses.relax_disp.data.is_r1_optimsed() function
>>> for asking if we should optimise R1 or not
>>> (http://thread.gmane.org/gmane.science.nmr.relax.scm/22857).
>>> 3)  The specific_analyses.relax_disp.parameters.r1_setup() function
>>> for modifying the model parameter list as needed
>>> (http://thread.gmane.org/gmane.science.nmr.relax.scm/22859).
>>> 4)  Sent the r1_fit flag into the target function
>>> (http://thread.gmane.org/gmane.science.nmr.relax.scm/22866).
>>>
>>> As can be seen, the changes were rather simple.  There is only one
>>> brick remaining in the ruins of this wall, and that is simply using
>>> this functionality.  It would require using the r1_fit flag in the
>>> target function __init__() method to switch between target functions,
>>> and then removing the redundant '* R1 fit' models.  Should I remove
>>> the last brick and simplify the model list?
>>>
>>> Regards,
>>>
>>> Edward
>>>
>>>
>>>
>>> On 20 August 2014 17:34, Edward d'Auvergne <[email protected]> wrote:
>>>> It's a thin wall that needs to be broken.  For the backend of the
>>>> relax_disp.select_model, we shouldn't do anything.  We make the
>>>> decision at the point of the grid_search() and minimise() API methods
>>>> if we should prefix the model parameter lists with R1.  As
>>>> grid_search() calls minimise(), then we do this once in minimise().
>>>> Even better would be in the
>>>> specific_analyses.relax_disp.optimisation.Disp_minimise_command class
>>>> just after the R1 data is assembled.
>>>>
>>>> We could create a new function called
>>>> specific_analyses.relax_disp.data.r1_optimisation() which decides if
>>>> R1 values are to be optimised.  This can be easily extended in the
>>>> future by someone else to handle CPMG data as well.  This function
>>>> returns True or False and this can be stored as the self.r1_fit flag
>>>> in Disp_minimise_command.  If self.r1_fit is True, we can then call
>>>> specific_analyses.relax_disp.parameters.prefix_r1() which adds the
>>>> required R1 parameters to the spin container 'param' list.  Then when
>>>> setting up the target function class in Disp_minimise_command.run(),
>>>> the self.r1_fit flag is sent in.  The target function class __init__()
>>>> method then uses the r1_fit flag to choose which target function
>>>> method will be aliased to self.func by adding an extra set of if
>>>> statements.  I.e. change:
>>>>
>>>>         if model == MODEL_DPL94:
>>>>             self.func = self.func_DPL94
>>>>         if model == MODEL_DPL94_FIT_R1:
>>>>             self.func = self.func_DPL94_fit_r1
>>>>
>>>> To:
>>>>
>>>>         if model == MODEL_DPL94:
>>>>             if r1_fit:
>>>>                 self.func = self.func_DPL94
>>>>             else:
>>>>                 self.func = self.func_DPL94_fit_r1
>>>>
>>>> The specific_analyses.relax_disp.data.r1_optimisation() function can
>>>> be called at any time that the R1 data is accessed, for example the
>>>> unpacking of the parameter values (though in this case the r1_fit flag
>>>> could be passed into the Disp_result_command to avoid this call).
>>>> That's pretty much it.  I don't think anything else is required.  Am I
>>>> missing something important?
>>>>
>>>> Cheers,
>>>>
>>>> Edawrd
>>>>
>>>> On 20 August 2014 17:14, Troels Emtekær Linnet <[email protected]> 
>>>> wrote:
>>>>> Heh.
>>>>>
>>>>> I think I tried the solution you suggested.
>>>>>
>>>>> But I think you will run into several problems, that the parameters is
>>>>> no longer setup correct.
>>>>>
>>>>> The issuing of:
>>>>> relax_disp.select_model(model=MODEL)
>>>>>
>>>>> does "alot" of stuff.
>>>>>
>>>>> The problems starts about the initialisation of the dispersion class.
>>>>>
>>>>> One hits a wall of problems, which I surely cannot recommend.
>>>>>
>>>>> Best
>>>>> Troels
>>>>>
>>>>>
>>>>> 2014-08-20 17:07 GMT+02:00 Edward d'Auvergne <[email protected]>:
>>>>>> Hi,
>>>>>>
>>>>>> Not loading the R1 data and then fitting it is good, especially if it
>>>>>> is automatic.  As long as a RelaxWarning is printed out to inform the
>>>>>> user.  The target function switching is much simpler than the model
>>>>>> name translation.  For example simply send in a r1_fit flag to the
>>>>>> target function __init__() method and then add some more if statements
>>>>>> to the end of that method.  It would make it even more automatic from
>>>>>> the perspective of the user.
>>>>>>
>>>>>> As I said, you've already done the hard part.  The infrastructure you
>>>>>> added is there now for handling this.  You have implemented all
>>>>>> required target functions and associated functions for handling the R1
>>>>>> fitting.  The changes we are discussing are trivial in comparison.
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Edward
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 20 August 2014 16:56, Troels Emtekær Linnet <[email protected]> 
>>>>>> wrote:
>>>>>>> Hi Edward.
>>>>>>>
>>>>>>> I actually think it is a quite elegant solution, that if one does not
>>>>>>> load R1 data, then the R1 parameter is fitted.
>>>>>>>
>>>>>>> I think it is a better solution than the previous suggestion.
>>>>>>>
>>>>>>> It involves less coding, and the logic is sound.
>>>>>>>
>>>>>>> And the system is still "open" for weird stuff, whereby you by
>>>>>>> scripting can analyse with and without fitting R1 in same analyses.
>>>>>>>
>>>>>>> I think this is best.
>>>>>>>
>>>>>>> But in the end. Potato, tomato.
>>>>>>> If this solution prevents any further implementation, then this could
>>>>>>> also be done.
>>>>>>>
>>>>>>> Best
>>>>>>> Troels
>>>>>>>
>>>>>>>
>>>>>>> 2014-08-20 16:48 GMT+02:00 Edward d'Auvergne <[email protected]>:
>>>>>>>> An easy system test would be to load a set of CPMG data and a set of
>>>>>>>> R1rho data, and then see if this can be analysed assuming no exchange
>>>>>>>> via the 'No Rex' models.  There are no other models for this yet, but
>>>>>>>> it would show what is missing.  You've added the infrastructure which
>>>>>>>> is the hardest part.  What remains to allow this is actually not much
>>>>>>>> at all now that the infrastructure is in place.  Just a bit of gluing
>>>>>>>> code.
>>>>>>>>
>>>>>>>> On a related note, what is your opinion on the suggestions you made in
>>>>>>>> sr #3135 at https://gna.org/support/?3135#comment0 "Optimisation of
>>>>>>>> the R1 relaxation rate for the off-resonance R1rho relaxation
>>>>>>>> dispersion models."?  Namely that we let the user choose if R1 values
>>>>>>>> are optimised or not for off-resonance data, whether or not R1 values
>>>>>>>> were loaded.  So then the '* R1 fit' models are merged into the
>>>>>>>> non-fitted models, and the target function switching occurs without
>>>>>>>> the user knowing.  You should note that the target function switching
>>>>>>>> is far simpler than the current model name translation system.  It
>>>>>>>> just requires a few more if statements at the end of the target
>>>>>>>> function __init__() method to alias the correct self.func_*() method.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Edward
>>>>>>>>
>>>>>>>>
>>>>>>>> On 20 August 2014 16:36, Troels Emtekær Linnet <[email protected]> 
>>>>>>>> wrote:
>>>>>>>>> Hi Edward.
>>>>>>>>>
>>>>>>>>> I think I in the start tried following this path.
>>>>>>>>>
>>>>>>>>> But I realised with all the "R1 fit" models, that the very important,
>>>>>>>>> relax_disp.select_model(model)
>>>>>>>>>
>>>>>>>>> setup all information for this model.
>>>>>>>>>
>>>>>>>>> As this was also a new model implementation, I also wanted the
>>>>>>>>> flexibility to be able to select the desired model, and
>>>>>>>>> be able to compare.
>>>>>>>>>
>>>>>>>>> I would suggest that this functionality is not digged further down the
>>>>>>>>> code, before more experience is collected.
>>>>>>>>>
>>>>>>>>> Best
>>>>>>>>> Troels
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2014-08-20 16:22 GMT+02:00 Edward d'Auvergne <[email protected]>:
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> What would be even more powerful would be to shift this functionality
>>>>>>>>>> even deeper down and merging the 'No Rex' and 'No Rex R1rho off res'
>>>>>>>>>> models into one, just as the 'R2eff' model covers both the 
>>>>>>>>>> exponential
>>>>>>>>>> curve-fitting via minimisation and the two-point approximation by
>>>>>>>>>> calculation.  Rather than switching the model name for the user, the
>>>>>>>>>> target function can be switched.  The 'No Rex R1 fit' model could 
>>>>>>>>>> then
>>>>>>>>>> be created (by simply renaming 'No Rex R1rho off res R1 fit') and 
>>>>>>>>>> this
>>>>>>>>>> would then eventually handle CPMG data as well.
>>>>>>>>>>
>>>>>>>>>> The reason for this is simple.  In the future, certain interested
>>>>>>>>>> parties (you probably know who) plans on developing a combined CPMG
>>>>>>>>>> and R1rho model and on analysing this data together.  This will need 
>>>>>>>>>> a
>>>>>>>>>> 'No Rex' model for statistical comparisons.  The splitting of 'No 
>>>>>>>>>> Rex'
>>>>>>>>>> into two models as is currently coded is incompatible with this.  A
>>>>>>>>>> 'No Rex' model which has a loop over experiment types "for ei in
>>>>>>>>>> range(self.NE):" switching to the different functionality would be a
>>>>>>>>>> better solution.
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>>
>>>>>>>>>> Edward
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 20 August 2014 16:09,  <[email protected]> wrote:
>>>>>>>>>>> Author: tlinnet
>>>>>>>>>>> Date: Wed Aug 20 16:09:40 2014
>>>>>>>>>>> New Revision: 25100
>>>>>>>>>>>
>>>>>>>>>>> URL: http://svn.gna.org/viewcvs/relax?rev=25100&view=rev
>>>>>>>>>>> Log:
>>>>>>>>>>> Made the GUI selection of models for relaxation dispersion more 
>>>>>>>>>>> simple.
>>>>>>>>>>>
>>>>>>>>>>> After the implementation of a function which will translate the 
>>>>>>>>>>> models, the
>>>>>>>>>>> 'No Rex' model will be converted to the 'No Rex' model for R1rho 
>>>>>>>>>>> off-resonance.
>>>>>>>>>>>
>>>>>>>>>>> Also the corresponding 'R1 fit' model will be chosen istead, if R1 
>>>>>>>>>>> data has not been loaded.
>>>>>>>>>>>
>>>>>>>>>>> This makes the model selection easier in the GUI interface.
>>>>>>>>>>>
>>>>>>>>>>> Modified:
>>>>>>>>>>>     trunk/gui/analyses/auto_relax_disp.py
>>>>>>>>>>>
>>>>>>>>>>> Modified: trunk/gui/analyses/auto_relax_disp.py
>>>>>>>>>>> URL: 
>>>>>>>>>>> http://svn.gna.org/viewcvs/relax/trunk/gui/analyses/auto_relax_disp.py?rev=25100&r1=25099&r2=25100&view=diff
>>>>>>>>>>> ==============================================================================
>>>>>>>>>>> --- trunk/gui/analyses/auto_relax_disp.py       (original)
>>>>>>>>>>> +++ trunk/gui/analyses/auto_relax_disp.py       Wed Aug 20 16:09:40 
>>>>>>>>>>> 2014
>>>>>>>>>>> @@ -715,8 +715,8 @@
>>>>>>>>>>>          MODEL_R2EFF,
>>>>>>>>>>>          None,
>>>>>>>>>>>          MODEL_NOREX,
>>>>>>>>>>> -        MODEL_NOREX_R1RHO,
>>>>>>>>>>> -        MODEL_NOREX_R1RHO_FIT_R1,
>>>>>>>>>>> +#        MODEL_NOREX_R1RHO,
>>>>>>>>>>> +#        MODEL_NOREX_R1RHO_FIT_R1,
>>>>>>>>>>>          None,
>>>>>>>>>>>          MODEL_LM63,
>>>>>>>>>>>          MODEL_LM63_3SITE,
>>>>>>>>>>> @@ -735,15 +735,15 @@
>>>>>>>>>>>          MODEL_M61,
>>>>>>>>>>>          MODEL_M61B,
>>>>>>>>>>>          MODEL_DPL94,
>>>>>>>>>>> -        MODEL_DPL94_FIT_R1,
>>>>>>>>>>> +#        MODEL_DPL94_FIT_R1,
>>>>>>>>>>>          MODEL_TP02,
>>>>>>>>>>> -        MODEL_TP02_FIT_R1,
>>>>>>>>>>> +#        MODEL_TP02_FIT_R1,
>>>>>>>>>>>          MODEL_TAP03,
>>>>>>>>>>> -        MODEL_TAP03_FIT_R1,
>>>>>>>>>>> +#        MODEL_TAP03_FIT_R1,
>>>>>>>>>>>          MODEL_MP05,
>>>>>>>>>>> -        MODEL_MP05_FIT_R1,
>>>>>>>>>>> +#        MODEL_MP05_FIT_R1,
>>>>>>>>>>>          MODEL_NS_R1RHO_2SITE,
>>>>>>>>>>> -        MODEL_NS_R1RHO_2SITE_FIT_R1,
>>>>>>>>>>> +#        MODEL_NS_R1RHO_2SITE_FIT_R1,
>>>>>>>>>>>          MODEL_NS_R1RHO_3SITE_LINEAR,
>>>>>>>>>>>          MODEL_NS_R1RHO_3SITE,
>>>>>>>>>>>          None,
>>>>>>>>>>> @@ -756,8 +756,8 @@
>>>>>>>>>>>          "{%s/%s, %s}" % (r2eff, r1rho, i0),
>>>>>>>>>>>          None,
>>>>>>>>>>>          "{%s, ...}" % (r2),
>>>>>>>>>>> -        "{%s, ...}" % (r2),
>>>>>>>>>>> -        "{%s, %s, ...}" % (r1, r2),
>>>>>>>>>>> +#        "{%s, ...}" % (r2),
>>>>>>>>>>> +#        "{%s, %s, ...}" % (r1, r2),
>>>>>>>>>>>          None,
>>>>>>>>>>>          "{%s, ..., %s, %s}" % (r2, phi_ex, kex),
>>>>>>>>>>>          "{%s, ..., %s, kB, %s, kC}" % (r2, phi_exB, phi_exC),
>>>>>>>>>>> @@ -776,15 +776,15 @@
>>>>>>>>>>>          "{%s, ..., %s, %s}" % (r1rho_prime, phi_ex, kex),
>>>>>>>>>>>          "{%s, ..., pA, %s, %s}" % (r1rho_prime, dw, kex),
>>>>>>>>>>>          "{%s, ..., %s, %s}" % (r1rho_prime, phi_ex, kex),
>>>>>>>>>>> -        "{%s, %s, ..., %s, %s}" % (r1, r1rho_prime, phi_ex, kex),
>>>>>>>>>>> +#        "{%s, %s, ..., %s, %s}" % (r1, r1rho_prime, phi_ex, kex),
>>>>>>>>>>>          "{%s, ..., pA, %s, %s}" % (r1rho_prime, dw, kex),
>>>>>>>>>>> -        "{%s, %s, ..., pA, %s, %s}" % (r1, r1rho_prime, dw, kex),
>>>>>>>>>>> +#        "{%s, %s, ..., pA, %s, %s}" % (r1, r1rho_prime, dw, kex),
>>>>>>>>>>>          "{%s, ..., pA, %s, %s}" % (r1rho_prime, dw, kex),
>>>>>>>>>>> -        "{%s, %s, ..., pA, %s, %s}" % (r1, r1rho_prime, dw, kex),
>>>>>>>>>>> +#        "{%s, %s, ..., pA, %s, %s}" % (r1, r1rho_prime, dw, kex),
>>>>>>>>>>>          "{%s, ..., pA, %s, %s}" % (r1rho_prime, dw, kex),
>>>>>>>>>>> -        "{%s, %s, ..., pA, %s, %s}" % (r1, r1rho_prime, dw, kex),
>>>>>>>>>>> +#        "{%s, %s, ..., pA, %s, %s}" % (r1, r1rho_prime, dw, kex),
>>>>>>>>>>>          "{%s, ..., pA, %s, %s}" % (r1rho_prime, dw, kex),
>>>>>>>>>>> -        "{%s, %s, ..., pA, %s, %s}" % (r1, r1rho_prime, dw, kex),
>>>>>>>>>>> +#        "{%s, %s, ..., pA, %s, %s}" % (r1, r1rho_prime, dw, kex),
>>>>>>>>>>>          "{%s, ..., pA, %s, %s, pB, %s, %s}" % (r1rho_prime, dw_AB, 
>>>>>>>>>>> kAB, dw_BC, kBC),
>>>>>>>>>>>          "{%s, ..., pA, %s, %s, pB, %s, %s, %s}" % (r1rho_prime, 
>>>>>>>>>>> dw_AB, kAB, dw_BC, kBC, kAC),
>>>>>>>>>>>          None,
>>>>>>>>>>> @@ -797,8 +797,8 @@
>>>>>>>>>>>          "The base model for determining the %s/%s values and 
>>>>>>>>>>> errors for all other models." % (r2eff, r1rho),
>>>>>>>>>>>          None,
>>>>>>>>>>>          "The model for no chemical exchange relaxation.",
>>>>>>>>>>> -        "The model for no chemical exchange being present, for 
>>>>>>>>>>> off-resonance R1rho-type experiments.  R1rho = R1 * cos(theta)^2 + 
>>>>>>>>>>> r1rho_prime * sin(theta)^2.",
>>>>>>>>>>> -        "The model for no chemical exchange being present, for 
>>>>>>>>>>> off-resonance R1rho-type experiments whereby R1 is fit.  R1rho = R1 
>>>>>>>>>>> * cos(theta)^2 + r1rho_prime * sin(theta)^2.",
>>>>>>>>>>> +#        "The model for no chemical exchange being present, for 
>>>>>>>>>>> off-resonance R1rho-type experiments.  R1rho = R1 * cos(theta)^2 + 
>>>>>>>>>>> r1rho_prime * sin(theta)^2.",
>>>>>>>>>>> +#        "The model for no chemical exchange being present, for 
>>>>>>>>>>> off-resonance R1rho-type experiments whereby R1 is fit.  R1rho = R1 
>>>>>>>>>>> * cos(theta)^2 + r1rho_prime * sin(theta)^2.",
>>>>>>>>>>>          None,
>>>>>>>>>>>          "The original Luz and Meiboom (1963) 2-site fast exchange 
>>>>>>>>>>> equation.",
>>>>>>>>>>>          "The original Luz and Meiboom (1963) 3-site fast exchange 
>>>>>>>>>>> equation.",
>>>>>>>>>>> @@ -817,15 +817,15 @@
>>>>>>>>>>>          "The Meiboom (1961) 2-site fast exchange equation.",
>>>>>>>>>>>          "The Meiboom (1961) 2-site equation for all time scales 
>>>>>>>>>>> with pA >> pB.",
>>>>>>>>>>>          "The Davis, Perlman and London (1994) 2-site fast exchange 
>>>>>>>>>>> equation.",
>>>>>>>>>>> -        "The Davis, Perlman and London (1994) 2-site fast exchange 
>>>>>>>>>>> equation, whereby R1 is fit.",
>>>>>>>>>>> +#        "The Davis, Perlman and London (1994) 2-site fast 
>>>>>>>>>>> exchange equation, whereby R1 is fit.",
>>>>>>>>>>>          "The Trott and Palmer (2002) 2-site equation for all time 
>>>>>>>>>>> scales.",
>>>>>>>>>>> -        "The Trott and Palmer (2002) 2-site equation for all time 
>>>>>>>>>>> scales, whereby R1 is fit.",
>>>>>>>>>>> +#        "The Trott and Palmer (2002) 2-site equation for all time 
>>>>>>>>>>> scales, whereby R1 is fit.",
>>>>>>>>>>>          "The Trott, Abergel and Palmer (2003) off-resonance 2-site 
>>>>>>>>>>> equation for all time scales.",
>>>>>>>>>>> -        "The Trott, Abergel and Palmer (2003) off-resonance 2-site 
>>>>>>>>>>> equation for all time scales, whereby R1 is fit.",
>>>>>>>>>>> +#        "The Trott, Abergel and Palmer (2003) off-resonance 
>>>>>>>>>>> 2-site equation for all time scales, whereby R1 is fit.",
>>>>>>>>>>>          "The Miloushev and Palmer (2005) off-resonance 2-site 
>>>>>>>>>>> equation for all time scales.",
>>>>>>>>>>> -        "The Miloushev and Palmer (2005) off-resonance 2-site 
>>>>>>>>>>> equation for all time scales, whereby R1 is fit.",
>>>>>>>>>>> +#        "The Miloushev and Palmer (2005) off-resonance 2-site 
>>>>>>>>>>> equation for all time scales, whereby R1 is fit.",
>>>>>>>>>>>          "The 2-site numerical solution using 3D magnetisation 
>>>>>>>>>>> vectors.",
>>>>>>>>>>> -        "The 2-site numerical solution using 3D magnetisation 
>>>>>>>>>>> vectors, whereby R1 is fit.",
>>>>>>>>>>> +#        "The 2-site numerical solution using 3D magnetisation 
>>>>>>>>>>> vectors, whereby R1 is fit.",
>>>>>>>>>>>          "The 3-site linearised numerical solution using 3D 
>>>>>>>>>>> magnetisation vectors.",
>>>>>>>>>>>          "The 3-site numerical solution using 3D magnetisation 
>>>>>>>>>>> vectors.",
>>>>>>>>>>>          None,
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> relax (http://www.nmr-relax.com)
>>>>>>>>>>>
>>>>>>>>>>> This is the relax-commits mailing list
>>>>>>>>>>> [email protected]
>>>>>>>>>>>
>>>>>>>>>>> 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
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> relax (http://www.nmr-relax.com)
>>>>>>>>>>
>>>>>>>>>> This is the relax-devel mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>>
>>>>>>>>>> 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-devel

_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-devel mailing list
[email protected]

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-devel

Reply via email to