Hi all

I am trying to create a subclass of the sparse matrix class in scipy, to add some extra methods I need. 

I have tried to follow the guide on: http://www.scipy.org/Subclasses but without much luck, the view method does not exist for the sparse matrix class. Below is a script I have created

-----------------

#!/usr/bin/env python

from scipy.sparse.csr import csr_matrix as spmatrix

class sparsematrix_addons(spmatrix):
    """
    subclass for standard scipy sparse class to add missing functionality
    """

    def __new__(cls, matrix):
        obj = spmatrix.__init__(cls, matrix)
        return obj

    def square_spmat(self, M):
        return M ** 2

    def ravel_spmat(self, M):
        pass

if __name__ == '__main__':

    import numpy as np

    x = (np.random.rand(10, 10) * 2).astype(int).astype(float)
    xsp = sparsematrix_addons(x)

--------------------

However, this generates the following error:

TypeError: unbound method __init__() must be called with csr_matrix instance as first argument (got type instance instead)

I am not strong in python OOP, or OOP in general, so I am sure this is a rather trivial problem to solve.

Anyone got any solutions or ideas to point me in the right direction?

Thanks in advance,

Per