A terminal search engine, statistics profiler, and code exporter for machine learning datasets.
APRIL SET is structured as a CLI utility written in Python. It contains three main modules:
- Search Engine: Queries multiple remote dataset providers concurrently.
- Downloader: Manages chunked and resumable dataset retrieval.
- Inspector: Profiles tabular files locally (CSV, TSV, Parquet, ARFF).
┌─────────────────────────────────────────┐
│ CLI Entry / REPL Mode │
└────────────────────┬────────────────────┘
│
┌──────────────────────────┼──────────────────────────┐
▼ ▼ ▼
┌───────────────────────┐ ┌───────────────────────┐ ┌───────────────────────┐
│ Search Engine │ │ Downloader Manager │ │ Dataset Inspector │
│ (Concurrent Providers)│ │ (Resumable, Chunked) │ │ (Stat Profiler/ARFF) │
└───────────┬───────────┘ └───────────────────────┘ └───────────────────────┘
│
├───────────────┬───────────────┬───────────────┐
▼ ▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ HuggingFace │ │ OpenML │ │ UCI │ │ Kaggle │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
The tool interfaces with several machine learning data repositories:
- Hugging Face: Uses the Web API to fetch dataset details.
- OpenML: Queries the OpenML JSON API for metadata.
- UCI Machine Learning Repository: Downloads dataset index lists and archive files.
- Kaggle: Invokes the Kaggle API to find and retrieve hosted datasets.
- GitHub: Searches repository indexes for public files.
Search results are sorted using a custom scorer:
- Exact Match: A bonus of 50.0 is applied if the query matches the dataset name or ID exactly.
- Substring Match: A bonus of 30.0 is applied if the query is a substring of the name or ID.
- Term Frequency: Calculated based on token overlap in the name (40% weight) and description (10% weight).
- Threshold Filter: Datasets with zero word overlap are discarded.
- Quality and Popularity: Up to 30.0 additional points are based on repository stars, downloads, and metadata completeness.
| Key | Description | Default |
|---|---|---|
| cache.max_size_gb | Maximum local dataset storage size | 10.0 |
| ai.default_provider | Active LLM assistant provider (gemini, openai, ollama) | "ollama" |
| ai.ollama_url | Connection URL for Ollama local service | "http://localhost:11434" |
| search.max_results | Maximum results returned per search provider | 20 |
| providers.enabled | Active search providers | ["huggingface", "openml", "uci", "github", "kaggle"] |
- APRIL_SET_REPL: Disables the initial ASCII art banner inside the interactive loop.
- KAGGLE_USERNAME & KAGGLE_KEY: Credentials used for the Kaggle API.
-
Add aliases to ~/.bashrc or ~/.bash_aliases:
alias april-set='/path/to/april-set/bin/set' alias aset='/path/to/april-set/bin/set'
-
Reload shell configuration:
source ~/.bashrc
Search for datasets. If no query is provided, it starts an interactive prompt.
aset search "diabetes" --limit 5After listing, enter the index number to download immediately.
Download a dataset using its ID. Supports resuming.
aset download openml/37Profile local tabular files (CSV, TSV, Parquet, ARFF).
aset inspect ~/.cache/april-set/datasets/openml_37/diabetes.arffQuery LLM assistant for preprocessing and model recommendations.
aset ai openml/37 "What preprocessing steps are recommended?"Generate code loaders for PyTorch, TensorFlow, Scikit-learn, XGBoost, LightGBM, CatBoost, DuckDB, R, Julia, GitHub actions, or AWS S3.
aset export openml/37 --framework pytorchRun tests using pytest:
pytest tests/