[SciPy-dev] problem with linalg.cholesky?

Andrew Jaffe a.h.jaffe at gmail.com
Thu Dec 1 21:33:27 CST 2005


Hi All,

A bit more information on the problem:

Following a suggestion in the pickling thread going on here, ff I add in 
lines to the cholesky_decomposition function in basic_lite.py to print 
out the flags of the array, the following happens:


input array flags {'WRITEABLE': True, 'UPDATEIFCOPY': False, 
'NOTSWAPPED': True, 'CONTIGUOUS': True, 'FORTRAN': False, 'ALIGNED': 
True, 'OWNDATA': True}

cholesky: after _castCopyAndTranspose, flags= {'WRITEABLE': True, 
'UPDATEIFCOPY': False, 'NOTSWAPPED': True, 'CONTIGUOUS': False, 
'FORTRAN': True, 'ALIGNED': True, 'OWNDATA': True}

So, for some reason, _castCopyAndTranspose is somehow making the array 
non-Contiguous, which is then a problem in the underlying lapack call.

What's going on here?

Also, an (unrelated?) point: I note that basic_lite.py exists in both 
scipy/linalg and scipy/basic -- two different files with somewhat 
different contents, imported in different ways! Which is correct? Should 
they both exist? (They both give the same error for cholesky.) Is one a 
leftover from an earlier installation?

Thanks,

Andrew




Andrew Jaffe wrote:
> Hi All,
> 
> One more data point: in addition to my problems on OS X, someone else 
> has the same issue on Win XP... So it's not OS-specific, but it does 
> occur only for some installations.
> 
> Perhaps it depends on the underlying BLAS/LAPACK library?
> 
> Andrew
> 
> Andrew Jaffe wrote:
> 
>>hi all,
>>
>>(apologies that a similar question has appeared elsewhere...)
>>
>>In the newest incarnation of scipy_core, I am having trouble with the
>>cholesky(a) routine. Here is some minimal code reproducing the bug  
>>(on OS X)
>>
>>------------------------------------------------------------
>>from scipy import identity, __core_version__, Float64
>>import scipy.linalg as la
>>print 'Scipy version: ', __core_version__
>>i = identity(4, Float64)
>>print 'identity matrix:'
>>print i
>>
>>print 'about to get cholesky decomposition'
>>c = la.cholesky(i)
>>print c
>>------------------------------------------------------------
>>
>>which gives
>>
>>------------------------------------------------------------
>>Scipy version:  0.6.1
>>identity matrix:
>>[[ 1.  0.  0.  0.]
>>  [ 0.  1.  0.  0.]
>>  [ 0.  0.  1.  0.]
>>  [ 0.  0.  0.  1.]]
>>about to get cholesky decomposition
>>Traceback (most recent call last):
>>   File "/Users/jaffe/Desktop/bad_cholesky.py", line 13, in ?
>>     c = la.cholesky(i)
>>   File "/Library/Frameworks/Python.framework/Versions/2.4/lib/ 
>>python2.4/site-packages/scipy/linalg/basic_lite.py", line 117, in  
>>cholesky_decomposition
>>     results = lapack_routine('L', n, a, m, 0)
>>lapack_lite.LapackError: Parameter a is not contiguous in  
>>lapack_lite.dpotrf
>>------------------------------------------------------------
>>
>>(The cholesky decomposition in this case should just be the matrix  
>>itself; the same error occurs with a complex matrix.)
>>
>>
>>Any ideas? Could this have anything to do with _CastCopyAndtranspose  
>>in Basic_lite.py? (Since there are few other candidates for anything  
>>that actually changes the matrix.)
>>
>>Thanks in advance,
>>
>>A
>>
>>
>>______________________________________________________________________
>>Andrew Jaffe                                    a.jaffe at imperial.ac.uk
>>Astrophysics Group                                    +44 207 594-7526
>>Blackett Laboratory, Room 1013                    FAX             7541
>>Imperial College, Prince Consort Road
>>London SW7 2AZ ENGLAND              http://astro.imperial.ac.uk/~jaffe




More information about the Scipy-dev mailing list