# Sparse matrix ordering in Python

I would like to implement custom, domain-specific algorithms for sparse matrix orderings. I am looking for Python packages for ordering sparse matrices. It would be nice to have:

• The underlying datastructures handle sparsity (matrix sizes: $10^4-10^6$)

• To be able to handle highly unsymmetric matrices. (Introducing artificial fill-in to make them symmetric is not acceptable; there are many packages for the symmetric and the mildly unsymmetric case.)

• Execution speed is not a major concern but rapid prototyping certainly is

• To be able to define sparse submatrix views (block views) recursively

• Perform row and column permutations on submatrix views, which are then reflected in the original, big matrix as well

• Intuitive, easy to learn and use API

• Permissive license (preferably BSD 3-Clause or similarly permissive)

I do not need any sparse factorization methods, arithmetic or sparse linear solvers. I would like to experiment with my own ordering algorithms and that's all. For example, I would like to order a sparse matrix to recursive bordered block diagonal form (RBBD), and play with heuristics for defining blocks and nested blocks, based on domain-specific knowledge.

I have found so far:

Did I miss any major, well-established Python package for this purpose?

I would also greatly appreciate feedback regarding first-hand experience with these or other Python packages for such purposes (something like we have in Recommendations for a usable, fast C++ matrix library?).