Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Volumetric Segmentations #277

Draft
wants to merge 74 commits into
base: v0.23.0dev
Choose a base branch
from
Draft

Conversation

CPBridge
Copy link
Collaborator

@CPBridge CPBridge commented Feb 2, 2024

Branch for NAMIC project week 40. Project page.

Goals

Add support for working with "volumetric": segmentations, i.e. regularly spaced frames in a 3D frame of reference. Specifically:

  • Upon construction, detect automatically whether a segmentation is a 3D volume and populate the "DimensionOrganizationType" attribute as "3D". This is in line with the proposed precise definition of "3D" that was (loosely) agreed upon at NAMIC Project Week (see project page above for details). [COMPLETED]
  • Add a convenience method to create a segmentation from a volumetric array and its associated affine matrix. [TO DO]
  • Upon reading, detect whether a segmentation is "volumetric" and add a method to retrieve a segmentation ordered according to geometry if it is volumetric. Additionally a way to access the associated affine matrix to enable interfacing with other libraries (sitk, nibabel, monai) more easily in the future. [IN PROGRESS]

Details

In order to do this, I have generalized the existing highdicom.seg.sop._SegDBManager class to create a general highdicom._multiframe.MultiFrameDBManager class to handle the logic of storing an in-memory sqlite database of per-frame information for general multiframe object. This simplifies the process of inspecting the geometry of subsets of frames and will also make it much easier to do similar things for other multiframe objects in the future (e.g. parametric maps, labelmap segmentations)

@CPBridge CPBridge self-assigned this Feb 2, 2024
@CPBridge CPBridge added the enhancement New feature or request label Feb 2, 2024
@CPBridge CPBridge changed the base branch from master to v0.23.0dev May 19, 2024 16:58
CPBridge and others added 29 commits July 29, 2024 18:35
* Enforce repo-review rule PP302

PP302: Sets a minimum pytest to at least 6

Must have a `minversion=`, and must be at least 6 (first version to
support `pyproject.toml` configuration).

* Enforce repo-review rule PP305

PP305: Specifies xfail_strict

`xfail_strict` should be set. You can manually specify if a check should
be strict when setting each xfail.

* Enforce repo-review rule PP306

PP306: Specifies strict config

`--strict-config` should be in `addopts = [...]`. This forces an error
if a config setting is misspelled.

* Enforce repo-review rule PP307

PP307: Specifies strict markers

`--strict-markers` should be in `addopts = [...]`. This forces all
markers to be specified in config, avoiding misspellings.

* Enforce repo-review rule PP308

PP308: Specifies useful pytest summary

An explicit summary flag like `-ra` should be in `addopts = [...]` (print
summary of all fails/errors).

* Enforce pytest ≥ 7.3.2

This is the first version to support Python 3.12:
https://docs.pytest.org/en/stable/changelog.html#pytest-7-3-2-2023-06-10

* Enforce repo-review rule MY104

MY104: MyPy enables ignore-without-code

Must have `"ignore-without-code"` in `enable_error_code = [...]`. This
will force all skips in your project to include the error code, which
makes them more readable, and avoids skipping something unintended.

* Enforce repo-review rule MY105

MY105: MyPy enables redundant-expr

Must have `"redundant-expr"` in `enable_error_code = [...]`. This helps
catch useless lines of code, like checking the same condition twice.

* Enforce repo-review rule MY106

MY106: MyPy enables truthy-bool

Must have `"truthy-bool"` in `enable_error_code = []`. This catches
mistakes in using a value as truthy if it cannot be falsy.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants