Yes.

They are equal.

This is fixed.


2014-08-29 14:41 GMT+02:00 Edward d'Auvergne <edw...@nmr-relax.com>:
> Hi,
>
> Is this fixed?  How does this compare now?
>
> Cheers,
>
> Edward
>
>
>
> On 29 August 2014 12:19, Troels Emtekær Linnet <tlin...@nmr-relax.com> wrote:
>> Ugh.
>>
>> This must be a weighting issue.
>>
>> I will fix it.
>>
>> Best
>> Troels
>>
>> 2014-08-29 12:08 GMT+02:00 Edward d'Auvergne <edw...@nmr-relax.com>:
>>> I also don't understand the printout from this system test:
>>>
>>> """
>>> Fitting with minfx to: 52V @N
>>> -----------------------------
>>>
>>> min_algor='Newton', c_code=True, constraints=False, chi2_jacobian?=False
>>> ------------------------------------------------------------------------
>>>
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 431.0,
>>> with 4 time points. r2eff=8.646 r2eff_err=37.6189, i0=202664.2,
>>> i0_err=912343.8776, chi2=3.758.
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 651.2,
>>> with 5 time points. r2eff=10.377 r2eff_err=17.2901, i0=206049.6,
>>> i0_err=145291.5784, chi2=27.291.
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 800.5,
>>> with 5 time points. r2eff=10.506 r2eff_err=25.6159, i0=202586.3,
>>> i0_err=563484.3693, chi2=13.357.
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 984.0,
>>> with 5 time points. r2eff=10.903 r2eff_err=16.0355, i0=203455.0,
>>> i0_err=157857.4220, chi2=33.632.
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=10.684 r2eff_err=16.1640,
>>> i0=218670.4, i0_err=143374.0758, chi2=35.818.
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point
>>> 1648.5, with 5 time points. r2eff=10.501 r2eff_err=32.8259,
>>> i0=206502.5, i0_err=267820.8718, chi2=7.356.
>>> R1rho at 799.8 MHz, for offset=124.247 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=11.118 r2eff_err=22.9196,
>>> i0=216447.2, i0_err=202909.6970, chi2=15.587.
>>> R1rho at 799.8 MHz, for offset=130.416 ppm and dispersion point 800.5,
>>> with 5 time points. r2eff=7.866 r2eff_err=21.4617, i0=211869.7,
>>> i0_err=215319.4005, chi2=14.585.
>>> R1rho at 799.8 MHz, for offset=130.416 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=9.259 r2eff_err=7.7769, i0=217703.2,
>>> i0_err=65512.4065, chi2=79.498.
>>> R1rho at 799.8 MHz, for offset=130.416 ppm and dispersion point
>>> 1648.5, with 5 time points. r2eff=9.565 r2eff_err=145.3091,
>>> i0=211988.9, i0_err=1935377.4765, chi2=0.447.
>>> R1rho at 799.8 MHz, for offset=142.754 ppm and dispersion point 800.5,
>>> with 5 time points. r2eff=3.240 r2eff_err=36.8835, i0=214417.4,
>>> i0_err=479401.1539, chi2=1.681.
>>> R1rho at 799.8 MHz, for offset=142.754 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=5.084 r2eff_err=9.1163, i0=226358.7,
>>> i0_err=96611.2513, chi2=23.170.
>>> R1rho at 799.8 MHz, for offset=179.768 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=2.208 r2eff_err=6.1992, i0=228620.6,
>>> i0_err=163754.5521, chi2=7.794.
>>> R1rho at 799.8 MHz, for offset=241.459 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=1.711 r2eff_err=7.0183, i0=224087.5,
>>> i0_err=124876.2539, chi2=21.230.
>>>
>>>
>>> Fitting with minfx to: 52V @N
>>> -----------------------------
>>>
>>> min_algor='BFGS', c_code=False, constraints=False, chi2_jacobian?=True
>>> ----------------------------------------------------------------------
>>>
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 431.0,
>>> with 4 time points. r2eff=8.646 r2eff_err=0.0524, i0=202664.2,
>>> i0_err=1239.0827, chi2=3.758.
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 651.2,
>>> with 5 time points. r2eff=10.377 r2eff_err=0.0228, i0=206049.6,
>>> i0_err=178.1907, chi2=27.291.
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 800.5,
>>> with 5 time points. r2eff=10.506 r2eff_err=0.0345, i0=202586.3,
>>> i0_err=705.7630, chi2=13.357.
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 984.0,
>>> with 5 time points. r2eff=10.903 r2eff_err=0.0206, i0=203455.0,
>>> i0_err=186.0857, chi2=33.632.
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=10.684 r2eff_err=0.0198,
>>> i0=218670.4, i0_err=165.0420, chi2=35.818.
>>> R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point
>>> 1648.5, with 5 time points. r2eff=10.501 r2eff_err=0.0407,
>>> i0=206502.5, i0_err=321.3685, chi2=7.356.
>>> R1rho at 799.8 MHz, for offset=124.247 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=11.118 r2eff_err=0.0301,
>>> i0=216447.2, i0_err=248.9394, chi2=15.587.
>>> R1rho at 799.8 MHz, for offset=130.416 ppm and dispersion point 800.5,
>>> with 5 time points. r2eff=7.866 r2eff_err=0.0280, i0=211869.7,
>>> i0_err=259.8845, chi2=14.585.
>>> R1rho at 799.8 MHz, for offset=130.416 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=9.259 r2eff_err=0.0108, i0=217703.2,
>>> i0_err=88.1514, chi2=79.498.
>>> R1rho at 799.8 MHz, for offset=130.416 ppm and dispersion point
>>> 1648.5, with 5 time points. r2eff=9.565 r2eff_err=0.1630, i0=211988.9,
>>> i0_err=2054.6615, chi2=0.447.
>>> R1rho at 799.8 MHz, for offset=142.754 ppm and dispersion point 800.5,
>>> with 5 time points. r2eff=3.240 r2eff_err=0.0485, i0=214417.4,
>>> i0_err=611.7573, chi2=1.681.
>>> R1rho at 799.8 MHz, for offset=142.754 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=5.084 r2eff_err=0.0124, i0=226358.7,
>>> i0_err=122.7341, chi2=23.170.
>>> R1rho at 799.8 MHz, for offset=179.768 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=2.208 r2eff_err=0.0086, i0=228620.6,
>>> i0_err=219.4208, chi2=7.794.
>>> R1rho at 799.8 MHz, for offset=241.459 ppm and dispersion point
>>> 1341.1, with 5 time points. r2eff=1.711 r2eff_err=0.0101, i0=224087.5,
>>> i0_err=166.9081, chi2=21.230.
>>> """
>>>
>>>
>>> Obviously the errors in the top one are too big.  But I don't know
>>> what they should be.  The bottom one has "chi2_jacobian?=True", so I
>>> guess that this is activating your func_exp_chi2_grad() function.
>>> However if you look at the code in the C module, you will see that it
>>> is exactly the same as the func_exp_chi2_grad() function.  Therefore
>>> they should return identical errors.  I'm quite confused as to why the
>>> numbers are not identical in the top and bottom printouts!
>>>
>>> Regards,
>>>
>>> Edward
>>>
>>>
>>>
>>> On 29 August 2014 11:59, Troels Emtekær Linnet <tlin...@nmr-relax.com> 
>>> wrote:
>>>> You may want to look here:
>>>>
>>>> relax -s Relax_disp.test_estimate_r2eff_err_methods -d
>>>>
>>>> 2014-08-29 11:57 GMT+02:00 Troels Emtekær Linnet <tlin...@nmr-relax.com>:
>>>>> Hi Edward.
>>>>>
>>>>> There is something totally wrong with the C, Jacobian.
>>>>> Errors are estimated to:
>>>>>
>>>>> 37.619 17.290 25.616 16.036 16.164 32.826 22.920 21.462 7.777 145.309
>>>>> 36.884 9.116 6.199 7.018 sum= 402.235
>>>>>
>>>>> Which is much different to:
>>>>> 0.041 0.040 0.040 0.054 0.041 0.044 0.042 0.037 0.034 0.043 0.013
>>>>> 0.018 0.007 0.010 sum= 0.462
>>>>>
>>>>> You can see how the error estimation develops in:
>>>>> verify_estimate_r2eff_err_compare_mc
>>>>>
>>>>> You will see, that just 50 monte carlo simulations is better than 
>>>>> estimating.
>>>>>
>>>>> Best
>>>>> Troels
>>>>>
>>>>>
>>>>> 2014-08-29 11:51 GMT+02:00 Edward d'Auvergne <edw...@nmr-relax.com>:
>>>>>> Hi,
>>>>>>
>>>>>> I saw the results from that 'hidden' system test and was wondering
>>>>>> what was happening?  The Jacobian of the chi-squared function should
>>>>>> remove the factor of 2, as it has a factor of minus two.  But it also
>>>>>> includes the difference between the measured and back-calculated peak
>>>>>> intensities divided by the variance as well.  So why does this
>>>>>> Jacobian, which is much closer to the 2000 MC simulations, not work?
>>>>>> I cannot understand this as it is totally illogical.  If your error
>>>>>> estimate is closer to the real thing, then you should get closer to
>>>>>> the real optimisation results.
>>>>>>
>>>>>> Do you have a log file somewhere which contains the results from the
>>>>>> 2000 MC simulations?  It might be worth creating a file which compares
>>>>>> this, or even more simulations, 100,000 for example, to the covariance
>>>>>> technique.  Once the error estimate technique is functional and
>>>>>> debugged, then we can work out why the models are optimisating
>>>>>> differently.  These two problems need to be separated and solved
>>>>>> independently, otherwise you can encounter the common yet fatal coding
>>>>>> problem of two opposing bugs partially cancelling out their effects.
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Edward
>>>>>>
>>>>>> On 29 August 2014 11:01, Troels Emtekær Linnet <tlin...@nmr-relax.com> 
>>>>>> wrote:
>>>>>>> Hi Edward.
>>>>>>>
>>>>>>> Would it be possible to have both?
>>>>>>>
>>>>>>> The exponential Jacobian, and the chi2 Jacobian.
>>>>>>>
>>>>>>> My tests last night showed something weird.
>>>>>>>
>>>>>>> Using the chi2 Jacobian, the errors come closer to the ones reported
>>>>>>> my MC calculations.
>>>>>>> The direct jacobian would have double error on R2eff.
>>>>>>>
>>>>>>> But when fitting for R1rho models, using the errors from the direct
>>>>>>> jacobian, was much better in agreement with
>>>>>>> MC error fitting.
>>>>>>>
>>>>>>> The parameters from chi2 Jacobian, was worse.
>>>>>>>
>>>>>>> See verify_r1rho_kjaergaard_missing_r1() in systemtest for comparison.
>>>>>>>
>>>>>>> Look at the 'kex' parameter!
>>>>>>>
>>>>>>> # Compare values.
>>>>>>> if spin_id == ':52@N':
>>>>>>>     if param == 'r1':
>>>>>>>         if model == MODEL_NOREX:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 1.46138805)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 1.46328102)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 1.43820629)
>>>>>>>         elif model == MODEL_DPL94:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 1.44845742)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 1.45019848)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 1.44666512)
>>>>>>>         elif model == MODEL_TP02:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 1.54354392)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 1.54352369)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 1.55964020)
>>>>>>>         elif model == MODEL_TAP03:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 1.54356410)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 1.54354367)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 1.55967157)
>>>>>>>         elif model == MODEL_MP05:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 1.54356416)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 1.54354372)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 1.55967163)
>>>>>>>         elif model == MODEL_NS_R1RHO_2SITE:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 1.41359221, 5)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 1.41321968, 5)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 1.36303129, 5)
>>>>>>>
>>>>>>>     elif param == 'r2':
>>>>>>>         if model == MODEL_NOREX:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 11.48392439)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 11.48040934)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 11.47224488)
>>>>>>>         elif model == MODEL_DPL94:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 10.15688372, 6)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 10.16304887, 6)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 9.20037797, 6)
>>>>>>>         elif model == MODEL_TP02:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 9.72654896, 6)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 9.72772726, 6)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 9.53948340, 6)
>>>>>>>         elif model == MODEL_TAP03:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 9.72641887, 6)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 9.72759374, 6)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 9.53926913, 6)
>>>>>>>         elif model == MODEL_MP05:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 9.72641723, 6)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 9.72759220, 6)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 9.53926778, 6)
>>>>>>>         elif model == MODEL_NS_R1RHO_2SITE:
>>>>>>>             if r2eff_estimate == 'direct':
>>>>>>>                 self.assertAlmostEqual(value, 9.34531535, 5)
>>>>>>>             elif r2eff_estimate == 'MC2000':
>>>>>>>                 self.assertAlmostEqual(value, 9.34602793, 5)
>>>>>>>             elif r2eff_estimate == 'chi2':
>>>>>>>                 self.assertAlmostEqual(value, 9.17631409, 5)
>>>>>>>
>>>>>>> # For all other parameters.
>>>>>>> else:
>>>>>>> # Get the value.
>>>>>>> value = getattr(cur_spin, param)
>>>>>>>
>>>>>>> # Print value.
>>>>>>> print("%-10s %-6s %-6s %3.8f" % ("Parameter:", param, "Value:", value))
>>>>>>>
>>>>>>> # Compare values.
>>>>>>> if spin_id == ':52@N':
>>>>>>> if param == 'phi_ex':
>>>>>>>     if model == MODEL_DPL94:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 0.07599563)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 0.07561937)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 0.12946061)
>>>>>>>
>>>>>>> elif param == 'pA':
>>>>>>>     if model == MODEL_TP02:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 0.88827040)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 0.88807487)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 0.87746233)
>>>>>>>     elif model == MODEL_TAP03:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 0.88828922)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 0.88809318)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 0.87747558)
>>>>>>>     elif model == MODEL_MP05:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 0.88828924)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 0.88809321)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 0.87747562)
>>>>>>>     elif model == MODEL_NS_R1RHO_2SITE:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 0.94504369, 6)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 0.94496541, 6)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 0.92084707, 6)
>>>>>>>
>>>>>>> elif param == 'dw':
>>>>>>>     if model == MODEL_TP02:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 1.08875840, 6)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 1.08765638, 6)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 1.09753230, 6)
>>>>>>>     elif model == MODEL_TAP03:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 1.08837238, 6)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 1.08726698, 6)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 1.09708821, 6)
>>>>>>>     elif model == MODEL_MP05:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 1.08837241, 6)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 1.08726706, 6)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 1.09708832, 6)
>>>>>>>     elif model == MODEL_NS_R1RHO_2SITE:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 1.56001812, 5)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 1.55833321, 5)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 1.36406712, 5)
>>>>>>>
>>>>>>> elif param == 'kex':
>>>>>>>     if model == MODEL_DPL94:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 4460.43711569, 2)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 4419.03917195, 2)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 6790.22736344, 2)
>>>>>>>     elif model == MODEL_TP02:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 4921.28602757, 3)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 4904.70144883, 3)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 5146.20306591, 3)
>>>>>>>     elif model == MODEL_TAP03:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 4926.42963491, 3)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 4909.86877150, 3)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 5152.51105814, 3)
>>>>>>>     elif model == MODEL_MP05:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 4926.44236315, 3)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 4909.88110195, 3)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 5152.52097111, 3)
>>>>>>>     elif model == MODEL_NS_R1RHO_2SITE:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 5628.66061488, 2)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 5610.20221435, 2)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 5643.34067090, 2)
>>>>>>>
>>>>>>> elif param == 'chi2':
>>>>>>>     if model == MODEL_NOREX:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 848.42016907, 5)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 3363.95829122, 5)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 5976.49946726, 5)
>>>>>>>     elif model == MODEL_DPL94:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 179.47041241)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 710.24767560)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 612.72616697, 5)
>>>>>>>     elif model == MODEL_TP02:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 29.33882530, 6)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 114.47142772, 6)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 250.50838162, 5)
>>>>>>>     elif model == MODEL_TAP03:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 29.29050673, 6)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 114.27987534)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 250.04050719, 5)
>>>>>>>     elif model == MODEL_MP05:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 29.29054301, 6)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 114.28002272)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 250.04077478, 5)
>>>>>>>     elif model == MODEL_NS_R1RHO_2SITE:
>>>>>>>         if r2eff_estimate == 'direct':
>>>>>>>             self.assertAlmostEqual(value, 34.44010543, 6)
>>>>>>>         elif r2eff_estimate == 'MC2000':
>>>>>>>             self.assertAlmostEqual(value, 134.14368365)
>>>>>>>         elif r2eff_estimate == 'chi2':
>>>>>>>             self.assertAlmostEqual(value, 278.55121388, 5)
>>>>>>>
>>>>>>> 2014-08-29 9:49 GMT+02:00 Edward d'Auvergne <edw...@nmr-relax.com>:
>>>>>>>> Hi Troels,
>>>>>>>>
>>>>>>>> I've now converted the target_functions.relax_fit.jacobian() function
>>>>>>>> to be the Jacobian of the chi-squared function rather than the
>>>>>>>> Jacobian of the exponential function.  This should match your
>>>>>>>> specific_analyses.relax_disp.estimate_r2eff.func_exp_chi2_grad()
>>>>>>>> function.  I mixed up the two because the Levenberg-Marquardt
>>>>>>>> algorithm in minfx requires the Jacobian of the exponential, and it's
>>>>>>>> been 8 years since I last derived and implemented a Jacobian.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Edward
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 28 August 2014 21:43,  <tlin...@nmr-relax.com> wrote:
>>>>>>>>> Author: tlinnet
>>>>>>>>> Date: Thu Aug 28 21:43:13 2014
>>>>>>>>> New Revision: 25411
>>>>>>>>>
>>>>>>>>> URL: http://svn.gna.org/viewcvs/relax?rev=25411&view=rev
>>>>>>>>> Log:
>>>>>>>>> Reverted the logic, that the chi2 Jacobian should be used.
>>>>>>>>>
>>>>>>>>> Instead, the direct Jacobian exponential is used instead.
>>>>>>>>>
>>>>>>>>> When fitting with the estimated errors from the Direct Jacobian, the 
>>>>>>>>> results are MUCH better, and comparable
>>>>>>>>> to 2000 Monte-Carlo simulations.
>>>>>>>>>
>>>>>>>>> task #7822(https://gna.org/task/index.php?7822): Implement user 
>>>>>>>>> function to estimate R2eff and associated errors for exponential 
>>>>>>>>> curve fitting.
>>>>>>>>>
>>>>>>>>> Modified:
>>>>>>>>>     trunk/specific_analyses/relax_disp/estimate_r2eff.py
>>>>>>>>>     trunk/test_suite/system_tests/relax_disp.py
>>>>>>>>>     trunk/user_functions/relax_disp.py
>>>>>>>>>
>>>>>>>>> Modified: trunk/specific_analyses/relax_disp/estimate_r2eff.py
>>>>>>>>> URL: 
>>>>>>>>> http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/relax_disp/estimate_r2eff.py?rev=25411&r1=25410&r2=25411&view=diff
>>>>>>>>> ==============================================================================
>>>>>>>>> --- trunk/specific_analyses/relax_disp/estimate_r2eff.py        
>>>>>>>>> (original)
>>>>>>>>> +++ trunk/specific_analyses/relax_disp/estimate_r2eff.py        Thu 
>>>>>>>>> Aug 28 21:43:13 2014
>>>>>>>>> @@ -90,7 +90,7 @@
>>>>>>>>>      return jacobian_matrix_exp_chi2
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> -def estimate_r2eff_err(chi2_jacobian=True, spin_id=None, epsrel=0.0, 
>>>>>>>>> verbosity=1):
>>>>>>>>> +def estimate_r2eff_err(chi2_jacobian=False, spin_id=None, 
>>>>>>>>> epsrel=0.0, verbosity=1):
>>>>>>>>>      """This will estimate the R2eff and i0 errors from the 
>>>>>>>>> covariance matrix Qxx.  Qxx is calculated from the Jacobian matrix 
>>>>>>>>> and the optimised parameters.
>>>>>>>>>
>>>>>>>>>      @keyword chi2_jacobian: If the Jacobian derived from the chi2 
>>>>>>>>> function, should be used instead of the Jacobian from the exponential 
>>>>>>>>> function.
>>>>>>>>>
>>>>>>>>> Modified: trunk/test_suite/system_tests/relax_disp.py
>>>>>>>>> URL: 
>>>>>>>>> http://svn.gna.org/viewcvs/relax/trunk/test_suite/system_tests/relax_disp.py?rev=25411&r1=25410&r2=25411&view=diff
>>>>>>>>> ==============================================================================
>>>>>>>>> --- trunk/test_suite/system_tests/relax_disp.py (original)
>>>>>>>>> +++ trunk/test_suite/system_tests/relax_disp.py Thu Aug 28 21:43:13 
>>>>>>>>> 2014
>>>>>>>>> @@ -2744,13 +2744,13 @@
>>>>>>>>>          self.interpreter.minimise.execute(min_algor='Newton', 
>>>>>>>>> constraints=False, verbosity=1)
>>>>>>>>>
>>>>>>>>>          # Estimate R2eff errors.
>>>>>>>>> -        
>>>>>>>>> self.interpreter.relax_disp.r2eff_err_estimate(chi2_jacobian=False)
>>>>>>>>> +        
>>>>>>>>> self.interpreter.relax_disp.r2eff_err_estimate(chi2_jacobian=True)
>>>>>>>>>
>>>>>>>>>          # Run the analysis.
>>>>>>>>>          relax_disp.Relax_disp(pipe_name=ds.pipe_name, 
>>>>>>>>> pipe_bundle=ds.pipe_bundle, results_dir=result_dir_name, 
>>>>>>>>> models=MODELS, grid_inc=GRID_INC, mc_sim_num=MC_NUM, modsel=MODSEL)
>>>>>>>>>
>>>>>>>>>          # Verify the data.
>>>>>>>>> -        self.verify_r1rho_kjaergaard_missing_r1(models=MODELS, 
>>>>>>>>> result_dir_name=result_dir_name, r2eff_estimate='direct')
>>>>>>>>> +        self.verify_r1rho_kjaergaard_missing_r1(models=MODELS, 
>>>>>>>>> result_dir_name=result_dir_name, r2eff_estimate='chi2')
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>      def test_estimate_r2eff_err_auto(self):
>>>>>>>>> @@ -2849,7 +2849,7 @@
>>>>>>>>>          relax_disp.Relax_disp(pipe_name=pipe_name, 
>>>>>>>>> pipe_bundle=pipe_bundle, results_dir=result_dir_name, models=MODELS, 
>>>>>>>>> grid_inc=GRID_INC, mc_sim_num=MC_NUM, exp_mc_sim_num=EXP_MC_NUM, 
>>>>>>>>> modsel=MODSEL, r1_fit=r1_fit)
>>>>>>>>>
>>>>>>>>>          # Verify the data.
>>>>>>>>> -        self.verify_r1rho_kjaergaard_missing_r1(models=MODELS, 
>>>>>>>>> result_dir_name=result_dir_name, r2eff_estimate='chi2')
>>>>>>>>> +        self.verify_r1rho_kjaergaard_missing_r1(models=MODELS, 
>>>>>>>>> result_dir_name=result_dir_name, r2eff_estimate='direct')
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>      def test_estimate_r2eff_err_methods(self):
>>>>>>>>>
>>>>>>>>> Modified: trunk/user_functions/relax_disp.py
>>>>>>>>> URL: 
>>>>>>>>> http://svn.gna.org/viewcvs/relax/trunk/user_functions/relax_disp.py?rev=25411&r1=25410&r2=25411&view=diff
>>>>>>>>> ==============================================================================
>>>>>>>>> --- trunk/user_functions/relax_disp.py  (original)
>>>>>>>>> +++ trunk/user_functions/relax_disp.py  Thu Aug 28 21:43:13 2014
>>>>>>>>> @@ -636,7 +636,7 @@
>>>>>>>>>  uf.title_short = "Estimate R2eff errors."
>>>>>>>>>  uf.add_keyarg(
>>>>>>>>>      name = "chi2_jacobian",
>>>>>>>>> -    default = True,
>>>>>>>>> +    default = False,
>>>>>>>>>      py_type = "bool",
>>>>>>>>>      desc_short = "use of chi2 Jacobian",
>>>>>>>>>      desc = "If the Jacobian derived from the chi2 function, should 
>>>>>>>>> be used instead of the Jacobian from the exponential function."
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> relax (http://www.nmr-relax.com)
>>>>>>>>>
>>>>>>>>> This is the relax-commits mailing list
>>>>>>>>> relax-comm...@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-commits
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> relax (http://www.nmr-relax.com)
>>>>>>>>
>>>>>>>> This is the relax-devel mailing list
>>>>>>>> relax-devel@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-devel

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

This is the relax-devel mailing list
relax-devel@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-devel

Reply via email to