Skip to main content

Download sparse matrices from SuiteSparse Matrix Collection

Project description

SuiteSparse Matrix Collection Downloader

Modern Python tool for downloading sparse matrices from the SuiteSparse Matrix Collection

⚠️ This project is under active development. APIs and features may change without notice.

A command-line tool and Python library that makes it easy to discover, download, and work with sparse matrices from the world's largest collection of sparse matrix data.

✨ Features

  • 🔍 Smart Matrix Discovery - Search by size, sparsity, mathematical properties, and more
  • 📦 Multiple Formats - Download MAT-files, Matrix Market, or Rutherford-Boeing formats
  • Concurrent Downloads - Up to 8 parallel downloads with progress tracking
  • 🔄 Resume Support - Interrupted downloads continue automatically
  • Integrity Verification - MD5 checksum validation ensures data accuracy
  • 🧠 Smart Caching - Skip re-downloads of existing files
  • 🎨 Rich CLI - Beautiful progress bars and colored output
  • 🔧 Type Safety - Full type hints for better IDE support

🚀 Quick Start

Installation

# Clone and install (not yet on PyPI)
git clone <repository-url>
cd ssdownload
curl -LsSf https://astral.sh/uv/install.sh | sh  # Install uv
uv sync                                           # Install dependencies

Global Installation (Recommended for Development)

For easier command usage without uv run prefix:

# From project root (or use absolute path)
uv tool install .          # Initial installation
uv tool update-shell       # Update PATH (first time only)

# Verify installation
ssdl --help

# After code changes
uv tool upgrade ssdownload --reinstall   # Update wrapper only

Basic Usage

Command Format: Use ssdl directly if you've done global installation, otherwise add uv run prefix.

# Get matrix information
ssdl info ct20stif

# Download a matrix (auto-detects group)
ssdl download ct20stif

# Download in Matrix Market format
ssdl download ct20stif --format mm

# Search matrices with filters
ssdl list --spd --size 1000:10000 --field real

# Bulk download (real) SPD matrices in size range
ssdl bulk --spd --field real --size 100:1000 --max-files 5
Python API Example
from ssdownload import SuiteSparseDownloader, Filter

# Simple download
downloader = SuiteSparseDownloader()
path = await downloader.download_by_name("ct20stif")

# Filtered bulk download
filter_obj = Filter(spd=True, n_rows=(1000, 10000))
paths = await downloader.bulk_download(filter_obj, max_files=5)

📚 Documentation

🤝 Contributing

We welcome contributions! Please see our Development Guide for setup instructions and coding standards.

  1. Fork the repository
  2. Create your feature branch
  3. Add tests for new functionality
  4. Submit a pull request

📄 License

MIT License - see LICENSE file for details.

🙏 Acknowledgments

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ssdownload-0.1.0.tar.gz (44.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ssdownload-0.1.0-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

File details

Details for the file ssdownload-0.1.0.tar.gz.

File metadata

  • Download URL: ssdownload-0.1.0.tar.gz
  • Upload date:
  • Size: 44.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.19

File hashes

Hashes for ssdownload-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9767d91a57fb1e560cdb200163adf10467755792d0f98bc0946aa85e04e7b7de
MD5 3bef977f4f30e9750a3735fd334b2f81
BLAKE2b-256 ea4e5279846b19b0545c7fccb185656e73f89e8782876b87b787f631e1e2667d

See more details on using hashes here.

File details

Details for the file ssdownload-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ssdownload-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.19

File hashes

Hashes for ssdownload-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4f0ade07550625d817e2d4f70d76324856d213c13a74ee205951a16d250255e7
MD5 d90f51e8e03a3b65287df07e7dc480ce
BLAKE2b-256 6db95b8ed1b944f2107c2b34cddfbfd807aed9eb7b59971571d1def2c096b56b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page