[SciPy-user] mpfit

Evelien Vanhollebeke evelien at ster.kuleuven.ac.be
Thu Feb 17 08:29:56 CST 2005


And how about if you add your own derivatives? In the "help" it read 
that when you want to use autoderiviate=0 your function should return 
something like [status,y-func,pderiv], but then, the mpfit function 
can't handle that, it gives me the following error: ValueError: unpack 
list of wrong size. The function returns 3 things, the status, the 
residuals and the derivatives, but mpfit just wants [status,f], so...
If it is ok with you, I would like to see your "litte wrapper" around 
mpfit, maybe it can show me what I am doing wrong...
I am also trying the leastsq, but did not suceed to model my data (yet).

Thanks!
Evelien

Steve Schmerler wrote:

>
>
> Evelien Vanhollebeke wrote:
>
>> Hi scipy-users,
>>
>> I was wondering if anyone was using the mpfit module 
>> (http://cars.uchicago.edu/software) <http://cars.uchicago.edu/software>.
>> I would really like (need) to use it, but can't get to seem the thing 
>> perform as it should be. I am aware of the two messages posted in 
>> this mailing list,
>
>
> that was me :)
>
>> and changed the two mentioned lines. I am using python 2.3.3.  Maybe 
>> if someone could share his/her user defined function or some other 
>> hints?  At first, the program just crashed on the parinfo, which is 
>> not really necessary. Now I can get it run (if I don't use the 
>> autoderivate=0, then it gets stuck on the "fjac" variable), but as 
>> already mentioned, it doesn't iterate.
>>
>
> Unfortunately I don't have my mpfit stuff at hand right now but what I 
> remember doing was something like:
>
> ----------------------------------------
>
> import mpfit
>
> # read data and prepare 2 data arrays 't' and 'y'
> ....
>
> def func(t, x):
>     """
>     - the model function
>     - t -- x-axis (data)
>     - x -- parameter array
>     - return y-values at each t
>     """   
>     y_model = ...
>     return y_model
>
> # len(t) == len(y_model) = len(y)
>
> def residuals(x, t = t, y = y, fjac = None):
>     # I'm not sure about the fjac part, this residual function 
> is             # defined according to the example in the mpfit docstring
>
>     # I think it was 0
>     status = 0
>
>     # or stauts at pos 1?
>     return [status, y - func(t, x)]
>
> fit = mpfit.mpfit(residuals, ...)
>
> ---------------------------------------
>
> I don't remember the parinfo-stuff right now. I wrote a little 
> "wrapper" around mpfit (insert limits in parinfo etc.). Tell me if you 
> want to have a look on this.
>
> I also tried leastsq but it's less sophisticated than mpfit.
>
> In mpfit (in enorm()) you can replace
>
>     sqrt(sum(vec*vec))
>
> by
>     sqrt(dot(vec,vec)).
> This is faster.
>
> Cheers steve
>
>> Thanks
>> Evelien
>>
>> _______________________________________________
>> SciPy-user mailing list
>> SciPy-user at scipy.net
>> http://www.scipy.net/mailman/listinfo/scipy-user
>>
>>
>



More information about the SciPy-user mailing list