Skip to content

Add NrrdWriter for multi-channel arrays#793

Merged
SachidanandAlle merged 27 commits intoProject-MONAI:mainfrom
markus-hinsche:nrrd-writer
May 19, 2022
Merged

Add NrrdWriter for multi-channel arrays#793
SachidanandAlle merged 27 commits intoProject-MONAI:mainfrom
markus-hinsche:nrrd-writer

Conversation

@markus-hinsche
Copy link
Copy Markdown
Contributor

@markus-hinsche markus-hinsche commented May 19, 2022

Motivation

The Writer class (in monailabel/transform/writer.py) can't handle multi-channel arrays. The ITK reader and writer both can't handle multi-channel arrays, therefore we want to introduce a new writer that can do this.

Related PRs
This work is related to other works in this area:

Changes

  • Add new function write_seg_nrrd() (similar to write_itk())
  • Add condition when to use nrrd writer
  • Add pynrrd pip dependency to project
  • Add unit test for writing multi-channel data

See PR review comments from predecessor PR #779

SachidanandAlle and others added 26 commits May 12, 2022 14:10
* Draft Training workflow for NuClick

Signed-off-by: Sachidanand Alle <[email protected]>

* Sync up changes for nuclick training

Signed-off-by: Sachidanand Alle <[email protected]>

* Fix nuclick training

Signed-off-by: Sachidanand Alle <[email protected]>

* rename transform

Signed-off-by: Sachidanand Alle <[email protected]>

* Sync up changes for nuclick training

Signed-off-by: Sachidanand Alle <[email protected]>

* use monai bunet for nuclick

Signed-off-by: Sachidanand Alle <[email protected]>

* fix log

Signed-off-by: Sachidanand Alle <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Co-authored-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Co-authored-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
write_seg_nrrd() is only needed for 4D multi-channel label arrays. Everything else can be handled by ITK of nifty writer.

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
write_seg_nrrd() will only be used for 4D multi-channel label arrays. Thus, removed unnecessary code.

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Markus Hinsche
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Markus Hinsche
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
* Add Active Learning strategies to DeepEdit

Signed-off-by: Andres Diaz-Pinto <[email protected]>

* Update readme - commands Active Learning strategies

Signed-off-by: Andres Diaz-Pinto <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
…I#781)

* Prepare MONAI Label for new monai - DeepEdit transforms

Signed-off-by: Andres Diaz-Pinto <[email protected]>

* Add deprecated messages - DeepEdit transforms - interaction

Signed-off-by: Andres Diaz-Pinto <[email protected]>

Co-authored-by: SACHIDANAND ALLE <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
Signed-off-by: SACHIDANAND ALLE <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
* Add original labels option Slicer UI

Signed-off-by: Andres Diaz-Pinto <[email protected]>

* Update Slicer module

Signed-off-by: Andres Diaz-Pinto <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>
@SachidanandAlle SachidanandAlle merged commit 58dc813 into Project-MONAI:main May 19, 2022
@SachidanandAlle SachidanandAlle added the 0.4.0 Targeted to Release version 0.4 label May 30, 2022
DaoMaoDuc pushed a commit to jlvahldiek/MONAILabel that referenced this pull request Jun 1, 2022
* Only Hide Training area when zero tasks configured (Project-MONAI#769)

Signed-off-by: Sachidanand Alle <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Nuclick train (Project-MONAI#772)

* Draft Training workflow for NuClick

Signed-off-by: Sachidanand Alle <[email protected]>

* Sync up changes for nuclick training

Signed-off-by: Sachidanand Alle <[email protected]>

* Fix nuclick training

Signed-off-by: Sachidanand Alle <[email protected]>

* rename transform

Signed-off-by: Sachidanand Alle <[email protected]>

* Sync up changes for nuclick training

Signed-off-by: Sachidanand Alle <[email protected]>

* use monai bunet for nuclick

Signed-off-by: Sachidanand Alle <[email protected]>

* fix log

Signed-off-by: Sachidanand Alle <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Add NRRD writer

Signed-off-by: Markus Hinsche <[email protected]>
Co-authored-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Add unit test for NRRD writer

Signed-off-by: Markus Hinsche <[email protected]>

* Polish

Signed-off-by: Markus Hinsche <[email protected]>

* Add labels to data object, Check for label list

Signed-off-by: Markus Hinsche <[email protected]>
Co-authored-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* update docstrings

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* change writer selection

write_seg_nrrd() is only needed for 4D multi-channel label arrays. Everything else can be handled by ITK of nifty writer.

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* polish

write_seg_nrrd() will only be used for 4D multi-channel label arrays. Thus, removed unnecessary code.

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Fix typo

Signed-off-by: Markus Hinsche <[email protected]>

* Add pynrrd==0.4.2 to setup.cfg

Signed-off-by: Markus Hinsche
Signed-off-by: Markus Hinsche <[email protected]>

* fix check for multi-channel label

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* fix unit test

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Fix multichannel problem

Signed-off-by: Markus Hinsche
Signed-off-by: Markus Hinsche <[email protected]>

* Reformat code

Signed-off-by: Markus Hinsche <[email protected]>

* Make mypy happy

Signed-off-by: Markus Hinsche <[email protected]>

* Fix merge conflict

Signed-off-by: Markus Hinsche <[email protected]>

* Use logger.warning instead logger.debug

Signed-off-by: Markus Hinsche <[email protected]>

* Add Active Learning strategies to DeepEdit (Project-MONAI#782)

* Add Active Learning strategies to DeepEdit

Signed-off-by: Andres Diaz-Pinto <[email protected]>

* Update readme - commands Active Learning strategies

Signed-off-by: Andres Diaz-Pinto <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Prepare MONAI Label for new monai - DeepEdit transforms (Project-MONAI#781)

* Prepare MONAI Label for new monai - DeepEdit transforms

Signed-off-by: Andres Diaz-Pinto <[email protected]>

* Add deprecated messages - DeepEdit transforms - interaction

Signed-off-by: Andres Diaz-Pinto <[email protected]>

Co-authored-by: SACHIDANAND ALLE <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Mention python versions which are supported (Project-MONAI#786)

Signed-off-by: SACHIDANAND ALLE <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Add original labels option Slicer UI (Project-MONAI#785)

* Add original labels option Slicer UI

Signed-off-by: Andres Diaz-Pinto <[email protected]>

* Update Slicer module

Signed-off-by: Andres Diaz-Pinto <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Fix: Check first dimension for multichannel

Signed-off-by: Markus Hinsche <[email protected]>

* Polish unit test to be more specific about dimensions

Signed-off-by: Markus Hinsche <[email protected]>

Co-authored-by: SACHIDANAND ALLE <[email protected]>
Co-authored-by: Janis Vahldiek <[email protected]>
Co-authored-by: Andres Diaz-Pinto <[email protected]>
Signed-off-by: Duc <[email protected]>
Douwe-Spaanderman pushed a commit to Douwe-Spaanderman/MONAILabel that referenced this pull request Dec 9, 2022
* Only Hide Training area when zero tasks configured (Project-MONAI#769)

Signed-off-by: Sachidanand Alle <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Nuclick train (Project-MONAI#772)

* Draft Training workflow for NuClick

Signed-off-by: Sachidanand Alle <[email protected]>

* Sync up changes for nuclick training

Signed-off-by: Sachidanand Alle <[email protected]>

* Fix nuclick training

Signed-off-by: Sachidanand Alle <[email protected]>

* rename transform

Signed-off-by: Sachidanand Alle <[email protected]>

* Sync up changes for nuclick training

Signed-off-by: Sachidanand Alle <[email protected]>

* use monai bunet for nuclick

Signed-off-by: Sachidanand Alle <[email protected]>

* fix log

Signed-off-by: Sachidanand Alle <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Add NRRD writer

Signed-off-by: Markus Hinsche <[email protected]>
Co-authored-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Add unit test for NRRD writer

Signed-off-by: Markus Hinsche <[email protected]>

* Polish

Signed-off-by: Markus Hinsche <[email protected]>

* Add labels to data object, Check for label list

Signed-off-by: Markus Hinsche <[email protected]>
Co-authored-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* update docstrings

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* change writer selection

write_seg_nrrd() is only needed for 4D multi-channel label arrays. Everything else can be handled by ITK of nifty writer.

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* polish

write_seg_nrrd() will only be used for 4D multi-channel label arrays. Thus, removed unnecessary code.

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Fix typo

Signed-off-by: Markus Hinsche <[email protected]>

* Add pynrrd==0.4.2 to setup.cfg

Signed-off-by: Markus Hinsche
Signed-off-by: Markus Hinsche <[email protected]>

* fix check for multi-channel label

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* fix unit test

Signed-off-by: Janis Vahldiek <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Fix multichannel problem

Signed-off-by: Markus Hinsche
Signed-off-by: Markus Hinsche <[email protected]>

* Reformat code

Signed-off-by: Markus Hinsche <[email protected]>

* Make mypy happy

Signed-off-by: Markus Hinsche <[email protected]>

* Fix merge conflict

Signed-off-by: Markus Hinsche <[email protected]>

* Use logger.warning instead logger.debug

Signed-off-by: Markus Hinsche <[email protected]>

* Add Active Learning strategies to DeepEdit (Project-MONAI#782)

* Add Active Learning strategies to DeepEdit

Signed-off-by: Andres Diaz-Pinto <[email protected]>

* Update readme - commands Active Learning strategies

Signed-off-by: Andres Diaz-Pinto <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Prepare MONAI Label for new monai - DeepEdit transforms (Project-MONAI#781)

* Prepare MONAI Label for new monai - DeepEdit transforms

Signed-off-by: Andres Diaz-Pinto <[email protected]>

* Add deprecated messages - DeepEdit transforms - interaction

Signed-off-by: Andres Diaz-Pinto <[email protected]>

Co-authored-by: SACHIDANAND ALLE <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Mention python versions which are supported (Project-MONAI#786)

Signed-off-by: SACHIDANAND ALLE <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Add original labels option Slicer UI (Project-MONAI#785)

* Add original labels option Slicer UI

Signed-off-by: Andres Diaz-Pinto <[email protected]>

* Update Slicer module

Signed-off-by: Andres Diaz-Pinto <[email protected]>
Signed-off-by: Markus Hinsche <[email protected]>

* Fix: Check first dimension for multichannel

Signed-off-by: Markus Hinsche <[email protected]>

* Polish unit test to be more specific about dimensions

Signed-off-by: Markus Hinsche <[email protected]>

Co-authored-by: SACHIDANAND ALLE <[email protected]>
Co-authored-by: Janis Vahldiek <[email protected]>
Co-authored-by: Andres Diaz-Pinto <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

0.4.0 Targeted to Release version 0.4

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants