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?).