/ concept-collection / benchcompress
Sign in
concept-collection / benchcompress
update paper
Jeremy Magland <jmagland@flatironinstitute.org> committed commit 70cbff81052e parent 47f2554 Browse files
2 changed files+46−4
paper/paper.mdmodified+16−4View file
@@ -93,13 +93,25 @@ We also include a custom implementation of ANS, as described above. The implemen
9393
9494 To enhance the performance of these basic compression algorithms, we also test reversible preprocessing steps before compression. These include, where appropriate, delta encoding, linear Markov prediction, and zero run length encoding for sparse data.
9595
96-## Dataset Generation
96+## Datasets
9797
98-Describe the datasets we use for benchmarking.
98+Our benchmark suite combines synthetic test cases and real scientific measurements to evaluate compression performance across diverse scenarios. The synthetic datasets include Bernoulli sequences with varying probabilities (p=0.1 to 0.5) providing well-defined theoretical entropy bounds, and Gaussian-distributed data in both quantized integer and floating-point formats with different standard deviations (σ=1 to 8).
9999
100-## Implementation
100+For real-world data, we draw from multiple sources in neuroscience and geophysics. Extracellular electrophysiology samples from the DANDI Archive [@dandi_archive] are provided in three forms: raw 30 kHz recordings, bandpass filtered (300-6000 Hz) and normalized traces, and sparse versions using activity-based suppression. We also include intracranial EEG data from OpenNeuro dataset ds005592 [@markiewicz2021openneuro], consisting of concatenated recordings from ten channels as 32-bit floating-point voltage measurements.
101101
102-[To be added]
102+The marine seismic dataset, collected during the Roger Revelle voyage RR1508 [@gorman_2023_8152964], provides both original floating-point measurements and quantized integer versions from a gas hydrate system survey.
103+
104+## System Architecture
105+
106+The framework is implemented primarily in Python for the core benchmarking functionality and TypeScript/React for the web interface. Performance-critical components, such as the Markov prediction algorithm, are implemented in C++ with Python bindings.
107+
108+The system is organized around two primary registries in an open-source repository: compression algorithms and test datasets. Both are defined through Python modules, enabling the scientific community to contribute through GitHub pull requests. Each algorithm specifies encoding and decoding functions along with tags indicating its capabilities, while datasets specify generation parameters and tags describing their characteristics like data type, dimensionality, and properties (continuous, sparse, etc.).
109+
110+The tag system manages algorithm-dataset compatibility. For example, algorithms with delta encoding or Markov prediction tags require datasets marked as continuous integer time series, while those using zero run-length encoding are matched with sparse datasets. This ensures algorithms are only tested on appropriate dataset types.
111+
112+The benchmarking process runs automatically through GitHub Actions when changes are pushed to the main branch. For compatible algorithm-dataset pairs, the system measures compression ratio and processing speeds, verifying results through decompression. A cloud-based caching system prevents redundant benchmark runs, only re-evaluating when components change.
113+
114+Results are presented through an interactive web interface where users can explore dynamically generated visualizations comparing compression ratios and processing speeds across different algorithms and datasets. The interface supports filtering by dataset characteristics and algorithm properties, enabling focused analysis of specific use cases.
103115
104116 ## Results
105117
paper/references.bibmodified+30−0View file
@@ -86,3 +86,33 @@
8686 year={1952},
8787 publisher={IEEE}
8888 }
89+
90+@misc{dandi_archive,
91+ author = {DANDI Archive},
92+ title = {Distributed Archives for Neurophysiology Data Integration (DANDI)},
93+ howpublished = {\url{https://dandiarchive.org/}},
94+ note = {Accessed: 2025-01-31}
95+}
96+
97+@article{markiewicz2021openneuro,
98+ title={The OpenNeuro resource for sharing of neuroscience data},
99+ author={Markiewicz, Christopher J and Gorgolewski, Krzysztof J and Feingold, Franklin and Blair, Ross and Halchenko, Yaroslav O and Miller, Eric and Hardcastle, Nell and Wexler, Joe and Esteban, Oscar and Goncavles, Mathias and others},
100+ journal={Elife},
101+ volume={10},
102+ pages={e71774},
103+ year={2021},
104+ publisher={eLife Sciences Publications Limited}
105+}
106+
107+@dataset{gorman_2023_8152964,
108+ author = {Gorman, Andrew R.},
109+ title = {Datasets associated with Uruti Basin gas hydrate
110+ heat flow feature investigated as part of Roger
111+ Revelle voyage RR1508
112+ },
113+ month = jul,
114+ year = 2023,
115+ publisher = {Zenodo},
116+ doi = {10.5281/zenodo.8152964},
117+ url = {https://doi.org/10.5281/zenodo.8152964},
118+}
\ No newline at end of file
moveopenescclose