Skip to content

Commit 4c7a7b0

Browse files
MMelQingigony
andauthored
Release v0.3.0 (#292)
* Release v0.3.0 Signed-off-by: mmelqin <mingmelvinq@nvidia.com> * Added missing link Signed-off-by: mmelqin <mingmelvinq@nvidia.com> * Editorial changes Signed-off-by: mmelqin <mingmelvinq@nvidia.com> * update date Signed-off-by: mmelqin <mingmelvinq@nvidia.com> * Add missing clara-viz operator to writefile my_app/app.py Signed-off-by: mmelqin <mingmelvinq@nvidia.com> * Added missing clara-viz description in the notebook. Signed-off-by: mmelqin <mingmelvinq@nvidia.com> * Formatting v0.3.0 release note Signed-off-by: Gigon Bae <gbae@nvidia.com> * Bump version: 0.3.0 → 0.3.0 Signed-off-by: Gigon Bae <gbae@nvidia.com> Co-authored-by: Gigon Bae <gbae@nvidia.com>
1 parent 050aeab commit 4c7a7b0

File tree

4 files changed

+64
-3
lines changed

4 files changed

+64
-3
lines changed

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 0.2.1
2+
current_version = 0.3.0
33
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)((?P<release>a|b|rc)(?P<build>\d+))?
44
serialize =
55
{major}.{minor}.{patch}{release}{build}

docs/source/release_notes/index.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44
:hidden:
55
:maxdepth: 2
66
7+
```
8+
## Version 0.3
9+
10+
```{toctree}
11+
:maxdepth: 1
12+
13+
v0.3.0
714
```
815

916
## Version 0.2
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Version 0.3.0 (April 22, 2022)
2+
3+
This version of MONAI Deploy App SDK introduces a couple of new features, as well as a number of defect fixes. Please see details in the following sections.
4+
5+
Please visit [GETTING STARTED](/getting_started/index) guide and follow tutorials.
6+
7+
You can learn more about SDK usage through [DEVELOPING WITH SDK](/developing_with_sdk/index).
8+
9+
Please let us know how you like it and what could be improved by [submitting an issue](https://github.com/Project-MONAI/monai-deploy-app-sdk/issues/new/choose) or [asking questions](https://github.com/Project-MONAI/monai-deploy-app-sdk/discussions)
10+
11+
## What's new
12+
13+
### Clara Viz Operator
14+
15+
This operator uses [Clara Viz](https://pypi.org/project/clara-viz/) to provide interactive view of a 3D volume including segmentation mask. A [tutorial](https://github.com/Project-MONAI/monai-deploy-app-sdk/blob/main/notebooks/tutorials/03_segmentation_viz_app.ipynb) is provided to demonstrate how to use this new operator in an application, e.g., a typical segmentation inference application.
16+
17+
### STL Surface Mesh Conversion Operator
18+
19+
This operator converts a volume image to surface mesh, in [STL file format](https://en.wikipedia.org/wiki/STL_(file_format)). Its API allows the client to control if smoothing needs to be applied, and if only keeping the largest connected component; the latter is useful when muliple disjoint segments are in a volume image, and the application needs to control if all or only the largest to be included in the output.
20+
21+
### What's fixed or updated
22+
23+
- [The AI Spleen Segmentation](https://github.com/Project-MONAI/monai-deploy-app-sdk/tree/main/examples/apps/ai_spleen_seg_app) application is updated to include the STL conversion operator for surface mesh output
24+
- [The AI UNETR Segmentation](https://github.com/Project-MONAI/monai-deploy-app-sdk/blob/main/examples/apps/ai_unetr_seg_app/app.py) is updated to include the STL conversion operator, in lieu of the [DICOM Segmentation Writer](https://github.com/Project-MONAI/monai-deploy-app-sdk/blob/main/monai/deploy/operators/dicom_seg_writer_operator.py). This is because that the model outputs 13 labeled segments, exceeding the maximum of 8 supported by the [DICOM Segmentation Writer](https://github.com/Project-MONAI/monai-deploy-app-sdk/blob/main/monai/deploy/operators/dicom_seg_writer_operator.py)
25+
- Add Clara Viz operator [#235](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/235) by [@AndreasHeumann](https://github.com/AndreasHeumann)
26+
- Make DICOMSeriesToVolumeOperator consistent with ITK in serving NumPy array [#238](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/238) by [@mmelqin](https://github.com/MMelQin)
27+
- Update README.md [#253](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/253) by [@dbericat](https://github.com/dbericat)
28+
- Add the STL conversion operator [#260](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/260) by [@mmelqin](https://github.com/MMelQin)
29+
- Add DICOMTextSRWriterOperator to the autosummary section for doc gen [#263](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/263) by [@mmelqin](https://github.com/MMelQin)
30+
- Corrected the conditional block to use the correct and only named input obj [#264](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/264) by [@mmelqin](https://github.com/MMelQin)
31+
- Updated the png converter operator following changes to Image ndarray index order [#265](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/265) by [@mmelqin](https://github.com/MMelQin)
32+
- fix: Address typos in bilinear mode usage in the `Spacingd` operator [#271](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/271) by [@swederik](https://github.com/swederik)
33+
- Relaxed the restriction on non-DCM files, and raise error based on settings [#273](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/273) by [@mmelqin](https://github.com/MMelQin)
34+
- Fix doc typos [#274](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/274) by [@mmelqin](https://github.com/MMelQin)
35+
- Added 3rd party copyright notices [#278](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/278) by [@mmelqin](https://github.com/MMelQin)
36+
- Fix pixel spacing in DICOMDataLoaderOperator for some X-rays [#280](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/280) by [@jlvahldiek](https://github.com/jlvahldiek)
37+
- Fix shm issue [#284](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/284) by [@slbryson](https://github.com/slbryson)
38+
- Fix Issue #245: DICOM Seg has multiple slices of seg image on the same frame [#285](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/285) by [@mmelqin](https://github.com/MMelQin)
39+
- Update MONAI version after having validated compatibility [#288](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/288) by [@mmelqin](https://github.com/MMelQin)
40+
- Add support for MONOCHROME1 [#290](https://github.com/Project-MONAI/monai-deploy-app-sdk/pull/290) by [@mmelqin](https://github.com/MMelQin)

notebooks/tutorials/03_segmentation_viz_app.ipynb

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
"cell_type": "markdown",
55
"metadata": {},
66
"source": [
7-
"# Creating a Segmentation App with MONAI Deploy App SDK\n",
7+
"# Creating a Segmentation App Including Visualization with MONAI Deploy App SDK\n",
88
"\n",
9-
"This tutorial shows how to create an organ segmentation application for a PyTorch model that has been trained with MONAI.\n",
9+
"This tutorial shows how to create an organ segmentation application for a PyTorch model that has been trained with MONAI, and visualize the segmentation and input images with Clara Viz integration.\n",
1010
"\n",
1111
"Deploying AI models requires the integration with clinical imaging network, even if in a for-research-use setting. This means that the AI deploy application will need to support standards-based imaging protocols, and specifically for Radiological imaging, DICOM protocol.\n",
1212
"\n",
@@ -42,6 +42,9 @@
4242
" - **Input(seg_image)**: a segmentation image object in memory ([`Image`](/modules/_autosummary/monai.deploy.core.domain.Image))\n",
4343
" - **Input(study_selected_series_list)**: a DICOM series object in memory ([`StudySelectedSeries`](/modules/_autosummary/monai.deploy.core.domain.StudySelectedSeries))\n",
4444
" - **Output(dicom_seg_instance)**: a file path ([`DataPath`](/modules/_autosummary/monai.deploy.core.domain.DataPath))\n",
45+
"- **ClaraVizOperator**:\n",
46+
" - **Input(image)**: a volume image object in memory ([`Image`](/modules/_autosummary/monai.deploy.core.domain.Image))\n",
47+
" - **Input(seg_image)**: a segmentation image object in memory ([`Image`](/modules/_autosummary/monai.deploy.core.domain.Image))\n",
4548
"\n",
4649
"\n",
4750
":::{note}\n",
@@ -61,6 +64,8 @@
6164
" DICOMSeriesToVolumeOperator --|> SpleenSegOperator : image...image\n",
6265
" DICOMSeriesSelectorOperator --|> DICOMSegmentationWriterOperator : study_selected_series_list...study_selected_series_list\n",
6366
" SpleenSegOperator --|> DICOMSegmentationWriterOperator : seg_image...seg_image\n",
67+
" DICOMSeriesToVolumeOperator --|> ClaraVizOperator : image...image\n",
68+
" SpleenSegOperator --|> ClaraVizOperator : seg_image...seg_image\n",
6469
"\n",
6570
"\n",
6671
" class DICOMDataLoaderOperator {\n",
@@ -85,6 +90,10 @@
8590
" <in>study_selected_series_list : IN_MEMORY\n",
8691
" dicom_seg_instance(out) DISK\n",
8792
" }\n",
93+
" class ClaraVizOperator {\n",
94+
" <in>image : IN_MEMORY\n",
95+
" <in>seg_image : IN_MEMORY\n",
96+
" }\n",
8897
"```\n",
8998
"\n",
9099
"### Setup environment\n"
@@ -1208,6 +1217,7 @@
12081217
"from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator\n",
12091218
"from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator\n",
12101219
"from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator\n",
1220+
"from monai.deploy.operators.clara_viz_operator import ClaraVizOperator\n",
12111221
"\n",
12121222
"@resource(cpu=1, gpu=1, memory=\"7Gi\")\n",
12131223
"class AISpleenSegApp(Application):\n",
@@ -1231,6 +1241,10 @@
12311241
" self.add_flow(series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"})\n",
12321242
" self.add_flow(spleen_seg_op, dicom_seg_writer, {\"seg_image\": \"seg_image\"})\n",
12331243
"\n",
1244+
" viz_op = ClaraVizOperator()\n",
1245+
" self.add_flow(series_to_vol_op, viz_op, {\"image\": \"image\"})\n",
1246+
" self.add_flow(spleen_seg_op, viz_op, {\"seg_image\": \"seg_image\"})\n",
1247+
"\n",
12341248
"# This is a sample series selection rule in JSON, simply selecting CT series.\n",
12351249
"# If the study has more than 1 CT series, then all of them will be selected.\n",
12361250
"# Please see more detail in DICOMSeriesSelectorOperator.\n",

0 commit comments

Comments
 (0)