Interface to SuiteSparse CHOLMOD

I noticed on the Detailed SciPy Roadmap under sparse.linalg, there is a line item for:

  • add interfaces to SuiteSparse CHOLMOD and SPQR

I have updated the scikit-sparse interface to CHOLMOD to be more similar to the scipy.linalg (dense) cholesky interface in my own development fork. I have a PR open to merge it.

I realize there are license issues with including SuiteSparse code directly in SciPy, but it seems like the interface to the headers and requiring SuiteSparse as a dependency is reasonable given the utility it would add to scipy.sparse.linalg. I am happy to work on incorporating this CHOLMOD interface into the scipy.sparse.linalg._dsolve module, as well as build the SPQR interface.

Similarly, I have also created interfaces to the AMD, COLAMD, etc. SuiteSparse matrix reordering routines that are available in my scikit-sparse development fork.

I am curious to hear everyone’s opinions on this topic. There is also certainly room for discussion around these items:

  • add license-compatible sparse Cholesky or incomplete Cholesky
  • add license-compatible sparse QR

although I would need someone with more expertise in licensing to weigh in on how to approach the algorithm design and implementation to avoid conflict with SuiteSparse itself.