Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CR-Sparse: XLA accelerated algorithms for inverse problems in sparse representations and compressive sensing #42

Closed
2 of 9 tasks
shailesh1729 opened this issue Jul 7, 2021 · 5 comments

Comments

@shailesh1729
Copy link

Submitting Author: Shailesh Kumar (@shailesh1729)
Package Name: CR-Sparse
One-Line Description of Package: XLA accelerated algorithms for inverse problems in sparse representations and compressive sensing
Repository Link (if existing): https://github.com/carnotresearch/cr-sparse
Documentation: https://carnotresearch.github.io/cr-sparse/


Description

This library aims to provide XLA/JAX based Python implementations for
various algorithms related to:

  • Sparse approximation
  • Compressive sensing

The library also provides

  • Various simple dictionaries and sensing matrices
  • Sample data generation utilities
  • Framework for evaluation of sparse recovery algorithms

Addition information

Scope

  • Please indicate which category or categories this package falls under:

    • Data retrieval
    • Data extraction
    • Data munging
    • Data deposition
    • Data visualization
    • Reproducibility
    • Geospatial
    • Education
    • Unsure/Other (explain below)
  • Explain how the and why the package falls under these categories (briefly, 1-2 sentences). Please note any areas you are unsure of:

The sparse recovery algorithms reconstruct sparse representations of a signal or a set of measurements in a dictionary (which is an overcomplete basis). The closest category I can think of is data munging.

  • Who is the target audience and what are the scientific applications of this package?

Compressive sensing has applications in areas like photography, holography, facial recognition, magnetic resonance imaging, etc.
Sparse representations have applications in areas like image deblurring, denoising, dictionary learning, image compression, inpainting etc.

  • Are there other Python packages that accomplish the same thing? If so, how does yours differ?

scikit-learn contains linear models which include implementations of algorithms like orthogonal matching pursuit (OMP), LASSO, LARS, OLS, etc.

CR-Sparse implements these algorithms using a functional programming paradigm built on top of JAX. This enables it to use immense optimization opportunities provided by the XLA compiler. In addition, the code can be deployed on GPUs and TPUs without any modification. These are significant advantages compared to the scikit-learn implementation.

The coverage of greedy sparse recovery algorithms in this package is bigger. E.g. it includes implementations of hard thresholding pursuit, compressive sampling matching pursuit, iterative hard thresholding, etc. in a single package.

We are also adding implementations for L1 minimization (convex optimization) based algorithms.

  • Any other questions or issues we should be aware of?:

This is a pre-submission enquiry to understand if the CR-sparse package described below fits the submission criteria for pyOpenSci. Please do let us know what more should be done.

P.S. *Have feedback/comments about our review process? Leave a comment here

@NickleDave
Copy link
Contributor

Hi @shailesh1729 thank you for your interest in pyOpenSci.

I actually work with compressive sensing in my day job and think it's great to see some work on this in the Python space.

I do think this is out of scope for pyOpenSci though.
We are mainly focused on tooling for open science.
E.g., if you built a tool that made it easier to download datasets from a repository of MRI images, say, to test compressive sensing algorithms or whatever else you wanted to do with it, that would be in scope (that would be "data retrieval").

Have you considered submission at JOSS?
https://joss.theoj.org/

@NickleDave
Copy link
Contributor

This is off-topic for the question of scope, but some related repos just in case you're not aware of them already:

I get that you have different goals than most of them--building on top of XLA/JAX, which is great--but you might be curious about previous attempts at APIs, algorithms, etc.

@palacio-tech
Copy link

@NickleDave Thank you for your feedback. Now I better understand the scope of pyOpenSci. I will try to submit it to JOSS.

Thank you for the references for previous works. Yes, I am slowly implementing these ideas in XLA/JAX. I was aware of some of the previous work but not all of them. This will be helpful.

@NickleDave
Copy link
Contributor

Happy I could help!

I'll go ahead and close for now.

@lwasser
Copy link
Member

lwasser commented Jul 7, 2021

thank you both!

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

No branches or pull requests

4 participants