[SciPy-user] optimize.leastsq ier flag

Angus McMorland amcmorl at gmail.com
Tue Jul 31 18:00:50 EDT 2007


Hi Stephen,

On 01/08/07, Stephen Yang <scyang at nist.gov> wrote:
> Hello everyone,
>
> I'm getting an ier flag of '4' when I run this code to fit some data to
> a gaussian:
>
> p0 = [1, 1, 1]
>
> gauss = lambda p, x: p[0]*numpy.exp(-((x-p[1])**2/(2*p[2]**2)))
> res = lambda p, x, y: gauss(p, x) - y
> optimized, success = optimize.minpack.leastsq(res, p0, args = (omega,
> counts))
> print 'success flag:', success
>
> In the minpack documentation, there is supposedly a 'mesg' return value,
> which states:
>
>     mesg -- a string message giving information about the cause of failure.
>
> So.. first, does anyone know what a flag of '4' means?

>From the MINPACK ldif documentation (http://www.netlib.org/minpack/lmdif.f):

c info = 4  the cosine of the angle between fvec and any
c                   column of the jacobian is at most gtol in
c                   absolute value.

I'm afraid I can't offer any advice as to what that means exactly...
will leave that to an expert.

> Secondly, how would you go about getting this flag?

>From the docstring:

Inputs:
    <snip>
    full_output -- non-zero to return all optional outputs.
    <snip>
Outputs: (x, {cov_x, infodict, mesg}, ier)

So, you need to call as:

optimized, blah,moreblah, mesg, success =
optimize.minpack.leastsq(res, p0, args = (omega, counts), full_output
= 1)

>I tried
>
> optimized, mesg, success = optimize.minpack.leastsq(res, p0, args =
> (omega, counts))
>
> with no luck..
> ValueError: need more than 2 values to unpack
>
> Any help would be greatly appreciated.
>

I hope that helps,

Angus.
-- 
AJC McMorland, PhD Student
Physiology, University of Auckland



More information about the SciPy-User mailing list