linear_least_squares: OverFlow error or flapack.error

Hi,

I'm trying to do a simple linear least squares fit of some data in an application.

The relevant code runs about as follows, following closely the example found on http://mail.python.org/pipermail/python-list/2006-March/331693.html

···

---------
import matplotlib.numerix as nx

contact_x_points=nx.array(x_points[left_bound:right_bound])
contact_y_points=nx.array(y_points[left_bound:right_bound])

A=nx.ones((len(contact_x_points),2))
A[:,0]=contact_x_points result=nx.linear_algebra.linear_least_squares(A,contact_y_points)
---------

...but when I run, it crashes with:

File "hooke.py", line 202, in find_contact_point
     result=nx.linear_algebra.linear_least_squares(A,contact_y_points)
   File "/usr/lib/python2.3/site-packages/Numeric/LinearAlgebra.py", line 416, in linear_least_squares
     nlvl = max( 0, int( math.log( float(min( m,n ))/2. ) ) + 1 )
OverflowError: math range error

I also tried using scipy:
-----------
import scipy as sp

contact_x_points=sp.array(x_points[left_bound:right_bound])
contact_y_points=sp.array(y_points[left_bound:right_bound])

A=sp.ones((len(contact_x_points),2))
A[:,0]=contact_x_points result=sp.linalg.lstsq(A,contact_y_points)
-------------

... with another error:

array_from_pyobj:intent(hide) must have defined dimensions.
rank=1 dimensions=[ 0 ]
Traceback:
[...]
File "hooke.py", line 202, in find_contact_point
     result=sp.linalg.lstsq(A, contact_y_points)
   File "/usr/lib/python2.3/site-packages/scipy/linalg/basic.py", line 344, in lstsq
     overwrite_b = overwrite_b)
flapack.error: failed in converting hidden `s' of flapack.dgelss to C/Fortran array

In my .matplotlibrc the numerix backend is Numeric.
I'm on Debian Sarge; MPL version is 0.82 ; Scipy is 0.3.2

It must be noticed that I fail to declare

A=nx.ones((len.contact_x_points),2),dtype=float)
as the example should seem to require, because it gives me another error:

TypeError: ones() got an unexpected keyword argument 'dtype'

...so if this is the problem, please tell me how to correctly pass the dtype argument.

Since I'm quite a scipy/numeric newbie I guess there could be some obvious blunder and/or more correct way of obtaining my fit, and I'd be thankful to anyone pointing me at the solution...

Thanks,
Massimo

--
Massimo Sandal
University of Bologna
Department of Biochemistry "G.Moruzzi"

snail mail:
Via Irnerio 48, 40126 Bologna, Italy

email:
massimo.sandal@...898...

tel: +39-051-2094388
fax: +39-051-2094387

Ok, I guess I found the problem is in my code (the arrays I'm passing are indeed empty for some reason, not surprising it can't line fit them). So high shame on me for having polluted the mailing list :frowning:

A lesson in humility (and debugging) indeed.
Thanks anyway... I flee in shame.

m.

···

--
Massimo Sandal
University of Bologna
Department of Biochemistry "G.Moruzzi"

snail mail:
Via Irnerio 48, 40126 Bologna, Italy

email:
massimo.sandal@...898...

tel: +39-051-2094388
fax: +39-051-2094387