Hi Edward. We only need the R2eff file.
I think I added some few graphs in "final" folder to document the new graphs in the manual. Best Troels 2014-08-21 10:16 GMT+02:00 Edward d'Auvergne <[email protected]>: > 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

