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.11.0.tar.gz (77.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.11.0-cp312-cp312-win_amd64.whl (213.0 kB view details)

Uploaded CPython 3.12Windows x86-64

crackle_codec-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (329.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

crackle_codec-0.11.0-cp312-cp312-macosx_11_0_arm64.whl (286.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

crackle_codec-0.11.0-cp312-cp312-macosx_10_9_x86_64.whl (341.2 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

crackle_codec-0.11.0-cp311-cp311-win_amd64.whl (213.5 kB view details)

Uploaded CPython 3.11Windows x86-64

crackle_codec-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (328.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

crackle_codec-0.11.0-cp311-cp311-macosx_11_0_arm64.whl (288.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

crackle_codec-0.11.0-cp311-cp311-macosx_10_9_x86_64.whl (342.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

crackle_codec-0.11.0-cp310-cp310-win_amd64.whl (212.7 kB view details)

Uploaded CPython 3.10Windows x86-64

crackle_codec-0.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (327.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

crackle_codec-0.11.0-cp310-cp310-macosx_11_0_arm64.whl (287.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

crackle_codec-0.11.0-cp310-cp310-macosx_10_9_x86_64.whl (341.7 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

crackle_codec-0.11.0-cp39-cp39-win_amd64.whl (212.0 kB view details)

Uploaded CPython 3.9Windows x86-64

crackle_codec-0.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (328.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

crackle_codec-0.11.0-cp39-cp39-macosx_11_0_arm64.whl (287.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

crackle_codec-0.11.0-cp39-cp39-macosx_10_9_x86_64.whl (341.9 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

crackle_codec-0.11.0-cp38-cp38-win_amd64.whl (212.7 kB view details)

Uploaded CPython 3.8Windows x86-64

crackle_codec-0.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (327.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

crackle_codec-0.11.0-cp38-cp38-macosx_11_0_arm64.whl (287.5 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

crackle_codec-0.11.0-cp38-cp38-macosx_10_9_x86_64.whl (341.6 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

crackle_codec-0.11.0-cp37-cp37m-win_amd64.whl (213.8 kB view details)

Uploaded CPython 3.7mWindows x86-64

crackle_codec-0.11.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (327.5 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

crackle_codec-0.11.0-cp37-cp37m-macosx_10_9_x86_64.whl (341.2 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

crackle_codec-0.11.0-cp36-cp36m-win_amd64.whl (213.8 kB view details)

Uploaded CPython 3.6mWindows x86-64

crackle_codec-0.11.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (327.8 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

crackle_codec-0.11.0-cp36-cp36m-macosx_10_9_x86_64.whl (340.8 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: crackle-codec-0.11.0.tar.gz
  • Upload date:
  • Size: 77.8 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.11.0.tar.gz
Algorithm Hash digest
SHA256 fcfd3ebdf6b6feecf41433d0c355d17fa6b395465ff5f66e4b5ffdcb0ad978ef
MD5 ffdf11f82231a967164c1264b92931c8
BLAKE2b-256 bb17efb68a614f268075bb821f78cd6e7a1892397a2898836e6cfd427f08cd67

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 213.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.11.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 65ad8f14c2e17d1f6a32c51e44f3148d82d621b4b50a76f2dbb1319782029a4d
MD5 6bf38166274cc9ad2135565193b9c480
BLAKE2b-256 b2b4a82d5ee385e68b009a65c5b445001912b5ff218a146a8a58674ad3d33cd3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 26a8a0580188295abec41143ef4478613eb02bf8a2ab464332658cdda97caa82
MD5 e9efb95ba909e708d1ee581ca2bfedcc
BLAKE2b-256 739ec7dd46374d9aede1fd812a427b46b42452f3eca727fccacaa0f309fa2a16

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 286.6 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.11.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76bbff98f396dc95ce6b44fbffd8fe8f8fbb3130d5ee5596d97e0d3c18dabcbe
MD5 e195d3b3e8196e3776c3d22717522173
BLAKE2b-256 97c13bedcacac0b1934440c8f26bdd28e9dfbf1c607e9fd0f8002800629018c0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp312-cp312-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 341.2 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.11.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 246aae66902851c249d05edcd196f96f0da7eadb66e6b5f179495eb7fecb9104
MD5 80bc9639a7017381944090ddd07322ed
BLAKE2b-256 0fd88422c5f5e4140a5719a5041f4c921dba190d38efbe4e15a3e8b7d7221c6f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 213.5 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.11.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 23ee3f483ca9d79bf99900a275d6bb505c8d521c20cbfd1c8007da04ab74df57
MD5 14df8fa40f417a58b16ffd55e74f3bc0
BLAKE2b-256 24ac2a4bb11055b7d3371d48e199f09f012cbc3b72cec270009ae52098df99f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 60608b18f88c8adca2744d539fc46f059437d365fe1cc5c4421e0ffe176b5d40
MD5 0243589d2460591a5f79e9e4f4ef408f
BLAKE2b-256 2c9e48417938161c407feed050a7c44eeda15171fd2646dcc7dc43729315a97c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 288.7 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.11.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5aecdc58ba42c4e86f98811f5bad9543a4f256a191b9eb0b9afa7c9e531b3ec3
MD5 92d54d8d0c5a5d3f5193961d0ad822e7
BLAKE2b-256 3c877808a2da8b39de08e4eb57b3af7bab6c0e741ef79d5010826dd5356eb283

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp311-cp311-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 342.9 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.11.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c0b597a7af10fdbe8e1745fb85c80525a1b870b84ac14bd2d1e375dc36470d92
MD5 e0ec2a3f7e97492e39fed74b8fe700e1
BLAKE2b-256 d7428765815f9495bb39dcf92b6907fdc609b524be0f43845cab4d91a9c5c209

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 212.7 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.11.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 afd2ee3541d6d4aad24ae12eb966a067d69ef3bf1808ea88e201d410be61472c
MD5 c00bb4daef3689eca59386be8e8b5304
BLAKE2b-256 2594c1ac867ba6518ec66ceaf943ecdc128989933e7e418396d66b5bb9387496

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5e0f97fc38308daa9757ebd86b72926b7497b2c475dc0fa8ad20fc50869ef49c
MD5 6ef0d1c558c30ac7ecbff9cc2e93c20b
BLAKE2b-256 87a76cd5c814cbae4aa8bad1af873973c77d082f1e09a0fcbcb6e13a3fdd20ea

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 287.5 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.11.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 42d391ad488fc3325a716e0e3f143d0ec3b676b835b1a5d9ce2caf9d7e043724
MD5 b3dc25aa510711c3345dc8f5897e719e
BLAKE2b-256 29f3c04cec0e7b51fe3bfc28532f1cf4fd0be6a49a9922a6d5f9555daaaffd74

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 341.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.11.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f996b3286345ac77b34a552acaf5e5268414e5ac7644b8790840a98d02529758
MD5 4f8d9815f35ae7738ca1b46a0de33379
BLAKE2b-256 cc7006698c14a4a2218203665c8d529e2645ef4d97a1963f4e72f2c2bebad124

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 212.0 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.11.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0429ae1341fe629dfdc4626fd4ebf053c3b8916dbd2ada08e82dde19cec93f36
MD5 7d66eaecb64ed98d0fb28e30d921b093
BLAKE2b-256 79a1fbdde4f27566225db4ee69b2610b2a405ce552ffe5151ef6938d33152b6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a869f2053babb6c7195b2b393974011a6d8140ef6cbf54a81a5f219fd62809be
MD5 2a94cc5bdc03ac0c02cd2dd0ac45b281
BLAKE2b-256 fc463838cbf98f4233d79256afd63a6c1150ea9dd2e4d1cb7988b81a6a4d3b31

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 287.7 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.11.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b3e9d9252627ab054e4fdc723b2ab664e4f40df5fa4ec14c393673f965e242d7
MD5 1272a5934b629589cea45d4c0a07f459
BLAKE2b-256 00a3778793868770ab6df78d02c0b63690ac1f72decfb1eea6439001bf9dca0d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 341.9 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.11.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6f3fe8a270028772f53ad4007bc8974e3f45d078907eb7541535dbd7083f40cb
MD5 9d1e6ab71a6c90f8428c1ccfd2bcde63
BLAKE2b-256 366b265d13dc8f6c7275678a20b98388b5e7ffe30c339cc822b211f12324a052

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 212.7 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.11.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 63f3affd593282c74d8d50ead202250a8d68b24d51187676e61e72dd262ae379
MD5 ac463e692480875a3858227dbbb4efdb
BLAKE2b-256 41ef4a2e496e5e45eeb33cb591f915c1d028da182e5c84b175888df0ba4820b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3a9da4b3ada2585e48abb2624a99656cf8340ac6afb474206871bfdec4579d6b
MD5 5efb688e52ee6436825b22a1050997d9
BLAKE2b-256 38b4b35aa65c327e8011fbc947eda40cf624948b0ddea62f487cea9f1d67d0ef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 287.5 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.11.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84d677ce757919fcb2923ca7e2b4d51b17cc1a1e15359c6a8fb15c6aacad1bfa
MD5 48850cc64f45a7982ad85bfb661e5398
BLAKE2b-256 a9eb60e62d93383a82ef00870b0775f23cfe4be9ac5ebc2bec5489de97ecfe62

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 341.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.11.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3456dd4557ac154c6d85bbf53f13275e0ba78eb805648262feeb4877932fd358
MD5 98a15c65593d5100e80aa26a92b8d238
BLAKE2b-256 eadcf0ad1e120e241fdc62763b3ffab0ad2a15ad3b78a3c080f87699e87cf3f3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 213.8 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.11.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 b05941f645e8d76822f251d41b2f2e2320d1e7651115419f7232578c1bfa0c81
MD5 62e536a1fd8f264340d2f3418df1743d
BLAKE2b-256 4f59e34103bb9920678143ccd148b7231e0c28f09c2668af4f56fcf8f0dd3138

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.11.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05f8364164a67237e9f766867a516d366449fc7621c11e085cf4410c8f927d04
MD5 a688a78ab71cbb1be7f8e2d429aa6af8
BLAKE2b-256 6c81428135789ec1988d0ec659e2b2a12bf6e61a3de6823d8eee5b01557cdc22

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 341.2 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.11.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 abe8f23e41c806e0da0ce63597dc6e325a0e3bca6e9172f3af92a25960e660a0
MD5 f65d072a16fb5ffce39d2fea4c930dfa
BLAKE2b-256 9324f6f9de716decd62eb244ea834edd56ea3b986820d52cd42da9b9827625da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 213.8 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.11.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 8c40a8bd034b4b232534731892925526b2b1e0351af0fa0168853f2be9ef946c
MD5 eff060779642058acd5fdd6858cccc84
BLAKE2b-256 058fdd729ddf5e3eb833822580053d433025ecfd59c3e97ba290dabf68a92271

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.11.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c82ba027124d928c26f1bea05603ca121df715020360d54866f27de0035780df
MD5 a6c026fff4ebbf73bbf00d71bf1ad8ab
BLAKE2b-256 c556e23d91ee71cee00f7c159a2ffb2b2cc70078288e663737d464f5d3f0834a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.11.0-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 340.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.11.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 547e7ae5eeaf39fdc74663a65a876efd0fd557a3d24bd2fa9617eedbc4db9b2f
MD5 d2a0370669fef81e2e81abbb9efb585d
BLAKE2b-256 764e06f3821c749e204afd52ad5ccd8cc70c5d9d25160543c171dc4209fd4bcf

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