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 experimental.

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 Still experimental.

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.6.1.tar.gz (74.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

crackle_codec-0.6.1-cp311-cp311-win_amd64.whl (214.4 kB view details)

Uploaded CPython 3.11Windows x86-64

crackle_codec-0.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (326.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

crackle_codec-0.6.1-cp311-cp311-macosx_11_0_arm64.whl (300.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

crackle_codec-0.6.1-cp311-cp311-macosx_10_9_x86_64.whl (385.4 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

crackle_codec-0.6.1-cp311-cp311-macosx_10_9_universal2.whl (669.4 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

crackle_codec-0.6.1-cp310-cp310-win_amd64.whl (214.4 kB view details)

Uploaded CPython 3.10Windows x86-64

crackle_codec-0.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (326.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

crackle_codec-0.6.1-cp310-cp310-macosx_11_0_arm64.whl (300.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

crackle_codec-0.6.1-cp310-cp310-macosx_10_9_x86_64.whl (385.4 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

crackle_codec-0.6.1-cp310-cp310-macosx_10_9_universal2.whl (669.4 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

crackle_codec-0.6.1-cp39-cp39-win_amd64.whl (213.7 kB view details)

Uploaded CPython 3.9Windows x86-64

crackle_codec-0.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (326.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

crackle_codec-0.6.1-cp39-cp39-macosx_11_0_arm64.whl (300.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

crackle_codec-0.6.1-cp39-cp39-macosx_10_9_x86_64.whl (385.6 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

crackle_codec-0.6.1-cp39-cp39-macosx_10_9_universal2.whl (669.7 kB view details)

Uploaded CPython 3.9macOS 10.9+ universal2 (ARM64, x86-64)

crackle_codec-0.6.1-cp38-cp38-win_amd64.whl (214.3 kB view details)

Uploaded CPython 3.8Windows x86-64

crackle_codec-0.6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (326.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

crackle_codec-0.6.1-cp38-cp38-macosx_11_0_universal2.whl (686.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ universal2 (ARM64, x86-64)

crackle_codec-0.6.1-cp38-cp38-macosx_11_0_arm64.whl (300.6 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

crackle_codec-0.6.1-cp38-cp38-macosx_10_9_x86_64.whl (385.3 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

crackle_codec-0.6.1-cp37-cp37m-win_amd64.whl (215.2 kB view details)

Uploaded CPython 3.7mWindows x86-64

crackle_codec-0.6.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (327.6 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

crackle_codec-0.6.1-cp37-cp37m-macosx_10_9_x86_64.whl (384.6 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

crackle_codec-0.6.1-cp36-cp36m-win_amd64.whl (215.2 kB view details)

Uploaded CPython 3.6mWindows x86-64

crackle_codec-0.6.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (326.8 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

crackle_codec-0.6.1-cp36-cp36m-macosx_10_9_x86_64.whl (384.7 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for crackle-codec-0.6.1.tar.gz
Algorithm Hash digest
SHA256 c407c9ef7f28b42d678271c3cef283fed57ca54bb0579103cb6b906364c2a7a8
MD5 cc22d12850e779753232338a6075440b
BLAKE2b-256 45bb181f6eda88f7be42a70cb7d089440474b8fbf8aa14d0e2b94d7a4a9b7b5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 30f8bbf9885a178a3b998570f6e3c85b943f7d6415c035fc1e430062e36a53c4
MD5 a27ca732e5ecbe1d3f500b47c838f48c
BLAKE2b-256 0e79ce42bf3eaa767050f4f8d5948167b5eb2f131e3a1fea7e603ce7862f6ff0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14ca103b8fc347fd2dd7508324d7d3828a7b4d0091665cba2bf0468f6f9b9c05
MD5 7216481c6fe0b6e5dc5f51923d311da2
BLAKE2b-256 46d81aa8cd41daea5f9aa7edc39ee00dc37a5e31ba74b3fe8d34dd3f287b86eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b3a45c6c2fd147aad2642b77a2667be960ac317b0a9e8d010988e00cb474c64f
MD5 dccf5f91e518956b5a82e967590e93fd
BLAKE2b-256 a560824fbd785b7c3651fd973a9e28c7bd24dad946aeafd970b3160c499276b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d21821dbdd79de45ff4d6691bc37827ab2448918ec5d5170b828d12a9060dfd8
MD5 96b18535b32ecf49d5e694af543e8c78
BLAKE2b-256 bb7ea5718582c75d0ddbbea552c4901ce8b0c9637586e883acc52d7745dbb8fb

See more details on using hashes here.

File details

Details for the file crackle_codec-0.6.1-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 060ae812680f5bd260ddf228d437df78c0731baf07478b0280e71f7febc05bce
MD5 073d5f4783f8a9ea12ce92b8cc43342e
BLAKE2b-256 505bea36888a5a2f3517f73eb7dc867f5538d20b33f2e0080e39426ad0134d19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d369d027152c779bbcf6e7dadddf6ef35d7a47da83df6535a2f0c9b04402a770
MD5 aa48107cbf1574236cc29b10c72248d3
BLAKE2b-256 2dea9d8b8c971f0bc6e0b55f2ffd86ac2b407980f792e1874a793ac9205fb719

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b5b19f9373f152a2de4ab3983f665ce3b6c2d93f558b5ca52262ec8c183b35b1
MD5 3913eaa05e993b8b4c5943517fc20828
BLAKE2b-256 c4edd7e9bc17340c5946a4bc0a5958315fb683da581d7a228c3b0472c96d68ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 202e5f26f3b497a25e73f776a18d0f77068db4e25d1e53b7516ad003b39d7afb
MD5 fb92961960663bf8e304f72685f2422b
BLAKE2b-256 85f1a126849cde6d3325c7616f74b8766915ef065dbd5a7f26e80e02c6f0c952

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a99e1e61115171d9d71e485582eaf8f624061b83ff30c45d39ac84762ab312b2
MD5 3894227d3b1662bd539ad9b4fb755cb4
BLAKE2b-256 62eb90b0cfcdacbc60a37253e06ecdbcfa0c770e7dce9301a13ca9a6b2d11f28

See more details on using hashes here.

File details

Details for the file crackle_codec-0.6.1-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 8d11b50848a40fc872c0e8048a32b0dde1ba89b764f30340ed15ef9e3f0fe287
MD5 9a041a605393f3ce9c01aa011b42ab38
BLAKE2b-256 f296be3708fbb61d0ca534666dc95eacf8c136f569a66bf0f4a7ac85871ad978

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 81a35a4706bbcda284850e5793591b2e4dd9b4de12a0f13a5ca7dc26b16a3dde
MD5 36e45aaa20fdfd9053e84209098b586b
BLAKE2b-256 b33fb1bedcef773ab43c112e482eb0d1701c1340980a767494778d6da8364917

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 63aeb4cb0a8edf64d0dab0e93ecb2c02104ace46b907970493ace38542c20b1b
MD5 e788d1427e03a4639320496b6516a76b
BLAKE2b-256 7e8db151accbfa738e2e065b26c5ed73de443e462ded8954389d2f448ad03a16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a2d82ca868fea4a68180668498723ae6a1998209b0167a7b298135cbff492b95
MD5 10efcbc36a72b74a08fc06d104491aa9
BLAKE2b-256 3802b38357e86b98567351b683b578ad2114276637976fc3835dd80465a01b7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e840571989908db6cade9f3e5b57e67a94b8cfbffdca917c451b085b88fb2571
MD5 05cd9cdaa01b26736196d1272747d10e
BLAKE2b-256 bd2fd70edfb78e7936813cda5a59eb0b1e4d8e015c1e899d8004d6e4d013e7ab

See more details on using hashes here.

File details

Details for the file crackle_codec-0.6.1-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 fe89bac9fa9b591d2e613937f07d9790982546604bea6dd1aed09c0be39e392c
MD5 a774dbb4abe3b40f83a08668a3a21980
BLAKE2b-256 9730d0b93fbbe6b5e638f4e09a0147f24bd2e087d6d11d86ef8a6efb13dda09e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 33e675feb459fbff441cea6d37d708bca18c7e5013292fe0b8705dc8f16dd5ac
MD5 5e351fa9e425efc86762d1c085b6085c
BLAKE2b-256 3a4aaa3bb972c7d2d4bf9a41fc9b3408e1d844c1f5f45996fec3f646003fde0d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4c54ee4f1ce54acfc340c0f2e95e9d5c071455f915dbee3583dbd53fcdd85115
MD5 56cbb444dc16e78c2408faad4304cb22
BLAKE2b-256 f610c53f47a6d9b6bd235bac06d22b5ad1663da00943bb82c567476526ad62bf

See more details on using hashes here.

File details

Details for the file crackle_codec-0.6.1-cp38-cp38-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 2f868f739f2e855095ef8f399f3c4b0ffa5e47977ea69abf9da7a651b8fd9bc6
MD5 693f10aa5d5117aeaece9ce29f2cb902
BLAKE2b-256 0ca5e9b0171b70cc8409f03fad1ed4e36ff2ff685ae3fe89291c7fd97acb5513

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f155fd752d677b94060b2a313101132800ef2a8960763b98e232b2c16dfbc3f
MD5 1569ee00566a08c14823f34741b8788f
BLAKE2b-256 34ed2f9e82e4745c3f1bd4144ada51b0ca6498b2799d47301f9ef9b830f9e51b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7ff9a244b95c999aaf8e2ae425bd270b71ff7259226240642ab74b1e05d87db1
MD5 8b8c898d241d896dd3bb64bbfb7c6c10
BLAKE2b-256 ee98907eb005e96c883da9475561fc12a14067018ab0181e94f1faf8836f9b77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 30eb2256a5ea55eab897581409547bdbd12f4aa155dde5efeda233d9986cf8c9
MD5 4d8fda1e63345ea35364ab1465ef8595
BLAKE2b-256 0c0e5582c726bfb86adfc655b68e3072f6d4eba89726d7d0337d61a17faf0f90

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14ed49bae50483f39e0464af443b7544ef65fc1f0190ff64286669b5ac299fc1
MD5 77d357ae7433a20279d9e366c4e37e07
BLAKE2b-256 ddaf10ecaae03b5983838883dca9692e6ab5d3cebde731a69084e3dbb1497eb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 92934302ddda8f13a0ea8a788897641a7c2513bf89f7aa2a61beb99c49e52bf0
MD5 bb968f91d76173bcdc8d92f3c69e76d7
BLAKE2b-256 703df2744fb73448fd4bf7473014615a7460f7c251213367c30626b03cb8d674

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 c54570abffdfd9fe9651b44ff0b38b4da4ec1bcab76a82ffe8a2ee103a25664e
MD5 b7b342a39c2a7c916a6518380d396c6b
BLAKE2b-256 08e64bf0964ab04cf6459eeb9d815e9d4b44b99c95d0a5f6bee2c0e30563f58b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dfb2cb99f89b08ba75a37e026f7eb60c23ff992aa2025d72554563d6fb6fee50
MD5 7dc53d6511c5e0daee720b78a0d33fa8
BLAKE2b-256 61395e14ea5d074c8511b9ed2b711122405300351d845337b1474d5b84d6b8ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.6.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1b47cf80f4ff43a8c1a74f8d5109dd2281d4ec562fdf2701c554c306699d508f
MD5 f5a8f64e1eb390ce37ca04d11e943fbf
BLAKE2b-256 20def8e696770d9c16534336b3895053049b82c37571997f79e6151cbee888c7

See more details on using hashes here.

Supported by

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