Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

example workflow codecov

WaveletBuffer

A universal C++ compression library based on wavelet transformation

Features

  • Written in Modern C++
  • One-side wavelet decomposition for vectors and matrices
  • 5 Daubechies Wavelets DB1-DB5
  • Different denoising algorithms
  • Fast and efficient compression with MatrixCompressor
  • Cross-platform

Requirements

  • CMake >= 3.16
  • C++20 compiler
  • conan >= 1.56, < 2.0

Bindings

Usage Example

#include <wavelet_buffer/wavelet_buffer.h>

using drift::Signal1D;
using drift::WaveletBuffer;
using drift::WaveletParameters;
using drift::WaveletTypes;
using DenoiseAlgo = drift::ThresholdAbsDenoiseAlgorithm<float>;

int main() {
  Signal1D original = blaze::generate(
      1000, [](auto index) { return static_cast<float>(index % 100); });

  std::cout << "Original size: " << original.size() * 4 << std::endl;
  WaveletBuffer buffer(WaveletParameters{
      .signal_shape = {original.size()},
      .signal_number = 1,
      .decomposition_steps = 3,
      .wavelet_type = WaveletTypes::kDB1,
  });

  // Wavelet decomposition of the signal and denoising
  buffer.Decompose(original, DenoiseAlgo(0, 0.3));

  // Compress the buffer
  std::string arch;
  buffer.Serialize(&arch, 16);
  std::cout << "Compressed size: " << arch.size() << std::endl;

  // Decompress the buffer
  auto restored_buffer = WaveletBuffer::Parse(arch);
  Signal1D output_signal;

  // Restore the signal from wavelet decomposition
  restored_buffer->Compose(&output_signal);

  std::cout << "Distance between original and restored signal: "
            << blaze::norm(original - output_signal) / original.size()
            << std::endl;
  std::cout << "Compression rate: " << original.size() * 4. / arch.size() * 100
            << "%" << std::endl;
}

Build and Installing

On Ubuntu:

git clone https://github.com/panda-official/WaveletBuffer.git

mkdir build && cd build
cmake -DWB_BUILD_TESTS=ON -DWB_BUILD_BENCHMARKS=ON -DWB_BUILD_EXAMPLES=ON -DCODE_COVERAGE=ON ..
cmake --build . --target install

On MacOS:

git clone https://github.com/panda-official/WaveletBuffer.git
mkdir build && cd build
cmake -DWB_BUILD_TESTS=ON -DWB_BUILD_BENCHMARKS=ON -DWB_BUILD_EXAMPLES=ON -DCODE_COVERAGE=ON ..
cmake --build . --target install

On Windows:

git clone https://github.com/panda-official/WaveletBuffer.git
mkdir build && cd build
cmake -DWB_BUILD_TESTS=ON -DWB_BUILD_BENCHMARKS=ON -DWB_BUILD_EXAMPLES=ON -DCODE_COVERAGE=ON ..
cmake --build . --config Release --target install

Integration

Using cmake target

find_package(wavelet_buffer REQUIRED)

add_executable(program program.cpp)
target_link_libraries(program wavelet_buffer::wavelet_buffer)

# WaveletBuffer use blaze as linear algebra library which expects you to have a LAPACK library installed
# (it will still work without LAPACK and will not be reduced in functionality, but performance may be limited)
find_package(LAPACK REQUIRED)
target_link_libraries(program ${LAPACK_LIBRARIES})

References

Metadata

Release files for wavelet-buffer 0.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wavelet-buffer 0.7.1
File Size Uploaded
wavelet-buffer-0.7.1.tar.gz 60.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for wavelet-buffer 0.7.1
File
wavelet_buffer-0.7.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
wavelet_buffer-0.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
wavelet_buffer-0.7.1-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
wavelet_buffer-0.7.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
wavelet_buffer-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
wavelet_buffer-0.7.1-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
wavelet_buffer-0.7.1-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
wavelet_buffer-0.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
wavelet_buffer-0.7.1-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details
wavelet_buffer-0.7.1-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
wavelet_buffer-0.7.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
wavelet_buffer-0.7.1-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details

Total release size: 12.1 MB

Release files / wavelet-buffer-0.7.1.tar.gz

Download URL wavelet-buffer-0.7.1.tar.gz
Size 60.2 kB
Tags Source
SHA-256 checksum
How to use checksums
cd549008e3616780b1c2613d12b4f1aeac29ee35b4bec78a2f556f740a70d035
BLAKE2b-256 checksum
How to use checksums
cf88ee8565591caeb219d94d19ac12ef2276a2f7adf9762b019f1acb13c982e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp311-cp311-win_amd64.whl

Download URL wavelet_buffer-0.7.1-cp311-cp311-win_amd64.whl
Size 1.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
e7c9ed8388bcbcebee9645e871663ffa3c9271f6e143edbd0350db400f17e8f3
BLAKE2b-256 checksum
How to use checksums
50a4c0b98013098701b0dcfb5e319bae4bd74d30176fbb0c689c637bfb760dfa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL wavelet_buffer-0.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 831.8 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d407244009445a26ca18001f12fac6b44a2430fc73f21fca766b26c8a4f28003
BLAKE2b-256 checksum
How to use checksums
f0b3b2c1fe5aa39d5e9aff3665f131cfe64f0c881abf88f144c1dbd8902b8695
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp311-cp311-macosx_10_9_x86_64.whl

Download URL wavelet_buffer-0.7.1-cp311-cp311-macosx_10_9_x86_64.whl
Size 748.5 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
621b73a9065dd3ce379c0516a99df651063cb32fb2158d93e3a6d0a2d777570f
BLAKE2b-256 checksum
How to use checksums
63cd0a744c9431262baaaa53b6c72cc5b5eb5b84980fd2867fc9e7b0665eb3c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp310-cp310-win_amd64.whl

Download URL wavelet_buffer-0.7.1-cp310-cp310-win_amd64.whl
Size 1.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
9f4ed85e7c6438ce9215e31f79c94054d9cc0fe9a89e52dc242d7bd2d058b59c
BLAKE2b-256 checksum
How to use checksums
5ac7049d3b9c35a0ec673f019241ba320c6eedc4223d3e25a62e342dbbf3231c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL wavelet_buffer-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 831.8 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d1424c7e9a51589be1cae3e38821327a3e63a683d7bbe62c2289274378c97e73
BLAKE2b-256 checksum
How to use checksums
a93ec8d12db099c20a5cbd201400d4cd61fcc4088119151cb9a67301f0533584
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp310-cp310-macosx_10_9_x86_64.whl

Download URL wavelet_buffer-0.7.1-cp310-cp310-macosx_10_9_x86_64.whl
Size 748.5 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
5a02bd1e4701b67280c6bab1b8f3409c2229596226a973c454f758db39d5cbd3
BLAKE2b-256 checksum
How to use checksums
38f51a1c53725fdeb078ebdb63a956b8bb0b035dc2d35148058b1cec872b29df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp39-cp39-win_amd64.whl

Download URL wavelet_buffer-0.7.1-cp39-cp39-win_amd64.whl
Size 1.4 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
995363dbef11d8964da501108b09f6c069c730cdf6252cf46e1dbdbf98646357
BLAKE2b-256 checksum
How to use checksums
11a2e4b57ac6e4a67a688268f5b17c293a0824be36f8fb019eee09fb08f2592d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL wavelet_buffer-0.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 832.1 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
1ebdb717952e5d16e597fb496422b4ed64b644c40ce1480f8ae27c219675ef20
BLAKE2b-256 checksum
How to use checksums
8e5f68b78fae5f791c4e9fd66c5aa0653c1c8c0dfe6a44eb9a5031fe70b743a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp39-cp39-macosx_10_9_x86_64.whl

Download URL wavelet_buffer-0.7.1-cp39-cp39-macosx_10_9_x86_64.whl
Size 748.6 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
75382c0e5fee4cfa98c086ef5b9c1c6959384955997af64bfa2bab7a778903e5
BLAKE2b-256 checksum
How to use checksums
71555dd141dc3c2abfa3edabbc36f81bbfba3ba0922fc8d7eb52d4c3647eaa0a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp38-cp38-win_amd64.whl

Download URL wavelet_buffer-0.7.1-cp38-cp38-win_amd64.whl
Size 1.4 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
2966085769323e37f0c0109d548b7c0fa35128cf9c8c247d558d289a9d2c722e
BLAKE2b-256 checksum
How to use checksums
f69f2f1322c0d613933ab4b58c309c67f13666d779ac4d03020be9027b839dda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL wavelet_buffer-0.7.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 831.7 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
86c2c2d35a5859e13a2c00a2e6544063424a594d71f2363241f1ec63e5491bac
BLAKE2b-256 checksum
How to use checksums
537abb47af629ec667f866b3869c478621abba230b0d34ddd495e2272b1ef0af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17

Release files / wavelet_buffer-0.7.1-cp38-cp38-macosx_10_9_x86_64.whl

Download URL wavelet_buffer-0.7.1-cp38-cp38-macosx_10_9_x86_64.whl
Size 748.5 kB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
8beb996e1f862eedd9e38a9a1a5fc9fb82b65bb31bab706968a1ecb9de58bc1d
BLAKE2b-256 checksum
How to use checksums
3830ad4c4127d67109f14d907e348b03026617b840ec0a03434b084f833b708e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.17
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page