[SciPy-user] Type handling of matrices

Robert Kern rkern at ucsd.edu
Thu Nov 11 04:31:05 CST 2004

Pearu Peterson wrote:
> On Thu, 11 Nov 2004, Robert Kern wrote:
>> Fernando Perez wrote:
>>> How about just using functions for everything?  I'd really hate to 
>>> have to remember that if A is sparse, A.is<foo> works, but if it's 
>>> dense I need to instead use is<foo>(A).
>> The big benefit for a property (not method) on sparse matrices is that 
>> one can set A.ishermitian on initialization and all get/set operations 
>> will obey that property.
>> A = sparse.dok_matrix()
>> A.ishermitian = True
>> A[1,2] = 1.
>> assert A[2,1] == 1.
> The problem with this approach is that it is not safe. It is too easy
> to make the following error:
>   A.ishermitian = True
>   A[1,2] = 1.
>   A[2,1] = 2.
> I would introduce sethermitian(flag=True) method that for an empty matrix
> sets private A._ishermitian and for a non-empty matrix it first checks
> if A can be hermitian (if not, it raises an exception).

Actually, now that I think some more on it, I'd probably make them 
keyword arguments in __init__ and the corresponding properties read-only.

A[1,2] = 1.
A[2,1] = 2.
A.ishermitian = True

This should raise an error since I can't think of a reasonable action to 

> Hmm, should traits package or Python property features be used here?

traits may be overkill, but properties certainly can be used here.

Robert Kern
rkern at ucsd.edu

"In the fields of hell where the grass grows high
  Are the graves of dreams allowed to die."
   -- Richard Harter

More information about the SciPy-user mailing list