Skip to content

Releases: vanandrew/warpkit

v1.4.0

Choose a tag to compare

@vanandrew vanandrew released this 12 Jun 22:43
8681e9c

What's Changed

  • ♻️ Unify field-map reconstruction, dedup CLIs, and thread the unwrap stage by @vanandrew in #29

Full Changelog: v1.3.0...v1.4.0

v1.3.0

Choose a tag to compare

@vanandrew vanandrew released this 12 Jun 05:14
45970d1

What's Changed

  • 📝 Forbid AI attribution in commits and PR bodies by @vanandrew in #28
  • 🐛 Invert MEDIC displacement in data space; drop redundant flip_sign by @vanandrew in #27

Full Changelog: v1.2.2...v1.3.0

v1.2.2

Choose a tag to compare

@vanandrew vanandrew released this 30 May 04:52
d2e03c3

What's Changed

  • ✨ enable free-threaded Python 3.14t support by @vanandrew in #23
  • 📝 Update citation to published Imaging Neuroscience paper by @vanandrew in #25

Full Changelog: v1.2.1...v1.2.2

v1.2.1

Choose a tag to compare

@vanandrew vanandrew released this 25 Apr 22:40
0a5377f

v1.2.1

Added

  • Typed Python API for all seven wk-* operations (#21). Each
    warpkit.scripts.<name> module now exports a typed function
    (medic, unwrap_phase, compute_fieldmap, apply_warp,
    convert_warp, convert_fieldmap, compute_jacobian) alongside a
    frozen Result dataclass. The new warpkit.api module re-exports all
    seven functions for from warpkit.api import medic usage by library
    integrators (nipype, fmriprep, etc.). Functions accept paths or
    nib.Nifti1Image inputs and raise ValueError instead of
    SystemExit; CLI behaviour is preserved exactly.
  • BIDS sidecar resolution, mutex acquisition validation, image coercion,
    and noise-frame trimming consolidated into a new private
    warpkit.scripts._metadata module (previously duplicated across
    three scripts).

Changed

  • ROMEO weights.h and voxel_quality.h kernels streamlined into
    single-pass (k, j, i) loops — boundary edges are skipped by
    construction, and the masked_mag shadow buffer is gone (#22).
    Per-edge FP arithmetic is unchanged, so the ROMEO goldens remain
    bit-exact.
  • Ship the ROMEO MIT notice with binary distributions (#22). Declared
    via PEP 639 license-files = ["LICENSE", "include/romeo/LICENSE"],
    so wheels now carry both notices under *.dist-info/licenses/. The
    standalone wk-* bundles drop both LICENSE files into a LICENSES/
    directory.

Full diff: v1.2.0...v1.2.1

v1.2.0

Choose a tag to compare

@vanandrew vanandrew released this 25 Apr 21:01
cb14414

v1.2.0

Changed

  • Build backend migrated from setuptools to
    scikit-build-core

    (#20). The CMake build directory is now persisted at
    build/{wheel_tag}/, so ITK FetchContent and object files survive
    across uv sync invocations — cold builds still take ~80s for ITK
    5.4, but incremental rebuilds are quick.
  • Eigen3 is now vendored via FetchContent + OVERRIDE_FIND_PACKAGE +
    ITK_USE_SYSTEM_EIGEN=ON, bypassing ITK's nested ITKInternalEigen3
    inner-CMake configure (whose cache would otherwise dangle when uv
    tears down its ninja env between syncs).
  • setup.py, MANIFEST.in, and the _version.py pathway are gone.
    warpkit.__version__ now reads from importlib.metadata.version(),
    and the WARPKIT_DEV escape hatch is dropped.
  • After editing src/warpkit.cpp, force a rebuild with
    uv sync --group dev --reinstall-package warpkit — editable
    auto-rebuild on import is disabled (uv's ephemeral isolated build
    env bakes a non-persistent ninja path into CMakeCache.txt).

Fixed

  • Pin cmake<4 and Eigen 3.4.0 in the build environment to dodge two
    upstream regressions that crash the manylinux wheel build:
    CMake 4.2.3's manylinux wheel and Eigen 3.4.1's
    EIGEN_BUILD_CMAKE_PACKAGE interaction.

Full diff: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@vanandrew vanandrew released this 25 Apr 20:21
1956f81

v1.1.0

Added

  • Each GitHub release now ships standalone PyInstaller bundles for every
    wk-* CLI (wk-medic, wk-unwrap-phase, wk-compute-fieldmap,
    wk-apply-warp, wk-convert-warp, wk-convert-fieldmap,
    wk-compute-jacobian) on linux-x86_64, linux-aarch64, and
    macos-arm64, so users can run the pipeline without a Python install
    (#18).

Full diff: v1.0.1...v1.1.0

v1.0.1

Choose a tag to compare

@vanandrew vanandrew released this 25 Apr 14:25

v1.0.1

Fixed

  • CI: py-publish was downloading every artifact in the run (including
    the Docker digest files from docker-build) into dist/, causing
    twine to reject the digests as InvalidDistribution and aborting the
    v1.0.0 PyPI upload. The download is now filtered to {wheel-*,sdist}.

Full diff: v1.0.0...v1.0.1

v1.0.0

Choose a tag to compare

@vanandrew vanandrew released this 25 Apr 14:09
b793eb0

v1.0.0

Tags now use the v prefix. Previous tags (0.0.1, 0.1.0, 0.1.1)
were unprefixed.

Changed

  • Julia runtime removed. Phase unwrapping is now a self-contained
    C++17 port of ROMEO under include/romeo/. macOS wheels re-enabled.
  • wk-* CLI suite replaces medic + extract_field_from_maps:
    wk-medic, wk-unwrap-phase, wk-compute-fieldmap, wk-apply-warp,
    wk-convert-warp, wk-convert-fieldmap, wk-compute-jacobian.
  • wk-medic: --out-prefix required; acquisition params via
    --metadata or --TEs/--total-readout-time/--phase-encoding-direction
    (mutually exclusive); all flags dash-form.
  • --from=auto / --transform-type=auto removed — input type must be
    declared explicitly. Multi-file --transform requires
    --transform-type=field.
  • Dockerfile entrypoint: medicwk-medic.

Added

  • Type stubs for the compiled extension (warpkit_cpp.pyi + py.typed).
  • linux/aarch64 wheels (native ARM runners), Python 3.11–3.14 matrix.
  • Multi-arch Docker images (linux/amd64 + linux/arm64).

Fixed

  • invert_displacement_field returned (X, Y, Z, 5) instead of
    (X, Y, Z, 3) (channel-axis padding bug).
  • convert_warp 5D shape check rejected the canonical ANTs/AFNI
    single-warp layout (X, Y, Z, 1, 3).
  • Stale vector intent codes are cleared on map outputs so 1-channel
    maps aren't misclassified as fields downstream.
  • wk-unwrap-phase validates --magnitude/--metadata counts and
    --noiseframes up front; compute_field_maps validates mask shape.

Tooling

  • Python ≥ 3.11; lowercase snake_case enforced (incl. MR-physics symbols).
  • uv + ruff + pyright + setuptools-scm; gitmoji commit-msg hook.
  • Tests 14 → 201; coverage 71% → 99% on scripts + utilities.

Full diff: 0.1.1...v1.0.0

0.1.1

Choose a tag to compare

@vanandrew vanandrew released this 08 Dec 07:24

https://pypi.org/project/warpkit/0.1.1/

  • Fix for docker build release

0.1.0

Choose a tag to compare

@vanandrew vanandrew released this 08 Dec 05:57