Skip to content

ENH: Create bindings for SPQR#151

Merged
broesler merged 572 commits into
scikit-sparse:masterfrom
broesler:feature-spqr
Feb 11, 2026
Merged

ENH: Create bindings for SPQR#151
broesler merged 572 commits into
scikit-sparse:masterfrom
broesler:feature-spqr

Conversation

@broesler
Copy link
Copy Markdown
Collaborator

This PR adds an interface to the SuiteSparse SPQR package. It is built on top of the development branch in #145, so it will show many more commits before that is merged.

The function does *not* accept csc_matrix inputs (deprecated API), so be
explicit about the input not being in csc_array format.
Also fix docs where imports were from cholmod vs. amd/camd.
This commit restructures the existing docs to be more like the SciPy
docs with an API reference page that will just list every submodule and
function.
This commit uses the Furo theme to add a light/dark colorscheme button
and simplify the style. There was an issue with the PyData theme's
"search" feature on build, so use Furo for now.

This commit also adds the `sphinx.ext.autosummary` to create separate
pages for each function/method. It is much easier to read the
documentation with less scrolling.
This commit begins the consolidation of documentation into the
individual module docstrings, like what SciPy does for `scipy.sparse`,
`scipy.linalg`, etc. Documentation for each submodule will be located
within that submodule itself, not a separate docs file.
This change keeps the API summaries in a single location, instead of
blending the API summary and User Guide into a single rst file in the
documentation.
The rst files in doc/reference are now just stub files with
"automodule", and the actual documentation is in the docstring of each
module.
This commit makes class pages like `CholeskyFactor` mimic the
numpy/scipy documentation that has separate pages for each class method,
instead of listing them all in-line on a single page.
Previously, we just converted every input to a dense array. Now, use
overloads for cholmod_sparse.
mode="raw" refers specifically to the LAPACK output used in
`scipy.linalg.qr`, but here we are not returning "raw" output, per se,
just the Householder form. Be explicit about it.
Unused until we can extract the factors from the
SuiteSparseQR_factorization struct.
This commit changes the value of SPQRFactor.rank to "None" when only
a symbolic analysis has been done.
Refer to `spqr_freefac.cpp` to see the actual sizes, since they are not
all accurately documented in the comments of SuiteSparseQR.hpp.
@broesler broesler mentioned this pull request Dec 12, 2025
@broesler broesler merged commit 3d1d629 into scikit-sparse:master Feb 11, 2026
@broesler broesler deleted the feature-spqr branch February 11, 2026 20:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant