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
)

# 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.7.0.tar.gz (570.0 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.7.0-cp310-cp310-win_amd64.whl (331.1 kB view details)

Uploaded CPython 3.10Windows x86-64

connected_components_3d-3.7.0-cp310-cp310-win32.whl (365.1 kB view details)

Uploaded CPython 3.10Windows x86

connected_components_3d-3.7.0-cp310-cp310-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

connected_components_3d-3.7.0-cp310-cp310-musllinux_1_1_i686.whl (3.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ i686

connected_components_3d-3.7.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.7.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.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

connected_components_3d-3.7.0-cp310-cp310-macosx_10_9_x86_64.whl (483.6 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

connected_components_3d-3.7.0-cp310-cp310-macosx_10_9_universal2.whl (855.1 kB view details)

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

connected_components_3d-3.7.0-cp39-cp39-win_amd64.whl (331.0 kB view details)

Uploaded CPython 3.9Windows x86-64

connected_components_3d-3.7.0-cp39-cp39-win32.whl (365.2 kB view details)

Uploaded CPython 3.9Windows x86

connected_components_3d-3.7.0-cp39-cp39-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

connected_components_3d-3.7.0-cp39-cp39-musllinux_1_1_i686.whl (3.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ i686

connected_components_3d-3.7.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.7.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.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

connected_components_3d-3.7.0-cp39-cp39-macosx_10_9_x86_64.whl (483.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

connected_components_3d-3.7.0-cp39-cp39-macosx_10_9_universal2.whl (854.7 kB view details)

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

connected_components_3d-3.7.0-cp38-cp38-win_amd64.whl (334.2 kB view details)

Uploaded CPython 3.8Windows x86-64

connected_components_3d-3.7.0-cp38-cp38-win32.whl (368.2 kB view details)

Uploaded CPython 3.8Windows x86

connected_components_3d-3.7.0-cp38-cp38-musllinux_1_1_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

connected_components_3d-3.7.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.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

connected_components_3d-3.7.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (2.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686

connected_components_3d-3.7.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.7.0-cp38-cp38-macosx_11_0_universal2.whl (844.6 kB view details)

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

connected_components_3d-3.7.0-cp38-cp38-macosx_10_9_x86_64.whl (477.8 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

connected_components_3d-3.7.0-cp37-cp37m-win_amd64.whl (322.5 kB view details)

Uploaded CPython 3.7mWindows x86-64

connected_components_3d-3.7.0-cp37-cp37m-win32.whl (359.0 kB view details)

Uploaded CPython 3.7mWindows x86

connected_components_3d-3.7.0-cp37-cp37m-musllinux_1_1_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

connected_components_3d-3.7.0-cp37-cp37m-musllinux_1_1_i686.whl (3.0 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ i686

connected_components_3d-3.7.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.7.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.7.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.7.0-cp37-cp37m-macosx_10_9_x86_64.whl (470.4 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: connected-components-3d-3.7.0.tar.gz
  • Upload date:
  • Size: 570.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 connected-components-3d-3.7.0.tar.gz
Algorithm Hash digest
SHA256 f501a73ab19515d4898eb20b533b655dd9ea09f8db84141bcd812d85ef5d67b8
MD5 42597263703bd8ec15fcc86ffcec0ae8
BLAKE2b-256 69a056b870a7fb4117a5f3f35ff89c2b961c70d6072653eaa8665366abe76ba7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 331.1 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.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0fb9717d56fd0e86657bb3bc5b59220b40f6044df0a577183b5ddf5a91f3dcfb
MD5 8f5154dfa9cf4587361683dcd377eebb
BLAKE2b-256 f964cf27d6632614c8794d23b2a8ad38c5cf65a2527d6b0c69eeb9c983142562

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 365.1 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.7.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 0d3f607bac3ed3cd8d630c616525c462348d6f94a5a8f4bba03bf2ce973cd2be
MD5 71410b74a925518deac52c27a09f4e78
BLAKE2b-256 864afc43e924e3c36d43c5a934d80f42ccce1a2a5bb4f3b556f2b7b72ba5b926

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp310-cp310-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 3.1 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.7.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 21ba563aff9e7888bb3b2be5c3c637abd78f455cfbe8cae4783bcbeae6edea90
MD5 0530afa8cd9b2c741e4bbcab43a4b525
BLAKE2b-256 5adde9b02b1149c9509598390ad28488e79b369ce036e2725f16a82e1c8b1281

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp310-cp310-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 3.1 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.7.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 c93e663dcb1d722eadf40c128c8a43a03262540f330b031e87ff1cc8613766e5
MD5 d197d5d3def180f60e1c603198cd68b9
BLAKE2b-256 601c1d8ebaad4ccb4c53772e555954d36bd0aaab2c28b62fcf18f9da06121891

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ef46f2ddccdfc437d692c4c0c193831b8b3c2c587a92cbe3c5c2b281b94a9b2a
MD5 7439a145da47e90562fd506e8cce6295
BLAKE2b-256 b7d21e666d6b7220596f24f76c5879969bae712592659944c322f945a2da9c0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 bd7c05922a08720205367be23f1dbc94b76606ad676800cf6aeca75b63bb60b5
MD5 43b009995520b1e46d49e79407cd4c33
BLAKE2b-256 765a27d1971a9f1cac70a8b9469cb0e70028b7af29f731bbaff18cbb65c7a99d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fe1514c0b9a785a961fbee4259f2d6563b3371fc3befdc8bebee1b24c6d211f6
MD5 9a5d7ef48a8b1afed8c554e4b5c5a00f
BLAKE2b-256 5f62d232b6f77c6950f2f66cfe6f97f8a75b612dab51016741e1b64e51a943db

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 483.6 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.7.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ab4ab9811701a7aec2d623b09b4e0155615130246021f61bcf81db9765676dd7
MD5 430f96dc517593e81cf597dbf6f5f9a9
BLAKE2b-256 c2a6e22f21f141376e199bde738da8e6cd1660e479bfa420c721c51fd572f316

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp310-cp310-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 855.1 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.7.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d9296275f799d7fbfe31057a89df75b1b4b1febda93fd986d536d50dba5edd52
MD5 bf69284362f289d7f5be4989af3c9701
BLAKE2b-256 3f5137eac0c5d828c4450be0725ebd1ddbcb710006853580caf12aa48a10b634

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 331.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 connected_components_3d-3.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d16e23ce4fd3dfcce27fce75ddfec5b25ae9bd57798c5e74b826e8527a905f70
MD5 4ab824128e35535b4f98cbb92a522ec4
BLAKE2b-256 8b8d0ddf67d569f805f819455572fea03ff3f11a10ae3e5d7232e54ba0928525

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 365.2 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.7.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 8a2a8979b3405f972e0fe4077e592b6b0336d61f56517cdeff6817f4b85ceb63
MD5 bab9e0ec2843c2436f7d15d8415c87de
BLAKE2b-256 7d50d9202eb599205928e576042c50e0094a02794fcc918e468229f78a3f8af1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp39-cp39-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 3.1 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.7.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 e451cb2243004ce62cf8919ff25813b2f91cbab446d49d75bb15344c9fe358b8
MD5 a917174237942e7be882aa2e6aabb2f2
BLAKE2b-256 760f1ea677d2d6b85abf1aa1115a34d56f0170b4785b49e2750bff17ec1fce7e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp39-cp39-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 3.1 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.7.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 374b5fdce5d5a95b16235f0f8ecc550aec6c312b2890423bc9afccaeba5af768
MD5 40cb50e126cd3112a006abda6156c748
BLAKE2b-256 cb6c605a2cb701d01e01291462dd1af747887789fdd9b1d679739d0841c6e37b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd049505b901a345b0d8fe82844b8bde3e274ff60ab1ae6c4809b2187aaa2524
MD5 2cb0981ca739be7d3aa01fb789d261dc
BLAKE2b-256 8558e6f8335d9f838f439e993eb8ae0ed2f4756cb4a214874bab025409198be7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ec4eb30b0e46e4f499f2389d5f11e1f1ce2a71d61bb39467fbbbebe6bb457f86
MD5 6ab91fb74230e2fe333e05a197ed686b
BLAKE2b-256 efbb667baaf0c099897fc9d5a78378254b4ad1d95c9e22abf2c3e8c6501ed72c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ad19ddd337d4a879015eb1b5719c6f974f1e35a30689ca0be65d912e0c5ddfe9
MD5 fd96f236c88b52f02ffcee391e17b3e5
BLAKE2b-256 ebef53091a30001bd8d0eebe9c94b4996fb28aebd2f67804b833c6aabf562659

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 483.5 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.7.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 87685f187b840dd79561c539ea8e886786a5cc0f9028659a613492e324571d02
MD5 968162b3b6a4b6a38f8a298ea88d372a
BLAKE2b-256 f79a7d893f70edf6ddd7ac71c6ebdd014e6903a2224999a6179eff2c23f6a286

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp39-cp39-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 854.7 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.7.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 48d7e85389c8864654f473367c1597be649b6ab7537c53a9ef35bbd7293903cc
MD5 7c1b3b593f2fdeff71ec25f092f060c1
BLAKE2b-256 0c60eea8af878b9c18aa87f0b3e3353b14df52af2fea9b0c23e4f0c33f98ac40

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 334.2 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.7.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 717bbabaf844b50924aca4292bb7030a546b8863d1b40ee81a72051b06542cfa
MD5 ddd339486458d65d47ef69ff04a3c456
BLAKE2b-256 47da42576096b55c7921238462a9479fd9699f7bcc8bbcc089778e06a31844e1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 368.2 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.7.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 c97c31840206c8804cdac4a0a4841a667bd429aa1c07d126f26dd819e628e9c0
MD5 caf254ccaf729612c7aef00f7d967cd2
BLAKE2b-256 e6cd0cf1e1812c4cd26403e1c106e92ae6e5ad61d47673160460eccd6f32037c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp38-cp38-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 3.3 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.7.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 4d241c24b9e04cb94cfea54ebee4c4723466ead8655cd86a7be5d2ee20320ad4
MD5 81ec3d93adbfc33e7f66b2961a9bfd47
BLAKE2b-256 2d789eb698883e2bd686f3a8a8aa9980bd8304e1b277a92af4c4e45d53b4f585

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.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.7.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 691315d3a20e58ed82f87018450b8b96dd99a2150da61006887cc44d51625c2e
MD5 ad50e6544a4a86fc644008e6eb085799
BLAKE2b-256 0e841f3ea77cfa6956637b86ed99ed31973d76b23d9719d1c3257c66cca20b60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 84c78e939131db706638f0e44cb7c66925f87f74addf6f7af27a089cbca7aff1
MD5 3415b00c908cb981bb795695ff784956
BLAKE2b-256 a9e8d5abff819417a289bc92aeee4110e6cb52a65600c182195831050a18ea93

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b1bac3448f61636b3f7ca5eac41e7ddfd22fe4a30293b6c8b6a32271d4c09923
MD5 066d8f6ada09c0b4e5eae96c6e6573f6
BLAKE2b-256 6a7b1f671283abf2d9ec4584a0723a5a40315c1cf3b185765f63967ad86ef15b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bcef9d1651131d87cd90ec9ead60004d06b5df2a56978aebaf5e42cee03a65be
MD5 887b812e45aa3463444f3e447d4c3b03
BLAKE2b-256 22f6998e495b5e52aef4790168139ebe07588793e728192784b9875b69acb9ca

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp38-cp38-macosx_11_0_universal2.whl
  • Upload date:
  • Size: 844.6 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.7.0-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 f26d826623ee2d066193ec87366b00db11ce46a51fa7a861b6977a557f9aa977
MD5 ab72d61390027e5b6e17a81113b9bc6d
BLAKE2b-256 50a9a3d42e911287216b0b4bacf9b49dbbc543e13de2acdab8e78969c14b402c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 477.8 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.7.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 81a462b7093257ca65e797c7c7a0ccc9c6306884c8d1663944185796c713d766
MD5 e1137f441791b061a65d12d83faecf61
BLAKE2b-256 65b9885512072883c1b21cfbfe92a6710161bc618f03d71bef6929b34b03ac7f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 322.5 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.7.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 39beccd1b16d44096ae5558922fb96311ab7d4ed0719c514a17ba2f49090e723
MD5 06f2a6dfd01642b03e66f0a775e7e7ca
BLAKE2b-256 bd6aeb88570dfda91d386854af380787599636a55df42e1f296fdb2d0503d847

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 359.0 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.7.0-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 f5990a9f82c2880f5a61099d6774188ee122ec9fc9e5be3d6c75b00932070a03
MD5 36b2e5eb73e819488c57f772a169ad6b
BLAKE2b-256 ce3c53a96bad5200fd5d6088e5d57e990509a521cdc4171d7857eea1f09398d0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp37-cp37m-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 3.0 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.7.0-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d0997757e87a358c941fec16a612e4ac0468d93351f56f9c3bd7e4bad06e3c25
MD5 362f22337556d346d904389d480e76f9
BLAKE2b-256 7c33e3f9f8a626f7745b72bc016fa6523333cb86b3794702a84ca570fb1d6e3f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp37-cp37m-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 3.0 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.7.0-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 530c535407d6f642c2624958d184e3d04428da90bd9ff53d5f359feee6cabc29
MD5 848114f02bb46f0b2d41935c38064b85
BLAKE2b-256 01e9dbd60e830e77c319fda82ee162110e2086506ab661ea8c05c0aaa0cc5ddb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 38b80287861ee756ef28ba1a03ec91322a24c4cdd493428e1c99788cd504a091
MD5 056e73a7df4ace821410716de960e951
BLAKE2b-256 980342e9c018c6d61edfa9228f1fa38ff61a8ee868b7794fef96aacb25c616ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 161cd48b9912cdfc9186deee50bb6d1deb7e6878d1b214493b3284969cb11f61
MD5 c07e1413a9605ec6d0dd12d2cf01a09e
BLAKE2b-256 699dbfa61ffd50ce56ae0fae0d94805972630d5a005d82e3f5cc695e8795cee2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.7.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 329cbceb8b131f01d4a4eb115ce1ac54cca4bfa6ca6379086a467facac4f06da
MD5 ffc76f57cd9f76bd10392b2d44c383af
BLAKE2b-256 2bcb6de6e46818c1ba34aa0b635ca8c49c7b1a9183e9b67a7633c673d25d3dfe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.7.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 470.4 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.7.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b4556074e20e817011a764c220c26f002673d3a84d8e78b1a622c43fc6d3af00
MD5 ce46b046d412b776781d572dbf532733
BLAKE2b-256 f9394e6caae4b157ed32af189f48460d65d89c8b4353a3f10c212d54582cb05c

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