mailRe: r8428 - /branches/relax_disp/specific_fns/relax_disp.py


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

Header


Content

Posted by Edward d'Auvergne on January 13, 2009 - 15:50:
Hi,

Half the code is in place for the exponential curve-fitting gradients,
as these are insanely basic to derive and code, but I just never got
around to it because relax returns the same results as Art Palmer's
CurveFit program
(http://cpmcnet.columbia.edu/dept/gsas/biochem/labs/palmer/software/curvefit.html)
using the unconstrained simplex minimisation.  This optimisation
problem is very basic.  But I might add it later if more complicated
exponential curve-fitting is found (in relaxation or another type of
analysis).  There's no harm in having the functional code there, even
though it is not currently used.  As for relaxation dispersion, this
might be more complicated but the gradients can be added later if
needed.

Regards,

Edward


On Tue, Jan 13, 2009 at 3:37 PM, Sébastien Morin
<sebastien.morin.1@xxxxxxxxx> wrote:
Hi Ed,

Fine, thanks for the tips.

I have a question, though. You say gradients are not used for relaxation
exponential curve fitting. However, the code for the function
linear_constraints() in present in 'specific_fns/relax_fit.py'... Is
that normal ? Can this be used, i.e. are the partial derivatives of the
chi-squared equation for relaxation (R1, R2) calculated ?

If not used, should we remove the code ?

Thanks.


Séb  :)




Edward d'Auvergne wrote:
Hi,

As an aside, these linear constraints can only be used if the
relaxation dispersion gradients are calculated.  These gradients are
not present for the relaxation exponential curve-fitting as it is not
necessary.  For model-free analysis, both the gradients and Hessians
have been calculated and are coded into python functions.  At the
start, the relaxation dispersion may not need parameter constraints
but the gradient may be very useful for better optimisation.  With no
gradients, only the simplex optimisation algorithm can be used.  So in
the future if you'd like the gradients, you need to calculate the
first partial derivatives of the chi-squared equation/relaxation
dispersion equation for each parameter and code these as separate
functions.

Regards,

Edward


On Tue, Jan 13, 2009 at 4:13 AM,  <sebastien.morin.1@xxxxxxxxx> wrote:

Author: semor
Date: Tue Jan 13 04:13:54 2009
New Revision: 8428

URL: http://svn.gna.org/viewcvs/relax?rev=8428&view=rev
Log:
Converted the function linear_constraints() for relaxation dispersion 
needs.


Modified:
   branches/relax_disp/specific_fns/relax_disp.py

Modified: branches/relax_disp/specific_fns/relax_disp.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/specific_fns/relax_disp.py?rev=8428&r1=8427&r2=8428&view=diff
==============================================================================
--- branches/relax_disp/specific_fns/relax_disp.py (original)
+++ branches/relax_disp/specific_fns/relax_disp.py Tue Jan 13 04:13:54 
2009
@@ -725,27 +725,34 @@
        Standard notation
        =================

-        The relaxation rate constraints are::
-
-            Rx >= 0
-
-        The intensity constraints are::
-
-            I0 >= 0
-            Iinf >= 0
+        The different constraints are::
+
+            R2 >= 0
+            Rex >= 0
+            kex >= 0
+
+            R2A >= 0
+            kA >= 0
+            dw >= 0


        Matrix notation
        ===============

-        In the notation A.x >= b, where A is an matrix of coefficients, 
x is an array of parameter
+        In the notation A.x >= b, where A is a matrix of coefficients, x 
is an array of parameter
        values, and b is a vector of scalars, these inequality 
constraints are::

-            | 1  0  0 |     |  Rx  |      |    0    |
+            | 1  0  0 |     |  R2  |      |    0    |
            |         |     |      |      |         |
-            | 1  0  0 |  .  |  I0  |  >=  |    0    |
+            | 1  0  0 |  .  |  Rex |      |    0    |
            |         |     |      |      |         |
-            | 1  0  0 |     | Iinf |      |    0    |
+            | 1  0  0 |     |  kex |      |    0    |
+            |         |     |      |  >=  |         |
+            | 1  0  0 |     |  R2A |      |    0    |
+            |         |     |      |      |         |
+            | 1  0  0 |     |  kA  |      |    0    |
+            |         |     |      |      |         |
+            | 1  0  0 |     |  dw  |      |    0    |


        @keyword spin:              The spin data container.
@@ -764,17 +771,25 @@

        # Loop over the parameters.
        for k in xrange(len(spin.params)):
-            # Relaxation rate.
-            if spin.params[k] == 'Rx':
-                # Rx >= 0.
+            # Relaxation rates and Rex.
+            if search('^R', spin.params[k]):
+                # R2, Rex, R2A >= 0.
                A.append(zero_array * 0.0)
                A[j][i] = 1.0
                b.append(0.0)
                j = j + 1

-            # Intensity parameter.
-            elif search('^I', spin.params[k]):
-                # I0, Iinf >= 0.
+            # Exchange rates.
+            elif search('^k', spin.params[k]):
+                # kex, kA >= 0.
+                A.append(zero_array * 0.0)
+                A[j][i] = 1.0
+                b.append(0.0)
+                j = j + 1
+
+            # Chemical exchange difference.
+            elif spin.params[k] == 'dw':
+                # dw >= 0.
                A.append(zero_array * 0.0)
                A[j][i] = 1.0
                b.append(0.0)


_______________________________________________
relax (http://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://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




_______________________________________________
relax (http://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 Tue Jan 13 16:00:24 2009