Skip to main content

Obsessive Coder's Dependency Toolkit — Python utilities for array manipulation, GPU dispatch, image I/O, morphology, and plotting.

Project description

ocdkit

A toolkit for array manipulation, GPU dispatch, image I/O, spatial operations, morphology, and plotting.

Install

pip install ocdkit             # core (numpy, scipy, scikit-image, tifffile, matplotlib)
pip install ocdkit[torch]      # + PyTorch GPU support
pip install ocdkit[plot]       # + ncolor, cmap, opt_einsum
pip install ocdkit[spatial]    # + numba, fastremap (contour extraction, skeletonization)
pip install ocdkit[all]        # everything

Modules

Module What's in it
ocdkit.array rescale, safe_divide, is_integer, get_module, unique_nonzero
ocdkit.gpu resolve_device, empty_cache, torch_GPU, torch_CPU
ocdkit.io imread, imwrite, getname, check_dir
ocdkit.spatial kernel_setup, get_neighbors, get_neigh_inds, masks_to_affinity, get_contour, boundary_to_masks
ocdkit.morphology find_boundaries, skeletonize
ocdkit.measure crop_bbox, bbox_to_slice, make_square, diameters
ocdkit.plot figure, image_grid, split_list, colorize, rgb_flow, vector_contours, apply_ncolor, color_swatches, recolor_label, add_label_background

Quick start

from ocdkit.array import rescale
from ocdkit.gpu import resolve_device
from ocdkit.plot import figure, image_grid

device = resolve_device()  # auto-detect CUDA / MPS / CPU

Performance tips

Pin numba's JIT cache to local disk

If your project source lives on a network filesystem (SMB / NFS), set NUMBA_CACHE_DIR to a local-disk location. By default numba writes its JIT cache to __pycache__ next to the source file, which on a NAS-mounted tree means dozens of small SMB ops per fresh subprocess — several seconds of overhead on every cold import.

ocdkit auto-applies $HOME/.cache/numba as the default if you haven't set it (see src/ocdkit/__init__.py), but for shells, test runners, and non-ocdkit code, set it explicitly:

# Linux / macOS — add to ~/.zshrc, ~/.bashrc, or ~/.profile
export NUMBA_CACHE_DIR="$HOME/.cache/numba"
# Windows — add to $PROFILE
[Environment]::SetEnvironmentVariable('NUMBA_CACHE_DIR', "$env:USERPROFILE\.cache\numba", 'User')

Compiled artifacts are machine-local anyway (CPU- and Python-version specific), so they don't belong on shared NAS regardless of perf.

License

BSD-3-Clause

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

ocdkit-0.0.5.tar.gz (506.1 kB view details)

Uploaded Source

Built Distribution

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

ocdkit-0.0.5-py3-none-any.whl (483.2 kB view details)

Uploaded Python 3

File details

Details for the file ocdkit-0.0.5.tar.gz.

File metadata

  • Download URL: ocdkit-0.0.5.tar.gz
  • Upload date:
  • Size: 506.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for ocdkit-0.0.5.tar.gz
Algorithm Hash digest
SHA256 6af32f24b66ef197d851470eca03edd31bfece50f47b421633f8bbe7677d41ec
MD5 d912e35326d8213710668ac315f3a14e
BLAKE2b-256 017bd3ac421d491305044c8aa16e2269d7ba9e4aedaa8565884115728bc2fb4f

See more details on using hashes here.

File details

Details for the file ocdkit-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: ocdkit-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 483.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for ocdkit-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 9e6a6a2471861aea5e74ce041d52e2996f29d77f661052c2e16fcc17b4dd19e3
MD5 5d37e9ea447c905cce5b1c0e474fb49a
BLAKE2b-256 bfcf1144f0eb1991959d8d7ddaec210d382468781b02e38356b9d2fa3f2630c0

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