Skip to main content

Crackle 3D dense segmentation compression codec.

Project description

PyPI version

Crackle: Next gen. 3D segmentation compression codec.

# Command Line Interface
crackle data.npy # creates data.ckl
crackle -m 5 data.npy # use a 5th order context model
crackle -d data.ckl # recovers data.npy
import crackle
import numpy

labels = np.load("example.npy") # a 2D or 3D dense segmentation

binary = crackle.compress(labels, allow_pins=False, markov_model_order=0)
labels = crackle.decompress(binary)

# get unique labels without decompressing
uniq = crackle.labels(binary) 
# get num labels without decompressing
N = crackle.num_labels(binary) 
# get min and max without decompressing
mn = crackle.min(binary)
mx = crackle.max(binary)

# Remap labels without decompressing. Could
# be useful for e.g. proofreading.
remapped = crackle.remap(
  binary, { 1: 2, 2: 3, ... },
  preserve_missing_labels=True
)

# change dtype to smallest possible w/o precision loss
remapped = crackle.refit(binary)
# renumber array and change dtype to smallest possible
remapped = crackle.renumber(binary, start=0)

# for working with files
# if .gz is appended to the filename, the file will be
# automatically gzipped (or ungzipped)
crackle.save(labels, "example.ckl.gz")
labels = crackle.load("example.ckl.gz")

arr = crackle.CrackleArray(binary)
res = arr[:10,:10,:10] # array slicing (efficient z ranges)
20 in arr # highly efficient search

This repository is currently Beta. It works and the format is reasonably fixed. There may be some improvements down the line (such as 3d compression of crack codes), but they will be a new format version number.

Crackle is a compression codec for 3D dense segmentation (labeled) images. The algorithm accepts both signed and unsigned integer labels (though the implementation currently has some restrictions on signed integers). It is written in C++ and has Python bindings. Crackle uses a two pass compression strategy where the output of crackle may be further comrpessed with a bitstream compressor like gzip, bzip2, zstd, or lzma. However, if the Crackle binary, which is already small, is not further compressed, it supports several efficient operations:

  • Query if a label exists in the image
  • Extract unique labels
  • Remap labels
  • Decode by Z-Range

Crackle is inspired by Compresso [1]. Compresso innovated by separating labels from boundary structures. There were conceptually four (but really five) elements in the format: header, labels, bit packed and RLE encoded binary image boundaries, and indeterminate boundary locations.

Crackle improves upon Compresso by replacing the bit-packed boundary map with a "crack code" and can also use 3D information to reduce redundancy in labels using "pins".

See benchmarks for more information on Crackle's size and compute effiency.

Versions

Major Version Format Version Description
1 0 Initial release w/ flat, pins, crack codes with finite context modeling. Beta.

Stream Format

Section Bytes Description
Header 24 Metadata incl. length of fields.
Crack Index header.sz * sizeof(uint32) Number of bytes for the crack codes in each slice.
Labels header.num_label_bytes Can be either "flat" labels or "pins". Describes how to color connected components.
Crack Codes Variable length. Instructions for drawing crack boundaries.

Header

Attribute Value Type Description
magic crkl char[4] File magic number.
format_version 0 u8 Stream version.
format_field bitfield u16 See below.
sx, sy, sz >= 0 u32 x 3 Size of array dimensions.
grid_size log2(grid_size) u8 Stores log2 of grid dimensions in voxels.
num_label_bytes Any. u32 Number of bytes of the labels section. Note the labels come in at least two format types.

Format Field (u16): DDSSCLLFGOOOORRR (each letter represents a bit, left is LSB)

DD: 2^(DD) = byte width of returned array (1,2,4,8 bytes)
SS: 2^(SS) = byte width of stored labels (sometimes you can store values in 2 bytes when the final array is 8 bytes)
C: 1: crack codes denote impermissible boundaries 0: they denote permissible boundaries.
LL: 0: "flat" label format, 1: fixed width pins (unused?) 2: variable width pins 3: reserved
F: whether the array is to be rendered as C (0) or F (1) order G: Signed (if (1), data are signed int, otherwise unsigned int) OOOO: Nth-Order of Markov Chain (as an unsigned integer, typical values 0, or 3 to 7). If 0, markov compression is disabled. R: Reserved

Flat Label Format

Attribute Type Description
num_unique u64 Number of unique labels in this volume.
unique_labels stored_type[num_unique] Sorted ascending array of all unique values in image, stored in the smallest data type that will hold them.
cc_per_grid smallest_type(sx * sy)[sz] Array containing the number of CCL IDs in each grid (usually a z-slice).
cc_to_labels smallest_type(num_labels)[sum(cc_per_grid)] Array mapping CCL IDs to their proper value by indexing the unique labels array.

Flat labels are random access read, allow efficient reading of unique labels, efficient remapping, and efficient search for a given label's existence. Since the connected component labels can often use a smaller byte width than the unique values, even noise arrays can see some value from compression.

Encoding flat labels is fast.

Condensed (Variable Width) Pins Label Format

Attribute Type Description
background_color stored_data_width Background color of image.
num_unique u64 Number of unique labels in this volume.
unique_labels stored_type[num_unique] Sorted ascending array of all unique values in image, stored in the smallest data type that will hold them.
fmt_byte u8 0000DDNN DD: 2^(DD) is the depth width NN: 2^(NN) is the num pins width
pin_section Bitstream to end of labels section. Contains pin information.

PIN SECTION: | PINS FOR LABEL 0 | PINS FOR LABEL 1 | ... | PINS FOR LABEL N |

PINS: | num_pins | INDEX_0 | INDEX_1 | ... | INDEX_N | DEPTH_0 | DEPTH_1 | ... | DEPTH_N | num_single_labels | CC 0 | CC 1 | ... | CC N |

Note that INDEX_0 to INDEX_N are stored with a difference filter applied to improve compressibility.

A pin (color, position, depth) is a line segment that joins together multiple connected component IDs and labels them with a color (an index into UNIQUE LABELS) in order to use 3D information to compress the labels as compared with the flat label format. Pins are slow to compute but fast to decode, however random access is lost (a full scan of the labels section is needed to decode a subset of crack codes). The most frequent pin is replaced with a background color. Like with flat, efficient reading of unique labels, efficient remapping, and search are supported.

Depending on the image statistics and quality of the pin solver, pins can be much smaller than flat or larger (some heuristics are used to avoid this case). An excellent example of where pins do well is a binary image where remarkable savings can be achieved in the labels section (though overall it is probably a small part of the file).

For very short pins (e.g. depth 0 or 1) that take more bytes to record than simply listing the corresponding CC label, we list the CC label instead. This calculation is made depending on the dimensions of the image and the max pin depth, and the byte width of the CCL labels.

Example calculation. For a 512 x 512 x 32 file with an average of 1000 CCL's per a slice and a maximum pin depth of 30, a pin takes 4 index + 1 depth = 5 bytes while a CCL takes 2 bytes. Therefore, depth 1 and 2 pins can be efficiently replaced with 1 and 2 CCL labels for a 60% and 20% savings respectively. CCLs are also difference coded to enhance second stage compressibility.

Fixed Width Pins (disabled)

| BACKGROUND COLOR (STORED_DATA_WIDTH) | NUM_LABELS (u64) | UNIQUE LABELS (NUM_LABELS \* STORED_DATA_WIDTH) | PIN SECTION |

PIN SECTION: |PIN0|PIN1|PIN2|...|PINN| PIN: |LABEL|INDEX|DEPTH|

A fixed width variant of pins has also been developed but is not enabled. It frequently is not significantly smaller than flat outside of special circumstances such as a binary image. An advantage this format would have over condensed is that the pins can be sorted and searched rapidly by index, which reduces the amount of reading one might have to do on an mmapped file. Please raise an issue if this seems like something that might be useful to you.

Crack Code Format

CRACK CODE: MARKOV MODEL | CHAIN 0 | CHAIN 1 | ... | CHAIN N |

CHAIN: | BEGINNING OF CHAIN INDEX (sizeof(sx * sy)) | BIT PACKED MOVES (2 bits each) |

MARKOV MODEL (if enabled): priority order of moves UDLR packed per a byte. 4^order bytes.

The BEGINNING OF CHAIN INDEX (BOC) locates the grid vertex where the crack code will begin. Vertices are the corners of the pixel grid, with 0 at the top left and sx*sy-1 at the bottom right (fortran order).

The crack code is a NEWS code (up,right,left,down). Impossible combinations of directions are used to signal branching and branch termination. The next chain begins in the next byte when a termination signal causes the current branch count to reach zero.

There may be ways to further improve the design of the crack code. For example, by applying a difference filter a few more percent compression under gzip can be obtained. In the literature, there are other shorter codes such as a left,right,straight (LRS) code and fancy large context compressors that can achieve fewer than one bit per a move.

Boundary Structure: Crack Code

Our different approach is partially inspired by the work of Zingaretti et al. [2]. We represent the boundary not by border voxels, but by a "crack code" that represents the edges between voxels. This code can be thought of as directions to draw edges on a graph where the vertices are where the corners of four pixels touch and the edges are the cracks in between them.

Since this regular graph is 4-connected, each "move" in a cardinal direction can be described using two bits. To represent special symbols such as "branch" and "terminate", an impossible set of instructions on an undirected graph such as "left-right" or "up-down" can be used (occupying 4 bits). In order to avoid creating palendromic sequences such as (3, 0, 3) meaning (down, branch) but can be read (terminate, down), we can use the left-right impossible directions to rewrite it as (3, 2, 1).

While the image is 3D, we treat the image in layers because working in 3D introduces a large increase in geometric complexity (a cube has 6 faces, 12 edges, and 8 corners while a square has 4 edges and 4 corners). This increase in complexity would inflate the size of the crack code and make the implementation more difficult.

Label Map: Method of Pins

Each 2D CCL region must has a label assigned. Due to the 2D nature of the crack code, we cannot use 3D CCL. However, for example, a solid cube of height 100 would need 100 labels to represent the same color on every slice as in Compresso.

It is still possible to reduce the amount of redundant information even without 3D CCL. For each label, we find a set of vertical line segments ("pins") that fully cover the label's 2D CCL regions. Sharp readers may note that this is the NP-hard set cover problem.

Once a reasonably small or minimal set of pins are found, they can be encoded in two forms:

Condensed Form: [label][num_pins][pin_1][pin_2]...[pin_N] Fixed Width Form: [label][pin_1][label][pin_2]...[label][pin_N] Pin Format: [linear index of pin top][number of voxels to bottom]

Fixed width example with label 1 with a pin between (1,1,1) and (1,1,5) on a 10x10x10 image: [1][111][4]

An alternative formulation [label][idx1][idx2] was shown in an experiment on connectomics.npy.cpso to compress slightly worse than Compresso labels. However, this alternative formulation theoretically allows arbitrary pin orientations and so might be useful for reducing the overall number of pins.

The condensed format is a bit smaller than the fixed width format, but the fixed width format enables rapid searches if the set of pins are sorted by either the label (enables fast label in file) or the likely more useful sorting by top index to filter candidate pins when performing random access to a z-slice.

References

  1. Matejek, B., Haehn, D., Lekschas, F., Mitzenmacher, M., Pfister, H., 2017. Compresso: Efficient Compression of Segmentation Data for Connectomics, in: Descoteaux, M., Maier-Hein, L., Franz, A., Jannin, P., Collins, D.L., Duchesne, S. (Eds.), Medical Image Computing and Computer Assisted Intervention − MICCAI 2017, Lecture Notes in Computer Science. Springer International Publishing, Cham, pp. 781–788. https://doi.org/10.1007/978-3-319-66182-7_89

  2. Zingaretti, P., Gasparroni, M., Vecci, L., 1998. Fast chain coding of region boundaries. IEEE Transactions on Pattern Analysis and Machine Intelligence 20, 407–415. https://doi.org/10.1109/34.677272

  3. Freeman, H., 1974. Computer Processing of Line-Drawing Images. ACM Comput. Surv. 6, 57–97. https://doi.org/10.1145/356625.356627

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crackle-codec-0.7.2.tar.gz (76.0 kB view details)

Uploaded Source

Built Distributions

crackle_codec-0.7.2-cp312-cp312-win_amd64.whl (216.0 kB view details)

Uploaded CPython 3.12 Windows x86-64

crackle_codec-0.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (329.9 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

crackle_codec-0.7.2-cp312-cp312-macosx_11_0_arm64.whl (298.1 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

crackle_codec-0.7.2-cp312-cp312-macosx_10_9_x86_64.whl (380.1 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

crackle_codec-0.7.2-cp311-cp311-win_amd64.whl (216.4 kB view details)

Uploaded CPython 3.11 Windows x86-64

crackle_codec-0.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (329.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

crackle_codec-0.7.2-cp311-cp311-macosx_11_0_arm64.whl (300.1 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

crackle_codec-0.7.2-cp311-cp311-macosx_10_9_x86_64.whl (382.2 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

crackle_codec-0.7.2-cp310-cp310-win_amd64.whl (215.8 kB view details)

Uploaded CPython 3.10 Windows x86-64

crackle_codec-0.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (328.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

crackle_codec-0.7.2-cp310-cp310-macosx_11_0_arm64.whl (298.9 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

crackle_codec-0.7.2-cp310-cp310-macosx_10_9_x86_64.whl (380.8 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

crackle_codec-0.7.2-cp39-cp39-win_amd64.whl (215.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

crackle_codec-0.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (328.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

crackle_codec-0.7.2-cp39-cp39-macosx_11_0_arm64.whl (299.0 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

crackle_codec-0.7.2-cp39-cp39-macosx_10_9_x86_64.whl (380.9 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

crackle_codec-0.7.2-cp38-cp38-win_amd64.whl (215.8 kB view details)

Uploaded CPython 3.8 Windows x86-64

crackle_codec-0.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (328.7 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

crackle_codec-0.7.2-cp38-cp38-macosx_11_0_arm64.whl (298.9 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

crackle_codec-0.7.2-cp38-cp38-macosx_10_9_x86_64.whl (380.4 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

crackle_codec-0.7.2-cp37-cp37m-win_amd64.whl (216.9 kB view details)

Uploaded CPython 3.7m Windows x86-64

crackle_codec-0.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.8 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

crackle_codec-0.7.2-cp37-cp37m-macosx_10_9_x86_64.whl (380.1 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

crackle_codec-0.7.2-cp36-cp36m-win_amd64.whl (216.8 kB view details)

Uploaded CPython 3.6m Windows x86-64

crackle_codec-0.7.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.1 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

crackle_codec-0.7.2-cp36-cp36m-macosx_10_9_x86_64.whl (379.8 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file crackle-codec-0.7.2.tar.gz.

File metadata

  • Download URL: crackle-codec-0.7.2.tar.gz
  • Upload date:
  • Size: 76.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for crackle-codec-0.7.2.tar.gz
Algorithm Hash digest
SHA256 c69d64dd7f9022028f853a335513e0dcebdf72114aa9ba65bb5c2e6fd1a40eab
MD5 367851d01386373ab4492b6268652b02
BLAKE2b-256 d61feb5925223f7cbb9ba9cc88b8e2bdc20a6b59304a642189ed2d706290bdf1

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 55b201383a0e33fd9c4d180eb42b0b9d487b9cdb6b91646214a113767bf2e0c5
MD5 fa2fd91a8a3056e94a442310973765b4
BLAKE2b-256 3fafcae51da7999ace211c414d43f264f98a3fc0c16bc484eed6a776c6c395c3

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a926bc779e1bbb4c37b2b29a38ced9556ca85184de3d8be4eb377f488ce06798
MD5 c21657e1d291ad23772e96bf057cf572
BLAKE2b-256 cbb2bdf988d1ac243f487bd8db26bf9cfbb9f03ae9e9712e3ba06254d85edb33

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 08cbc87252cfc2845c2143c2f52ef17f8d2895a0928fc3a286a9163f161db7fb
MD5 351b692b62eea0d8c8dbe20ccc57f30e
BLAKE2b-256 f96f61dee85d353d0e9bd572c9acc538dad3f6c67a71f5ce861ba2c196536160

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c9747456b7cba65db0f9e702d84e8f21960918c0bea9154f0c4788b80658659f
MD5 ac55890153a8c1de4981afe781701ad4
BLAKE2b-256 30e74fc0b18dc4da801bfaa1366e0a22ce754ea9aa5c58bf53121f7ce256b9fc

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3fb9bcb03164c80b6ad06850f5cb19d21fa1ef07bd17c49d2dc81a09d37c8317
MD5 4e04154ced75be025c3aa212a1553ed4
BLAKE2b-256 bf7b07b694d934d2f946a1d477f8441c36854dd0b42fd20e8a36298b53a45d43

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c79357126dd8110be3bab9c92fac5a982ee8a8c072bcecbe97cf90a5051aa4fb
MD5 025656cd1b6fb72739adb4008fb68e90
BLAKE2b-256 726f80e33130f67dfdb6f538296668d5a2ffb315e7935b367519f600e53f261a

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f0e16e6880c9ae26a14baf7438367678fb2f857beabd56c01d0f1c33023244c5
MD5 f72f9b87f403e5628518989218af9db7
BLAKE2b-256 b3c808d9bb506b708f225be37d31f880dc21a8be1f67e5ccbf1eaafda2c80899

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4027830a2a8c23c106e5769a71c2cfdf3e81e463e705979e214ba275f63208c8
MD5 56a9839e719c1ac7fc220eca7170afb8
BLAKE2b-256 27afe62d7526656efcad9e747bd841a8f1153280e2a2f594d062711aa99d9fc0

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 81cc7a475a20d4923af1915d6c37557da747f3eef9a0c990f71a7c46f98fffb8
MD5 fdfcfb0333f544e3a11281216872da12
BLAKE2b-256 2d24540b51de6ef0faa28d98207a57f5be1e335ed78729b95a73b96b86a4de9f

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 17606eed6d6dea757a95d866569aa5e412eed98a3f3c1eff765bfd007930f08c
MD5 442927b4e7c3b71f01f0c8dda0077f7b
BLAKE2b-256 44e8d524818e1dbf7f8b8a8e152ad60714d68f8469d50bb4264c3ba740fc5ec9

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a2e19b0101c78a725cd38dbb89d9dd9a845b2d56dcd032992b135910827b9cc
MD5 d4a3d679d9ffac06874d932454481e63
BLAKE2b-256 a366ab115c322ac916d6c29d176786031b223319697c90d4f8e3dfa6c3d9651e

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 338588fca51c3b0abfd21bc1dbdf097063fa0d9ee3123bd72ceb72e143513e22
MD5 37cf31eb60c4f44b56a1c718b4db99d1
BLAKE2b-256 0e246fe66217264a63ff48f8730de875d613205769210fd167eb0d8f149df7c1

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 084b5121f07bb566a137604d3f680716a76d3abc9dc0fe71ab27695ce650e045
MD5 3476df6139ec75bb49d09ddd9831bce2
BLAKE2b-256 b69842d377091e412fad63d42bc25e3f9927492a20a6688cae1542113a12e720

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 63a4e58a4c52229261c30a1ee950f554becd0bd3a2dc4488c87a446689511b28
MD5 1d1875f67aacad69895b59ee4ca95b12
BLAKE2b-256 95f1b2fcb62e95fd8ab9d318d05386911074a95121a9bd66a68c724a756277bd

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 874a87f4a4c49de11a69064dfedbf2e4dc197b88de3a8ab8ceb6c005501a28c7
MD5 74b75e50f2ceb89e676a075ecb977963
BLAKE2b-256 f35e9b35b1a5bc347efd7a8b140cb2648903952b86683c5610f6081b06b052d5

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7372b06bcba519f913a84f1a538d1f6ee35671a389b26e2fbd4a226687c7395c
MD5 c40dab3e63b799900fe54cdf42a4114c
BLAKE2b-256 ffbd2254a968d09c7ca5b4b57b3d6dd93c2fca40e76447dbf3aaab1668efa47d

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 84a09d2547a28a8924aa31d98739802dbc58966b0b5f0c8c73f1247645ec1a1c
MD5 e9015b6ba51262019885f94f4a5e7653
BLAKE2b-256 5aed1f8ed15d3da00b300fed1c3f2d9cf3d02405fa61e8ef7bae892309ef3d64

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d771109fdfc7c1e686fb3534f466775d857f8d914b88cfbe1ba0a7b3fabd09b
MD5 ee1bf8196bb4f4e6ffc631fe93d2c3bc
BLAKE2b-256 18b695507cdc887afce70da2747164c085b793a3592bc2b63e440aae6d1e878d

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5341085e2be02893265b5640c9d14ca9f827be4964e0726c19c3320d881a16f9
MD5 e8d65c7965d99b70beeff94cf834cc78
BLAKE2b-256 fdfbeb7b5874c6e21edb56bb0a9fdf19141a4130c5393e8845f0cc62975472fc

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 58b0d34fc21e54c036648fbf652ff8d498d18122db816df3196915322278dcc5
MD5 196297a9d286e9db96740bd72e635d96
BLAKE2b-256 e4a37ad4af4f9a228b569676180a4d00d8f66e7db6b4e4a9fb0a68e65dd9aece

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 ebc7d7126a68b9e394a194e6760f2336df50bec9d34455eda5714bec34a04323
MD5 de0b4fb13c7dc32139af9aaa16411dca
BLAKE2b-256 81ed3972a6d38444762809e596ee6548288600127e67b91858620279e6691594

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 34f8ade5947cc769e9927320a2565a112c10dfd7880a4fa8612046b712f77636
MD5 f90eda1d6834b38df0b563ac296ad0bc
BLAKE2b-256 4c09b98fe6ba06285ccba8f50b57aa2b36fc340fb6af382ca0f5e3c22a60d185

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4a8d950c1615edc3aa5c4770294f932e8e0c435f9a3a353f265c928464b44aba
MD5 6312e0eb565c85a7549fa6ec81acf515
BLAKE2b-256 99dc7b26d7dc09624443d5a3348aa1754140e7ffb5da206e688e33b940a0eda1

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 054b5d053b68a5ea05766254f3586445c1e789e868d8d637824746be66abf75d
MD5 72019c81f850ecbf65e45d3418247b55
BLAKE2b-256 a57554f9c32c67a7f265f0abb37b19478d32259b0d392f067bfdc10c19315104

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 abd47b33607254f076ee8e7deaeb519dc85cfa81f263cb93b7497cf856dfe5a6
MD5 a0243772393da04b5d3fc76d716f1824
BLAKE2b-256 22bee7a563212e588061ca2167aafe2ef3676833f0f2fc56e1a47fb68e805740

See more details on using hashes here.

File details

Details for the file crackle_codec-0.7.2-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.7.2-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 48078219d94adce19fd0aea770653fec6d56eb83eb4760d87ffe52ef4a0713c7
MD5 d8fa6b6f59f570f533866fab1d0a0692
BLAKE2b-256 918e3e475679f036baa5c0476a1cd485e623156bb7551c04d7497eb0f6739a9c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page