Skip to content

Conversation

@nathanielpritchard
Copy link
Contributor

@nathanielpritchard nathanielpritchard commented Jul 14, 2025

This is an implementation of new abstract type that will be essential for all interporlatory decompositions that will be implemented, such as CUR. This set of abstract types will be know as Selectors as they will be designed to select row and column indices from matrices. A selector will work by performing some operation on a matrix that helps to identify good indices. This could be as simple as using the matrix to derive a distribution, which it samples from or it could be as complicated as considering the interplay between the matrix and its dominant singular vectors. This PR implements:

  1. Selector, the technique
  2. SelectorRecipe, the recipe for the technique
  3. complete_selector, the function that returns the recipe given the technique
  4. update_selector!, the function that updates the selector recipes
  5. select_indices!, the function that selects indices from a matrix and stores then in a vector idx.

Example selectors:

  1. LUPP- Will pivot on a compressed matrix using LU with partial pivoting and select the desired number of indices.
  2. QRCP- Will pivot on a compressed matrix using QR with column pivoting and select the desired number of indices.
  3. Sampling- Will select indices by sampling from a distribution over the matrix. This could include leverage score sampling or uniform sampling.
  4. DEIM - Will select indices from the singular value decomposition of a matrix.

@nathanielpritchard nathanielpritchard self-assigned this Jul 14, 2025
@nathanielpritchard nathanielpritchard added the enhancement New feature or request label Jul 14, 2025
@codecov
Copy link

codecov bot commented Jul 14, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@nathanielpritchard nathanielpritchard requested review from dmaldona and vp314 and removed request for vp314 July 14, 2025 12:56
Copy link
Contributor

@dmaldona dmaldona left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nathanielpritchard please add some en uses in the PR description for context

@nathanielpritchard
Copy link
Contributor Author

@nathanielpritchard please add some en uses in the PR description for context

I have updated the PR accordingly.

Copy link
Contributor

@dmaldona dmaldona left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is OK for now well need to revisit the Selector type once we actually have selectors implemented.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants