mailRe: r25330 - /trunk/specific_analyses/relax_disp/estimate_r2eff.py


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

Header


Content

Posted by Troels Emtekær Linnet on August 28, 2014 - 13:58:
Hi Edward.

I see that I did the documentation wrong.

The implementation is as exactly as you describe.

Best Troels
On 28 Aug 2014 13:46, "Edward d'Auvergne" <edward@xxxxxxxxxxxxx> wrote:

Hi,

What happens if you construct the covariance matrix as:

    covar = (J^T.X.J)^-1 ,

Where X is a square matrix of dimension n, the number of data points
(here time points).  All elements of X are zero except for the
diagonal which is equal to the intensity errors squared.  I.e. this is
the peak intensity covariance matrix, where the covariances are zero
as the peak intensity errors are not dependent on each other and
diagonal is simply the peak errors squared or the variances.  This is
from
https://en.wikipedia.org/wiki/Propagation_of_uncertainty#Non-linear_combinations
:

    cov(f) = J.cov(x).J^T.

The J matrices might be transposed in Wikipedia's definition compared
to ours.  Maybe this would solve the problem of the errors being too
high?

Regards,

Edward



On 27 August 2014 11:41, Troels Emtekær Linnet <tlinnet@xxxxxxxxxxxxx>
wrote:
Hi Edward.

There is no scaling involved when calculating.

What I meant with scaling is correction to the co-variance matrix.
Related to errors, or similar.

But I haven't figured it out yet.


Best
Troels

2014-08-27 11:33 GMT+02:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:
Does it give the same small result?  Try turning off parameter scaling.

Regards,

Edward

On 27 August 2014 11:29,  <tlinnet@xxxxxxxxxxxxx> wrote:
Author: tlinnet
Date: Wed Aug 27 11:29:24 2014
New Revision: 25330

URL: http://svn.gna.org/viewcvs/relax?rev=25330&view=rev
Log:
Tried to implement the Jacobian from C-code.

This though also report errors which are to small.

Maybe some scaling is wrong.

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

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=25330&r1=25329&r2=25330&view=diff

==============================================================================
--- trunk/specific_analyses/relax_disp/estimate_r2eff.py
(original)
+++ trunk/specific_analyses/relax_disp/estimate_r2eff.py        Wed
Aug 27 11:29:24 2014
@@ -42,7 +42,7 @@
 from specific_analyses.relax_disp.variables import MODEL_R2EFF
 from specific_analyses.relax_fit.optimisation import func_wrapper,
dfunc_wrapper, d2func_wrapper
 from target_functions.chi2 import chi2_rankN
-from target_functions.relax_fit import setup
+from target_functions.relax_fit import jacobian, setup


 # Scipy installed.
@@ -734,7 +734,7 @@
     E.set_settings_minfx(min_algor=min_algor)

     # Do C code
-    do_C = False
+    do_C = True

     if do_C:
         # Initialise the function to minimise.
@@ -766,19 +766,27 @@
     param_vector, chi2, iter_count, f_count, g_count, h_count,
warning = results_minfx

     # Get the Jacobian.
-    # First make a call to the Jacobian function, which store it in
the class.
-    E.func_exp_grad(params=param_vector)
-    jacobian_matrix = deepcopy(E.jacobian_matrix)
-
+    if do_C:
+        # First make a call to the Jacobian function, which store it
in the class.
+        jacobian_matrix = transpose(asarray( jacobian(param_vector) )
)
+
+        # Compare with python code.
+        #E.func_exp_grad(params=param_vector)
+        #jacobian_matrix2 = deepcopy(E.jacobian_matrix)
+        #print jacobian_matrix
+        #print " "
+        #print jacobian_matrix2
+    else:
+        jacobian_matrix = deepcopy(E.jacobian_matrix)
+
+    # Get the co-variance
+    pcov = E.multifit_covar(J=jacobian_matrix)
+
+    # To compute one standard deviation errors on the parameters,
take the square root of the diagonal covariance.
+    param_vector_error = sqrt(diag(pcov))
     # Set error to inf.
     #param_vector_error = [inf, inf]

-    # Get the co-variance
-    pcov = E.multifit_covar(J=jacobian_matrix)
-
-    # To compute one standard deviation errors on the parameters,
take the square root of the diagonal covariance.
-    param_vector_error = sqrt(diag(pcov))
-
     # Pack to list.
     results = [param_vector, param_vector_error, chi2, iter_count,
f_count, g_count, h_count, warning]



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

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

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

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



Related Messages


Powered by MHonArc, Updated Thu Aug 28 14:20:25 2014