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

The following functions are available with examples below:

  • Connected Component Labeling (CCL)
  • Removal of small objects ("dust")
  • Extraction of k largest objects
  • Fast extraction of all objects one-by-one
  • Calculation of contact surface area and contact network
  • Extraction of a per voxel connectivity graph
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 need a particular dtype you can specify np.uint16, np.uint32, or np.uint64
# You can go bigger, not smaller, than the default which is selected
# to be the smallest that can be safely used. This can save you the copy
# operation needed by labels_out.astype(...).
labels_out = cc3d.connected_components(labels_in, out_dtype=np.uint64)

# 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

# Compute the contact surface area between all labels.
# Only face contacts are counted as edges and corners
# have zero area. To get a simple count of all contacting
# voxels, set `surface_area=False`. 
# { (1,2): 16 } aka { (label_1, label_2): contact surface area }
surface_per_contact = cc3d.contacts(
  labels_out, connectivity=connectivity,
  surface_area=True, anisotropy=(4,4,40)
)
# same as set(surface_per_contact.keys())
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.10.5.tar.gz (593.8 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.10.5-cp311-cp311-win_amd64.whl (333.5 kB view details)

Uploaded CPython 3.11Windows x86-64

connected_components_3d-3.10.5-cp311-cp311-win32.whl (369.9 kB view details)

Uploaded CPython 3.11Windows x86

connected_components_3d-3.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

connected_components_3d-3.10.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

connected_components_3d-3.10.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

connected_components_3d-3.10.5-cp311-cp311-macosx_10_9_x86_64.whl (511.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

connected_components_3d-3.10.5-cp311-cp311-macosx_10_9_universal2.whl (916.8 kB view details)

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

connected_components_3d-3.10.5-cp310-cp310-win_amd64.whl (334.4 kB view details)

Uploaded CPython 3.10Windows x86-64

connected_components_3d-3.10.5-cp310-cp310-win32.whl (371.4 kB view details)

Uploaded CPython 3.10Windows x86

connected_components_3d-3.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

connected_components_3d-3.10.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

connected_components_3d-3.10.5-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.10.5-cp310-cp310-macosx_10_9_x86_64.whl (515.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

connected_components_3d-3.10.5-cp310-cp310-macosx_10_9_universal2.whl (921.2 kB view details)

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

connected_components_3d-3.10.5-cp39-cp39-win_amd64.whl (337.9 kB view details)

Uploaded CPython 3.9Windows x86-64

connected_components_3d-3.10.5-cp39-cp39-win32.whl (374.4 kB view details)

Uploaded CPython 3.9Windows x86

connected_components_3d-3.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

connected_components_3d-3.10.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

connected_components_3d-3.10.5-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.10.5-cp39-cp39-macosx_10_9_x86_64.whl (519.9 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

connected_components_3d-3.10.5-cp39-cp39-macosx_10_9_universal2.whl (929.6 kB view details)

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

connected_components_3d-3.10.5-cp38-cp38-win_amd64.whl (339.9 kB view details)

Uploaded CPython 3.8Windows x86-64

connected_components_3d-3.10.5-cp38-cp38-win32.whl (376.2 kB view details)

Uploaded CPython 3.8Windows x86

connected_components_3d-3.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

connected_components_3d-3.10.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (2.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686

connected_components_3d-3.10.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

connected_components_3d-3.10.5-cp38-cp38-macosx_11_0_universal2.whl (914.9 kB view details)

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

connected_components_3d-3.10.5-cp38-cp38-macosx_10_9_x86_64.whl (511.2 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

connected_components_3d-3.10.5-cp37-cp37m-win_amd64.whl (326.2 kB view details)

Uploaded CPython 3.7mWindows x86-64

connected_components_3d-3.10.5-cp37-cp37m-win32.whl (367.8 kB view details)

Uploaded CPython 3.7mWindows x86

connected_components_3d-3.10.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

connected_components_3d-3.10.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (2.7 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ i686

connected_components_3d-3.10.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.5 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

connected_components_3d-3.10.5-cp37-cp37m-macosx_10_9_x86_64.whl (506.8 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: connected-components-3d-3.10.5.tar.gz
  • Upload date:
  • Size: 593.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for connected-components-3d-3.10.5.tar.gz
Algorithm Hash digest
SHA256 0f1d030f2df8ec45744bded9dc61e9ab8d34de021f9fb9ee9b946af97d9c7768
MD5 8e7a9c019fb443aca761b7be5e516730
BLAKE2b-256 aacf44a8e075167c822b86abf9294e09dded441f932f84ea5fbd978c83b4eb56

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.10.5-cp311-cp311-win_amd64.whl.

File metadata

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

File hashes

Hashes for connected_components_3d-3.10.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c972fe90de58d7f6a48a548bd4ca59a667e160a860007f97fa386eecc405c19a
MD5 4b6468a16762df0dd07f93142b5fef74
BLAKE2b-256 d264fae64cda712dffdcc5fe7dd09749e6a47977d321fad31b82c55c8f01ee57

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.10.5-cp311-cp311-win32.whl.

File metadata

  • Download URL: connected_components_3d-3.10.5-cp311-cp311-win32.whl
  • Upload date:
  • Size: 369.9 kB
  • Tags: CPython 3.11, 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.10.5-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 ba80320c2804fd142df1a2c3bb42cbf1c123d2b8f3c10445005c23c2265aafc8
MD5 5ae3cd7f999e3c182140fcd4604ad1c2
BLAKE2b-256 87ca89b0305b7bd22750da1971a90be8d2ff9b486dbb2146b7bffb41b3071eab

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 381f719134126d7801350c47989affbc6d67f8821303f5f4801025f8f2118fcb
MD5 a1458aeb0d013b5b1ccd3514638b67c5
BLAKE2b-256 677e434194a7e116da20e1c9e26e72a3e4b7196baec500b77449aeaa1c941c9c

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.10.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f9e8c21a214de80ae72656ac1aae0bc3984a3feae2e5172021ffc8314f709599
MD5 8ccf1d4578a1e2ac086510af4a955003
BLAKE2b-256 b854cadb0e78b850b9650cc2cdf665aa72839963db3c0e00c3c858cb5990abf0

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.10.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a3708e90ea6776ab53882911b5eec608b4a540873c8ea7390ab3a67680a23482
MD5 f4fa977315219996b8301271f0285c9a
BLAKE2b-256 20a102213ef6bb73d74289bf91f001d15253e00d2add25efa8aa8eec7a8de7df

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.10.5-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ad749f66a7a9ae180cfca18852ebce7edc59b2d8c5ef23afc13def9c2ab76100
MD5 6566def1edb95e5bdd46d6ec7f4adde0
BLAKE2b-256 f2e6bd41c6b08b1c6043397642142dd3cc94ef81df284337e24ed797afb3fbb1

See more details on using hashes here.

File details

Details for the file connected_components_3d-3.10.5-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

  • Download URL: connected_components_3d-3.10.5-cp311-cp311-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 916.8 kB
  • Tags: CPython 3.11, 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.10.5-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 bb5a827e7df9db3e5caa195714bed5ad4bd5d2b2095628276294111c34403577
MD5 e1b935f38a077856b339130b6401bb04
BLAKE2b-256 096e8bc8edb37aa77254c578e487693b1c0ad6cf1fa78540593c2a1ae6d401cb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 334.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.10.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ece6045b87d9d62fd71bdf90c338061811a983a2d547d278dc8b2da23381333e
MD5 b5b0748623ff724d3828f4060bc73acb
BLAKE2b-256 f6236fa4dfb33e425c4341396c93d04186a94cedf51513814197d22064cfeab5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp310-cp310-win32.whl
  • Upload date:
  • Size: 371.4 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.10.5-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 2526357ed6feb54b453807d25ed588628bffb043bc2bf1e08b19231832faced9
MD5 0ad167f6226be606cd085a8e95b9fdab
BLAKE2b-256 72d7504fbbb2a8480baf29dc00bd07cec7f1387dafe7243d668ccacf84a697ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6b6bf1a5c94e060d7d9da28775ce049f50e75513ab621115060bfc6a20366fe5
MD5 f110198b3f8181cd139bc431b58170bb
BLAKE2b-256 c491419e4ab948b901e7c6f77f01b707b766d92749c35e15597fc1d8ef2dad0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 15dc3c213b6151ec63ec27adbf7faa3455191a91b986b17d26aff2833c5b531f
MD5 faa5a815a21d5a4cb8b0cceaba846b46
BLAKE2b-256 50ef887b1e16e02992a3e2edb5abda2847cfdedddc1ee0b6d75c74d8ba36c497

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 56f04d2e687b3b183ecac697661fc2b4399cf3da77bac4876ddd8cb8589ea63d
MD5 ab338d9dbdbb31cb405fe1e065692d83
BLAKE2b-256 97910f6778725aa66e6c6a39cdd981c69b3b58833e6c4fb1c24884776be54c32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7e7485e801dea1f3b18b6170dbe816010f2289c0031b8f44efd2bb82a924eff6
MD5 bc506b46fc5545ac2984afe2acef5cd3
BLAKE2b-256 08971e1827ea9c3c59bea4e4d3a7c8ba4d680b4424ddcbbc01e1bb936c71bbc1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp310-cp310-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 921.2 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.10.5-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 dd88e93b446d642e11a9f970721ad6c5bd5ffa0fc72a1037fd22092bfed6968c
MD5 936c54eae5be79c925177a38cc4ad086
BLAKE2b-256 554d7bcfe188674964f93d80d6bf68e34634fd13434c4c2475421f60923df8d5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 337.9 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.10.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 682ff371ccad6a6aff22b9161e27131a1b93c1bcc06e273854728b8090caa6ef
MD5 78eefc284540c6bc465f6c62f3d361fc
BLAKE2b-256 82c619ae81e4b75368a39d0dde548716ee358bba2639a44459fd0ea21cebe7cc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp39-cp39-win32.whl
  • Upload date:
  • Size: 374.4 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.10.5-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 1ba7cdbb77b87bbea0cf37e8a489ae9693437962109cd3bb964e6cd200991d47
MD5 7fd8ec022b91c2961ecadcfe195b686a
BLAKE2b-256 355c12ccc75ea2376fd8b6638876ee338e5af924ac62bbff006cc345d4f33cfd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b98a6ef7b1ebed4adae73042bfecee83703bff2f18c0d3dce29ec4fd13e271b1
MD5 fb916257c0c88ac4fc5f39eaabd908d1
BLAKE2b-256 7521e9d056767e537167dd1ab8d53288edeb9151cc0c237c727a996f3599bc43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 28e8ae225bb7e80ff1f06e78c57b1b4faec41a23ae4a0269bea118e488f66542
MD5 7923a46aa3a8e87170df540dc0610b66
BLAKE2b-256 72a77f0ac72f9751c72562601db060f84fa41b3ee161fc733e41159263da4c70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7ef38b70b172c03048e527118f6253e40aaaddb9c75aec4e1be08a52f3149d4e
MD5 48e05c02c6c6b351780ffc31d83ca255
BLAKE2b-256 878a11dd5bef68ccba9e52f68f64de22b99e51b42a9d57d9db95ada9c5639005

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for connected_components_3d-3.10.5-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 19fd8fb8688427a9a84dea9e96fd9de68cd529a02f7982f99a4b9cb16acb4b42
MD5 feeafc08ba4ea9f2ce62ca3951eb6670
BLAKE2b-256 5be38410c4e46f7d2557484ce0fe5e2f7c84a9a74e176431d8acc1bb3731d88c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp39-cp39-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 929.6 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.10.5-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 32d46a8abc956625e6fc8eb06ffa7f9e4f3722024f404a4a1104cdbad9e4d3cc
MD5 520aa18f4e9e5958990f0e334690bd57
BLAKE2b-256 708b6c77852e4d8a182967e1f6a2781a1ef73c3ae5ba7f43c223f9bb1a27ca82

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for connected_components_3d-3.10.5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b274649f29d8dd4ce3f110811a820290e117fdc2de34166a7867479b67c961a1
MD5 1180df983d09f4c025753a7f466332a8
BLAKE2b-256 d4bd18e3cc0794977c534be7fc0aafb72422ee5733d2bfa41bb271fc7f6aebde

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp38-cp38-win32.whl
  • Upload date:
  • Size: 376.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.10.5-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 011ae3d94e8084d058ac931736b65fac9a4244c92f454129c1551dcc7742af8d
MD5 ff780c11c52e727d29a52750fecb08a9
BLAKE2b-256 72cb2e87da9c4ed06edcc377393e274b4d1ebc4b020ec3c99fcb586473ee33c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d1f8540bb16fd15bc243b84b0861b9a256bc8b0b75616461bfafcc617127f7c4
MD5 53af6a6420ef4b2ea2d12ec2284a49b9
BLAKE2b-256 b417bf68d29af0034f71d2eb43ffb6b335d1dd930a25da6b027d3ae5e6d2f643

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ba0659850740598caaeec2fba19dfb65186e974680468eb4f56d89d1053b5ef3
MD5 5180fcd3b652d60026e92520b4c825a6
BLAKE2b-256 5d07b6c220eda9f251c4fd9224d56db73fd6e4b3310d971ee41786121a3b4e55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 52df64c3990d25413c73a5319bbd90b9069a6fb7de01b85674d4a89da1c465bf
MD5 068ea73d5f0fbd3a41c596b1a6dce8ac
BLAKE2b-256 227bb95cdcb9722aa40cade6dc4f018e88779d05d9f9930a6fbaad09a290cbbf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp38-cp38-macosx_11_0_universal2.whl
  • Upload date:
  • Size: 914.9 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.10.5-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 43deedd2f485d70010d9ab6a99e5afd1b19c27a0c1ade74a5f82050a27335e2b
MD5 f4164728dd19cc272e4d83bfbeedeee2
BLAKE2b-256 2636fa3ca148403690b39fa0e3052f5a6e4ceb949a5abee413f65a4441e7b535

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 511.2 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.10.5-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 beb8f6aa399a452aca76c8352036f4f5e49461449f170241e1c7e8c615b650d5
MD5 f644720d05fcb63989ae61d06df7ffa9
BLAKE2b-256 fec47c19aceb9561bbfe072b8755db1f91cdbcccfedcb471ad7f10188e1e7f9b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 326.2 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.10.5-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 1ac7fe2061cb8cceb7e32391f79b9cb3449c802298347189b25de39b203936bc
MD5 3b1051cadbf9a0e4939843edf66b53c9
BLAKE2b-256 33ce1c6c84efc904a9b03449c845873ebb8fd46fa4ce963d1431720a4ba80c70

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 367.8 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.10.5-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 82afa3cf89f41c52df7cab0e7e1e0997b1fa037f918bc414e43aab014c4f9448
MD5 584fc7886419dacf47043946e0a26f6c
BLAKE2b-256 570472049ee0326af7efa88ce39ca8583404e2e08bb1c26d21e10f6b454f6b4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e620514ce890282d926356753f3b1570fd2de6642f8ce062b8999ff3a3026cd0
MD5 f878ae33550541f96e1558d03c69e420
BLAKE2b-256 1d265b35a3ce482d4bea0f87200f796bf991b7b274d989f412f4d550df910b86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5a0684af199706fcd3ea0640baa9a7dae6f044b7d3375892637a35e228bb01e7
MD5 bff99cb7224e83373abcc60da454fcc6
BLAKE2b-256 8581af51ca82599daf7cca7834f55ad38ffc79e1c068a14ab3b218e993ea6cad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for connected_components_3d-3.10.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f84f7a13ffb553c349133055715607db0ccd6154801076813bdde152dd759496
MD5 27cfd14d02e4efaacdac613776bae87c
BLAKE2b-256 6faf8ee5062904edf39a963e9a5f74254fb06abc73c880311b67d3399a0b24bd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: connected_components_3d-3.10.5-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 506.8 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.10.5-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4e14ef41370631d19927faffdcb0df10409f07a12c9fb6a5749b6dabde105803
MD5 7374137611085f5e9a6d75da2bb54c12
BLAKE2b-256 510b0c44394ec684d027c8138a4f0ad9f142021cddb2c2626def06dc90ddbe33

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