5

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

Ali
  • 601
  • 1
  • 4
  • 10

1 Answers1

1

I only have experience with scipy.sparse, it is limited in functionality but API is good. You may want to check out PETSC for Python too.

Armut
  • 245
  • 1
  • 8