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