PartSegCore-compiled-backend 0.15.1__tar.gz → 0.15.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/.github/workflows/wheels.yml +25 -12
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/.gitignore +2 -0
- PartSegCore_compiled_backend-0.15.4/.readthedocs.yaml +35 -0
- PartSegCore_compiled_backend-0.15.4/PKG-INFO +72 -0
- PartSegCore_compiled_backend-0.15.4/Readme.md +39 -0
- PartSegCore_compiled_backend-0.15.4/build_utils/build_libomp.sh +14 -0
- PartSegCore_compiled_backend-0.15.4/docs/Makefile +20 -0
- PartSegCore_compiled_backend-0.15.4/docs/calc_bounds.rst +5 -0
- PartSegCore_compiled_backend-0.15.4/docs/conf.py +52 -0
- PartSegCore_compiled_backend-0.15.4/docs/fast_unique.rst +5 -0
- PartSegCore_compiled_backend-0.15.4/docs/index.rst +34 -0
- PartSegCore_compiled_backend-0.15.4/docs/make.bat +35 -0
- PartSegCore_compiled_backend-0.15.4/docs/napari_mapping.rst +5 -0
- PartSegCore_compiled_backend-0.15.4/docs/sprawl_utils.rst +5 -0
- PartSegCore_compiled_backend-0.15.4/notebooks/data_util.py +153 -0
- PartSegCore_compiled_backend-0.15.4/notebooks/performance_label_unique.ipynb +262 -0
- PartSegCore_compiled_backend-0.15.4/notebooks/performance_napari.ipynb +408 -0
- PartSegCore_compiled_backend-0.15.4/pyproject.toml +130 -0
- PartSegCore_compiled_backend-0.15.4/setup.cfg +4 -0
- PartSegCore_compiled_backend-0.15.4/setup.py +101 -0
- PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend/__init__.py +3 -0
- PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend/_fast_unique.pyx +107 -0
- PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend/_napari_mapping.pyx +90 -0
- PartSegCore_compiled_backend-0.15.1/src/PartSegCore_compiled_backend/utils.pyx → PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend/calc_bounds.pyx +87 -19
- PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend/fast_unique.py +39 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/multiscale_opening/__init__.py +1 -1
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/multiscale_opening/mso_bind.pyx +3 -3
- PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend/napari_mapping.py +122 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/find_split.py +121 -52
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/put_borders_in_queue.pyx +2 -2
- PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend/utils.py +3 -0
- PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend/version.py +16 -0
- PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend.egg-info/PKG-INFO +72 -0
- PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend.egg-info/SOURCES.txt +63 -0
- PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend.egg-info/requires.txt +7 -0
- PartSegCore_compiled_backend-0.15.1/src/tests/test_utils.py → PartSegCore_compiled_backend-0.15.4/src/tests/test_calc_bounds.py +3 -3
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/tests/test_coloring.py +3 -3
- PartSegCore_compiled_backend-0.15.4/src/tests/test_fast_unique.py +24 -0
- PartSegCore_compiled_backend-0.15.4/src/tests/test_napari_mapping.py +59 -0
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Compiler/Code.pxd +0 -124
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Compiler/FlowControl.pxd +0 -111
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Compiler/ParseTreeTransforms.pxd +0 -82
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Compiler/Parsing.pxd +0 -199
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Compiler/Scanning.pxd +0 -67
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Compiler/Visitor.pxd +0 -55
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_bool.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_buffer.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_bytes.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_cobject.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_complex.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_dict.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_exc.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_float.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_function.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_getargs.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_instance.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_int.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_iterator.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_list.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_long.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_mapping.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_mem.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_method.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_module.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_number.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_object.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_oldbuffer.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_pycapsule.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_ref.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_sequence.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_set.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_string.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_tuple.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_type.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_unicode.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_version.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/python_weakref.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/stdio.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/stdlib.pxd +0 -2
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/Deprecated/stl.pxd +0 -91
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/__init__.pxd +0 -184
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/array.pxd +0 -163
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/bool.pxd +0 -38
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/buffer.pxd +0 -112
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/bytearray.pxd +0 -33
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/bytes.pxd +0 -198
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/cellobject.pxd +0 -35
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/ceval.pxd +0 -8
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/cobject.pxd +0 -36
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/codecs.pxd +0 -121
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/complex.pxd +0 -50
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/conversion.pxd +0 -36
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/datetime.pxd +0 -212
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/dict.pxd +0 -165
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/exc.pxd +0 -257
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/float.pxd +0 -39
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/function.pxd +0 -65
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/genobject.pxd +0 -25
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/getargs.pxd +0 -12
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/instance.pxd +0 -25
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/int.pxd +0 -89
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/iterator.pxd +0 -36
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/iterobject.pxd +0 -24
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/list.pxd +0 -92
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/long.pxd +0 -149
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/longintrepr.pxd +0 -19
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/mapping.pxd +0 -64
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/mem.pxd +0 -111
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/memoryview.pxd +0 -50
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/method.pxd +0 -49
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/module.pxd +0 -188
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/number.pxd +0 -265
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/object.pxd +0 -399
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/oldbuffer.pxd +0 -63
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/pycapsule.pxd +0 -144
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/pylifecycle.pxd +0 -68
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/pystate.pxd +0 -92
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/pythread.pxd +0 -53
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/ref.pxd +0 -51
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/sequence.pxd +0 -136
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/set.pxd +0 -119
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/slice.pxd +0 -70
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/string.pxd +0 -198
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/tuple.pxd +0 -71
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/type.pxd +0 -48
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/unicode.pxd +0 -572
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/version.pxd +0 -32
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/cpython/weakref.pxd +0 -42
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/__init__.pxd +0 -1
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/errno.pxd +0 -128
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/float.pxd +0 -43
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/limits.pxd +0 -28
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/locale.pxd +0 -46
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/math.pxd +0 -112
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/setjmp.pxd +0 -10
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/signal.pxd +0 -64
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/stddef.pxd +0 -9
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/stdint.pxd +0 -105
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/stdio.pxd +0 -80
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/stdlib.pxd +0 -72
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/string.pxd +0 -50
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libc/time.pxd +0 -46
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/__init__.pxd +0 -4
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/algorithm.pxd +0 -43
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/cast.pxd +0 -12
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/complex.pxd +0 -101
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/deque.pxd +0 -86
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/forward_list.pxd +0 -62
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/functional.pxd +0 -13
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/iterator.pxd +0 -32
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/limits.pxd +0 -61
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/list.pxd +0 -78
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/map.pxd +0 -68
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/memory.pxd +0 -115
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/pair.pxd +0 -1
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/queue.pxd +0 -25
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/set.pxd +0 -61
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/stack.pxd +0 -11
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/string.pxd +0 -227
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/typeindex.pxd +0 -15
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/typeinfo.pxd +0 -10
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/unordered_map.pxd +0 -74
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/unordered_set.pxd +0 -69
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/utility.pxd +0 -30
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/libcpp/vector.pxd +0 -88
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/numpy/__init__.pxd +0 -1049
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/numpy/math.pxd +0 -133
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/openmp.pxd +0 -51
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/__init__.pxd +0 -1
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/dlfcn.pxd +0 -14
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/fcntl.pxd +0 -68
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/ioctl.pxd +0 -4
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/mman.pxd +0 -99
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/resource.pxd +0 -55
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/select.pxd +0 -19
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/signal.pxd +0 -73
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/stat.pxd +0 -71
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/stdio.pxd +0 -37
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/stdlib.pxd +0 -29
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/strings.pxd +0 -9
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/time.pxd +0 -71
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/types.pxd +0 -30
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/unistd.pxd +0 -271
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Includes/posix/wait.pxd +0 -38
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Plex/Actions.pxd +0 -25
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Plex/Scanners.pxd +0 -50
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Runtime/refnanny.pyx +0 -194
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Utility/CConvert.pyx +0 -132
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Utility/CpdefEnums.pyx +0 -66
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Utility/CppConvert.pyx +0 -237
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Utility/MemoryView.pyx +0 -1496
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Utility/TestCyUtilityLoader.pyx +0 -8
- PartSegCore_compiled_backend-0.15.1/.eggs/Cython-0.29.34-py3.10-linux-x86_64.egg/Cython/Utility/TestCythonScope.pyx +0 -64
- PartSegCore_compiled_backend-0.15.1/PKG-INFO +0 -36
- PartSegCore_compiled_backend-0.15.1/Readme.md +0 -6
- PartSegCore_compiled_backend-0.15.1/pyproject.toml +0 -49
- PartSegCore_compiled_backend-0.15.1/setup.cfg +0 -81
- PartSegCore_compiled_backend-0.15.1/setup.py +0 -76
- PartSegCore_compiled_backend-0.15.1/src/PartSegCore_compiled_backend/version.py +0 -4
- PartSegCore_compiled_backend-0.15.1/src/PartSegCore_compiled_backend.egg-info/PKG-INFO +0 -36
- PartSegCore_compiled_backend-0.15.1/src/PartSegCore_compiled_backend.egg-info/SOURCES.txt +0 -198
- PartSegCore_compiled_backend-0.15.1/src/PartSegCore_compiled_backend.egg-info/requires.txt +0 -5
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/License.txt +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/MANIFEST.in +0 -0
- /PartSegCore_compiled_backend-0.15.1/src/PartSegCore_compiled_backend/__init__.py → /PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend/_fast_unique.pyi +0 -0
- /PartSegCore_compiled_backend-0.15.1/src/PartSegCore_compiled_backend/utils.pyi → /PartSegCore_compiled_backend-0.15.4/src/PartSegCore_compiled_backend/calc_bounds.pyi +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/color_image_cython.pyi +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/color_image_cython.pyx +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/multiscale_opening/mso.cpp +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/multiscale_opening/mso.h +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/multiscale_opening/mso_bind.pyi +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/multiscale_opening/my_queue.h +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/__init__.py +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/distance_utils.pxd +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/euclidean_cython.pyi +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/euclidean_cython.pyx +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/find_split.pyi +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/fuzzy_distance.pyx +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/global_consts.h +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/my_queue.h +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/path_sprawl_cython.pyi +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/path_sprawl_cython.pyx +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/sprawl_utils.pyi +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend/sprawl_utils/sprawl_utils.pyx +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend.egg-info/dependency_links.txt +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/PartSegCore_compiled_backend.egg-info/top_level.txt +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/tests/test_sprawl_utils/__init__.py +0 -0
- {PartSegCore_compiled_backend-0.15.1 → PartSegCore_compiled_backend-0.15.4}/src/tests/test_sprawl_utils/test_euclidean.py +0 -0
|
@@ -2,7 +2,7 @@ name: Wheels
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
|
-
|
|
5
|
+
branches:
|
|
6
6
|
- master
|
|
7
7
|
tags:
|
|
8
8
|
- '*'
|
|
@@ -10,6 +10,9 @@ on:
|
|
|
10
10
|
branches:
|
|
11
11
|
- '**'
|
|
12
12
|
|
|
13
|
+
concurrency:
|
|
14
|
+
group: wheel-${{ github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
13
16
|
|
|
14
17
|
jobs:
|
|
15
18
|
test:
|
|
@@ -19,17 +22,25 @@ jobs:
|
|
|
19
22
|
fail-fast: false
|
|
20
23
|
matrix:
|
|
21
24
|
os: [windows-latest, macos-latest, ubuntu-latest]
|
|
22
|
-
python_version: ['3.
|
|
25
|
+
python_version: ['3.9' , '3.10', '3.11', '3.12']
|
|
23
26
|
steps:
|
|
24
27
|
- uses: actions/checkout@v3
|
|
25
28
|
- uses: actions/setup-python@v4
|
|
26
29
|
name: Install Python ${{ matrix.python_version }}
|
|
27
30
|
with:
|
|
28
31
|
python-version: ${{ matrix.python_version }}
|
|
32
|
+
- name: install openbls
|
|
33
|
+
if: runner.os == 'macOS'
|
|
34
|
+
run: brew install libomp
|
|
29
35
|
- name: Install tox
|
|
30
36
|
run: pip install tox numpy tox-gh-actions
|
|
31
|
-
- name: Test
|
|
37
|
+
- name: Test Backend
|
|
38
|
+
run: OPENBLAS="$(brew --prefix openblas)" OMP="$(brew --prefix libomp)" tox
|
|
39
|
+
if: runner.os == 'macOS'
|
|
40
|
+
- name: Test Backend
|
|
32
41
|
run: tox
|
|
42
|
+
if: runner.os != 'macOS'
|
|
43
|
+
|
|
33
44
|
|
|
34
45
|
build_wheels:
|
|
35
46
|
needs: test
|
|
@@ -49,7 +60,7 @@ jobs:
|
|
|
49
60
|
run: brew install openblas
|
|
50
61
|
|
|
51
62
|
- name: Build wheels
|
|
52
|
-
uses: pypa/cibuildwheel@v2.
|
|
63
|
+
uses: pypa/cibuildwheel@v2.16.2
|
|
53
64
|
env:
|
|
54
65
|
OPENBLAS: "$(brew --prefix openblas)"
|
|
55
66
|
|
|
@@ -73,8 +84,8 @@ jobs:
|
|
|
73
84
|
|
|
74
85
|
- name: Build sdist
|
|
75
86
|
run: |
|
|
76
|
-
pip install
|
|
77
|
-
python
|
|
87
|
+
pip install build
|
|
88
|
+
python -m build --sdist .
|
|
78
89
|
|
|
79
90
|
- uses: actions/upload-artifact@v3
|
|
80
91
|
with:
|
|
@@ -83,18 +94,20 @@ jobs:
|
|
|
83
94
|
upload_pypi:
|
|
84
95
|
needs: [build_wheels, build_sdist]
|
|
85
96
|
runs-on: ubuntu-latest
|
|
97
|
+
environment:
|
|
98
|
+
name: pypi
|
|
99
|
+
url: https://pypi.org/p/PartSegCore-compiled-backend
|
|
100
|
+
permissions:
|
|
101
|
+
id-token: write # IMPORTANT: mandatory for trusted publishing
|
|
86
102
|
# upload to PyPI on every tag starting with 'v'
|
|
87
103
|
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
|
|
88
104
|
# alternatively, to publish when a GitHub Release is created, use the following rule:
|
|
89
105
|
# if: github.event_name == 'release' && github.event.action == 'published'
|
|
90
106
|
steps:
|
|
91
|
-
- uses: actions/download-artifact@
|
|
107
|
+
- uses: actions/download-artifact@v3
|
|
92
108
|
with:
|
|
93
109
|
name: artifact
|
|
94
110
|
path: dist
|
|
95
111
|
|
|
96
|
-
-
|
|
97
|
-
|
|
98
|
-
user: __token__
|
|
99
|
-
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
100
|
-
# To test: repository_url: https://test.pypi.org/legacy/
|
|
112
|
+
- name: Publish distribution 📦 to PyPI
|
|
113
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
*.cpp
|
|
2
2
|
src/PartSegCore_compiled_backend/version.py
|
|
3
|
+
src/**.html
|
|
4
|
+
*.html
|
|
3
5
|
|
|
4
6
|
# Created by https://www.toptal.com/developers/gitignore/api/pycharm+all,jupyternotebooks,python,code,vim,macos,linux,windows
|
|
5
7
|
# Edit at https://www.toptal.com/developers/gitignore?templates=pycharm+all,jupyternotebooks,python,code,vim,macos,linux,windows
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# .readthedocs.yaml
|
|
2
|
+
# Read the Docs configuration file
|
|
3
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
4
|
+
|
|
5
|
+
# Required
|
|
6
|
+
version: 2
|
|
7
|
+
|
|
8
|
+
# Set the OS, Python version and other tools you might need
|
|
9
|
+
build:
|
|
10
|
+
os: ubuntu-22.04
|
|
11
|
+
tools:
|
|
12
|
+
python: "3.12"
|
|
13
|
+
# You can also specify other tool versions:
|
|
14
|
+
# nodejs: "19"
|
|
15
|
+
# rust: "1.64"
|
|
16
|
+
# golang: "1.19"
|
|
17
|
+
|
|
18
|
+
# Build documentation in the "docs/" directory with Sphinx
|
|
19
|
+
sphinx:
|
|
20
|
+
configuration: docs/conf.py
|
|
21
|
+
|
|
22
|
+
# Optionally build your docs in additional formats such as PDF and ePub
|
|
23
|
+
# formats:
|
|
24
|
+
# - pdf
|
|
25
|
+
# - epub
|
|
26
|
+
|
|
27
|
+
# Optional but recommended, declare the Python requirements required
|
|
28
|
+
# to build your documentation
|
|
29
|
+
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
|
|
30
|
+
python:
|
|
31
|
+
install:
|
|
32
|
+
- method: pip
|
|
33
|
+
path: .
|
|
34
|
+
extra_requirements:
|
|
35
|
+
- docs
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: PartSegCore_compiled_backend
|
|
3
|
+
Version: 0.15.4
|
|
4
|
+
Summary: PartSegCore compiled backend,
|
|
5
|
+
Author-email: Grzegorz Bokota <g.bokota@cent.uw.edu.pl>
|
|
6
|
+
License: BSD-3-Clause
|
|
7
|
+
Project-URL: Homepage, https://4dnucleome.cent.uw.edu.pl/PartSeg/
|
|
8
|
+
Project-URL: Documentation, https://partsegcore-compiled-backend.readthedocs.io/en/stable/
|
|
9
|
+
Project-URL: Source Code, https://github.com/4DNucleome/PartSegCore-compiled-backend
|
|
10
|
+
Keywords: bioimaging
|
|
11
|
+
Platform: Linux
|
|
12
|
+
Platform: Windows
|
|
13
|
+
Platform: MacOs
|
|
14
|
+
Classifier: Development Status :: 3 - Alpha
|
|
15
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
24
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
25
|
+
Requires-Python: >=3.9
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: License.txt
|
|
28
|
+
Requires-Dist: numpy>=1.25.0
|
|
29
|
+
Provides-Extra: test
|
|
30
|
+
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
31
|
+
Provides-Extra: docs
|
|
32
|
+
Requires-Dist: sphinx>=5.0.0; extra == "docs"
|
|
33
|
+
|
|
34
|
+
# PartSegCore_compiled_backend
|
|
35
|
+
|
|
36
|
+

|
|
37
|
+
[](https://github.com/4DNucleome/PartSegCore-compiled-backend/actions/workflows/wheels.yml)
|
|
38
|
+
[](https://pypi.org/project/PartSegCore-compiled-backend/)
|
|
39
|
+
[](https://anaconda.org/conda-forge/partsegcore-compiled-backend)
|
|
40
|
+
[](https://pypi.org/project/partsegcore-compiled-backend)
|
|
41
|
+
[](https://partsegcore-compiled-backend.readthedocs.io/en/stable/)
|
|
42
|
+
[](https://doi.org/10.1186/s12859-021-03984-1)
|
|
43
|
+
|
|
44
|
+
This is a package with all cython/c++ backend for ParSeg
|
|
45
|
+
|
|
46
|
+
Current release extracted from PartSegCore module to avoid building multiple wheels
|
|
47
|
+
for the main package and speedup tests.
|
|
48
|
+
|
|
49
|
+
This package requires `libomp` for build.
|
|
50
|
+
On linux it can be installed with `apt install libomp-dev` or `yum install libomp-devel`.
|
|
51
|
+
On macOS it can be installed with `brew install libomp`.
|
|
52
|
+
|
|
53
|
+
As `clang` version created on macOS do not have native openmp `brew` do
|
|
54
|
+
not set `libomp` as default visible.
|
|
55
|
+
If you install `libomp` with `brew` and want to build package
|
|
56
|
+
from source you need to set `OMP` variable to `libomp` location.
|
|
57
|
+
|
|
58
|
+
For example:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
export OMP="$(brew --prefix libomp)"
|
|
62
|
+
pip install .
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
As currently there is no wheel for macOS ARM64
|
|
66
|
+
it is required to build package from source.
|
|
67
|
+
|
|
68
|
+
## Cite as
|
|
69
|
+
|
|
70
|
+
Bokota, G., Sroka, J., Basu, S. et al. PartSeg: a tool for quantitative feature extraction
|
|
71
|
+
from 3D microscopy images for dummies. BMC Bioinformatics 22, 72 (2021).
|
|
72
|
+
[https://doi.org/10.1186/s12859-021-03984-1](https://doi.org/10.1186/s12859-021-03984-1)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# PartSegCore_compiled_backend
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
[](https://github.com/4DNucleome/PartSegCore-compiled-backend/actions/workflows/wheels.yml)
|
|
5
|
+
[](https://pypi.org/project/PartSegCore-compiled-backend/)
|
|
6
|
+
[](https://anaconda.org/conda-forge/partsegcore-compiled-backend)
|
|
7
|
+
[](https://pypi.org/project/partsegcore-compiled-backend)
|
|
8
|
+
[](https://partsegcore-compiled-backend.readthedocs.io/en/stable/)
|
|
9
|
+
[](https://doi.org/10.1186/s12859-021-03984-1)
|
|
10
|
+
|
|
11
|
+
This is a package with all cython/c++ backend for ParSeg
|
|
12
|
+
|
|
13
|
+
Current release extracted from PartSegCore module to avoid building multiple wheels
|
|
14
|
+
for the main package and speedup tests.
|
|
15
|
+
|
|
16
|
+
This package requires `libomp` for build.
|
|
17
|
+
On linux it can be installed with `apt install libomp-dev` or `yum install libomp-devel`.
|
|
18
|
+
On macOS it can be installed with `brew install libomp`.
|
|
19
|
+
|
|
20
|
+
As `clang` version created on macOS do not have native openmp `brew` do
|
|
21
|
+
not set `libomp` as default visible.
|
|
22
|
+
If you install `libomp` with `brew` and want to build package
|
|
23
|
+
from source you need to set `OMP` variable to `libomp` location.
|
|
24
|
+
|
|
25
|
+
For example:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
export OMP="$(brew --prefix libomp)"
|
|
29
|
+
pip install .
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
As currently there is no wheel for macOS ARM64
|
|
33
|
+
it is required to build package from source.
|
|
34
|
+
|
|
35
|
+
## Cite as
|
|
36
|
+
|
|
37
|
+
Bokota, G., Sroka, J., Basu, S. et al. PartSeg: a tool for quantitative feature extraction
|
|
38
|
+
from 3D microscopy images for dummies. BMC Bioinformatics 22, 72 (2021).
|
|
39
|
+
[https://doi.org/10.1186/s12859-021-03984-1](https://doi.org/10.1186/s12859-021-03984-1)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
3
|
+
build_dir=${DIR}/libs_build
|
|
4
|
+
|
|
5
|
+
git clone --depth 1 --branch llvmorg-11.1.0 https://github.com/llvm/llvm-project
|
|
6
|
+
pushd llvm-project/openmp
|
|
7
|
+
mkdir build
|
|
8
|
+
cd build
|
|
9
|
+
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
|
|
10
|
+
make
|
|
11
|
+
make install
|
|
12
|
+
|
|
13
|
+
popd
|
|
14
|
+
rm -rf llvm-project
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Minimal makefile for Sphinx documentation
|
|
2
|
+
#
|
|
3
|
+
|
|
4
|
+
# You can set these variables from the command line, and also
|
|
5
|
+
# from the environment for the first two.
|
|
6
|
+
SPHINXOPTS ?=
|
|
7
|
+
SPHINXBUILD ?= sphinx-build
|
|
8
|
+
SOURCEDIR = .
|
|
9
|
+
BUILDDIR = _build
|
|
10
|
+
|
|
11
|
+
# Put it first so that "make" without argument is like "make help".
|
|
12
|
+
help:
|
|
13
|
+
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
14
|
+
|
|
15
|
+
.PHONY: help Makefile
|
|
16
|
+
|
|
17
|
+
# Catch-all target: route all unknown targets to Sphinx using the new
|
|
18
|
+
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
|
19
|
+
%: Makefile
|
|
20
|
+
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This file only contains a selection of the most common options. For a full
|
|
3
|
+
# list see the documentation:
|
|
4
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
|
5
|
+
|
|
6
|
+
# -- Path setup --------------------------------------------------------------
|
|
7
|
+
|
|
8
|
+
# If extensions (or modules to document with autodoc) are in another directory,
|
|
9
|
+
# add these directories to sys.path here. If the directory is relative to the
|
|
10
|
+
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
|
11
|
+
#
|
|
12
|
+
# import os
|
|
13
|
+
# import sys
|
|
14
|
+
# sys.path.insert(0, os.path.abspath('.'))
|
|
15
|
+
|
|
16
|
+
import PartSegCore_compiled_backend
|
|
17
|
+
|
|
18
|
+
# -- Project information -----------------------------------------------------
|
|
19
|
+
|
|
20
|
+
project = 'PartSegCore-compiled-backend'
|
|
21
|
+
copyright = '2024, Grzegorz Bokota'
|
|
22
|
+
author = 'Grzegorz Bokota'
|
|
23
|
+
release = PartSegCore_compiled_backend.__version__
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# -- General configuration ---------------------------------------------------
|
|
27
|
+
|
|
28
|
+
# Add any Sphinx extension module names here, as strings. They can be
|
|
29
|
+
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
|
30
|
+
# ones.
|
|
31
|
+
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon']
|
|
32
|
+
|
|
33
|
+
# Add any paths that contain templates here, relative to this directory.
|
|
34
|
+
templates_path = ['_templates']
|
|
35
|
+
|
|
36
|
+
# List of patterns, relative to source directory, that match files and
|
|
37
|
+
# directories to ignore when looking for source files.
|
|
38
|
+
# This pattern also affects html_static_path and html_extra_path.
|
|
39
|
+
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# -- Options for HTML output -------------------------------------------------
|
|
43
|
+
|
|
44
|
+
# The theme to use for HTML and HTML Help pages. See the documentation for
|
|
45
|
+
# a list of builtin themes.
|
|
46
|
+
#
|
|
47
|
+
html_theme = 'nature'
|
|
48
|
+
|
|
49
|
+
# Add any paths that contain custom static files (such as style sheets) here,
|
|
50
|
+
# relative to this directory. They are copied after the builtin static files,
|
|
51
|
+
# so a file named "default.css" will overwrite the builtin "default.css".
|
|
52
|
+
html_static_path = ['_static']
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
.. PartSegCore-compiled-backend documentation master file, created by
|
|
2
|
+
sphinx-quickstart on Sat Jan 20 15:05:13 2024.
|
|
3
|
+
You can adapt this file completely to your liking, but it should at least
|
|
4
|
+
contain the root ``toctree`` directive.
|
|
5
|
+
|
|
6
|
+
Welcome to PartSegCore-compiled-backend's documentation!
|
|
7
|
+
========================================================
|
|
8
|
+
|
|
9
|
+
The PartSegCore-compiled-backend was created as package for PartSeg project.
|
|
10
|
+
It contains parts of code that needs to be compiled. It was created to simplify
|
|
11
|
+
maintenance of PartSeg project. But maybe you could find here useful functions.
|
|
12
|
+
|
|
13
|
+
.. toctree::
|
|
14
|
+
:maxdepth: 2
|
|
15
|
+
:caption: Contents:
|
|
16
|
+
|
|
17
|
+
calc_bounds
|
|
18
|
+
fast_unique
|
|
19
|
+
napari_mapping
|
|
20
|
+
sprawl_utils
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
Indices and tables
|
|
25
|
+
==================
|
|
26
|
+
|
|
27
|
+
* :ref:`genindex`
|
|
28
|
+
* :ref:`modindex`
|
|
29
|
+
* :ref:`search`
|
|
30
|
+
|
|
31
|
+
Cite as
|
|
32
|
+
=======
|
|
33
|
+
|
|
34
|
+
Bokota, G., Sroka, J., Basu, S. et al. PartSeg: a tool for quantitative feature extraction from 3D microscopy images for dummies. BMC Bioinformatics 22, 72 (2021). https://doi.org/10.1186/s12859-021-03984-1
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
@ECHO OFF
|
|
2
|
+
|
|
3
|
+
pushd %~dp0
|
|
4
|
+
|
|
5
|
+
REM Command file for Sphinx documentation
|
|
6
|
+
|
|
7
|
+
if "%SPHINXBUILD%" == "" (
|
|
8
|
+
set SPHINXBUILD=sphinx-build
|
|
9
|
+
)
|
|
10
|
+
set SOURCEDIR=.
|
|
11
|
+
set BUILDDIR=_build
|
|
12
|
+
|
|
13
|
+
%SPHINXBUILD% >NUL 2>NUL
|
|
14
|
+
if errorlevel 9009 (
|
|
15
|
+
echo.
|
|
16
|
+
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
|
17
|
+
echo.installed, then set the SPHINXBUILD environment variable to point
|
|
18
|
+
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
|
19
|
+
echo.may add the Sphinx directory to PATH.
|
|
20
|
+
echo.
|
|
21
|
+
echo.If you don't have Sphinx installed, grab it from
|
|
22
|
+
echo.https://www.sphinx-doc.org/
|
|
23
|
+
exit /b 1
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
if "%1" == "" goto help
|
|
27
|
+
|
|
28
|
+
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
|
29
|
+
goto end
|
|
30
|
+
|
|
31
|
+
:help
|
|
32
|
+
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
|
33
|
+
|
|
34
|
+
:end
|
|
35
|
+
popd
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from typing import Sequence, Optional, Union, Tuple, Callable
|
|
3
|
+
import itertools
|
|
4
|
+
from skimage import morphology
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def _generate_ball(radius: int, ndim: int) -> np.ndarray:
|
|
8
|
+
"""Generate a ball of given radius and dimension.
|
|
9
|
+
|
|
10
|
+
Parameters
|
|
11
|
+
----------
|
|
12
|
+
radius : int
|
|
13
|
+
Radius of the ball.
|
|
14
|
+
ndim : int
|
|
15
|
+
Dimension of the ball.
|
|
16
|
+
|
|
17
|
+
Returns
|
|
18
|
+
-------
|
|
19
|
+
ball : ndarray of uint8
|
|
20
|
+
Binary array of the hyper ball.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
if ndim == 2:
|
|
24
|
+
return morphology.disk(radius)
|
|
25
|
+
if ndim == 3:
|
|
26
|
+
return morphology.ball(radius)
|
|
27
|
+
shape = (2 * radius + 1,) * ndim
|
|
28
|
+
radius_sq = radius**2
|
|
29
|
+
coords = np.indices(shape) - radius
|
|
30
|
+
return (np.sum(coords**2, axis=0) <= radius_sq).astype(np.uint8)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _generate_density(radius: int, ndim: int) -> np.ndarray:
|
|
34
|
+
"""Generate gaussian density of given radius and dimension."""
|
|
35
|
+
shape = (2 * radius + 1,) * ndim
|
|
36
|
+
coords = np.indices(shape) - radius
|
|
37
|
+
dist = np.sqrt(np.sum(coords**2 / ((radius / 4) ** 2), axis=0))
|
|
38
|
+
res = np.exp(-dist)
|
|
39
|
+
res[res < 0.02] = 0
|
|
40
|
+
return res
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _structure_at_coordinates(
|
|
44
|
+
shape: Tuple[int],
|
|
45
|
+
coordinates: np.ndarray,
|
|
46
|
+
structure: np.ndarray,
|
|
47
|
+
*,
|
|
48
|
+
multipliers: Sequence = itertools.repeat(1),
|
|
49
|
+
dtype=None,
|
|
50
|
+
reduce_fn: Callable[[np.ndarray, np.ndarray, Optional[np.ndarray]], np.ndarray],
|
|
51
|
+
):
|
|
52
|
+
"""Update data with structure at given coordinates.
|
|
53
|
+
|
|
54
|
+
Parameters
|
|
55
|
+
----------
|
|
56
|
+
coordinates : ndarray
|
|
57
|
+
Coordinates of the points. The structures will be added at these
|
|
58
|
+
points (center).
|
|
59
|
+
structure : ndarray
|
|
60
|
+
Array with encoded structure. For example, ball (boolean) or density
|
|
61
|
+
(0,1) float.
|
|
62
|
+
multipliers : ndarray
|
|
63
|
+
These values are multiplied by the values in the structure before
|
|
64
|
+
updating the array. Can be used to generate different labels, or to
|
|
65
|
+
vary the intensity of floating point gaussian densities.
|
|
66
|
+
reduce_fn : function
|
|
67
|
+
Function with which to update the array at a particular position. It
|
|
68
|
+
should take two arrays as input and an optional output array.
|
|
69
|
+
"""
|
|
70
|
+
radius = (structure.shape[0] - 1) // 2
|
|
71
|
+
data = np.zeros(shape, dtype=dtype)
|
|
72
|
+
|
|
73
|
+
for point, value in zip(coordinates, multipliers):
|
|
74
|
+
slice_im, slice_ball = _get_slices_at(shape, point, radius)
|
|
75
|
+
reduce_fn(data[slice_im], value * structure[slice_ball], out=data[slice_im])
|
|
76
|
+
return data
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _get_slices_at(shape, point, radius):
|
|
80
|
+
slice_im = []
|
|
81
|
+
slice_ball = []
|
|
82
|
+
for i, p in enumerate(point):
|
|
83
|
+
slice_im.append(slice(max(0, p - radius), min(shape[i], p + radius + 1)))
|
|
84
|
+
ball_start = max(0, radius - p)
|
|
85
|
+
ball_stop = slice_im[-1].stop - slice_im[-1].start + ball_start
|
|
86
|
+
slice_ball.append(slice(ball_start, ball_stop))
|
|
87
|
+
return tuple(slice_im), tuple(slice_ball)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def _update_data_with_mask(data, struct, out=None):
|
|
91
|
+
"""Update ``data`` with ``struct`` where ``struct`` is nonzero."""
|
|
92
|
+
# these branches are needed because np.where does not support
|
|
93
|
+
# an out= keyword argument
|
|
94
|
+
if out is None:
|
|
95
|
+
return np.where(struct, struct, data)
|
|
96
|
+
else: # noqa: RET505
|
|
97
|
+
nz = struct != 0
|
|
98
|
+
out[nz] = struct[nz]
|
|
99
|
+
return out
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _smallest_dtype(n: int) -> np.dtype:
|
|
103
|
+
"""Find the smallest dtype that can hold n values."""
|
|
104
|
+
for dtype in [np.uint8, np.uint16, np.uint32, np.uint64]:
|
|
105
|
+
if np.iinfo(dtype).max >= n:
|
|
106
|
+
return dtype
|
|
107
|
+
break
|
|
108
|
+
else:
|
|
109
|
+
raise ValueError(f'{n=} is too large for any dtype.')
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def labeled_particles(
|
|
113
|
+
shape: Sequence[int],
|
|
114
|
+
dtype: Optional[np.dtype] = None,
|
|
115
|
+
n: int = 144,
|
|
116
|
+
seed: Optional[int] = None,
|
|
117
|
+
return_density: bool = False,
|
|
118
|
+
) -> Union[np.ndarray, Tuple[np.ndarray, np.ndarray, np.ndarray]]:
|
|
119
|
+
"""Generate labeled blobs of given shape and dtype.
|
|
120
|
+
|
|
121
|
+
Parameters
|
|
122
|
+
----------
|
|
123
|
+
shape : Sequence[int]
|
|
124
|
+
Shape of the resulting array.
|
|
125
|
+
dtype : Optional[np.dtype]
|
|
126
|
+
Dtype of the resulting array.
|
|
127
|
+
n : int
|
|
128
|
+
Number of blobs to generate.
|
|
129
|
+
seed : Optional[int]
|
|
130
|
+
Seed for the random number generator.
|
|
131
|
+
return_density : bool
|
|
132
|
+
Whether to return the density array and center coordinates.
|
|
133
|
+
"""
|
|
134
|
+
if dtype is None:
|
|
135
|
+
dtype = _smallest_dtype(n)
|
|
136
|
+
rng = np.random.default_rng(seed)
|
|
137
|
+
ndim = len(shape)
|
|
138
|
+
points = rng.integers(shape, size=(n, ndim))
|
|
139
|
+
values = rng.integers(np.iinfo(dtype).min, np.iinfo(dtype).max, size=n, dtype=dtype)
|
|
140
|
+
sigma = int(max(shape) / (4.0 * n ** (1 / ndim)))
|
|
141
|
+
ball = _generate_ball(sigma, ndim)
|
|
142
|
+
|
|
143
|
+
labels = _structure_at_coordinates(
|
|
144
|
+
shape, points, ball, multipliers=values, reduce_fn=_update_data_with_mask, dtype=dtype
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
if return_density:
|
|
148
|
+
dens = _generate_density(sigma * 2, ndim)
|
|
149
|
+
densities = _structure_at_coordinates(shape, points, dens, reduce_fn=np.maximum, dtype=np.float32)
|
|
150
|
+
|
|
151
|
+
return labels, densities, points
|
|
152
|
+
else: # noqa: RET505
|
|
153
|
+
return labels
|