Hi Ed.

Hm, I have thought about this before.

And thought I had written it up as a task.

I will do it now.
My supervisor has also asked for this feature.

best
Troels



2014-05-20 18:56 GMT+02:00 Edward d'Auvergne <[email protected]>:
> Hi Troels,
>
> In your testing, for sanity you may also want to look at calculating
> the alpha value from:
>
>     - Millet, O. et al. (2000) The static magnetic field dependence of
> chemical exchange linebroadening defines the NMR chemical shift time
> scale. J. Am. Chem. Soc., 122, 2867–2877.
> (http://dx.doi.org/10.1021/ja993511y).
>
> Specifically equation (20).  This calculation could behind a user
> function called relax_disp.calc_alpha.  You could calculate it
> directly from the optimised parameters or from the experimental R2eff
> values.  According to the paper:
>
>     0 <= alpha  < 1     slow exchange,
>     alpha = 1   intermediate exchange,
>     1 < alpha <= 2    fast exchange.
>
> This will help you determine if your parameters are in the correct
> exchange regime for the model you are studying.  This is implemented
> as part of the ShereKhan web interface, click on the [i] button next
> to "Residue Selection" for details.
>
> For your testing of the CR72 model, you will require an alpha value
> between 0 and 1.  Fast exchange will cause the dw and pA values to
> convolute and merge, so you cannot distinguish them.  Hence
> optimisation will look like it has failed.  You can have different dw
> and pA value combinations to produce the same phi_ex value, and it
> will be impossible to find the original values again.  That is why
> there are fast exchange models with the phi_ex parameter.
>
> Regards,
>
> Edward
>
>
>
> On 20 May 2014 17:46, Edward d'Auvergne <[email protected]> wrote:
>> Hi,
>>
>> In this case, we need to perform a careful comparison between relax
>> and other software - by generating input data and see how both
>> programs respond.  The key is to identify if the problem is in the
>> implementation (i.e. the relax code) or in the theory (the equations).
>>  We can fix the first, not the second (the solution to the second is
>> to use a different model).  The problem also needs to be carefully
>> stated:  Using the parameter set {x: 1.0, y: 2.0} and model Z, and
>> setting the R2eff errors to 0.1, R2eff values were back calculated;
>> then this perfect R2eff data was optimised against model Q.
>>
>> To standardise such a problem it might be worth creating a
>> relax_disp.r2eff_back_calc user function.  The contents of this is
>> already in your scripts.  This would simplify the scripts and help
>> with debugging.
>>
>> The chi2 surface from the CR72_fail_one_field.py script also shows no
>> clear minimum which means, assuming the CR72 code in relax is correct
>> (and it matches ShereKhan perfectly), that the problem is not well
>> conditioned.  Why this is the case needs to be investigated.  Is it
>> relax's implementation?  Or is it the CR72 model itself?  You can set
>> up the exact same grid search relax uses in ShereKhan, so that is a
>> good reference test.  It is well known that the CR72 model does not
>> hold in all cases, so it is likely that you have hit such a case here.
>>  This is the reason why there are now so many alternative dispersion
>> models.
>>
>> Regards,
>>
>> Edward
>>
>>
>>
>>
>>
>> On 20 May 2014 16:49, Troels Emtekær Linnet <[email protected]> wrote:
>>> Hi Ed.
>>>
>>> This is a very difficult case, but I am sure that relax has failed in
>>> the error catching, making
>>> the simplex algorithm to fail, when computing certain math domain errors.
>>>
>>> The data I am referring to is:
>>> http://thread.gmane.org/gmane.science.nmr.relax.devel/5302
>>>
>>> I have proven in:
>>> https://gna.org/bugs/?22024
>>> bug #22024: Minimisation space for CR72 is catastrophic. The chi2
>>> surface over dw and pA is bounded.
>>>
>>> That relax fail to find values, even when dw is 1 ppm.
>>>
>>> I will fix the speed-up, and rerun the data to see if it has been fixed.
>>>
>>> Best
>>> Troels
>>>
>>>
>>> 2014-05-20 15:43 GMT+02:00 Edward d'Auvergne <[email protected]>:
>>>> Hi Troels,
>>>>
>>>>
>>>>> Thanks for fixing the bug!
>>>>
>>>> No problems.
>>>>
>>>>
>>>>> But I think the worst most pity thing, is that I have waster 1/4-1/2
>>>>> year of my PhD to fix this bug:
>>>>>
>>>>> bug #22032: Minimisation explodes when using Grid_INC=None
>>>>> https://gna.org/bugs/index.php?22032
>>>>
>>>> I'm still trying to work out what this bug is about.  But if you start
>>>> optimising with the dw = 0.0, this is not a bug!  You just cannot ever
>>>> start optimising from there.  Not many optimisation algorithms can
>>>> survive that and find the real solution (global optimisation
>>>> algorithms such as simulated annealing and genetic algorithms
>>>> excluded).  If you simplify the CR72 equations with dw = 0.0, you will
>>>> see that pA, pB, and kex fall out of the equation and you actually end
>>>> up with R2eff = R20.  This is expected as when the chemical shift
>>>> difference is zero, there is no chemical exchange.  Therefore when dw
>>>> = 0.0, then the pA and kex parameters are undefined.   Undefined
>>>> parameters kill many optimisation algorithms - this is why you'll see
>>>> order parameters of 1 often in a model-free analysis (prior to people
>>>> using relax), as in this case the tau_e correlation time parameter is
>>>> undefined.
>>>>
>>>> This bug is however only 9 days old.  Do you mean one of the other bugs?
>>>>
>>>>
>>>>> My last three weeks analysis have shown that the error catching at
>>>>> boundary values had a huge impact on the minimisation search. It
>>>>> simply went to scrap.
>>>>
>>>> Before or after?  Do you have an example that can be converted into a
>>>> system test?
>>>>
>>>>
>>>>> This was also the case when running grid search. Touching the math
>>>>> domain errors, caught simplex to stop.
>>>>> https://gna.org/bugs/download.php?file_id=20704
>>>>> https://gna.org/bugs/download.php?file_id=20698
>>>>
>>>> These files are not attached to bug #22032
>>>> (https://gna.org/bugs/index.php?22032).  This is rather bug #22024
>>>> (https://gna.org/bugs/?22024).  However, it is clear from those
>>>> chi-squared surfaces that there is nothing to optimise to.  There is
>>>> no clear minimum within the space.  We should discuss things under
>>>> each separate bug report.
>>>>
>>>> As I mentioned before, this one is not really a bug.  This is simply
>>>> what happens when you have very accurate optimisation combined with a
>>>> poorly conditioned problem - i.e. the parameter values are close to
>>>> insignificance.  This is an edge case, and no one in the field will
>>>> care for such a case as its statistical significance is orders of
>>>> magnitude less than zero ;)  I wouldn't bother wasting time on that
>>>> one, as the only real tool you can use from the field of mathematical
>>>> optimisation is a re-parametrisation of the problem.  I used this in
>>>> the model-free analysis to go from the {S2f, S2s, ts} parameters to
>>>> {S2, S2s, ts} for the 2 time scale models.  This had a huge effect on
>>>> optimisation and such problems.  But in the relaxation dispersion
>>>> analysis, it will be rather difficult to come up with a new parameter
>>>> set.  And rather pointless just to solve such a difficult edge case.
>>>>
>>>>
>>>>> I have tried so hard to understand why the behaviour of relax is
>>>>> different from other programs.
>>>>
>>>> Do you have data showing that other software with the same input data
>>>> gives different results?  From all my testing, I don't see this:
>>>>
>>>> http://svn.gna.org/viewcvs/*checkout*/relax/trunk/test_suite/shared_data/dispersion/software_comparison?revision=HEAD
>>>>
>>>> Well, apart from the expected differences due to bugs, strange
>>>> assumptions of certain old software, and the differences Andy
>>>> mentioned (this never reached the mailing list as he had an
>>>> attachment!).
>>>>
>>>>
>>>>> I have tested, and inspected code, and tried other programs. relax was
>>>>> just stubborn.
>>>>
>>>> Could you present such comparisons on the mailing list?  Which
>>>> software found the solution that relax could not?  And how was relax
>>>> set up?
>>>>
>>>>
>>>>> Realising this issue has been a relieve!
>>>>>
>>>>> I am happy that the processor.run_queue() bug only is related to the 
>>>>> test-suite.
>>>>> It hopefully did not affect production???
>>>>
>>>> It is only visible in the test suite, and only if certain tests fail.
>>>> It is only annoying for relax developers.
>>>>
>>>>
>>>>> I can have night-mares about these bugs, as that can mean that
>>>>> scientists are wasting their time.
>>>>> Including mine.
>>>>
>>>> This bug is not an issue for relax users.  They cannot be affected by
>>>> it.  Other bugs can however, and that is why relax has a test suite.
>>>> It is also the reason for the existence of relax - because I found
>>>> insanely fatal bugs in other NMR dynamics software that had been used
>>>> for 20 years!
>>>>
>>>> Anyway, to save your time with the dispersion work, you should follow
>>>> a few simple rules.  If the dispersion curve is insignificant, i.e.
>>>> the difference of the maximum and minimum R2eff value is less than a
>>>> certain value, say 0.5 rad.s^-1, then don't bother with it!  Most of
>>>> the dispersion bug reports where you report optimisation problems fall
>>>> into this category.  I strongly doubt that any other dispersion
>>>> software will handle these cases - they will give different results
>>>> but also not find the real solution (this is likely to be the source
>>>> of differences you see to published results).  And never start
>>>> optimisation for positions where other parameters are undefined - i.e.
>>>> dw = 0.0.  That covers the other half of the bug reports.  You are
>>>> otherwise battling nearly impossible battles.
>>>>
>>>> Regards,
>>>>
>>>> Edward

_______________________________________________
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