Jeremy Magland use numba for markov decode
| .github | |
| .vscode | |
| devel | |
| scripts | |
| web-ui | |
| zia_benchmark | |
| .gitignore | |
| .pre-commit-config.yaml | |
| LICENSE | |
| README.md | |
| test1.py |
zia#
A benchmarking framework for evaluating compression algorithms on numeric array datasets, with a focus on scientific data.
Latest benchmark results: https://magland.github.io/zia/
Overview#
Zia is a comprehensive benchmarking framework for evaluating compression algorithms on numeric array datasets. The system follows an automated workflow:
-
Defining Components
- Algorithms are implemented in
zia_benchmark/src/zia_benchmark/algorithms/ - Datasets are defined in
zia_benchmark/src/zia_benchmark/datasets/ - Each component specifies metadata like version, tags, and compatibility requirements
- Algorithms are implemented in
-
Automated Benchmarking
- Benchmarks run automatically via GitHub Actions on pushes to main branch
- For each compatible algorithm-dataset pair, measures:
- Compression ratio
- Encoding throughput (MB/s)
- Decoding throughput (MB/s)
- Results are verified by decompressing and comparing with original data
-
Result Storage
- Results are committed to a dedicated
benchmark-resultsbranch - Local and remote caching system prevents redundant rerunning of benchmarks (only modified or added components are re-benchmarked)
- Caching is based on algorithm and dataset versions
- Results are committed to a dedicated
-
Web Interface
- Interactive visualization at https://magland.github.io/zia/
- Filter and sort results by dataset or algorithm
- Visual charts for comparing performance metrics
- Export results to CSV for further analysis
For developers#
The project consists of two main components:
zia_benchmark/: Python package containing the core benchmarking framework, algorithms, and datasetsweb-ui/: React-based web interface for visualizing benchmark results
Local Development Setup#
- Install Python dependencies:
cd zia_benchmark
pip install -e .
zia-benchmark --help
zia-benchmark list
zia-benchmark run --help
- Install web UI dependencies:
cd web-ui
npm install
- Run web UI locally:
cd web-ui
npm run dev
Code Formatting#
This project uses pre-commit hooks to automatically format code before each commit. The formatting includes:
- Python code formatting using black
- TypeScript/JavaScript code formatting using npm scripts
To set up the pre-commit hooks after cloning the repository:
- Install pre-commit:
pip install pre-commit
- Install the git hook scripts:
pre-commit install
After this setup, code will be automatically formatted when you make a commit.