Skip to content

chore(main): release nyxus 0.12.0 - #380

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main--components--nyxus
Open

chore(main): release nyxus 0.12.0#380
github-actions[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main--components--nyxus

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown

🤖 I have created a release beep boop

0.12.0 (2026-09-01)

⚠ BREAKING CHANGES

  • omezarr: OME-Zarr support now requires z5 3.0.1 and C++20; xtensor/xsimd are no longer used.

Features

  • add 2D test coverage for touch and morphology feature families (3f576d9)
  • add IBSI Intensity Histogram features, per-bin HISTOGRAM output, and --mergerois (5b517f4)
  • add unittest coverage to all 214 3D features, labeling tests with clear ground truth (b89a9ac)
  • Benchmark area fix (#345) (b532f21)
  • helpers: add ceil_pow2 (tight next power of two) (d0992dc)
  • hounsfield: --preserve-hu CT/Hounsfield intensity preservation (1b5667f)
  • hounsfield: keep HU offset base at scanned slide min under fp-options; enable bare CLI --preserve-hu (43f8063)
  • hounsfield: wire --preserve-hu through the 3D NIfTI loader (65c9ad9)
  • omezarr: migrate to z5 3.0.1 ArrayView API, drop xtensor (225b9b9)
  • re-organize and create complete implementation unit test coverage for 492 2D features (#346) (011df60)
  • vetting: check_coverage CLI (--check/--write) + drift guard (0ad65ee)
  • vetting: check_coverage registry load + schema/token validation (44d2bfa)
  • vetting: coverage stats + markdown report generation (0f85581)

Bug Fixes

  • 2d zernike: seed the angular tables at repetition 0, not 1 (2eb3cc3)
  • 3d ngtdm: default the neighbourhood radius so the family is not NaN (53b04b5)
  • 3d-ngldm: DCNU/DCNUN summed the wrong marginal (== GLNU) (d3198e5)
  • 3d-shape: correct mislabeled axis lengths + vet 7 morphology features (0af100b)
  • 3d: compute 3ROBUST_MEAN (was hardcoded 0) + vet 18 3D first-order features (79d0974)
  • audit and fix 2D feature tests 1/n (c5cf260)
  • caliper: correct Martin/Nassenstein diameters + vet 12 features vs imea (bc3e92a)
  • caliper: float-precision hull rotation + address PR #381 review (3377183)
  • categorize and name feature unit tests and expected values (d854679)
  • chords: correct max-chord angle index and all-chords histogram source (bd9a930)
  • cleare state and start fresh to avoid random test failure. (495f05c)
  • convex-hull: Pick's-theorem hull area so SOLIDITY <= 1 (0319932)
  • emit per-bin HISTOGRAM values in arrow/parquet output (01ac9c2)
  • feature_mgr: extend check_11_correspondence() to Feature3D (b188e50)
  • feature_mgr: loop 3D correspondence check from Feature3D::FIRST (9287f3c)
  • fractal-dim: adaptive box counting and a clean divider perimeter (c981743)
  • fractal-dim: address PR review comments (98a4f2d)
  • fractal-dim: align the ROI to the box-counting grid (98e53ec)
  • fractal-dim: mean log-log slope for box-count, Richardson D for perimeter (af37142)
  • gabor: keep filter-response magnitudes real-valued, then vet GABOR vs scikit-image (2b2c7d7)
  • glcm: default co-occurrence offset to 1 and exclude background (02c5a75)
  • glcm: normalize HOM2/ENTROPY by sum_p (2D+3D) + fully oracle-vet GLCM (60a1ebb)
  • gldm: exclude background from the dependence matrix (f1f8eb4)
  • gldzm: build zones from the full 8-neighbourhood (fc0bbde)
  • handle multi-valued HISTOGRAM in buffer output (Python pandas/arrow) (246f4dd)
  • hexagonality,lstsq: use std::abs so gcc/Linux doesn't truncate doubles to int (88a6f53)
  • imq: correct FOCUS_SCORE overflow + abs()-variance, vet 4 imq features vs OpenCV and CellProfiler (7eed701)
  • intensity_histogram: report IH_ROBUST_MEAN_IDX as a 1-based bin index (0527f48)
  • issue 327 single roi polus (#330) (03eeb0c)
  • loader: clamp negative signed-int pixels so int16 CT doesn't wrap to a huge unsigned value (fac1bac)
  • make imagecodecs PIP_ONLY_BINARY (b5fa20a)
  • migrate build_and_test from macos-15-intel to macos-14 (ac70de1)
  • mitigate exposed bug due to incorrect reading of bx in 3d_surface (24d18ee)
  • moments: correct Hu invariant h5/h6 formulas (9x bracket, stray +eta03) (73f6ca8)
  • moments: use fractional centroid in 2D central moments (drop (int) truncation) (5cbf94a)
  • morphology: geodetic length/thickness from real perimeter (was size_t-truncated) (ce7716f)
  • neighbors: exact min distance for the touch/radius test (PERCENT_TOUCHING) (92de774)
  • neighbors: implement closest-neighbor dist/ang and cap PERCENT_TOUCHING (4322c88)
  • ooc: make the 2D out-of-core feature paths match the in-RAM path (9a9ad02)
  • python: release an instance's Environment so a recycled id() cannot inherit it (6dd550f)
  • remove redundant calculations and avoid flushing valid old values (cdf48cf)
  • review comments on PR 352 (ec42edc)
  • stop featurize() mutating its shared default name lists (372172e)
  • upgrade Docker build to CUDA 12.6 and Python 3.11 (80b548d)
  • use raw docstrings to silence invalid escape sequence SyntaxWarning (e3bf05c)
  • vetting: band the 3D GLSZM entropy pin for a platform, not for a machine (ab8573e)
  • vetting: correct radial follow-up records (7c4657a)
  • vetting: let the NGTDM coverage scanner read one-line TEST registrations (51df88e)
  • vetting: normalize oracle_coverage.csv to LF, drop dead current_test notes (7dc26ed)
  • vetting: write every generated CSV and report with LF (91eb35e)

Performance Improvements

  • omezarr: open the z5 dataset once, not per tile (9b36f84)

Documentation

  • 3d gldzm: record what the retired coverage sweep checked, and what it did not (483dbbc)
  • 3d ngldm: say what the generator verifies, and what the Ns agreement proves (9310932)
  • add CLAUDE.md codebase and workflow guide (e301fe6)
  • caliper: correct inaccurate/stale comments (no code change) (cc5b4de)
  • CLAUDE: add git workflow and tests/vetting conformance rules (a548b57)
  • CLAUDE: address PR #388 review — C++20; agentic git workflow (466c038)
  • CLAUDE: address PR #388 review — generalize paths, drop z5py pin, add no-local-paths rule (4235e0c)
  • imq: say in the matrix that this pass vets the in-RAM paths only (1591760)
  • test: correct IQR/QCoD _IDX framing — discrete percentile is IBSI-conformant, not a bug (29214ba)
  • tests: add vetting audit baseline, fraclac oracle, and README (e5232c0)
  • tests: box-count golden is FracLac-vetted, not a self-consistency pin (8ccc76b)
  • tests: neighbor features are partly tool-vetted (CellProfiler), not analytic-only (7910549)
  • tests: oracle tool local-setup research (TOOLS.md) (65e0b79)
  • tests: spec for the oracle-vetting test framework (f44ff25)
  • vetting: add skimage to the SPEC 4 oracle-token set (3ee1dfd)
  • vetting: add the missing radial config matrix (fe4ef56)
  • vetting: audit the 2D GLCM goldens against fresh oracle runs (0484103)
  • vetting: audit the 2D GLRLM goldens against fresh oracle runs (67f24ed)
  • vetting: correct 3D first-order oracle accounting (f6ad06a)
  • vetting: correct split to 16 ibsi + 4 analytic; file IQR_IDX flooring bug (726b082)
  • vetting: correct what the 3D first-order MATLAB oracle backs (2ccd560)
  • vetting: design for IBSI-vetted IH dispersion/index tests (07b1b75)
  • vetting: drop the references to the deleted 3D morphology MATLAB header (071b52d)
  • vetting: fix stale token count in plan example (16 ibsi + 4 analytic) (3255fef)
  • vetting: give the constant-ROI cell a SPEC disposition, not an invented one (834e59d)
  • vetting: give the neighbour rows a tier, a test name, a benchmark and a matrix (7981b2a)
  • vetting: implementation plan for IBSI-vetted IH dispersion/index tests (4dfb1ff)
  • vetting: lead the 3D first-order report with the current state (004bfc5)
  • vetting: lead the 3D first-order report with the current state (25c57f2)
  • vetting: migration map + seeded oracle_coverage.csv (Phase 1, no code changes) (77f3d07)
  • vetting: name Octave wherever the matlab oracle is presented (d70e3fe)
  • vetting: narrow what the 3D coverage sweep asserts that nothing else does (2a75d34)
  • vetting: record licensed 2D morphology provenance (3d039d6)
  • vetting: record reconciled IBSI IH phantom config + index base (99df244)
  • vetting: record the 2D GLDM audit (3ee009d)
  • vetting: record the 2D GLDZM audit (f29924d)
  • vetting: record the 2D GLSZM audit (176476a)
  • vetting: record the 2D neighbour audit (50d0ff8)
  • vetting: record the 2D NGTDM audit (23c609f)
  • vetting: record the 3D GLDM default cell and the degenerate ROI it discards (12ef315)
  • vetting: record the 3D GLDM recipes, matrix, benchmarks and audit (cac4e99)
  • vetting: record the 3D GLSZM audit, its recipes and its benchmark (33e0fbe)
  • vetting: record the 3D NGTDM audit, its recipes and its benchmark (55d5e90)
  • vetting: record the config scope of the gldm promotions (7 are mode-invariant) (0780912)
  • vetting: record the config scope of the glrlm promotions (285bc39)
  • vetting: record the config scope of the glszm promotions (c4bb8b1)
  • vetting: record what the 3D GLSZM review round measured (b7126de)
  • vetting: resolve missing oracles via deep-dive research (Phase 2) (2fa0515)
  • vetting: resolve the Phase-2 reconciliation decisions (SPEC 6) (8b45ddd)
  • vetting: retract unproven 3D NGLDM "ibsi" promotions; document MIRP disagreement (b924f8e)
  • vetting: scaffold matrix/ and oracles/gen_ conventions (GLCM example) (61fdc66)
  • vetting: seed config_recipes.md (b64c82b)
  • vetting: separate unproven provenance from unreproducible provenance (058cb00)
  • vetting: update golden_regen doc for the flat rel=1e-8 tolerance (f84773f)

Code Refactoring

  • 3d surface: describe the eigenvalue ordering rather than the defect it replaced (34a74c2)
  • address PR #351 review nits (c623405)
  • tests: route fractal fixture through the shared masked-loader helper (050e672)

Build System

  • arrow: require Boost for Arrow instead of Z5 (43a584f)

Continuous Integration

  • release-please: use manifest config so 0.x breaking = minor, and pin 0.12.0 (a500bd9)

This PR was generated with Release Please. See documentation.

@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--nyxus branch 8 times, most recently from c247198 to a53d4d8 Compare July 22, 2026 04:31
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--nyxus branch 9 times, most recently from 43791c2 to 58c38f4 Compare August 10, 2026 16:27
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--nyxus branch 7 times, most recently from 1e5be3e to 9d826ee Compare August 14, 2026 15:40
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--nyxus branch 5 times, most recently from cffbea0 to f58fe14 Compare August 21, 2026 14:42
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--nyxus branch 16 times, most recently from 82fbd02 to a72b4a9 Compare August 28, 2026 16:31
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--nyxus branch 3 times, most recently from a66f519 to 2cccf7b Compare September 1, 2026 09:57
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--nyxus branch from 2cccf7b to dd45884 Compare September 1, 2026 10:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants