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)

# faster extraction of binary images
binary_image = crackle.decompress(binary, label=1241)

# 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)
# check if label in array in log(N) time
has_label = crackle.contains(binary, label)

# 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 # log(N) check

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): DDSSCLLFGOOOOURR (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. U: if 0, unique labels are sorted, else, unsorted 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.
cc_per_grid smallest_type(sx * sy)[sz] Array containing the number of CCL IDs in each grid (usually a z-slice).
fmt_byte u8 00CCDDNN DD: 2^(DD) is the depth width NN: 2^(NN) is the num pins width, CC: 2^(CC) is the single components 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 |

Both num_pins and num_single_labels use the num_pins_width.

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

Uploaded Source

Built Distributions

crackle_codec-0.13.0-cp312-cp312-win_amd64.whl (210.0 kB view details)

Uploaded CPython 3.12 Windows x86-64

crackle_codec-0.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (327.6 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

crackle_codec-0.13.0-cp312-cp312-macosx_11_0_arm64.whl (287.4 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

crackle_codec-0.13.0-cp312-cp312-macosx_10_9_x86_64.whl (343.3 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

crackle_codec-0.13.0-cp311-cp311-win_amd64.whl (210.6 kB view details)

Uploaded CPython 3.11 Windows x86-64

crackle_codec-0.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (327.5 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

crackle_codec-0.13.0-cp311-cp311-macosx_11_0_arm64.whl (289.2 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

crackle_codec-0.13.0-cp311-cp311-macosx_10_9_x86_64.whl (345.0 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

crackle_codec-0.13.0-cp310-cp310-win_amd64.whl (209.8 kB view details)

Uploaded CPython 3.10 Windows x86-64

crackle_codec-0.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (326.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

crackle_codec-0.13.0-cp310-cp310-macosx_11_0_arm64.whl (288.2 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

crackle_codec-0.13.0-cp310-cp310-macosx_10_9_x86_64.whl (343.7 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

crackle_codec-0.13.0-cp39-cp39-win_amd64.whl (209.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

crackle_codec-0.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (326.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

crackle_codec-0.13.0-cp39-cp39-macosx_11_0_arm64.whl (288.3 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

crackle_codec-0.13.0-cp39-cp39-macosx_10_9_x86_64.whl (343.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

crackle_codec-0.13.0-cp38-cp38-win_amd64.whl (209.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

crackle_codec-0.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (326.3 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

crackle_codec-0.13.0-cp38-cp38-macosx_11_0_arm64.whl (288.1 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

crackle_codec-0.13.0-cp38-cp38-macosx_10_9_x86_64.whl (343.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

crackle_codec-0.13.0-cp37-cp37m-win_amd64.whl (210.9 kB view details)

Uploaded CPython 3.7m Windows x86-64

crackle_codec-0.13.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (326.7 kB view details)

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

crackle_codec-0.13.0-cp37-cp37m-macosx_10_9_x86_64.whl (343.1 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

crackle_codec-0.13.0-cp36-cp36m-win_amd64.whl (210.9 kB view details)

Uploaded CPython 3.6m Windows x86-64

crackle_codec-0.13.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (328.1 kB view details)

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

crackle_codec-0.13.0-cp36-cp36m-macosx_10_9_x86_64.whl (342.8 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: crackle-codec-0.13.0.tar.gz
  • Upload date:
  • Size: 78.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle-codec-0.13.0.tar.gz
Algorithm Hash digest
SHA256 2796386c6b702532578156272ccbf3debc9654253dfa22473e2172c9c7a30542
MD5 4085808c48ccc5148e8ab019cd716ddb
BLAKE2b-256 9548c62d8dace5f1e4ac436ff09a3b53d61872e6182e49ee1bc6dac7cac0509f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 210.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1da4ca4926edccd77267ab7f61acdb7e22d69318786ec8dc13a0c907c2eb9efe
MD5 a3234edd656b1d5a968080f0533fe9bd
BLAKE2b-256 3f2ce75ad7728c6ac0028b4f86c0f57e1a66923d1bd8a473aa4a3fa3564d2a6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 24fd7ea8fcaa07972faf3449089f0c7164eda597943cbe99390ca017700c5d9a
MD5 7274acb78ba312c83b78ee2f67b963bb
BLAKE2b-256 e7f82bed003be59454f71d7d0c7b32de6808a54e5c158b1a536914591ab1bb99

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 287.4 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 575dddf6982d0b48fe15f6a7e865ab42abc5d1ae4b34b5bd5d649ef264c9e766
MD5 acbd401c4fd393d215caf551024c7a59
BLAKE2b-256 8248a23650b483b82ebf7b95f7c86ec614738ba953434f744ca53e7ba6615d43

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp312-cp312-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 343.3 kB
  • Tags: CPython 3.12, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f895389a125d4fec0405ef8237de6944e49aa8165a9ceb9bed1b03cf72d4e7f2
MD5 7186753d2ddbc87cf7d3e429aa524d75
BLAKE2b-256 d8ae3049756936ba3830ec80b4814210e572ad03597c3b9deebfed6bd06aa196

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 210.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 34775d4d4dec2c7e9122861c9844d0704589d712a1793c7abb14d6d34c814580
MD5 f5d404a5bf0c969f88bfb7b0f845a949
BLAKE2b-256 d098c01295401f9d6b518ae13cf82ea3e8349adb18f06de04a3a771228169345

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a99723cfea3529ebbf2b44fae0c2acedbf7431badd62b0ba14f5049ffcda3071
MD5 5e2cc09a74ada5e811392f4757dc0280
BLAKE2b-256 b8688451105a52a3d7e00d607042c22cec279f417f4bf3a1c91f547e4d79be11

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 289.2 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 59c410a675c7f682696d743484d48fc93fed40f97d3771e4e7346d9ee868a78b
MD5 e994061dd841886a803f36e9576c5d67
BLAKE2b-256 cdb7d670e8ac9915907ddbd5daf3b9b367d0c378ef51ff3c369d1bff14d57655

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp311-cp311-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 345.0 kB
  • Tags: CPython 3.11, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b0223232543736a97ba5bc4df9cbec1358bae7a54dd40d0b7096875fbe2297b2
MD5 08cc2233595c65f2f155b357683d835d
BLAKE2b-256 77d3353c550e07cc21b4ba7f87d005ba0695b03a2ad295d2b756e48b1bf31c7f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 209.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7517a7d498c0f472c9311eb6771fb72479ca3cee3697f9a76834c47284ba19f8
MD5 17e099ab0c02aba17c334739fb9352ce
BLAKE2b-256 3b80c95ea23ac1fbb909dee0b57e3c54ddc1b91eb6680d0c80858aab70af8d23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 166e4f9e38b7e78c361a91d1a68c1478d66eabf86a1cc49917c5409216f001d2
MD5 0ece014b5ff2cc9ae058e74084917bcb
BLAKE2b-256 584214a5760e0cc46eaed72294c30b56d45791e2d67a239ce0fad192e70ea178

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 288.2 kB
  • Tags: CPython 3.10, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5638e222e80574e9532848dcbaf00ae7050f866ac5afe2623e81b33be3f0fb04
MD5 29cf6d2ba77bbb958e6d755a77dd35b9
BLAKE2b-256 25a900246578af5f4b19df675a8166b08fdb5266d9643cf210e8ce36cdd011fb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 343.7 kB
  • Tags: CPython 3.10, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e15ba163277035954b35cbf9ee90f39eed02ed54dd8bd2f718db750a481fcf39
MD5 6dd99a71b34dacbe274321a2bba7f5ef
BLAKE2b-256 633dd4cb317eca93e1a9d31f2b8863ced2e26f2760e4cafcbc94cb588860366b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 209.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c2461ff24aafe4907693cd0f464c144c09c20edc22255a4bc564f65e4b065771
MD5 48d58c0f19ccc374b130d92dc05d4347
BLAKE2b-256 fa847365d3d53c8d37a9abe235e7c9759ab76f983b651af8eab12873372b136c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02c1a8cf9ed86b1cdd0cb0408a22e75561dfe94aaf016ae8807ce4d1ccf45e37
MD5 52e3a0d28c6cfc4d79ca885ba740379f
BLAKE2b-256 2df8576e1e916ec4b36423099fd480c3c14172c4221e567667e7ba9496ad1626

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 288.3 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 45e85e132b4d982e2aea1defeb069532e5b368e6e4ae1a115100ab968cadf16a
MD5 59072d7951baffd7d1f6fd7a02d3858d
BLAKE2b-256 a01222d18e5c602cfbd5e92dbfa3b6707a28855e53de240e5aa89d2bdb78ee8c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 343.8 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0f7cced3014d6ad9ebee0991d115c08b5ba752895f12662b95be30ec6a851840
MD5 473a5c5d6d73d74a77b1be68ec80dee9
BLAKE2b-256 672a4e4d599808f19c27b909413e2443ad7f9bab64eb6c11dffa9e23b326eed8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 209.9 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 dbde59bc28e5bef9d532fe8e9db90d50fe326c1bfdc2ee9891a153f67cad29e3
MD5 8bc301de5c6947eaa66522e960ed8474
BLAKE2b-256 b6d408a51dff61838bbad7d7e19519e67731209971bce07b274cec00341ff9ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f9cec60d0d57a8d23e75a071564c263958e170506097c964e1e275a11a8779c8
MD5 a15aecdd7975687780d81f9439effa2f
BLAKE2b-256 6fcecf0da51565a7c8502ac043d6e6746651fddae9f214d13743e5f4a4c5bf44

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 288.1 kB
  • Tags: CPython 3.8, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6f799a4dd2fc5c54e386ca67914dfabf9ceaeed938dbe3996ad4dee00dd8b00
MD5 13b11ceeb4b144d602dcd60fa4868ddd
BLAKE2b-256 c4dc9fc36ef2628dc446bf075a8f6a21a3d166ef88b7b650030e4bb9b6e597c9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 343.6 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a19f1495e3b556b220482b199372aec087017d189d557e61bd2713eb4022d9b1
MD5 c9a821a3071bd433ac729caac2789f86
BLAKE2b-256 98daf9996a7a26921ad2c20ee6b9959cd81ea62e6636a53190c12e2b5e13aaf3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 210.9 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 438d01a701b51345fb7965cc98200e97bdbc63caa6e50b109a533556ba3652ea
MD5 a5376773e496d9aa9ff93e297b7913c3
BLAKE2b-256 13beaee9bdb44c39291e89025ccb2aedc1ca18662d34867a60bc3a7c94cd5a37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.13.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 af221acf5c08e387a6329af848b9cb6488eee151e94da069b03927cfae594a73
MD5 57ab85dad6d71548c989c807fbfe15a1
BLAKE2b-256 7b78f9b01453132b79ed489aedf67383ca2c2cf788de213f8c674647e1dbebf2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 343.1 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 816cc8f73bc0883d616a1cdc1fd368287757b37a1e724078a58247b4084c210f
MD5 8d39f7d6f073dbefcf5a0bb0e42d1fc3
BLAKE2b-256 cb0ec2996814d712ab4de4892f4187f8ce08fed5c5f2a0f874c90ab3dd30f0fd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 210.9 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 600d367203f83dddefb580ac6e0a4c60d91d8b11d0049fffab6e6b9d1c645593
MD5 d7ee83276066127b9c7e2c62b71e1fd2
BLAKE2b-256 d9f48fa74dc0c604461f2e98bd3183c5455cb2761625e19b33f40ca87619aec6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.13.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b0959060f1a1bd4f3fbd4d6544e7af40e7300e7888f82bfd47faae39a094e8db
MD5 06f7fc3db77911302fc7d6361842d14b
BLAKE2b-256 932a0ab26376f5926b9400676e23049ffadd4fb72a0af6e454b3d72f4b37025e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.13.0-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 342.8 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.13.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 993bd574935ec3d5f1faa7c4c601c01d2fdef1835ee5414eefc2a16ec2b32f64
MD5 1a39de4398d5bcae2c817b21f1f4f9dd
BLAKE2b-256 8636dd5e23f2520272e88731ea930e8304fed6211dffd10aceb07d5a0e0b19fb

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