Daisy: A Blockwise Task Scheduler
Blockwise task scheduler for processing large volumetric data
What is Daisy?
Daisy is a library framework that facilitates distributed processing of big nD datasets across clusters of computers. It combines the best of MapReduce/Hadoop (the ability to map a process function across elements) and Luigi (the ability to chain dependent tasks together) together in one lightweight and efficient package with a focus on processing nD datasets.
Daisy documentations are at https://funkelab.github.io/daisy
Updates
Daisy v1.0 is now available on PyPI!
- Install it now with
pip install daisy - Besides quality-of-life improvements, we have also refactored I/O-related utilities to
funlib.persistenceto make code maintenance easier. This includes everything that was indaisy.persistencealong withdaisy.Arrayand helper functions such asdaisy.open_ds, anddaisy.prepare_ds.- Just run
pip install funlib.persistence. - These functions, which provide an easy to use interface to common formats such as zarr, n5 and any other dask friendly format for arrays and interfaces for storing large spatial graphs in SQLite, PostgreSQL, or Files remain the same.
- Just run
Overview
Developed by researchers at HHMI Janelia and Harvard, the intention behind Daisy was to develop a scalable and fast distributed block-wise scheduler for processing very large (TBs to PBs) 3D/4D bio image datasets. We needed a fast and scalable scheduler but also resilient to failures and recoverable/resumable from hardware errors. Daisy should also be generalizable enough to support efficient processing of different tasks with different computation and input/output modalities.
Daisy is lightweight
-
Daisy uses high performance TCP/IP libraries for communications between the scheduler and workers.
-
It minimizes network overheads by sending only coordinates and status checks. Daisy does not enforce the exact method of data transfers to/between workers so that maximum performance is achieved for different tasks.
Daisy's API is easy-to-use and extensible
-
Built on Python, Daisy provides an easy-to-use native interface for Python scripts useful for both simple and complex use cases.
-
Simplistically, Daisy is a framework for
mapping a function across independent sub-blocks in the dataset. -
More complex usages include specifying inter-block dependencies, inter-task dependencies, using Daisy's array interface and geometric graph interface.
Daisy chains complex pipelines of tasks
-
Inspired by powerful workflow management frameworks like Luigi for automating long running tasks and decreasing overall processing time through task pipelining, Daisy allows user to specify dependency between tasks, allowing for task chaining and running multiple tasks in a pipeline with dynamic concurrent per-block execution.
-
For instance, Daisy can chain a
maptask and areducetask to implement amap-reducetask for nD datasets. Of course, any other combinations ofmapandreducetasks are composable. -
By tracking dependencies at the
blocklevel, tasks can be executed concurrently to maximize pipelining parallelism.
Daisy is tuned for processing datasets with real-world units
- Daisy has a native inferface to represent of regions in a volume in real world units, easily handling voxel sizes, with convenience functions for region manipulation (intersection, union, growing or shrinking, etc.)
Citing Daisy
To cite this repository please use the following bibtex entry:
@software{daisy2022github,
author = {Tri Nguyen and Caroline Malin-Mayor and William Patton and Jan Funke},
title = {Daisy: block-wise task dependencies for luigi.},
url = {https://github.com/funkelab/daisy},
version = {1.0},
year = {2022},
}
In the above bibtex entry, the version number is intended to be that from daisy/setup.py, and the year corresponds to the project's 1.0 release.
Metadata
Release files for daisy 1.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| daisy-1.2.3.tar.gz | 44.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| daisy-1.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 91.7 kB
Release files / daisy-1.2.3.tar.gz
| Download URL | daisy-1.2.3.tar.gz |
|---|---|
| Size | 44.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
44a6917760a08e39a9151a1341523c0dafa11d5b369ebfcdab7b44b1504f5a4c
|
|
BLAKE2b-256 checksum How to use checksums |
430e3b2be0450f7da9096c5b68f8a3a5728ca4821e0b0b90c1cc514adc3cb947
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / daisy-1.2.3-py3-none-any.whl
| Download URL | daisy-1.2.3-py3-none-any.whl |
|---|---|
| Size | 47.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2bbf476acd862771daba5a72ed52b770a5e9c4688026403f33b2c4d8b7776771
|
|
BLAKE2b-256 checksum How to use checksums |
6109e531fbc1b126978323c9833e685f3f8d4d05ea9ccd474467261317a54597
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for daisy 1.2.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.