Skip to main content

Cut-Pursuit Algorithms, Parallelized Along Components (fork)

About this fork

The original code in available in this repository. https://gitlab.com/1a7r0ch3/parallel-cut-pursuit.

This a fork for python packaging purposes.

Please post issues in this repos only if you are sure your problem is related to the packaging... and please post issue on the upstream repository only if you are sure your problem is not related to the packaging.

See below the original README (only the python section was modified)

Original README

Generic C++ classes for implementing cut-pursuit algorithms.
Specialization to convex problems involving graph total variation, and nonconvex problems involving contour length, as explained in our articles (Landrieu and Obozinski, 2016; Raguet and Landrieu, 2018).
Parallel implementation with OpenMP.
MEX interfaces for GNU Octave or Matlab.
Extension modules for Python.

This Git repository uses submodules.
Clone with

git clone --recurse-submodules https://gitlab.com/1a7r0ch3/parallel-cut-pursuit  

Pull changes with

git pull --recurse-submodules  

Table of Contents

  1. General problem statement
  2. C++ classes and Specializations
    2.1. Proximity operator of the graph total variation
    2.2. Quadratic functional and graph total variation
    2.3. Separable multidimensional loss and graph total variation
    2.4. Separable distance and contour length
  3. Documentation
    3.1. Directory tree
    3.2. Graph structure
    3.3. C++ documentation
    3.4. GNU Octave or Matlab
    3.5. Python
  4. References
  5. License

General problem statement

The cut-pursuit algorithms minimize functionals structured, over a weighted graph G = (V, E, w), as

    F: x ∈ ΩV ↦ f(x) + ∑(u,v) ∈ E w(u,v) ψ(xu, xv) ,

where Ω is some base set, and the functional ψ: Ω² → ℝ penalizes dissimilarity between its arguments, in order to enforce solutions which are piecewise constant along the graph G.

The cut-pursuit approach is to seek partitions V of the set of vertices V, constituting the constant connected components of the solution, by successively solving the corresponding problem, structured over the reduced graph G = (V, E), that is

  arg minξ ∈ ΩV  F(x) ,    such that ∀ U ∈ V, ∀ u ∈ U, xu = ξU ,

and then refining the partition.
A key requirement is thus the ability to solve the reduced problem, which often have the exact same structure as the original one, but with much less vertices |V| ≪ |V|. If the solution of the original problem has only few constant connected components in comparison to the number of vertices, the cut-pursuit strategy can speed-up minimization by several orders of magnitude.

Cut-pursuit algorithms come in two main flavors, namely “directionally differentiable” and “noncontinuous”.

  • In the directionally differentiable case, the base set Ω is typically a vector space, and it is required that f is differentiable, or at least that its nondifferentiable part is separable along the graph and admits (potentially infinite) directional derivatives. This comprises notably many convex problems, where ψ(xu, xv) = ║xu − xv║, that is to say involving a graph total variation. The refinement of the partition is based on the search for a steep directional derivative, and the reduced problem is solved using convex or continuous optimization; optimality guarantees can be provided.

  • In the noncontinuous case, the dissimilarity penalization typically uses ψ(xu, xv) = 0 if xu =xv, 1 otherwise, resulting in a measure of the contour length of the constant connected components. The functional f is typically required to be separable along the graph, and to have computational properties favorable enough for solving reduced problems. The refinement of the partition relies on greedy heuristics.

Both flavors admit multidimensional extensions, that is to say Ω is not required to be only a set of scalars.

C++ classes and Specializations

The module maxflow implements the class Maxflow, a modification of the Graph class of Y. Boykov and V. Kolmogorov, for making use of their maximum flow algorithm.

The module cut_pursuit implements the base class Cp, defining all steps of the cut-pursuit approach in virtual methods.

The module cut_pursuit_d1 implements the class Cp_d1 derived from Cp, specializing cut-pursuit for directionally differentiable cases involving the graph total variation.

The module cut_pursuit_d0 implements the class Cp_d0 derived from Cp, specializing cut-pursuit for noncontinuous cases involving the contour length penalization.

Cp_prox_tv: proximity operator of the graph total variation

Also coined “graph total variation denoising” or “general fused LASSO signal approximation”. The objective functional is

    F: x ∈ ℝD⨯V ↦ 1/2 ║y − x║Mℓ2 + ∑(u,v) ∈ E w(u,v) ║xu − xv║p, Mδ ,

where D is the dimension of the signal on each vertex, y ∈ ℝD⨯V, Mℓ is a diagonal metric weighting the square ℓ2 norm, w ∈ ℝE are regularization weights, and the norm on the finite differences is defined by p being 1 or 2 and a weighting diagonal metric Mδ.

The reduced problem is solved using the preconditioned forward-Douglas–Rachford splitting algorithm, included as a git submodule pcd-prox-split.

Cp_d1_ql1b: quadratic functional, ℓ1 norm, bounds, and graph total variation

The base set is Ω = ℝ, and the general form is

    F: x ∈ ℝV ↦ 1/2 ║y(ℓ2) − Ax║2 + ∑v ∈ V λv |y(ℓ1) − xv| +
∑v ∈ V ι[mv, Mv](xv) + ∑(u,v) ∈ E w(u,v) |xu − xv| ,

where y(ℓ2) ∈ ℝn, A: ℝV → ℝn is a linear operator, y(ℓ1) ∈ ℝV and λ ∈ ℝV and w ∈ ℝE are regularization weights, m, M ∈ ℝV are parameters and ι[a,b] is the convex indicator of [a, b] : x ↦ 0 if x ∈ [a, b], +∞ otherwise.

When y(ℓ1) is zero, the combination of ℓ1 norm and total variation is sometimes coined fused LASSO.

When A is the identity, λ is zero and there are no box constraints, the problem boils down to the proximity operator of the graph total variation.

Currently, A must be provided as a matrix. See the documentation for special cases.

The reduced problem is solved using the preconditioned forward-Douglas–Rachford splitting algorithm, included as a git submodule pcd-prox-split.

An example with GNU Octave or Matlab and Python interfaces, where A is a full ill-conditioned matrix, with positivity and fused LASSO constraints, on a task of brain source identification from electroencephalography.

ground truth raw retrieved activity identified sources

Cp_d1_lsx: separable loss, simplex constraints, and graph total variation

The base set is Ω = ℝD, where D can be seen as a set of labels, and the general form is

    F: x ∈ ℝD⨯V ↦ f(y, x) + ∑v ∈ V ιΔD(xv) +
∑(u,v) ∈ E w(d1)(u,v) ∑d ∈ D λd |xu,d − xv,d| ,

where y ∈ ℝD⨯V, f is a loss functional (see below), w(d1) ∈ ℝE and λ ∈ ℝD are regularization weights, and ιΔD is the convex indicator of the simplex ΔD = {x ∈ ℝD | ∑d xd = 1 and ∀ d, xd ≥ 0}: x ↦ 0 if x ∈ ΔD, +∞ otherwise.

The following loss functionals are available, where w(f) ∈ ℝV are weights on vertices.
Linear: f(y, x) = − ∑v ∈ V w(f)v ∑d ∈ D xv,d yv,d
Quadratic: f(y, x) = ∑v ∈ V w(f)v ∑d ∈ D (xv,d − yv,d)2
Smoothed Kullback–Leibler divergence (equivalent to cross-entropy):
f(y, x) = ∑v ∈ V w(f)v KL(α u + (1 − α) yv, α u + (1 − α) xv),
where α ∈ ]0,1[, u ∈ ΔD is the uniform discrete distribution over D, and KL: (p, q) ↦ ∑d ∈ D pd log(pd/qd).

The reduced problem is solved using the preconditioned forward-Douglas–Rachford splitting algorithm, included as a git submodule pcd-prox-split.

An example with the smoothed Kullback–Leibler is provided with GNU Octave or Matlab and Python interfaces, on a task of spatial regularization of semantic classification of a 3D point cloud.

ground truth random forest classifier regularized classification

Cp_d0_dist: separable distance and weighted contour length

The base set is Ω = ℝD or ΔD and the general form is

    F: x ∈ ℝD⨯V ↦ f(y, x) + ∑(u,v) ∈ E w(d0)(u,v) ║xu − xv║0 ,

where y ∈ ΩV, f is a loss functional akin to a distance (see below), and ║·║0 is the ℓ0 pseudo-norm x ↦ 0 if x = 0, 1 otherwise.

The following loss functionals are available, where w(f) ∈ ℝV are weights on vertices and m(f) ∈ ℝD are weights on coordinates.
Weighted quadratic: Ω = ℝD and f(y, x) = ∑v ∈ V w(f)v ∑d ∈ D m(f)d (xv,d − yv,d)2
Weighted smoothed Kullback–Leibler divergence (equivalent to cross-entropy): Ω = ΔD and
f(y, x) = ∑v ∈ V w(f)v KLm(f)(α u + (1 − α) yv, α u + (1 − α) xv),
where α ∈ ]0,1[, u ∈ ΔD is the uniform discrete distribution over D, and
KLm(f): (p, q) ↦ ∑d ∈ D m(f)d pd log(pd/qd).

The reduced problem amounts to averaging, and the split step uses k-means++ algorithm.

When the loss is quadratic, the resulting problem is sometimes coined “minimal partition problem”.

An example with the smoothed Kullback–Leibler is provided with GNU Octave or Matlab interface, on a task of spatial regularization of semantic classification of a 3D point cloud.

Documentation

Directory tree

.   
├── include/        C++ headers, with some doc  
├── octave/         GNU Octave or Matlab code  
│   ├── doc/        some documentation  
│   └── mex/        MEX C++ interfaces
├── pcd-prox-split/ git submodule preconditionned forward-Douglas–Rachford 
│                   algorithm (required only for directionnaly 
│                   differentiable cases and example data)
├── python/         Python code  
│   ├── cpython/    C Python interfaces  
│   └── wrappers/   python wrappers and documentation  
├── src/            C++ sources  
└── wth-element/    git submodule for weighted quantiles search
                    (required only for cp_d1_ql1b) 

C++ documentation

Requires C++11.
Be sure to have OpenMP enabled with your compiler to enjoy parallelization. Note that, as of 2020, MSVC still does not support OpenMP 3.0 (published in 2008); consider switching to a decent compiler.

The number of parallel threads used in parallel regions is crucial for good performance; it is roughly controlled by a preprocessor macro MIN_OPS_PER_THREAD which can be again set with-D compilation flag. A rule of thumb is to set it to 10000 on personal computers with a handful of cores, and up to 100000 for large computer clusters with tens of cores.

The C++ classes are documented within the corresponding headers in include/.

Graph structure

Graph structures must be given as forward-star representation. For conversion from simple adjacency list representation, or for creation from scratch for regular N-dimensionnal grids (2D for images, 3D for volumes, etc.), see the pcd-prox-split/grid-graph git submodule.

GNU Octave or Matlab

See the script compile_parallel_cut_pursuit_mex.m for typical compilation commands; it can be run directly from the GNU Octave interpreter, but Matlab users must set compilation flags directly on the command line CXXFLAGS = ... and LDFLAGS = ....

The integer type holding the components assignment is by defaut on 16 bits. For applications expecting a large number of components, this can be extended to 32 bits with the compilation option -DCOMP_T_ON_32_BITS.

Extensive documentation of the MEX interfaces can be found within dedicated .m files in octave/doc/.

The script example_prox_tv.m exemplifies the use of Cp_prox_tv, on a task of color image denoising.

The script example_EEG.m exemplifies the use of Cp_d1_ql1b, on a task of brain source identification from electroencephalography.

The scripts example_labeling_3D.m and example_labeling_3D_d0.m exemplify the use of, respectively, Cp_d1_lsx and Cp_d0_dist, on a task of spatial regularization of semantic classification of a 3D point cloud.

Python

Requires numpy package.
See the script setup.py for compiling modules with setuptools; it can be run simply by using pip e.g. python -m pip install .. pre compiled binaries for Windows and Linux will soon be available on PyPI.

if more than 65535 components are expected in you graph you can force the use of 32 bit indices by setting the COMP_T_ON_32_BITS environement variable to 1 e.g. export COMP_T_ON_32_BITS=1 on bash.

Extensive documentation of the Python wrappers can be found in the corresponding .py files.

The script example_prox_tv.py exemplifies the use of Cp_prox_tv, on a task of color image denoising.

The script example_EEG.py exemplifies the use of Cp_d1_ql1b, on a task of brain source identification from electroencephalography.

The scripts example_labeling_3D.py and example_labeling_3D_d0.py exemplify the use of, respectively, Cp_d1_lsx and Cp_d0_dist, on a task of spatial regularization of semantic classification of a 3D point cloud.

References

L. Landrieu and G. Obozinski, Cut Pursuit: Fast Algorithms to Learn Piecewise Constant Functions on Weighted Graphs, 2017.

H. Raguet and L. Landrieu, Cut-pursuit Algorithm for Regularizing Nonsmooth Functionals with Graph Total Variation, 2018.

Y. Boykov and V. Kolmogorov, An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy Minimization in Vision, IEEE Transactions on Pattern Analysis and Machine Intelligence, 2004.

License

This software is under the GPLv3 license.

Metadata

Release files for pycut-pursuit 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for pycut-pursuit 0.1.4
File
pycut_pursuit-0.1.4-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pycut_pursuit-0.1.4-cp313-cp313-musllinux_1_1_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.1+ x86-64 Details
pycut_pursuit-0.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
pycut_pursuit-0.1.4-cp313-cp313-macosx_14_0_arm64.whl CPython 3.13 CPython 3.13 macOS 14.0+ ARM64 Details
pycut_pursuit-0.1.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pycut_pursuit-0.1.4-cp312-cp312-musllinux_1_1_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.1+ x86-64 Details
pycut_pursuit-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
pycut_pursuit-0.1.4-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details
pycut_pursuit-0.1.4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pycut_pursuit-0.1.4-cp311-cp311-musllinux_1_1_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.1+ x86-64 Details
pycut_pursuit-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
pycut_pursuit-0.1.4-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details
pycut_pursuit-0.1.4-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pycut_pursuit-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.1+ x86-64 Details
pycut_pursuit-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
pycut_pursuit-0.1.4-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details

Total release size: 61.0 MB

Release files / pycut_pursuit-0.1.4-cp313-cp313-win_amd64.whl

Download URL pycut_pursuit-0.1.4-cp313-cp313-win_amd64.whl
Size 361.1 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
044449de9f03e9d43539fec84ec0a1a3d7e473b8dbadad276a914d61eb31d47f
BLAKE2b-256 checksum
How to use checksums
92d702be453f6cd07c3b916a91715a000e24baa0de9d5c41eba9ed2f710559af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp313-cp313-musllinux_1_1_x86_64.whl

Download URL pycut_pursuit-0.1.4-cp313-cp313-musllinux_1_1_x86_64.whl
Size 7.3 MB
Tags CPython 3.13 Linux musl 1.1+ x86-64
SHA-256 checksum
How to use checksums
9b5afb80464549ba04e562a00e7a53c6f91fd1d5166e05ec7862e2534e028bd9
BLAKE2b-256 checksum
How to use checksums
d76a64d808b3e6ad7603ed6e5400838e792c8ce211631738bca93a05b7e0f47a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pycut_pursuit-0.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.7 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
450dfc11662383f3e2f8ae041ecd6422cc711df40fc6c976b0f58ae72d5cb30a
BLAKE2b-256 checksum
How to use checksums
dda0ef8f02ddadfc9aeefcf9908c9b0422d48985a21711d1a16b5112b85d60f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp313-cp313-macosx_14_0_arm64.whl

Download URL pycut_pursuit-0.1.4-cp313-cp313-macosx_14_0_arm64.whl
Size 852.3 kB
Tags CPython 3.13 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
b274cf2036c0bc0d8747419d3e9af93f8edbb5aee4a1e08e7dc4e21fceac196d
BLAKE2b-256 checksum
How to use checksums
a6320559cc773e36666f47aa7a19ec4a07a79a001368ef7c356dfa131b211b98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp312-cp312-win_amd64.whl

Download URL pycut_pursuit-0.1.4-cp312-cp312-win_amd64.whl
Size 360.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c6d29793ff9ebb9c36dec6aa97b9fe7c07cdb9e79f202b862e14904cf7a191f9
BLAKE2b-256 checksum
How to use checksums
884a48f8b242b037955ef22f7e54f1aa44d647ca2c22e3b52aff0cb607dac91e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp312-cp312-musllinux_1_1_x86_64.whl

Download URL pycut_pursuit-0.1.4-cp312-cp312-musllinux_1_1_x86_64.whl
Size 7.3 MB
Tags CPython 3.12 Linux musl 1.1+ x86-64
SHA-256 checksum
How to use checksums
03f2139a984f5c3a6f41123445b2858e59b226480885c6625657cc25ecce0367
BLAKE2b-256 checksum
How to use checksums
fb1b516eecf24fdc4e63ed516587abd9890a94b230dac7831a6fd82a8ad171a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pycut_pursuit-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.7 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
32698636080d91e45d6acf7e8e5587b54f76f3d4167fa353a60ca94a6866d07b
BLAKE2b-256 checksum
How to use checksums
5b5584e8901c1c1f99b4bc43927f2e75f390ca690a4601a6afdf54b536fcf849
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp312-cp312-macosx_14_0_arm64.whl

Download URL pycut_pursuit-0.1.4-cp312-cp312-macosx_14_0_arm64.whl
Size 851.6 kB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
2883801aca4ef4a46eca28a6ecce808530ea55bfcacdc51eb16bfc51f3f9796d
BLAKE2b-256 checksum
How to use checksums
a1ae8ff4a8026b2ba67f90a2304740089777d8ac1255dd569096c1a8af6cd363
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp311-cp311-win_amd64.whl

Download URL pycut_pursuit-0.1.4-cp311-cp311-win_amd64.whl
Size 360.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ba6334a289b4487083e2bb4c4e648564b468597858a02519b423d426585e3038
BLAKE2b-256 checksum
How to use checksums
71fea791f04309fb6100895167b8aa7f25efa66d491355f96c54ae26fb07a0c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp311-cp311-musllinux_1_1_x86_64.whl

Download URL pycut_pursuit-0.1.4-cp311-cp311-musllinux_1_1_x86_64.whl
Size 7.3 MB
Tags CPython 3.11 Linux musl 1.1+ x86-64
SHA-256 checksum
How to use checksums
120f092d2338a6592b54ab4398f539933856a40c012dc77270aef58408b8feea
BLAKE2b-256 checksum
How to use checksums
b4593834d5133ad17d62ac29a714b34b3632cfc2ca9c8e6925a71d270ad9e56b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pycut_pursuit-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.7 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
0bb4a62b03d4640b6fac0c17fc976da852f871f888adf233fae4b3352554410b
BLAKE2b-256 checksum
How to use checksums
9a2c0b393d0a334f7f2f20b2986f943498e11179d93961afd0a87cdafb1bef0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp311-cp311-macosx_14_0_arm64.whl

Download URL pycut_pursuit-0.1.4-cp311-cp311-macosx_14_0_arm64.whl
Size 851.2 kB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
2b5835c0a2bfa1f6b36e0bf2a1fda5adc0a255b494efe71f740b7d32d6b86c59
BLAKE2b-256 checksum
How to use checksums
cafb0a4bf3db9c4e63042a221b97da6a39b7d55d552095173945a968b2934efb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp310-cp310-win_amd64.whl

Download URL pycut_pursuit-0.1.4-cp310-cp310-win_amd64.whl
Size 360.3 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
14348a067f74050449ad2abf91be4ebaaec5a28e97db4f186279b08067ea4426
BLAKE2b-256 checksum
How to use checksums
696f88c7c247d5820bea7ccdf43e94009072e0e8f44dce480f46b7b6ae72d7c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl

Download URL pycut_pursuit-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl
Size 7.3 MB
Tags CPython 3.10 Linux musl 1.1+ x86-64
SHA-256 checksum
How to use checksums
58a6d89fc3cab510e4863db6d001af2da2ff519fdfd477588df2e2104aef427f
BLAKE2b-256 checksum
How to use checksums
d1c8d5eae30b568ace19c15cf8b06241e2f60996efd94b01cd97902b77ce4b27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pycut_pursuit-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.7 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
395603750013f6b35b544af2da5bc138dbb56b47ce87a4f267f5fe9aa1beac61
BLAKE2b-256 checksum
How to use checksums
9d69ee6d7896cfb4ea74ad583937dde8da05df2c6fc78471e5fa786dae9d6418
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / pycut_pursuit-0.1.4-cp310-cp310-macosx_14_0_arm64.whl

Download URL pycut_pursuit-0.1.4-cp310-cp310-macosx_14_0_arm64.whl
Size 851.2 kB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
416302b33a4ea8994be8e2d4ce652deff3c485d61485690aa4e7893db2343697
BLAKE2b-256 checksum
How to use checksums
dbad678cfdb1ac57fa779808cc0937381645cc6485765a92d9a5fa960514fa50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release history Release notifications | RSS feed

This release

0.1.4 This release

16 release files

0.1.3

18 release files

0.1.2

1 release file

0.1.1

27 release files

0.1.0

27 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page