跳转到主要内容

C-Blosc2库的Python封装

项目描述

为极快Blosc2压缩库提供的Python封装

作者:

The Blosc开发团队

联系方式:

blosc@blosc.org

Github:

https://github.com/Blosc/python-blosc2

动作:

actions

PyPi:

version

NumFOCUS:

numfocus

行为准则:

Contributor Covenant

它是什么

C-Blosc2 是 C-Blosc 的最新主要版本,与 C-Blosc1 API 及其内存格式兼容。Python-Blosc2 是一个 Python 包,它封装了 C-Blosc2,即最新的 Blosc 压缩器版本。

目前,Python-Blosc2 已经复现了 Python-Blosc 的 API,因此可以作为直接替换使用。然而,为了实现完全兼容性,存在一些例外情况。

此外,Python-Blosc2 旨在充分利用 C-Blosc2 的所有功能,以支持超级块(SChunk)、多维数组(NDArray)、元数据、序列化和其他在 C-Blosc2 中引入的功能。

注意:Python-Blosc2 意在向后兼容 Python-Blosc 数据。这意味着它可以读取使用 Python-Blosc 生成的数据,但反之则不成立(即没有向前兼容性)。

SChunk:64位压缩存储

SChunk 是一个简单的数据容器,用于处理设置、扩展和获取数据和元数据。与块不同,超级块可以更新和调整其包含的数据的大小,支持用户元数据,并且没有 2 GB 的存储限制。

此外,您可以将 SChunk 转换为连续的序列化缓冲区(也称为 cframe),反之亦然;作为额外的好处,序列化和反序列化过程还可以以极高的速度与 NumPy 数组和 PyTorch/TensorFlow 张量一起工作。

Compression speed for different codecs

Decompression speed for different codecs

同时达到出色的压缩比。

Compression ratio for different codecs

如果您是 Mac M1/M2 用户,请使用其本机的 arm64 架构(是的,我们也在分发 Mac arm64 轮子;欢迎您 ;-)

Compression speed for different codecs on Apple M1

Decompression speed for different codecs on Apple M1

在以下博客文章中了解更多关于 SChunk 的功能:[https://www.blosc.org/posts/python-blosc2-improvements](https://www.blosc.org/posts/python-blosc2-improvements)

NDArray:多维存储

Python-Blosc2 中最新且最令人兴奋的添加之一是 NDArray 对象。它可以通过二维分区以极高的效率写入和读取 n 维数据集,允许以更精细的方式对任意大和压缩的数据进行切片和切块。

https://github.com/Blosc/python-blosc2/blob/main/images/b2nd-2level-parts.png?raw=true

为了激发您的兴趣,以下是 NDArray 对象在获取与 4 维数据集不同轴正交的切片时的表现。

https://github.com/Blosc/python-blosc2/blob/main/images/Read-Partial-Slices-B2ND.png?raw=true

我们已在博客中介绍了这一点:[https://www.blosc.org/posts/blosc2-ndim-intro](https://www.blosc.org/posts/blosc2-ndim-intro)

我们还有一个大约 2 分钟的解释视频,介绍了为什么切片在菠萝式(即双层分区)中很有用:[https://www.youtube.com/watch?v=LvP9zxMGBng](https://www.youtube.com/watch?v=LvP9zxMGBng)

Slicing a dataset in pineapple-style

安装

Blosc 现在为主操作系统(Windows、Mac 和 Linux)和平台提供 Python 轮子。您可以使用 pip 从 PyPi 安装二进制包。

pip install blosc2

文档

文档在这里

https://blosc.org/python-blosc2/python-blosc2.html

此外,一些示例可在以下位置找到

https://github.com/Blosc/python-blosc2/tree/main/examples

从源代码构建

python-blosc2 伴随 C-Blosc2 源代码,并可以在本地构建。

git clone https://github.com/Blosc/python-blosc2/
cd python-blosc2
git submodule update --init --recursive
python -m pip install -r requirements-build.txt
python setup.py build_ext --inplace

以上就是所有内容。现在您可以开始测试部分了。

测试

编译后,您可以通过运行测试来快速检查包是否正常。

python -m pip install -r requirements-tests.txt
python -m pytest  (add -v for verbose mode)

基准测试

如果您好奇,可以运行一个小基准测试,比较 Blosc 构建中不同压缩器对普通 NumPy 数组复制的压缩。

PYTHONPATH=. python bench/pack_compress.py

许可证

本软件采用3-Clause BSD许可证授权。python-blosc2许可证的副本可在LICENSE.txt中找到。

邮件列表

欢迎在Blosc列表中讨论此模块

blosc@googlegroups.com

https://groups.google.es/group/blosc

Twitter

请关注@Blosc2以获取最新进展信息。

引用Blosc

您可以将Blosc系列下的不同库的工作引用如下

@ONLINE{blosc,
  author = {{Blosc Development Team}},
  title = "{A fast, compressed and persistent data store library}",
  year = {2009-2023},
  note = {https://blosc.org}
}

祝您享受!

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分布

blosc2-2.7.1.tar.gz (5.1 MB 查看哈希值)

上传时间

构建分布

blosc2-2.7.1-cp312-cp312-win_amd64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

blosc2-2.7.1-cp312-cp312-win32.whl (2.0 MB 查看哈希值)

上传时间 CPython 3.12 Windows x86

blosc2-2.7.1-cp312-cp312-musllinux_1_2_x86_64.whl (4.8 MB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.2+ x86-64

blosc2-2.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ x86-64

blosc2-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.2 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

blosc2-2.7.1-cp312-cp312-macosx_11_0_arm64.whl (3.3 MB 查看哈希值)

上传于 CPython 3.12 macOS 11.0+ ARM64

blosc2-2.7.1-cp312-cp312-macosx_10_9_x86_64.whl (3.9 MB 查看哈希值)

上传于 CPython 3.12 macOS 10.9+ x86-64

blosc2-2.7.1-cp311-cp311-win_amd64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

blosc2-2.7.1-cp311-cp311-win32.whl (2.0 MB 查看哈希值)

上传于 CPython 3.11 Windows x86

blosc2-2.7.1-cp311-cp311-musllinux_1_2_x86_64.whl (4.8 MB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ x86-64

blosc2-2.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

blosc2-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

blosc2-2.7.1-cp311-cp311-macosx_11_0_arm64.whl (3.3 MB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

blosc2-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl (3.9 MB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

blosc2-2.7.1-cp310-cp310-win_amd64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

blosc2-2.7.1-cp310-cp310-win32.whl (2.0 MB 查看哈希值)

上传于 CPython 3.10 Windows x86

blosc2-2.7.1-cp310-cp310-musllinux_1_2_x86_64.whl (4.8 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ x86-64

blosc2-2.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

blosc2-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

blosc2-2.7.1-cp310-cp310-macosx_11_0_arm64.whl (3.3 MB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

blosc2-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl (3.9 MB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

由以下提供支持