Skip to main content

Connected components on 2D and 3D images. Supports multiple labels.

Project description

Build Status PyPI version DOI

cc3d: Connected Components on Multilabel 3D Images

Binary and multilabel connected components. (a) A binary image (foreground white,  background black) (b) 4-connected CCL of binary image (c) 8-connected CCL of binary image (d) A multilabel image (e) 4-connected CCL of multilabel image (f) 8-connected CCL of multilabel image
Fig. 1. Binary and Multilabel Connected Components Labeling (CCL) 2D images are shown for simplicity. (a) A binary image (foreground white, background black) (b) 4-connected CCL of binary image (c) 8-connected CCL of binary image (d) A multilabel image (e) 4-connected CCL of multilabel image (f) 8-connected CCL of multilabel image

Continuous value connected components (top) A three tone grayscale image with signed additive low magnitude noise (bottom) Extracted components using continuous value CCL with a delta value greater than the noise magnitude but smaller than the difference between tones
Fig. 2. Continuous Value Connected Components Labeling (CCL) (top) A three tone grayscale image with signed additive low magnitude noise (bottom) Extracted components using continuous value CCL with a delta value greater than the noise magnitude but smaller than the difference between tones

cc3d is an implementation of connected components in three dimensions using a 26, 18, or 6-connected neighborhood in 3D or 4 and 8-connected in 2D. This package uses a 3D variant of the two pass method by Rosenfeld and Pflatz augmented with Union-Find and a decision tree based on the 2D 8-connected work of Wu, Otoo, and Suzuki. This implementation is compatible with images containing many different labels, not just binary images. It also supports continuously valued images such as grayscale microscope images with an algorithm that joins together nearby values.

I wrote this package because I was working on densely labeled 3D biomedical images of brain tissue (e.g. 512x512x512 voxels). Other off the shelf implementations I reviewed were limited to binary images. This rendered these other packages too slow for my use case as it required masking each label and running the connected components algorithm once each time. For reference, there are often between hundreds to thousands of labels in a given volume. The benefit of this package is that it labels all connected components in one shot, improving performance by one or more orders of magnitude.

In general, binary images are much more common (usually resulting from image thresholding), but multi-label images crop up in instance segmentation and semantic labeling as a classifier may label touching clusters of adjacent pixels differently. If a gap between different labels is guaranteed, then the problem degenerates into the binary version.

Check out benchmarks to see a comparison with SciPy on a few different tasks.

Python pip Installaction

If compatible binaries are available for your platform, installation is particularly simple.

pip install connected-components-3d

If compatible binaries are not available, you can install from source as follows.

Requires a C++ compiler.

pip install numpy
pip install connected-components-3d --no-binary :all:

Occasionally, you may appear to successfully install cc3d, but on import you'll see an error that includes: numpy.ufunc size changed, may indicate binary incompatibility. You can either try upgrading numpy or compiling cc3d from source in this case.

Python Manual Installation

Requires a C++ compiler.

pip install -r requirements.txt
python setup.py develop

Python Use

import cc3d
import numpy as np

labels_in = np.ones((512, 512, 512), dtype=np.int32)
labels_out = cc3d.connected_components(labels_in) # 26-connected

connectivity = 6 # only 4,8 (2D) and 26, 18, and 6 (3D) are allowed
labels_out = cc3d.connected_components(labels_in, connectivity=connectivity)

# If you're working with continuously valued images like microscopy
# images you can use cc3d to perform a very rough segmentation. 
# If delta = 0, standard high speed processing. If delta > 0, then
# neighbor voxel values <= delta are considered the same component.
# The algorithm can be 2-10x slower though. Zero is considered
# background and will not join to any other voxel.
labels_out = cc3d.connected_components(labels_in, delta=10)

# You can extract the number of labels (which is also the maximum 
# label value) like so:
labels_out, N = cc3d.connected_components(labels_in, return_N=True) # free
# -- OR -- 
labels_out = cc3d.connected_components(labels_in) 
N = np.max(labels_out) # costs a full read

# You can extract individual components using numpy operators
# This approach is slow, but makes a mutable copy.
for segid in range(1, N+1):
  extracted_image = labels_out * (labels_out == segid)
  process(extracted_image) # stand in for whatever you'd like to do

# If a read-only image is ok, this approach is MUCH faster
# if the image has many contiguous regions. A random image 
# can be slower. binary=True yields binary images instead
# of numbered images.
for label, image in cc3d.each(labels_out, binary=False, in_place=True):
  process(image) # stand in for whatever you'd like to do

# Image statistics like voxel counts, bounding boxes, and centroids.
stats = cc3d.statistics(labels_out)

# Remove dust from the input image. Removes objects with
# fewer than `threshold` voxels.
labels_out = cc3d.dust(
  labels_in, threshold=100, 
  connectivity=26, in_place=False
)

# Get a labeling of the k largest objects in the image.
# The output will be relabeled from 1 to N.
labels_out, N = cc3d.largest_k(
  labels_in, k=10, 
  connectivity=26, delta=0,
  return_N=True,
)
labels_in *= (labels_out > 0) # to get original labels

# We also include a region adjacency graph function 
# that returns a set of undirected edges.
edges = cc3d.region_graph(labels_out, connectivity=connectivity) 

# You can also generate a voxel connectivty graph that encodes
# which directions are passable from a given voxel as a bitfield.
# This could also be seen as a method of eroding voxels fractionally
# based on their label adjacencies.
# See help(cc3d.voxel_connectivity_graph) for details.
graph = cc3d.voxel_connectivity_graph(labels, connectivity=connectivity)

Note: C and Fortran order arrays will be processed in row major and column major order respectively, so the numbering of labels will be "transposed". The scare quotes are there because the dimensions of the array will not change.

C++ Use

#include "cc3d.hpp"

// 3d array represented as 1d array
int* labels = new int[512*512*512](); 

uint32_t* cc_labels = cc3d::connected_components3d<int>(
  labels, /*sx=*/512, /*sy=*/512, /*sz=*/512
);

// The default template parameter for output type is uint32_t
uint64_t* cc_labels = cc3d::connected_components3d<int, uint64_t>(
  labels, /*sx=*/512, /*sy=*/512, /*sz=*/512
);

uint16_t* cc_labels = cc3d::connected_components3d<int, uint16_t>(
  labels, /*sx=*/512, /*sy=*/512, /*sz=*/512, 
  /*connectivity=*/18 // default is 26 connected
);

size_t N = 0;
uint16_t* cc_labels = cc3d::connected_components3d<int, uint16_t>(
  labels, /*sx=*/512, /*sy=*/512, /*sz=*/512, 
  /*connectivity=*/26, /*N=*/N // writes number of labels to N
);

#include "cc3d_continuous.hpp"

// For handling grayscale images. Note that the difference
// is the addition of the "delta" argument.
uint16_t* cc_labels = cc3d::connected_components3d<int, uint16_t>(
  labels, /*sx=*/512, /*sy=*/512, /*sz=*/512, 
  /*delta=*/10, /*connectivity=*/6 // default is 26 connected
);

#include "cc3d_graphs.hpp"

// edges is [ e11, e12, e21, e22, ... ]
std::vector<uint64_t> edges = cc3d::extract_region_graph<uint64_t>(
  labels, /*sx=*/512, /*sy=*/512, /*sz=*/512, 
  /*connectivity=*/18 // default is 26 connected
);

// graph is a series of bitfields that describe inter-voxel
// connectivity based on adjacent labels. See "cc3d_graphs.hpp"
// for details on the bitfield. 
uint32_t* graph = extract_voxel_connectivity_graph<T>(
  labels, /*sx=*/512, /*sy=*/512, /*sz=*/512, 
  /*connectivity=*/6 // default is 26 connected
);

26-Connected CCL Algorithm

The algorithm contained in this package is an elaboration into 3D images of the 2D image connected components algorithm described by Rosenfeld and Pflatz (RP) in 1968 [1] (which is well illustrated by this youtube video) using an equivalency list implemented as Tarjan's Union-Find disjoint set with path compression and balancing [2] and augmented with a decision tree based on work by Wu, Otoo, and Suzuki (WOS), an approach commonly known as Scan plus Array-based Union-Find (SAUF). [3] The description below describes the 26-connected algorithm, but once you understand it, deriving 18 and 6 are simple. However, we recently made some changes that warrant further discursion on 6-connected.

First Principles in 2D

In RP's 4-connected two-pass method for binary 2D images, the algorithm raster scans and every time it first encounters a foreground pixel (the pixels to its top and left are background), it marks it with a new label. If there is a preexisting label in its neighborhood, it uses that label instead. Whenever two labels are adjacent, it records they are equivalent so that they can be relabeled consistently in the second pass. This equivalency table can be constructed in several ways, but some popular approaches are Union-Find with path compression with balancing by rank and Selkow's algorithm (which can avoid pipeline stalls). [4] However, Selkow's algorithm is designed for two trees of depth two, appropriate for binary images. We would like to process multiple labels at the same time, making Union-Find preferable.

In the second pass, the pixels are relabeled using the equivalency table. Union-Find establishes one label as the root label of a tree, and the root is considered the representative label. Each pixel is then labeled with the representative label. Union-Find is therefore appropriate for representing disjoint sets. Path compression with balancing radically reduces the height of the tree, which accelerates the second pass.

WOS approached the problem of accelerating 8-connected 2D connected components on binary images. 8-connected labeling is achieved by extending RP's forward pass mask to the top left and top right corner pixels. In Union-Find based connected components algorithms, the unify step in the first pass is the most expensive step. WOS showed how to optimize away a large fraction of these calls using a decision tree that takes advantage of local topology. For example, since the top-center neighbor of the current pixel is also adjacent to the other mask elements, all of which have already been processed by virtue of the raster scan direction, if it is present it is sufficient to copy its value and move on. If it is absent, pick one of the remaining foreground pixels, copy their value, and use unify for the mask element on the right as it is now known to be non-neighboring with the left hand side. WOS's algorithm continues in this fashion until a match is found or all mask elements are processed at which point a new label is created.

For several years, this algorithm was the world's fastest, though it has been superceded by a newer work that exchanges the static decision tree for a dynamic one or precalculated generated one amongst other improvements. However, WOS's work is significant for both its simplicity and speed and thus serves as the inspiration for this library. For 2D 8-connected images, we provide a specialization using Wu et al's original decision tree for a slight performance boost.

We're interested in exploring the block based approaches of Grana, Borghesani, and Cucchiara ([5],[7]), however their approach appears to critically rely on binary images. We'll continue to think about ways to incorporate it. We also considered the approach of He et al [8] which is also supposed to modestly faster than than WOS. However, it substitutes the Union-Find data structure (one array) with three arrays, which imposes a memory requirement that is at odds with our goal of processing large images.

Extending to 3D

The approach presented below is very similar to that of Sutheebanjard [6]. To move to a 3D 26-connected neighborhood, the mask must be extended into three dimensions in order to connect neighboring planes. Observe that the 8-connected mask covers the trailing half of the neighborhood (the part that will have been already processed) such that the current pixel can rely on those labels. Thus the mask for the 26-connected neighborhood covers only two out of three potential planes: the entire lower plane (nine voxels), and a mask identical to WOS's (four voxels) on the current plane. While some further optimizations are possible, to begin, the problem can be conceptually decomposed into two parts: establishing a 9-connected link to the bottom plane and then an 8-connected link to the current plane. This works because the current pixel functions as a hub that transmits the connection information from the 9-connected step to the 8-connected step.

Fig. 1: Mask for an 8-connected plane. If J,K,L, and M are all eliminated, only N remains and a new label is assigned.

j k l
m n .
. . .

The very first Z plane (Z=0) the algorithm runs against is special: the edge effect omits the bottom plane of the mask. Therefore, as the remaining mask is only comprosed of the 8-connected 2D mask, after this pass, the bottom of the image is 8-connected. At Z=1, the 9-connected part of the mask kicks in, forming connections to Z=0, making the current plane now (8 + 9) 17-connected. At Z=2, the 9-connected bottom mask now forms connections from Z=1 to Z=2 on the top, making Z=1 (17 + 9) 26-connected. By induction, when this process proceeds to completion it results in a 26-connected labeling of the volume.

Following inspiration from WOS, we construct a decision tree on the densely labeled bottom plane that minimizes the number of unifications we need to perform.

Fig 2. The mask for the lower plane in 3D.

a b c
d e f
g h i

As e is connected to all other voxels, if present, it can simply be copied. If e is absent, b and h fully cover the mask. If b is absent, h, a, c comprise a covering. If h is absent, b, g, i are one. Below is a list of coverings such that each proceeding entry in the list assumes the first letters in the entries above are background.

  1. e
  2. k, (h | g, i)
  3. b, (h | g, i)
  4. h, a, c
  5. m, (f | c, i)
  6. d, (f | c, i)
  7. f, g, a
  8. a, c, g, i
  9. c, g, i
  10. g, i
  11. i

The decision tree is then constructed such that each of these coverings will be evaluated using the fewest unifications possible. It's possible to further optimize this by noting that e and b are both fully connected to the upper 2D mask. Therefore, if either of them are present, we can skip the 8-connected unification step. It's also possible to try the DF covering first if B is background, which would save one unification versus HAC given even statistics, but it seems to be slightly slower on the dataset I attempted. To move from binary data to multilabel data, I simply replaced tests for foreground and background with tests for matching labels.

In order to make a reasonably fast implementation, I implemented union-find with path compression. I conservatively used an IDs array qual to the size of the image for the union-find data structure instead of a sparse map. The union-find data structure plus the output labels means the memory consumption will be input + output + rank + equivalences. If your input labels are 32-bit, the memory usage will be 4x the input size. This becomes more problematic when 64-bit labels are used, but if you know something about your data, you can decrease the size of the union-find data structure. I previously used union-by-size but for some reason it merely reduced performance and increased memory usage so it was removed.

For more information on the history of connected components algorithms, and an even faster approach for 2D 8-connected components, consult Grana et al's paper on Block Based Decision Trees. [5,7]

Phantom Labels

In the course of thinking of improvements to several algorithms, we developed a technique we term "Phantom Labeling" for improving the SAUF method directly.

Definition: Phantom Labels are elements of a CCL mask that 
transmit connectivity information between other elements of the 
mask but cannot directly pass their value to the current pixel 
during the first pass of a SAUF derived algorithm.

Reproducing Fig. 1 again, but with new letters for the more limited problem, the standard SAUF mask appears like so:

Fig. 3: Mask for an 8-connected plane.

a b c
d x .
. . .

This results in a decision tree like so assuming x is a foreground pixel.

if b:
    x := b
elif a:
    x := a 
    if c:
        unify(a,c)
elif d:
    x := d
    if c: 
        unify(c,d)
elif c:
    x := c
else:
    x := new label

There is an opportunity here for eliminating up to half of the unify calls, one of the more expensive operations in modern CCL by slightly modifying the mask:

Fig. 4: 8-connected mask modified to include phantom label P.

. P .
a b c
d x .
. . .

This results in a modified decision tree.

if b:
    x := b
elif a:
    x := a 
    if c and not P: <--- change here
        unify(a,c)
elif d:
    x := d
    if c: 
        unify(c,d)
elif c:
    x := c
else:
    x := new label

The novelty of this technique is unclear, but it is very simple to apply and results in substantial speed ups for the 4 and 6 connected problems, a minor improvement for 8-connected, and is readily compatible with the multi-label approach unlike block based approaches.

4 and 6-Connected CCL Algorithm

Here is where the phantom label technique shines. It's a bit harder to find 4 and 6 connected algorithms in the literature, I assume because many of the techniques invented for the 8-way problem, such as the Union-Find data structure for the equivalency table and run-based approaches, are applicable to the simpler problem. However, the SAUF decision tree approach was lacking as every pixel required a unify call in the 4-way problem and two in the 6-way problem.

Fig. 5: 4-connected mask modified to include phantom label P.

P b .
a x .
if a:
    x := a
    if b and not P:
        unify(a,b)
elif b:
    x := b
else:
    x := new label

This gives a decent improvement on the order of 10-20%. If you're lucky, you might not incur even a single label merge operation. In the 6-way problem, there are three phantom labels that can be exploited and the improvement is closer to 50% on our data, a fairly substantial amount. Again, with luck you might avoid any unify operations at all.

Fig. 6: Mask for the 6-way problem with phantom labels P, Q, and R added.

P b
a x
. Q
R c

You can even use multiple routes to propagate information if a label is missing. For example, if path (a,P,b) is unavailable due to a missing P, you could potentially transmit information using path (a,R,c,Q,b).

Four Pass Algorithm

We introduce two additional passes over the image label prior to running the two-pass SAUF algorithm. These additional passes are used to collect statistcs for optimizing the SAUF passes.

Estimating Provisional Labels

The first additional pass is used to over-estimate the number of provisional labels generated by the first SAUF pass. A better estimation allows a smaller allocation for the Union-Find datastructure. For some operating systems, the reduced size of the allocation and improved caching recovers more time than is spent collecting statistics.

This can be computed by counting the number of transitions between labels along each row of the image. This scan is easily written such that the instructions can be vectorized to minimize the cost of the scan. The number of transitions is guaranteed to be larger than or equal to the number of provisional labels as all provisional labels are generated in this fashion and then reduced by stealing a label from a neighboring voxel.

A hierarchy of estimators can be written as:

0 <= provisional labels <= X transitions <= static estimate <= voxels

Binary images can also be estimated statically as voxels / 2 for 4 and 6-way, voxels / 4 for 8 and 18 way, and voxels / 8 for 26 connected. For multi-label images, the best static estimate is voxels as no assumptions can be made about how labels connect to each other (in the worst case all eight voxels in a cube have different labels).

It is also possible to check XY and XYZ transitions to get a tighter bound, but in experiments, the amount of time spent checking those directions exceeded the benefit obtained by checking the X pass. Often the X pass alone results in factors as high as voxels / 100.

Estimation of the number of labels also allows aborting processing before the first SAUF pass in the case of an all background cube.

Estimating Foreground Location

The second additional pass is estimating the location of the foreground. In the literature, this strategy is sometimes referred to as a "one-and-a-half pass" where the foreground location is computed during the first SAUF pass and then used to skip processing of background voxels during the relabeling pass.

Here we perform this check up front so that it can be performed minimally. Instead of integrating the calculation into the first pass which could force some computation on every voxel, we scan each row from the left to find the first foreground voxel and then scan from the right to the find the foreground voxel at the end. The results are tabulated in a uint32 table of starts and ends to each row of size 2 * sy * sz. This ensures that the volume is scanned at most once, and most likely much less if the shapes fill the space reasonably well. Then, both passes of the SAUF method scan only the part of each row indicated by this table.

Certain shapes and distributions defeat the efficiency of scanning only the starts and ends of the row (such as random images or an image with foreground on the start and end of each row and nowhere else). However, for a great many shapes, this provides substantial efficiencies and minimal downside for a dense multi-label image as only two YZ slices of the images are scanned before the table is completed.

Early Abortion Points

There are three locations in the algorithm at which further processing can be aborted early without changing the result.

  1. After estimating provisional labels if zero transitions are detected (an all zeros volume). A black image is returned.
  2. After the first SAUF pass if the number of provisional labels is zero or one. In this case, the provisional labels are guaranteed to be identical to final labels.
  3. After assigning final labels to each provisional label in a translation array. If the number of final labels equals the number of provisional labels, the provisional labels were accurately assigned and the relabeling scan can be skipped.

Papers Using cc3d

A number of papers are using cc3d now. Many of them seem to be deep learning applications as instance segmentation is liable to generate touching non-binary labels. Some are in geoscience, neuroscience, and medical fields. If cc3d is helpful to you, please feel free to email us and let us know. We might be able to offer some tips if its performance critical (though we can't guarantee timeliness of response). There are so many variations of the CCL problem, you might be surprised at what you can do.

https://scholar.google.com/scholar?as_ylo=2019&q=connected-components-3d&hl=en&as_sdt=0,31

References

  1. A. Rosenfeld and J. Pfaltz. "Sequential Operations in Digital Picture Processing". Journal of the ACM. Vol. 13, Issue 4, Oct. 1966, Pg. 471-494. doi: 10.1145/321356.321357 (link)
  2. R. E. Tarjan. "Efficiency of a good but not linear set union algorithm". Journal of the ACM, 22:215-225, 1975. (link)
  3. K. Wu, E. Otoo, K. Suzuki. "Two Strategies to Speed up Connected Component Labeling Algorithms". Lawrence Berkeley National Laboratory. LBNL-29102, 2005. (link)
  4. S. Selkow. "The Tree-to-Tree Editing Problem". Information Processing Letters. Vol. 6, No. 6. June 1977. doi: 10.1016/0020-0190(77)90064-3 (link)
  5. C. Grana, D. Borghesani, R. Cucchiara. "Optimized Block-based Connected Components Labeling with Decision Trees". IEEE Transactions on Image Processing. Vol. 19, Iss. 6. June 2010. doi: 10.1109/TIP.2010.2044963 (link)
  6. P. Sutheebanjard. "Decision Tree for 3-D Connected Components Labeling". Proc. 2012 International Symposium on Information Technology in Medicine and Education. doi: 10.1109/ITiME.2012.6291402 (link)
  7. C. Grana, D. Borghesani, R. Cucchiara. "Fast Block Based Connected Components Labeling". Proc. 16th IEEE Intl. Conf. on Image Processing. 2009. doi: 10.1109/ICIP.2009.5413731 (link)
  8. L. He, Y. Chao and K. Suzuki, "A Linear-Time Two-Scan Labeling Algorithm", IEEE International Conference on Image Processing, vol. 5, pp. 241-244, 2007.

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

connected-components-3d-3.8.0.tar.gz (577.3 kB view details)

Uploaded Source

Built Distributions

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

connected_components_3d-3.8.0-cp310-cp310-win_amd64.whl (337.4 kB view details)

Uploaded CPython 3.10Windows x86-64

connected_components_3d-3.8.0-cp310-cp310-win32.whl (369.6 kB view details)

Uploaded CPython 3.10Windows x86

connected_components_3d-3.8.0-cp310-cp310-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

connected_components_3d-3.8.0-cp310-cp310-musllinux_1_1_i686.whl (3.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ i686

connected_components_3d-3.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

connected_components_3d-3.8.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (2.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

connected_components_3d-3.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

connected_components_3d-3.8.0-cp310-cp310-macosx_10_9_x86_64.whl (492.7 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

connected_components_3d-3.8.0-cp310-cp310-macosx_10_9_universal2.whl (871.7 kB view details)

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

connected_components_3d-3.8.0-cp39-cp39-win_amd64.whl (337.2 kB view details)

Uploaded CPython 3.9Windows x86-64

connected_components_3d-3.8.0-cp39-cp39-win32.whl (369.6 kB view details)

Uploaded CPython 3.9Windows x86

connected_components_3d-3.8.0-cp39-cp39-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

connected_components_3d-3.8.0-cp39-cp39-musllinux_1_1_i686.whl (3.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ i686

connected_components_3d-3.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

connected_components_3d-3.8.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (2.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

connected_components_3d-3.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

connected_components_3d-3.8.0-cp39-cp39-macosx_10_9_x86_64.whl (492.3 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

connected_components_3d-3.8.0-cp39-cp39-macosx_10_9_universal2.whl (871.2 kB view details)

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

connected_components_3d-3.8.0-cp38-cp38-win_amd64.whl (340.6 kB view details)

Uploaded CPython 3.8Windows x86-64

connected_components_3d-3.8.0-cp38-cp38-win32.whl (373.0 kB view details)

Uploaded CPython 3.8Windows x86

connected_components_3d-3.8.0-cp38-cp38-musllinux_1_1_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

connected_components_3d-3.8.0-cp38-cp38-musllinux_1_1_i686.whl (3.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ i686

connected_components_3d-3.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

connected_components_3d-3.8.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686

connected_components_3d-3.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

connected_components_3d-3.8.0-cp38-cp38-macosx_11_0_universal2.whl (861.1 kB view details)

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

connected_components_3d-3.8.0-cp38-cp38-macosx_10_9_x86_64.whl (487.1 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

connected_components_3d-3.8.0-cp37-cp37m-win_amd64.whl (328.3 kB view details)

Uploaded CPython 3.7mWindows x86-64

connected_components_3d-3.8.0-cp37-cp37m-win32.whl (363.9 kB view details)

Uploaded CPython 3.7mWindows x86

connected_components_3d-3.8.0-cp37-cp37m-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

connected_components_3d-3.8.0-cp37-cp37m-musllinux_1_1_i686.whl (3.1 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ i686

connected_components_3d-3.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

connected_components_3d-3.8.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ i686

connected_components_3d-3.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

connected_components_3d-3.8.0-cp37-cp37m-macosx_10_9_x86_64.whl (480.9 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

Details for the file connected-components-3d-3.8.0.tar.gz.

File metadata

  • Download URL: connected-components-3d-3.8.0.tar.gz
  • Upload date:
  • Size: 577.3 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 connected-components-3d-3.8.0.tar.gz
Algorithm Hash digest
SHA256 7bc93617e1bccba45bae57f8b315a1fa247ab627dc86c27d27a0aea2babce680
MD5 95d79fdaa0c151e663370b7cdf43c3b7
BLAKE2b-256 56527918533859113f76e81cd09d487b7e612073eb8b2250949a8dc03c653c11

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 337.4 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 connected_components_3d-3.8.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1d5aed685fc269a9b41a097a508c92722e3173f0813bac7dea1f5ab30a393816
MD5 351427c6a6ad87ecd5692ba96e540c83
BLAKE2b-256 c4c87ac7a4f8ddb35a6970c081f13acd1956477ee63f997c1aa076e356ddef0c

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 369.6 kB
  • Tags: CPython 3.10, Windows x86
  • 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 connected_components_3d-3.8.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 e0e0f65bb6bcca42e5fe434bfd01f68bb5533f6b277ab0dae9eb38a08120b895
MD5 5cb3b13c38e09e980e78478281fa3412
BLAKE2b-256 5ee8e67dc3779bb8c5c2b2b2e3703eeeed9e7a709b550e075e49253a8afb75cf

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp310-cp310-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.10, musllinux: musl 1.1+ 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 connected_components_3d-3.8.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 789d7a2e05afaea90cc7e896f963d1ca247bb361b8f374f7150a05c518fc0b6f
MD5 741796d3837d030334c769c1b86bf0a1
BLAKE2b-256 e993531587ab3896e0d67fab904827de9abf92b156df2b7c2479e8248e271cb5

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp310-cp310-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.10, musllinux: musl 1.1+ i686
  • 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 connected_components_3d-3.8.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 336eb80ec39732111e93a3e63d4c606eef2b33852997dee960d91abae172f517
MD5 b71cfaa42fe1735227e918948db02616
BLAKE2b-256 b17c29396ab2e498a064e9d0226d1067aaadebb36553a3252547e10070aabd72

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4b162f7b48aaab5c5702a1056521c46be616056e7c9d8459eaf474d4a45e579
MD5 bf42cff75b39d072d66e2d749d7f2b21
BLAKE2b-256 9fece84831b033884f25572d15c59c368a5c3c314a699eb486e9f6793f2748a1

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 732dcfc207e36961148d85b01fc75951377cac70d3bd6da858940d5186960123
MD5 3c8a77c77df18fa402700852ef38b3bf
BLAKE2b-256 466a6523257157154a96d502ccb8a29b0cf46c7f714b653026765c627717b735

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 be9a627ce6f792f1bee6f3be058571ea6e3bfc36f4c6b1c9f2902498919941c8
MD5 49c27fc72f9d7adb7d6d8bd6781e931b
BLAKE2b-256 cdedcc6332d6d0d417ec161a8be36828dbbac3f4b25524fab5982153d9ab45d6

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 492.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 connected_components_3d-3.8.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8a4e4a8bc6db72ea8f26d83ccfac04617cd5ed7d28a8a5c50a6d09f7b58d9365
MD5 634064f3b48b67238de7d28dff6c4882
BLAKE2b-256 c35eb322eccc69596a6cf62bf06b33ef288ae58bda5bdfda7e595849130fcfe5

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp310-cp310-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 871.7 kB
  • Tags: CPython 3.10, macOS 10.9+ universal2 (ARM64, 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 connected_components_3d-3.8.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 0130b9196a47d9a4387b2ce5055b23b1657cf4797a745cea99735f319e87b1ac
MD5 c55ee6e7fa74647176903d4ac6d72c5a
BLAKE2b-256 3cbdafcc0e84f39f93804db97a319ee88e2f669a38281f8088a14ae004acaf23

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 337.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 connected_components_3d-3.8.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b9d7acff52e760d1e24033dedd9c71d293e99d5f5ba8a1a0ace9278c479d2d04
MD5 02894e483f7500824ebb6a65e0a09a01
BLAKE2b-256 7732a84f01267fcbda52b35420feaa66fb21003b32df2968d37aa1b5d1dc2dc8

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 369.6 kB
  • Tags: CPython 3.9, Windows x86
  • 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 connected_components_3d-3.8.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 dc2e47f77a81b69941bfee9f0b3a2e91e034a03bbc58512b199b0bf36855aee6
MD5 18940a4ae764f9402f7f184eee5bbc28
BLAKE2b-256 61ee1f3f5870a170853ad99ab22e706324f29446a6d6d838c6729046ceaaa410

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp39-cp39-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.9, musllinux: musl 1.1+ 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 connected_components_3d-3.8.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 f0ae62f9fa1471a21658a8eb68da9c6d04d206a07d0b5d571ceb606dea122e43
MD5 da57924272b26e32cf02f0307165ed4c
BLAKE2b-256 6e345fffc14c36226de570bed3e519d0ce6a22f0bbc358e19408e2f4a91cae64

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp39-cp39-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.9, musllinux: musl 1.1+ i686
  • 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 connected_components_3d-3.8.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 7f2e7b16442580ecc181d94906ba69ea01f9a7590e1dd9bf2d4335c7b83cf29b
MD5 315a373e60f3c33bd9f1a15f6af01ba3
BLAKE2b-256 4d66dede6aba618aa7e8c50c88bf6781d61fb167f41bccca03d5f402d3ffd824

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 20c52a358b6078c0a5767348ef8978bcbd46871693c776c6e219b82799f2aa3b
MD5 b2917a3d41264d29c69a7bf341086b28
BLAKE2b-256 4a767d75146f91f180959758f310066fe7bd64f841082c277bb827deb49185a0

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 856c1d75e8e0d68be3eb9a7f2fcd2144c722d58374a12056ac1d6d914479711f
MD5 ef01229ce850e3fdf69a705049015486
BLAKE2b-256 68057c25e1e8cd90797f1fb2409900af13775b13aa99454f98bd04a3c23a623d

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e77bbf21c529955034a1c0a684fa0c05098f7c96a2bf6eb896d606f072d94df1
MD5 96eb4acfd08cdfd6a95fd6889d8d710d
BLAKE2b-256 0124566db1b963d87570baa61bce65e9373c5e0564ccdc4f4ce2e6486ffbcbfb

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 492.3 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 connected_components_3d-3.8.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 07788a55bc713f49b19b202e5fb1413c030c9e50eba8f257a9ae76d45659eab7
MD5 9f57f7263dd299a4e4805e10c6408340
BLAKE2b-256 c88cbde55d327d16113ccb77a6b51f1d19362e9aaa9c25eaebd3441151f28073

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp39-cp39-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 871.2 kB
  • Tags: CPython 3.9, macOS 10.9+ universal2 (ARM64, 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 connected_components_3d-3.8.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 1ad58f04bfeea04c4aa6847699a67249f3b521a115c7fdb6e44ae8437552785a
MD5 847b04d55b5320861421ee90d0a97e3f
BLAKE2b-256 b75ee82f53807be058306fec0ced2eda721d9104dc9d5e501b9ac5394c98924a

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 340.6 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 connected_components_3d-3.8.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 55be19a1e832838f773d5d1acb69d44f0aaa9f1c933822b9689140ceec3e7232
MD5 203c97fa3edd5edfffedb8c39ac224ea
BLAKE2b-256 cafa726d8c0042c851839ed68cac1385ebff0c676a68545e9cd16ee4efa50418

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 373.0 kB
  • Tags: CPython 3.8, Windows x86
  • 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 connected_components_3d-3.8.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 868605ea1a8f05c2fc1173bb0448b34d1b32daeeeb88450e45e0472611b7401d
MD5 d4fc3d9f9aaf735811b3f47ba86a27fe
BLAKE2b-256 130e15bc198d351dbfac158cd0ae3edab39864b3ccb43f79ba6a0b0309655f5b

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp38-cp38-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 3.4 MB
  • Tags: CPython 3.8, musllinux: musl 1.1+ 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 connected_components_3d-3.8.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 e09a39f7902a7dc7236b355f81bb82ed116f7781a8f76d7e66734817119b0cb9
MD5 a7c94f60030124efc9ef85c507f10420
BLAKE2b-256 e11b5f8669d109496020bfa2ebd4f5d9644e2fcb024d8977d4798203dc238457

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp38-cp38-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.8, musllinux: musl 1.1+ i686
  • 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 connected_components_3d-3.8.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 791bfc7adf29dfc17835b26af447fe57fb4cd8c057af6a9f0467cc53c94e76e1
MD5 572d2d206de23ec9cd2858c52e1e980a
BLAKE2b-256 9db18eb2aa46e0f3e96ea9dde9ce74089f20c8e1af93a28ab8ac15c96ea64a8a

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 31c57b7d30dbeceedee47d1911417d55ebd3a19675ab45daf14fb56b45a8ce8b
MD5 092dea89bc6f0f6f00db5ca238dd92ac
BLAKE2b-256 d2421f87cf289135bdfaa6bca04168eca495aea6bd540bb05010f0fbc4462259

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2e508ded2cc59eb51c6af40dc9866a31fa58e08d1affc34206c26223ad7fb874
MD5 14404383798bd649194f1c05100868a1
BLAKE2b-256 4a5b25d29bfb43d79b8ffc3c1cc819d9883591fa21104c9ff98631273223e8f6

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eafb1124a56e5fb3bd2c8297c321e2a8998b07dad66016e5f5490b12c0684372
MD5 a9f8e335843e679618d95d0a2629cd99
BLAKE2b-256 b60de016aded3135c16c03847cff940d5adfcdaac21738271af9ba75fedd2b01

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp38-cp38-macosx_11_0_universal2.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp38-cp38-macosx_11_0_universal2.whl
  • Upload date:
  • Size: 861.1 kB
  • Tags: CPython 3.8, macOS 11.0+ universal2 (ARM64, 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 connected_components_3d-3.8.0-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 1f1296a29c307e64e05fd9e2a9455a0aff441f79a6e1c0d6371f3c561ea68ce6
MD5 0b397c3b423c444ec2c3034aae5df29d
BLAKE2b-256 f15af0e95f360b872cdbcff1a43f70f2fb54326d9e1185b5486418467c42adb8

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 487.1 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 connected_components_3d-3.8.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 082656e292b082b6d183ccb7c6048afb47590ca45e8c062f4b5c84767b1c35d2
MD5 c01c23f70b495fe6a2b25cbaaf115da2
BLAKE2b-256 3c744dc750a84ac0ee9668f8246038cb5f3e943f8337c3353eb1fc98a7ea0875

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 328.3 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 connected_components_3d-3.8.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 7765ac659de35c26f18dc029c7fb1f501d062b897b857741e72103cfd55e800e
MD5 e0066a9c00fa61f6da60121e11a22f36
BLAKE2b-256 4283f13e5de53f456cf9bacf132127d528ada256a341ae1803eb11e3645fdfa5

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp37-cp37m-win32.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 363.9 kB
  • Tags: CPython 3.7m, Windows x86
  • 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 connected_components_3d-3.8.0-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 3b0180cd93cd2fd18c77cb147cfab01ec9bb8e88904bd5fcc497b18ef02ad53e
MD5 5250f127abb0fdfbfbf94521d8d2ec27
BLAKE2b-256 5bc5260788cc02a6c0890ce07198f5e6bd76c690ec0c088b0919ee7f7746d8aa

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp37-cp37m-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.7m, musllinux: musl 1.1+ 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 connected_components_3d-3.8.0-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2d1ed6e203828b4edc84f2edc9390583f1d0f62fe03eace6b23a5fd0194919ba
MD5 759e58567657078b32c7d7907824602c
BLAKE2b-256 ad3a103755fbf2134d2784d31909ce03b277740f182f0ae25a756b6dc676eaa7

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp37-cp37m-musllinux_1_1_i686.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp37-cp37m-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.7m, musllinux: musl 1.1+ i686
  • 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 connected_components_3d-3.8.0-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 cc02a2808a832ea8bf433e99ff37c8a417becf8ccf592deb165876e7bab5631c
MD5 009132702fe1aee37d106e830fb6e024
BLAKE2b-256 b6a183c120e5cf789db65d58624e257db7699b50845e47865671cec4a5733383

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 09bc83e77926ce4686890470105c0a20cca4cbee7016dfda198b724b5fff8098
MD5 487e286b27573bfbd2bd9262dc37801a
BLAKE2b-256 50999f6c28d52093f1826228b74f9a70f55f8b59a49deed5a735b17027697f3e

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 74afc223292164c977d43093392afdf601ffdad9ac9bb4050e90119150de14a9
MD5 ccf9468fd844a5ac56a9b98df4ea9ef9
BLAKE2b-256 53fc989c2f9b2a4f9c29798ac00c97e16c7af7395cada4e2ade660b470a21102

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 047f0881c825e01e01c897a30534aa6374d78c0afc5895da53f077042b186a3a
MD5 1360a701f011e7d1e641e859cd733409
BLAKE2b-256 807ec1399c5f4b649b267060bf81c2c8dc3c059c9d1e52f8dc4e2b3fd0043d19

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.8.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: connected_components_3d-3.8.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 480.9 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 connected_components_3d-3.8.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 58fe4975fbc924592df84c76ad49fca9334558a1d728dad09e3887a3bbf4005f
MD5 a4e28fb0fb15e3498d629663cda3c630
BLAKE2b-256 e6afdb3e8424efe147fbed6128e12316768ffa289d66428ad40b669cf4a77c3a

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