Repository navigation
Tags
Tags
Harden numeric argument validation across MEX commands (#24) * Add complex-array detection callback Expose `IsComplex` in the extension API and implement it for MATLAB and Octave hosts using `mxIsComplex`. * Harden shared numeric argument helpers and run native tests in CI * Validate numeric arguments across commands and test both hosts * Bump version to 0.6.1-alpha
Add metadata builder API for writing CZI metadata (#23) * Add metadata builder API for writing CZI document metadata Expose writer metadata preparation and writing, plus mutable builder handles with XML access and a convenience-operation dispatcher. Support scaling values and display units through MetadataUtils. Preserve automatic metadata generation on close unless explicit metadata writing succeeds. Document the API and add MATLAB and Octave tests. * Document metadata builder commands Expand CZI metadata command documentation, clarify scaling units, and describe explicit metadata writing and lifecycle behavior. * Validate MATLAB handle type Require scalar Int32 handles before conversion in `GetHandle`, rejecting invalid MATLAB argument types consistently. * Support GeneralDocumentInfo metadata updates Add validated document information fields and ratings to MetadataBuilder_Modify, with accompanying documentation and examples.
Add QuerySubBlockDirectory command (#20) * Add QuerySubBlockDirectory command Returns information about all (or a filtered subset of) subblocks as a struct of arrays, without reading the subblocks from the file. Filter supports coordinate sets, ROI and pyramid-layer-0. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Document purpose and design of QuerySubBlockDirectory Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Bump version to 0.5.0-alpha Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Address review comments: reject sparse filter arrays, fix uint32 indexing, run Octave test in CI Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * QuerySubBlockDirectory: stricter validation (sparse, fractional, non-scalar inputs) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * QuerySubBlockDirectory: coordinate filter as intervals (CDimBounds), range-check ints Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * QuerySubBlockDirectory: stop enumeration once all counted entries are filled Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Refine subblock directory filtering Use dimension bounds that ignore missing coordinates, derive output dimensions from reader statistics, and streamline two-pass result construction while preserving ROI and layer filtering. * Update subblock coordinate query tests Reflect ZCT dimensions, sentinel values for missing coordinates, and filtering behavior for absent dimensions. * Test complete coordinate matching Update QuerySubBlockDirectory tests to verify: - Full ZCT coordinate dimensions - Missing dimensions represented by intmin - Matching subblocks with absent queried dimensions - Correct empty-result coordinate shapes * Cast position and start to int64_t for comparison Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Clarify 'CoordinateDimensions' description Updated the description of 'CoordinateDimensions' to clarify its independence from the filter and subblock matching. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Add ability to specify "open-options" (#19) * Bump to 0.4.0-alpha and update libCZI source Bump the project version from 0.3.5-alpha to 0.4.0-alpha, switch the libCZI fetch source to ptahmose/libCZI on origin/jbl/XT, and disable building czicmd. * ... * ... * Bump CI action versions Update build.yml to use actions/checkout@v5, matlab-actions/setup-matlab@v3, and actions/upload-artifact@v5 in build and release jobs without changing workflow logic. * Upgrade CI action versions Upgrade `matlab-actions/run-command` to v3 and `actions/upload-artifact` to v7 for MATLAB and Octave MEX artifact uploads. No build logic changed. * Add Open options passthrough for CZI readers Support optional semicolon-separated Open-reader key=value options in `MEXlibCZI('Open', ...)` and `octavelibczi`, pass them through `CziReader::Open` to libCZI, add validation and MATLAB tests, update docs, bump version to `0.5.0-alpha`, and reformat `CziReader.cpp`. * Fix debug log filename formatting Use `filename.c_str()` in `MexFunction_Open_Execute` when logging the file name with a `%s` formatter, ensuring a C-style string is passed before calling `reader->Open(filename, open_options)`. * Update libCZI fetch configuration * Update Open options test workaround Update the test to validate `dimensionSwapWorkaround=XtSubblocks` when opening CZI files. * Test XtSubblocks dimension workaround Validate bounding-box correction with a new CZI fixture while preserving subblock count. * Test XzSubblocks workaround Add an Xztest.czi fixture and MATLAB coverage for opening it with and without the dimension-swap workaround. Leave expected metadata assertions as TODOs. * Fix MEXlibCZI example and update scaling units Updated example usage for MEXlibCZI and corrected unit notation. * Downgrade MEXLIBCZI_MINOR version to 4 * Update libCZI repository and tag for compatibility use mainline-libCZI * Uncomment verification tests for MEXlib OpenOptions
improve CZI-write (#10) * Enhance CziWriter::Close for C-dimension display settings Updated the `Close` method to handle C-dimension statistics. If the C-dimension is valid, default display settings are applied to each channel to prevent display issues in certain ZEN versions. The metadata builder is utilized to write these settings before retrieving the XML for metadata writing. * Bump patch version and enhance CZI handling tests Updated `CMakeLists.txt` to increment the patch version of the `MEXLIBCZI` library from 4 to 5. Refactored the `Close()` method in `CziWriter.cpp` to utilize a `unique_ptr` for better memory management. Added a new test function in `TestMEXlib_Write.m` to validate multi-channel CZI file creation and properties. * Update documentation for writer object's subblock Added details on available pixel types for argument #4 and options for argument #6 in the writer object's subblock documentation.
PreviousNext