diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 78e7f271..8032c17e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.11.0" + ".": "0.12.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..c859f854 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,233 @@ +# Changelog + +## [0.12.0](https://github.com/PolusAI/nyxus/compare/nyxus-v0.11.0...nyxus-v0.12.0) (2026-10-22) + + +### ⚠ 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](https://github.com/PolusAI/nyxus/commit/3f576d9bd54f72094a3d12a04ea72119e5152593)) +* add IBSI Intensity Histogram features, per-bin HISTOGRAM output, and --mergerois ([5b517f4](https://github.com/PolusAI/nyxus/commit/5b517f473dc7fab850845cb3346eb8eee76da8e7)) +* add unittest coverage to all 214 3D features, labeling tests with clear ground truth ([b89a9ac](https://github.com/PolusAI/nyxus/commit/b89a9accd7220e9ebed377bfe1596dd69f4c1118)) +* Benchmark area fix ([#345](https://github.com/PolusAI/nyxus/issues/345)) ([b532f21](https://github.com/PolusAI/nyxus/commit/b532f21dd636f1176254b003f0b4eca63de1b993)) +* **helpers:** add ceil_pow2 (tight next power of two) ([d0992dc](https://github.com/PolusAI/nyxus/commit/d0992dcfadec673712aa8f4fb3a9353a6a06224b)) +* **hounsfield:** --preserve-hu CT/Hounsfield intensity preservation ([1b5667f](https://github.com/PolusAI/nyxus/commit/1b5667fd85d9f9abcb3bbebdd583fcbee23ab5b0)) +* **hounsfield:** keep HU offset base at scanned slide min under fp-options; enable bare CLI --preserve-hu ([43f8063](https://github.com/PolusAI/nyxus/commit/43f80638c65f9682afac75a78ee4327483de1c60)) +* **hounsfield:** wire --preserve-hu through the 3D NIfTI loader ([65c9ad9](https://github.com/PolusAI/nyxus/commit/65c9ad9be90f0fc2ad03757b62441d1558d2871c)) +* **io:** add the OME metadata, plane addressing and out-of-core machinery ([e500077](https://github.com/PolusAI/nyxus/commit/e5000777a78ac0fbc216b6ab962f0d6cea9e0a4e)) +* **io:** read every pass through one streamed path, addressed by channel and timeframe ([773ea75](https://github.com/PolusAI/nyxus/commit/773ea7556adc13d0ba32c7df3dbe0a9060dc97bf)) +* **io:** stream oversized 3D volumetric ROIs out-of-core across all texture families ([04857e2](https://github.com/PolusAI/nyxus/commit/04857e20729d5f9d8afb7315fbcb8dea9c276074)) +* **omezarr:** migrate to z5 3.0.1 ArrayView API, drop xtensor ([225b9b9](https://github.com/PolusAI/nyxus/commit/225b9b917103f79dc8d27ff7ce4c2390c60db3ae)) +* re-organize and create complete implementation unit test coverage for 492 2D features ([#346](https://github.com/PolusAI/nyxus/issues/346)) ([011df60](https://github.com/PolusAI/nyxus/commit/011df6091c76e257b4159a324a63b0c7c0bf2d0b)) +* **vetting:** check_coverage CLI (--check/--write) + drift guard ([0ad65ee](https://github.com/PolusAI/nyxus/commit/0ad65eeb72e846129630f269b46253f6f2dae607)) +* **vetting:** check_coverage registry load + schema/token validation ([44d2bfa](https://github.com/PolusAI/nyxus/commit/44d2bfa834ff40126b96f87ea6ec571da36405ed)) +* **vetting:** coverage stats + markdown report generation ([0f85581](https://github.com/PolusAI/nyxus/commit/0f85581e62480a807d4303ded3988b4adf3c659d)) + + +### Bug Fixes + +* **2d zernike:** seed the angular tables at repetition 0, not 1 ([2eb3cc3](https://github.com/PolusAI/nyxus/commit/2eb3cc31988f41de103bf22d0355fb4d5d8c5d1d)) +* **3d gldzm:** hold the ROI mark in the distance cube, and index the vetted features ([334936c](https://github.com/PolusAI/nyxus/commit/334936c34ade2b110f57f0e6c6eef9f6c4ed9219)) +* **3d gldzm:** keep a ROI voxel whose grey level is zero, and say what the family costs ([ea9dd3a](https://github.com/PolusAI/nyxus/commit/ea9dd3a5f6cda073b2c1c04554451e5cdd487865)) +* **3d gldzm:** over the ROI, at 26-connectivity, at the IBSI distance ([cf5d971](https://github.com/PolusAI/nyxus/commit/cf5d971a5d1a453f34c117aa2e20eaf139dfdbf9)) +* **3d gldzm:** refuse an out-of-core box whose border distance outgrows its 16-bit buffer ([2eed988](https://github.com/PolusAI/nyxus/commit/2eed9881585e8543fdd920cd835b326f4436686d)) +* **3d morphology:** compute 3MESH_VOLUME out-of-core too, and keep 3AREA as on main ([d457455](https://github.com/PolusAI/nyxus/commit/d45745576f11661b80ac6bed72badc51f4db2e4b)) +* **3d morphology:** hull the mesh vertices, and sum both volumes exactly ([8cbe064](https://github.com/PolusAI/nyxus/commit/8cbe064e5351ec713ea401503c22976844f9056f)) +* **3d morphology:** integrate the ROI surface mesh, and build the hull in double ([9b9be52](https://github.com/PolusAI/nyxus/commit/9b9be522c395ad4f2ed7e8e4ab03b905df80add1)) +* **3d morphology:** make the convex hull exact on lattice voxels ([8b7ba7c](https://github.com/PolusAI/nyxus/commit/8b7ba7c4ba8ecc0efa8081f39f1392722b64fc2a)) +* **3d ngtdm:** default the neighbourhood radius so the family is not NaN ([53b04b5](https://github.com/PolusAI/nyxus/commit/53b04b53846e1b830cedbe0f7560a356c6d17dbc)) +* **3d-ngldm:** DCNU/DCNUN summed the wrong marginal (== GLNU) ([d3198e5](https://github.com/PolusAI/nyxus/commit/d3198e5d80992ad93692ca93480f7e38d9efdd83)) +* **3d-shape:** correct mislabeled axis lengths + vet 7 morphology features ([0af100b](https://github.com/PolusAI/nyxus/commit/0af100bc3eb8dd17fa5796b50c22998b5548293d)) +* **3d:** compute 3ROBUST_MEAN (was hardcoded 0) + vet 18 3D first-order features ([79d0974](https://github.com/PolusAI/nyxus/commit/79d097404f9b627b720dd49eb53dad43da83e985)) +* **anisotropy:** measure an oversized 2D ROI's geometry on the resampled ROI ([933d243](https://github.com/PolusAI/nyxus/commit/933d2432f8b641601432a8f1d565acd728d42e93)) +* **anisotropy:** measure intensity and texture on the voxels as acquired ([62a0f88](https://github.com/PolusAI/nyxus/commit/62a0f880e851c41c6ef431409ff15b63966b65a2)) +* **anisotropy:** measure the intensity-weighted 2D geometry on the pixels as acquired ([3949f10](https://github.com/PolusAI/nyxus/commit/3949f1027f04b4e2cec8fd7174ca79e296926a5a)) +* **anisotropy:** size an anisotropic whole slide for its pass as acquired ([427fa9c](https://github.com/PolusAI/nyxus/commit/427fa9ce9f7fb19a21001e86cdd9796c76a6bb66)) +* **anisotropy:** split the 2D passes by feature method, and carry on past an emptied ROI ([10b346e](https://github.com/PolusAI/nyxus/commit/10b346efabac97aea91907cf2f4d0af469923bd2)) +* audit and fix 2D feature tests 1/n ([c5cf260](https://github.com/PolusAI/nyxus/commit/c5cf260353a5cf5e118d095f72dddbf401693d0a)) +* **caliper:** correct Martin/Nassenstein diameters + vet 12 features vs imea ([bc3e92a](https://github.com/PolusAI/nyxus/commit/bc3e92a6ec7235a6a42ab35613cd98a3eb092afb)) +* **caliper:** float-precision hull rotation + address PR [#381](https://github.com/PolusAI/nyxus/issues/381) review ([3377183](https://github.com/PolusAI/nyxus/commit/33771833d21cd8488f54f330b48edf030b697b8a)) +* categorize and name feature unit tests and expected values ([d854679](https://github.com/PolusAI/nyxus/commit/d854679ef2a67bdde682b8bf5e37a3c4b63b6d40)) +* **chords:** correct max-chord angle index and all-chords histogram source ([bd9a930](https://github.com/PolusAI/nyxus/commit/bd9a93009154cacfd462bc44aa6689aac6f6794d)) +* cleare state and start fresh to avoid random test failure. ([495f05c](https://github.com/PolusAI/nyxus/commit/495f05c29101fe8fa3679784b2546c2de4f04e98)) +* **convex-hull:** Pick's-theorem hull area so SOLIDITY <= 1 ([0319932](https://github.com/PolusAI/nyxus/commit/03199326b71473e06805f6e482fe7c786fbedb4f)) +* emit per-bin HISTOGRAM values in arrow/parquet output ([01ac9c2](https://github.com/PolusAI/nyxus/commit/01ac9c24c0d85ca88b7ba10c09fec74416ccbdb4)) +* **feature settings:** resolve a feature's settings by its dynamic type ([981add1](https://github.com/PolusAI/nyxus/commit/981add198413720b6a3d0d795f8c54b95aafef7c)) +* **feature settings:** resolve the oversized 3D pass's settings by the dynamic type ([2828f8f](https://github.com/PolusAI/nyxus/commit/2828f8fc2e2d0f16a49082e844021a3a53ae8210)) +* **feature_mgr:** extend check_11_correspondence() to Feature3D ([b188e50](https://github.com/PolusAI/nyxus/commit/b188e50c31014392057d98efb168f40f8d2cf63f)) +* **feature_mgr:** loop 3D correspondence check from Feature3D::_FIRST_ ([9287f3c](https://github.com/PolusAI/nyxus/commit/9287f3ca2b369899e7f47c23acc4833d69f2edc4)) +* **fractal-dim:** adaptive box counting and a clean divider perimeter ([c981743](https://github.com/PolusAI/nyxus/commit/c9817432087cc9694781663cf365d123d2d38657)) +* **fractal-dim:** address PR review comments ([98a4f2d](https://github.com/PolusAI/nyxus/commit/98a4f2d25fa23a4c53cfa5a4a569d2dc48093200)) +* **fractal-dim:** align the ROI to the box-counting grid ([98e53ec](https://github.com/PolusAI/nyxus/commit/98e53ec77af6f8da13a462f3835193bf1552e41f)) +* **fractal-dim:** mean log-log slope for box-count, Richardson D for perimeter ([af37142](https://github.com/PolusAI/nyxus/commit/af37142895b2f02f6f4ee81962494da790f7b8f3)) +* **gabor:** keep filter-response magnitudes real-valued, then vet GABOR vs scikit-image ([2b2c7d7](https://github.com/PolusAI/nyxus/commit/2b2c7d7d84752d57883642ccfef738b55196287b)) +* **glcm:** default co-occurrence offset to 1 and exclude background ([02c5a75](https://github.com/PolusAI/nyxus/commit/02c5a75eb900c8f233574f843a5581d81274752a)) +* **glcm:** normalize HOM2/ENTROPY by sum_p (2D+3D) + fully oracle-vet GLCM ([60a1ebb](https://github.com/PolusAI/nyxus/commit/60a1ebbefb1ddc51ed1f7fcbbec0529ec65890a7)) +* **gldm:** exclude background from the dependence matrix ([f1f8eb4](https://github.com/PolusAI/nyxus/commit/f1f8eb4fdf99fd0c0c1ad29d44337488364371b0)) +* **gldzm:** build zones from the full 8-neighbourhood ([fc0bbde](https://github.com/PolusAI/nyxus/commit/fc0bbde8a1757e4a37804425685d7f51f9053013)) +* handle multi-valued HISTOGRAM in buffer output (Python pandas/arrow) ([246f4dd](https://github.com/PolusAI/nyxus/commit/246f4dd3efaa7a36100a79cf7a7050ab1f3e125d)) +* **hexagonality,lstsq:** use std::abs so gcc/Linux doesn't truncate doubles to int ([88a6f53](https://github.com/PolusAI/nyxus/commit/88a6f53f788ab25d901e6e176549a7912c3f8856)) +* **imq:** average LOCAL_FOCUS_SCORE over every tile, and return on a thin ROI ([feb8603](https://github.com/PolusAI/nyxus/commit/feb86037ce03e1297a97de73a2b7db7ca6f49c5f)) +* **imq:** correct FOCUS_SCORE overflow + abs()-variance, vet 4 imq features vs OpenCV and CellProfiler ([7eed701](https://github.com/PolusAI/nyxus/commit/7eed70173cb88070962a9cddca169a55c1fe7d9f)) +* **imq:** score oversized ROIs like in-RAM ones and give a thin ROI the soft-NaN ([76c0b59](https://github.com/PolusAI/nyxus/commit/76c0b59eee2eb5a71c1710a7b2c62920ee672237)) +* **intensity_histogram:** report IH_ROBUST_MEAN_IDX as a 1-based bin index ([0527f48](https://github.com/PolusAI/nyxus/commit/0527f485bec818c35b73222eb46066a6e954e5fa)) +* **intensity:** keep a header-rescaled slide's stored integers, and carry the rescale in the inverse ([c79c822](https://github.com/PolusAI/nyxus/commit/c79c8224cbc41bed55ce7cf4a9475a30642d84e4)) +* **intensity:** make the recorded map match what the loaders actually store ([ce5f74b](https://github.com/PolusAI/nyxus/commit/ce5f74b5d4194a4db7a3b6d8d7bbd005c60023ae)) +* **intensity:** mirror the loaders' upper clamp, and survive degenerate input ([6bf9735](https://github.com/PolusAI/nyxus/commit/6bf9735afe342012d6b0c7df641008cb89b81405)) +* **intensity:** one narrowing for every load-time map, saturated at both ends ([ed36627](https://github.com/PolusAI/nyxus/commit/ed36627660c0e3cb23edf72dc3aefac5e39cad7d)) +* **intensity:** report first-order features in the slide's own intensity domain ([1a4e956](https://github.com/PolusAI/nyxus/commit/1a4e956b707c6c8308222c8ed2622f59f44dd1ad)) +* **intensity:** restore the HU rounding, and finish the guards it skipped ([b243ff5](https://github.com/PolusAI/nyxus/commit/b243ff50e11cced9cb6de1fd6e0d169b729cbd04)) +* **intensity:** settle a slide that measured nothing, and close the last unguarded cast ([f25d7e1](https://github.com/PolusAI/nyxus/commit/f25d7e1dc55f76ad7744efddf0e118438f29f687)) +* **io:** read compressed striped TIFFs past the first strip, and refuse a failed scanline ([a02393a](https://github.com/PolusAI/nyxus/commit/a02393a6092fe9e3c9a3fbc19cde8135114c45c5)) +* **io:** refuse an unsupported file type at every loader dispatch ([fe5586b](https://github.com/PolusAI/nyxus/commit/fe5586b0b2c86351f48fb69914e7b260313870cf)) +* **io:** refuse the complex TIFF sample formats in all four loaders ([b413ffd](https://github.com/PolusAI/nyxus/commit/b413ffdc3b6f3c93fba494889c1e2dd1dd7c29b1)) +* **io:** release the pair an image loader holds when it opens another ([71aa025](https://github.com/PolusAI/nyxus/commit/71aa02580d04e8b36844cf57be60399c36e84a77)) +* **io:** stream a single-ROI mask's whole foreground, and fail a pair whose out-of-core feature fails ([9e24e70](https://github.com/PolusAI/nyxus/commit/9e24e7045e40ad103d3a2b1c4d8397165c606072)) +* **io:** write the CLI test's volume fixture as Z-planes, not RGBA ([e06fc2f](https://github.com/PolusAI/nyxus/commit/e06fc2f7896fcfb75b265647d3e3e92d70561142)) +* issue 327 single roi polus ([#330](https://github.com/PolusAI/nyxus/issues/330)) ([03eeb0c](https://github.com/PolusAI/nyxus/commit/03eeb0c7d25633483c051a04ddcd43192c833315)) +* **loader:** clamp negative signed-int pixels so int16 CT doesn't wrap to a huge unsigned value ([fac1bac](https://github.com/PolusAI/nyxus/commit/fac1bac7df856c0809f04cd14c13c6c6f11d68f4)) +* make imagecodecs PIP_ONLY_BINARY ([b5fa20a](https://github.com/PolusAI/nyxus/commit/b5fa20a80d0f66f7be40248f9dc33248ee94cd16)) +* migrate build_and_test from macos-15-intel to macos-14 ([ac70de1](https://github.com/PolusAI/nyxus/commit/ac70de14cbc74d29a77d5e4b7a7330a8ac89657d)) +* mitigate exposed bug due to incorrect reading of bx in 3d_surface ([24d18ee](https://github.com/PolusAI/nyxus/commit/24d18eeb15f334027b2ba671426397a7aba483ea)) +* **moments:** correct Hu invariant h5/h6 formulas (9x bracket, stray +eta03) ([73f6ca8](https://github.com/PolusAI/nyxus/commit/73f6ca813b2c2fae7c34a7524f8a3cd604aca301)) +* **moments:** use fractional centroid in 2D central moments (drop (int) truncation) ([5cbf94a](https://github.com/PolusAI/nyxus/commit/5cbf94af7d46995e4062a4056e327e107fcb4afb)) +* **morphology:** geodetic length/thickness from real perimeter (was size_t-truncated) ([ce7716f](https://github.com/PolusAI/nyxus/commit/ce7716ff2b853e96158f1a7885d1d62622638689)) +* **morphology:** report ROI radii as distances, taken exactly ([5bb289b](https://github.com/PolusAI/nyxus/commit/5bb289b0d48358a10076ee82d4d6b87983fe9696)) +* **neighbors:** exact min distance for the touch/radius test (PERCENT_TOUCHING) ([92de774](https://github.com/PolusAI/nyxus/commit/92de774785302364eeb48170c4f3eabb9dd73a8e)) +* **neighbors:** implement closest-neighbor dist/ang and cap PERCENT_TOUCHING ([4322c88](https://github.com/PolusAI/nyxus/commit/4322c88a45e88825cbfee494b6915126ae979a7f)) +* **nested:** carry every non-feature column into the nested-ROI table ([f60d8d0](https://github.com/PolusAI/nyxus/commit/f60d8d07c9acdd39f0afbfc438ac32137ce48ff1)) +* **ngldm:** compute the 3D NGLDM over the ROI, over 26 neighbours, at the IBSI dependence count ([558aa79](https://github.com/PolusAI/nyxus/commit/558aa79464697208a5982d9c4efeaf550213cb10)) +* **ome:** read only named TIFF extensions and keep X and Y units apart ([8ec6b03](https://github.com/PolusAI/nyxus/commit/8ec6b03c800d6bc8232e589348418dd5682d4b11)) +* **ome:** refuse a plane count past size_t and a non-object Zarr axis ([9dada69](https://github.com/PolusAI/nyxus/commit/9dada6971313c80a97c37587c5cc6c554f0ca2ec)) +* **omezarr:** say why a store will not open, and where its image is ([455c13a](https://github.com/PolusAI/nyxus/commit/455c13ac282e181ed7c290c9831ce5fac7e49f9c)) +* **ooc:** make the 2D out-of-core feature paths match the in-RAM path ([9a9ad02](https://github.com/PolusAI/nyxus/commit/9a9ad02e49f936f96f5b9e06dd9cfac2f104d61b)) +* **python:** release an instance's Environment so a recycled id() cannot inherit it ([6dd550f](https://github.com/PolusAI/nyxus/commit/6dd550f340a6a396256a5abf0529e4ffb79d2ba8)) +* remove redundant calculations and avoid flushing valid old values ([cdf48cf](https://github.com/PolusAI/nyxus/commit/cdf48cfc5ab345a1013bc7394dff0734e72c415f)) +* review comments on PR 352 ([ec42edc](https://github.com/PolusAI/nyxus/commit/ec42edc4e6a400f98ad33428c0b43b4eb0115e05)) +* **roi buffers:** refuse a pixel outside the box that sizes its buffer ([2273638](https://github.com/PolusAI/nyxus/commit/2273638c6141c58bac3198034f3b654b18ce2458)) +* stop featurize() mutating its shared default name lists ([372172e](https://github.com/PolusAI/nyxus/commit/372172e9045d92ef1e57936eae5a20ca05a2d5bb)) +* upgrade Docker build to CUDA 12.6 and Python 3.11 ([80b548d](https://github.com/PolusAI/nyxus/commit/80b548d42322a301c1da824f7ce55b945aa8da63)) +* use raw docstrings to silence invalid escape sequence SyntaxWarning ([e3bf05c](https://github.com/PolusAI/nyxus/commit/e3bf05cbe670739c7e629542342621cdfd25cf1c)) +* **vetting:** band the 3D GLSZM entropy pin for a platform, not for a machine ([ab8573e](https://github.com/PolusAI/nyxus/commit/ab8573e67d9d486c7906305b5ddc159a1d71e561)) +* **vetting:** correct radial follow-up records ([7c4657a](https://github.com/PolusAI/nyxus/commit/7c4657a10d5e420db19a379ca3a8c25b23b82815)) +* **vetting:** let the NGTDM coverage scanner read one-line TEST registrations ([51df88e](https://github.com/PolusAI/nyxus/commit/51df88ee0a2ca67464f44f2b234004d2afaf67a4)) +* **vetting:** normalize oracle_coverage.csv to LF, drop dead current_test notes ([7dc26ed](https://github.com/PolusAI/nyxus/commit/7dc26edb73069495bb12168920cb062a54e2ee31)) +* **vetting:** write every generated CSV and report with LF ([91eb35e](https://github.com/PolusAI/nyxus/commit/91eb35e466658dd8e1a70564c073ac681ebcdf25)) + + +### Performance Improvements + +* **3d gldzm:** gather the ROI's mark and grey levels in one pass ([c37f58b](https://github.com/PolusAI/nyxus/commit/c37f58b9e97cd7dfbfcbdabc2a5b60c900255415)) +* **imq:** read the out-of-core focus-score image a row at a time ([d418b9d](https://github.com/PolusAI/nyxus/commit/d418b9d500dad615cdc78a5203580ec1b4015fb9)) +* **io:** decode each row of a striped TIFF once per tile-row scan ([c1bacd1](https://github.com/PolusAI/nyxus/commit/c1bacd1972cc63ba0e7c078a6c4e0f32ad8ee867)) +* **morphology:** read ROI radii from a distance transform where it is cheaper ([14a67eb](https://github.com/PolusAI/nyxus/commit/14a67ebf61e108032c2669fb101e666687d4a1bf)) +* **ngldm:** build the 3D NGLDM from the ROI's voxels, in one pass for the mask and grey levels ([685da53](https://github.com/PolusAI/nyxus/commit/685da533e2d64ad18d8665aba0782e280766ddaf)) +* **omezarr:** open the z5 dataset once, not per tile ([9b36f84](https://github.com/PolusAI/nyxus/commit/9b36f84bad3d86e663005bf35e3301844894e291)) + + +### Documentation + +* **3d gldzm:** record what the retired coverage sweep checked, and what it did not ([483dbbc](https://github.com/PolusAI/nyxus/commit/483dbbc9e9faa72f667378c2844914291e0f70ac)) +* **3d morphology:** compare 3MESH_VOLUME with PyRadiomics MeshVolume ([75a2ea7](https://github.com/PolusAI/nyxus/commit/75a2ea7e86b94b2459fe34e7e70b5f36a5bc0c3e)) +* **3d morphology:** correct the PyRadiomics mesh comparison ([69fb83d](https://github.com/PolusAI/nyxus/commit/69fb83debacbd27cf6cf68f23eeeb255509c695a)) +* **3d morphology:** correct the PyRadiomics mesh comparison for orientation and spacing ([202f9f9](https://github.com/PolusAI/nyxus/commit/202f9f93a388644a87224e7503ffd580a6bbf078)) +* **3d morphology:** tighten the PyRadiomics mesh comparison ([4ea101d](https://github.com/PolusAI/nyxus/commit/4ea101d3d9af2aeea483205bd31435e71327ce31)) +* **3d ngldm:** say what the generator verifies, and what the Ns agreement proves ([9310932](https://github.com/PolusAI/nyxus/commit/93109320316d82059713f59c760903a9479f6e28)) +* add CLAUDE.md codebase and workflow guide ([e301fe6](https://github.com/PolusAI/nyxus/commit/e301fe6e9d27650e70264f383cc29c267f46f4dc)) +* answer the second review of the pages, scripts and registry ([f3f54c3](https://github.com/PolusAI/nyxus/commit/f3f54c3676e02642a5d955c70117341dea9350b8)) +* **api:** rewrite the Python docstrings in numpydoc style and check them against the code ([c76f641](https://github.com/PolusAI/nyxus/commit/c76f641fabd0c97171edafa0b7e466b4a9d8a00d)) +* **build:** build the site without the compiled extension and fail CI on warnings ([1ded975](https://github.com/PolusAI/nyxus/commit/1ded975734921f2617e350b11eeacd00f680f691)) +* **caliper:** correct inaccurate/stale comments (no code change) ([cc5b4de](https://github.com/PolusAI/nyxus/commit/cc5b4dea602157d8c85bb7cbb47fda22054a0181)) +* **CLAUDE:** add git workflow and tests/vetting conformance rules ([a548b57](https://github.com/PolusAI/nyxus/commit/a548b578b1e248d1c319e550b473decca8e8edaa)) +* **CLAUDE:** address PR [#388](https://github.com/PolusAI/nyxus/issues/388) review — C++20; agentic git workflow ([466c038](https://github.com/PolusAI/nyxus/commit/466c038d2f47be5ea9ee000145906c4e3d379914)) +* **CLAUDE:** address PR [#388](https://github.com/PolusAI/nyxus/issues/388) review — generalize paths, drop z5py pin, add no-local-paths rule ([4235e0c](https://github.com/PolusAI/nyxus/commit/4235e0c8345a87cbd5229b95950ec85587c82268)) +* **cli:** generate the command-line reference and correct the usage pages ([428b1f8](https://github.com/PolusAI/nyxus/commit/428b1f8395ece539af8df94cfa57c657d0efaa12)) +* correct the pages, scripts and registry rows named in review ([2c2f295](https://github.com/PolusAI/nyxus/commit/2c2f2951d85242642f82c39504745012d6ea21df)) +* **devguide:** rewrite the developer guide and correct the project notes ([8fccc2b](https://github.com/PolusAI/nyxus/commit/8fccc2bf8239a46ad6e753ada81e52d11e19ccaf)) +* **features:** add the 3D intensity, shape and texture pages ([c92ac6b](https://github.com/PolusAI/nyxus/commit/c92ac6b346a48fa0356a64f2e02da2323df5ee1e)) +* **features:** generate the feature list, the groups and the family indexes ([91c3573](https://github.com/PolusAI/nyxus/commit/91c3573f7780d85cde2eca945e718a701bc5e9f4)) +* **features:** rewrite the 2D intensity, histogram and image quality pages ([e2b0286](https://github.com/PolusAI/nyxus/commit/e2b02865b5d6b8b34cf5336f11d977d374387699)) +* **features:** rewrite the 2D morphology, erosion, fractal and radial pages ([3cd4a4d](https://github.com/PolusAI/nyxus/commit/3cd4a4d4a11983b16e059b1e9e9507af434385d5)) +* **features:** rewrite the GLCM, GLRLM and GLSZM pages ([0eaa6f3](https://github.com/PolusAI/nyxus/commit/0eaa6f393f8959a2b495caea790dc4472cf4f4e7)) +* **features:** rewrite the GLDM, GLDZM, NGLDM and NGTDM pages ([0a87b6e](https://github.com/PolusAI/nyxus/commit/0a87b6ea3374bd3daa695486de7726385a7543da)) +* **features:** rewrite the moments, Zernike and Gabor pages ([cb7616e](https://github.com/PolusAI/nyxus/commit/cb7616ee2495d2a61c422232bbdd2c745c1ee484)) +* **guide:** add IBSI mode, validation and troubleshooting pages ([dde7609](https://github.com/PolusAI/nyxus/commit/dde7609d0192b27c02ecd44f2c76459a081e1699)) +* **imq:** say in the matrix that this pass vets the in-RAM paths only ([1591760](https://github.com/PolusAI/nyxus/commit/159176052b51214b9c208f1a25342eb77d7b3a8c)) +* **io:** describe the supported formats, the output and the shared conventions ([9c2e03b](https://github.com/PolusAI/nyxus/commit/9c2e03bfbcad6f663be85c7bd6672f12a4cd594b)) +* **io:** state the strip band's memory footprint and that ram_limit omits it ([ab01215](https://github.com/PolusAI/nyxus/commit/ab01215bcae3c7c6d79634a58e1e125952451f84)) +* link the known defects to their issues ([8b23ce6](https://github.com/PolusAI/nyxus/commit/8b23ce6e905a487f5f6a12284a3dc17fa9b9766b)) +* **morphology:** describe the ROI radius features rather than the change to them ([edb9f5d](https://github.com/PolusAI/nyxus/commit/edb9f5db5b303a80d34840759610e5516d182e2f)) +* **readme:** slim the README and add the entry pages ([494352d](https://github.com/PolusAI/nyxus/commit/494352dfcddea0e4b113cbbacb123a2e8645f77b)) +* **scale:** document large images, volumes and GPU acceleration ([2daf705](https://github.com/PolusAI/nyxus/commit/2daf7051e0f15d82c837199db3ece3f45fff9279)) +* **test:** correct IQR/QCoD _IDX framing — discrete percentile is IBSI-conformant, not a bug ([29214ba](https://github.com/PolusAI/nyxus/commit/29214ba7ef60c3fa80a4bee66037c53cc161efe2)) +* **tests:** add vetting audit baseline, fraclac oracle, and README ([e5232c0](https://github.com/PolusAI/nyxus/commit/e5232c05095d13bac0674fd47fecdeb75070c91a)) +* **tests:** box-count golden is FracLac-vetted, not a self-consistency pin ([8ccc76b](https://github.com/PolusAI/nyxus/commit/8ccc76b043391593bd9c2e9f082c435901979ca8)) +* **tests:** neighbor features are partly tool-vetted (CellProfiler), not analytic-only ([7910549](https://github.com/PolusAI/nyxus/commit/79105490154d4c9672207e10fcc534df36598497)) +* **tests:** oracle tool local-setup research (TOOLS.md) ([65e0b79](https://github.com/PolusAI/nyxus/commit/65e0b790d5df5f498d0068e1de65889f9de283ad)) +* **tests:** spec for the oracle-vetting test framework ([f44ff25](https://github.com/PolusAI/nyxus/commit/f44ff251e25e3009c0a6a71c4e1acd49f9f86320)) +* **vetting:** add skimage to the SPEC 4 oracle-token set ([3ee1dfd](https://github.com/PolusAI/nyxus/commit/3ee1dfd851ee07c785de5283a6b43ff207cbab62)) +* **vetting:** add the 2D morphology CellProfiler vetting report ([9d0db5f](https://github.com/PolusAI/nyxus/commit/9d0db5f5be865f1ef44863f635c1e6b8e83c3497)) +* **vetting:** add the missing radial config matrix ([fe4ef56](https://github.com/PolusAI/nyxus/commit/fe4ef56eb260a0ef92e310f7e22588bb1d6b0e5c)) +* **vetting:** audit the 2D GLCM goldens against fresh oracle runs ([0484103](https://github.com/PolusAI/nyxus/commit/0484103d1bf3661e39b81a54339722768119546f)) +* **vetting:** audit the 2D GLRLM goldens against fresh oracle runs ([67f24ed](https://github.com/PolusAI/nyxus/commit/67f24ed946b99295a8d5fc14e2ed15a76b664c8c)) +* **vetting:** correct 3D first-order oracle accounting ([f6ad06a](https://github.com/PolusAI/nyxus/commit/f6ad06a7d817886e80a2a04bbc1d117bb4236ad8)) +* **vetting:** correct split to 16 ibsi + 4 analytic; file IQR_IDX flooring bug ([726b082](https://github.com/PolusAI/nyxus/commit/726b0826c8672b1b7a57cef16b8308e87abaccab)) +* **vetting:** correct the 3D NGLDM report's file-inventory claim, and widen the generator's shift ([1a762a1](https://github.com/PolusAI/nyxus/commit/1a762a199c73f23f0a5cb8c053fb954fe76dae0b)) +* **vetting:** correct what the 3D first-order MATLAB oracle backs ([2ccd560](https://github.com/PolusAI/nyxus/commit/2ccd5608e46163ffa9849d360cb28bbb063aa7fe)) +* **vetting:** design for IBSI-vetted IH dispersion/index tests ([07b1b75](https://github.com/PolusAI/nyxus/commit/07b1b75f2a5476b20f65836fc09fcde7648287f2)) +* **vetting:** drop the references to the deleted 3D morphology MATLAB header ([071b52d](https://github.com/PolusAI/nyxus/commit/071b52d2df60e370521b299460ff794496859776)) +* **vetting:** fix stale token count in plan example (16 ibsi + 4 analytic) ([3255fef](https://github.com/PolusAI/nyxus/commit/3255fef34af9d54e846ad9ae2d617e27de72ba08)) +* **vetting:** give the constant-ROI cell a SPEC disposition, not an invented one ([834e59d](https://github.com/PolusAI/nyxus/commit/834e59da923f60c9dbebce20764017a4d7c39d95)) +* **vetting:** give the neighbour rows a tier, a test name, a benchmark and a matrix ([7981b2a](https://github.com/PolusAI/nyxus/commit/7981b2a86e1b1b111d91b2c55e218d387167964b)) +* **vetting:** implementation plan for IBSI-vetted IH dispersion/index tests ([4dfb1ff](https://github.com/PolusAI/nyxus/commit/4dfb1ff9d3b2f98e26379c228e65dd2ec0e08642)) +* **vetting:** lead the 3D first-order report with the current state ([004bfc5](https://github.com/PolusAI/nyxus/commit/004bfc51caf8570b29e24905cc40a40950d28b01)) +* **vetting:** lead the 3D first-order report with the current state ([25c57f2](https://github.com/PolusAI/nyxus/commit/25c57f272d64c856557ed6821fa7960a9d1af3fe)) +* **vetting:** migration map + seeded oracle_coverage.csv (Phase 1, no code changes) ([77f3d07](https://github.com/PolusAI/nyxus/commit/77f3d07abf1377fcf9248d237deba5de06e1005c)) +* **vetting:** name BasicMorphologyFeatures as MASS_DISPLACEMENT's producer ([d33a168](https://github.com/PolusAI/nyxus/commit/d33a1681698289e7d99d9714ce2d29cfab03b721)) +* **vetting:** name Octave wherever the matlab oracle is presented ([d70e3fe](https://github.com/PolusAI/nyxus/commit/d70e3fe79c2fa43508f01d63adab6e557928c945)) +* **vetting:** narrow what the 3D coverage sweep asserts that nothing else does ([2a75d34](https://github.com/PolusAI/nyxus/commit/2a75d34e47e9c890db99f26c2c66266ae1f2a9d0)) +* **vetting:** point the IMQ mechanics-guard comment at scan_other_tests ([bb1981c](https://github.com/PolusAI/nyxus/commit/bb1981c7c61b2e9cf427eb7c6e257ac68c75f4eb)) +* **vetting:** record licensed 2D first-order provenance ([06ad1be](https://github.com/PolusAI/nyxus/commit/06ad1be1c267bdfdf85ae2c07eff342f1fe8ea33)) +* **vetting:** record licensed 2D morphology provenance ([3d039d6](https://github.com/PolusAI/nyxus/commit/3d039d617f2f9f5560c874137064207ade2e4413)) +* **vetting:** record reconciled IBSI IH phantom config + index base ([99df244](https://github.com/PolusAI/nyxus/commit/99df244c1f49977d631561c339bdb5e05d5979a6)) +* **vetting:** record the 2D GLDM audit ([3ee009d](https://github.com/PolusAI/nyxus/commit/3ee009d4bd02203357caee753ce501391a6cb0ab)) +* **vetting:** record the 2D GLDZM audit ([f29924d](https://github.com/PolusAI/nyxus/commit/f29924d20ec1edc28f2c2ff64bebcf0630423566)) +* **vetting:** record the 2D GLSZM audit ([176476a](https://github.com/PolusAI/nyxus/commit/176476a255bf4292c1b6b69ddfcb118f2e805518)) +* **vetting:** record the 2D neighbour audit ([50d0ff8](https://github.com/PolusAI/nyxus/commit/50d0ff8850f09dbc229a6854868307bd4a3eb744)) +* **vetting:** record the 2D NGTDM audit ([23c609f](https://github.com/PolusAI/nyxus/commit/23c609f8ef68bdaabda7c4c7558b5dd8ad061403)) +* **vetting:** record the 3D GLDM default cell and the degenerate ROI it discards ([12ef315](https://github.com/PolusAI/nyxus/commit/12ef31588674e592dddad19f6b20beb3fd9e0fe8)) +* **vetting:** record the 3D GLDM recipes, matrix, benchmarks and audit ([cac4e99](https://github.com/PolusAI/nyxus/commit/cac4e99dff997f24d79888e0c6f4a971a6da3a9b)) +* **vetting:** record the 3D GLSZM audit, its recipes and its benchmark ([33e0fbe](https://github.com/PolusAI/nyxus/commit/33e0fbeda42e5c9c8f499d480418fa2bfb8180cc)) +* **vetting:** record the 3D NGTDM audit, its recipes and its benchmark ([55d5e90](https://github.com/PolusAI/nyxus/commit/55d5e9002af1855b631d6646a2dc196ba7e2a677)) +* **vetting:** record the config scope of the gldm promotions (7 are mode-invariant) ([0780912](https://github.com/PolusAI/nyxus/commit/0780912413b5d03290b33cf2bf27ee838c0cbb65)) +* **vetting:** record the config scope of the glrlm promotions ([285bc39](https://github.com/PolusAI/nyxus/commit/285bc39be3e7fc9125514a28094e417f98d65802)) +* **vetting:** record the config scope of the glszm promotions ([c4bb8b1](https://github.com/PolusAI/nyxus/commit/c4bb8b1f1dafe9c1e81c0be254c7e7016db5936c)) +* **vetting:** record what the 3D GLSZM review round measured ([b7126de](https://github.com/PolusAI/nyxus/commit/b7126def4f9c883a3ef311d4c4927839d9e5f946)) +* **vetting:** resolve missing oracles via deep-dive research (Phase 2) ([2fa0515](https://github.com/PolusAI/nyxus/commit/2fa051573417375f533d751bff14482934e9288c)) +* **vetting:** resolve the Phase-2 reconciliation decisions (SPEC 6) ([8b45ddd](https://github.com/PolusAI/nyxus/commit/8b45ddd704994b85792166be0282fb905b475003)) +* **vetting:** retract unproven 3D NGLDM "ibsi" promotions; document MIRP disagreement ([b924f8e](https://github.com/PolusAI/nyxus/commit/b924f8e488b8bfb08a020ee5754cc148cb18672d)) +* **vetting:** scaffold matrix/ and oracles/gen_ conventions (GLCM example) ([61fdc66](https://github.com/PolusAI/nyxus/commit/61fdc668adae748d47990bbd52cc9b229e2f7a35)) +* **vetting:** seed config_recipes.md ([b64c82b](https://github.com/PolusAI/nyxus/commit/b64c82b2eb1e9c18392be4e4b525bf940c70cf5d)) +* **vetting:** separate unproven provenance from unreproducible provenance ([058cb00](https://github.com/PolusAI/nyxus/commit/058cb00083e3b29b1ca05313f9bcd463bb5004c5)) +* **vetting:** update golden_regen doc for the flat rel=1e-8 tolerance ([f84773f](https://github.com/PolusAI/nyxus/commit/f84773fe5ad83143f9e7072d9426753970114c03)) + + +### Code Refactoring + +* **3d surface:** describe the eigenvalue ordering rather than the defect it replaced ([34a74c2](https://github.com/PolusAI/nyxus/commit/34a74c26d51bde97cb3bbe8a2fe41a16a799bc57)) +* address PR [#351](https://github.com/PolusAI/nyxus/issues/351) review nits ([c623405](https://github.com/PolusAI/nyxus/commit/c6234053f966ee58ce32f2c98a69f8b229706e78)) +* **feature settings:** key the settings registry by std::type_index ([9381158](https://github.com/PolusAI/nyxus/commit/9381158b22d787f5cd033d2d77e97d12b57a3e5b)) +* **tests:** route fractal fixture through the shared masked-loader helper ([050e672](https://github.com/PolusAI/nyxus/commit/050e67250b5d04b6668aaa79d4337c6247214c49)) + + +### Build System + +* **arrow:** require Boost for Arrow instead of Z5 ([43a584f](https://github.com/PolusAI/nyxus/commit/43a584f6ac4cadb963c8fcc02f6197b5aae6724e)) + + +### Continuous Integration + +* **release-please:** use manifest config so 0.x breaking = minor, and pin 0.12.0 ([a500bd9](https://github.com/PolusAI/nyxus/commit/a500bd913e94de68db3b6a608f8d4ed66b5f10d5)) diff --git a/CITATION.cff b/CITATION.cff index 367c2f38..711d788f 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -10,7 +10,7 @@ authors: - given-names: Andriy family-names: Kharchenko affiliation: Axle Informatics -version: 0.11.0 # x-release-please-version +version: 0.12.0 # x-release-please-version license: MIT repository-code: "https://github.com/PolusAI/nyxus" url: "https://nyxus.readthedocs.io" diff --git a/setup.py b/setup.py index 9b82896f..e697aac7 100644 --- a/setup.py +++ b/setup.py @@ -57,7 +57,7 @@ def build_extension(self, ext): env = os.environ.copy() try: from setuptools_scm import get_version - version = get_version(fallback_version="0.0.0") + version = get_version(fallback_version="0.12.0") except Exception: version = "0.0.0" env["CXXFLAGS"] = '{} -DVERSION_INFO=\\"{}\\"'.format(