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

Uploaded Source

Built Distributions

crackle_codec-0.10.0-cp312-cp312-win_amd64.whl (216.2 kB view details)

Uploaded CPython 3.12 Windows x86-64

crackle_codec-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.1 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

crackle_codec-0.10.0-cp312-cp312-macosx_11_0_arm64.whl (294.1 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

crackle_codec-0.10.0-cp312-cp312-macosx_10_9_x86_64.whl (370.1 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

crackle_codec-0.10.0-cp311-cp311-win_amd64.whl (216.5 kB view details)

Uploaded CPython 3.11 Windows x86-64

crackle_codec-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

crackle_codec-0.10.0-cp311-cp311-macosx_11_0_arm64.whl (296.3 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

crackle_codec-0.10.0-cp311-cp311-macosx_10_9_x86_64.whl (372.1 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

crackle_codec-0.10.0-cp310-cp310-win_amd64.whl (215.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

crackle_codec-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (329.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

crackle_codec-0.10.0-cp310-cp310-macosx_11_0_arm64.whl (295.0 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

crackle_codec-0.10.0-cp310-cp310-macosx_10_9_x86_64.whl (370.5 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

crackle_codec-0.10.0-cp39-cp39-win_amd64.whl (215.3 kB view details)

Uploaded CPython 3.9 Windows x86-64

crackle_codec-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

crackle_codec-0.10.0-cp39-cp39-macosx_11_0_arm64.whl (295.2 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

crackle_codec-0.10.0-cp39-cp39-macosx_10_9_x86_64.whl (370.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

crackle_codec-0.10.0-cp38-cp38-win_amd64.whl (216.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

crackle_codec-0.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (329.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

crackle_codec-0.10.0-cp38-cp38-macosx_11_0_arm64.whl (294.9 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

crackle_codec-0.10.0-cp38-cp38-macosx_10_9_x86_64.whl (370.5 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

crackle_codec-0.10.0-cp37-cp37m-win_amd64.whl (217.0 kB view details)

Uploaded CPython 3.7m Windows x86-64

crackle_codec-0.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.9 kB view details)

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

crackle_codec-0.10.0-cp37-cp37m-macosx_10_9_x86_64.whl (370.1 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

crackle_codec-0.10.0-cp36-cp36m-win_amd64.whl (217.0 kB view details)

Uploaded CPython 3.6m Windows x86-64

crackle_codec-0.10.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.2 kB view details)

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

crackle_codec-0.10.0-cp36-cp36m-macosx_10_9_x86_64.whl (369.8 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: crackle-codec-0.10.0.tar.gz
  • Upload date:
  • Size: 78.0 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.10.0.tar.gz
Algorithm Hash digest
SHA256 eaa6abd724f9e445bf7fe86f02d262bf8d9e1d683621852b94cb97aafae94e2b
MD5 19419441f1cfccf3cc4a9e4eb8217b04
BLAKE2b-256 cc187213d21a81c420517fb095064e42670be43e54e249a0b699b3a03a3f8251

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 216.2 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.10.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 234ae941a8c34676b835d1a61490136275e9cc8c408b52a08edf3c7815924f57
MD5 fb5e39c9472fd325dd9ed303ad983686
BLAKE2b-256 92c2bb2072e54af9e683754ef33a1817f9b59933ae1315fd3652a0f06d2c05c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 af4a44ad9a64b6e4323d57511498d5f083c28aba5ce7c4195779f63a42ab7338
MD5 e5611e91de51af45c2d12450e88b4da6
BLAKE2b-256 767951452468c69055480d20a44beda972ebbccbc613c7be01d25d2a20ed1522

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 294.1 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.10.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 40143a880d57e0558ac28e68e5cc24519cfba8c1d8a781080fe304c1b8aa06ba
MD5 d506091499ea9789d894eeab3f3b0722
BLAKE2b-256 62069f9be2b427a282d8963214854f9dc576ea720577f01f41794f5c15cfe8c2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp312-cp312-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 370.1 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.10.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 73afd924a040c7a0418a93befc7568e7d76a2e51f1499d545850f903d424c6f0
MD5 af678dce6ec53f2ce4c4601c5c0cd7f6
BLAKE2b-256 26014c48d5f40d109ba09667d32891945f37da6176a44a44cb24a6cacb698391

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 216.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.10.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 29be0f1aa639673a369bf9476d9c81cdf65d223fb42acb179e94e05b7ee59992
MD5 9655ad8537288fbf980ec0fee52c408f
BLAKE2b-256 5dd60923b6a758156df1d3c9d5732ea03bf25af4661574af7367baabefe94f59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 501d8c87473b7ee86a9a8452619f6f9b347c217d54e2763c2ea27c9050a45f72
MD5 439abbb207b149481a281a36f9be53bc
BLAKE2b-256 aeeb6b516cd0257bb89acd8f531c0774ba40683498bb0b71808207c11fdef2b0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 296.3 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.10.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8ac3f137617e7a5d09391330fa2f9ae15d6dd3b8a5830c5c2358d12e8fa6cf8e
MD5 a82c5935a66d8589e422113743d03f18
BLAKE2b-256 351ac934cfbf5627405ee93ea046109b681f43adcdcc07f38297c27166332a2f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp311-cp311-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 372.1 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.10.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 809966caf256fe9b735471bc7200f36098e710bb71b432e46fce649a84aba518
MD5 c091270858938521b806006abec1717f
BLAKE2b-256 a62188dca470a2e2d72260718bb2e87b0195516de7a5f10d5c58aa2f3011870e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 215.9 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.10.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a00ca86daa0b2bd136d62e241f418fb3ae569595a91800d7e7b211a0eb5b8976
MD5 2fc125f8748c5c0671b58b8fd092b236
BLAKE2b-256 e736ae089160880ec87520789b8d40bd26fc2723ec0ac5ba5e24fa1c8adefdef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b2a9e9a16e83f7e2e6fffefcf4717911c5dd137c7a0a2a4ebc2ceb8cebc00505
MD5 eb4e6b0510daec2914f1d386359b5c2a
BLAKE2b-256 ea8cc147f09e52a163503688ec20da757debb8aab598cf25d5302abd87d312d4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 295.0 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.10.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f66041bb3f6f88e7fe1d03df0a026662d44572ac766146c29f48b1303725121
MD5 4088f7b64d385cf58a559010df40ae46
BLAKE2b-256 663144b0519f4f01daa73b7cc08ce7269c66c43fafa787fee53c31dda403072b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 370.5 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.10.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 64985f043223e129a04baf4df914056a6c0ed8a4985573a095b5fd4c10de3c26
MD5 60c2ad00771f1834162c514f95f6102c
BLAKE2b-256 c4ea834662f9e1a48b9008973ada78228f4c547cc60c76aeaab2671bcaaa2189

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 215.3 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.10.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 cae87b25c82e50e2fc7c83cb8129e548aac2c3d6810fa395877f237bae310448
MD5 532d16fbafb2eb936208d3d7eb38b3aa
BLAKE2b-256 efe2817f6f041e922ab7d4a558af63e0a43b94abdf877d2482aab532aad4ccf9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ea9a5fe98660bf4f3214aa108a48b9ea37fd19695cb54c7c12015883fc89301d
MD5 963c6abae633d9b3ec1d53e94e8ab756
BLAKE2b-256 b76ab85d4a906893190bf016985c8120596ffb2d636424118ef80f615bab0121

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 295.2 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.10.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 42f980ccbbba7631bf608bbb5071debfe44940e49357d52e51ab53c6fcd4c58e
MD5 93f61bfee8efc3f20ae14d7280c6af31
BLAKE2b-256 f71912d7999a4042cd502380bbd958937d3fa97fe9b239b9b77d09bd028074b5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 370.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.10.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cb15be5f700a93040d0e91fc822a45235ce6cbdc9ad1ed7b409052c0205a1846
MD5 ca169cebdf83457a164b7df85c40ce09
BLAKE2b-256 e50367da5c3205401d1bdd948330e1d572d83e12190e19314b1fd59e1dbc771c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 216.0 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.10.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 2b80ee7bbd23ab0c8de21d71a422e9de627a7776c5765be5b5e8fc743cc01c8f
MD5 43caca06e5e49540ba9529d3e3647557
BLAKE2b-256 d4110c7804fd237ea3335a68d9c8c25aebe31cc86effd77b8d659b2f95e5b966

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e63a1596d8eed17f134eb93e2c637621a079f47d8d3f901eda284222f1d91a58
MD5 0881cee229c810f0b73cea5c916f3360
BLAKE2b-256 7172321e711068d4fd5be092a1fd8f69204b9d0a58f1226cac6df0e1d608718a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 294.9 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.10.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 255f3a19d095778279d54ce4ea7b46038daee6442095c81d6d351543f8a48404
MD5 b06082f9b3bff6c3b5ce9fd41de743a5
BLAKE2b-256 9292fa40ce3c1be21f84aed6ac1e9832502da1b315b5d8f2deb3304cac2836eb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 370.5 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.10.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 db4c3c6e9a701687f58e11fbc15638282af85ea338c60bcb4bb95c6556a31821
MD5 5b00ec272f3278e291723f9bf0968425
BLAKE2b-256 754a91d2a9cd1580ab8eeb3f6ebbb8879cb5f3b9b3b519f6e410665734788df6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 217.0 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.10.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 2a569d3a0e6898d67e74e0cbf4181e87324e5c366b4f044b3888a56ff415fb1d
MD5 608d1078aa42604731ddd71af8b7b8a1
BLAKE2b-256 a85d21047defe03b597bfe031338aae88a4c934a7f059db6eec44779697e3cc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0de8d3bedcb1d0267bfe11fccc4ec4c006a32d77930bfd2874477b01c5c4a038
MD5 e4dc415e6b7dc353658cc5434bc50711
BLAKE2b-256 a0d7c79acf9d27fa48eaca658cef0c3c1551e305349d5a4f405ff02c76407c7b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 370.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.10.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 12e720e9ea4d4139c8e3de1289f74892348ed9d48657649f429da6296269df51
MD5 b449e75a222b528c44c185cc0661767e
BLAKE2b-256 0646893c8626b78b6a70fb4c594653f3ca53dcca08bdeaa3912c700a507bdf27

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 217.0 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.10.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 96fd297fa456861d51a51e79658e99498cc334ace6f8e170236e53927ce35c37
MD5 6005282fbef05c08cd4ff16dbe3ce7bd
BLAKE2b-256 39a21cf56fdcc986f1054601667ed38247a764600f2111acb816146dcb502358

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crackle_codec-0.10.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1810e12c1569696a38eba3c4a106a9fa943a5da3542561ba126c4e525f4d69fe
MD5 43881b58014630740c6e6bf2a4f7b273
BLAKE2b-256 4dbb577786609b3c9a4297390f5e7d37d7599a59059e5509d9eb927740b1e9b4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crackle_codec-0.10.0-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 369.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.10.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 302cb8ad1589eebc0b50a7058ac7d50d483d33290d2d45d1b97887d7fcd7fb84
MD5 43f4f8c9858acfced8e90ec734c2f715
BLAKE2b-256 b5c2ff7129c6d20d35f597bf6051ab2d949d6bf941ed628f780d5fae0d0a31b2

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