Skip to content

Conversation

ptahmose
Copy link
Contributor

@ptahmose ptahmose commented Sep 17, 2025

[x] I followed the How to structure your PR.
[ ] Based on Commit Parsing: In case a new major release will be created (because the body or footer begins with 'BREAKING CHANGE:'), I created a new Jupyter notebook with a matching version.
[ ] Based on Commit Parsing: In case a new minor/patch release will be created (because PR title begins with 'feat'/('fix' or 'perf')), I optionally created a new Jupyter notebook with a matching version.
[x] In case of API changes, I updated API.md.

This PR is updating libCZI to latest version, which includes support for "mask" (c.f. ZEISS/libczi#153).
The new functionality of "mask-aware tile-composition" is made available to pylibczirw by introducing a ReaderOptions object which optionally can be passed to open_czi. Mask-aware composition is therefore an opt-in function at this point (motivation is to limit risk and ensure backwards compatibility).

@ptahmose ptahmose added the cla Contributor License Agreement sent to Admin label Sep 17, 2025
Copy link

codecov bot commented Sep 17, 2025

Codecov Report

❌ Patch coverage is 82.35294% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.56%. Comparing base (0dabe3a) to head (461126d).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #96      +/-   ##
==========================================
- Coverage   97.25%   96.56%   -0.69%     
==========================================
  Files           1        1              
  Lines         364      379      +15     
  Branches       50       51       +1     
==========================================
+ Hits          354      366      +12     
- Misses          5        7       +2     
- Partials        5        6       +1     
Components Coverage Δ
pylibczirw_python 96.56% <82.35%> (-0.69%) ⬇️
pylibczirw_c ∅ <ø> (∅)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

ptahmose and others added 5 commits September 18, 2025 08:02
Introduces a new ReaderOptions dataclass for configuring CZI reader behavior, including mask awareness and visibility check optimization. Updates CziReader and open_czi to accept and document the new reader_options parameter.
@ptahmose ptahmose changed the title add "mask support" for reading & composition (DRAFT) feat: add "mask support" for reading & composition Sep 19, 2025
Updated descriptions for subBlockCacheOptions and readerOptions
to enhance readability and provide more complete information.
@ptahmose ptahmose marked this pull request as ready for review September 19, 2025 14:10
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds "mask support" functionality to pylibczirw by updating to the latest version of libCZI. The primary purpose is to enable mask-aware tile composition as an opt-in feature while maintaining backwards compatibility.

Key changes:

  • Introduction of a ReaderOptions dataclass to configure mask awareness and visibility check optimization
  • Updated libCZI submodule to support mask functionality
  • Modified the open_czi function and CziReader class to accept and utilize reader options

Reviewed Changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
pylibCZIrw/czi.py Adds ReaderOptions dataclass and integrates it into CziReader constructor and open_czi function
libs/libCZIrw Updates libCZI submodule to version with mask support
_pylibCZIrw/src/pylibCZIrw_Config.h Adds new configuration header file
_pylibCZIrw/src/bindings/PbHelper.h Adds atomic lock counting for bitmap wrapper
_pylibCZIrw/src/bindings/CZIrw.cpp Exposes ReaderOptions class and new constructor to Python bindings
_pylibCZIrw/src/api/ReaderOptions.h Defines C++ ReaderOptions structure
_pylibCZIrw/src/api/CZIreadAPI.h Adds new constructor overload accepting ReaderOptions
_pylibCZIrw/src/api/CZIreadAPI.cpp Implements ReaderOptions support in API
_pylibCZIrw/src/api/CMakeLists.txt Adds ReaderOptions.h to build
API.md Documents the new ReaderOptions functionality
.gitmodules Updates submodule configuration

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated 4 comments.


Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@ptahmose ptahmose requested a review from soyers September 22, 2025 07:59
@ptahmose ptahmose merged commit cc17eb3 into ZEISS:main Sep 24, 2025
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla Contributor License Agreement sent to Admin

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants