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 - 09:30:
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




Related Messages


Powered by MHonArc, Updated Tue Jan 13 15:40:50 2009