From ed2a45c26e78e768f60d9d1d04f4878a7f5f6129 Mon Sep 17 00:00:00 2001 From: mmelqin Date: Mon, 11 Jul 2022 15:59:40 -0700 Subject: [PATCH 001/216] =?UTF-8?q?Bump=20version:=200.3.0=20=E2=86=92=200?= =?UTF-8?q?.4.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: mmelqin Signed-off-by: Simone Bendazzoli --- .bumpversion.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index c3457112..2ff8281d 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.3.0 +current_version = 0.4.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)((?Pa|b|rc)(?P\d+))? serialize = {major}.{minor}.{patch}{release}{build} From f84493f5e75a1db297f18bf9fd70de7b5777b9c1 Mon Sep 17 00:00:00 2001 From: mmelqin Date: Mon, 11 Jul 2022 16:17:06 -0700 Subject: [PATCH 002/216] Update release notes for v0.4.0 Signed-off-by: mmelqin Signed-off-by: Simone Bendazzoli --- docs/source/release_notes/index.md | 7 ++++++ docs/source/release_notes/v0.4.0.md | 34 +++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 docs/source/release_notes/v0.4.0.md diff --git a/docs/source/release_notes/index.md b/docs/source/release_notes/index.md index 05fc47c8..9e77fb72 100644 --- a/docs/source/release_notes/index.md +++ b/docs/source/release_notes/index.md @@ -4,6 +4,13 @@ :hidden: :maxdepth: 2 +``` +## Version 0.4 + +```{toctree} +:maxdepth: 1 + +v0.4.0 ``` ## Version 0.3 diff --git a/docs/source/release_notes/v0.4.0.md b/docs/source/release_notes/v0.4.0.md new file mode 100644 index 00000000..8704a927 --- /dev/null +++ b/docs/source/release_notes/v0.4.0.md @@ -0,0 +1,34 @@ +# Version 0.4.0 + + + +## What's new in 0.4.0 +- New operator to automate inference with the newly introduced [MONAI Bundle](https://docs.monai.io/en/stable/whatsnew_0_9.html) + +### MONAI Bundle Inference Operator + +The new operator, `MONAI Bundle Inference Operator`, is intended to automate the inference with a MONAI Bundle in TorchScript with the following functionalities: +- Parse the model metadata and extra configuration data in the TorchScript file +- Instanciate MONAI transforms and inferer objects per bundle configuration data +- Convert input/output of the operator to and from model network input +- Support named model and can be used in a multi-model application + +The example [spleen segmentation application](https://github.com/Project-MONAI/monai-deploy-app-sdk/tree/main/examples/apps/ai_spleen_seg_app) was accordingly updated to demonstrate the use of this new operator with the newly published [Spleen CT Segmentation Bundle](https://github.com/Project-MONAI/model-zoo/tree/dev/models/spleen_ct_segmentation). + +More details are in the [tutorial](https://github.com/Project-MONAI/monai-deploy-app-sdk/blob/main/notebooks/tutorials/06_monai_bundle_app.ipynb). + +## What's fixed/updated + +- [[FEA] A generic operator to automate inference execution with a MONAI Bundle](https://github.com/Project-MONAI/monai-deploy-app-sdk/issues/286) +- [[FEA] Integrating Model Zoo and MMAR](https://github.com/Project-MONAI/monai-deploy-app-sdk/issues/213) +- [[FEA] Multi-model support in an application built with MONAI Deploy App SDK](https://github.com/Project-MONAI/monai-deploy-app-sdk/issues/244) +- [[DOC] Missing python dependencies for the segmentation app](https://github.com/Project-MONAI/monai-deploy-app-sdk/issues/299) and the [duplicate](https://github.com/Project-MONAI/monai-deploy-app-sdk/issues/305) +- [mednist_app:latest -- No module named 'nibabel'](https://github.com/Project-MONAI/monai-deploy-app-sdk/issues/302) +- [[DOC] Series Selector dictionary](https://github.com/Project-MONAI/monai-deploy-app-sdk/issues/300) + +## Additional information +Please visit [GETTING STARTED](/getting_started/index) guide and follow the tutorials. + +You can learn more about SDK usage through [DEVELOPING WITH SDK](/developing_with_sdk/index). + +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) \ No newline at end of file From e0f6780646b6862e8831b3d36a617d77c5b19f6b Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Wed, 13 Jul 2022 00:05:02 -0700 Subject: [PATCH 003/216] Add the newly introduced example to readme.md (#313) * Add the newly introduced example to readme.md This is a a bit of a chicken-and-egg problem, since the readme.md refers to the published latest version of the doc with which can only happen when the release build is done, and this particular doc is part of the build, included in the package to be pushed to pypi.org. Next time, need to consider add the entry, with a placeholder/no-existent URL prior to the release build, so that the content will show up in the new package, and URL leads to valid content post build. Signed-off-by: mmelqin * Added verbiage to name but a few tutorials. Signed-off-by: mmelqin Signed-off-by: Simone Bendazzoli --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index db9fc768..b7addfa1 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,8 @@ monai-deploy run simple_app:latest input output ### [Tutorials](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/getting_started/tutorials/index.html) +Tutorials are provided to help getting started with the App SDK, to name but a few below. + #### [1) Creating a simple image processing app](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/getting_started/tutorials/01_simple_app.html) #### [2) Creating MedNIST Classifier app](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/getting_started/tutorials/02_mednist_app.html) @@ -81,6 +83,8 @@ YouTube Video: ### [5) Building and deploying Segmentation app with MONAI Inference Service (MIS)](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/getting_started/tutorials/05_full_tutorial.html) +### [6) Creating a Segmentation app consuming a MONAI Bundle](https://docs.monai.io/projects/monai-deploy-app-sdk/en/0.4.0/getting_started/tutorials/06_monai_bundle_app.html) + ### [Examples](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/getting_started/examples.html) has example apps that you can see. From fc81010d6d29d6406bf7a125f6a417c917fdbb05 Mon Sep 17 00:00:00 2001 From: Lee Newberg <35611400+Leengit@users.noreply.github.com> Date: Mon, 1 Aug 2022 18:56:37 -0400 Subject: [PATCH 004/216] DOC: Use upstream/downstream instead of source/destination (#316) * DOC: Use upstream/downstream instead of source/destination For monai.deploy.core.Operator, instead of sometimes using "upstream" and "downstream" and sometimes using "source" and "destination", consistently use former. Signed-off-by: Lee Newberg * DOC: Use source/destination instead of upstream/downstream For monai.deploy.core.Operator, instead of sometimes using "upstream" and "downstream" and sometimes using "source" and "destination", consistently use the latter. Signed-off-by: Lee Newberg Signed-off-by: Simone Bendazzoli --- .../creating_application_class.md | 4 +- docs/srs.md | 4 +- examples/apps/ai_livertumor_seg_app/app.py | 4 +- examples/apps/ai_spleen_seg_app/app.py | 4 +- examples/apps/ai_unetr_seg_app/app.py | 2 +- monai/deploy/core/application.py | 42 +++++++++---------- .../core/executors/multi_process_executor.py | 6 +-- .../core/executors/multi_threaded_executor.py | 6 +-- .../monai_bundle_inference_operator.py | 4 +- notebooks/tutorials/01_simple_app.ipynb | 4 +- notebooks/tutorials/06_monai_bundle_app.ipynb | 8 ++-- 11 files changed, 44 insertions(+), 44 deletions(-) diff --git a/docs/source/developing_with_sdk/creating_application_class.md b/docs/source/developing_with_sdk/creating_application_class.md index 5a6be654..457d6687 100644 --- a/docs/source/developing_with_sdk/creating_application_class.md +++ b/docs/source/developing_with_sdk/creating_application_class.md @@ -52,11 +52,11 @@ The resource requirements (such as `cpu`, `memory`, and `gpu`) for the applicati In `compose()` method, operators are instantiated and connected through self.add_flow(). -> add_flow(upstream_op, downstream_op, io_map=None) +> add_flow(source_op, destination_op, io_map=None) `io_map` is a dictionary of mapping from the source operator's label to the destination operator's label(s) and its type is `Dict[str, str|Set[str]]`. -We can skip specifying `io_map` if both the number of `upstream_op`'s outputs and the number of `downstream_op`'s inputs are one. +We can skip specifying `io_map` if both the number of `source_op`'s outputs and the number of `destination_op`'s inputs are one. For example, if Operators named `task1` and `task2` has only one input and output (with the label `image`), `self.add_flow(task1, task2)` is same with `self.add_flow(task1, task2, {"image": "image"})` or `self.add_flow(task1, task2, {"image": {"image"}})`. ```python diff --git a/docs/srs.md b/docs/srs.md index 76cb974a..f6a377af 100644 --- a/docs/srs.md +++ b/docs/srs.md @@ -89,7 +89,7 @@ MONAI Deploy App SDK 0.1.0 ## [REQ] Representing Workflow With DAG -The SDK shall enable dependencies among upstream and downstream operators in an application using a DAG so that app workflow can be modeled unambiguously. The SDK shall provide a mechanism to link an output port of an upstream operator to an input port of a downstream operator to form the DAG. +The SDK shall enable dependencies among source and destination operators in an application using a DAG so that app workflow can be modeled unambiguously. The SDK shall provide a mechanism to link an output port of a source operator to an input port of a destination operator to form the DAG. ### Background @@ -397,7 +397,7 @@ MONAI Deploy App SDK 0.1.0 ## [REQ] Loading a DICOM 2d/3d dataset into a unified domain object -The SDK shall enable applications to load a 2D/3D imaging dataset belonging to a single DICOM series into a unified "Image" domain object so that downstream operators can process this domain object based on the application's needs such as transformation and inference. +The SDK shall enable applications to load a 2D/3D imaging dataset belonging to a single DICOM series into a unified "Image" domain object so that destination operators can process this domain object based on the application's needs such as transformation and inference. ### Background diff --git a/examples/apps/ai_livertumor_seg_app/app.py b/examples/apps/ai_livertumor_seg_app/app.py index 9445b522..a5fe7cfb 100644 --- a/examples/apps/ai_livertumor_seg_app/app.py +++ b/examples/apps/ai_livertumor_seg_app/app.py @@ -58,7 +58,7 @@ def compose(self): "Tumor", ] ) - # Create the processing pipeline, by specifying the upstream and downstream operators, and + # Create the processing pipeline, by specifying the source and destination operators, and # ensuring the output from the former matches the input of the latter, in both name and type. self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) self.add_flow( @@ -68,7 +68,7 @@ def compose(self): # Add the publishing operator to save the input and seg images for Render Server. # Note the PublisherOperator has temp impl till a proper rendering module is created. self.add_flow(unetr_seg_op, publisher_op, {"saved_images_folder": "saved_images_folder"}) - # Note below the dicom_seg_writer requires two inputs, each coming from a upstream operator. + # Note below the dicom_seg_writer requires two inputs, each coming from a source operator. self.add_flow( series_selector_op, dicom_seg_writer, {"study_selected_series_list": "study_selected_series_list"} ) diff --git a/examples/apps/ai_spleen_seg_app/app.py b/examples/apps/ai_spleen_seg_app/app.py index 533b0879..d98034c7 100644 --- a/examples/apps/ai_spleen_seg_app/app.py +++ b/examples/apps/ai_spleen_seg_app/app.py @@ -64,14 +64,14 @@ def compose(self): # Create DICOM Seg writer with segment label name in a string list dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=["Spleen"]) - # Create the processing pipeline, by specifying the upstream and downstream operators, and + # Create the processing pipeline, by specifying the source and destination operators, and # ensuring the output from the former matches the input of the latter, in both name and type. self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) self.add_flow( series_selector_op, series_to_vol_op, {"study_selected_series_list": "study_selected_series_list"} ) self.add_flow(series_to_vol_op, bundle_spleen_seg_op, {"image": "image"}) - # Note below the dicom_seg_writer requires two inputs, each coming from a upstream operator. + # Note below the dicom_seg_writer requires two inputs, each coming from a source operator. self.add_flow( series_selector_op, dicom_seg_writer, {"study_selected_series_list": "study_selected_series_list"} ) diff --git a/examples/apps/ai_unetr_seg_app/app.py b/examples/apps/ai_unetr_seg_app/app.py index 3d0ef01e..44b8ed48 100644 --- a/examples/apps/ai_unetr_seg_app/app.py +++ b/examples/apps/ai_unetr_seg_app/app.py @@ -54,7 +54,7 @@ def compose(self): output_file="stl/multi-organs.stl", keep_largest_connected_component=False ) - # Create the processing pipeline, by specifying the upstream and downstream operators, and + # Create the processing pipeline, by specifying the source and destination operators, and # ensuring the output from the former matches the input of the latter, in both name and type. self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) self.add_flow( diff --git a/monai/deploy/core/application.py b/monai/deploy/core/application.py index 759260c8..106ff8d5 100644 --- a/monai/deploy/core/application.py +++ b/monai/deploy/core/application.py @@ -182,35 +182,35 @@ def add_operator(self, operator: Operator): self._graph.add_operator(operator) def add_flow( - self, upstream_op: Operator, downstream_op: Operator, io_map: Optional[Dict[str, Union[str, Set[str]]]] = None + self, source_op: Operator, destination_op: Operator, io_map: Optional[Dict[str, Union[str, Set[str]]]] = None ): - """Adds a flow from upstream to downstream. + """Adds a flow from source to destination. - An output port of the upstream operator is connected to one of the - input ports of a downstream operators. + An output port of the source operator is connected to one of the + input ports of a destination operators. Args: - upstream_op (Operator): An instance of the upstream operator of type Operator. - downstream_op (Operator): An instance of the downstream operator of type Operator. + source_op (Operator): An instance of the source operator of type Operator. + destination_op (Operator): An instance of the destination operator of type Operator. io_map (Optional[Dict[str, Union[str, Set[str]]]]): A dictionary of mapping from the source operator's label to the destination operator's label(s). """ - # Ensure that the upstream and downstream operators are valid - upstream_op.ensure_valid() - downstream_op.ensure_valid() + # Ensure that the source and destination operators are valid + source_op.ensure_valid() + destination_op.ensure_valid() - op_output_labels = upstream_op.op_info.get_labels(IO.OUTPUT) - op_input_labels = downstream_op.op_info.get_labels(IO.INPUT) + op_output_labels = source_op.op_info.get_labels(IO.OUTPUT) + op_input_labels = destination_op.op_info.get_labels(IO.INPUT) if not io_map: if len(op_output_labels) > 1: raise IOMappingError( - f"The upstream operator has more than one output port " + f"The source operator has more than one output port " f"({', '.join(op_output_labels)}) so mapping should be specified explicitly!" ) if len(op_input_labels) > 1: raise IOMappingError( - f"The downstream operator has more than one output port ({', '.join(op_input_labels)}) " + f"The destination operator has more than one output port ({', '.join(op_input_labels)}) " f"so mapping should be specified explicitly!" ) io_map = {"": {""}} @@ -221,14 +221,14 @@ def add_flow( if isinstance(v, str): io_maps[k] = {v} - # Verify that the upstream & downstream operator have the input and output ports specified by the io_map + # Verify that the source & destination operator have the input and output ports specified by the io_map output_labels = list(io_maps.keys()) if len(op_output_labels) == 1 and len(output_labels) != 1: raise IOMappingError( - f"The upstream operator({upstream_op.name}) has only one port with label " + f"The source operator({source_op.name}) has only one port with label " f"'{next(iter(op_output_labels))}' but io_map specifies {len(output_labels)} " - f"labels({', '.join(output_labels)}) to the upstream operator's output port" + f"labels({', '.join(output_labels)}) to the source operator's output port" ) for output_label in output_labels: @@ -239,7 +239,7 @@ def add_flow( del io_maps[output_label] break raise IOMappingError( - f"The upstream operator({upstream_op.name}) has no output port with label '{output_label}'. " + f"The source operator({source_op.name}) has no output port with label '{output_label}'. " f"It should be one of ({', '.join(op_output_labels)})." ) @@ -249,9 +249,9 @@ def add_flow( if len(op_input_labels) == 1 and len(input_labels) != 1: raise IOMappingError( - f"The downstream operator({downstream_op.name}) has only one port with label " + f"The destination operator({destination_op.name}) has only one port with label " f"'{next(iter(op_input_labels))}' but io_map specifies {len(input_labels)} " - f"labels({', '.join(input_labels)}) to the downstream operator's input port" + f"labels({', '.join(input_labels)}) to the destination operator's input port" ) for input_label in input_labels: @@ -262,11 +262,11 @@ def add_flow( input_labels.add(next(iter(op_input_labels))) break raise IOMappingError( - f"The downstream operator({downstream_op.name}) has no input port with label '{input_label}'. " + f"The destination operator({destination_op.name}) has no input port with label '{input_label}'. " f"It should be one of ({', '.join(op_input_labels)})." ) - self._graph.add_flow(upstream_op, downstream_op, io_maps) + self._graph.add_flow(source_op, destination_op, io_maps) def get_package_info(self, model_path: Union[str, Path] = "") -> Dict: """Returns the package information of this application. diff --git a/monai/deploy/core/executors/multi_process_executor.py b/monai/deploy/core/executors/multi_process_executor.py index 39b61018..e0f04d84 100644 --- a/monai/deploy/core/executors/multi_process_executor.py +++ b/monai/deploy/core/executors/multi_process_executor.py @@ -38,10 +38,10 @@ # # Figure out how to deal with duplicate nodes # q.put(e[1]) # edge_data = g.get_edge_data(e[0], e[1]) -# output = node.get_output(edge_data["upstream_op_port"]) -# key1 = (e[0].get_uid(), "output", edge_data["upstream_op_port"]) +# output = node.get_output(edge_data["source_op_port"]) +# key1 = (e[0].get_uid(), "output", edge_data["source_op_port"]) # self._storage.store(key1, output) -# key2 = (e[1].get_uid(), "input", edge_data["downstream_op_port"]) +# key2 = (e[1].get_uid(), "input", edge_data["destination_op_port"]) # self._storage.store(key2, output) # def _launch_operator(self, op): diff --git a/monai/deploy/core/executors/multi_threaded_executor.py b/monai/deploy/core/executors/multi_threaded_executor.py index bacf85f4..8de1f4b5 100644 --- a/monai/deploy/core/executors/multi_threaded_executor.py +++ b/monai/deploy/core/executors/multi_threaded_executor.py @@ -38,8 +38,8 @@ # # Figure out how to deal with duplicate nodes # q.put(e[1]) # edge_data = g.get_edge_data(e[0], e[1]) -# output = node.get_output(edge_data["upstream_op_port"]) -# key1 = (e[0].get_uid(), "output", edge_data["upstream_op_port"]) +# output = node.get_output(edge_data["source_op_port"]) +# key1 = (e[0].get_uid(), "output", edge_data["source_op_port"]) # self._storage.store(key1, output) -# key2 = (e[1].get_uid(), "input", edge_data["downstream_op_port"]) +# key2 = (e[1].get_uid(), "input", edge_data["destination_op_port"]) # self._storage.store(key2, output) diff --git a/monai/deploy/operators/monai_bundle_inference_operator.py b/monai/deploy/operators/monai_bundle_inference_operator.py index e6081624..96c703b7 100644 --- a/monai/deploy/operators/monai_bundle_inference_operator.py +++ b/monai/deploy/operators/monai_bundle_inference_operator.py @@ -215,7 +215,7 @@ class MonaiBundleInferenceOperator(InferenceOperator): For image input and output, the type is the `Image` class. For output of probabilities, the type is `Dict`. - This operator is expected to be linked with both upstream and downstream operators, e.g. receiving an `Image` object from + This operator is expected to be linked with both source and destination operators, e.g. receiving an `Image` object from the `DICOMSeriesToVolumeOperator`, and passing a segmentation `Image` to the `DICOMSegmentationWriterOperator`. In such cases, the I/O storage type can only be `IN_MEMORY` due to the restrictions imposed by the application executor. However, when used as the first operator in an application, its input storage type needs to be `DISK`, and the file needs @@ -618,7 +618,7 @@ def _send_output(self, value: Any, name: str, metadata: Dict, op_output: OutputC # out of the MONAI post processing is [CWHD] with dim for batch already squeezed out. # Prediction image, e.g. segmentation image, needs to have its dimensions # rearranged to fit the conventions used by Image class, i.e. [DHW], without channel dim. - # Also, based on known use cases, e.g. prediction being seg image and the downstream + # Also, based on known use cases, e.g. prediction being seg image and the destination # operators expect the data type to be unit8, conversion needs to be done as well. # Metadata, such as pixel spacing and orientation, also needs to be set in the Image object, # which is why metadata is expected to be passed in. diff --git a/notebooks/tutorials/01_simple_app.ipynb b/notebooks/tutorials/01_simple_app.ipynb index 7c5ad1f7..5854aa4b 100644 --- a/notebooks/tutorials/01_simple_app.ipynb +++ b/notebooks/tutorials/01_simple_app.ipynb @@ -341,11 +341,11 @@ "In `compose()` method, objects of `SobelOperator`, `MedianOperator`, and `GaussianOperator` classes are created\n", "and connected through self.add_flow().\n", "\n", - "> add_flow(upstream_op, downstream_op, io_map=None)\n", + "> add_flow(source_op, destination_op, io_map=None)\n", "\n", "`io_map` is a dictionary of mapping from the source operator's label to the destination operator's label(s) and its type is `Dict[str, str|Set[str]]`. \n", "\n", - "We can skip specifying `io_map` if both the number of `upstream_op`'s outputs and the number of `downstream_op`'s inputs are one so `self.add_flow(sobel_op, median_op)` is same with `self.add_flow(sobel_op, median_op, {\"image\": \"image\"})` or `self.add_flow(sobel_op, median_op, {\"image\": {\"image\"}})`.\n" + "We can skip specifying `io_map` if both the number of `source_op`'s outputs and the number of `destination_op`'s inputs are one so `self.add_flow(sobel_op, median_op)` is same with `self.add_flow(sobel_op, median_op, {\"image\": \"image\"})` or `self.add_flow(sobel_op, median_op, {\"image\": {\"image\"}})`.\n" ] }, { diff --git a/notebooks/tutorials/06_monai_bundle_app.ipynb b/notebooks/tutorials/06_monai_bundle_app.ipynb index 2d940689..cf80a88e 100644 --- a/notebooks/tutorials/06_monai_bundle_app.ipynb +++ b/notebooks/tutorials/06_monai_bundle_app.ipynb @@ -268,14 +268,14 @@ " # Create DICOM Seg writer with segment label name in a string list\n", " dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=[\"Spleen\"])\n", "\n", - " # Create the processing pipeline, by specifying the upstream and downstream operators, and\n", + " # Create the processing pipeline, by specifying the source and destination operators, and\n", " # ensuring the output from the former matches the input of the latter, in both name and type.\n", " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", " self.add_flow(\n", " series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", " )\n", " self.add_flow(series_to_vol_op, bundle_spleen_seg_op, {\"image\": \"image\"})\n", - " # Note below the dicom_seg_writer requires two inputs, each coming from a upstream operator.\n", + " # Note below the dicom_seg_writer requires two inputs, each coming from a source operator.\n", " self.add_flow(\n", " series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", " )\n", @@ -477,14 +477,14 @@ " # Create DICOM Seg writer with segment label name in a string list\n", " dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=[\"Spleen\"])\n", "\n", - " # Create the processing pipeline, by specifying the upstream and downstream operators, and\n", + " # Create the processing pipeline, by specifying the source and destination operators, and\n", " # ensuring the output from the former matches the input of the latter, in both name and type.\n", " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", " self.add_flow(\n", " series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", " )\n", " self.add_flow(series_to_vol_op, bundle_spleen_seg_op, {\"image\": \"image\"})\n", - " # Note below the dicom_seg_writer requires two inputs, each coming from a upstream operator.\n", + " # Note below the dicom_seg_writer requires two inputs, each coming from a source operator.\n", " self.add_flow(\n", " series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", " )\n", From e3418b24b7e3fa4f69f37882dedf639e0c620e67 Mon Sep 17 00:00:00 2001 From: Chris Bridge Date: Thu, 18 Aug 2022 01:50:08 +0000 Subject: [PATCH 005/216] Implement highdicom seg operator (#327) * Implement highdicom seg operator Signed-off-by: Chris Bridge * Formatting fixes Signed-off-by: Chris Bridge * Typing fixes Signed-off-by: Chris Bridge * Update the Spleen App to use HighDicom Seg Writer. The app is still not compatible with monai v0.9.1 as the app testing revealed that to its Invert transform failed resample the predicted image back to input image spacings. Also, the new Seg Writer impl is strict on DICOM attribute VR conformance, and would throw exception when the input DICOM instances have non-conformant attribute VR values. Signed-off-by: mmelqin * Fix isort error for ordering of imports Signed-off-by: mmelqin * Update doc strings and comments for seg label and algorithm name and version Signed-off-by: mmelqin * Pin moani==0.9.0 for now as 0.9.1 causes issues. Also pydicom to 2.3.0 as the use of highdicom require pydicom>=2.3.0 Signed-off-by: mmelqin * Updated apps that have multiple segments Signed-off-by: mmelqin * Found the few missing codes, so avoided use of generic "Organ" Signed-off-by: mmelqin Signed-off-by: Chris Bridge Signed-off-by: mmelqin Co-authored-by: mmelqin Signed-off-by: Simone Bendazzoli --- examples/apps/ai_livertumor_seg_app/app.py | 51 +- examples/apps/ai_spleen_seg_app/app.py | 25 +- examples/apps/ai_unetr_seg_app/app.py | 53 ++ .../operators/dicom_seg_writer_operator.py | 626 +++++------------- .../monai_bundle_inference_operator.py | 2 +- .../operators/monai_seg_inference_operator.py | 2 +- requirements-dev.txt | 7 +- requirements-examples.txt | 5 +- 8 files changed, 291 insertions(+), 480 deletions(-) diff --git a/examples/apps/ai_livertumor_seg_app/app.py b/examples/apps/ai_livertumor_seg_app/app.py index a5fe7cfb..acca14d2 100644 --- a/examples/apps/ai_livertumor_seg_app/app.py +++ b/examples/apps/ai_livertumor_seg_app/app.py @@ -13,9 +13,12 @@ from livertumor_seg_operator import LiverTumorSegOperator +# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package. +from pydicom.sr.codedict import codes + from monai.deploy.core import Application, resource from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator -from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator +from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator from monai.deploy.operators.publisher_operator import PublisherOperator @@ -46,33 +49,57 @@ def compose(self): series_selector_op = DICOMSeriesSelectorOperator() series_to_vol_op = DICOMSeriesToVolumeOperator() # Model specific inference operator, supporting MONAI transforms. - unetr_seg_op = LiverTumorSegOperator() + liver_tumor_seg_op = LiverTumorSegOperator() # Create the publisher operator publisher_op = PublisherOperator() - # Creates DICOM Seg writer with segment label name in a string list - dicom_seg_writer = DICOMSegmentationWriterOperator( - seg_labels=[ - "Liver", - "Tumor", - ] - ) + # Create DICOM Seg writer providing the required segment description for each segment with + # the actual algorithm and the pertinent organ/tissue. + # The segment_label, algorithm_name, and algorithm_version are limited to 64 chars. + # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html + # User can Look up SNOMED CT codes at, e.g. + # https://bioportal.bioontology.org/ontologies/SNOMEDCT + + _algorithm_name = "3D segmentation of the liver and tumor from CT image" + _algorithm_family = codes.DCM.ArtificialIntelligence + _algorithm_version = "0.1.0" + + segment_descriptions = [ + SegmentDescription( + segment_label="Liver", + segmented_property_category=codes.SCT.Organ, + segmented_property_type=codes.SCT.Liver, + algorithm_name=_algorithm_name, + algorithm_family=_algorithm_family, + algorithm_version=_algorithm_version, + ), + SegmentDescription( + segment_label="Tumor", + segmented_property_category=codes.SCT.Tumor, + segmented_property_type=codes.SCT.Tumor, + algorithm_name=_algorithm_name, + algorithm_family=_algorithm_family, + algorithm_version=_algorithm_version, + ), + ] + + dicom_seg_writer = DICOMSegmentationWriterOperator(segment_descriptions) # Create the processing pipeline, by specifying the source and destination operators, and # ensuring the output from the former matches the input of the latter, in both name and type. self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) self.add_flow( series_selector_op, series_to_vol_op, {"study_selected_series_list": "study_selected_series_list"} ) - self.add_flow(series_to_vol_op, unetr_seg_op, {"image": "image"}) + self.add_flow(series_to_vol_op, liver_tumor_seg_op, {"image": "image"}) # Add the publishing operator to save the input and seg images for Render Server. # Note the PublisherOperator has temp impl till a proper rendering module is created. - self.add_flow(unetr_seg_op, publisher_op, {"saved_images_folder": "saved_images_folder"}) + self.add_flow(liver_tumor_seg_op, publisher_op, {"saved_images_folder": "saved_images_folder"}) # Note below the dicom_seg_writer requires two inputs, each coming from a source operator. self.add_flow( series_selector_op, dicom_seg_writer, {"study_selected_series_list": "study_selected_series_list"} ) - self.add_flow(unetr_seg_op, dicom_seg_writer, {"seg_image": "seg_image"}) + self.add_flow(liver_tumor_seg_op, dicom_seg_writer, {"seg_image": "seg_image"}) self._logger.debug(f"End {self.compose.__name__}") diff --git a/examples/apps/ai_spleen_seg_app/app.py b/examples/apps/ai_spleen_seg_app/app.py index d98034c7..2595bf75 100644 --- a/examples/apps/ai_spleen_seg_app/app.py +++ b/examples/apps/ai_spleen_seg_app/app.py @@ -11,11 +11,14 @@ import logging +# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package. +from pydicom.sr.codedict import codes + from monai.deploy.core import Application, resource from monai.deploy.core.domain import Image from monai.deploy.core.io_type import IOType from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator -from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator +from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator from monai.deploy.operators.monai_bundle_inference_operator import IOMapping, MonaiBundleInferenceOperator @@ -56,13 +59,29 @@ def compose(self): # during init to provide the optional packages info, parsed from the bundle, to the packager # for it to install the packages in the MAP docker image. # Setting output IOType to DISK only works only for leaf operators, not the case in this example. + # + # Pertinent MONAI Bundle: + # https://github.com/Project-MONAI/model-zoo/tree/dev/models/spleen_ct_segmentation bundle_spleen_seg_op = MonaiBundleInferenceOperator( input_mapping=[IOMapping("image", Image, IOType.IN_MEMORY)], output_mapping=[IOMapping("pred", Image, IOType.IN_MEMORY)], ) - # Create DICOM Seg writer with segment label name in a string list - dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=["Spleen"]) + # Create DICOM Seg writer providing the required segment description for each segment with + # the actual algorithm and the pertinent organ/tissue. The segment_label, algorithm_name, + # and algorithm_version are of DICOM VR LO type, limited to 64 chars. + # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html + segment_descriptions = [ + SegmentDescription( + segment_label="Spleen", + segmented_property_category=codes.SCT.Organ, + segmented_property_type=codes.SCT.Spleen, + algorithm_name="volumetric (3D) segmentation of the spleen from CT image", + algorithm_family=codes.DCM.ArtificialIntelligence, + algorithm_version="0.1.0", + ) + ] + dicom_seg_writer = DICOMSegmentationWriterOperator(segment_descriptions=segment_descriptions) # Create the processing pipeline, by specifying the source and destination operators, and # ensuring the output from the former matches the input of the latter, in both name and type. diff --git a/examples/apps/ai_unetr_seg_app/app.py b/examples/apps/ai_unetr_seg_app/app.py index 44b8ed48..ee471323 100644 --- a/examples/apps/ai_unetr_seg_app/app.py +++ b/examples/apps/ai_unetr_seg_app/app.py @@ -11,10 +11,13 @@ import logging +# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package. +from pydicom.sr.codedict import codes from unetr_seg_operator import UnetrSegOperator from monai.deploy.core import Application, resource from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator +from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator from monai.deploy.operators.publisher_operator import PublisherOperator @@ -54,6 +57,50 @@ def compose(self): output_file="stl/multi-organs.stl", keep_largest_connected_component=False ) + # Create DICOM Seg writer providing the required segment description for each segment with + # the actual algorithm and the pertinent organ/tissue. + # The segment_label, algorithm_name, and algorithm_version are limited to 64 chars. + # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html + + _algorithm_name = "3D multi-organ segmentation from CT image" + _algorithm_family = codes.DCM.ArtificialIntelligence + _algorithm_version = "0.1.0" + + # List of (Segment name, [Code menaing str]), not including background which is value of 0. + # User must provide correct codes, which can be looked at, e.g. + # https://bioportal.bioontology.org/ontologies/SNOMEDCT + # Alternatively, consult the concept and code dictionaries in PyDicom + + organs = [ + ("Spleen",), + ("Right Kidney", "Kidney"), + ("Left Kideny", "Kidney"), + ("Gallbladder",), + ("Esophagus",), + ("Liver",), + ("Stomach",), + ("Aorta",), + ("Inferior vena cava", "InferiorVenaCava"), + ("Portal and Splenic Veins", "SplenicVein"), + ("Pancreas",), + ("Right adrenal gland", "AdrenalGland"), + ("Left adrenal gland", "AdrenalGland"), + ] + + segment_descriptions = [ + SegmentDescription( + segment_label=organ[0], + segmented_property_category=codes.SCT.Organ, + segmented_property_type=codes.SCT.__getattr__(organ[1] if len(organ) > 1 else organ[0]), + algorithm_name=_algorithm_name, + algorithm_family=_algorithm_family, + algorithm_version=_algorithm_version, + ) + for organ in organs + ] + + dicom_seg_writer = DICOMSegmentationWriterOperator(segment_descriptions) + # Create the processing pipeline, by specifying the source and destination operators, and # ensuring the output from the former matches the input of the latter, in both name and type. self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) @@ -67,6 +114,12 @@ def compose(self): # Note the PublisherOperator has temp impl till a proper rendering module is created. self.add_flow(unetr_seg_op, publisher_op, {"saved_images_folder": "saved_images_folder"}) + # Note below the dicom_seg_writer requires two inputs, each coming from a source operator. + self.add_flow( + series_selector_op, dicom_seg_writer, {"study_selected_series_list": "study_selected_series_list"} + ) + self.add_flow(unetr_seg_op, dicom_seg_writer, {"seg_image": "seg_image"}) + self._logger.debug(f"End {self.compose.__name__}") diff --git a/monai/deploy/operators/dicom_seg_writer_operator.py b/monai/deploy/operators/dicom_seg_writer_operator.py index a35cc5d6..befb4eb0 100644 --- a/monai/deploy/operators/dicom_seg_writer_operator.py +++ b/monai/deploy/operators/dicom_seg_writer_operator.py @@ -9,16 +9,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -import copy -import datetime -import json -import logging import os from pathlib import Path from random import randint -from typing import List, Optional, Union +from typing import TYPE_CHECKING, List, Optional, Sequence, Union import numpy as np +from typeguard import typechecked from monai.deploy.utils.importutil import optional_import from monai.deploy.utils.version import get_sdk_semver @@ -28,8 +25,14 @@ ImplicitVRLittleEndian, _ = optional_import("pydicom.uid", name="ImplicitVRLittleEndian") Dataset, _ = optional_import("pydicom.dataset", name="Dataset") FileDataset, _ = optional_import("pydicom.dataset", name="FileDataset") -Sequence, _ = optional_import("pydicom.sequence", name="Sequence") sitk, _ = optional_import("SimpleITK") +codes, _ = optional_import("pydicom.sr.codedict", name="codes") +if TYPE_CHECKING: + import highdicom as hd + from pydicom.sr.coding import Code +else: + Code, _ = optional_import("pydicom.sr.coding", name="Code") + hd, _ = optional_import("highdicom") import monai.deploy.core as md from monai.deploy.core import DataPath, ExecutionContext, Image, InputContext, IOType, Operator, OutputContext @@ -37,10 +40,123 @@ from monai.deploy.core.domain.dicom_series_selection import StudySelectedSeries +class SegmentDescription: + @typechecked + def __init__( + self, + segment_label: str, + segmented_property_category: Code, + segmented_property_type: Code, + algorithm_name: str, + algorithm_version: str, + algorithm_family: Code = codes.DCM.ArtificialIntelligence, + tracking_id: Optional[str] = None, + tracking_uid: Optional[str] = None, + anatomic_regions: Optional[Sequence[Code]] = None, + primary_anatomic_structures: Optional[Sequence[Code]] = None, + ): + """Class encapsulating the description of a segment within the segmentation. + + Args: + segment_label: str + User-defined label identifying this segment, + DICOM VR Long String (LO) (see C.8.20-4 + https://dicom.nema.org/medical/Dicom/current/output/chtml/part03/sect_C.8.20.4.html + "Segment Description Macro Attributes") + segmented_property_category: pydicom.sr.coding.Code + Category of the property the segment represents, + e.g. ``Code("49755003", "SCT", "Morphologically Abnormal + Structure")`` (see CID 7150 + http://dicom.nema.org/medical/dicom/current/output/chtml/part16/sect_CID_7150.html + "Segmentation Property Categories") + segmented_property_type: pydicom.sr.coding.Code + Property the segment represents, + e.g. ``Code("108369006", "SCT", "Neoplasm")`` (see CID 7151 + http://dicom.nema.org/medical/dicom/current/output/chtml/part16/sect_CID_7151.html + "Segmentation Property Types") + algorithm_name: str + Name of algorithm used to generate the segment, also as the name assigned by a + manufacturer to a specific software algorithm, + DICOM VR Long String (LO) (see C.8.20-2 + https://dicom.nema.org/medical/dicom/2019a/output/chtml/part03/sect_C.8.20.2.html + "Segmentation Image Module Attribute", and see 10-19 + https://dicom.nema.org/medical/dicom/2020b/output/chtml/part03/sect_10.16.html + "Algorithm Identification Macro Attributes") + algorithm_version: str + The software version identifier assigned by a manufacturer to a specific software algorithm, + DICOM VR Long String (LO) (see 10-19 + https://dicom.nema.org/medical/dicom/2020b/output/chtml/part03/sect_10.16.html + "Algorithm Identification Macro Attributes") + tracking_id: Optional[str], optional + Tracking identifier (unique only with the domain of use). + tracking_uid: Optional[str], optional + Unique tracking identifier (universally unique) in the DICOM format + for UIDs. This is only permissible if a ``tracking_id`` is also + supplied. You may use ``pydicom.uid.generate_uid`` to generate a + suitable UID. If ``tracking_id`` is supplied but ``tracking_uid`` is + not supplied, a suitable UID will be generated for you. + anatomic_regions: Optional[Sequence[pydicom.sr.coding.Code]], optional + Anatomic region(s) into which segment falls, + e.g. ``Code("41216001", "SCT", "Prostate")`` (see CID 4 + http://dicom.nema.org/medical/dicom/current/output/chtml/part16/sect_CID_4.html + "Anatomic Region", CID 403 + http://dicom.nema.org/medical/dicom/current/output/chtml/part16/sect_CID_4031.html + "Common Anatomic Regions", as as well as other CIDs for + domain-specific anatomic regions) + primary_anatomic_structures: Optional[Sequence[pydicom.sr.coding.Code]], optional + Anatomic structure(s) the segment represents + (see CIDs for domain-specific primary anatomic structures) + """ + self._segment_label = segment_label + self._segmented_property_category = segmented_property_category + self._segmented_property_type = segmented_property_type + self._tracking_id = tracking_id + + self._anatomic_regions = anatomic_regions + self._primary_anatomic_structures = primary_anatomic_structures + + # Generate a UID if one was not provided + if tracking_id is not None and tracking_uid is None: + tracking_uid = hd.UID() + self._tracking_uid = tracking_uid + + self._algorithm_identification = hd.AlgorithmIdentificationSequence( + name=algorithm_name, + family=algorithm_family, + version=algorithm_version, + ) + + def to_segment_description(self, segment_number: int) -> hd.seg.SegmentDescription: + """Get a corresponding highdicom Segment Description object. + + Args: + segment_number: int + Number of the segment. Must start at 1 and increase by 1 within a + given segmentation object. + + Returns + highdicom.seg.SegmentDescription: + highdicom Segment Description containing the information in this + object. + """ + return hd.seg.SegmentDescription( + segment_number=segment_number, + segment_label=self._segment_label, + segmented_property_category=self._segmented_property_category, + segmented_property_type=self._segmented_property_type, + algorithm_identification=self._algorithm_identification, + algorithm_type="AUTOMATIC", + tracking_uid=self._tracking_uid, + tracking_id=self._tracking_id, + anatomic_regions=self._anatomic_regions, + primary_anatomic_structures=self._primary_anatomic_structures, + ) + + @md.input("seg_image", Image, IOType.IN_MEMORY) @md.input("study_selected_series_list", List[StudySelectedSeries], IOType.IN_MEMORY) @md.output("dicom_seg_instance", DataPath, IOType.DISK) -@md.env(pip_packages=["pydicom >= 1.4.2", "SimpleITK >= 2.0.0"]) +@md.env(pip_packages=["pydicom >= 2.3.0", "highdicom >= 0.18.2"]) class DICOMSegmentationWriterOperator(Operator): """ This operator writes out a DICOM Segmentation Part 10 file to disk @@ -53,38 +169,27 @@ class DICOMSegmentationWriterOperator(Operator): # Suffix to add to file name to indicate DICOM Seg dcm file. DICOMSEG_SUFFIX = "-DICOMSEG" - def __init__(self, seg_labels: Optional[Union[List[str], str]] = None, *args, **kwargs): + def __init__(self, segment_descriptions: List[SegmentDescription], *args, **kwargs): super().__init__(*args, **kwargs) """Instantiates the DICOM Seg Writer instance with optional list of segment label strings. - A string can be used instead of a numerical value for a segment in the segmentation image. - As of now, integer values are supported for segment mask, and it is further required that the named - segment will start with 1 and increment sequentially if there are additional segments, while the - background is of value 0. The caller needs to pass in a string list, whose length corresponds - to the number of actual segments. The position index + 1 would be the corresponding segment's - numerical value. + Each unique, non-zero integer value in the segmentation image represents a segment that must be + described by an item of the segment descriptions list with the corresponding segment number. + Items in the list must be arranged starting at segment number 1 and increasing by 1. For example, in the CT Spleen Segmentation application, the whole image background has a value of 0, and the Spleen segment of value 1. This then only requires the caller to pass in a list - containing a single string, which is used as label for the Spleen in the DICOM Seg instance. + containing a segment description, which is used as label for the Spleen in the DICOM Seg instance. Note: this interface is subject to change. It is planned that a new object will encapsulate the segment label information, including label value, name, description etc. Args: - seg_labels: The string name for each segment + segment_descriptions: Object encapsulating the description of each segment present in the + segmentation. """ - self._seg_labels = ["SegmentLabel-default"] - if isinstance(seg_labels, str): - self._seg_labels = [seg_labels] - elif isinstance(seg_labels, list): - self._seg_labels = [] - for label in seg_labels: - if isinstance(label, str) or isinstance(label, int): - self._seg_labels.append(label) - else: - raise ValueError(f"List of strings expected, but contains {label} of type {type(label)}.") + self._seg_descs = [sd.to_segment_description(n) for n, sd in enumerate(segment_descriptions, 1)] def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): """Performs computation for this operator and handles I/O. @@ -157,12 +262,29 @@ def create_dicom_seg(self, image: np.ndarray, dicom_series: DICOMSeries, file_pa file_path.parent.absolute().mkdir(parents=True, exist_ok=True) dicom_dataset_list = [i.get_native_sop_instance() for i in dicom_series.get_sop_instances()] - # DICOM Seg creation - self._seg_writer = DICOMSegWriter() + try: - self._seg_writer.write(image, dicom_dataset_list, str(file_path), self._seg_labels) - # TODO: get a class to encapsulate the seg label information. + version_str = get_sdk_semver() # SDK Version + except Exception: + version_str = "0.1" # Fall back to the initial version + + seg = hd.seg.Segmentation( + source_images=dicom_dataset_list, + pixel_array=image, + segmentation_type=hd.seg.SegmentationTypeValues.BINARY, + segment_descriptions=self._seg_descs, + series_instance_uid=hd.UID(), + series_number=random_with_n_digits(4), + sop_instance_uid=hd.UID(), + instance_number=1, + manufacturer="The MONAI Consortium", + manufacturer_model_name="MONAI Deploy App SDK", + software_versions=version_str, + device_serial_number="0000", + ) + seg.save_as(file_path) + try: # Test reading back _ = self._read_from_dcm(str(file_path)) except Exception as ex: @@ -219,99 +341,6 @@ def _image_file_to_numpy(self, input_path: str): raise RuntimeError("Failed to convert image file to numpy: {}".format(input_path)) return data_np.astype(np.uint8) - def _get_label_list(self, stringfied_list_of_labels: str = ""): - """Parse the string to get the label list. - - If empty string is provided, a list of a single element is returned. - - Args: - stringfied_list_of_labels (str): string representing the list of segmentation labels. - - Returns: - list of label strings - """ - - # Use json.loads as a convenience method to convert string to list of strings - assert isinstance(stringfied_list_of_labels, str), "Expected stringfied list pf labels." - - label_list = ["default-label"] # Use this as default if empty string - if stringfied_list_of_labels: - label_list = json.loads(stringfied_list_of_labels) - - return label_list - - -class DICOMSegWriter(object): - def __init__(self): - """Class to write DICOM SEG with the segmentation image and DICOM dataset.""" - - self._logger = logging.getLogger("{}.{}".format(__name__, type(self).__name__)) - - def write(self, seg_img, input_ds, outfile, seg_labels): - """Write DICOM Segmentation object for the segmentation image - - Args: - seg_img (numpy array): numpy array of the segmentation image. - input_ds (list): list of Pydicom datasets of the original DICOM instances. - outfile (str): path for the output DICOM instance file. - seg_labels: list of labels for the segments - """ - - if seg_img is None: - raise ValueError("Argument seg_img cannot be None.") - if not isinstance(input_ds, list) or len(input_ds) < 1: - raise ValueError("Argument input_ds must not be empty.") - if not outfile: - raise ValueError("Argument outfile must not be a valid string.") - if not isinstance(seg_labels, list) or len(seg_labels) < 1: - raise ValueError("Argument seg_labels must not be empty.") - - # Find out the number of DICOM instance datasets - num_of_dcm_ds = len(input_ds) - self._logger.info("Number of DICOM instance datasets in the list: {}".format(num_of_dcm_ds)) - - # Find out the number of slices in the numpy array - num_of_img_slices = seg_img.shape[0] - self._logger.info("Number of slices in the numpy image: {}".format(num_of_img_slices)) - - # Find out the labels - self._logger.info("Labels of the segments: {}".format(seg_labels)) - - # Find out the unique values in the seg image - unique_elements = np.unique(seg_img, return_counts=False) - self._logger.info("Unique values in seg image: {}".format(unique_elements)) - - dcm_out = create_multiframe_metadata(outfile, input_ds[0]) - create_label_segments(dcm_out, seg_labels) - set_pixel_meta(dcm_out, input_ds[0]) - segslice_from_mhd(dcm_out, seg_img, input_ds, len(seg_labels)) - - self._logger.info("Saving output file {}".format(outfile)) - dcm_out.save_as(outfile, False) - self._logger.info("File saved.") - - -# The following functions are mostly based on the implementation demo'ed at RSNA 2019. -# They can be further refactored and made into class methods, but work for now. - - -def safe_get(ds, key): - """Safely gets the tag value if present from the Dataset and logs failure. - - The safe get method of dict works for str, but not the hex key. The added - benefit of this function is that it logs the failure to get the keyed value. - - Args: - ds (Dataset): pydicom Dataset - key (hex | str): Hex code or string name for a key. - """ - - try: - return ds[key].value - except KeyError as e: - logging.error("Failed to get value for key: {}".format(e)) - return "" - def random_with_n_digits(n): assert isinstance(n, int), "Argument n must be a int." @@ -321,339 +350,6 @@ def random_with_n_digits(n): return randint(range_start, range_end) -def create_multiframe_metadata(dicom_file, input_ds): - """Creates the DICOM metadata for the multiframe object, e.g. SEG - - Args: - dicom_file (str or object): The filename or the object type of the file-like the FileDataset was read from. - input_ds (Dataset): pydicom dataset of original DICOM instance. - - Returns: - FileDataset: The object with metadata assigned. - """ - - currentDateRaw = datetime.datetime.now() - currentDate = currentDateRaw.strftime("%Y%m%d") - currentTime = currentDateRaw.strftime("%H%M%S.%f") # long format with micro seconds - segmentationSeriesInstanceUID = generate_uid(prefix=None) - segmentationSOPInstanceUID = generate_uid(prefix=None) - - # Populate required values for file meta information - - file_meta = Dataset() - file_meta.MediaStorageSOPClassUID = "1.2.840.10008.5.1.4.1.1.66.4" - file_meta.MediaStorageSOPInstanceUID = segmentationSOPInstanceUID - file_meta.ImplementationClassUID = "1.2.840.10008.5.1.4.1.1.66.4" - file_meta.TransferSyntaxUID = ImplicitVRLittleEndian - # create dicom global metadata - dicomOutput = FileDataset(dicom_file, {}, file_meta=file_meta, preamble=b"\0" * 128) - - # It is important to understand the Types of DICOM attributes when getting from the original - # dataset, and creating/setting them in the new dataset, .e.g Type 1 is mandatory, though - # non-conformant instance may not have them, Type 2 present but maybe blank, and Type 3 may - # be absent. - - # None of Patient module attributes are mandatory. - # The following are Type 2, present though could be blank - dicomOutput.PatientName = input_ds.get("PatientName", "") # name is actual suppoted - dicomOutput.add_new(0x00100020, "LO", safe_get(input_ds, 0x00100020)) # PatientID - dicomOutput.add_new(0x00100030, "DA", safe_get(input_ds, 0x00100030)) # PatientBirthDate - dicomOutput.add_new(0x00100040, "CS", safe_get(input_ds, 0x00100040)) # PatientSex - dicomOutput.add_new(0x00104000, "LT", safe_get(input_ds, "0x00104000")) # PatientComments - - # For Study module, copy original StudyInstanceUID and other Type 2 study attributes - # Only Study Instance UID is Type 1, though still may be absent, so try to get - dicomOutput.add_new(0x0020000D, "UI", safe_get(input_ds, 0x0020000D)) # StudyInstanceUID - dicomOutput.add_new(0x00080020, "DA", input_ds.get("StudyDate", currentDate)) # StudyDate - dicomOutput.add_new(0x00080030, "TM", input_ds.get("StudyTime", currentTime)) # StudyTime - dicomOutput.add_new(0x00080090, "PN", safe_get(input_ds, 0x00080090)) # ReferringPhysicianName - dicomOutput.add_new(0x00200010, "SH", safe_get(input_ds, 0x00200010)) # StudyID - dicomOutput.add_new(0x00080050, "SH", safe_get(input_ds, 0x00080050)) # AccessionNumber - - # Series module with new attribute values, only Modality and SeriesInstanceUID are Type 1 - dicomOutput.add_new(0x00080060, "CS", "SEG") # Modality - dicomOutput.add_new(0x0020000E, "UI", segmentationSeriesInstanceUID) # SeriesInstanceUID - dicomOutput.add_new(0x00200011, "IS", random_with_n_digits(4)) # SeriesNumber (randomized) - descr = "CAUTION: Research Use Only. MONAI Deploy App SDK generated DICOM SEG" - if safe_get(input_ds, 0x0008103E): - descr += " for " + safe_get(input_ds, 0x0008103E) - dicomOutput.add_new(0x0008103E, "LO", descr) # SeriesDescription - dicomOutput.add_new(0x00080021, "DA", currentDate) # SeriesDate - dicomOutput.add_new(0x00080031, "TM", currentTime) # SeriesTime - - # General Equipment module, only Manufacturer is Type 2, the rest Type 3 - dicomOutput.add_new(0x00181000, "LO", "0000") # DeviceSerialNumber - dicomOutput.add_new(0x00080070, "LO", "MONAI Deploy") # Manufacturer - dicomOutput.add_new(0x00081090, "LO", "App SDK") # ManufacturerModelName - try: - version_str = get_sdk_semver() # SDK Version - except Exception: - version_str = "0.1" # Fall back to the initial version - dicomOutput.add_new(0x00181020, "LO", version_str) # SoftwareVersions - - # SOP common, only SOPClassUID and SOPInstanceUID are Type 1 - dicomOutput.add_new(0x00200013, "IS", 1) # InstanceNumber - dicomOutput.add_new(0x00080016, "UI", "1.2.840.10008.5.1.4.1.1.66.4") # SOPClassUID, per DICOM. - dicomOutput.add_new(0x00080018, "UI", segmentationSOPInstanceUID) # SOPInstanceUID - dicomOutput.add_new(0x00080012, "DA", currentDate) # InstanceCreationDate - dicomOutput.add_new(0x00080013, "TM", currentTime) # InstanceCreationTime - - # General Image module. - dicomOutput.add_new(0x00080008, "CS", ["DERIVED", "PRIMARY"]) # ImageType - dicomOutput.add_new(0x00200020, "CS", "") # PatientOrientation, forced empty - # Set content date/time - dicomOutput.ContentDate = currentDate - dicomOutput.ContentTime = currentTime - - # Image Pixel - dicomOutput.add_new(0x00280002, "US", 1) # SamplesPerPixel - dicomOutput.add_new(0x00280004, "CS", "MONOCHROME2") # PhotometricInterpretation - - # Common Instance Reference module - dicomOutput.add_new(0x00081115, "SQ", [Dataset()]) # ReferencedSeriesSequence - # Set the referenced SeriesInstanceUID - dicomOutput.get(0x00081115)[0].add_new(0x0020000E, "UI", safe_get(input_ds, 0x0020000E)) - - # Multi-frame Dimension Module - dimensionID = generate_uid(prefix=None) - dimensionOragnizationSequence = Sequence() - dimensionOragnizationSequenceDS = Dataset() - dimensionOragnizationSequenceDS.add_new(0x00209164, "UI", dimensionID) # DimensionOrganizationUID - dimensionOragnizationSequence.append(dimensionOragnizationSequenceDS) - dicomOutput.add_new(0x00209221, "SQ", dimensionOragnizationSequence) # DimensionOrganizationSequence - - dimensionIndexSequence = Sequence() - dimensionIndexSequenceDS = Dataset() - dimensionIndexSequenceDS.add_new(0x00209164, "UI", dimensionID) # DimensionOrganizationUID - dimensionIndexSequenceDS.add_new(0x00209165, "AT", 0x00209153) # DimensionIndexPointer - dimensionIndexSequenceDS.add_new(0x00209167, "AT", 0x00209153) # FunctionalGroupPointer - dimensionIndexSequence.append(dimensionIndexSequenceDS) - dicomOutput.add_new(0x00209222, "SQ", dimensionIndexSequence) # DimensionIndexSequence - - return dicomOutput - - -def create_label_segments(dcm_output, seg_labels): - """ "Creates the segments with the given labels""" - - def create_label_segment(label, name): - """Creates segment labels""" - segment = Dataset() - segment.add_new(0x00620004, "US", int(label)) # SegmentNumber - segment.add_new(0x00620005, "LO", name) # SegmentLabel - segment.add_new(0x00620009, "LO", "AI Organ Segmentation") # SegmentAlgorithmName - segment.SegmentAlgorithmType = "AUTOMATIC" # SegmentAlgorithmType - segment.add_new(0x0062000D, "US", [128, 174, 128]) # RecommendedDisplayCIELabValue - # Create SegmentedPropertyCategoryCodeSequence - segmentedPropertyCategoryCodeSequence = Sequence() - segmentedPropertyCategoryCodeSequenceDS = Dataset() - segmentedPropertyCategoryCodeSequenceDS.add_new(0x00080100, "SH", "T-D0050") # CodeValue - segmentedPropertyCategoryCodeSequenceDS.add_new(0x00080102, "SH", "SRT") # CodingSchemeDesignator - segmentedPropertyCategoryCodeSequenceDS.add_new(0x00080104, "LO", "Anatomical Structure") # CodeMeaning - segmentedPropertyCategoryCodeSequence.append(segmentedPropertyCategoryCodeSequenceDS) - segment.SegmentedPropertyCategoryCodeSequence = segmentedPropertyCategoryCodeSequence - # Create SegmentedPropertyTypeCodeSequence - segmentedPropertyTypeCodeSequence = Sequence() - segmentedPropertyTypeCodeSequenceDS = Dataset() - segmentedPropertyTypeCodeSequenceDS.add_new(0x00080100, "SH", "T-D0050") # CodeValue - segmentedPropertyTypeCodeSequenceDS.add_new(0x00080102, "SH", "SRT") # CodingSchemeDesignator - segmentedPropertyTypeCodeSequenceDS.add_new(0x00080104, "LO", "Organ") # CodeMeaning - segmentedPropertyTypeCodeSequence.append(segmentedPropertyTypeCodeSequenceDS) - segment.SegmentedPropertyTypeCodeSequence = segmentedPropertyTypeCodeSequence - return segment - - segments = Sequence() - # Assumes the label starts at 1 and increment sequentially. - # TODO: This part needs to be more deterministic, e.g. with a dict. - for lb, name in enumerate(seg_labels, 1): - segment = create_label_segment(lb, name) - segments.append(segment) - dcm_output.add_new(0x00620002, "SQ", segments) # SegmentSequence - - -def create_frame_meta(input_ds, label, ref_instances, dimIdxVal, instance_num): - """Creates the metadata for the each frame""" - - sop_inst_uid = safe_get(input_ds, 0x00080018) # SOPInstanceUID - sourceInstanceSOPClass = safe_get(input_ds, 0x00080016) # SOPClassUID - - # add frame to Referenced Image Sequence - frame_ds = Dataset() - referenceInstance = Dataset() - referenceInstance.add_new(0x00081150, "UI", sourceInstanceSOPClass) # ReferencedSOPClassUID - referenceInstance.add_new(0x00081155, "UI", sop_inst_uid) # ReferencedSOPInstanceUID - - ref_instances.append(referenceInstance) - ############################ - # CREATE METADATA - ############################ - # Create DerivationImageSequence within Per-frame Functional Groups sequence - derivationImageSequence = Sequence() - derivationImage = Dataset() - # Create SourceImageSequence within DerivationImageSequence - sourceImageSequence = Sequence() - sourceImage = Dataset() - # TODO if CT multi-frame - # sourceImage.add_new(0x00081160, 'IS', inputFrameCounter + 1) # Referenced Frame Number - sourceImage.add_new(0x00081150, "UI", sourceInstanceSOPClass) # ReferencedSOPClassUID - sourceImage.add_new(0x00081155, "UI", sop_inst_uid) # ReferencedSOPInstanceUID - # Create PurposeOfReferenceCodeSequence within SourceImageSequence - purposeOfReferenceCodeSequence = Sequence() - purposeOfReferenceCode = Dataset() - purposeOfReferenceCode.add_new(0x00080100, "SH", "121322") # CodeValue - purposeOfReferenceCode.add_new(0x00080102, "SH", "DCM") # CodingSchemeDesignator - purposeOfReferenceCode.add_new(0x00080104, "LO", "Anatomical Stucture") # CodeMeaning - purposeOfReferenceCodeSequence.append(purposeOfReferenceCode) - sourceImage.add_new(0x0040A170, "SQ", purposeOfReferenceCodeSequence) # PurposeOfReferenceCodeSequence - sourceImageSequence.append(sourceImage) # AEH Beck commentout - # Create DerivationCodeSequence within DerivationImageSequence - derivationCodeSequence = Sequence() - derivationCode = Dataset() - derivationCode.add_new(0x00080100, "SH", "113076") # CodeValue - derivationCode.add_new(0x00080102, "SH", "DCM") # CodingSchemeDesignator - derivationCode.add_new(0x00080104, "LO", "Segmentation") # CodeMeaning - derivationCodeSequence.append(derivationCode) - derivationImage.add_new(0x00089215, "SQ", derivationCodeSequence) # DerivationCodeSequence - derivationImage.add_new(0x00082112, "SQ", sourceImageSequence) # SourceImageSequence - derivationImageSequence.append(derivationImage) - frame_ds.add_new(0x00089124, "SQ", derivationImageSequence) # DerivationImageSequence - # Create FrameContentSequence within Per-frame Functional Groups sequence - frameContent = Sequence() - dimensionIndexValues = Dataset() - dimensionIndexValues.add_new(0x00209157, "UL", [dimIdxVal, instance_num]) # DimensionIndexValues - frameContent.append(dimensionIndexValues) - frame_ds.add_new(0x00209111, "SQ", frameContent) # FrameContentSequence - # Create PlanePositionSequence within Per-frame Functional Groups sequence - planePositionSequence = Sequence() - imagePositionPatient = Dataset() - imagePositionPatient.add_new(0x00200032, "DS", safe_get(input_ds, 0x00200032)) # ImagePositionPatient - planePositionSequence.append(imagePositionPatient) - frame_ds.add_new(0x00209113, "SQ", planePositionSequence) # PlanePositionSequence - # Create PlaneOrientationSequence within Per-frame Functional Groups sequence - planeOrientationSequence = Sequence() - imageOrientationPatient = Dataset() - imageOrientationPatient.add_new(0x00200037, "DS", safe_get(input_ds, 0x00200037)) # ImageOrientationPatient - planeOrientationSequence.append(imageOrientationPatient) - frame_ds.add_new(0x00209116, "SQ", planeOrientationSequence) # PlaneOrientationSequence - # Create SegmentIdentificationSequence within Per-frame Functional Groups sequence - segmentIdentificationSequence = Sequence() - referencedSegmentNumber = Dataset() - # TODO lop over label and only get pixel with that value - referencedSegmentNumber.add_new(0x0062000B, "US", label) # ReferencedSegmentNumber, which label is this frame - segmentIdentificationSequence.append(referencedSegmentNumber) - frame_ds.add_new(0x0062000A, "SQ", segmentIdentificationSequence) # SegmentIdentificationSequence - return frame_ds - - -def set_pixel_meta(dicomOutput, input_ds): - """Sets the pixel metadata in the DICOM object""" - - dicomOutput.Rows = input_ds.Rows - dicomOutput.Columns = input_ds.Columns - dicomOutput.BitsAllocated = 1 # add_new(0x00280100, 'US', 8) # Bits allocated - dicomOutput.BitsStored = 1 - dicomOutput.HighBit = 0 - dicomOutput.PixelRepresentation = 0 - # dicomOutput.PixelRepresentation = input_ds.PixelRepresentation - dicomOutput.SamplesPerPixel = 1 - dicomOutput.ImageType = "DERIVED\\PRIMARY" - dicomOutput.ContentLabel = "SEGMENTATION" - dicomOutput.ContentDescription = "" - dicomOutput.ContentCreatorName = "" - dicomOutput.LossyImageCompression = "00" - dicomOutput.SegmentationType = "BINARY" - dicomOutput.MaximumFractionalValue = 1 - dicomOutput.SharedFunctionalGroupsSequence = Sequence() - dicomOutput.PixelPaddingValue = 0 - # Try to get the attributes from the original. - # Even though they are Type 1 and 2, can still be absent - dicomOutput.PixelSpacing = copy.deepcopy(input_ds.get("PixelSpacing", None)) - dicomOutput.SliceThickness = input_ds.get("SliceThickness", "") - dicomOutput.RescaleSlope = 1 - dicomOutput.RescaleIntercept = 0 - # Set the transfer syntax - dicomOutput.is_little_endian = False # True - dicomOutput.is_implicit_VR = False # True - - -def segslice_from_mhd(dcm_output, seg_img, input_ds, num_labels): - """Sets the pixel data from the input numpy image""" - - if np.amax(seg_img) == 0 and np.amin(seg_img) == 0: - raise ValueError("Seg mask is not detected; all 0's.") - - # add frames - out_frame_counter = 0 - out_frames = Sequence() - - out_pixels = None - - referenceInstances = Sequence() - - for img_slice in range(seg_img.shape[0]): - - dimIdxVal = 0 - - for label in range(1, num_labels + 1): - - # Determine if frame gets output - if np.count_nonzero(seg_img[img_slice, ...] == label) == 0: # no label for this frame --> skip - continue - - dimIdxVal += 1 - - frame_meta = create_frame_meta(input_ds[img_slice], label, referenceInstances, dimIdxVal, img_slice) - - out_frames.append(frame_meta) - logging.debug( - "img slice {}, label {}, frame {}, img pos {}".format( - img_slice, label, out_frame_counter, safe_get(input_ds[img_slice], 0x00200032) - ) - ) - seg_slice = np.zeros((1, seg_img.shape[1], seg_img.shape[2]), dtype=bool) - - seg_slice[np.expand_dims(seg_img[img_slice, ...] == label, 0)] = 1 - - if out_pixels is None: - out_pixels = seg_slice - else: - out_pixels = np.concatenate((out_pixels, seg_slice), axis=0) - - out_frame_counter = out_frame_counter + 1 - - dcm_output.add_new(0x52009230, "SQ", out_frames) # PerFrameFunctionalGroupsSequence - dcm_output.NumberOfFrames = out_frame_counter - dcm_output.PixelData = np.packbits(np.flip(np.reshape(out_pixels.astype(bool), (-1, 8)), 1)).tobytes() - - dcm_output.get(0x00081115)[0].add_new(0x0008114A, "SQ", referenceInstances) # ReferencedInstanceSequence - - # Create shared Functional Groups sequence - sharedFunctionalGroups = Sequence() - sharedFunctionalGroupsDS = Dataset() - - planeOrientationSeq = Sequence() - planeOrientationDS = Dataset() - planeOrientationDS.add_new("0x00200037", "DS", safe_get(input_ds[0], 0x00200037)) # ImageOrientationPatient - planeOrientationSeq.append(planeOrientationDS) - sharedFunctionalGroupsDS.add_new("0x00209116", "SQ", planeOrientationSeq) # PlaneOrientationSequence - - pixelMeasuresSequence = Sequence() - pixelMeasuresDS = Dataset() - pixelMeasuresDS.add_new("0x00280030", "DS", safe_get(input_ds[0], "0x00280030")) # PixelSpacing - if input_ds[0].get("SpacingBetweenSlices", ""): - pixelMeasuresDS.add_new("0x00180088", "DS", input_ds[0].get("SpacingBetweenSlices", "")) # SpacingBetweenSlices - pixelMeasuresDS.add_new("0x00180050", "DS", safe_get(input_ds[0], "0x00180050")) # SliceThickness - pixelMeasuresSequence.append(pixelMeasuresDS) - sharedFunctionalGroupsDS.add_new("0x00289110", "SQ", pixelMeasuresSequence) # PixelMeasuresSequence - - sharedFunctionalGroups.append(sharedFunctionalGroupsDS) - - dcm_output.add_new(0x52009229, "SQ", sharedFunctionalGroups) # SharedFunctionalGroupsSequence - - -# End DICOM Seg Writer temp - - def test(): from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator @@ -662,11 +358,21 @@ def test(): current_file_dir = Path(__file__).parent.resolve() data_path = current_file_dir.joinpath("../../../examples/ai_spleen_seg_data/dcm") out_path = current_file_dir.joinpath("../../../examples/output_seg_op/dcm_seg_test.dcm") + segment_descriptions = [ + SegmentDescription( + segment_label="Spleen", + segmented_property_category=codes.SCT.Organ, + segmented_property_type=codes.SCT.Spleen, + algorithm_name="Test algorithm", + algorithm_family=codes.DCM.ArtificialIntelligence, + algorithm_version="0.0.2", + ) + ] loader = DICOMDataLoaderOperator() series_selector = DICOMSeriesSelectorOperator() dcm_to_volume_op = DICOMSeriesToVolumeOperator() - seg_writer = DICOMSegmentationWriterOperator() + seg_writer = DICOMSegmentationWriterOperator(segment_descriptions) # Testing with more granular functions study_list = loader.load_data_to_studies(data_path.absolute()) @@ -676,7 +382,8 @@ def test(): voxels = dcm_to_volume_op.generate_voxel_data(series) metadata = dcm_to_volume_op.create_metadata(series) image = dcm_to_volume_op.create_volumetric_image(voxels, metadata) - image_numpy = image.asnumpy() + # Very crude thresholding + image_numpy = (image.asnumpy() > 400).astype(np.uint8) seg_writer.create_dicom_seg(image_numpy, series, Path(out_path).absolute()) @@ -684,6 +391,9 @@ def test(): study_list = loader.load_data_to_studies(data_path.absolute()) study_selected_series_list = series_selector.filter(None, study_list) image = dcm_to_volume_op.convert_to_image(study_selected_series_list) + # Very crude thresholding + image_numpy = (image.asnumpy() > 400).astype(np.uint8) + image = Image(image_numpy) seg_writer.process_images(image, study_selected_series_list, out_path.parent.absolute()) diff --git a/monai/deploy/operators/monai_bundle_inference_operator.py b/monai/deploy/operators/monai_bundle_inference_operator.py index 96c703b7..e351c6bc 100644 --- a/monai/deploy/operators/monai_bundle_inference_operator.py +++ b/monai/deploy/operators/monai_bundle_inference_operator.py @@ -198,7 +198,7 @@ def _ensure_str_list(config_names): # operator may choose to pass in a accessible bundle path at development and packaging stage. Ideally, # the bundle path should be passed in by the Packager, e.g. via env var, when the App is initialized. # As of now, the Packager only passes in the model path after the App including all operators are init'ed. -@md.env(pip_packages=["monai>=0.9.0", "torch>=1.10.02", "numpy>=1.21", "nibabel>=3.2.1"]) +@md.env(pip_packages=["monai==0.9.0", "torch>=1.10.02", "numpy>=1.21", "nibabel>=3.2.1"]) class MonaiBundleInferenceOperator(InferenceOperator): """This inference operator automates the inference operation for a given MONAI Bundle. diff --git a/monai/deploy/operators/monai_seg_inference_operator.py b/monai/deploy/operators/monai_seg_inference_operator.py index 5f368f2b..82a38097 100644 --- a/monai/deploy/operators/monai_seg_inference_operator.py +++ b/monai/deploy/operators/monai_seg_inference_operator.py @@ -42,7 +42,7 @@ @md.input("image", Image, IOType.IN_MEMORY) @md.output("seg_image", Image, IOType.IN_MEMORY) -@md.env(pip_packages=["monai>=0.8.1", "torch>=1.5", "numpy>=1.21"]) +@md.env(pip_packages=["monai==0.9.0", "torch>=1.5", "numpy>=1.21"]) class MonaiSegInferenceOperator(InferenceOperator): """This segmentation operator uses MONAI transforms and Sliding Window Inference. diff --git a/requirements-dev.txt b/requirements-dev.txt index 8581d1e0..6818512a 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -23,9 +23,10 @@ pytest==6.2.4 pytest-cov==2.12.1 pytest-lazy-fixture==0.6.3 cucim~=21.06; platform_system == "Linux" -monai>=0.9.0 +monai==0.9.0 docker>=5.0.0 -pydicom>=1.4.2 +pydicom>=2.3.0 +highdicom>=0.18.2 SimpleITK>=2.0.0 Pillow>=8.0.0 bump2version==1.0.1 @@ -33,4 +34,4 @@ scikit-image>=0.17.2 nibabel>=3.2.1 numpy-stl>=2.12.0 trimesh>=3.8.11 -torch>=1.10.0 \ No newline at end of file +torch>=1.10.0 diff --git a/requirements-examples.txt b/requirements-examples.txt index abbf0a97..7d7bd818 100644 --- a/requirements-examples.txt +++ b/requirements-examples.txt @@ -1,5 +1,6 @@ scikit-image >= 0.17.2 -pydicom >= 1.4.2 +pydicom >= 2.3.0 +highdicom>=0.18.2 SimpleITK >= 2.0.0 Pillow >= 8.0.0 numpy-stl>=2.12.0 @@ -8,4 +9,4 @@ nibabel >= 3.2.1 numpy-stl >= 2.12.0 trimesh >= 3.8.11 torch >= 1.10.0 -monai >= 0.9.0 \ No newline at end of file +monai == 0.9.0 \ No newline at end of file From 60de91b2741b31f8226e2a4def9cbe6d5c59adcb Mon Sep 17 00:00:00 2001 From: mmelqin Date: Mon, 22 Aug 2022 15:58:13 -0700 Subject: [PATCH 006/216] Fix the setting of init state in its own PR, instead of rolled into others Signed-off-by: mmelqin Signed-off-by: Simone Bendazzoli --- monai/deploy/operators/monai_bundle_inference_operator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/deploy/operators/monai_bundle_inference_operator.py b/monai/deploy/operators/monai_bundle_inference_operator.py index e351c6bc..07243968 100644 --- a/monai/deploy/operators/monai_bundle_inference_operator.py +++ b/monai/deploy/operators/monai_bundle_inference_operator.py @@ -460,7 +460,7 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe if not self._init_completed: self._bundle_path = self._model_network.path self._init_config(self._bundle_config_names.config_names) - self._init_completed + self._init_completed = True elif self._bundle_path: # For the case of local dev/testing when the bundle path is not passed in as an exec cmd arg. # When run as a MAP docker, the bundle file is expected to be in the context, even if the model From 5384e7df6ceb7bc35fa2aae50aa6a2f65f423d34 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Wed, 24 Aug 2022 09:17:20 -0700 Subject: [PATCH 007/216] Add highdicom license to the Third Party Notices (#334) Signed-off-by: mmelqin Signed-off-by: mmelqin Signed-off-by: Simone Bendazzoli --- THIRD_PARTY_NOTICES/highdicom_MIT_LICENSE.txt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 THIRD_PARTY_NOTICES/highdicom_MIT_LICENSE.txt diff --git a/THIRD_PARTY_NOTICES/highdicom_MIT_LICENSE.txt b/THIRD_PARTY_NOTICES/highdicom_MIT_LICENSE.txt new file mode 100644 index 00000000..f446203a --- /dev/null +++ b/THIRD_PARTY_NOTICES/highdicom_MIT_LICENSE.txt @@ -0,0 +1,24 @@ +highdicom is licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php + +A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code. + + +Copyright 2020 MGH Computational Pathology + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file From f6b56a0bf193da3eba50d6374c506f62bdec654f Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Tue, 13 Sep 2022 18:49:58 -0700 Subject: [PATCH 008/216] Improve STL operator so the enclosing app obj can run repetitively (#337) * Improve STL operator so the enclosing app obj can run repetitively with the new sample code Signed-off-by: M Q * Fixing Flake8 complaints Signed-off-by: M Q * Ignore Flake8 B024: abstract base class, but it has no abstract methods Signed-off-by: M Q * Silence mypy complaint on types Signed-off-by: M Q * Quiet another mypy error. Signed-off-by: M Q * MyPy complaint fix Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- examples/apps/ai_unetr_seg_app/__main__.py | 53 ++++++++++++++++++- examples/apps/ai_unetr_seg_app/app.py | 52 +++++++++++++++++- .../operators/stl_conversion_operator.py | 51 +++++++++--------- setup.cfg | 3 +- 4 files changed, 131 insertions(+), 28 deletions(-) diff --git a/examples/apps/ai_unetr_seg_app/__main__.py b/examples/apps/ai_unetr_seg_app/__main__.py index 34ff5448..504a0a74 100644 --- a/examples/apps/ai_unetr_seg_app/__main__.py +++ b/examples/apps/ai_unetr_seg_app/__main__.py @@ -1,4 +1,55 @@ +import logging +import shutil +import traceback +from pathlib import Path +from typing import List + from app import AIUnetrSegApp if __name__ == "__main__": - AIUnetrSegApp(do_run=True) + logging.basicConfig(level=logging.DEBUG) + # This main function is an example to show how a batch of input can be processed. + # It assumes that in the app input folder there are a number of subfolders, each + # containing a discrete input to be processed. Each discrete payload can have + # multiple DICOM instances file, optionally organized in its own folder structure. + # The application object is first created, and on its init the model network is + # loaded as well as pre and post processing transforms. This app object is then + # run multiple times, each time with a single discrete payload. + + app = AIUnetrSegApp(do_run=False) + + # Preserve the application top level input and output folder path, as the path + # in the context may change on each run if the I/O arguments are passed in. + app_input_path = Path(app.context.input_path) + app_output_path = Path(app.context.output_path) + + # Get subfolders in the input path, assume each one contains a discrete payload + input_dirs = [path for path in app_input_path.iterdir() if path.is_dir()] + + # Set the output path for each run under the app's output path, and do run + work_dirs: List[str] = [] # strings resprenting folder path + for idx, dir in enumerate(input_dirs): + try: + output_path = app_output_path / f"{dir.name}_output" + # Note: the work_dir should be mapped to the host drive when used in + # a container for better performance. + work_dir = f".unetr_app_workdir{idx}" + work_dirs.extend(work_dir) + + logging.info(f"Start processing input in: {dir} with results in: {output_path}") + + # Run app with specific input and output path. + # Passing in the input and output do have the side effect of changing + # app context. This side effect will likely be eliminated in later releases. + app.run(input=dir, output=output_path, workdir=work_dir) + + logging.info(f"Completed processing input in: {dir} with results in: {output_path}") + except Exception as ex: + logging.error(f"Failed processing input in {dir}, due to: {ex}\n") + traceback.print_exc() + finally: + # Remove the workdir; alternatively do this later, if storage space is not a concern. + shutil.rmtree(work_dir, ignore_errors=True) + + # Alternative. Explicitly remove the working dirs at the end of main. + # [shutil.rmtree(work_dir, ignore_errors=True) for work_dir in work_dirs] diff --git a/examples/apps/ai_unetr_seg_app/app.py b/examples/apps/ai_unetr_seg_app/app.py index ee471323..cfca9b46 100644 --- a/examples/apps/ai_unetr_seg_app/app.py +++ b/examples/apps/ai_unetr_seg_app/app.py @@ -10,6 +10,7 @@ # limitations under the License. import logging +from typing import List # Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package. from pydicom.sr.codedict import codes @@ -131,6 +132,53 @@ def compose(self): # e.g. # python3 app.py -i input -m model/model.ts # + import shutil + import traceback + from pathlib import Path + logging.basicConfig(level=logging.DEBUG) - app_instance = AIUnetrSegApp() # Optional params' defaults are fine. - app_instance.run() + # This main function is an example to show how a batch of input can be processed. + # It assumes that in the app input folder there are a number of subfolders, each + # containing a discrete input to be processed. Each discrete payload can have + # multiple DICOM instances file, optionally organized in its own folder structure. + # The application object is first created, and on its init the model network is + # loaded as well as pre and post processing transforms. This app object is then + # run multiple times, each time with a single discrete payload. + + app = AIUnetrSegApp(do_run=False) + + # Preserve the application top level input and output folder path, as the path + # in the context may change on each run if the I/O arguments are passed in. + app_input_path = Path(app.context.input_path) + app_output_path = Path(app.context.output_path) + + # Get subfolders in the input path, assume each one contains a discrete payload + input_dirs = [path for path in app_input_path.iterdir() if path.is_dir()] + + # Set the output path for each run under the app's output path, and do run + work_dirs: List[str] = [] # strings resprenting folder path + for idx, dir in enumerate(input_dirs): + try: + output_path = app_output_path / f"{dir.name}_output" + # Note: the work_dir should be mapped to the host drive when used in + # a container for better performance. + work_dir = f".unetr_app_workdir{idx}" + work_dirs.extend(work_dir) + + logging.info(f"Start processing input in: {dir} with results in: {output_path}") + + # Run app with specific input and output path. + # Passing in the input and output do have the side effect of changing + # app context. This side effect will likely be eliminated in later releases. + app.run(input=dir, output=output_path, workdir=work_dir) + + logging.info(f"Completed processing input in: {dir} with results in: {output_path}") + except Exception as ex: + logging.error(f"Failed processing input in {dir}, due to: {ex}\n") + traceback.print_exc() + finally: + # Remove the workdir; alternatively do this later, if storage space is not a concern. + shutil.rmtree(work_dir, ignore_errors=True) + + # Alternative. Explicitly remove the working dirs at the end of main. + # [shutil.rmtree(work_dir, ignore_errors=True) for work_dir in work_dirs] diff --git a/monai/deploy/operators/stl_conversion_operator.py b/monai/deploy/operators/stl_conversion_operator.py index e0204246..71f3ddd7 100644 --- a/monai/deploy/operators/stl_conversion_operator.py +++ b/monai/deploy/operators/stl_conversion_operator.py @@ -13,6 +13,7 @@ import os import shutil import tempfile +from ast import Bytes from pathlib import Path from typing import Dict, Optional @@ -29,19 +30,23 @@ trimesh, _ = optional_import("trimesh") import monai.deploy.core as md -from monai.deploy.core import DataPath, ExecutionContext, Image, InputContext, IOType, Operator, OutputContext +from monai.deploy.core import ExecutionContext, Image, InputContext, IOType, Operator, OutputContext __all__ = ["STLConversionOperator", "STLConverter"] @md.input("image", Image, IOType.IN_MEMORY) -@md.output("stl_output", DataPath, IOType.DISK) +@md.output("stl_output", Bytes, IOType.IN_MEMORY) # Only available when run as non-leaf operator # nibabel is required by the dependent class STLConverter. @md.env( pip_packages=["numpy>=1.21", "nibabel >= 3.2.1", "numpy-stl>=2.12.0", "scikit-image>=0.17.2", "trimesh>=3.8.11"] ) class STLConversionOperator(Operator): - """Converts volumetric image to surface mesh in STL format, file output only.""" + """Converts volumetric image to surface mesh in STL format, file output only. + + Only when used as a non-leaf operator is the output of STL binary stored in memory idenfied by the output label. + If a file path is provided, the STL binary will be saved in the the application's output folder of the current run. + """ def __init__( self, output_file=None, class_id=None, is_smooth=True, keep_largest_connected_component=True, *args, **kwargs @@ -59,7 +64,7 @@ def __init__( self._class_id = class_id self._is_smooth = is_smooth self._keep_largest_connected_component = keep_largest_connected_component - self._output_file = output_file if output_file and len(output_file) > 0 else None + self._output_file = output_file if output_file and len(str(output_file)) > 0 else None self._converter = STLConverter(*args, **kwargs) @@ -67,8 +72,9 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe """Gets the input (image), processes it and sets results in the output. When used in a leaf operator, this function cannot set its output as in-memory object due to - current limitation, and only file output, for DataPath IOType_DISK, will be saved in the - op_output path, which is mapped to the application's output path by the execution engine. + current limitation. + If a file path is provided, the STL binary will be saved in the the application's output + folder of the current run. Args: op_input (InputContext): An input context for the operator. @@ -80,20 +86,21 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe if not input_image: raise ValueError("Input is None.") - op_output_config = op_output.get() - if self._output_file and len(self._output_file) > 0: - # The file output folder is either the op_output or app's output depending on output types. - output_folder = ( - op_output_config.path if isinstance(op_output_config, DataPath) else context.output.get().path - ) - self._output_file = output_folder / self._output_file - self._output_file.parent.mkdir(exist_ok=True) - self._logger.info(f"Output will be saved in file {self._output_file}.") + # Use the app's current run output folder as parent to the STL output path. + if self._output_file and len(str(self._output_file)) > 0: + _output_file = context.output.get().path / self._output_file + _output_file.parent.mkdir(parents=True, exist_ok=True) + self._logger.info(f"Output will be saved in file {_output_file}.") - stl_bytes = self._convert(input_image, self._output_file) + stl_bytes = self._convert(input_image, _output_file) - if not isinstance(op_output_config, DataPath): - op_output.set(stl_bytes) + try: + # TODO: Need a way to find if the operator is run as leaf node in order to + # avoid setting in_memory object. + if self.op_info.get_storage_type("output", "stl_output") == IOType.IN_MEMORY: + op_output.set(stl_bytes) + except Exception as ex: + self._logger.warn(f"In_memory output cannot be used when run as non-leaf operator. {ex}") def _convert(self, image: Image, output_file: Optional[Path] = None): """ @@ -152,12 +159,8 @@ def convert( if not image or not isinstance(image, Image): raise ValueError("image is not a Image object.") - if not isinstance(output_file, Path): - raise ValueError("output_file is not a Path") - - # Ensure output file's folder exists - if output_file.parent: - output_file.parent.mkdir(exist_ok=True) + if isinstance(output_file, Path): + output_file.parent.mkdir(parents=True, exist_ok=True) s_image = self.SpatialImage(image) nda = s_image.image_array diff --git a/setup.cfg b/setup.cfg index 361fd924..aec9f6c0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -42,7 +42,8 @@ max_line_length = 120 ignore = E203,E305,E402,E501,E721,E741,F821,F841,F999,W503,W504,C408,E302,W291,E303, # N812 lowercase 'torch.nn.functional' imported as non lowercase 'F' - N812 + N812, + B024 #abstract base class, but it has no abstract methods per_file_ignores = __init__.py: F401 # Allow using camel case for variable/argument names for the sake of readability. From d443c29d07e9ee67d3edf43376b7d6aed586be7e Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Tue, 13 Sep 2022 18:53:04 -0700 Subject: [PATCH 009/216] Added support of matching instance level tags, and update liver seg (#345) * Added support of matching instance level tags, and update liver seg Signed-off-by: M Q * Fix Flake8 complaint Signed-off-by: M Q * Still enable publish intermediate nii files. Signed-off-by: M Q * Corrections per review comments Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- examples/apps/ai_livertumor_seg_app/app.py | 23 ++++++++++++++++++- .../livertumor_seg_operator.py | 2 +- .../dicom_series_selector_operator.py | 19 +++++++++++---- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/examples/apps/ai_livertumor_seg_app/app.py b/examples/apps/ai_livertumor_seg_app/app.py index acca14d2..662c5fbb 100644 --- a/examples/apps/ai_livertumor_seg_app/app.py +++ b/examples/apps/ai_livertumor_seg_app/app.py @@ -23,6 +23,27 @@ from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator from monai.deploy.operators.publisher_operator import PublisherOperator +# This is a sample series selection rule in JSON, simply selecting CT series. +# If the study has more than 1 CT series, then all of them will be selected. +# Please see more detail in DICOMSeriesSelectorOperator. +# For list of string values, e.g. "ImageType": ["PRIMARY", "ORIGINAL"], it is a match if all elements +# are all in the multi-value attribute of the DICOM series. + +Sample_Rules_Text = """ +{ + "selections": [ + { + "name": "CT Series", + "conditions": { + "Modality": "(?i)CT", + "ImageType": ["PRIMARY", "ORIGINAL"], + "PhotometricInterpretation": "MONOCHROME2" + } + } + ] +} +""" + @resource(cpu=1, gpu=1, memory="7Gi") # pip_packages can be a string that is a path(str) to requirements.txt file or a list of packages. @@ -46,7 +67,7 @@ def compose(self): self._logger.debug(f"Begin {self.compose.__name__}") # Creates the custom operator(s) as well as SDK built-in operator(s). study_loader_op = DICOMDataLoaderOperator() - series_selector_op = DICOMSeriesSelectorOperator() + series_selector_op = DICOMSeriesSelectorOperator(rules=Sample_Rules_Text) series_to_vol_op = DICOMSeriesToVolumeOperator() # Model specific inference operator, supporting MONAI transforms. liver_tumor_seg_op = LiverTumorSegOperator() diff --git a/examples/apps/ai_livertumor_seg_app/livertumor_seg_operator.py b/examples/apps/ai_livertumor_seg_app/livertumor_seg_operator.py index d2fccf67..6b5e41c8 100644 --- a/examples/apps/ai_livertumor_seg_app/livertumor_seg_operator.py +++ b/examples/apps/ai_livertumor_seg_app/livertumor_seg_operator.py @@ -34,7 +34,7 @@ @md.input("image", Image, IOType.IN_MEMORY) @md.output("seg_image", Image, IOType.IN_MEMORY) @md.output("saved_images_folder", DataPath, IOType.DISK) -@md.env(pip_packages=["monai>=0.8.1", "torch>=1.5", "numpy>=1.21", "nibabel"]) +@md.env(pip_packages=["monai==0.9.0", "torch>=1.5", "numpy>=1.21", "nibabel"]) class LiverTumorSegOperator(Operator): """Performs liver and tumor segmentation using a DL model with an image converted from a DICOM CT series. diff --git a/monai/deploy/operators/dicom_series_selector_operator.py b/monai/deploy/operators/dicom_series_selector_operator.py index 54efa671..d088e48a 100644 --- a/monai/deploy/operators/dicom_series_selector_operator.py +++ b/monai/deploy/operators/dicom_series_selector_operator.py @@ -219,7 +219,17 @@ def _select_series(self, attributes: dict, study: DICOMStudy, all_matched=False) continue # Try getting the attribute value from Study and current Series prop dict attr_value = series_attr.get(key, None) - logging.info(f" Series attribute value: {attr_value}") + logging.info(f" Series attribute {key} value: {attr_value}") + + # If not found, try the best at the native instance level for string VR + # This is mainly for attributes like ImageType + if not attr_value: + try: + attr_value = [series.get_sop_instances()[0].get_native_sop_instance()[key].repval] + series_attr.update({key: attr_value}) + except Exception: + logging.info(f" Attribute {key} not at instance level either.") + if not attr_value: matched = False elif isinstance(attr_value, numbers.Number): @@ -233,12 +243,13 @@ def _select_series(self, attributes: dict, study: DICOMStudy, all_matched=False) if re.search(value_to_match, attr_value, re.IGNORECASE): matched = True elif isinstance(attr_value, list): - meta_data_set = {str(element).lower() for element in attr_value} + # Assume multi value string attributes + meta_data_list = str(attr_value).lower() if isinstance(value_to_match, list): value_set = {str(element).lower() for element in value_to_match} - matched = all(val in meta_data_set for val in value_set) + matched = all(val in meta_data_list for val in value_set) elif isinstance(value_to_match, (str, numbers.Number)): - matched = str(value_to_match).lower() in meta_data_set + matched = str(value_to_match).lower() in meta_data_list else: raise NotImplementedError(f"Not support for matching on this type: {type(value_to_match)}") From 7053478b916a3bbe4a53ebe05a4dc1068c7d7d0a Mon Sep 17 00:00:00 2001 From: Alvin Ihsani Date: Wed, 21 Sep 2022 07:22:13 -0400 Subject: [PATCH 010/216] Nuance PIN MONAI Integration Example App (#328) Signed-off-by: Simone Bendazzoli --- .gitignore | 3 + integrations/nuance_pin/.dockerignore | 4 + integrations/nuance_pin/Dockerfile | 61 +++++ integrations/nuance_pin/README.md | 171 ++++++++++++++ integrations/nuance_pin/app/__init__.py | 10 + integrations/nuance_pin/app/inference.py | 219 ++++++++++++++++++ integrations/nuance_pin/app/lung_nodule.py | 90 +++++++ .../nuance_pin/app/post_inference_ops.py | 200 ++++++++++++++++ integrations/nuance_pin/app_wrapper.py | 123 ++++++++++ integrations/nuance_pin/docker-compose.yml | 23 ++ integrations/nuance_pin/model/.gitkeep | 0 integrations/nuance_pin/requirements.txt | 4 + 12 files changed, 908 insertions(+) create mode 100644 integrations/nuance_pin/.dockerignore create mode 100644 integrations/nuance_pin/Dockerfile create mode 100644 integrations/nuance_pin/README.md create mode 100644 integrations/nuance_pin/app/__init__.py create mode 100644 integrations/nuance_pin/app/inference.py create mode 100644 integrations/nuance_pin/app/lung_nodule.py create mode 100644 integrations/nuance_pin/app/post_inference_ops.py create mode 100644 integrations/nuance_pin/app_wrapper.py create mode 100644 integrations/nuance_pin/docker-compose.yml create mode 100644 integrations/nuance_pin/model/.gitkeep create mode 100644 integrations/nuance_pin/requirements.txt diff --git a/.gitignore b/.gitignore index b73a3461..18334cbb 100644 --- a/.gitignore +++ b/.gitignore @@ -137,3 +137,6 @@ output # Sphinx temporary files docs/notebooks _autosummary + +# model files +*.ts diff --git a/integrations/nuance_pin/.dockerignore b/integrations/nuance_pin/.dockerignore new file mode 100644 index 00000000..445d2246 --- /dev/null +++ b/integrations/nuance_pin/.dockerignore @@ -0,0 +1,4 @@ +Dockerfile* +docker-compose.yml +README.md +README* diff --git a/integrations/nuance_pin/Dockerfile b/integrations/nuance_pin/Dockerfile new file mode 100644 index 00000000..fe22c601 --- /dev/null +++ b/integrations/nuance_pin/Dockerfile @@ -0,0 +1,61 @@ +FROM nvcr.io/nvidia/pytorch:21.07-py3 AS application + +ARG PARTNER_NAME +ARG SERVICE_NAME +ARG VERSION +ARG MONAI_APP_MODULE +ARG MODEL_PATH +ARG EXTRA_PYTHON_PACKAGES + +ENV TZ=Etc/UTC +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# python3-gdcm or python-gdcm is required for decompression +RUN apt-get -y update && \ + apt-get -y install --no-install-recommends python3-distutils python3-gdcm && \ + # apt-get -y install python3.7 && \ + apt-get autoclean && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +ENV DEBUG=YES +ENV KEEP_FILES=YES + +# make sure all messages reach the console +ENV PYTHONUNBUFFERED=1 + +# copy MONAI app files +COPY . /app/. +WORKDIR /app + +# copy model file to model folder +RUN wget -q https://github.com/Project-MONAI/model-zoo/releases/download/hosting_storage_v1/lung_nodule_ct_detection_v0.2.0.zip && \ + unzip lung_nodule_ct_detection_v0.2.0.zip -d /tmp/ && \ + cp /tmp/lung_nodule_ct_detection/models/model.ts model/. && \ + rm -rf /tmp/lung_nodule_ct_detection && \ + rm lung_nodule_ct_detection_v0.2.0.zip + +# non-root aiserviceuser in group aiserviceuser with UserID and GroupID as 20225 +RUN groupadd -g 20225 -r aiserviceuser && useradd -u 20225 -r -g aiserviceuser aiserviceuser && chown -R aiserviceuser:aiserviceuser /app && \ + chown -R aiserviceuser:aiserviceuser /var +USER aiserviceuser:aiserviceuser + +ENV VIRTUAL_ENV=.venv +RUN python3 -m venv $VIRTUAL_ENV +ENV PATH="$VIRTUAL_ENV/bin:$PATH" + +RUN python -m pip install --upgrade pip && \ + python -m pip install --upgrade --no-cache-dir ${EXTRA_PYTHON_PACKAGES} -r requirements.txt && \ + python -m pip install --upgrade --no-cache-dir lib/ai_service-*-py3-none-any.whl && \ + pip install --upgrade numpy && \ + rm -rf lib && \ + rm requirements.txt + +ENV AI_PARTNER_NAME ${PARTNER_NAME} +ENV AI_SVC_NAME ${SERVICE_NAME} +ENV AI_SVC_VERSION ${VERSION} +ENV AI_MODEL_PATH ${MODEL_PATH} +ENV MONAI_APP_CLASSPATH ${MONAI_APP_MODULE} + +ENV PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python +CMD ["python", "app_wrapper.py"] diff --git a/integrations/nuance_pin/README.md b/integrations/nuance_pin/README.md new file mode 100644 index 00000000..20442e23 --- /dev/null +++ b/integrations/nuance_pin/README.md @@ -0,0 +1,171 @@ +# Running MONAI Apps in Nuance PIN + +MONAI Deploy Apps can be deployed as Nuance PIN applications with minimal effort and near-zero coding. + +This folder includes an example MONAI app, AI-based Lung Nodule Segmentation, which is wrapped by the Nuance PIN API. +The Nuance PIN wrapper code allows MONAI app developer to deploy their existing MONAI apps in Nuance +with minimal code changes. + +## Prerequisites + +Before setting up and running the example MONAI spleen segmentation app to run as a Nuance PIN App, the user will need to install/download the following libraries. +It is optional to use a GPU for the example app, however, it is recommended that a GPU is used for inference as it is very computationally intensive. + +Minimum software requirements: +- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) +- [NVIDIA Docker](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#pre-requisites) +- [Docker Compose](https://docs.docker.com/compose/install/) +- [Nuance PIN SDK](https://www.nuance.com/healthcare/diagnostics-solutions/precision-imaging-network.html) + +> **Note**: Nuance PIN SDK does not require host installation to make the example app work. We will explore options in the [Quickstart](#quickstart) section + +## Quickstart + +If you are reading this guide on the MONAI Github repo, you will need to clone the MONAI repo and change the directory to the Nuance PIN integration path. +```bash +git clone https://github.com/Project-MONAI/monai-deploy-app-sdk.git +cd integrations/nuance_pin +``` + +In this folder you will see the following directory structure +```bash +nuance_pin + ├── app # directory with MONAI app code + ├── lib # directory where we will place Nuance PIN wheels + ├── model # directory where we will place the model used by our MONAI app + ├── app_wrapper.py # Nuance PIN wrapper code + ├── docker-compose.yml # docker compose runtime script + ├── Dockerfile # container image build script + ├── README.md # this README + └── requirements.txt # libraries required for the example integration to work +``` + +When building the base container image the [Lung Nodule Detection model](https://github.com/Project-MONAI/model-zoo/releases/download/hosting_storage_v1/lung_nodule_ct_detection_v0.2.0.zip), available from the [MONAI model zoo](https://github.com/Project-MONAI/model-zoo/releases/tag/hosting_storage_v1) will automatically download in the `model` folder. Should the developer choose a different location of their own within the `nuance_pin` subtree for their model, then an update to `MODEL_PATH` variable in `docker-compose.yml` is required. + +### Downloading Data for Spleen Segmentation + +To download the test data you may follow the instructions in the [Lund Nodule Detection Documentation](https://github.com/Project-MONAI/model-zoo/tree/dev/models/lung_nodule_ct_detection#data). + +### Download Nuance PIN SDK + +Place the Nuance PIN `ai_service` wheel in the `nuance_pin/lib` folder. This can be obtained in the link provided in step 3 of of the [prerequisites](#prerequisites). + +### Running the Example App in the Container + +Now we are ready to build and start the container that runs our MONAI app as a Nuance service. +```bash +docker-compose up --build +``` + +If the build is successful the a service will start on `localhost:5000`. We can verify the service is running +by issuing a "live" request such as +```bash +curl -v http://localhost:5000/aiservice/2/live && echo "" +``` +The issued command should return the developer, app, and version of the deployed example app. + +Now we can run the example app with the example spleen data as the payload using Nuance PIN AI Service Test +(`AiSvcTest`) utility obtained with the Nuance PIN SDK. +```bash +# create a virtual environment and activate it +python3 -m venv /opt/venv +. /opt/venv/bin/activate + +# install AiSvcTest +pip install AiSvcTest--py3-none-any.whl + +# create an output directory for the inference results +mkdir -p ~/Downloads/dcm/out + +# run AiSvcTest with spleen dicom payload +python -m AiSvcTest -i ~/Downloads/dcm -o ~/Downloads/dcm/out -s http://localhost:5000 -V 2 -k +``` + +### Running the Example App on the Host + +Alternatively the user may choose to run the Nuance PIn service directly on the host. For this we must install the following: +- Nuance PIN AI Service libraries +- Libraries in the `requirements.txt` + +```bash +# create a virtual environment and activate it +python3 -m venv /opt/venv +. /opt/venv/bin/activate + +# install Nuance Ai Service +pip install ai_service--py3-none-any.whl + +# install requirements +pip install -r requirements.txt + +# download the lung nodule detection model +wget -q https://github.com/Project-MONAI/model-zoo/releases/download/hosting_storage_v1/lung_nodule_ct_detection_v0.2.0.zip && \ +unzip lung_nodule_ct_detection_v0.2.0.zip -d /tmp/ && \ +cp /tmp/lung_nodule_ct_detection/models/model.ts model/. && \ +rm -rf /tmp/lung_nodule_ct_detection && \ +rm lung_nodule_ct_detection_v0.2.0.zip + +# run the service +export AI_PARTNER_NAME=NVIDIA +export AI_SVC_NAME=ai_spleen_seg_app +export AI_SVC_VERSION=0.1.0 +export AI_MODEL_PATH=model/model.ts +export MONAI_APP_CLASSPATH=app.spleen_seg.AISpleenSegApp +export PYTHONPATH=$PYTHONPATH:. +python app_wrapper.py +``` + +Now we can issue a "live" request to check whether the service is running +```bash +curl -v http://localhost:5000/aiservice/2/live && echo "" +``` +As we did in the last section, we can now run the example app with the example spleen data as the payload using Nuance PIN AI Service Test +(`AiSvcTest`) utility obtained with the Nuance PIN SDK. +```bash +. /opt/venv/bin/activate + +# install AiSvcTest +pip install AiSvcTest--py3-none-any.whl + +# create an output directory for the inference results +mkdir -p ~/Downloads/dcm/out + +# run AiSvcTest with spleen dicom payload +python -m AiSvcTest -i ~/Downloads/dcm -o ~/Downloads/dcm/out -s http://localhost:5000 -V 2 -k +``` + +### Bring Your Own MONAI App + +This example integration may be modified to fit any existing MONAI app, however, there may be caveats. + +Nuance PIN requires all artifacts present in the output folder to be also added into the `resultManifest.json` output file +to consider the run successful. To see what this means in practical terms, check the `resultManifest.json` output from the +example app we ran the in previous sections. You will notice an entry in `resultManifest.json` that corresponds to the DICOM +SEG output generated by the underlying MONAI app +```json + "study": { + "uid": "1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213", + "artifacts": [], + "series": [ + { + "uid": "1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213", + "artifacts": [ + { + "documentType": "application/dicom", + "groupCode": "default", + "name": "dicom_seg-DICOMSEG.dcm", + "trackingUids": [] + } + ] + } + ] + }, +``` +This entry is generated by `app_wrapper.py`, which takes care of adding any DICOM present in the output folder in the `resultManifest.json` +to ensure that existing MONAI apps complete successfully when deployed in Nuance. In general, however, the developer may need to tailor some +of the code in `app_wrapper.py` to provide more insight to Nuance's network, such as adding findings, conclusions, etc. and generating more insight +using SNOMED codes. All of this is handled within the Nuance PIN SDK libraries - for more information please consult Nuance PIN [documentation](https://www.nuance.com/healthcare/diagnostics-solutions/precision-imaging-network.html). + +In simpler cases, the developer will need to place their code and model under `nuance_pin`. Placing the model under `model` is optional as the model may be placed +anywhere where the code under `app` can access it, however, considerations must be taken when needing to deploy the model inside a container image. The MONAI app code +is placed in `app` and structured as a small Python project. diff --git a/integrations/nuance_pin/app/__init__.py b/integrations/nuance_pin/app/__init__.py new file mode 100644 index 00000000..5174df60 --- /dev/null +++ b/integrations/nuance_pin/app/__init__.py @@ -0,0 +1,10 @@ +# Copyright 2021-2022 MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/integrations/nuance_pin/app/inference.py b/integrations/nuance_pin/app/inference.py new file mode 100644 index 00000000..d725c5e0 --- /dev/null +++ b/integrations/nuance_pin/app/inference.py @@ -0,0 +1,219 @@ +# Copyright 2021 MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +from typing import Dict, List, Optional + +import torch + +import monai.deploy.core as md +from monai.apps.detection.networks.retinanet_detector import RetinaNetDetector +from monai.apps.detection.transforms.dictionary import ( + AffineBoxToImageCoordinated, + AffineBoxToWorldCoordinated, + ClipBoxToImaged, +) +from monai.apps.detection.utils.anchor_utils import AnchorGeneratorWithAnchorShape +from monai.deploy.core import ExecutionContext, Image, InputContext, IOType, Operator, OutputContext +from monai.deploy.core.domain import Domain +from monai.deploy.operators.monai_seg_inference_operator import InMemImageReader +from monai.deploy.utils.importutil import optional_import +from monai.transforms import ( + AddChanneld, + Compose, + CopyItemsd, + EnsureChannelFirstd, + EnsureTyped, + LoadImaged, + Orientationd, + ScaleIntensityRanged, + ToDeviced, + ToTensord, +) + +sliding_window_inference, _ = optional_import("monai.inferers", name="sliding_window_inference") + + +class DetectionResult(Domain): + def __init__(self, box_data, label_data, score_data, metadata: Optional[Dict] = None): + super().__init__(metadata) + self._box_data = box_data + self._label_data = label_data + self._score_data = score_data + + @property + def realworld_box_data(self): + return self._box_data + + @property + def box_data(self): + return self._box_data + + @property + def label_data(self): + return self._label_data + + @property + def score_data(self): + return self._score_data + + +class DetectionResultList(Domain): + def __init__(self, detection_list: List[DetectionResult], metadata: Optional[Dict] = None): + super().__init__(metadata) + self._detection_list = detection_list + + @property + def detection_list(self): + return self._detection_list + + +@md.input("image", Image, IOType.IN_MEMORY) +@md.output("detections", DetectionResultList, IOType.IN_MEMORY) +@md.env(pip_packages=["monai>=0.8.1", "torch>=1.5", "numpy>=1.21", "nibabel"]) +class LungNoduleInferenceOperator(Operator): + def __init__(self, model_path: str = "model/model.ts"): + + self.logger = logging.getLogger("{}.{}".format(__name__, type(self).__name__)) + super().__init__() + self._input_dataset_key = "image" + self._input_dataset_orig_key = "image_orig" + self._pred_box_regression = "box_regression" + self._pred_label = "box_label" + self._pred_score = "box_score" + self._pred_labels = "labels" + + # preload the model + self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + self.logger.info(f"Loading TorchScript model from: {model_path}") + self.model = torch.jit.load(model_path, map_location=self.device) + + self.logger.info("Loading model into RetinaNetDetector") + self.returned_layers = [1, 2] + self.base_achor_shapes = [[6, 8, 4], [8, 6, 5], [10, 10, 6]] + anchor_generator = AnchorGeneratorWithAnchorShape( + feature_map_scales=[1, 2, 4], + base_anchor_shapes=self.base_achor_shapes, + ) + self.detector = RetinaNetDetector( + network=self.model, + anchor_generator=anchor_generator, + ) + self.detector.set_box_selector_parameters( + score_thresh=0.1, + topk_candidates_per_level=1000, + nms_thresh=0.22, + detections_per_img=100, + ) + self.detector.set_sliding_window_inferer( + roi_size=[240, 240, 160], + overlap=0.5, + sw_batch_size=1, + mode="gaussian", + device="cpu", + ) + self.detector.eval() + + def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): + + input_image = op_input.get("image") + if not input_image: + raise ValueError("Input image not found.") + + image_reader = InMemImageReader(input_image) + + with torch.no_grad(): + processed_image = self.pre_process(image_reader)( + ( + { + self._input_dataset_key: input_image.metadata().get("SeriesInstanceUID", "Img_in_context"), + }, + image_reader, + ) + ) + + inference_outputs = self.detector(processed_image[self._input_dataset_key], use_inferer=True) + + pred_boxes = [] + processed_image[self._input_dataset_key] = torch.squeeze(processed_image[self._input_dataset_key], dim=0) + for inference_output in inference_outputs: + processed_image[self._pred_box_regression] = inference_output[self.detector.target_box_key] + processed_image[self._pred_labels] = inference_output[self.detector.target_label_key] + processed_image[self._pred_score] = inference_output[self.detector.pred_score_key] + + processed_image = self.post_process()(processed_image) + pred_boxes.append( + DetectionResult( + box_data=processed_image[self._pred_box_regression].numpy(), + label_data=processed_image[self._pred_labels].numpy(), + score_data=processed_image[self._pred_score].numpy(), + ) + ) + + op_output.set(DetectionResultList(pred_boxes), "detections") + + def pre_process(self, img_reader) -> Compose: + """Composes transforms for preprocessing input before predicting on a model.""" + + image_key = self._input_dataset_key + orig_image_key = self._input_dataset_orig_key + return Compose( + [ + LoadImaged( + keys=image_key, + reader=img_reader, + affine_lps_to_ras=True, + ), + CopyItemsd( + keys=[image_key, f"{image_key}_meta_dict"], + names=[orig_image_key, f"{orig_image_key}_meta_dict"], + ), + ToTensord( + keys=image_key, + ), + ToDeviced(keys=image_key, device="cuda"), + EnsureChannelFirstd(keys=image_key), + Orientationd( + keys=image_key, + axcodes="RAS", + ), + AddChanneld(keys=image_key), + ScaleIntensityRanged(image_key, a_min=-1024.0, a_max=300.0, b_min=0.0, b_max=1.0, clip=True), + EnsureTyped(image_key), + ], + unpack_items=True, + map_items=False, + ) + + def post_process(self) -> Compose: + """Composes transforms for postprocessing the prediction results.""" + + return Compose( + [ + ClipBoxToImaged( + box_keys=self._pred_box_regression, + box_ref_image_keys=self._input_dataset_key, + label_keys=[self._pred_labels, self._pred_score], + remove_empty=True, + ), + AffineBoxToWorldCoordinated( + box_keys=self._pred_box_regression, + box_ref_image_keys=self._input_dataset_key, + affine_lps_to_ras=True, + ), + AffineBoxToImageCoordinated( + box_keys=[self._pred_box_regression], + box_ref_image_keys=self._input_dataset_orig_key, + affine_lps_to_ras=True, + ), + ] + ) diff --git a/integrations/nuance_pin/app/lung_nodule.py b/integrations/nuance_pin/app/lung_nodule.py new file mode 100644 index 00000000..67f36ef5 --- /dev/null +++ b/integrations/nuance_pin/app/lung_nodule.py @@ -0,0 +1,90 @@ +# Copyright 2021-2022 MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +from typing import Callable + +from app.inference import LungNoduleInferenceOperator +from app.post_inference_ops import CreatePINDiagnosticsReportOp, GenerateGSPSOp + +from monai.deploy.core import Application, resource +from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator +from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator +from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator + + +@resource(cpu=1, gpu=1, memory="7Gi") +# The monai pkg is not required by this class, instead by the included operators. +class LungNoduleDetectionApp(Application): + def __init__(self, upload_document: Callable, upload_gsps: Callable, *args, **kwargs): + """Creates an application instance.""" + self._logger = logging.getLogger("{}.{}".format(__name__, type(self).__name__)) + self.upload_document = upload_document + self.upload_gsps = upload_gsps + super().__init__(*args, **kwargs) + + def run(self, *args, **kwargs): + # This method calls the base class to run. Can be omitted if simply calling through. + self._logger.info(f"Begin {self.run.__name__}") + super().run(*args, **kwargs) + self._logger.info(f"End {self.run.__name__}") + + def compose(self): + """Creates the app specific operators and chain them up in the processing DAG.""" + + logging.info(f"Begin {self.compose.__name__}") + + dicom_selection_rules = """ + { + "selections": [ + { + "name": "CT Series", + "conditions": { + "Modality": "CT" + } + } + ] + } + """ + + # Create the custom operator(s) as well as SDK built-in operator(s). + study_loader_op = DICOMDataLoaderOperator() + series_selector_op = DICOMSeriesSelectorOperator(dicom_selection_rules) + series_to_vol_op = DICOMSeriesToVolumeOperator() + detection_op = LungNoduleInferenceOperator() + gsps_op = GenerateGSPSOp(upload_gsps_fn=self.upload_gsps) + pin_report_op = CreatePINDiagnosticsReportOp(upload_doc_fn=self.upload_document) + + self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) + self.add_flow( + series_selector_op, series_to_vol_op, {"study_selected_series_list": "study_selected_series_list"} + ) + self.add_flow(series_to_vol_op, detection_op, {"image": "image"}) + + self.add_flow(detection_op, pin_report_op, {"detections": "detection_predictions"}) + self.add_flow(series_selector_op, pin_report_op, {"study_selected_series_list": "original_dicom"}) + + self.add_flow(detection_op, gsps_op, {"detections": "detection_predictions"}) + self.add_flow(series_selector_op, gsps_op, {"study_selected_series_list": "original_dicom"}) + + logging.info(f"End {self.compose.__name__}") + + +if __name__ == "__main__": + # Creates the app and test it standalone. When running is this mode, please note the following: + # -m , for model file path + # -i , for input DICOM CT series folder + # -o , for the output folder, default $PWD/output + # e.g. + # monai-deploy exec app.py -i input -m model/model.ts + # + logging.basicConfig(level=logging.DEBUG) + app_instance = LungNoduleDetectionApp(lambda x: x, lambda x: x, do_run=True) diff --git a/integrations/nuance_pin/app/post_inference_ops.py b/integrations/nuance_pin/app/post_inference_ops.py new file mode 100644 index 00000000..7c00698b --- /dev/null +++ b/integrations/nuance_pin/app/post_inference_ops.py @@ -0,0 +1,200 @@ +# Copyright 2021 MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +import os +from random import randint +from typing import Callable, List + +import diagnostic_report as dr +import highdicom as hd +import numpy as np +from ai_service.utility import JSON_MIME_TYPE +from app.inference import DetectionResult, DetectionResultList + +import monai.deploy.core as md +from monai.deploy.core import DataPath, ExecutionContext, InputContext, IOType, Operator, OutputContext +from monai.deploy.core.domain.dicom_series_selection import StudySelectedSeries + + +@md.input("original_dicom", List[StudySelectedSeries], IOType.IN_MEMORY) +@md.input("detection_predictions", DetectionResultList, IOType.IN_MEMORY) +@md.output("gsps_files", DataPath, IOType.DISK) +class GenerateGSPSOp(Operator): + def __init__(self, upload_gsps_fn: Callable, *args, **kwargs): + super().__init__(*args, **kwargs) + self.logger = logging.getLogger("{}.{}".format(__name__, type(self).__name__)) + self.upload_gsps = upload_gsps_fn + + def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): + + selected_study = op_input.get("original_dicom")[0] # assuming a single study + selected_series = selected_study.selected_series[0] # assuming a single series + detection_result: DetectionResult = op_input.get("detection_predictions").detection_list[0] + output_path = op_output.get("gsps_files").path + + slice_coords = [-inst.first_pixel_on_slice_normal[2] for inst in selected_series.series.get_sop_instances()] + + series_uid = hd.UID() + series_number = randint(1, 100000) + + for inst_num, (box_data, box_score) in enumerate(zip(detection_result.box_data, detection_result.score_data)): + + polyline = hd.pr.GraphicObject( + graphic_type=hd.pr.GraphicTypeValues.POLYLINE, + graphic_data=np.array( + [ + [box_data[0], box_data[1]], + [box_data[3], box_data[1]], + [box_data[3], box_data[4]], + [box_data[0], box_data[4]], + [box_data[0], box_data[1]], + ] + ), # coordinates of polyline vertices + units=hd.pr.AnnotationUnitsValues.PIXEL, # units for graphic data + tracking_id="lung_nodule_MONAI", # site-specific ID + tracking_uid=hd.UID(), # highdicom will generate a unique ID + ) + + self.logger.info(f"Box: {[box_data[0], box_data[1], box_data[3], box_data[4]]}") + + text = hd.pr.TextObject( + text_value=f"{box_score:.2f}", + bounding_box=(box_data[0], box_data[1], box_data[3], box_data[4]), # left, top, right, bottom + units=hd.pr.AnnotationUnitsValues.PIXEL, # units for bounding box + tracking_id="LungNoduleMONAI", # site-specific ID + tracking_uid=hd.UID(), # highdicom will generate a unique ID + ) + + layer = hd.pr.GraphicLayer( + layer_name="LUNG_NODULE", + order=1, + description="Lung Nodule Detection", + ) + + affected_slice_idx = [ + idx + for idx, slice_coord in enumerate(slice_coords) + if slice_coord >= box_data[2] and slice_coord <= box_data[5] + ] + ref_images = [ + selected_series.series.get_sop_instances()[idx].get_native_sop_instance() for idx in affected_slice_idx + ] + self.logger.info(f"Slice: {[box_data[2], box_data[5]]}, Instances: {affected_slice_idx}") + + if not ref_images: + self.logger.error("Finding does not correspond to any series SOP instance") + continue + + # A GraphicAnnotation may contain multiple text and/or graphic objects + # and is rendered over all referenced images + annotation = hd.pr.GraphicAnnotation( + referenced_images=ref_images, + graphic_layer=layer, + text_objects=[text], + graphic_objects=[polyline], + ) + + # Assemble the components into a GSPS object + gsps = hd.pr.GrayscaleSoftcopyPresentationState( + referenced_images=ref_images, + series_instance_uid=series_uid, + series_number=series_number, + sop_instance_uid=hd.UID(), + instance_number=inst_num + 1, + manufacturer="MONAI", + manufacturer_model_name="lung_nodule_ct_detection", + software_versions="v0.2.0", + device_serial_number="", + content_label="ANNOTATIONS", + graphic_layers=[layer], + graphic_annotations=[annotation], + institution_name="MONAI", + institutional_department_name="Deploy", + ) + + gsps.save_as(os.path.join(output_path, f"gsps-{inst_num:04d}.dcm")) + + self.upload_gsps( + file=os.path.join(output_path, f"gsps-{inst_num:04d}.dcm"), + document_detail="MONAI Lung Nodule Detection v0.2.0", + series_uid=series_uid, + ) + + +@md.input("original_dicom", List[StudySelectedSeries], IOType.IN_MEMORY) +@md.input("detection_predictions", DetectionResultList, IOType.IN_MEMORY) +@md.output("pin_report", DataPath, IOType.DISK) +class CreatePINDiagnosticsReportOp(Operator): + def __init__(self, upload_doc_fn: Callable, *args, **kwargs): + super().__init__(*args, **kwargs) + self.logger = logging.getLogger("{}.{}".format(__name__, type(self).__name__)) + self.upload_doc = upload_doc_fn + + def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): + + selected_study = op_input.get("original_dicom")[0] # assuming a single study + selected_series = selected_study.selected_series[0] # assuming a single series + detection_result: DetectionResult = op_input.get("detection_predictions").detection_list[0] + output_path = op_output.get("pin_report").path + + present_str = "not" if detection_result.box_data.shape[0] == 0 else "" + + report = dr.DiagnosticReport( + divtext=""" +
+

+ AI Lung Nodule Detection Report +

+
+ """, + conclusion=f"Lung nodules are {present_str} present.", + ) + report.add_device("monai_deploy", "MONAI", "MONAI Model Zoo - Lung Nodule Detection", "v0.2.0") + report.set_ai_technique("MONAI Model Zoo - Lung Nodule Detector v0.2.0") + report.set_study( + dcm=selected_series.series.get_sop_instances()[0].get_native_sop_instance(), + procedure_code="RPID16", + procedure_display="CT Chest wo", + procedure_text="CT Chest wo IV Contrast", + ) + + slice_coords = [-inst.first_pixel_on_slice_normal[2] for inst in selected_series.series.get_sop_instances()] + + for box_data, box_score in zip(detection_result.box_data, detection_result.score_data): + + affected_slice_idx = [ + idx + for idx, slice_coord in enumerate(slice_coords) + if slice_coord >= box_data[2] and slice_coord <= box_data[5] + ] + ref_images = [ + selected_series.series.get_sop_instances()[idx].get_native_sop_instance() for idx in affected_slice_idx + ] + self.logger.info(f"Slice: {[box_data[2], box_data[5]]}, Instances: {affected_slice_idx}") + + for dcm_img in ref_images: + report.add_observation( + derived_from=report.study, + observation_code="RID50149", + observation_text="Pulmonary nodule", + note=f"Lung nodule present with probability {box_score:.2f}", + dcm=dcm_img, + observation_system="http://nuancepowerscribe.com/saf", + ) + + report.write_to_file(os.path.join(output_path, "diagnostic_report.json")) + + self.upload_doc( + file=os.path.join(output_path, "diagnostic_report.json"), + content_type=JSON_MIME_TYPE, + series_uid=selected_series.series.SeriesInstanceUID, + ) diff --git a/integrations/nuance_pin/app_wrapper.py b/integrations/nuance_pin/app_wrapper.py new file mode 100644 index 00000000..3456f846 --- /dev/null +++ b/integrations/nuance_pin/app_wrapper.py @@ -0,0 +1,123 @@ +""" +Copyright (c) 2021 Nuance Communications, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +This module exists to isolate logging configuration in a separate name space +This allows these values to be updated completely independent of any other +values in this package + +This is an example AI Service. + +It meets all of the necessary requirements, but performs trivial actions. +""" + +# Copyright 2022 MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from importlib import import_module +from typing import List + +import pydicom +from ai_service import AiJobProcessor, AiService, Series +from result import ResultStatus + + +class MONAIAppWrapper(AiJobProcessor): + + partner_name = os.environ["AI_PARTNER_NAME"] + service_name = os.environ["AI_SVC_NAME"] + service_version = os.environ["AI_SVC_VERSION"] + + monai_app_module = os.environ["MONAI_APP_CLASSPATH"] + + def filter_image(self, image: pydicom.Dataset) -> bool: + return True + + def select_series(self, image_series_list: List[Series]) -> List[Series]: + return image_series_list + + @classmethod + def initialize_class(cls): + cls.model_path = os.getenv("AI_MODEL_PATH", "/app/model/model.ts") + if not os.path.exists(cls.model_path): + raise FileNotFoundError(f"Could not find model file in path `{cls.model_path}`") + cls.logger.info(f"Model path: {cls.model_path}") + + monai_app_class_module = cls.monai_app_module.rsplit(".", 1)[0] + monai_app_class_name = cls.monai_app_module.rsplit(".", 1)[1] + if not cls.monai_app_module: + raise ValueError( + "MONAI App to be run has not been specificed in `MONAI_APP_CLASSPATH` environment variable" + ) + + monai_app_class = getattr(import_module(monai_app_class_module), monai_app_class_name) + if monai_app_class is None: + raise ModuleNotFoundError(f"The class `{cls.monai_app_module}` was not found") + + def process_study(self): + self.logger.info("Starting Processing") + self.logger.info(f"{len(self.ai_job.prior_studies)} images in prior studies") + + if not hasattr(MONAIAppWrapper, "input_path") or self.input_path is None: + self.input_path = self.ai_job.image_folder + self.logger.info(f"Input path: {self.input_path}") + + if not hasattr(MONAIAppWrapper, "output_path") or self.output_path is None: + self.output_path = self.ai_job.output_folder + self.logger.info(f"Output path: {self.output_path}") + + # create the inference app instance to run on this subprocess + self.logger.info("Running MONAI App") + + if not hasattr(MONAIAppWrapper, "monai_app_instance") or self.monai_app_instance is None: + monai_app_class_module = self.monai_app_module.rsplit(".", 1)[0] + monai_app_class_name = self.monai_app_module.rsplit(".", 1)[1] + monai_app_class = getattr(import_module(monai_app_class_module), monai_app_class_name) + self.monai_app_instance = monai_app_class( + do_run=False, upload_document=self.upload_document, upload_gsps=self.upload_gsps_dicom + ) + + self.logger.info(f"MONAI App Info: {self.monai_app_instance.get_package_info()}") + self.logger.info(f"MONAI working directory: {self.ai_job.folder}") + + self.monai_app_instance.run( + log_level=self.logger.level, + input=self.input_path, + output=self.output_path, + model=self.model_path, + workdir=self.ai_job.folder, + ) + + self.logger.info("MONAI App complete") + + self.set_transaction_status(reason=ResultStatus.ANALYSIS_COMPLETE) + + +if __name__ == "__main__": + AiService(MONAIAppWrapper).start() diff --git a/integrations/nuance_pin/docker-compose.yml b/integrations/nuance_pin/docker-compose.yml new file mode 100644 index 00000000..9c9ae577 --- /dev/null +++ b/integrations/nuance_pin/docker-compose.yml @@ -0,0 +1,23 @@ +version: "3" +services: + ai_service: + container_name: aiservice + image: ${PARTNER_NAME:-nvidia}-${SERVICE_NAME:-ai_lung_nodule_detection}:${VERSION:-0.1.0} + build: + context: ${CONTEXT:-.} + args: + PARTNER_NAME: MONAI + SERVICE_NAME: ai_lung_nodule_detection + VERSION: 0.1.0 + MODEL_PATH: /app/model/model.ts + MONAI_APP_MODULE: app.lung_nodule.LungNoduleDetectionApp + dns: 0.0.0.0 + environment: + requestPort: ${PORT:-7777} + subscriptionKey: AiSvcTestKey + tempDir: /tmp/data + ports: + - "5000:${PORT:-7777}" + tmpfs: + - /tmp/data + user: "${CONTAINER_UID:-20225}:${CONTAINER_GID:-20225}" diff --git a/integrations/nuance_pin/model/.gitkeep b/integrations/nuance_pin/model/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/integrations/nuance_pin/requirements.txt b/integrations/nuance_pin/requirements.txt new file mode 100644 index 00000000..835ccdc1 --- /dev/null +++ b/integrations/nuance_pin/requirements.txt @@ -0,0 +1,4 @@ +monai-deploy-app-sdk>=0.4.0 +monai[all]==0.9.0 +pydicom==2.3.0 +highdicom==0.19.0 From eb97cd423c4620df640ec8824250051d5e7cdc56 Mon Sep 17 00:00:00 2001 From: Alvin Ihsani Date: Wed, 21 Sep 2022 12:50:59 -0400 Subject: [PATCH 011/216] minor adjustment for proper result alignment (#354) Signed-off-by: Simone Bendazzoli --- integrations/nuance_pin/app/post_inference_ops.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integrations/nuance_pin/app/post_inference_ops.py b/integrations/nuance_pin/app/post_inference_ops.py index 7c00698b..d6d4839b 100644 --- a/integrations/nuance_pin/app/post_inference_ops.py +++ b/integrations/nuance_pin/app/post_inference_ops.py @@ -41,7 +41,7 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe detection_result: DetectionResult = op_input.get("detection_predictions").detection_list[0] output_path = op_output.get("gsps_files").path - slice_coords = [-inst.first_pixel_on_slice_normal[2] for inst in selected_series.series.get_sop_instances()] + slice_coords = list(range(len(selected_series.series.get_sop_instances()))) series_uid = hd.UID() series_number = randint(1, 100000) @@ -167,7 +167,7 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe procedure_text="CT Chest wo IV Contrast", ) - slice_coords = [-inst.first_pixel_on_slice_normal[2] for inst in selected_series.series.get_sop_instances()] + slice_coords = list(range(len(selected_series.series.get_sop_instances()))) for box_data, box_score in zip(detection_result.box_data, detection_result.score_data): From aa4e52fe8b870c88ca610d0864b40319d0c33d92 Mon Sep 17 00:00:00 2001 From: Alvin Ihsani Date: Wed, 21 Sep 2022 14:41:35 -0400 Subject: [PATCH 012/216] Nuance pin integration minor adjustments (#355) Signed-off-by: Simone Bendazzoli --- integrations/nuance_pin/app/inference.py | 2 ++ integrations/nuance_pin/app/post_inference_ops.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/integrations/nuance_pin/app/inference.py b/integrations/nuance_pin/app/inference.py index d725c5e0..5d021836 100644 --- a/integrations/nuance_pin/app/inference.py +++ b/integrations/nuance_pin/app/inference.py @@ -35,6 +35,7 @@ LoadImaged, Orientationd, ScaleIntensityRanged, + Spacingd, ToDeviced, ToTensord, ) @@ -182,6 +183,7 @@ def pre_process(self, img_reader) -> Compose: ), ToDeviced(keys=image_key, device="cuda"), EnsureChannelFirstd(keys=image_key), + Spacingd(keys=image_key, pixdim=(0.703125, 0.703125, 1.25)), Orientationd( keys=image_key, axcodes="RAS", diff --git a/integrations/nuance_pin/app/post_inference_ops.py b/integrations/nuance_pin/app/post_inference_ops.py index d6d4839b..4958456d 100644 --- a/integrations/nuance_pin/app/post_inference_ops.py +++ b/integrations/nuance_pin/app/post_inference_ops.py @@ -119,6 +119,12 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe graphic_annotations=[annotation], institution_name="MONAI", institutional_department_name="Deploy", + voi_lut_transformations=[ + hd.pr.SoftcopyVOILUTTransformation( + window_center=-550.0, + window_width=1350.0, + ) + ], ) gsps.save_as(os.path.join(output_path, f"gsps-{inst_num:04d}.dcm")) From f11a1a3dbc62796c4e3302da869a4eea6a8d8ad6 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Mon, 3 Oct 2022 12:28:55 -0700 Subject: [PATCH 013/216] Enhance some attributes in the text SR writer (#346) * Added support of matching instance level tags, and update liver seg Signed-off-by: M Q * Fix Flake8 complaint Signed-off-by: M Q * Still enable publish intermediate nii files. Signed-off-by: M Q * Corrections per review comments Signed-off-by: M Q * Enhance attribute settings Signed-off-by: M Q * Fixed styling complaints Signed-off-by: M Q * Fix MyPy complaint Signed-off-by: M Q * Use content sequence for section of text Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- .../dicom_text_sr_writer_operator.py | 95 +++++++++++++------ 1 file changed, 66 insertions(+), 29 deletions(-) diff --git a/monai/deploy/operators/dicom_text_sr_writer_operator.py b/monai/deploy/operators/dicom_text_sr_writer_operator.py index 412d4e30..5e34c5b2 100644 --- a/monai/deploy/operators/dicom_text_sr_writer_operator.py +++ b/monai/deploy/operators/dicom_text_sr_writer_operator.py @@ -13,10 +13,9 @@ import logging from pathlib import Path from random import randint -from typing import Dict, List, Text, Union +from typing import Dict, List, Optional, Text, Union from monai.deploy.utils.importutil import optional_import -from monai.deploy.utils.version import get_sdk_semver dcmread, _ = optional_import("pydicom", name="dcmread") dcmwrite, _ = optional_import("pydicom.filewriter", name="dcmwrite") @@ -31,6 +30,7 @@ from monai.deploy.core.domain.dicom_series import DICOMSeries from monai.deploy.core.domain.dicom_series_selection import StudySelectedSeries from monai.deploy.exceptions import ItemNotExistsError +from monai.deploy.utils.version import get_sdk_semver # Utility classes considered to be moved into Domain module @@ -69,19 +69,20 @@ def __init__( manufacturer: str = "MONAI Deploy", manufacturer_model: str = "MONAI Deploy App SDK", series_number: str = "0000", - software_version_number: str = "0.2", + software_version_number: str = "", ): self.manufacturer = manufacturer if isinstance(manufacturer, str) else "" self.manufacturer_model = manufacturer_model if isinstance(manufacturer_model, str) else "" self.series_number = series_number if isinstance(series_number, str) else "" - try: - version_str = get_sdk_semver() # SDK Version - except Exception: - version_str = "0.2" # Fall back to the initial version - self.software_version_number = ( - software_version_number if isinstance(software_version_number, str) else version_str - ) + if software_version_number: + self.software_version_number = software_version_number + else: + try: + version_str = get_sdk_semver() # SDK Version + except Exception: + version_str = "" # Fall back to the initial version + self.software_version_number = version_str # The SR writer operator class @@ -129,12 +130,17 @@ def __init__( # "OT" for PDF # "SR" for Structured Report. # Media Storage SOP Class UID, e.g., + # "1.2.840.10008.5.1.4.1.1.88.11" for Basic Text SR Storage # "1.2.840.10008.5.1.4.1.1.104.1" for Encapsulated PDF Storage, # "1.2.840.10008.5.1.4.1.1.88.34" for Comprehensive 3D SR IOD # "1.2.840.10008.5.1.4.1.1.66.4" for Segmentation Storage self.modality_type = "SR" - self.sop_class_uid = "1.2.840.10008.5.1.4.1.1.88.34" - self.implementation_version_name = "MONAI Deploy App SDK 0.2" + self.sop_class_uid = "1.2.840.10008.5.1.4.1.1.88.11" + # Equipment version may be different from contributing equipment version + try: + self.software_version_number = get_sdk_semver() # SDK Version + except Exception: + self.software_version_number = "" self.operators_name = f"AI Algorithm {self.model_info.name}" def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): @@ -188,7 +194,7 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe # Now ready to starting writing the DICOM instance self.write(result_text, dicom_series, output_dir) - def write(self, content_text, dicom_series: Union[DICOMSeries, None], output_dir: Path): + def write(self, content_text, dicom_series: Optional[DICOMSeries], output_dir: Path): """Writes DICOM object Args: @@ -220,17 +226,43 @@ def write(self, content_text, dicom_series: Union[DICOMSeries, None], output_dir # imaging procedure analyzed, not the algorithm used. # Use text value for example - ds.ValueType = "TEXT" + ds.ValueType = "CONTAINER" # ConceptNameCode Sequence seq_concept_name_code = Sequence() + ds.ConceptNameCodeSequence = seq_concept_name_code + + # Concept Name Code Sequence: Concept Name Code ds_concept_name_code = Dataset() ds_concept_name_code.CodeValue = "18748-4" ds_concept_name_code.CodingSchemeDesignator = "LN" ds_concept_name_code.CodeMeaning = "Diagnostic Imaging Report" seq_concept_name_code.append(ds_concept_name_code) - ds.ConceptNameCodeSequence = seq_concept_name_code - ds.TextValue = content_text # self._content_to_string(content_file) + + ds.ContinuityOfContent = "SEPARATE" + + # Content Sequence + content_sequence = Sequence() + ds.ContentSequence = content_sequence + + # Content Sequence: Content 1 + content1 = Dataset() + content1.RelationshipType = "CONTAINS" + content1.ValueType = "TEXT" + + # Concept Name Code Sequence + concept_name_code_sequence = Sequence() + content1.ConceptNameCodeSequence = concept_name_code_sequence + + # Concept Name Code Sequence: Concept Name Code 1 + concept_name_code1 = Dataset() + concept_name_code1.CodeValue = "111412" # or 111413 "Overall Assessment" + concept_name_code1.CodingSchemeDesignator = "DCM" + concept_name_code1.CodeMeaning = "Narrative Summary" # or 111413 'Overall Assessment' + concept_name_code_sequence.append(concept_name_code1) + + content1.TextValue = content_text # The actual report content text + content_sequence.append(content1) # For now, only allow str Keywords and str value if self.custom_tags: @@ -262,12 +294,12 @@ def save_dcm_file(data_set, file_path: Path, validate_readable: bool = True): # TODO: The following function can be moved into Domain module as it's common. @staticmethod def write_common_modules( - dicom_series: Union[DICOMSeries, None], + dicom_series: Optional[DICOMSeries], copy_tags: bool, modality_type: str, sop_class_uid: str, - model_info: Union[ModelInfo, None] = None, - equipment_info: Union[EquipmentInfo, None] = None, + model_info: Optional[ModelInfo] = None, + equipment_info: Optional[EquipmentInfo] = None, ): """Writes DICOM object common modules with or without a reference DCIOM Series @@ -304,6 +336,7 @@ def write_common_modules( dt_now = datetime.datetime.now() date_now_dcm = dt_now.strftime("%Y%m%d") time_now_dcm = dt_now.strftime("%H%M%S") + offset_from_utc = dt_now.astimezone().isoformat()[-6:].replace(":", "") # '2022-09-27T22:36:20.143857-07:00' # Generate UIDs and descriptions my_sop_instance_uid = generate_uid() @@ -321,7 +354,7 @@ def write_common_modules( file_meta.MediaStorageSOPInstanceUID = my_sop_instance_uid file_meta.TransferSyntaxUID = ImplicitVRLittleEndian # 1.2.840.10008.1.2, Little Endian Implicit VR file_meta.ImplementationClassUID = "1.2.40.0.13.1.1.1" # Made up. Not registered. - file_meta.ImplementationVersionName = "MONAI Deploy App SDK 0.2" + file_meta.ImplementationVersionName = equipment_info.software_version_number if equipment_info else "" # Write modules to data set ds = Dataset() @@ -335,6 +368,7 @@ def write_common_modules( # Use current time for now, but could potentially use the actual inference start time. ds.ContentDate = date_now_dcm ds.ContentTime = time_now_dcm + ds.TimezoneOffsetFromUTC = offset_from_utc # The date and time that the original generation of the data in the document started. ds.AcquisitionDateTime = date_now_dcm + time_now_dcm # Result has just been created. @@ -360,9 +394,9 @@ def write_common_modules( # Equipment Module, mandatory if equipment_info: ds.Manufacturer = equipment_info.manufacturer - ds.ManufacturerModel = equipment_info.manufacturer_model + ds.ManufacturerModelName = equipment_info.manufacturer_model ds.SeriesNumber = equipment_info.series_number - ds.SoftwareVersionNumber = equipment_info.software_version_number + ds.SoftwareVersions = equipment_info.software_version_number # SOP Common Module, mandatory ds.InstanceCreationDate = date_now_dcm @@ -408,12 +442,12 @@ def write_common_modules( # '(121014, DCM, “Device Observer Manufacturer")' ds_contributing_equipment.Manufacturer = model_info.creator # u'(121015, DCM, “Device Observer Model Name")' - ds_contributing_equipment.ManufacturerModel = model_info.name + ds_contributing_equipment.ManufacturerModelName = model_info.name # u'(111003, DCM, “Algorithm Version")' - ds_contributing_equipment.SoftwareVersionNumber = model_info.version + ds_contributing_equipment.SoftwareVersions = model_info.version ds_contributing_equipment.DeviceUID = model_info.uid # u'(121012, DCM, “Device Observer UID")' seq_contributing_equipment.append(ds_contributing_equipment) - ds.ContributingequipmentSequence = seq_contributing_equipment + ds.ContributingEquipmentSequence = seq_contributing_equipment logging.debug("DICOM common modules written:\n{}".format(ds)) @@ -435,15 +469,18 @@ def test(): from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator current_file_dir = Path(__file__).parent.resolve() - data_path = current_file_dir.joinpath("../../../examples/ai_spleen_seg_data/dcm") + data_path = current_file_dir.joinpath("../../../inputs/livertumor_ct/dcm/1-CT_series_liver_tumor_from_nii014") out_path = current_file_dir.joinpath("../../../examples/output_sr_op") - test_report_text = "Dummy AI classification resutls." - test_copy_tags = True + test_report_text = "Tumors detected in Liver using MONAI Liver Tumor Seg model." + test_copy_tags = False loader = DICOMDataLoaderOperator() series_selector = DICOMSeriesSelectorOperator() sr_writer = DICOMTextSRWriterOperator( - copy_tags=test_copy_tags, model_info=None, custom_tags={"SeriesDescription": "New AI Series"} + copy_tags=test_copy_tags, + model_info=None, + equipment_info=EquipmentInfo(software_version_number="0.4"), + custom_tags={"SeriesDescription": "Textual report from AI algorithm. Not for clinical use."}, ) # Testing with the main entry functions From ff526eb61c88a59f4655039b04e558656807db4b Mon Sep 17 00:00:00 2001 From: KavinKrishnan Date: Wed, 12 Oct 2022 02:19:56 -0700 Subject: [PATCH 014/216] Update executor path to new version (#135) Signed-off-by: kavink Signed-off-by: kavink Signed-off-by: Simone Bendazzoli --- monai/deploy/packager/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/deploy/packager/util.py b/monai/deploy/packager/util.py index 1ecb759e..2f8f22ba 100644 --- a/monai/deploy/packager/util.py +++ b/monai/deploy/packager/util.py @@ -28,7 +28,7 @@ logger = logging.getLogger("app_packager") -executor_url = "https://globalcdn.nuget.org/packages/monai.deploy.executor.0.1.0-prealpha.0.nupkg" +executor_url = "https://globalcdn.nuget.org/packages/monai.deploy.executor.0.1.0-prealpha.4.nupkg" def verify_base_image(base_image: str) -> str: From 9614fe4596b9dc14fce16217cb5db7e655a0ba3d Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Wed, 12 Oct 2022 16:58:48 -0700 Subject: [PATCH 015/216] App SDK updated to be compatible with monai 1.0.0 and its MetaTensor (#360) * Updated to be compitable with monai 1.0.0 and its MetaTensor Signed-off-by: M Q * Made bundle inference operator compatible with MetaTensor Signed-off-by: M Q * Removed the use of ToTensor from all apps. Signed-off-by: M Q * Fix MyPy complaints Signed-off-by: M Q * Fix isort complaint Signed-off-by: M Q * Use a constant for repeated use of monai.utils str literal; SonarCloud code smell. Signed-off-by: M Q * Updated Seg Writer and Spleen Seg Jupyter notebooks Signed-off-by: M Q * Minor to address comments and checker complaint Signed-off-by: M Q * Updated clara-viz Jupyter notebook and fixed checking complaint Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- .../livertumor_seg_operator.py | 4 +- examples/apps/ai_spleen_seg_app/app.py | 7 +- .../ai_unetr_seg_app/unetr_seg_operator.py | 2 - integrations/nuance_pin/app/inference.py | 4 - .../operators/dicom_seg_writer_operator.py | 76 +- .../monai_bundle_inference_operator.py | 49 +- .../operators/monai_seg_inference_operator.py | 28 +- notebooks/tutorials/03_segmentation_app.ipynb | 1951 ++++++++++------- .../tutorials/03_segmentation_viz_app.ipynb | 1509 +++++++------ notebooks/tutorials/05_full_tutorial.ipynb | 4 - notebooks/tutorials/06_monai_bundle_app.ipynb | 998 +++++++-- requirements-dev.txt | 2 +- requirements-examples.txt | 2 +- 13 files changed, 2904 insertions(+), 1732 deletions(-) diff --git a/examples/apps/ai_livertumor_seg_app/livertumor_seg_operator.py b/examples/apps/ai_livertumor_seg_app/livertumor_seg_operator.py index 6b5e41c8..d7b18727 100644 --- a/examples/apps/ai_livertumor_seg_app/livertumor_seg_operator.py +++ b/examples/apps/ai_livertumor_seg_app/livertumor_seg_operator.py @@ -27,14 +27,13 @@ SaveImaged, ScaleIntensityRanged, Spacingd, - ToTensord, ) @md.input("image", Image, IOType.IN_MEMORY) @md.output("seg_image", Image, IOType.IN_MEMORY) @md.output("saved_images_folder", DataPath, IOType.DISK) -@md.env(pip_packages=["monai==0.9.0", "torch>=1.5", "numpy>=1.21", "nibabel"]) +@md.env(pip_packages=["monai>=1.0.0", "torch>=1.5", "numpy>=1.21", "nibabel"]) class LiverTumorSegOperator(Operator): """Performs liver and tumor segmentation using a DL model with an image converted from a DICOM CT series. @@ -121,7 +120,6 @@ def pre_process(self, img_reader, out_dir: str = "./input_images") -> Compose: Spacingd(keys=my_key, pixdim=(1.0, 1.0, 1.0), mode=("bilinear"), align_corners=True), ScaleIntensityRanged(my_key, a_min=-21, a_max=189, b_min=0.0, b_max=1.0, clip=True), CropForegroundd(my_key, source_key=my_key), - ToTensord(my_key), ] ) diff --git a/examples/apps/ai_spleen_seg_app/app.py b/examples/apps/ai_spleen_seg_app/app.py index 2595bf75..0eed831d 100644 --- a/examples/apps/ai_spleen_seg_app/app.py +++ b/examples/apps/ai_spleen_seg_app/app.py @@ -81,7 +81,12 @@ def compose(self): algorithm_version="0.1.0", ) ] - dicom_seg_writer = DICOMSegmentationWriterOperator(segment_descriptions=segment_descriptions) + + custom_tags = {"SeriesDescription": "AI generated Seg, not for clinical use."} + + dicom_seg_writer = DICOMSegmentationWriterOperator( + segment_descriptions=segment_descriptions, custom_tags=custom_tags + ) # Create the processing pipeline, by specifying the source and destination operators, and # ensuring the output from the former matches the input of the latter, in both name and type. diff --git a/examples/apps/ai_unetr_seg_app/unetr_seg_operator.py b/examples/apps/ai_unetr_seg_app/unetr_seg_operator.py index 47a68273..7b45d208 100644 --- a/examples/apps/ai_unetr_seg_app/unetr_seg_operator.py +++ b/examples/apps/ai_unetr_seg_app/unetr_seg_operator.py @@ -28,7 +28,6 @@ SaveImaged, ScaleIntensityRanged, Spacingd, - ToTensord, ) @@ -114,7 +113,6 @@ def pre_process(self, img_reader, out_dir: str = "./input_images") -> Compose: Orientationd(keys=my_key, axcodes="RAS"), ScaleIntensityRanged(my_key, a_min=-175, a_max=250, b_min=0.0, b_max=1.0, clip=True), CropForegroundd(my_key, source_key=my_key), - ToTensord(my_key), ] ) diff --git a/integrations/nuance_pin/app/inference.py b/integrations/nuance_pin/app/inference.py index 5d021836..016e439f 100644 --- a/integrations/nuance_pin/app/inference.py +++ b/integrations/nuance_pin/app/inference.py @@ -37,7 +37,6 @@ ScaleIntensityRanged, Spacingd, ToDeviced, - ToTensord, ) sliding_window_inference, _ = optional_import("monai.inferers", name="sliding_window_inference") @@ -178,9 +177,6 @@ def pre_process(self, img_reader) -> Compose: keys=[image_key, f"{image_key}_meta_dict"], names=[orig_image_key, f"{orig_image_key}_meta_dict"], ), - ToTensord( - keys=image_key, - ), ToDeviced(keys=image_key, device="cuda"), EnsureChannelFirstd(keys=image_key), Spacingd(keys=image_key, pixdim=(0.703125, 0.703125, 1.25)), diff --git a/monai/deploy/operators/dicom_seg_writer_operator.py b/monai/deploy/operators/dicom_seg_writer_operator.py index befb4eb0..e9f2d8d9 100644 --- a/monai/deploy/operators/dicom_seg_writer_operator.py +++ b/monai/deploy/operators/dicom_seg_writer_operator.py @@ -9,10 +9,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os +import datetime +import logging from pathlib import Path from random import randint -from typing import TYPE_CHECKING, List, Optional, Sequence, Union +from typing import TYPE_CHECKING, Dict, List, Optional, Sequence, Union import numpy as np from typeguard import typechecked @@ -166,10 +167,14 @@ class DICOMSegmentationWriterOperator(Operator): SUPPORTED_EXTENSIONS = [".nii", ".nii.gz", ".mhd"] # DICOM instance file extension. Case insensitive in string comparison. DCM_EXTENSION = ".dcm" - # Suffix to add to file name to indicate DICOM Seg dcm file. - DICOMSEG_SUFFIX = "-DICOMSEG" - def __init__(self, segment_descriptions: List[SegmentDescription], *args, **kwargs): + def __init__( + self, + segment_descriptions: List[SegmentDescription], + custom_tags: Optional[Dict[str, str]] = None, + *args, + **kwargs, + ): super().__init__(*args, **kwargs) """Instantiates the DICOM Seg Writer instance with optional list of segment label strings. @@ -185,11 +190,14 @@ def __init__(self, segment_descriptions: List[SegmentDescription], *args, **kwar segment label information, including label value, name, description etc. Args: - segment_descriptions: Object encapsulating the description of each segment present in the - segmentation. + segment_descriptions: List[SegmentDescription] + Object encapsulating the description of each segment present in the segmentation. + custom_tags: OptonalDict[str, str], optional + Dictionary for setting custom DICOM tags using Keywords and str values only """ self._seg_descs = [sd.to_segment_description(n) for n, sd in enumerate(segment_descriptions, 1)] + self._custom_tags = custom_tags def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): """Performs computation for this operator and handles I/O. @@ -241,13 +249,6 @@ def process_images( else: raise ValueError("'image' is not an Image object or a supported image file.") - # The output DICOM Seg instance file name is based on the actual or made-up input image file name. - output_filename = "{0}{1}{2}".format( - os.path.splitext(os.path.basename(input_path))[0], - DICOMSegmentationWriterOperator.DICOMSEG_SUFFIX, - DICOMSegmentationWriterOperator.DCM_EXTENSION, - ) - output_path = output_dir / output_filename # Pick DICOM Series that was used as input for getting the seg image. # For now, first one in the list. for study_selected_series in study_selected_series_list: @@ -255,11 +256,19 @@ def process_images( raise ValueError("Element in input is not expected type, 'StudySelectedSeries'.") selected_series = study_selected_series.selected_series[0] dicom_series = selected_series.series - self.create_dicom_seg(seg_image_numpy, dicom_series, output_path) + self.create_dicom_seg(seg_image_numpy, dicom_series, output_dir) break - def create_dicom_seg(self, image: np.ndarray, dicom_series: DICOMSeries, file_path: Path): - file_path.parent.absolute().mkdir(parents=True, exist_ok=True) + def create_dicom_seg(self, image: np.ndarray, dicom_series: DICOMSeries, output_dir: Path): + # Generate SOP instance UID, and use it as dcm file name too + seg_sop_instance_uid = hd.UID() # generate_uid() can be used too. + + if not output_dir.is_dir(): + try: + output_dir.mkdir(parents=True, exist_ok=True) + except Exception: + raise ValueError("output_dir {output_dir} does not exist and failed to be created.") from None + output_path = output_dir / f"{seg_sop_instance_uid}{DICOMSegmentationWriterOperator.DCM_EXTENSION}" dicom_dataset_list = [i.get_native_sop_instance() for i in dicom_series.get_sop_instances()] @@ -275,18 +284,37 @@ def create_dicom_seg(self, image: np.ndarray, dicom_series: DICOMSeries, file_pa segment_descriptions=self._seg_descs, series_instance_uid=hd.UID(), series_number=random_with_n_digits(4), - sop_instance_uid=hd.UID(), + sop_instance_uid=seg_sop_instance_uid, instance_number=1, manufacturer="The MONAI Consortium", manufacturer_model_name="MONAI Deploy App SDK", software_versions=version_str, device_serial_number="0000", ) - seg.save_as(file_path) + + # Adding a few tags that are not in the Dataset + # Also try to set the custom tags that are of string type + dt_now = datetime.datetime.now() + seg.SeriesDate = dt_now.strftime("%Y%m%d") + seg.SeriesTime = dt_now.strftime("%H%M%S") + seg.TimezoneOffsetFromUTC = ( + dt_now.astimezone().isoformat()[-6:].replace(":", "") + ) # '2022-09-27T22:36:20.143857-07:00' + + if self._custom_tags: + for k, v in self._custom_tags.items(): + if isinstance(k, str) and isinstance(v, str): + try: + seg[k].value = v + except Exception as ex: + # Best effort for now. + logging.warning(f"Tag {k} was not written, due to {ex}") + + seg.save_as(output_path) try: # Test reading back - _ = self._read_from_dcm(str(file_path)) + _ = self._read_from_dcm(str(output_path)) except Exception as ex: print("DICOMSeg creation failed. Error:\n{}".format(ex)) raise @@ -356,8 +384,8 @@ def test(): from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator current_file_dir = Path(__file__).parent.resolve() - data_path = current_file_dir.joinpath("../../../examples/ai_spleen_seg_data/dcm") - out_path = current_file_dir.joinpath("../../../examples/output_seg_op/dcm_seg_test.dcm") + data_path = current_file_dir.joinpath("../../../inputs/spleen_ct_tcia") + out_dir = Path("output_seg_op").absolute() segment_descriptions = [ SegmentDescription( segment_label="Spleen", @@ -385,7 +413,7 @@ def test(): # Very crude thresholding image_numpy = (image.asnumpy() > 400).astype(np.uint8) - seg_writer.create_dicom_seg(image_numpy, series, Path(out_path).absolute()) + seg_writer.create_dicom_seg(image_numpy, series, out_dir) # Testing with the main entry functions study_list = loader.load_data_to_studies(data_path.absolute()) @@ -394,7 +422,7 @@ def test(): # Very crude thresholding image_numpy = (image.asnumpy() > 400).astype(np.uint8) image = Image(image_numpy) - seg_writer.process_images(image, study_selected_series_list, out_path.parent.absolute()) + seg_writer.process_images(image, study_selected_series_list, out_dir) if __name__ == "__main__": diff --git a/monai/deploy/operators/monai_bundle_inference_operator.py b/monai/deploy/operators/monai_bundle_inference_operator.py index 07243968..bb919c3d 100644 --- a/monai/deploy/operators/monai_bundle_inference_operator.py +++ b/monai/deploy/operators/monai_bundle_inference_operator.py @@ -15,6 +15,7 @@ import pickle import time import zipfile +from copy import deepcopy from pathlib import Path from threading import Lock from typing import Any, Dict, List, Optional, Tuple, Type, Union @@ -29,12 +30,19 @@ from .inference_operator import InferenceOperator +MONAI_UTILS = "monai.utils" nibabel, _ = optional_import("nibabel", "3.2.1") -torch, _ = optional_import("torch", "1.10.0") +torch, _ = optional_import("torch", "1.10.2") +NdarrayOrTensor, _ = optional_import("monai.config", name="NdarrayOrTensor") +MetaTensor, _ = optional_import("monai.data.meta_tensor", name="MetaTensor") PostFix, _ = optional_import("monai.utils.enums", name="PostFix") # For the default meta_key_postfix first, _ = optional_import("monai.utils.misc", name="first") -ensure_tuple, _ = optional_import("monai.utils", name="ensure_tuple") +ensure_tuple, _ = optional_import(MONAI_UTILS, name="ensure_tuple") +convert_to_dst_type, _ = optional_import(MONAI_UTILS, name="convert_to_dst_type") +Key, _ = optional_import(MONAI_UTILS, name="ImageMetaKey") +MetaKeys, _ = optional_import(MONAI_UTILS, name="MetaKeys") +SpaceKeys, _ = optional_import(MONAI_UTILS, name="SpaceKeys") Compose_, _ = optional_import("monai.transforms", name="Compose") ConfigParser_, _ = optional_import("monai.bundle", name="ConfigParser") MapTransform_, _ = optional_import("monai.transforms", name="MapTransform") @@ -45,6 +53,7 @@ MapTransform: Any = MapTransform_ ConfigParser: Any = ConfigParser_ + __all__ = ["MonaiBundleInferenceOperator", "IOMapping", "BundleConfigNames"] @@ -198,7 +207,7 @@ def _ensure_str_list(config_names): # operator may choose to pass in a accessible bundle path at development and packaging stage. Ideally, # the bundle path should be passed in by the Packager, e.g. via env var, when the App is initialized. # As of now, the Packager only passes in the model path after the App including all operators are init'ed. -@md.env(pip_packages=["monai==0.9.0", "torch>=1.10.02", "numpy>=1.21", "nibabel>=3.2.1"]) +@md.env(pip_packages=["monai>=1.0.0", "torch>=1.10.02", "numpy>=1.21", "nibabel>=3.2.1"]) class MonaiBundleInferenceOperator(InferenceOperator): """This inference operator automates the inference operation for a given MONAI Bundle. @@ -477,14 +486,19 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe start = time.time() for name in self._inputs.keys(): - value, metadata = self._receive_input(name, op_input, context) + # Input MetaTensor creation is based on the same logic in monai LoadImage + # value: NdarrayOrTensor # MyPy complaints + value, meta_data = self._receive_input(name, op_input, context) + value = convert_to_dst_type(value, dst=value)[0] + if not isinstance(meta_data, dict): + raise ValueError("`meta_data` must be a dict.") + value = MetaTensor.ensure_torch_and_prune_meta(value, meta_data) inputs[name] = value - if metadata: - inputs[(f"{name}_{self._meta_key_postfix}")] = metadata + # Named metadata dict not needed any more, as it is in the MetaTensor inputs = self.pre_process(inputs) - first_input = inputs.pop(first_input_name)[None].to(self._device) # select first input - input_metadata = inputs.get(f"{first_input_name}_{self._meta_key_postfix}", None) + first_input_v = inputs[first_input_name] # keep a copy of value for later use + first_input = inputs.pop(first_input_name)[None].to(self._device) # select other tensor inputs other_inputs = {k: v[None].to(self._device) for k, v in inputs.items() if isinstance(v, torch.Tensor)} @@ -496,9 +510,10 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe outputs: Any = self.predict(data=first_input, **other_inputs) # Use type Any to quiet MyPy complaints. logging.debug(f"Inference elapsed time (seconds): {time.time() - start}") - # TODO: Does this work for models where multiple outputs are returned? - # Note that the inputs are needed because the invert transform requires it. + # Note that the `inputs` are needed because the `invert` transform requires it. With metadata being + # in the keyed MetaTensors of inputs, e.g. `image`, the whole inputs are needed. start = time.time() + inputs[first_input_name] = first_input_v kw_args = {self.kw_preprocessed_inputs: inputs} outputs = self.post_process(ensure_tuple(outputs)[0], **kw_args) logging.debug(f"Post-processing elapsed time (seconds): {time.time() - start}") @@ -512,7 +527,7 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe for name in self._outputs.keys(): # Note that the input metadata needs to be passed. # Please see the comments in the called function for the reasons. - self._send_output(output_dict[name], name, input_metadata, op_output, context) + self._send_output(output_dict[name], name, first_input_v.meta, op_output, context) def predict(self, data: Any, *args, **kwargs) -> Union[Image, Any, Tuple[Any, ...], Dict[Any, Any]]: """Predicts output using the inferer.""" @@ -698,7 +713,7 @@ def _convert_from_image_dicom_source(self, img: Image) -> Tuple[np.ndarray, Dict """ img_meta_dict: Dict = img.metadata() - meta_dict = {key: img_meta_dict[key] for key in img_meta_dict.keys()} + meta_dict = deepcopy(img_meta_dict) # The MONAI ImageReader, e.g. the ITKReader, arranges the image spatial dims in WHD, # so the "spacing" needs to be expressed in such an order too, as expected by the transforms. @@ -709,8 +724,10 @@ def _convert_from_image_dicom_source(self, img: Image) -> Tuple[np.ndarray, Dict img_meta_dict["depth_pixel_spacing"], ] ) - meta_dict["original_affine"] = np.asarray(img_meta_dict.get("nifti_affine_transform", None)) - meta_dict["affine"] = meta_dict["original_affine"] + # Use defines MetaKeys directly + meta_dict[MetaKeys.ORIGINAL_AFFINE] = np.asarray(img_meta_dict.get("nifti_affine_transform", None)) + meta_dict[MetaKeys.AFFINE] = meta_dict[MetaKeys.ORIGINAL_AFFINE].copy() + meta_dict[MetaKeys.SPACE] = SpaceKeys.LPS # not using SpaceKeys.RAS or affine_lps_to_ras # Similarly the Image ndarray has dim order DHW, to be rearranged to WHD. # TODO: Need to revisit this once multi-channel image is supported and the Image class itself @@ -718,9 +735,9 @@ def _convert_from_image_dicom_source(self, img: Image) -> Tuple[np.ndarray, Dict converted_image = np.swapaxes(img.asnumpy(), 0, 2) # The spatial shape is then that of the converted image, in WHD - meta_dict["spatial_shape"] = np.asarray(converted_image.shape) + meta_dict[MetaKeys.SPATIAL_SHAPE] = np.asarray(converted_image.shape) # Well, now channel for now. - meta_dict["original_channel_dim"] = "no_channel" + meta_dict[MetaKeys.ORIGINAL_CHANNEL_DIM] = "no_channel" return converted_image, meta_dict diff --git a/monai/deploy/operators/monai_seg_inference_operator.py b/monai/deploy/operators/monai_seg_inference_operator.py index 82a38097..3224eec1 100644 --- a/monai/deploy/operators/monai_seg_inference_operator.py +++ b/monai/deploy/operators/monai_seg_inference_operator.py @@ -16,6 +16,7 @@ from monai.deploy.utils.importutil import optional_import +MONAI_UTILS = "monai.utils" torch, _ = optional_import("torch", "1.5") np_str_obj_array_pattern, _ = optional_import("torch.utils.data._utils.collate", name="np_str_obj_array_pattern") Dataset, _ = optional_import("monai.data", name="Dataset") @@ -27,7 +28,9 @@ ImageReader = object # for 'class InMemImageReader(ImageReader):' to work decollate_batch, _ = optional_import("monai.data", name="decollate_batch") sliding_window_inference, _ = optional_import("monai.inferers", name="sliding_window_inference") -ensure_tuple, _ = optional_import("monai.utils", name="ensure_tuple") +ensure_tuple, _ = optional_import(MONAI_UTILS, name="ensure_tuple") +MetaKeys, _ = optional_import(MONAI_UTILS, name="MetaKeys") +SpaceKeys, _ = optional_import(MONAI_UTILS, name="SpaceKeys") Compose_, _ = optional_import("monai.transforms", name="Compose") # Dynamic class is not handled so make it Any for now: https://github.com/python/mypy/issues/2477 Compose: Any = Compose_ @@ -42,7 +45,7 @@ @md.input("image", Image, IOType.IN_MEMORY) @md.output("seg_image", Image, IOType.IN_MEMORY) -@md.env(pip_packages=["monai==0.9.0", "torch>=1.5", "numpy>=1.21"]) +@md.env(pip_packages=["monai>=1.0.0", "torch>=1.10.2", "numpy>=1.21"]) class MonaiSegInferenceOperator(InferenceOperator): """This segmentation operator uses MONAI transforms and Sliding Window Inference. @@ -382,12 +385,15 @@ def _get_meta_dict(self, img: Image) -> Dict: img_meta_dict["depth_pixel_spacing"], ] ) - meta_dict["original_affine"] = np.asarray(img_meta_dict.get("nifti_affine_transform", None)) - meta_dict["affine"] = meta_dict["original_affine"] + + # Use define metadata kyes directly + meta_dict[MetaKeys.ORIGINAL_AFFINE] = np.asarray(img_meta_dict.get("nifti_affine_transform", None)) + meta_dict[MetaKeys.AFFINE] = meta_dict[MetaKeys.ORIGINAL_AFFINE].copy() + meta_dict[MetaKeys.SPACE] = SpaceKeys.LPS # not using SpaceKeys.RAS or affine_lps_to_ras # The spatial shape, again, referring to ITKReader, it is the WHD - meta_dict["spatial_shape"] = np.asarray(img.asnumpy().T.shape) + meta_dict[MetaKeys.SPATIAL_SHAPE] = np.asarray(img.asnumpy().T.shape) # Well, no channel as the image data shape is forced to the the same as spatial shape - meta_dict["original_channel_dim"] = "no_channel" + meta_dict[MetaKeys.ORIGINAL_CHANNEL_DIM] = "no_channel" return meta_dict @@ -403,7 +409,7 @@ def _copy_compatible_dict(from_dict: Dict, to_dict: Dict): continue to_dict[key] = datum else: - affine_key, shape_key = "affine", "spatial_shape" + affine_key, shape_key = MetaKeys.AFFINE, MetaKeys.SPATIAL_SHAPE if affine_key in from_dict and not np.allclose(from_dict[affine_key], to_dict[affine_key]): raise RuntimeError( "affine matrix of all images should be the same for channel-wise concatenation. " @@ -419,7 +425,9 @@ def _copy_compatible_dict(from_dict: Dict, to_dict: Dict): def _stack_images(image_list: List, meta_dict: Dict): if len(image_list) <= 1: return image_list[0] - if meta_dict.get("original_channel_dim", None) not in ("no_channel", None): - raise RuntimeError("can not read a list of images which already have channel dimension.") - meta_dict["original_channel_dim"] = 0 + if meta_dict.get(MetaKeys.ORIGINAL_CHANNEL_DIM, None) not in ("no_channel", None): + channel_dim = int(meta_dict[MetaKeys.ORIGINAL_CHANNEL_DIM]) + return np.concatenate(image_list, axis=channel_dim) + # stack at a new first dim as the channel dim, if `'original_channel_dim'` is unspecified + meta_dict[MetaKeys.ORIGINAL_CHANNEL_DIM] = 0 return np.stack(image_list, axis=0) diff --git a/notebooks/tutorials/03_segmentation_app.ipynb b/notebooks/tutorials/03_segmentation_app.ipynb index 8f9bb6a0..532d37b6 100644 --- a/notebooks/tutorials/03_segmentation_app.ipynb +++ b/notebooks/tutorials/03_segmentation_app.ipynb @@ -97,8 +97,8 @@ "outputs": [], "source": [ "# Install MONAI and other necessary image processing packages for the application\n", - "!python -c \"import monai\" || pip install -q \"monai\"\n", - "!python -c \"import torch\" || pip install -q \"torch>=1.5\"\n", + "!python -c \"import monai\" || pip install --upgrade -q \"monai\"\n", + "!python -c \"import torch\" || pip install -q \"torch>=1.10.2\"\n", "!python -c \"import numpy\" || pip install -q \"numpy>=1.21\"\n", "!python -c \"import nibabel\" || pip install -q \"nibabel>=3.2.1\"\n", "!python -c \"import pydicom\" || pip install -q \"pydicom>=1.4.2\"\n", @@ -132,538 +132,227 @@ "name": "stdout", "output_type": "stream", "text": [ - "Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com\n", - "Requirement already satisfied: gdown in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (3.13.1)\n", - "Requirement already satisfied: six in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from gdown) (1.16.0)\n", - "Requirement already satisfied: filelock in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from gdown) (3.0.12)\n", - "Requirement already satisfied: requests[socks]>=2.12.0 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from gdown) (2.26.0)\n", - "Requirement already satisfied: tqdm in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from gdown) (4.62.3)\n", - "Requirement already satisfied: charset-normalizer~=2.0.0 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from requests[socks]>=2.12.0->gdown) (2.0.0)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from requests[socks]>=2.12.0->gdown) (2021.5.30)\n", - "Requirement already satisfied: idna<4,>=2.5 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from requests[socks]>=2.12.0->gdown) (3.1)\n", - "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from requests[socks]>=2.12.0->gdown) (1.26.6)\n", - "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from requests[socks]>=2.12.0->gdown) (1.7.1)\n", + "Requirement already satisfied: gdown in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (4.5.1)\n", + "Requirement already satisfied: six in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (1.16.0)\n", + "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", + "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", + "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", + "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", + "Requirement already satisfied: soupsieve>1.2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from beautifulsoup4->gdown) (2.3.2.post1)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.26.12)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (3.3)\n", + "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.7.1)\n", "Downloading...\n", - "From: https://drive.google.com/uc?id=1cJq0iQh_yzYIxVElSlVa141aEmHZADJh\n", - "To: ~/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_bundle_data.zip\n", - "104MB [00:10, 10.3MB/s] \n", - "Archive: ai_spleen_bundle_data.zip\n", - " creating: dcm/\n", - " inflating: dcm/IMG0001.dcm \n", - " inflating: dcm/IMG0002.dcm \n", - " inflating: dcm/IMG0003.dcm \n", - " inflating: dcm/IMG0004.dcm \n", - " inflating: dcm/IMG0005.dcm \n", - " inflating: dcm/IMG0006.dcm \n", - " inflating: dcm/IMG0007.dcm \n", - " inflating: dcm/IMG0008.dcm \n", - " inflating: dcm/IMG0009.dcm \n", - " inflating: dcm/IMG0010.dcm \n", - " inflating: dcm/IMG0011.dcm \n", - " inflating: dcm/IMG0012.dcm \n", - " inflating: dcm/IMG0013.dcm \n", - " inflating: dcm/IMG0014.dcm \n", - " inflating: dcm/IMG0015.dcm \n", - " inflating: dcm/IMG0016.dcm \n", - " inflating: dcm/IMG0017.dcm \n", - " inflating: dcm/IMG0018.dcm \n", - " inflating: dcm/IMG0019.dcm \n", - " inflating: dcm/IMG0020.dcm \n", - " inflating: dcm/IMG0021.dcm \n", - " inflating: dcm/IMG0022.dcm \n", - " inflating: dcm/IMG0023.dcm \n", - " inflating: dcm/IMG0024.dcm \n", - " inflating: dcm/IMG0025.dcm \n", - " inflating: dcm/IMG0026.dcm \n", - " inflating: dcm/IMG0027.dcm \n", - " inflating: dcm/IMG0028.dcm \n", - " inflating: dcm/IMG0029.dcm \n", - " inflating: dcm/IMG0030.dcm \n", - " inflating: dcm/IMG0031.dcm \n", - " inflating: dcm/IMG0032.dcm \n", - " inflating: dcm/IMG0033.dcm \n", - " inflating: dcm/IMG0034.dcm \n", - " inflating: dcm/IMG0035.dcm \n", - " inflating: dcm/IMG0036.dcm \n", - " inflating: dcm/IMG0037.dcm \n", - " inflating: dcm/IMG0038.dcm \n", - " inflating: dcm/IMG0039.dcm \n", - " inflating: dcm/IMG0040.dcm \n", - " inflating: dcm/IMG0041.dcm \n", - " inflating: dcm/IMG0042.dcm \n", - " inflating: dcm/IMG0043.dcm \n", - " inflating: dcm/IMG0044.dcm \n", - " inflating: dcm/IMG0045.dcm \n", - " inflating: dcm/IMG0046.dcm \n", - " inflating: dcm/IMG0047.dcm \n", - " inflating: dcm/IMG0048.dcm \n", - " inflating: dcm/IMG0049.dcm \n", - " inflating: dcm/IMG0050.dcm \n", - " inflating: dcm/IMG0051.dcm \n", - " inflating: dcm/IMG0052.dcm \n", - " inflating: dcm/IMG0053.dcm \n", - " inflating: dcm/IMG0054.dcm \n", - " inflating: dcm/IMG0055.dcm \n", - " inflating: dcm/IMG0056.dcm \n", - " inflating: dcm/IMG0057.dcm \n", - " inflating: dcm/IMG0058.dcm \n", - " inflating: dcm/IMG0059.dcm \n", - " inflating: dcm/IMG0060.dcm \n", - " inflating: dcm/IMG0061.dcm \n", - " inflating: dcm/IMG0062.dcm \n", - " inflating: dcm/IMG0063.dcm \n", - " inflating: dcm/IMG0064.dcm \n", - " inflating: dcm/IMG0065.dcm \n", - " inflating: dcm/IMG0066.dcm \n", - " inflating: dcm/IMG0067.dcm \n", - " inflating: dcm/IMG0068.dcm \n", - " inflating: dcm/IMG0069.dcm \n", - " inflating: dcm/IMG0070.dcm \n", - " inflating: dcm/IMG0071.dcm \n", - " inflating: dcm/IMG0072.dcm \n", - " inflating: dcm/IMG0073.dcm \n", - " inflating: dcm/IMG0074.dcm \n", - " inflating: dcm/IMG0075.dcm \n", - " inflating: dcm/IMG0076.dcm \n", - " inflating: dcm/IMG0077.dcm \n", - " inflating: dcm/IMG0078.dcm \n", - " inflating: dcm/IMG0079.dcm \n", - " inflating: dcm/IMG0080.dcm \n", - " inflating: dcm/IMG0081.dcm \n", - " inflating: dcm/IMG0082.dcm \n", - " inflating: dcm/IMG0083.dcm \n", - " inflating: dcm/IMG0084.dcm \n", - " inflating: dcm/IMG0085.dcm \n", - " inflating: dcm/IMG0086.dcm \n", - " inflating: dcm/IMG0087.dcm \n", - " inflating: dcm/IMG0088.dcm \n", - " inflating: dcm/IMG0089.dcm \n", - " inflating: dcm/IMG0090.dcm \n", - " inflating: dcm/IMG0091.dcm \n", - " inflating: dcm/IMG0092.dcm \n", - " inflating: dcm/IMG0093.dcm \n", - " inflating: dcm/IMG0094.dcm \n", - " inflating: dcm/IMG0095.dcm \n", - " inflating: dcm/IMG0096.dcm \n", - " inflating: dcm/IMG0097.dcm \n", - " inflating: dcm/IMG0098.dcm \n", - " inflating: dcm/IMG0099.dcm \n", - " inflating: dcm/IMG0100.dcm \n", - " inflating: dcm/IMG0101.dcm \n", - " inflating: dcm/IMG0102.dcm \n", - " inflating: dcm/IMG0103.dcm \n", - " inflating: dcm/IMG0104.dcm \n", - " inflating: dcm/IMG0105.dcm \n", - " inflating: dcm/IMG0106.dcm \n", - " inflating: dcm/IMG0107.dcm \n", - " inflating: dcm/IMG0108.dcm \n", - " inflating: dcm/IMG0109.dcm \n", - " inflating: dcm/IMG0110.dcm \n", - " inflating: dcm/IMG0111.dcm \n", - " inflating: dcm/IMG0112.dcm \n", - " inflating: dcm/IMG0113.dcm \n", - " inflating: dcm/IMG0114.dcm \n", - " inflating: dcm/IMG0115.dcm \n", - " inflating: dcm/IMG0116.dcm \n", - " inflating: dcm/IMG0117.dcm \n", - " inflating: dcm/IMG0118.dcm \n", - " inflating: dcm/IMG0119.dcm \n", - " inflating: dcm/IMG0120.dcm \n", - " inflating: dcm/IMG0121.dcm \n", - " inflating: dcm/IMG0122.dcm \n", - " inflating: dcm/IMG0123.dcm \n", - " inflating: dcm/IMG0124.dcm \n", - " inflating: dcm/IMG0125.dcm \n", - " inflating: dcm/IMG0126.dcm \n", - " inflating: dcm/IMG0127.dcm \n", - " inflating: dcm/IMG0128.dcm \n", - " inflating: dcm/IMG0129.dcm \n", - " inflating: dcm/IMG0130.dcm \n", - " inflating: dcm/IMG0131.dcm \n", - " inflating: dcm/IMG0132.dcm \n", - " inflating: dcm/IMG0133.dcm \n", - " inflating: dcm/IMG0134.dcm \n", - " inflating: dcm/IMG0135.dcm \n", - " inflating: dcm/IMG0136.dcm \n", - " inflating: dcm/IMG0137.dcm \n", - " inflating: dcm/IMG0138.dcm \n", - " inflating: dcm/IMG0139.dcm \n", - " inflating: dcm/IMG0140.dcm \n", - " inflating: dcm/IMG0141.dcm \n", - " inflating: dcm/IMG0142.dcm \n", - " inflating: dcm/IMG0143.dcm \n", - " inflating: dcm/IMG0144.dcm \n", - " inflating: dcm/IMG0145.dcm \n", - " inflating: dcm/IMG0146.dcm \n", - " inflating: dcm/IMG0147.dcm \n", - " inflating: dcm/IMG0148.dcm \n", - " inflating: dcm/IMG0149.dcm \n", - " inflating: dcm/IMG0150.dcm \n", - " inflating: dcm/IMG0151.dcm \n", - " inflating: dcm/IMG0152.dcm \n", - " inflating: dcm/IMG0153.dcm \n", - " inflating: dcm/IMG0154.dcm \n", - " inflating: dcm/IMG0155.dcm \n", - " inflating: dcm/IMG0156.dcm \n", - " inflating: dcm/IMG0157.dcm \n", - " inflating: dcm/IMG0158.dcm \n", - " inflating: dcm/IMG0159.dcm \n", - " inflating: dcm/IMG0160.dcm \n", - " inflating: dcm/IMG0161.dcm \n", - " inflating: dcm/IMG0162.dcm \n", - " inflating: dcm/IMG0163.dcm \n", - " inflating: dcm/IMG0164.dcm \n", - " inflating: dcm/IMG0165.dcm \n", - " inflating: dcm/IMG0166.dcm \n", - " inflating: dcm/IMG0167.dcm \n", - " inflating: dcm/IMG0168.dcm \n", - " inflating: dcm/IMG0169.dcm \n", - " inflating: dcm/IMG0170.dcm \n", - " inflating: dcm/IMG0171.dcm \n", - " inflating: dcm/IMG0172.dcm \n", - " inflating: dcm/IMG0173.dcm \n", - " inflating: dcm/IMG0174.dcm \n", - " inflating: dcm/IMG0175.dcm \n", - " inflating: dcm/IMG0176.dcm \n", - " inflating: dcm/IMG0177.dcm \n", - " inflating: dcm/IMG0178.dcm \n", - " inflating: dcm/IMG0179.dcm \n", - " inflating: dcm/IMG0180.dcm \n", - " inflating: dcm/IMG0181.dcm \n", - " inflating: dcm/IMG0182.dcm \n", - " inflating: dcm/IMG0183.dcm \n", - " inflating: dcm/IMG0184.dcm \n", - " inflating: dcm/IMG0185.dcm \n", - " inflating: dcm/IMG0186.dcm \n", - " inflating: dcm/IMG0187.dcm \n", - " inflating: dcm/IMG0188.dcm \n", - " inflating: dcm/IMG0189.dcm \n", - " inflating: dcm/IMG0190.dcm \n", - " inflating: dcm/IMG0191.dcm \n", - " inflating: dcm/IMG0192.dcm \n", - " inflating: dcm/IMG0193.dcm \n", - " inflating: dcm/IMG0194.dcm \n", - " inflating: dcm/IMG0195.dcm \n", - " inflating: dcm/IMG0196.dcm \n", - " inflating: dcm/IMG0197.dcm \n", - " inflating: dcm/IMG0198.dcm \n", - " inflating: dcm/IMG0199.dcm \n", - " inflating: dcm/IMG0200.dcm \n", - " inflating: dcm/IMG0201.dcm \n", - " inflating: dcm/IMG0202.dcm \n", - " inflating: dcm/IMG0203.dcm \n", - " inflating: dcm/IMG0204.dcm \n", - " inflating: dcm/IMG0205.dcm \n", - " inflating: dcm/IMG0206.dcm \n", - " inflating: dcm/IMG0207.dcm \n", - " inflating: dcm/IMG0208.dcm \n", - " inflating: dcm/IMG0209.dcm \n", - " inflating: dcm/IMG0210.dcm \n", - " inflating: dcm/IMG0211.dcm \n", - " inflating: dcm/IMG0212.dcm \n", - " inflating: dcm/IMG0213.dcm \n", - " inflating: dcm/IMG0214.dcm \n", - " inflating: dcm/IMG0215.dcm \n", - " inflating: dcm/IMG0216.dcm \n", - " inflating: dcm/IMG0217.dcm \n", - " inflating: dcm/IMG0218.dcm \n", - " inflating: dcm/IMG0219.dcm \n", - " inflating: dcm/IMG0220.dcm \n", - " inflating: dcm/IMG0221.dcm \n", - " inflating: dcm/IMG0222.dcm \n", - " inflating: dcm/IMG0223.dcm \n", - " inflating: dcm/IMG0224.dcm \n", - " inflating: dcm/IMG0225.dcm \n", - " inflating: dcm/IMG0226.dcm \n", - " inflating: dcm/IMG0227.dcm \n", - " inflating: dcm/IMG0228.dcm \n", - " inflating: dcm/IMG0229.dcm \n", - " inflating: dcm/IMG0230.dcm \n", - " inflating: dcm/IMG0231.dcm \n", - " inflating: dcm/IMG0232.dcm \n", - " inflating: dcm/IMG0233.dcm \n", - " inflating: dcm/IMG0234.dcm \n", - " inflating: dcm/IMG0235.dcm \n", - " inflating: dcm/IMG0236.dcm \n", - " inflating: dcm/IMG0237.dcm \n", - " inflating: dcm/IMG0238.dcm \n", - " inflating: dcm/IMG0239.dcm \n", - " inflating: dcm/IMG0240.dcm \n", - " inflating: dcm/IMG0241.dcm \n", - " inflating: dcm/IMG0242.dcm \n", - " inflating: dcm/IMG0243.dcm \n", - " inflating: dcm/IMG0244.dcm \n", - " inflating: dcm/IMG0245.dcm \n", - " inflating: dcm/IMG0246.dcm \n", - " inflating: dcm/IMG0247.dcm \n", - " inflating: dcm/IMG0248.dcm \n", - " inflating: dcm/IMG0249.dcm \n", - " inflating: dcm/IMG0250.dcm \n", - " inflating: dcm/IMG0251.dcm \n", - " inflating: dcm/IMG0252.dcm \n", - " inflating: dcm/IMG0253.dcm \n", - " inflating: dcm/IMG0254.dcm \n", - " inflating: dcm/IMG0255.dcm \n", - " inflating: dcm/IMG0256.dcm \n", - " inflating: dcm/IMG0257.dcm \n", - " inflating: dcm/IMG0258.dcm \n", - " inflating: dcm/IMG0259.dcm \n", - " inflating: dcm/IMG0260.dcm \n", - " inflating: dcm/IMG0261.dcm \n", - " inflating: dcm/IMG0262.dcm \n", - " inflating: dcm/IMG0263.dcm \n", - " inflating: dcm/IMG0264.dcm \n", - " inflating: dcm/IMG0265.dcm \n", - " inflating: dcm/IMG0266.dcm \n", - " inflating: dcm/IMG0267.dcm \n", - " inflating: dcm/IMG0268.dcm \n", - " inflating: dcm/IMG0269.dcm \n", - " inflating: dcm/IMG0270.dcm \n", - " inflating: dcm/IMG0271.dcm \n", - " inflating: dcm/IMG0272.dcm \n", - " inflating: dcm/IMG0273.dcm \n", - " inflating: dcm/IMG0274.dcm \n", - " inflating: dcm/IMG0275.dcm \n", - " inflating: dcm/IMG0276.dcm \n", - " inflating: dcm/IMG0277.dcm \n", - " inflating: dcm/IMG0278.dcm \n", - " inflating: dcm/IMG0279.dcm \n", - " inflating: dcm/IMG0280.dcm \n", - " inflating: dcm/IMG0281.dcm \n", - " inflating: dcm/IMG0282.dcm \n", - " inflating: dcm/IMG0283.dcm \n", - " inflating: dcm/IMG0284.dcm \n", - " inflating: dcm/IMG0285.dcm \n", - " inflating: dcm/IMG0286.dcm \n", - " inflating: dcm/IMG0287.dcm \n", - " inflating: dcm/IMG0288.dcm \n", - " inflating: dcm/IMG0289.dcm \n", - " inflating: dcm/IMG0290.dcm \n", - " inflating: dcm/IMG0291.dcm \n", - " inflating: dcm/IMG0292.dcm \n", - " inflating: dcm/IMG0293.dcm \n", - " inflating: dcm/IMG0294.dcm \n", - " inflating: dcm/IMG0295.dcm \n", - " inflating: dcm/IMG0296.dcm \n", - " inflating: dcm/IMG0297.dcm \n", - " inflating: dcm/IMG0298.dcm \n", - " inflating: dcm/IMG0299.dcm \n", - " inflating: dcm/IMG0300.dcm \n", - " inflating: dcm/IMG0301.dcm \n", - " inflating: dcm/IMG0302.dcm \n", - " inflating: dcm/IMG0303.dcm \n", - " inflating: dcm/IMG0304.dcm \n", - " inflating: dcm/IMG0305.dcm \n", - " inflating: dcm/IMG0306.dcm \n", - " inflating: dcm/IMG0307.dcm \n", - " inflating: dcm/IMG0308.dcm \n", - " inflating: dcm/IMG0309.dcm \n", - " inflating: dcm/IMG0310.dcm \n", - " inflating: dcm/IMG0311.dcm \n", - " inflating: dcm/IMG0312.dcm \n", - " inflating: dcm/IMG0313.dcm \n", - " inflating: dcm/IMG0314.dcm \n", - " inflating: dcm/IMG0315.dcm \n", - " inflating: dcm/IMG0316.dcm \n", - " inflating: dcm/IMG0317.dcm \n", - " inflating: dcm/IMG0318.dcm \n", - " inflating: dcm/IMG0319.dcm \n", - " inflating: dcm/IMG0320.dcm \n", - " inflating: dcm/IMG0321.dcm \n", - " inflating: dcm/IMG0322.dcm \n", - " inflating: dcm/IMG0323.dcm \n", - " inflating: dcm/IMG0324.dcm \n", - " inflating: dcm/IMG0325.dcm \n", - " inflating: dcm/IMG0326.dcm \n", - " inflating: dcm/IMG0327.dcm \n", - " inflating: dcm/IMG0328.dcm \n", - " inflating: dcm/IMG0329.dcm \n", - " inflating: dcm/IMG0330.dcm \n", - " inflating: dcm/IMG0331.dcm \n", - " inflating: dcm/IMG0332.dcm \n", - " inflating: dcm/IMG0333.dcm \n", - " inflating: dcm/IMG0334.dcm \n", - " inflating: dcm/IMG0335.dcm \n", - " inflating: dcm/IMG0336.dcm \n", - " inflating: dcm/IMG0337.dcm \n", - " inflating: dcm/IMG0338.dcm \n", - " inflating: dcm/IMG0339.dcm \n", - " inflating: dcm/IMG0340.dcm \n", - " inflating: dcm/IMG0341.dcm \n", - " inflating: dcm/IMG0342.dcm \n", - " inflating: dcm/IMG0343.dcm \n", - " inflating: dcm/IMG0344.dcm \n", - " inflating: dcm/IMG0345.dcm \n", - " inflating: dcm/IMG0346.dcm \n", - " inflating: dcm/IMG0347.dcm \n", - " inflating: dcm/IMG0348.dcm \n", - " inflating: dcm/IMG0349.dcm \n", - " inflating: dcm/IMG0350.dcm \n", - " inflating: dcm/IMG0351.dcm \n", - " inflating: dcm/IMG0352.dcm \n", - " inflating: dcm/IMG0353.dcm \n", - " inflating: dcm/IMG0354.dcm \n", - " inflating: dcm/IMG0355.dcm \n", - " inflating: dcm/IMG0356.dcm \n", - " inflating: dcm/IMG0357.dcm \n", - " inflating: dcm/IMG0358.dcm \n", - " inflating: dcm/IMG0359.dcm \n", - " inflating: dcm/IMG0360.dcm \n", - " inflating: dcm/IMG0361.dcm \n", - " inflating: dcm/IMG0362.dcm \n", - " inflating: dcm/IMG0363.dcm \n", - " inflating: dcm/IMG0364.dcm \n", - " inflating: dcm/IMG0365.dcm \n", - " inflating: dcm/IMG0366.dcm \n", - " inflating: dcm/IMG0367.dcm \n", - " inflating: dcm/IMG0368.dcm \n", - " inflating: dcm/IMG0369.dcm \n", - " inflating: dcm/IMG0370.dcm \n", - " inflating: dcm/IMG0371.dcm \n", - " inflating: dcm/IMG0372.dcm \n", - " inflating: dcm/IMG0373.dcm \n", - " inflating: dcm/IMG0374.dcm \n", - " inflating: dcm/IMG0375.dcm \n", - " inflating: dcm/IMG0376.dcm \n", - " inflating: dcm/IMG0377.dcm \n", - " inflating: dcm/IMG0378.dcm \n", - " inflating: dcm/IMG0379.dcm \n", - " inflating: dcm/IMG0380.dcm \n", - " inflating: dcm/IMG0381.dcm \n", - " inflating: dcm/IMG0382.dcm \n", - " inflating: dcm/IMG0383.dcm \n", - " inflating: dcm/IMG0384.dcm \n", - " inflating: dcm/IMG0385.dcm \n", - " inflating: dcm/IMG0386.dcm \n", - " inflating: dcm/IMG0387.dcm \n", - " inflating: dcm/IMG0388.dcm \n", - " inflating: dcm/IMG0389.dcm \n", - " inflating: dcm/IMG0390.dcm \n", - " inflating: dcm/IMG0391.dcm \n", - " inflating: dcm/IMG0392.dcm \n", - " inflating: dcm/IMG0393.dcm \n", - " inflating: dcm/IMG0394.dcm \n", - " inflating: dcm/IMG0395.dcm \n", - " inflating: dcm/IMG0396.dcm \n", - " inflating: dcm/IMG0397.dcm \n", - " inflating: dcm/IMG0398.dcm \n", - " inflating: dcm/IMG0399.dcm \n", - " inflating: dcm/IMG0400.dcm \n", - " inflating: dcm/IMG0401.dcm \n", - " inflating: dcm/IMG0402.dcm \n", - " inflating: dcm/IMG0403.dcm \n", - " inflating: dcm/IMG0404.dcm \n", - " inflating: dcm/IMG0405.dcm \n", - " inflating: dcm/IMG0406.dcm \n", - " inflating: dcm/IMG0407.dcm \n", - " inflating: dcm/IMG0408.dcm \n", - " inflating: dcm/IMG0409.dcm \n", - " inflating: dcm/IMG0410.dcm \n", - " inflating: dcm/IMG0411.dcm \n", - " inflating: dcm/IMG0412.dcm \n", - " inflating: dcm/IMG0413.dcm \n", - " inflating: dcm/IMG0414.dcm \n", - " inflating: dcm/IMG0415.dcm \n", - " inflating: dcm/IMG0416.dcm \n", - " inflating: dcm/IMG0417.dcm \n", - " inflating: dcm/IMG0418.dcm \n", - " inflating: dcm/IMG0419.dcm \n", - " inflating: dcm/IMG0420.dcm \n", - " inflating: dcm/IMG0421.dcm \n", - " inflating: dcm/IMG0422.dcm \n", - " inflating: dcm/IMG0423.dcm \n", - " inflating: dcm/IMG0424.dcm \n", - " inflating: dcm/IMG0425.dcm \n", - " inflating: dcm/IMG0426.dcm \n", - " inflating: dcm/IMG0427.dcm \n", - " inflating: dcm/IMG0428.dcm \n", - " inflating: dcm/IMG0429.dcm \n", - " inflating: dcm/IMG0430.dcm \n", - " inflating: dcm/IMG0431.dcm \n", - " inflating: dcm/IMG0432.dcm \n", - " inflating: dcm/IMG0433.dcm \n", - " inflating: dcm/IMG0434.dcm \n", - " inflating: dcm/IMG0435.dcm \n", - " inflating: dcm/IMG0436.dcm \n", - " inflating: dcm/IMG0437.dcm \n", - " inflating: dcm/IMG0438.dcm \n", - " inflating: dcm/IMG0439.dcm \n", - " inflating: dcm/IMG0440.dcm \n", - " inflating: dcm/IMG0441.dcm \n", - " inflating: dcm/IMG0442.dcm \n", - " inflating: dcm/IMG0443.dcm \n", - " inflating: dcm/IMG0444.dcm \n", - " inflating: dcm/IMG0445.dcm \n", - " inflating: dcm/IMG0446.dcm \n", - " inflating: dcm/IMG0447.dcm \n", - " inflating: dcm/IMG0448.dcm \n", - " inflating: dcm/IMG0449.dcm \n", - " inflating: dcm/IMG0450.dcm \n", - " inflating: dcm/IMG0451.dcm \n", - " inflating: dcm/IMG0452.dcm \n", - " inflating: dcm/IMG0453.dcm \n", - " inflating: dcm/IMG0454.dcm \n", - " inflating: dcm/IMG0455.dcm \n", - " inflating: dcm/IMG0456.dcm \n", - " inflating: dcm/IMG0457.dcm \n", - " inflating: dcm/IMG0458.dcm \n", - " inflating: dcm/IMG0459.dcm \n", - " inflating: dcm/IMG0460.dcm \n", - " inflating: dcm/IMG0461.dcm \n", - " inflating: dcm/IMG0462.dcm \n", - " inflating: dcm/IMG0463.dcm \n", - " inflating: dcm/IMG0464.dcm \n", - " inflating: dcm/IMG0465.dcm \n", - " inflating: dcm/IMG0466.dcm \n", - " inflating: dcm/IMG0467.dcm \n", - " inflating: dcm/IMG0468.dcm \n", - " inflating: dcm/IMG0469.dcm \n", - " inflating: dcm/IMG0470.dcm \n", - " inflating: dcm/IMG0471.dcm \n", - " inflating: dcm/IMG0472.dcm \n", - " inflating: dcm/IMG0473.dcm \n", - " inflating: dcm/IMG0474.dcm \n", - " inflating: dcm/IMG0475.dcm \n", - " inflating: dcm/IMG0476.dcm \n", - " inflating: dcm/IMG0477.dcm \n", - " inflating: dcm/IMG0478.dcm \n", - " inflating: dcm/IMG0479.dcm \n", - " inflating: dcm/IMG0480.dcm \n", - " inflating: dcm/IMG0481.dcm \n", - " inflating: dcm/IMG0482.dcm \n", - " inflating: dcm/IMG0483.dcm \n", - " inflating: dcm/IMG0484.dcm \n", - " inflating: dcm/IMG0485.dcm \n", - " inflating: dcm/IMG0486.dcm \n", - " inflating: dcm/IMG0487.dcm \n", - " inflating: dcm/IMG0488.dcm \n", - " inflating: dcm/IMG0489.dcm \n", - " inflating: dcm/IMG0490.dcm \n", - " inflating: dcm/IMG0491.dcm \n", - " inflating: dcm/IMG0492.dcm \n", - " inflating: dcm/IMG0493.dcm \n", - " inflating: dcm/IMG0494.dcm \n", - " inflating: dcm/IMG0495.dcm \n", - " inflating: dcm/IMG0496.dcm \n", - " inflating: dcm/IMG0497.dcm \n", - " inflating: dcm/IMG0498.dcm \n", - " inflating: dcm/IMG0499.dcm \n", - " inflating: dcm/IMG0500.dcm \n", - " inflating: dcm/IMG0501.dcm \n", - " inflating: dcm/IMG0502.dcm \n", - " inflating: dcm/IMG0503.dcm \n", - " inflating: dcm/IMG0504.dcm \n", - " inflating: dcm/IMG0505.dcm \n", - " inflating: dcm/IMG0506.dcm \n", - " inflating: dcm/IMG0507.dcm \n", - " inflating: dcm/IMG0508.dcm \n", - " inflating: dcm/IMG0509.dcm \n", - " inflating: dcm/IMG0510.dcm \n", - " inflating: dcm/IMG0511.dcm \n", - " inflating: dcm/IMG0512.dcm \n", - " inflating: dcm/IMG0513.dcm \n", - " inflating: dcm/IMG0514.dcm \n", - " inflating: dcm/IMG0515.dcm \n", + "From: https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\n", + "To: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_seg_bundle_data.zip\n", + "100%|███████████████████████████████████████| 79.4M/79.4M [00:00<00:00, 110MB/s]\n", + "Archive: ai_spleen_seg_bundle_data.zip\n", + " inflating: dcm/1-001.dcm \n", + " inflating: dcm/1-002.dcm \n", + " inflating: dcm/1-003.dcm \n", + " inflating: dcm/1-004.dcm \n", + " inflating: dcm/1-005.dcm \n", + " inflating: dcm/1-006.dcm \n", + " inflating: dcm/1-007.dcm \n", + " inflating: dcm/1-008.dcm \n", + " inflating: dcm/1-009.dcm \n", + " inflating: dcm/1-010.dcm \n", + " inflating: dcm/1-011.dcm \n", + " inflating: dcm/1-012.dcm \n", + " inflating: dcm/1-013.dcm \n", + " inflating: dcm/1-014.dcm \n", + " inflating: dcm/1-015.dcm \n", + " inflating: dcm/1-016.dcm \n", + " inflating: dcm/1-017.dcm \n", + " inflating: dcm/1-018.dcm \n", + " inflating: dcm/1-019.dcm \n", + " inflating: dcm/1-020.dcm \n", + " inflating: dcm/1-021.dcm \n", + " inflating: dcm/1-022.dcm \n", + " inflating: dcm/1-023.dcm \n", + " inflating: dcm/1-024.dcm \n", + " inflating: dcm/1-025.dcm \n", + " inflating: dcm/1-026.dcm \n", + " inflating: dcm/1-027.dcm \n", + " inflating: dcm/1-028.dcm \n", + " inflating: dcm/1-029.dcm \n", + " inflating: dcm/1-030.dcm \n", + " inflating: dcm/1-031.dcm \n", + " inflating: dcm/1-032.dcm \n", + " inflating: dcm/1-033.dcm \n", + " inflating: dcm/1-034.dcm \n", + " inflating: dcm/1-035.dcm \n", + " inflating: dcm/1-036.dcm \n", + " inflating: dcm/1-037.dcm \n", + " inflating: dcm/1-038.dcm \n", + " inflating: dcm/1-039.dcm \n", + " inflating: dcm/1-040.dcm \n", + " inflating: dcm/1-041.dcm \n", + " inflating: dcm/1-042.dcm \n", + " inflating: dcm/1-043.dcm \n", + " inflating: dcm/1-044.dcm \n", + " inflating: dcm/1-045.dcm \n", + " inflating: dcm/1-046.dcm \n", + " inflating: dcm/1-047.dcm \n", + " inflating: dcm/1-048.dcm \n", + " inflating: dcm/1-049.dcm \n", + " inflating: dcm/1-050.dcm \n", + " inflating: dcm/1-051.dcm \n", + " inflating: dcm/1-052.dcm \n", + " inflating: dcm/1-053.dcm \n", + " inflating: dcm/1-054.dcm \n", + " inflating: dcm/1-055.dcm \n", + " inflating: dcm/1-056.dcm \n", + " inflating: dcm/1-057.dcm \n", + " inflating: dcm/1-058.dcm \n", + " inflating: dcm/1-059.dcm \n", + " inflating: dcm/1-060.dcm \n", + " inflating: dcm/1-061.dcm \n", + " inflating: dcm/1-062.dcm \n", + " inflating: dcm/1-063.dcm \n", + " inflating: dcm/1-064.dcm \n", + " inflating: dcm/1-065.dcm \n", + " inflating: dcm/1-066.dcm \n", + " inflating: dcm/1-067.dcm \n", + " inflating: dcm/1-068.dcm \n", + " inflating: dcm/1-069.dcm \n", + " inflating: dcm/1-070.dcm \n", + " inflating: dcm/1-071.dcm \n", + " inflating: dcm/1-072.dcm \n", + " inflating: dcm/1-073.dcm \n", + " inflating: dcm/1-074.dcm \n", + " inflating: dcm/1-075.dcm \n", + " inflating: dcm/1-076.dcm \n", + " inflating: dcm/1-077.dcm \n", + " inflating: dcm/1-078.dcm \n", + " inflating: dcm/1-079.dcm \n", + " inflating: dcm/1-080.dcm \n", + " inflating: dcm/1-081.dcm \n", + " inflating: dcm/1-082.dcm \n", + " inflating: dcm/1-083.dcm \n", + " inflating: dcm/1-084.dcm \n", + " inflating: dcm/1-085.dcm \n", + " inflating: dcm/1-086.dcm \n", + " inflating: dcm/1-087.dcm \n", + " inflating: dcm/1-088.dcm \n", + " inflating: dcm/1-089.dcm \n", + " inflating: dcm/1-090.dcm \n", + " inflating: dcm/1-091.dcm \n", + " inflating: dcm/1-092.dcm \n", + " inflating: dcm/1-093.dcm \n", + " inflating: dcm/1-094.dcm \n", + " inflating: dcm/1-095.dcm \n", + " inflating: dcm/1-096.dcm \n", + " inflating: dcm/1-097.dcm \n", + " inflating: dcm/1-098.dcm \n", + " inflating: dcm/1-099.dcm \n", + " inflating: dcm/1-100.dcm \n", + " inflating: dcm/1-101.dcm \n", + " inflating: dcm/1-102.dcm \n", + " inflating: dcm/1-103.dcm \n", + " inflating: dcm/1-104.dcm \n", + " inflating: dcm/1-105.dcm \n", + " inflating: dcm/1-106.dcm \n", + " inflating: dcm/1-107.dcm \n", + " inflating: dcm/1-108.dcm \n", + " inflating: dcm/1-109.dcm \n", + " inflating: dcm/1-110.dcm \n", + " inflating: dcm/1-111.dcm \n", + " inflating: dcm/1-112.dcm \n", + " inflating: dcm/1-113.dcm \n", + " inflating: dcm/1-114.dcm \n", + " inflating: dcm/1-115.dcm \n", + " inflating: dcm/1-116.dcm \n", + " inflating: dcm/1-117.dcm \n", + " inflating: dcm/1-118.dcm \n", + " inflating: dcm/1-119.dcm \n", + " inflating: dcm/1-120.dcm \n", + " inflating: dcm/1-121.dcm \n", + " inflating: dcm/1-122.dcm \n", + " inflating: dcm/1-123.dcm \n", + " inflating: dcm/1-124.dcm \n", + " inflating: dcm/1-125.dcm \n", + " inflating: dcm/1-126.dcm \n", + " inflating: dcm/1-127.dcm \n", + " inflating: dcm/1-128.dcm \n", + " inflating: dcm/1-129.dcm \n", + " inflating: dcm/1-130.dcm \n", + " inflating: dcm/1-131.dcm \n", + " inflating: dcm/1-132.dcm \n", + " inflating: dcm/1-133.dcm \n", + " inflating: dcm/1-134.dcm \n", + " inflating: dcm/1-135.dcm \n", + " inflating: dcm/1-136.dcm \n", + " inflating: dcm/1-137.dcm \n", + " inflating: dcm/1-138.dcm \n", + " inflating: dcm/1-139.dcm \n", + " inflating: dcm/1-140.dcm \n", + " inflating: dcm/1-141.dcm \n", + " inflating: dcm/1-142.dcm \n", + " inflating: dcm/1-143.dcm \n", + " inflating: dcm/1-144.dcm \n", + " inflating: dcm/1-145.dcm \n", + " inflating: dcm/1-146.dcm \n", + " inflating: dcm/1-147.dcm \n", + " inflating: dcm/1-148.dcm \n", + " inflating: dcm/1-149.dcm \n", + " inflating: dcm/1-150.dcm \n", + " inflating: dcm/1-151.dcm \n", + " inflating: dcm/1-152.dcm \n", + " inflating: dcm/1-153.dcm \n", + " inflating: dcm/1-154.dcm \n", + " inflating: dcm/1-155.dcm \n", + " inflating: dcm/1-156.dcm \n", + " inflating: dcm/1-157.dcm \n", + " inflating: dcm/1-158.dcm \n", + " inflating: dcm/1-159.dcm \n", + " inflating: dcm/1-160.dcm \n", + " inflating: dcm/1-161.dcm \n", + " inflating: dcm/1-162.dcm \n", + " inflating: dcm/1-163.dcm \n", + " inflating: dcm/1-164.dcm \n", + " inflating: dcm/1-165.dcm \n", + " inflating: dcm/1-166.dcm \n", + " inflating: dcm/1-167.dcm \n", + " inflating: dcm/1-168.dcm \n", + " inflating: dcm/1-169.dcm \n", + " inflating: dcm/1-170.dcm \n", + " inflating: dcm/1-171.dcm \n", + " inflating: dcm/1-172.dcm \n", + " inflating: dcm/1-173.dcm \n", + " inflating: dcm/1-174.dcm \n", + " inflating: dcm/1-175.dcm \n", + " inflating: dcm/1-176.dcm \n", + " inflating: dcm/1-177.dcm \n", + " inflating: dcm/1-178.dcm \n", + " inflating: dcm/1-179.dcm \n", + " inflating: dcm/1-180.dcm \n", + " inflating: dcm/1-181.dcm \n", + " inflating: dcm/1-182.dcm \n", + " inflating: dcm/1-183.dcm \n", + " inflating: dcm/1-184.dcm \n", + " inflating: dcm/1-185.dcm \n", + " inflating: dcm/1-186.dcm \n", + " inflating: dcm/1-187.dcm \n", + " inflating: dcm/1-188.dcm \n", + " inflating: dcm/1-189.dcm \n", + " inflating: dcm/1-190.dcm \n", + " inflating: dcm/1-191.dcm \n", + " inflating: dcm/1-192.dcm \n", + " inflating: dcm/1-193.dcm \n", + " inflating: dcm/1-194.dcm \n", + " inflating: dcm/1-195.dcm \n", + " inflating: dcm/1-196.dcm \n", + " inflating: dcm/1-197.dcm \n", + " inflating: dcm/1-198.dcm \n", + " inflating: dcm/1-199.dcm \n", + " inflating: dcm/1-200.dcm \n", + " inflating: dcm/1-201.dcm \n", + " inflating: dcm/1-202.dcm \n", + " inflating: dcm/1-203.dcm \n", + " inflating: dcm/1-204.dcm \n", " inflating: model.ts \n" ] } @@ -671,10 +360,10 @@ "source": [ "# Download ai_spleen_bundle_data test data zip file\n", "!pip install gdown \n", - "!gdown \"https://drive.google.com/uc?id=1cJq0iQh_yzYIxVElSlVa141aEmHZADJh\"\n", + "!gdown \"https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\"\n", "\n", "# After downloading ai_spleen_bundle_data zip file from the web browser or using gdown,\n", - "!unzip -o \"ai_spleen_bundle_data.zip\"" + "!unzip -o \"ai_spleen_seg_bundle_data.zip\"" ] }, { @@ -688,7 +377,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -704,21 +393,24 @@ " Activationsd,\n", " AsDiscreted,\n", " Compose,\n", - " CropForegroundd,\n", " EnsureChannelFirstd,\n", + " EnsureTyped,\n", " Invertd,\n", " LoadImaged,\n", + " Orientationd,\n", " SaveImaged,\n", " ScaleIntensityRanged,\n", " Spacingd,\n", - " ToTensord,\n", ")\n", "\n", + "# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package.\n", + "from pydicom.sr.codedict import codes\n", + "\n", "from monai.deploy.core import Application, resource\n", "from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator\n", - "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator\n", + "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription\n", "from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator\n", - "from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator" + "from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator\n" ] }, { @@ -748,13 +440,13 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "@md.input(\"image\", Image, IOType.IN_MEMORY)\n", "@md.output(\"seg_image\", Image, IOType.IN_MEMORY)\n", - "@md.env(pip_packages=[\"monai>=0.8.1\", \"torch>=1.5\", \"numpy>=1.21\", \"nibabel\"])\n", + "@md.env(pip_packages=[\"monai>=0.8.1\", \"torch>=1.10.2\", \"numpy>=1.21\", \"nibabel\"])\n", "class SpleenSegOperator(Operator):\n", " \"\"\"Performs Spleen segmentation with a 3D image converted from a DICOM CT series.\n", " \"\"\"\n", @@ -782,9 +474,9 @@ " # Delegates inference and saving output to the built-in operator.\n", " infer_operator = MonaiSegInferenceOperator(\n", " (\n", - " 160,\n", - " 160,\n", - " 160,\n", + " 96,\n", + " 96,\n", + " 96,\n", " ),\n", " pre_transforms,\n", " post_transforms,\n", @@ -805,10 +497,10 @@ " [\n", " LoadImaged(keys=my_key, reader=img_reader),\n", " EnsureChannelFirstd(keys=my_key),\n", - " Spacingd(keys=my_key, pixdim=[1.0, 1.0, 1.0], mode=[\"bilinear\"], align_corners=True),\n", + " Orientationd(keys=my_key, axcodes=\"RAS\"),\n", + " Spacingd(keys=my_key, pixdim=[1.5, 1.5, 2.9], mode=[\"bilinear\"]),\n", " ScaleIntensityRanged(keys=my_key, a_min=-57, a_max=164, b_min=0.0, b_max=1.0, clip=True),\n", - " CropForegroundd(keys=my_key, source_key=my_key),\n", - " ToTensord(keys=my_key),\n", + " EnsureTyped(keys=my_key),\n", " ]\n", " )\n", "\n", @@ -819,11 +511,20 @@ " return Compose(\n", " [\n", " Activationsd(keys=pred_key, softmax=True),\n", - " AsDiscreted(keys=pred_key, argmax=True),\n", " Invertd(\n", - " keys=pred_key, transform=pre_transforms, orig_keys=self._input_dataset_key, nearest_interp=True\n", + " keys=pred_key,\n", + " transform=pre_transforms,\n", + " orig_keys=self._input_dataset_key,\n", + " nearest_interp=False,\n", + " to_tensor=True,\n", + " ),\n", + " AsDiscreted(keys=pred_key, argmax=True),\n", + " SaveImaged(\n", + " keys=pred_key,\n", + " output_dir=out_dir,\n", + " output_postfix=\"seg\",\n", + " output_dtype=uint8,\n", " ),\n", - " SaveImaged(keys=pred_key, output_dir=out_dir, output_postfix=\"seg\", output_dtype=uint8, resample=False),\n", " ]\n", " )\n" ] @@ -845,33 +546,103 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "@resource(cpu=1, gpu=1, memory=\"7Gi\")\n", "class AISpleenSegApp(Application):\n", " def __init__(self, *args, **kwargs):\n", + " \"\"\"Creates an application instance.\"\"\"\n", + "\n", + " self._logger = logging.getLogger(\"{}.{}\".format(__name__, type(self).__name__))\n", " super().__init__(*args, **kwargs)\n", "\n", + " def run(self, *args, **kwargs):\n", + " # This method calls the base class to run. Can be omitted if simply calling through.\n", + " self._logger.debug(f\"Begin {self.run.__name__}\")\n", + " super().run(*args, **kwargs)\n", + " self._logger.debug(f\"End {self.run.__name__}\")\n", + "\n", " def compose(self):\n", + " \"\"\"Creates the app specific operators and chain them up in the processing DAG.\"\"\"\n", "\n", + " self._logger.debug(f\"Begin {self.compose.__name__}\")\n", + " # Creates the custom operator(s) as well as SDK built-in operator(s).\n", " study_loader_op = DICOMDataLoaderOperator()\n", - " series_selector_op = DICOMSeriesSelectorOperator()\n", + " series_selector_op = DICOMSeriesSelectorOperator(rules=Sample_Rules_Text)\n", " series_to_vol_op = DICOMSeriesToVolumeOperator()\n", - " # Creates DICOM Seg writer with segment label name in a string list\n", - " dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=[\"Spleen\"])\n", + " # Model specific inference operator, supporting MONAI transforms.\n", "\n", " # Creates the model specific segmentation operator\n", " spleen_seg_op = SpleenSegOperator()\n", "\n", - " # Creates the DAG by linking the operators\n", + " # Create DICOM Seg writer providing the required segment description for each segment with\n", + " # the actual algorithm and the pertinent organ/tissue.\n", + " # The segment_label, algorithm_name, and algorithm_version are limited to 64 chars.\n", + " # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html\n", + " # User can Look up SNOMED CT codes at, e.g.\n", + " # https://bioportal.bioontology.org/ontologies/SNOMEDCT\n", + "\n", + " _algorithm_name = \"3D segmentation of the Spleen from a CT series\"\n", + " _algorithm_family = codes.DCM.ArtificialIntelligence\n", + " _algorithm_version = \"0.1.0\"\n", + "\n", + " segment_descriptions = [\n", + " SegmentDescription(\n", + " segment_label=\"Lung\",\n", + " segmented_property_category=codes.SCT.Organ,\n", + " segmented_property_type=codes.SCT.Lung,\n", + " algorithm_name=_algorithm_name,\n", + " algorithm_family=_algorithm_family,\n", + " algorithm_version=_algorithm_version,\n", + " ),\n", + " ]\n", + "\n", + " custom_tags = {\"SeriesDescription\": \"AI generated Seg, not for clinical use.\"}\n", + "\n", + " dicom_seg_writer = DICOMSegmentationWriterOperator(\n", + " segment_descriptions=segment_descriptions, custom_tags=custom_tags\n", + " )\n", + "\n", + " # Create the processing pipeline, by specifying the source and destination operators, and\n", + " # ensuring the output from the former matches the input of the latter, in both name and type.\n", " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", - " self.add_flow(series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", + " self.add_flow(\n", + " series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", " self.add_flow(series_to_vol_op, spleen_seg_op, {\"image\": \"image\"})\n", "\n", - " self.add_flow(series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", - " self.add_flow(spleen_seg_op, dicom_seg_writer, {\"seg_image\": \"seg_image\"})\n" + " # Note below the dicom_seg_writer requires two inputs, each coming from a source operator.\n", + " self.add_flow(\n", + " series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", + " self.add_flow(spleen_seg_op, dicom_seg_writer, {\"seg_image\": \"seg_image\"})\n", + "\n", + " self._logger.debug(f\"End {self.compose.__name__}\")\n", + "\n", + "\n", + "# This is a sample series selection rule in JSON, simply selecting CT series.\n", + "# If the study has more than 1 CT series, then all of them will be selected.\n", + "# Please see more detail in DICOMSeriesSelectorOperator.\n", + "# For list of string values, e.g. \"ImageType\": [\"PRIMARY\", \"ORIGINAL\"], it is a match if all elements\n", + "# are all in the multi-value attribute of the DICOM series.\n", + "\n", + "Sample_Rules_Text = \"\"\"\n", + "{\n", + " \"selections\": [\n", + " {\n", + " \"name\": \"CT Series\",\n", + " \"conditions\": {\n", + " \"StudyDescription\": \"(.*?)\",\n", + " \"Modality\": \"(?i)CT\",\n", + " \"SeriesDescription\": \"(.*?)\",\n", + " \"ImageType\": [\"PRIMARY\", \"ORIGINAL\"]\n", + " }\n", + " }\n", + " ]\n", + "}\n", + "\"\"\"\n" ] }, { @@ -885,7 +656,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -893,16 +664,45 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 999862, Operator ID: c04e9506-86e0-4675-8f7c-698ede56a3e6)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 587978, Operator ID: d7487fdf-932a-4804-a9a4-f70a4abdd17f)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2021-11-24 15:29:08,591] [WARNING] (root) - No selection rules given; select all series.\n", - "[2021-11-24 15:29:08,591] [INFO] (root) - Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "[2021-11-24 15:29:08,592] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" + "[2022-10-11 21:26:54,414] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 21:26:54,417] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-11 21:26:54,418] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 21:26:54,418] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:26:54,419] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-11 21:26:54,420] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:26:54,421] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 21:26:54,421] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 21:26:54,424] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:26:54,425] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:26:54,428] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-11 21:26:54,429] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:26:54,430] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-11 21:26:54,431] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-11 21:26:54,432] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 21:26:54,433] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 21:26:54,433] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + " # of series: 1\n", + "[2022-10-11 21:26:54,441] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-11 21:26:54,442] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:26:54,443] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-11 21:26:54,444] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:26:54,444] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 21:26:54,445] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 21:26:54,445] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:26:54,446] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:26:54,447] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-11 21:26:54,448] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:26:54,449] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-11 21:26:54,449] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-11 21:26:54,450] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" ] }, { @@ -912,75 +712,156 @@ "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 999862, Operator ID: 8cd97116-305b-492f-8d51-13864d3108e2)\u001b[39m\n", - "Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 587978, Operator ID: dcb76118-2339-48ad-8c0c-12baa847b8af)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 999862, Operator ID: a5ab0fb9-6a54-4fef-9f77-056531cce7e7)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 587978, Operator ID: 8861558d-c466-4dca-aabb-080299a48195)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 999862, Operator ID: 65c122dd-aca1-4de2-9757-067c4fb5562d)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 587978, Operator ID: cc45134f-6779-4a9f-b1d4-0ded8ed41019)\u001b[39m\n", "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763, type \n", + "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", + "SeriesDate: 20090831, type \n", + "SeriesTime: 101721.452, type \n", "Modality: CT, type \n", - "SeriesDescription: No series description, type \n", + "SeriesDescription: ABD/PANC 3.0 B31f, type \n", "PatientPosition: HFS, type \n", - "SeriesNumber: 1, type \n", - "row_pixel_spacing: 1.0, type \n", - "col_pixel_spacing: 1.0, type \n", - "depth_pixel_spacing: 1.0, type \n", - "row_direction_cosine: [-1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, -1.0, 0.0], type \n", + "SeriesNumber: 8, type \n", + "row_pixel_spacing: 0.7890625, type \n", + "col_pixel_spacing: 0.7890625, type \n", + "depth_pixel_spacing: 1.5, type \n", + "row_direction_cosine: [1.0, 0.0, 0.0], type \n", + "col_direction_cosine: [0.0, 1.0, 0.0], type \n", "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[-1. 0. 0. 0.]\n", - " [ 0. -1. 0. 0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "nifti_affine_transform: [[ 1. -0. -0. -0.]\n", - " [-0. 1. -0. -0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "StudyInstanceUID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213, type \n", - "StudyID: SLICER10001, type \n", - "StudyDate: 2019-09-16, type \n", - "StudyTime: 010100.000000, type \n", - "StudyDescription: spleen, type \n", - "AccessionNumber: 1, type \n", - "selection_name: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763, type \n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[2021-11-24 15:29:18,697] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2021-11-24 15:29:18,698] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2021-11-24 15:29:18,698] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "file written: ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", + "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", + " [ 0. 0.7890625 0. -398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", + " [ -0. -0.7890625 -0. 398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", + "StudyID: , type \n", + "StudyDate: 20090831, type \n", + "StudyTime: 095948.599, type \n", + "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", + "AccessionNumber: 5471978513296937, type \n", + "selection_name: CT Series, type \n", + "2022-10-11 21:27:09,274 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 999862, Operator ID: 5953ac10-35c0-46d1-97ff-a2c2d53fa02c)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 587978, Operator ID: 901ed820-097b-43d8-9c87-bde9deabfaaa)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2021-11-24 15:29:20,287] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2021-11-24 15:29:22,188] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2021-11-24 15:29:22,346] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n" + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-11 21:27:13,561] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-11 21:27:13,564] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-11 21:27:13,567] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-11 21:27:13,570] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-11 21:27:13,572] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-11 21:27:13,575] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-11 21:27:13,579] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-11 21:27:13,581] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-11 21:27:13,585] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-11 21:27:13,588] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-11 21:27:13,591] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-11 21:27:13,594] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-11 21:27:13,598] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-11 21:27:13,600] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-11 21:27:13,602] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-11 21:27:13,603] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-11 21:27:13,605] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-11 21:27:13,610] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-11 21:27:13,614] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-11 21:27:13,621] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-11 21:27:13,623] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-11 21:27:13,626] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-11 21:27:13,629] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-11 21:27:13,632] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-11 21:27:13,638] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-11 21:27:13,641] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-11 21:27:13,646] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-11 21:27:13,650] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-11 21:27:13,653] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-11 21:27:13,655] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-11 21:27:13,658] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-11 21:27:13,661] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-11 21:27:13,665] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-11 21:27:13,668] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-11 21:27:13,671] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-11 21:27:13,674] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-11 21:27:13,678] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-11 21:27:13,684] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-11 21:27:13,686] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-11 21:27:13,689] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-11 21:27:13,693] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-11 21:27:13,695] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-11 21:27:13,697] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-11 21:27:13,699] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-11 21:27:13,703] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-11 21:27:13,706] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-11 21:27:13,708] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-11 21:27:13,712] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-11 21:27:13,716] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-11 21:27:13,718] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-11 21:27:13,721] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-11 21:27:13,723] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-11 21:27:13,726] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-11 21:27:13,729] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-11 21:27:13,732] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-11 21:27:13,735] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-11 21:27:13,738] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-11 21:27:13,741] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-11 21:27:13,744] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-11 21:27:13,748] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-11 21:27:13,751] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-11 21:27:13,754] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-11 21:27:13,758] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-11 21:27:13,762] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-11 21:27:13,767] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-11 21:27:13,770] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-11 21:27:13,773] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-11 21:27:13,776] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-11 21:27:13,779] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-11 21:27:13,782] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-11 21:27:13,785] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-11 21:27:13,787] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-11 21:27:13,789] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-11 21:27:13,792] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-11 21:27:13,798] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-11 21:27:13,801] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-11 21:27:13,804] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-11 21:27:13,808] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-11 21:27:13,811] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-11 21:27:13,816] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-11 21:27:13,820] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-11 21:27:13,823] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-11 21:27:13,826] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-11 21:27:13,830] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-11 21:27:13,834] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-11 21:27:13,836] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-11 21:27:13,840] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-11 21:27:13,844] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-11 21:27:13,903] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 21:27:13,904] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-11 21:27:13,905] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 21:27:13,906] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-11 21:27:13,907] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-11 21:27:13,907] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 21:27:13,908] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-11 21:27:13,909] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-11 21:27:13,910] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n" ] }, { @@ -1021,7 +902,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -1038,14 +919,14 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Writing my_app/spleen_seg_operator.py\n" + "Overwriting my_app/spleen_seg_operator.py\n" ] } ], @@ -1063,20 +944,20 @@ " Activationsd,\n", " AsDiscreted,\n", " Compose,\n", - " CropForegroundd,\n", " EnsureChannelFirstd,\n", + " EnsureTyped,\n", " Invertd,\n", " LoadImaged,\n", + " Orientationd,\n", " SaveImaged,\n", " ScaleIntensityRanged,\n", " Spacingd,\n", - " ToTensord,\n", ")\n", "\n", "\n", "@md.input(\"image\", Image, IOType.IN_MEMORY)\n", "@md.output(\"seg_image\", Image, IOType.IN_MEMORY)\n", - "@md.env(pip_packages=[\"monai>=0.8.1\", \"torch>=1.5\", \"numpy>=1.21\", \"nibabel\", \"typeguard\"])\n", + "@md.env(pip_packages=[\"monai>=0.8.1\", \"torch>=1.10.2\", \"numpy>=1.21\", \"nibabel\"])\n", "class SpleenSegOperator(Operator):\n", " \"\"\"Performs Spleen segmentation with a 3D image converted from a DICOM CT series.\n", " \"\"\"\n", @@ -1104,9 +985,9 @@ " # Delegates inference and saving output to the built-in operator.\n", " infer_operator = MonaiSegInferenceOperator(\n", " (\n", - " 160,\n", - " 160,\n", - " 160,\n", + " 96,\n", + " 96,\n", + " 96,\n", " ),\n", " pre_transforms,\n", " post_transforms,\n", @@ -1127,10 +1008,10 @@ " [\n", " LoadImaged(keys=my_key, reader=img_reader),\n", " EnsureChannelFirstd(keys=my_key),\n", - " Spacingd(keys=my_key, pixdim=[1.0, 1.0, 1.0], mode=[\"bilinear\"], align_corners=True),\n", + " Orientationd(keys=my_key, axcodes=\"RAS\"),\n", + " Spacingd(keys=my_key, pixdim=[1.5, 1.5, 2.9], mode=[\"bilinear\"]),\n", " ScaleIntensityRanged(keys=my_key, a_min=-57, a_max=164, b_min=0.0, b_max=1.0, clip=True),\n", - " CropForegroundd(keys=my_key, source_key=my_key),\n", - " ToTensord(keys=my_key),\n", + " EnsureTyped(keys=my_key),\n", " ]\n", " )\n", "\n", @@ -1141,11 +1022,20 @@ " return Compose(\n", " [\n", " Activationsd(keys=pred_key, softmax=True),\n", - " AsDiscreted(keys=pred_key, argmax=True),\n", " Invertd(\n", - " keys=pred_key, transform=pre_transforms, orig_keys=self._input_dataset_key, nearest_interp=True\n", + " keys=pred_key,\n", + " transform=pre_transforms,\n", + " orig_keys=self._input_dataset_key,\n", + " nearest_interp=False,\n", + " to_tensor=True,\n", + " ),\n", + " AsDiscreted(keys=pred_key, argmax=True),\n", + " SaveImaged(\n", + " keys=pred_key,\n", + " output_dir=out_dir,\n", + " output_postfix=\"seg\",\n", + " output_dtype=uint8,\n", " ),\n", - " SaveImaged(keys=pred_key, output_dir=out_dir, output_postfix=\"seg\", output_dtype=uint8, resample=False),\n", " ]\n", " )\n" ] @@ -1159,14 +1049,14 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Writing my_app/app.py\n" + "Overwriting my_app/app.py\n" ] } ], @@ -1176,34 +1066,15 @@ "\n", "from spleen_seg_operator import SpleenSegOperator\n", "\n", + "# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package.\n", + "from pydicom.sr.codedict import codes\n", + "\n", "from monai.deploy.core import Application, resource\n", "from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator\n", - "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator\n", + "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription\n", "from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator\n", "from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator\n", "\n", - "@resource(cpu=1, gpu=1, memory=\"7Gi\")\n", - "class AISpleenSegApp(Application):\n", - " def __init__(self, *args, **kwargs):\n", - " super().__init__(*args, **kwargs)\n", - "\n", - " def compose(self):\n", - "\n", - " study_loader_op = DICOMDataLoaderOperator()\n", - " series_selector_op = DICOMSeriesSelectorOperator(Sample_Rules_Text)\n", - " series_to_vol_op = DICOMSeriesToVolumeOperator()\n", - " # Creates DICOM Seg writer with segment label name in a string list\n", - " dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=[\"Spleen\"])\n", - " # Creates the model specific segmentation operator\n", - " spleen_seg_op = SpleenSegOperator()\n", - "\n", - " # Creates the DAG by link the operators\n", - " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", - " self.add_flow(series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", - " self.add_flow(series_to_vol_op, spleen_seg_op, {\"image\": \"image\"})\n", - " self.add_flow(series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", - " self.add_flow(spleen_seg_op, dicom_seg_writer, {\"seg_image\": \"seg_image\"})\n", - "\n", "# This is a sample series selection rule in JSON, simply selecting CT series.\n", "# If the study has more than 1 CT series, then all of them will be selected.\n", "# Please see more detail in DICOMSeriesSelectorOperator.\n", @@ -1215,13 +1086,85 @@ " \"conditions\": {\n", " \"StudyDescription\": \"(.*?)\",\n", " \"Modality\": \"(?i)CT\",\n", - " \"SeriesDescription\": \"(.*?)\"\n", + " \"SeriesDescription\": \"(.*?)\",\n", + " \"ImageType\": [\"PRIMARY\", \"ORIGINAL\"]\n", " }\n", " }\n", " ]\n", "}\n", "\"\"\"\n", "\n", + "@resource(cpu=1, gpu=1, memory=\"7Gi\")\n", + "class AISpleenSegApp(Application):\n", + " def __init__(self, *args, **kwargs):\n", + " \"\"\"Creates an application instance.\"\"\"\n", + "\n", + " self._logger = logging.getLogger(\"{}.{}\".format(__name__, type(self).__name__))\n", + " super().__init__(*args, **kwargs)\n", + "\n", + " def run(self, *args, **kwargs):\n", + " # This method calls the base class to run. Can be omitted if simply calling through.\n", + " self._logger.debug(f\"Begin {self.run.__name__}\")\n", + " super().run(*args, **kwargs)\n", + " self._logger.debug(f\"End {self.run.__name__}\")\n", + "\n", + " def compose(self):\n", + " \"\"\"Creates the app specific operators and chain them up in the processing DAG.\"\"\"\n", + "\n", + " self._logger.debug(f\"Begin {self.compose.__name__}\")\n", + " # Creates the custom operator(s) as well as SDK built-in operator(s).\n", + " study_loader_op = DICOMDataLoaderOperator()\n", + " series_selector_op = DICOMSeriesSelectorOperator(rules=Sample_Rules_Text)\n", + " series_to_vol_op = DICOMSeriesToVolumeOperator()\n", + " # Model specific inference operator, supporting MONAI transforms.\n", + "\n", + " # Creates the model specific segmentation operator\n", + " spleen_seg_op = SpleenSegOperator()\n", + "\n", + " # Create DICOM Seg writer providing the required segment description for each segment with\n", + " # the actual algorithm and the pertinent organ/tissue.\n", + " # The segment_label, algorithm_name, and algorithm_version are limited to 64 chars.\n", + " # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html\n", + " # User can Look up SNOMED CT codes at, e.g.\n", + " # https://bioportal.bioontology.org/ontologies/SNOMEDCT\n", + "\n", + " _algorithm_name = \"3D segmentation of the Spleen from a CT series\"\n", + " _algorithm_family = codes.DCM.ArtificialIntelligence\n", + " _algorithm_version = \"0.1.0\"\n", + "\n", + " segment_descriptions = [\n", + " SegmentDescription(\n", + " segment_label=\"Lung\",\n", + " segmented_property_category=codes.SCT.Organ,\n", + " segmented_property_type=codes.SCT.Lung,\n", + " algorithm_name=_algorithm_name,\n", + " algorithm_family=_algorithm_family,\n", + " algorithm_version=_algorithm_version,\n", + " ),\n", + " ]\n", + "\n", + " custom_tags = {\"SeriesDescription\": \"AI generated Seg, not for clinical use.\"}\n", + "\n", + " dicom_seg_writer = DICOMSegmentationWriterOperator(\n", + " segment_descriptions=segment_descriptions, custom_tags=custom_tags\n", + " )\n", + "\n", + " # Create the processing pipeline, by specifying the source and destination operators, and\n", + " # ensuring the output from the former matches the input of the latter, in both name and type.\n", + " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", + " self.add_flow(\n", + " series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", + " self.add_flow(series_to_vol_op, spleen_seg_op, {\"image\": \"image\"})\n", + "\n", + " # Note below the dicom_seg_writer requires two inputs, each coming from a source operator.\n", + " self.add_flow(\n", + " series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", + " self.add_flow(spleen_seg_op, dicom_seg_writer, {\"seg_image\": \"seg_image\"})\n", + "\n", + " self._logger.debug(f\"End {self.compose.__name__}\")\n", + "\n", "if __name__ == \"__main__\":\n", " # Creates the app and test it standalone. When running is this mode, please note the following:\n", " # -i , for input DICOM CT series folder\n", @@ -1251,14 +1194,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Writing my_app/__main__.py\n" + "Overwriting my_app/__main__.py\n" ] } ], @@ -1272,14 +1215,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "app.py\t__main__.py spleen_seg_operator.py\r\n" + "app.py\t__main__.py __pycache__ spleen_seg_operator.py\n" ] } ], @@ -1296,7 +1239,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -1304,73 +1247,199 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1000710, Operator ID: f74b2234-c1bc-461a-81b1-4044c3c53d10)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 588223, Operator ID: 7c2124ec-d374-4c4d-b7e8-60e94d880972)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1000710, Operator ID: e70b5143-62b8-4bb7-a9a9-87343414189e)\u001b[39m\n", - "[2021-11-24 15:29:44,079] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2021-11-24 15:29:44,079] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 588223, Operator ID: a8f9c6a9-01bc-43ab-98fa-857ea9408e4f)\u001b[39m\n", + "[2022-10-11 21:27:20,865] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 21:27:20,866] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2021-11-24 15:29:44,079] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2021-11-24 15:29:44,079] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2021-11-24 15:29:44,079] [INFO] (root) - Series attribute value: spleen\n", - "[2021-11-24 15:29:44,080] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2021-11-24 15:29:44,080] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2021-11-24 15:29:44,080] [INFO] (root) - Series attribute value: CT\n", - "[2021-11-24 15:29:44,080] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2021-11-24 15:29:44,080] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2021-11-24 15:29:44,080] [INFO] (root) - Series attribute value: No series description\n", - "[2021-11-24 15:29:44,080] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2021-11-24 15:29:44,080] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-11 21:27:20,867] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1000710, Operator ID: 3ef89a0a-07d4-41e8-9744-c4b7e4020ae6)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 588223, Operator ID: 1ae00f87-456f-436b-8c66-292241770ca9)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1000710, Operator ID: 1493e6ee-9391-4c76-a721-6b8d46f6e253)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 588223, Operator ID: 4400d567-9a72-45eb-890f-88d3ef790ea1)\u001b[39m\n", "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763, type \n", + "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", + "SeriesDate: 20090831, type \n", + "SeriesTime: 101721.452, type \n", "Modality: CT, type \n", - "SeriesDescription: No series description, type \n", + "SeriesDescription: ABD/PANC 3.0 B31f, type \n", "PatientPosition: HFS, type \n", - "SeriesNumber: 1, type \n", - "row_pixel_spacing: 1.0, type \n", - "col_pixel_spacing: 1.0, type \n", - "depth_pixel_spacing: 1.0, type \n", - "row_direction_cosine: [-1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, -1.0, 0.0], type \n", + "SeriesNumber: 8, type \n", + "row_pixel_spacing: 0.7890625, type \n", + "col_pixel_spacing: 0.7890625, type \n", + "depth_pixel_spacing: 1.5, type \n", + "row_direction_cosine: [1.0, 0.0, 0.0], type \n", + "col_direction_cosine: [0.0, 1.0, 0.0], type \n", "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[-1. 0. 0. 0.]\n", - " [ 0. -1. 0. 0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "nifti_affine_transform: [[ 1. -0. -0. -0.]\n", - " [-0. 1. -0. -0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "StudyInstanceUID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213, type \n", - "StudyID: SLICER10001, type \n", - "StudyDate: 2019-09-16, type \n", - "StudyTime: 010100.000000, type \n", - "StudyDescription: spleen, type \n", - "AccessionNumber: 1, type \n", - "selection_name: CT Series, type \n", - "file written: ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", + "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", + " [ 0. 0.7890625 0. -398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", + " [ -0. -0.7890625 -0. 398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", + "StudyID: , type \n", + "StudyDate: 20090831, type \n", + "StudyTime: 095948.599, type \n", + "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", + "AccessionNumber: 5471978513296937, type \n", + "selection_name: CT Series, type \n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "IOStream.flush timed out\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-10-11 21:30:07,825 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1000710, Operator ID: 61e30bdb-2d21-4fad-9a06-ad17c6f308df)\u001b[39m\n", - "[2021-11-24 15:29:55,905] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2021-11-24 15:29:55,905] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2021-11-24 15:29:55,905] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2021-11-24 15:29:57,442] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2021-11-24 15:29:59,170] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2021-11-24 15:29:59,323] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 588223, Operator ID: 30fe1dc4-d9e1-4d98-8c57-8577c6a968ec)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-11 21:30:11,711] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-11 21:30:11,714] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-11 21:30:11,716] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-11 21:30:11,717] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-11 21:30:11,719] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-11 21:30:11,721] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-11 21:30:11,723] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-11 21:30:11,725] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-11 21:30:11,727] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-11 21:30:11,728] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-11 21:30:11,729] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-11 21:30:11,731] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-11 21:30:11,732] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-11 21:30:11,734] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-11 21:30:11,736] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-11 21:30:11,738] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-11 21:30:11,740] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-11 21:30:11,742] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-11 21:30:11,743] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-11 21:30:11,745] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-11 21:30:11,747] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-11 21:30:11,749] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-11 21:30:11,751] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-11 21:30:11,753] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-11 21:30:11,755] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-11 21:30:11,757] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-11 21:30:11,759] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-11 21:30:11,761] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-11 21:30:11,763] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-11 21:30:11,764] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-11 21:30:11,766] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-11 21:30:11,768] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-11 21:30:11,769] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-11 21:30:11,771] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-11 21:30:11,773] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-11 21:30:11,775] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-11 21:30:11,777] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-11 21:30:11,779] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-11 21:30:11,781] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-11 21:30:11,782] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-11 21:30:11,785] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-11 21:30:11,786] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-11 21:30:11,788] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-11 21:30:11,789] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-11 21:30:11,790] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-11 21:30:11,791] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-11 21:30:11,793] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-11 21:30:11,795] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-11 21:30:11,796] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-11 21:30:11,798] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-11 21:30:11,799] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-11 21:30:11,800] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-11 21:30:11,802] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-11 21:30:11,803] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-11 21:30:11,805] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-11 21:30:11,807] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-11 21:30:11,809] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-11 21:30:11,811] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-11 21:30:11,812] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-11 21:30:11,814] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-11 21:30:11,816] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-11 21:30:11,818] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-11 21:30:11,820] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-11 21:30:11,822] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-11 21:30:11,823] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-11 21:30:11,825] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-11 21:30:11,827] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-11 21:30:11,829] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-11 21:30:11,831] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-11 21:30:11,833] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-11 21:30:11,835] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-11 21:30:11,837] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-11 21:30:11,839] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-11 21:30:11,841] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-11 21:30:11,843] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-11 21:30:11,846] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-11 21:30:11,848] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-11 21:30:11,850] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-11 21:30:11,852] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-11 21:30:11,854] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-11 21:30:11,857] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-11 21:30:11,859] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-11 21:30:11,861] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-11 21:30:11,863] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-11 21:30:11,864] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-11 21:30:11,866] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-11 21:30:11,868] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-11 21:30:11,870] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-11 21:30:11,977] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 21:30:11,977] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-11 21:30:11,977] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 21:30:11,977] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-11 21:30:11,978] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-11 21:30:11,978] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 21:30:11,978] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-11 21:30:11,978] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-11 21:30:11,978] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n" ] @@ -1389,7 +1458,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -1397,73 +1466,186 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1002078, Operator ID: a41f4089-5f8f-4ef2-b8d8-b4224c9518e9)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 588321, Operator ID: 6483fb70-5b69-4f7a-9f52-e539a9e07be4)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1002078, Operator ID: fc706328-9c42-4ff6-842f-221092170a9a)\u001b[39m\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 588321, Operator ID: 427aaa27-564a-41dc-88fc-1edcce5532c5)\u001b[39m\n", + "[2022-10-11 21:30:22,348] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 21:30:22,348] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - Series attribute value: spleen\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - Series attribute value: CT\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - Series attribute value: No series description\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2021-11-24 15:31:24,236] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-11 21:30:22,348] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 21:30:22,348] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:30:22,348] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-11 21:30:22,348] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:30:22,348] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + " # of series: 1\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:30:22,350] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-11 21:30:22,350] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-11 21:30:22,350] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 21:30:22,350] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-11 21:30:22,350] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-11 21:30:22,350] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1002078, Operator ID: 3ca4482b-2cc2-4309-ad80-a896b3ea7a82)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 588321, Operator ID: 206f44df-3c98-45c7-84d3-49762357e816)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1002078, Operator ID: 7837e92c-5ecf-4a0c-a19d-53a1786d546b)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 588321, Operator ID: 5ec8fbd6-a667-4ffc-8aaf-3890365e428e)\u001b[39m\n", "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763, type \n", + "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", + "SeriesDate: 20090831, type \n", + "SeriesTime: 101721.452, type \n", "Modality: CT, type \n", - "SeriesDescription: No series description, type \n", + "SeriesDescription: ABD/PANC 3.0 B31f, type \n", "PatientPosition: HFS, type \n", - "SeriesNumber: 1, type \n", - "row_pixel_spacing: 1.0, type \n", - "col_pixel_spacing: 1.0, type \n", - "depth_pixel_spacing: 1.0, type \n", - "row_direction_cosine: [-1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, -1.0, 0.0], type \n", + "SeriesNumber: 8, type \n", + "row_pixel_spacing: 0.7890625, type \n", + "col_pixel_spacing: 0.7890625, type \n", + "depth_pixel_spacing: 1.5, type \n", + "row_direction_cosine: [1.0, 0.0, 0.0], type \n", + "col_direction_cosine: [0.0, 1.0, 0.0], type \n", "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[-1. 0. 0. 0.]\n", - " [ 0. -1. 0. 0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "nifti_affine_transform: [[ 1. -0. -0. -0.]\n", - " [-0. 1. -0. -0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "StudyInstanceUID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213, type \n", - "StudyID: SLICER10001, type \n", - "StudyDate: 2019-09-16, type \n", - "StudyTime: 010100.000000, type \n", - "StudyDescription: spleen, type \n", - "AccessionNumber: 1, type \n", + "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", + " [ 0. 0.7890625 0. -398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", + " [ -0. -0.7890625 -0. 398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", + "StudyID: , type \n", + "StudyDate: 20090831, type \n", + "StudyTime: 095948.599, type \n", + "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", + "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "file written: ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", + "2022-10-11 21:30:37,175 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1002078, Operator ID: 94777d8c-a82e-42c3-99f5-ac7fdb0dc4dd)\u001b[39m\n", - "[2021-11-24 15:31:34,476] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2021-11-24 15:31:34,476] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2021-11-24 15:31:34,476] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2021-11-24 15:31:36,032] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2021-11-24 15:31:37,810] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2021-11-24 15:31:37,964] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 588321, Operator ID: 61d8cd8e-f76c-4ed8-b2a2-17a5aa8e0539)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-11 21:30:40,571] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-11 21:30:40,573] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-11 21:30:40,575] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-11 21:30:40,577] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-11 21:30:40,579] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-11 21:30:40,582] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-11 21:30:40,584] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-11 21:30:40,585] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-11 21:30:40,587] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-11 21:30:40,589] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-11 21:30:40,591] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-11 21:30:40,593] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-11 21:30:40,595] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-11 21:30:40,597] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-11 21:30:40,600] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-11 21:30:40,601] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-11 21:30:40,603] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-11 21:30:40,606] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-11 21:30:40,608] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-11 21:30:40,610] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-11 21:30:40,612] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-11 21:30:40,614] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-11 21:30:40,616] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-11 21:30:40,618] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-11 21:30:40,620] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-11 21:30:40,622] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-11 21:30:40,624] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-11 21:30:40,625] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-11 21:30:40,627] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-11 21:30:40,629] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-11 21:30:40,631] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-11 21:30:40,632] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-11 21:30:40,634] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-11 21:30:40,637] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-11 21:30:40,639] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-11 21:30:40,641] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-11 21:30:40,643] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-11 21:30:40,645] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-11 21:30:40,647] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-11 21:30:40,649] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-11 21:30:40,652] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-11 21:30:40,654] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-11 21:30:40,656] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-11 21:30:40,658] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-11 21:30:40,660] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-11 21:30:40,662] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-11 21:30:40,664] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-11 21:30:40,667] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-11 21:30:40,669] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-11 21:30:40,671] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-11 21:30:40,673] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-11 21:30:40,675] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-11 21:30:40,677] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-11 21:30:40,679] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-11 21:30:40,680] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-11 21:30:40,682] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-11 21:30:40,683] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-11 21:30:40,685] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-11 21:30:40,686] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-11 21:30:40,688] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-11 21:30:40,691] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-11 21:30:40,693] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-11 21:30:40,695] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-11 21:30:40,697] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-11 21:30:40,699] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-11 21:30:40,701] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-11 21:30:40,703] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-11 21:30:40,706] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-11 21:30:40,708] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-11 21:30:40,710] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-11 21:30:40,712] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-11 21:30:40,714] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-11 21:30:40,716] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-11 21:30:40,718] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-11 21:30:40,721] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-11 21:30:40,723] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-11 21:30:40,725] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-11 21:30:40,727] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-11 21:30:40,729] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-11 21:30:40,731] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-11 21:30:40,733] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-11 21:30:40,735] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-11 21:30:40,737] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-11 21:30:40,739] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-11 21:30:40,741] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-11 21:30:40,744] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-11 21:30:40,746] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-11 21:30:40,748] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-11 21:30:40,801] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 21:30:40,802] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-11 21:30:40,802] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 21:30:40,802] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-11 21:30:40,802] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-11 21:30:40,803] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 21:30:40,803] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-11 21:30:40,803] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-11 21:30:40,803] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n" ] @@ -1477,14 +1659,17 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "dicom_seg-DICOMSEG.dcm\tprediction_output\r\n" + "1.2.826.0.1.3680043.10.511.3.11972508174681468557260210868245236.dcm\n", + "1.2.826.0.1.3680043.10.511.3.12522236683424194054574611600659749.dcm\n", + "1.2.826.0.1.3680043.10.511.3.73406030375861033199007467688193029.dcm\n", + "prediction_output\n" ] } ], @@ -1508,7 +1693,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -1516,7 +1701,7 @@ "output_type": "stream", "text": [ "Building MONAI Application Package... Done\n", - "[2021-11-24 16:01:18,268] [INFO] (app_packager) - Successfully built my_app:latest\n" + "[2022-10-11 21:30:49,237] [INFO] (app_packager) - Successfully built my_app:latest\n" ] } ], @@ -1537,14 +1722,14 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "my_app latest 4f5025774c06 6 seconds ago 14.9GB\r\n" + "my_app latest fedeeb004af3 8 minutes ago 15.1GB\n" ] } ], @@ -1563,7 +1748,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -1581,74 +1766,189 @@ "Reading MONAI App Package manifest...\n", "--> Verifying if \"nvidia-docker\" is installed...\n", "\n", + "/opt/conda/lib/python3.8/site-packages/scipy/__init__.py:138: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.3)\n", + " warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion} is required for this version of \"\n", "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: 441a7274-a2dd-4b01-99c4-170b51c248d7)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: c948605e-43c6-4ce0-8996-96c357ce7015)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: e5f2533b-cc73-4c7f-9e57-84dca9380776)\u001b[39m\n", - "[2021-11-24 21:01:34,900] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2021-11-24 21:01:34,900] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: 160ff6db-0ee2-46b9-ae28-e72680c282fb)\u001b[39m\n", + "[2022-10-12 04:31:12,637] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-12 04:31:12,637] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2021-11-24 21:01:34,900] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2021-11-24 21:01:34,901] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2021-11-24 21:01:34,901] [INFO] (root) - Series attribute value: spleen\n", - "[2021-11-24 21:01:34,901] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2021-11-24 21:01:34,901] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2021-11-24 21:01:34,901] [INFO] (root) - Series attribute value: CT\n", - "[2021-11-24 21:01:34,901] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2021-11-24 21:01:34,901] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2021-11-24 21:01:34,901] [INFO] (root) - Series attribute value: No series description\n", - "[2021-11-24 21:01:34,901] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2021-11-24 21:01:34,901] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-12 04:31:12,637] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-12 04:31:12,637] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-12 04:31:12,637] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + " # of series: 1\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-12 04:31:12,639] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-12 04:31:12,639] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: 0cb153e2-f98d-432a-b953-4b9238821062)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: 7d1c7954-7a7f-4582-a80d-88afa45dda2b)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1, Operator ID: fad57270-f46f-46ff-a5c0-88723f1fb717)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1, Operator ID: b010f916-845e-4815-807a-9294b2f76ceb)\u001b[39m\n", "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763, type \n", + "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", + "SeriesDate: 20090831, type \n", + "SeriesTime: 101721.452, type \n", "Modality: CT, type \n", - "SeriesDescription: No series description, type \n", + "SeriesDescription: ABD/PANC 3.0 B31f, type \n", "PatientPosition: HFS, type \n", - "SeriesNumber: 1, type \n", - "row_pixel_spacing: 1.0, type \n", - "col_pixel_spacing: 1.0, type \n", - "depth_pixel_spacing: 1.0, type \n", - "row_direction_cosine: [-1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, -1.0, 0.0], type \n", + "SeriesNumber: 8, type \n", + "row_pixel_spacing: 0.7890625, type \n", + "col_pixel_spacing: 0.7890625, type \n", + "depth_pixel_spacing: 1.5, type \n", + "row_direction_cosine: [1.0, 0.0, 0.0], type \n", + "col_direction_cosine: [0.0, 1.0, 0.0], type \n", "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[-1. 0. 0. 0.]\n", - " [ 0. -1. 0. 0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "nifti_affine_transform: [[ 1. -0. -0. -0.]\n", - " [-0. 1. -0. -0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "StudyInstanceUID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213, type \n", - "StudyID: SLICER10001, type \n", - "StudyDate: 2019-09-16, type \n", - "StudyTime: 010100.000000, type \n", - "StudyDescription: spleen, type \n", - "AccessionNumber: 1, type \n", + "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", + " [ 0. 0.7890625 0. -398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", + " [ -0. -0.7890625 -0. 398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", + "StudyID: , type \n", + "StudyDate: 20090831, type \n", + "StudyTime: 095948.599, type \n", + "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", + "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "file written: /var/monai/output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", + "2022-10-12 04:31:58,211 INFO image_writer.py:194 - writing: /var/monai/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: 90f5b1e4-71c0-48a1-91d9-f1d462683c14)\u001b[39m\n", - "[2021-11-24 21:01:48,195] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2021-11-24 21:01:48,195] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2021-11-24 21:01:48,195] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2021-11-24 21:01:49,743] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2021-11-24 21:01:51,712] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file /var/monai/output/dicom_seg-DICOMSEG.dcm\n", - "[2021-11-24 21:01:51,874] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: b29eac1a-4326-4167-8ddd-3d679da0c342)\u001b[39m\n", + "/root/.local/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-12 04:32:01,942] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-12 04:32:01,944] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-12 04:32:01,946] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-12 04:32:01,947] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-12 04:32:01,948] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-12 04:32:01,950] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-12 04:32:01,952] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-12 04:32:01,953] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-12 04:32:01,955] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-12 04:32:01,956] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-12 04:32:01,958] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-12 04:32:01,959] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-12 04:32:01,960] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-12 04:32:01,962] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-12 04:32:01,963] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-12 04:32:01,965] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-12 04:32:01,966] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-12 04:32:01,967] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-12 04:32:01,969] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-12 04:32:01,970] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-12 04:32:01,972] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-12 04:32:01,973] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-12 04:32:01,975] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-12 04:32:01,976] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-12 04:32:01,978] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-12 04:32:01,979] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-12 04:32:01,981] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-12 04:32:01,982] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-12 04:32:01,984] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-12 04:32:01,986] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-12 04:32:01,987] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-12 04:32:01,988] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-12 04:32:01,990] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-12 04:32:01,991] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-12 04:32:01,993] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-12 04:32:01,994] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-12 04:32:01,996] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-12 04:32:01,997] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-12 04:32:01,999] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-12 04:32:02,000] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-12 04:32:02,002] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-12 04:32:02,003] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-12 04:32:02,005] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-12 04:32:02,006] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-12 04:32:02,008] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-12 04:32:02,009] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-12 04:32:02,011] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-12 04:32:02,012] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-12 04:32:02,014] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-12 04:32:02,015] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-12 04:32:02,017] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-12 04:32:02,018] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-12 04:32:02,020] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-12 04:32:02,021] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-12 04:32:02,023] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-12 04:32:02,025] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-12 04:32:02,026] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-12 04:32:02,028] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-12 04:32:02,030] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-12 04:32:02,031] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-12 04:32:02,033] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-12 04:32:02,034] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-12 04:32:02,036] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-12 04:32:02,037] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-12 04:32:02,039] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-12 04:32:02,040] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-12 04:32:02,042] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-12 04:32:02,043] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-12 04:32:02,045] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-12 04:32:02,046] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-12 04:32:02,048] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-12 04:32:02,049] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-12 04:32:02,051] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-12 04:32:02,053] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-12 04:32:02,054] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-12 04:32:02,056] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-12 04:32:02,057] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-12 04:32:02,059] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-12 04:32:02,060] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-12 04:32:02,062] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-12 04:32:02,065] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-12 04:32:02,066] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-12 04:32:02,068] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-12 04:32:02,069] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-12 04:32:02,071] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-12 04:32:02,072] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-12 04:32:02,074] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-12 04:32:02,076] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-12 04:32:02,146] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-12 04:32:02,146] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-12 04:32:02,146] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-12 04:32:02,146] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-12 04:32:02,147] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-12 04:32:02,147] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-12 04:32:02,147] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-12 04:32:02,147] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-12 04:32:02,147] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n" ] @@ -1663,35 +1963,29 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "dicom_seg-DICOMSEG.dcm\tprediction_output\r\n" + "1.2.826.0.1.3680043.10.511.3.11972508174681468557260210868245236.dcm\n", + "1.2.826.0.1.3680043.10.511.3.12522236683424194054574611600659749.dcm\n", + "1.2.826.0.1.3680043.10.511.3.73406030375861033199007467688193029.dcm\n", + "1.2.826.0.1.3680043.10.511.3.76852153726118442165214649561497685.dcm\n", + "prediction_output\n" ] } ], "source": [ "!ls output" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { - "interpreter": { - "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" - }, "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3.8.10 ('.venv': venv)", "language": "python", "name": "python3" }, @@ -1705,7 +1999,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.8.10" + }, + "vscode": { + "interpreter": { + "hash": "9b4ab1155d0cd1042497eb40fd55b2d15caf4b3c0f9fbfcc7ba4404045d40f12" + } } }, "nbformat": 4, diff --git a/notebooks/tutorials/03_segmentation_viz_app.ipynb b/notebooks/tutorials/03_segmentation_viz_app.ipynb index ad180f40..edc95569 100644 --- a/notebooks/tutorials/03_segmentation_viz_app.ipynb +++ b/notebooks/tutorials/03_segmentation_viz_app.ipynb @@ -106,9 +106,9 @@ "outputs": [], "source": [ "# Install MONAI and other necessary image processing packages for the application\n", - "!python -c \"import monai\" || pip install -q \"monai\"\n", - "!python -c \"import torch\" || pip install -q \"torch>=1.5\"\n", - "!python -c \"import numpy\" || pip install -q \"numpy>=1.20\"\n", + "!python -c \"import monai\" || pip install --upgrade -q \"monai\"\n", + "!python -c \"import torch\" || pip install -q \"torch>=1.10.2\"\n", + "!python -c \"import numpy\" || pip install -q \"numpy>=1.21\"\n", "!python -c \"import nibabel\" || pip install -q \"nibabel>=3.2.1\"\n", "!python -c \"import pydicom\" || pip install -q \"pydicom>=1.4.2\"\n", "!python -c \"import SimpleITK\" || pip install -q \"SimpleITK>=2.0.0\"\n", @@ -144,544 +144,244 @@ "name": "stdout", "output_type": "stream", "text": [ - "Defaulting to user installation because normal site-packages is not writeable\n", - "Requirement already satisfied: gdown in /home/aheumann/.local/lib/python3.8/site-packages (4.0.1)\n", - "Requirement already satisfied: filelock in /home/aheumann/.local/lib/python3.8/site-packages (from gdown) (3.3.0)\n", - "Requirement already satisfied: six in /home/aheumann/.local/lib/python3.8/site-packages (from gdown) (1.16.0)\n", - "Requirement already satisfied: requests[socks]>=2.12.0 in /usr/lib/python3/dist-packages (from gdown) (2.22.0)\n", - "Requirement already satisfied: tqdm in /home/aheumann/.local/lib/python3.8/site-packages (from gdown) (4.62.3)\n", - "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/aheumann/.local/lib/python3.8/site-packages (from requests[socks]>=2.12.0->gdown) (1.7.1)\n", + "Requirement already satisfied: gdown in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (4.5.1)\n", + "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", + "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", + "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", + "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", + "Requirement already satisfied: six in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (1.16.0)\n", + "Requirement already satisfied: soupsieve>1.2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from beautifulsoup4->gdown) (2.3.2.post1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (3.3)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.26.12)\n", + "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.7.1)\n", "Downloading...\n", - "From: https://drive.google.com/uc?id=1GC_N8YQk_mOWN02oOzAU_2YDmNRWk--n\n", - "To: /home/aheumann/projects/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_seg_data_updated_1203.zip\n", - "100%|████████████████████████████████████████| 104M/104M [00:16<00:00, 6.35MB/s]\n", - "Archive: ai_spleen_seg_data_updated_1203.zip\n", - " inflating: dcm/IMG0001.dcm \n", - " inflating: dcm/IMG0002.dcm \n", - " inflating: dcm/IMG0003.dcm \n", - " inflating: dcm/IMG0004.dcm \n", - " inflating: dcm/IMG0005.dcm \n", - " inflating: dcm/IMG0006.dcm \n", - " inflating: dcm/IMG0007.dcm \n", - " inflating: dcm/IMG0008.dcm \n", - " inflating: dcm/IMG0009.dcm \n", - " inflating: dcm/IMG0010.dcm \n", - " inflating: dcm/IMG0011.dcm \n", - " inflating: dcm/IMG0012.dcm \n", - " inflating: dcm/IMG0013.dcm \n", - " inflating: dcm/IMG0014.dcm \n", - " inflating: dcm/IMG0015.dcm \n", - " inflating: dcm/IMG0016.dcm \n", - " inflating: dcm/IMG0017.dcm \n", - " inflating: dcm/IMG0018.dcm \n", - " inflating: dcm/IMG0019.dcm \n", - " inflating: dcm/IMG0020.dcm \n", - " inflating: dcm/IMG0021.dcm \n", - " inflating: dcm/IMG0022.dcm \n", - " inflating: dcm/IMG0023.dcm \n", - " inflating: dcm/IMG0024.dcm \n", - " inflating: dcm/IMG0025.dcm \n", - " inflating: dcm/IMG0026.dcm \n", - " inflating: dcm/IMG0027.dcm \n", - " inflating: dcm/IMG0028.dcm \n", - " inflating: dcm/IMG0029.dcm \n", - " inflating: dcm/IMG0030.dcm \n", - " inflating: dcm/IMG0031.dcm \n", - " inflating: dcm/IMG0032.dcm \n", - " inflating: dcm/IMG0033.dcm \n", - " inflating: dcm/IMG0034.dcm \n", - " inflating: dcm/IMG0035.dcm \n", - " inflating: dcm/IMG0036.dcm \n", - " inflating: dcm/IMG0037.dcm \n", - " inflating: dcm/IMG0038.dcm \n", - " inflating: dcm/IMG0039.dcm \n", - " inflating: dcm/IMG0040.dcm \n", - " inflating: dcm/IMG0041.dcm \n", - " inflating: dcm/IMG0042.dcm \n", - " inflating: dcm/IMG0043.dcm \n", - " inflating: dcm/IMG0044.dcm \n", - " inflating: dcm/IMG0045.dcm \n", - " inflating: dcm/IMG0046.dcm \n", - " inflating: dcm/IMG0047.dcm \n", - " inflating: dcm/IMG0048.dcm \n", - " inflating: dcm/IMG0049.dcm \n", - " inflating: dcm/IMG0050.dcm \n", - " inflating: dcm/IMG0051.dcm \n", - " inflating: dcm/IMG0052.dcm \n", - " inflating: dcm/IMG0053.dcm \n", - " inflating: dcm/IMG0054.dcm \n", - " inflating: dcm/IMG0055.dcm \n", - " inflating: dcm/IMG0056.dcm \n", - " inflating: dcm/IMG0057.dcm \n", - " inflating: dcm/IMG0058.dcm \n", - " inflating: dcm/IMG0059.dcm \n", - " inflating: dcm/IMG0060.dcm \n", - " inflating: dcm/IMG0061.dcm \n", - " inflating: dcm/IMG0062.dcm \n", - " inflating: dcm/IMG0063.dcm \n", - " inflating: dcm/IMG0064.dcm \n", - " inflating: dcm/IMG0065.dcm \n", - " inflating: dcm/IMG0066.dcm \n", - " inflating: dcm/IMG0067.dcm \n", - " inflating: dcm/IMG0068.dcm \n", - " inflating: dcm/IMG0069.dcm \n", - " inflating: dcm/IMG0070.dcm \n", - " inflating: dcm/IMG0071.dcm \n", - " inflating: dcm/IMG0072.dcm \n", - " inflating: dcm/IMG0073.dcm \n", - " inflating: dcm/IMG0074.dcm \n", - " inflating: dcm/IMG0075.dcm \n", - " inflating: dcm/IMG0076.dcm \n", - " inflating: dcm/IMG0077.dcm \n", - " inflating: dcm/IMG0078.dcm \n", - " inflating: dcm/IMG0079.dcm \n", - " inflating: dcm/IMG0080.dcm \n", - " inflating: dcm/IMG0081.dcm \n", - " inflating: dcm/IMG0082.dcm \n", - " inflating: dcm/IMG0083.dcm \n", - " inflating: dcm/IMG0084.dcm \n", - " inflating: dcm/IMG0085.dcm \n", - " inflating: dcm/IMG0086.dcm \n", - " inflating: dcm/IMG0087.dcm \n", - " inflating: dcm/IMG0088.dcm \n", - " inflating: dcm/IMG0089.dcm \n", - " inflating: dcm/IMG0090.dcm \n", - " inflating: dcm/IMG0091.dcm \n", - " inflating: dcm/IMG0092.dcm \n", - " inflating: dcm/IMG0093.dcm \n", - " inflating: dcm/IMG0094.dcm \n", - " inflating: dcm/IMG0095.dcm \n", - " inflating: dcm/IMG0096.dcm \n", - " inflating: dcm/IMG0097.dcm \n", - " inflating: dcm/IMG0098.dcm \n", - " inflating: dcm/IMG0099.dcm \n", - " inflating: dcm/IMG0100.dcm \n", - " inflating: dcm/IMG0101.dcm \n", - " inflating: dcm/IMG0102.dcm \n", - " inflating: dcm/IMG0103.dcm \n", - " inflating: dcm/IMG0104.dcm \n", - " inflating: dcm/IMG0105.dcm \n", - " inflating: dcm/IMG0106.dcm \n", - " inflating: dcm/IMG0107.dcm \n", - " inflating: dcm/IMG0108.dcm \n", - " inflating: dcm/IMG0109.dcm \n", - " inflating: dcm/IMG0110.dcm \n", - " inflating: dcm/IMG0111.dcm \n", - " inflating: dcm/IMG0112.dcm \n", - " inflating: dcm/IMG0113.dcm \n", - " inflating: dcm/IMG0114.dcm \n", - " inflating: dcm/IMG0115.dcm \n", - " inflating: dcm/IMG0116.dcm \n", - " inflating: dcm/IMG0117.dcm \n", - " inflating: dcm/IMG0118.dcm \n", - " inflating: dcm/IMG0119.dcm \n", - " inflating: dcm/IMG0120.dcm \n", - " inflating: dcm/IMG0121.dcm \n", - " inflating: dcm/IMG0122.dcm \n", - " inflating: dcm/IMG0123.dcm \n", - " inflating: dcm/IMG0124.dcm \n", - " inflating: dcm/IMG0125.dcm \n", - " inflating: dcm/IMG0126.dcm \n", - " inflating: dcm/IMG0127.dcm \n", - " inflating: dcm/IMG0128.dcm \n", - " inflating: dcm/IMG0129.dcm \n", - " inflating: dcm/IMG0130.dcm \n", - " inflating: dcm/IMG0131.dcm \n", - " inflating: dcm/IMG0132.dcm \n", - " inflating: dcm/IMG0133.dcm \n", - " inflating: dcm/IMG0134.dcm \n", - " inflating: dcm/IMG0135.dcm \n", - " inflating: dcm/IMG0136.dcm \n", - " inflating: dcm/IMG0137.dcm \n", - " inflating: dcm/IMG0138.dcm \n", - " inflating: dcm/IMG0139.dcm \n", - " inflating: dcm/IMG0140.dcm \n", - " inflating: dcm/IMG0141.dcm \n", - " inflating: dcm/IMG0142.dcm \n", - " inflating: dcm/IMG0143.dcm \n", - " inflating: dcm/IMG0144.dcm \n", - " inflating: dcm/IMG0145.dcm \n", - " inflating: dcm/IMG0146.dcm \n", - " inflating: dcm/IMG0147.dcm \n", - " inflating: dcm/IMG0148.dcm \n", - " inflating: dcm/IMG0149.dcm \n", - " inflating: dcm/IMG0150.dcm \n", - " inflating: dcm/IMG0151.dcm \n", - " inflating: dcm/IMG0152.dcm \n", - " inflating: dcm/IMG0153.dcm \n", - " inflating: dcm/IMG0154.dcm \n", - " inflating: dcm/IMG0155.dcm \n", - " inflating: dcm/IMG0156.dcm \n", - " inflating: dcm/IMG0157.dcm \n", - " inflating: dcm/IMG0158.dcm \n", - " inflating: dcm/IMG0159.dcm \n", - " inflating: dcm/IMG0160.dcm \n", - " inflating: dcm/IMG0161.dcm \n", - " inflating: dcm/IMG0162.dcm \n", - " inflating: dcm/IMG0163.dcm \n", - " inflating: dcm/IMG0164.dcm \n", - " inflating: dcm/IMG0165.dcm \n", - " inflating: dcm/IMG0166.dcm \n", - " inflating: dcm/IMG0167.dcm \n", - " inflating: dcm/IMG0168.dcm \n", - " inflating: dcm/IMG0169.dcm \n", - " inflating: dcm/IMG0170.dcm \n", - " inflating: dcm/IMG0171.dcm \n", - " inflating: dcm/IMG0172.dcm \n", - " inflating: dcm/IMG0173.dcm \n", - " inflating: dcm/IMG0174.dcm \n", - " inflating: dcm/IMG0175.dcm \n", - " inflating: dcm/IMG0176.dcm \n", - " inflating: dcm/IMG0177.dcm \n", - " inflating: dcm/IMG0178.dcm \n", - " inflating: dcm/IMG0179.dcm \n", - " inflating: dcm/IMG0180.dcm \n", - " inflating: dcm/IMG0181.dcm \n", - " inflating: dcm/IMG0182.dcm \n", - " inflating: dcm/IMG0183.dcm \n", - " inflating: dcm/IMG0184.dcm \n", - " inflating: dcm/IMG0185.dcm \n", - " inflating: dcm/IMG0186.dcm \n", - " inflating: dcm/IMG0187.dcm \n", - " inflating: dcm/IMG0188.dcm \n", - " inflating: dcm/IMG0189.dcm \n", - " inflating: dcm/IMG0190.dcm \n", - " inflating: dcm/IMG0191.dcm \n", - " inflating: dcm/IMG0192.dcm \n", - " inflating: dcm/IMG0193.dcm \n", - " inflating: dcm/IMG0194.dcm \n", - " inflating: dcm/IMG0195.dcm \n", - " inflating: dcm/IMG0196.dcm \n", - " inflating: dcm/IMG0197.dcm \n", - " inflating: dcm/IMG0198.dcm \n", - " inflating: dcm/IMG0199.dcm \n", - " inflating: dcm/IMG0200.dcm \n", - " inflating: dcm/IMG0201.dcm \n", - " inflating: dcm/IMG0202.dcm \n", - " inflating: dcm/IMG0203.dcm \n", - " inflating: dcm/IMG0204.dcm \n", - " inflating: dcm/IMG0205.dcm \n", - " inflating: dcm/IMG0206.dcm \n", - " inflating: dcm/IMG0207.dcm \n", - " inflating: dcm/IMG0208.dcm \n", - " inflating: dcm/IMG0209.dcm \n", - " inflating: dcm/IMG0210.dcm \n", - " inflating: dcm/IMG0211.dcm \n", - " inflating: dcm/IMG0212.dcm \n", - " inflating: dcm/IMG0213.dcm \n", - " inflating: dcm/IMG0214.dcm \n", - " inflating: dcm/IMG0215.dcm \n", - " inflating: dcm/IMG0216.dcm \n", - " inflating: dcm/IMG0217.dcm \n", - " inflating: dcm/IMG0218.dcm \n", - " inflating: dcm/IMG0219.dcm \n", - " inflating: dcm/IMG0220.dcm \n", - " inflating: dcm/IMG0221.dcm \n", - " inflating: dcm/IMG0222.dcm \n", - " inflating: dcm/IMG0223.dcm \n", - " inflating: dcm/IMG0224.dcm \n", - " inflating: dcm/IMG0225.dcm \n", - " inflating: dcm/IMG0226.dcm \n", - " inflating: dcm/IMG0227.dcm \n", - " inflating: dcm/IMG0228.dcm \n", - " inflating: dcm/IMG0229.dcm \n", - " inflating: dcm/IMG0230.dcm \n", - " inflating: dcm/IMG0231.dcm \n", - " inflating: dcm/IMG0232.dcm \n", - " inflating: dcm/IMG0233.dcm \n", - " inflating: dcm/IMG0234.dcm \n", - " inflating: dcm/IMG0235.dcm \n", - " inflating: dcm/IMG0236.dcm \n", - " inflating: dcm/IMG0237.dcm \n", - " inflating: dcm/IMG0238.dcm \n", - " inflating: dcm/IMG0239.dcm \n", - " inflating: dcm/IMG0240.dcm \n", - " inflating: dcm/IMG0241.dcm \n", - " inflating: dcm/IMG0242.dcm \n", - " inflating: dcm/IMG0243.dcm \n", - " inflating: dcm/IMG0244.dcm \n", - " inflating: dcm/IMG0245.dcm \n", - " inflating: dcm/IMG0246.dcm \n", - " inflating: dcm/IMG0247.dcm \n", - " inflating: dcm/IMG0248.dcm \n", - " inflating: dcm/IMG0249.dcm \n", - " inflating: dcm/IMG0250.dcm \n", - " inflating: dcm/IMG0251.dcm \n", - " inflating: dcm/IMG0252.dcm \n", - " inflating: dcm/IMG0253.dcm \n", - " inflating: dcm/IMG0254.dcm \n", - " inflating: dcm/IMG0255.dcm \n", - " inflating: dcm/IMG0256.dcm \n", - " inflating: dcm/IMG0257.dcm \n", - " inflating: dcm/IMG0258.dcm \n", - " inflating: dcm/IMG0259.dcm \n", - " inflating: dcm/IMG0260.dcm \n", - " inflating: dcm/IMG0261.dcm \n", - " inflating: dcm/IMG0262.dcm \n", - " inflating: dcm/IMG0263.dcm \n", - " inflating: dcm/IMG0264.dcm \n", - " inflating: dcm/IMG0265.dcm \n", - " inflating: dcm/IMG0266.dcm \n", - " inflating: dcm/IMG0267.dcm \n", - " inflating: dcm/IMG0268.dcm \n", - " inflating: dcm/IMG0269.dcm \n", - " inflating: dcm/IMG0270.dcm \n", - " inflating: dcm/IMG0271.dcm \n", - " inflating: dcm/IMG0272.dcm \n", - " inflating: dcm/IMG0273.dcm \n", - " inflating: dcm/IMG0274.dcm \n", - " inflating: dcm/IMG0275.dcm \n", - " inflating: dcm/IMG0276.dcm \n", - " inflating: dcm/IMG0277.dcm \n", - " inflating: dcm/IMG0278.dcm \n", - " inflating: dcm/IMG0279.dcm \n", - " inflating: dcm/IMG0280.dcm \n", - " inflating: dcm/IMG0281.dcm \n", - " inflating: dcm/IMG0282.dcm \n", - " inflating: dcm/IMG0283.dcm \n", - " inflating: dcm/IMG0284.dcm \n", - " inflating: dcm/IMG0285.dcm \n", - " inflating: dcm/IMG0286.dcm \n", - " inflating: dcm/IMG0287.dcm \n", - " inflating: dcm/IMG0288.dcm \n", - " inflating: dcm/IMG0289.dcm \n", - " inflating: dcm/IMG0290.dcm \n", - " inflating: dcm/IMG0291.dcm \n", - " inflating: dcm/IMG0292.dcm \n", - " inflating: dcm/IMG0293.dcm \n", - " inflating: dcm/IMG0294.dcm \n", - " inflating: dcm/IMG0295.dcm \n", - " inflating: dcm/IMG0296.dcm \n", - " inflating: dcm/IMG0297.dcm \n", - " inflating: dcm/IMG0298.dcm \n", - " inflating: dcm/IMG0299.dcm \n", - " inflating: dcm/IMG0300.dcm \n", - " inflating: dcm/IMG0301.dcm \n", - " inflating: dcm/IMG0302.dcm \n", - " inflating: dcm/IMG0303.dcm \n", - " inflating: dcm/IMG0304.dcm \n", - " inflating: dcm/IMG0305.dcm \n", - " inflating: dcm/IMG0306.dcm \n", - " inflating: dcm/IMG0307.dcm \n", - " inflating: dcm/IMG0308.dcm \n", - " inflating: dcm/IMG0309.dcm \n", - " inflating: dcm/IMG0310.dcm \n", - " inflating: dcm/IMG0311.dcm \n", - " inflating: dcm/IMG0312.dcm \n", - " inflating: dcm/IMG0313.dcm \n", - " inflating: dcm/IMG0314.dcm \n", - " inflating: dcm/IMG0315.dcm \n", - " inflating: dcm/IMG0316.dcm \n", - " inflating: dcm/IMG0317.dcm \n", - " inflating: dcm/IMG0318.dcm \n", - " inflating: dcm/IMG0319.dcm \n", - " inflating: dcm/IMG0320.dcm \n", - " inflating: dcm/IMG0321.dcm \n", - " inflating: dcm/IMG0322.dcm \n", - " inflating: dcm/IMG0323.dcm \n", - " inflating: dcm/IMG0324.dcm \n", - " inflating: dcm/IMG0325.dcm \n", - " inflating: dcm/IMG0326.dcm \n", - " inflating: dcm/IMG0327.dcm \n", - " inflating: dcm/IMG0328.dcm \n", - " inflating: dcm/IMG0329.dcm \n", - " inflating: dcm/IMG0330.dcm \n", - " inflating: dcm/IMG0331.dcm \n", - " inflating: dcm/IMG0332.dcm \n", - " inflating: dcm/IMG0333.dcm \n", - " inflating: dcm/IMG0334.dcm \n", - " inflating: dcm/IMG0335.dcm \n", - " inflating: dcm/IMG0336.dcm \n", - " inflating: dcm/IMG0337.dcm \n", - " inflating: dcm/IMG0338.dcm \n", - " inflating: dcm/IMG0339.dcm \n", - " inflating: dcm/IMG0340.dcm \n", - " inflating: dcm/IMG0341.dcm \n", - " inflating: dcm/IMG0342.dcm \n", - " inflating: dcm/IMG0343.dcm \n", - " inflating: dcm/IMG0344.dcm \n", - " inflating: dcm/IMG0345.dcm \n", - " inflating: dcm/IMG0346.dcm \n", - " inflating: dcm/IMG0347.dcm \n", - " inflating: dcm/IMG0348.dcm \n", - " inflating: dcm/IMG0349.dcm \n", - " inflating: dcm/IMG0350.dcm \n", - " inflating: dcm/IMG0351.dcm \n", - " inflating: dcm/IMG0352.dcm \n", - " inflating: dcm/IMG0353.dcm \n", - " inflating: dcm/IMG0354.dcm \n", - " inflating: dcm/IMG0355.dcm \n", - " inflating: dcm/IMG0356.dcm \n", - " inflating: dcm/IMG0357.dcm \n", - " inflating: dcm/IMG0358.dcm \n", - " inflating: dcm/IMG0359.dcm \n", - " inflating: dcm/IMG0360.dcm \n", - " inflating: dcm/IMG0361.dcm \n", - " inflating: dcm/IMG0362.dcm \n", - " inflating: dcm/IMG0363.dcm \n", - " inflating: dcm/IMG0364.dcm \n", - " inflating: dcm/IMG0365.dcm \n", - " inflating: dcm/IMG0366.dcm \n", - " inflating: dcm/IMG0367.dcm \n", - " inflating: dcm/IMG0368.dcm \n", - " inflating: dcm/IMG0369.dcm \n", - " inflating: dcm/IMG0370.dcm \n", - " inflating: dcm/IMG0371.dcm \n", - " inflating: dcm/IMG0372.dcm \n", - " inflating: dcm/IMG0373.dcm \n", - " inflating: dcm/IMG0374.dcm \n", - " inflating: dcm/IMG0375.dcm \n", - " inflating: dcm/IMG0376.dcm \n", - " inflating: dcm/IMG0377.dcm \n", - " inflating: dcm/IMG0378.dcm \n", - " inflating: dcm/IMG0379.dcm \n", - " inflating: dcm/IMG0380.dcm \n", - " inflating: dcm/IMG0381.dcm \n", - " inflating: dcm/IMG0382.dcm \n", - " inflating: dcm/IMG0383.dcm \n", - " inflating: dcm/IMG0384.dcm \n", - " inflating: dcm/IMG0385.dcm \n", - " inflating: dcm/IMG0386.dcm \n", - " inflating: dcm/IMG0387.dcm \n", - " inflating: dcm/IMG0388.dcm \n", - " inflating: dcm/IMG0389.dcm \n", - " inflating: dcm/IMG0390.dcm \n", - " inflating: dcm/IMG0391.dcm \n", - " inflating: dcm/IMG0392.dcm \n", - " inflating: dcm/IMG0393.dcm \n", - " inflating: dcm/IMG0394.dcm \n", - " inflating: dcm/IMG0395.dcm \n", - " inflating: dcm/IMG0396.dcm \n", - " inflating: dcm/IMG0397.dcm \n", - " inflating: dcm/IMG0398.dcm \n", - " inflating: dcm/IMG0399.dcm \n", - " inflating: dcm/IMG0400.dcm \n", - " inflating: dcm/IMG0401.dcm \n", - " inflating: dcm/IMG0402.dcm \n", - " inflating: dcm/IMG0403.dcm \n", - " inflating: dcm/IMG0404.dcm \n", - " inflating: dcm/IMG0405.dcm \n", - " inflating: dcm/IMG0406.dcm \n", - " inflating: dcm/IMG0407.dcm \n", - " inflating: dcm/IMG0408.dcm \n", - " inflating: dcm/IMG0409.dcm \n", - " inflating: dcm/IMG0410.dcm \n", - " inflating: dcm/IMG0411.dcm \n", - " inflating: dcm/IMG0412.dcm \n", - " inflating: dcm/IMG0413.dcm \n", - " inflating: dcm/IMG0414.dcm \n", - " inflating: dcm/IMG0415.dcm \n", - " inflating: dcm/IMG0416.dcm \n", - " inflating: dcm/IMG0417.dcm \n", - " inflating: dcm/IMG0418.dcm \n", - " inflating: dcm/IMG0419.dcm \n", - " inflating: dcm/IMG0420.dcm \n", - " inflating: dcm/IMG0421.dcm \n", - " inflating: dcm/IMG0422.dcm \n", - " inflating: dcm/IMG0423.dcm \n", - " inflating: dcm/IMG0424.dcm \n", - " inflating: dcm/IMG0425.dcm \n", - " inflating: dcm/IMG0426.dcm \n", - " inflating: dcm/IMG0427.dcm \n", - " inflating: dcm/IMG0428.dcm \n", - " inflating: dcm/IMG0429.dcm \n", - " inflating: dcm/IMG0430.dcm \n", - " inflating: dcm/IMG0431.dcm \n", - " inflating: dcm/IMG0432.dcm \n", - " inflating: dcm/IMG0433.dcm \n", - " inflating: dcm/IMG0434.dcm \n", - " inflating: dcm/IMG0435.dcm \n", - " inflating: dcm/IMG0436.dcm \n", - " inflating: dcm/IMG0437.dcm \n", - " inflating: dcm/IMG0438.dcm \n", - " inflating: dcm/IMG0439.dcm \n", - " inflating: dcm/IMG0440.dcm \n", - " inflating: dcm/IMG0441.dcm \n", - " inflating: dcm/IMG0442.dcm \n", - " inflating: dcm/IMG0443.dcm \n", - " inflating: dcm/IMG0444.dcm \n", - " inflating: dcm/IMG0445.dcm \n", - " inflating: dcm/IMG0446.dcm \n", - " inflating: dcm/IMG0447.dcm \n", - " inflating: dcm/IMG0448.dcm \n", - " inflating: dcm/IMG0449.dcm \n", - " inflating: dcm/IMG0450.dcm \n", - " inflating: dcm/IMG0451.dcm \n", - " inflating: dcm/IMG0452.dcm \n", - " inflating: dcm/IMG0453.dcm \n", - " inflating: dcm/IMG0454.dcm \n", - " inflating: dcm/IMG0455.dcm \n", - " inflating: dcm/IMG0456.dcm \n", - " inflating: dcm/IMG0457.dcm \n", - " inflating: dcm/IMG0458.dcm \n", - " inflating: dcm/IMG0459.dcm \n", - " inflating: dcm/IMG0460.dcm \n", - " inflating: dcm/IMG0461.dcm \n", - " inflating: dcm/IMG0462.dcm \n", - " inflating: dcm/IMG0463.dcm \n", - " inflating: dcm/IMG0464.dcm \n", - " inflating: dcm/IMG0465.dcm \n", - " inflating: dcm/IMG0466.dcm \n", - " inflating: dcm/IMG0467.dcm \n", - " inflating: dcm/IMG0468.dcm \n", - " inflating: dcm/IMG0469.dcm \n", - " inflating: dcm/IMG0470.dcm \n", - " inflating: dcm/IMG0471.dcm \n", - " inflating: dcm/IMG0472.dcm \n", - " inflating: dcm/IMG0473.dcm \n", - " inflating: dcm/IMG0474.dcm \n", - " inflating: dcm/IMG0475.dcm \n", - " inflating: dcm/IMG0476.dcm \n", - " inflating: dcm/IMG0477.dcm \n", - " inflating: dcm/IMG0478.dcm \n", - " inflating: dcm/IMG0479.dcm \n", - " inflating: dcm/IMG0480.dcm \n", - " inflating: dcm/IMG0481.dcm \n", - " inflating: dcm/IMG0482.dcm \n", - " inflating: dcm/IMG0483.dcm \n", - " inflating: dcm/IMG0484.dcm \n", - " inflating: dcm/IMG0485.dcm \n", - " inflating: dcm/IMG0486.dcm \n", - " inflating: dcm/IMG0487.dcm \n", - " inflating: dcm/IMG0488.dcm \n", - " inflating: dcm/IMG0489.dcm \n", - " inflating: dcm/IMG0490.dcm \n", - " inflating: dcm/IMG0491.dcm \n", - " inflating: dcm/IMG0492.dcm \n", - " inflating: dcm/IMG0493.dcm \n", - " inflating: dcm/IMG0494.dcm \n", - " inflating: dcm/IMG0495.dcm \n", - " inflating: dcm/IMG0496.dcm \n", - " inflating: dcm/IMG0497.dcm \n", - " inflating: dcm/IMG0498.dcm \n", - " inflating: dcm/IMG0499.dcm \n", - " inflating: dcm/IMG0500.dcm \n", - " inflating: dcm/IMG0501.dcm \n", - " inflating: dcm/IMG0502.dcm \n", - " inflating: dcm/IMG0503.dcm \n", - " inflating: dcm/IMG0504.dcm \n", - " inflating: dcm/IMG0505.dcm \n", - " inflating: dcm/IMG0506.dcm \n", - " inflating: dcm/IMG0507.dcm \n", - " inflating: dcm/IMG0508.dcm \n", - " inflating: dcm/IMG0509.dcm \n", - " inflating: dcm/IMG0510.dcm \n", - " inflating: dcm/IMG0511.dcm \n", - " inflating: dcm/IMG0512.dcm \n", - " inflating: dcm/IMG0513.dcm \n", - " inflating: dcm/IMG0514.dcm \n", - " inflating: dcm/IMG0515.dcm \n", + "From: https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\n", + "To: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_seg_bundle_data.zip\n", + "100%|██████████████████████████████████████| 79.4M/79.4M [00:00<00:00, 98.0MB/s]\n", + "Archive: ai_spleen_seg_bundle_data.zip\n", + " inflating: dcm/1-001.dcm \n", + " inflating: dcm/1-002.dcm \n", + " inflating: dcm/1-003.dcm \n", + " inflating: dcm/1-004.dcm \n", + " inflating: dcm/1-005.dcm \n", + " inflating: dcm/1-006.dcm \n", + " inflating: dcm/1-007.dcm \n", + " inflating: dcm/1-008.dcm \n", + " inflating: dcm/1-009.dcm \n", + " inflating: dcm/1-010.dcm \n", + " inflating: dcm/1-011.dcm \n", + " inflating: dcm/1-012.dcm \n", + " inflating: dcm/1-013.dcm \n", + " inflating: dcm/1-014.dcm \n", + " inflating: dcm/1-015.dcm \n", + " inflating: dcm/1-016.dcm \n", + " inflating: dcm/1-017.dcm \n", + " inflating: dcm/1-018.dcm \n", + " inflating: dcm/1-019.dcm \n", + " inflating: dcm/1-020.dcm \n", + " inflating: dcm/1-021.dcm \n", + " inflating: dcm/1-022.dcm \n", + " inflating: dcm/1-023.dcm \n", + " inflating: dcm/1-024.dcm \n", + " inflating: dcm/1-025.dcm \n", + " inflating: dcm/1-026.dcm \n", + " inflating: dcm/1-027.dcm \n", + " inflating: dcm/1-028.dcm \n", + " inflating: dcm/1-029.dcm \n", + " inflating: dcm/1-030.dcm \n", + " inflating: dcm/1-031.dcm \n", + " inflating: dcm/1-032.dcm \n", + " inflating: dcm/1-033.dcm \n", + " inflating: dcm/1-034.dcm \n", + " inflating: dcm/1-035.dcm \n", + " inflating: dcm/1-036.dcm \n", + " inflating: dcm/1-037.dcm \n", + " inflating: dcm/1-038.dcm \n", + " inflating: dcm/1-039.dcm \n", + " inflating: dcm/1-040.dcm \n", + " inflating: dcm/1-041.dcm \n", + " inflating: dcm/1-042.dcm \n", + " inflating: dcm/1-043.dcm \n", + " inflating: dcm/1-044.dcm \n", + " inflating: dcm/1-045.dcm \n", + " inflating: dcm/1-046.dcm \n", + " inflating: dcm/1-047.dcm \n", + " inflating: dcm/1-048.dcm \n", + " inflating: dcm/1-049.dcm \n", + " inflating: dcm/1-050.dcm \n", + " inflating: dcm/1-051.dcm \n", + " inflating: dcm/1-052.dcm \n", + " inflating: dcm/1-053.dcm \n", + " inflating: dcm/1-054.dcm \n", + " inflating: dcm/1-055.dcm \n", + " inflating: dcm/1-056.dcm \n", + " inflating: dcm/1-057.dcm \n", + " inflating: dcm/1-058.dcm \n", + " inflating: dcm/1-059.dcm \n", + " inflating: dcm/1-060.dcm \n", + " inflating: dcm/1-061.dcm \n", + " inflating: dcm/1-062.dcm \n", + " inflating: dcm/1-063.dcm \n", + " inflating: dcm/1-064.dcm \n", + " inflating: dcm/1-065.dcm \n", + " inflating: dcm/1-066.dcm \n", + " inflating: dcm/1-067.dcm \n", + " inflating: dcm/1-068.dcm \n", + " inflating: dcm/1-069.dcm \n", + " inflating: dcm/1-070.dcm \n", + " inflating: dcm/1-071.dcm \n", + " inflating: dcm/1-072.dcm \n", + " inflating: dcm/1-073.dcm \n", + " inflating: dcm/1-074.dcm \n", + " inflating: dcm/1-075.dcm \n", + " inflating: dcm/1-076.dcm \n", + " inflating: dcm/1-077.dcm \n", + " inflating: dcm/1-078.dcm \n", + " inflating: dcm/1-079.dcm \n", + " inflating: dcm/1-080.dcm \n", + " inflating: dcm/1-081.dcm \n", + " inflating: dcm/1-082.dcm \n", + " inflating: dcm/1-083.dcm \n", + " inflating: dcm/1-084.dcm \n", + " inflating: dcm/1-085.dcm \n", + " inflating: dcm/1-086.dcm \n", + " inflating: dcm/1-087.dcm \n", + " inflating: dcm/1-088.dcm \n", + " inflating: dcm/1-089.dcm \n", + " inflating: dcm/1-090.dcm \n", + " inflating: dcm/1-091.dcm \n", + " inflating: dcm/1-092.dcm \n", + " inflating: dcm/1-093.dcm \n", + " inflating: dcm/1-094.dcm \n", + " inflating: dcm/1-095.dcm \n", + " inflating: dcm/1-096.dcm \n", + " inflating: dcm/1-097.dcm \n", + " inflating: dcm/1-098.dcm \n", + " inflating: dcm/1-099.dcm \n", + " inflating: dcm/1-100.dcm \n", + " inflating: dcm/1-101.dcm \n", + " inflating: dcm/1-102.dcm \n", + " inflating: dcm/1-103.dcm \n", + " inflating: dcm/1-104.dcm \n", + " inflating: dcm/1-105.dcm \n", + " inflating: dcm/1-106.dcm \n", + " inflating: dcm/1-107.dcm \n", + " inflating: dcm/1-108.dcm \n", + " inflating: dcm/1-109.dcm \n", + " inflating: dcm/1-110.dcm \n", + " inflating: dcm/1-111.dcm \n", + " inflating: dcm/1-112.dcm \n", + " inflating: dcm/1-113.dcm \n", + " inflating: dcm/1-114.dcm \n", + " inflating: dcm/1-115.dcm \n", + " inflating: dcm/1-116.dcm \n", + " inflating: dcm/1-117.dcm \n", + " inflating: dcm/1-118.dcm \n", + " inflating: dcm/1-119.dcm \n", + " inflating: dcm/1-120.dcm \n", + " inflating: dcm/1-121.dcm \n", + " inflating: dcm/1-122.dcm \n", + " inflating: dcm/1-123.dcm \n", + " inflating: dcm/1-124.dcm \n", + " inflating: dcm/1-125.dcm \n", + " inflating: dcm/1-126.dcm \n", + " inflating: dcm/1-127.dcm \n", + " inflating: dcm/1-128.dcm \n", + " inflating: dcm/1-129.dcm \n", + " inflating: dcm/1-130.dcm \n", + " inflating: dcm/1-131.dcm \n", + " inflating: dcm/1-132.dcm \n", + " inflating: dcm/1-133.dcm \n", + " inflating: dcm/1-134.dcm \n", + " inflating: dcm/1-135.dcm \n", + " inflating: dcm/1-136.dcm \n", + " inflating: dcm/1-137.dcm \n", + " inflating: dcm/1-138.dcm \n", + " inflating: dcm/1-139.dcm \n", + " inflating: dcm/1-140.dcm \n", + " inflating: dcm/1-141.dcm \n", + " inflating: dcm/1-142.dcm \n", + " inflating: dcm/1-143.dcm \n", + " inflating: dcm/1-144.dcm \n", + " inflating: dcm/1-145.dcm \n", + " inflating: dcm/1-146.dcm \n", + " inflating: dcm/1-147.dcm \n", + " inflating: dcm/1-148.dcm \n", + " inflating: dcm/1-149.dcm \n", + " inflating: dcm/1-150.dcm \n", + " inflating: dcm/1-151.dcm \n", + " inflating: dcm/1-152.dcm \n", + " inflating: dcm/1-153.dcm \n", + " inflating: dcm/1-154.dcm \n", + " inflating: dcm/1-155.dcm \n", + " inflating: dcm/1-156.dcm \n", + " inflating: dcm/1-157.dcm \n", + " inflating: dcm/1-158.dcm \n", + " inflating: dcm/1-159.dcm \n", + " inflating: dcm/1-160.dcm \n", + " inflating: dcm/1-161.dcm \n", + " inflating: dcm/1-162.dcm \n", + " inflating: dcm/1-163.dcm \n", + " inflating: dcm/1-164.dcm \n", + " inflating: dcm/1-165.dcm \n", + " inflating: dcm/1-166.dcm \n", + " inflating: dcm/1-167.dcm \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " inflating: dcm/1-168.dcm \n", + " inflating: dcm/1-169.dcm \n", + " inflating: dcm/1-170.dcm \n", + " inflating: dcm/1-171.dcm \n", + " inflating: dcm/1-172.dcm \n", + " inflating: dcm/1-173.dcm \n", + " inflating: dcm/1-174.dcm \n", + " inflating: dcm/1-175.dcm \n", + " inflating: dcm/1-176.dcm \n", + " inflating: dcm/1-177.dcm \n", + " inflating: dcm/1-178.dcm \n", + " inflating: dcm/1-179.dcm \n", + " inflating: dcm/1-180.dcm \n", + " inflating: dcm/1-181.dcm \n", + " inflating: dcm/1-182.dcm \n", + " inflating: dcm/1-183.dcm \n", + " inflating: dcm/1-184.dcm \n", + " inflating: dcm/1-185.dcm \n", + " inflating: dcm/1-186.dcm \n", + " inflating: dcm/1-187.dcm \n", + " inflating: dcm/1-188.dcm \n", + " inflating: dcm/1-189.dcm \n", + " inflating: dcm/1-190.dcm \n", + " inflating: dcm/1-191.dcm \n", + " inflating: dcm/1-192.dcm \n", + " inflating: dcm/1-193.dcm \n", + " inflating: dcm/1-194.dcm \n", + " inflating: dcm/1-195.dcm \n", + " inflating: dcm/1-196.dcm \n", + " inflating: dcm/1-197.dcm \n", + " inflating: dcm/1-198.dcm \n", + " inflating: dcm/1-199.dcm \n", + " inflating: dcm/1-200.dcm \n", + " inflating: dcm/1-201.dcm \n", + " inflating: dcm/1-202.dcm \n", + " inflating: dcm/1-203.dcm \n", + " inflating: dcm/1-204.dcm \n", " inflating: model.ts \n" ] } ], "source": [ - "# Download ai_spleen_seg_data test data zip file\n", + "# Download ai_spleen_bundle_data test data zip file\n", "!pip install gdown \n", - "!gdown https://drive.google.com/uc?id=1GC_N8YQk_mOWN02oOzAU_2YDmNRWk--n\n", + "!gdown \"https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\"\n", "\n", - "# After downloading ai_spleen_seg_data zip file from the web browser or using gdown,\n", - "!unzip -o \"ai_spleen_seg_data_updated_1203.zip\"" + "# After downloading ai_spleen_bundle_data zip file from the web browser or using gdown,\n", + "!unzip -o \"ai_spleen_seg_bundle_data.zip\"" ] }, { @@ -711,19 +411,22 @@ " Activationsd,\n", " AsDiscreted,\n", " Compose,\n", - " CropForegroundd,\n", " EnsureChannelFirstd,\n", + " EnsureTyped,\n", " Invertd,\n", " LoadImaged,\n", + " Orientationd,\n", " SaveImaged,\n", " ScaleIntensityRanged,\n", " Spacingd,\n", - " ToTensord,\n", ")\n", "\n", + "# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package.\n", + "from pydicom.sr.codedict import codes\n", + "\n", "from monai.deploy.core import Application, resource\n", "from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator\n", - "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator\n", + "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription\n", "from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator\n", "from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator\n", "from monai.deploy.operators.clara_viz_operator import ClaraVizOperator" @@ -762,7 +465,7 @@ "source": [ "@md.input(\"image\", Image, IOType.IN_MEMORY)\n", "@md.output(\"seg_image\", Image, IOType.IN_MEMORY)\n", - "@md.env(pip_packages=[\"monai>=0.8.1\", \"torch>=1.5\", \"numpy>=1.20\", \"nibabel\"])\n", + "@md.env(pip_packages=[\"monai>=0.8.1\", \"torch>=1.5\", \"numpy>=1.21\", \"nibabel\"])\n", "class SpleenSegOperator(Operator):\n", " \"\"\"Performs Spleen segmentation with a 3D image converted from a DICOM CT series.\n", " \"\"\"\n", @@ -790,9 +493,9 @@ " # Delegates inference and saving output to the built-in operator.\n", " infer_operator = MonaiSegInferenceOperator(\n", " (\n", - " 160,\n", - " 160,\n", - " 160,\n", + " 96,\n", + " 96,\n", + " 96,\n", " ),\n", " pre_transforms,\n", " post_transforms,\n", @@ -813,10 +516,10 @@ " [\n", " LoadImaged(keys=my_key, reader=img_reader),\n", " EnsureChannelFirstd(keys=my_key),\n", - " Spacingd(keys=my_key, pixdim=[1.0, 1.0, 1.0], mode=[\"bilinear\"], align_corners=True),\n", + " Orientationd(keys=my_key, axcodes=\"RAS\"),\n", + " Spacingd(keys=my_key, pixdim=[1.5, 1.5, 2.9], mode=[\"bilinear\"]),\n", " ScaleIntensityRanged(keys=my_key, a_min=-57, a_max=164, b_min=0.0, b_max=1.0, clip=True),\n", - " CropForegroundd(keys=my_key, source_key=my_key),\n", - " ToTensord(keys=my_key),\n", + " EnsureTyped(keys=my_key),\n", " ]\n", " )\n", "\n", @@ -827,13 +530,22 @@ " return Compose(\n", " [\n", " Activationsd(keys=pred_key, softmax=True),\n", - " AsDiscreted(keys=pred_key, argmax=True),\n", " Invertd(\n", - " keys=pred_key, transform=pre_transforms, orig_keys=self._input_dataset_key, nearest_interp=True\n", + " keys=pred_key,\n", + " transform=pre_transforms,\n", + " orig_keys=self._input_dataset_key,\n", + " nearest_interp=False,\n", + " to_tensor=True,\n", + " ),\n", + " AsDiscreted(keys=pred_key, argmax=True),\n", + " SaveImaged(\n", + " keys=pred_key,\n", + " output_dir=out_dir,\n", + " output_postfix=\"seg\",\n", + " output_dtype=uint8,\n", " ),\n", - " SaveImaged(keys=pred_key, output_dir=out_dir, output_postfix=\"seg\", output_dtype=uint8, resample=False),\n", " ]\n", - " )" + " )\n" ] }, { @@ -860,30 +572,94 @@ "@resource(cpu=1, gpu=1, memory=\"7Gi\")\n", "class AISpleenSegApp(Application):\n", " def __init__(self, *args, **kwargs):\n", + " \"\"\"Creates an application instance.\"\"\"\n", + "\n", + " self._logger = logging.getLogger(\"{}.{}\".format(__name__, type(self).__name__))\n", " super().__init__(*args, **kwargs)\n", "\n", + " def run(self, *args, **kwargs):\n", + " # This method calls the base class to run. Can be omitted if simply calling through.\n", + " self._logger.debug(f\"Begin {self.run.__name__}\")\n", + " super().run(*args, **kwargs)\n", + " self._logger.debug(f\"End {self.run.__name__}\")\n", + "\n", " def compose(self):\n", + " \"\"\"Creates the app specific operators and chain them up in the processing DAG.\"\"\"\n", "\n", + " self._logger.debug(f\"Begin {self.compose.__name__}\")\n", + " # Creates the custom operator(s) as well as SDK built-in operator(s).\n", " study_loader_op = DICOMDataLoaderOperator()\n", - " series_selector_op = DICOMSeriesSelectorOperator()\n", + " series_selector_op = DICOMSeriesSelectorOperator(rules=Sample_Rules_Text)\n", " series_to_vol_op = DICOMSeriesToVolumeOperator()\n", - " # Creates DICOM Seg writer with segment label name in a string list\n", - " dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=[\"Spleen\"])\n", + " # Model specific inference operator, supporting MONAI transforms.\n", "\n", " # Creates the model specific segmentation operator\n", " spleen_seg_op = SpleenSegOperator()\n", "\n", - " # Creates the DAG by linking the operators\n", + " # Create DICOM Seg writer providing the required segment description for each segment with\n", + " # the actual algorithm and the pertinent organ/tissue.\n", + " # The segment_label, algorithm_name, and algorithm_version are limited to 64 chars.\n", + " # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html\n", + " # User can Look up SNOMED CT codes at, e.g.\n", + " # https://bioportal.bioontology.org/ontologies/SNOMEDCT\n", + "\n", + " _algorithm_name = \"3D segmentation of the Spleen from a CT series\"\n", + " _algorithm_family = codes.DCM.ArtificialIntelligence\n", + " _algorithm_version = \"0.1.0\"\n", + "\n", + " segment_descriptions = [\n", + " SegmentDescription(\n", + " segment_label=\"Lung\",\n", + " segmented_property_category=codes.SCT.Organ,\n", + " segmented_property_type=codes.SCT.Lung,\n", + " algorithm_name=_algorithm_name,\n", + " algorithm_family=_algorithm_family,\n", + " algorithm_version=_algorithm_version,\n", + " ),\n", + " ]\n", + "\n", + " dicom_seg_writer = DICOMSegmentationWriterOperator(segment_descriptions)\n", + "\n", + " # Create the processing pipeline, by specifying the source and destination operators, and\n", + " # ensuring the output from the former matches the input of the latter, in both name and type.\n", " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", - " self.add_flow(series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", + " self.add_flow(\n", + " series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", " self.add_flow(series_to_vol_op, spleen_seg_op, {\"image\": \"image\"})\n", "\n", - " self.add_flow(series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", + " # Note below the dicom_seg_writer requires two inputs, each coming from a source operator.\n", + " self.add_flow(\n", + " series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", " self.add_flow(spleen_seg_op, dicom_seg_writer, {\"seg_image\": \"seg_image\"})\n", - " \n", + "\n", " viz_op = ClaraVizOperator()\n", " self.add_flow(series_to_vol_op, viz_op, {\"image\": \"image\"})\n", - " self.add_flow(spleen_seg_op, viz_op, {\"seg_image\": \"seg_image\"})\n" + " self.add_flow(spleen_seg_op, viz_op, {\"seg_image\": \"seg_image\"})\n", + "\n", + " self._logger.debug(f\"End {self.compose.__name__}\")\n", + "\n", + "# This is a sample series selection rule in JSON, simply selecting CT series.\n", + "# If the study has more than 1 CT series, then all of them will be selected.\n", + "# Please see more detail in DICOMSeriesSelectorOperator.\n", + "# For list of string values, e.g. \"ImageType\": [\"PRIMARY\", \"ORIGINAL\"], it is a match if all elements\n", + "# are all in the multi-value attribute of the DICOM series.\n", + "Sample_Rules_Text = \"\"\"\n", + "{\n", + " \"selections\": [\n", + " {\n", + " \"name\": \"CT Series\",\n", + " \"conditions\": {\n", + " \"StudyDescription\": \"(.*?)\",\n", + " \"Modality\": \"(?i)CT\",\n", + " \"SeriesDescription\": \"(.*?)\",\n", + " \"ImageType\": [\"PRIMARY\", \"ORIGINAL\"]\n", + " }\n", + " }\n", + " ]\n", + "}\n", + "\"\"\"\n" ] }, { @@ -905,16 +681,45 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 98097, Operator ID: 7ac5e018-fe4d-4416-bb36-2fef5c19f77f)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 599314, Operator ID: 48e76b73-f97a-46c8-abcc-e5b08df11e36)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2022-01-28 11:27:16,671] [WARNING] (root) - No selection rules given; select all series.\n", - "[2022-01-28 11:27:16,671] [INFO] (root) - Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "[2022-01-28 11:27:16,672] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" + "[2022-10-12 00:45:17,348] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-12 00:45:17,349] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-12 00:45:17,349] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-12 00:45:17,350] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-12 00:45:17,351] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-12 00:45:17,351] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 00:45:17,352] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-12 00:45:17,352] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-12 00:45:17,353] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 00:45:17,353] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-12 00:45:17,354] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-12 00:45:17,355] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 00:45:17,355] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-12 00:45:17,356] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-12 00:45:17,357] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-12 00:45:17,357] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-12 00:45:17,358] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + " # of series: 1\n", + "[2022-10-12 00:45:17,359] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-12 00:45:17,359] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-12 00:45:17,360] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-12 00:45:17,361] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 00:45:17,361] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-12 00:45:17,362] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-12 00:45:17,363] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 00:45:17,364] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-12 00:45:17,365] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-12 00:45:17,366] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 00:45:17,366] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-12 00:45:17,367] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-12 00:45:17,368] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" ] }, { @@ -924,75 +729,162 @@ "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 98097, Operator ID: 5b8cc54b-23ee-4909-9409-8544ed42bedd)\u001b[39m\n", - "Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 599314, Operator ID: 929deab3-f1c3-41ee-b94d-8f9faf8786ab)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 98097, Operator ID: f248722e-d87a-4c5b-b398-dbf895180761)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 599314, Operator ID: 5109ceba-44fd-4946-95c9-d66edc9ed0de)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 98097, Operator ID: c3592b6b-7cc7-4818-b94e-f078752aa7b0)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 599314, Operator ID: 4177f666-a619-4fd7-9652-ca7c4c4992b8)\u001b[39m\n", "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763, type \n", + "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", + "SeriesDate: 20090831, type \n", + "SeriesTime: 101721.452, type \n", "Modality: CT, type \n", - "SeriesDescription: No series description, type \n", + "SeriesDescription: ABD/PANC 3.0 B31f, type \n", "PatientPosition: HFS, type \n", - "SeriesNumber: 1, type \n", - "row_pixel_spacing: 1.0, type \n", - "col_pixel_spacing: 1.0, type \n", - "depth_pixel_spacing: 1.0, type \n", - "row_direction_cosine: [-1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, -1.0, 0.0], type \n", + "SeriesNumber: 8, type \n", + "row_pixel_spacing: 0.7890625, type \n", + "col_pixel_spacing: 0.7890625, type \n", + "depth_pixel_spacing: 1.5, type \n", + "row_direction_cosine: [1.0, 0.0, 0.0], type \n", + "col_direction_cosine: [0.0, 1.0, 0.0], type \n", "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[-1. 0. 0. 0.]\n", - " [ 0. -1. 0. 0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "nifti_affine_transform: [[ 1. -0. -0. -0.]\n", - " [-0. 1. -0. -0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "StudyInstanceUID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213, type \n", - "StudyID: SLICER10001, type \n", - "StudyDate: 2019-09-16, type \n", - "StudyTime: 010100.000000, type \n", - "StudyDescription: spleen, type \n", - "AccessionNumber: 1, type \n", - "selection_name: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763, type \n" + "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", + " [ 0. 0.7890625 0. -398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", + " [ -0. -0.7890625 -0. 398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", + "StudyID: , type \n", + "StudyDate: 20090831, type \n", + "StudyTime: 095948.599, type \n", + "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", + "AccessionNumber: 5471978513296937, type \n", + "selection_name: CT Series, type \n", + "2022-10-12 00:45:30,618 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "Output Seg image numpy array shaped: (204, 512, 512)\n", + "Output Seg image pixel max value: 1\n", + "\u001b[34mDone performing execution of operator SpleenSegOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 599314, Operator ID: 94e3c6c0-1d25-4e3f-aadc-e068d3033051)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2022-01-28 11:27:23,189] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2022-01-28 11:27:23,190] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2022-01-28 11:27:23,190] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "file written: /home/aheumann/projects/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", - "Output Seg image pixel max value: 1\n", - "\u001b[34mDone performing execution of operator SpleenSegOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 98097, Operator ID: 1f316176-3f15-41af-bbac-4114d3693cd7)\u001b[39m\n" + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-12 00:45:33,850] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-12 00:45:33,853] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-12 00:45:33,856] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-12 00:45:33,859] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-12 00:45:33,861] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-12 00:45:33,866] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-12 00:45:33,871] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-12 00:45:33,875] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-12 00:45:33,879] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-12 00:45:33,882] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-12 00:45:33,885] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-12 00:45:33,888] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-12 00:45:33,891] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-12 00:45:33,894] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-12 00:45:33,896] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-12 00:45:33,898] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-12 00:45:33,899] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-12 00:45:33,902] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-12 00:45:33,904] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-12 00:45:33,905] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-12 00:45:33,907] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-12 00:45:33,908] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-12 00:45:33,910] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-12 00:45:33,912] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-12 00:45:33,915] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-12 00:45:33,918] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-12 00:45:33,919] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-12 00:45:33,921] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-12 00:45:33,922] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-12 00:45:33,924] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-12 00:45:33,925] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-12 00:45:33,928] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-12 00:45:33,931] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-12 00:45:33,934] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-12 00:45:33,936] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-12 00:45:33,939] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-12 00:45:33,942] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-12 00:45:33,945] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-12 00:45:33,947] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-12 00:45:33,950] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-12 00:45:33,954] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-12 00:45:33,959] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-12 00:45:33,964] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-12 00:45:33,967] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-12 00:45:33,971] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-12 00:45:33,975] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-12 00:45:33,978] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-12 00:45:33,981] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-12 00:45:33,984] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-12 00:45:33,987] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-12 00:45:33,990] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-12 00:45:33,993] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-12 00:45:33,995] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-12 00:45:34,001] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-12 00:45:34,005] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-12 00:45:34,010] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-12 00:45:34,014] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-12 00:45:34,017] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-12 00:45:34,020] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-12 00:45:34,024] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-12 00:45:34,027] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-12 00:45:34,030] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-12 00:45:34,033] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-12 00:45:34,036] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-12 00:45:34,043] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-12 00:45:34,048] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-12 00:45:34,051] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-12 00:45:34,055] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-12 00:45:34,058] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-12 00:45:34,061] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-12 00:45:34,063] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-12 00:45:34,065] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-12 00:45:34,068] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-12 00:45:34,070] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-12 00:45:34,072] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-12 00:45:34,075] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-12 00:45:34,077] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-12 00:45:34,080] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-12 00:45:34,082] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-12 00:45:34,084] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-12 00:45:34,086] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-12 00:45:34,088] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-12 00:45:34,091] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-12 00:45:34,093] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-12 00:45:34,096] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-12 00:45:34,098] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-12 00:45:34,101] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-12 00:45:34,102] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-12 00:45:34,151] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-12 00:45:34,153] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2022-01-28 11:27:24,546] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2022-01-28 11:27:25,248] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file /home/aheumann/projects/monai-deploy-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2022-01-28 11:27:25,358] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n" + "[2022-10-12 00:45:34,154] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-12 00:45:34,154] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-12 00:45:34,155] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-12 00:45:34,156] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-12 00:45:34,157] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-12 00:45:34,158] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-12 00:45:34,159] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n" ] }, { @@ -1002,29 +894,23 @@ "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator ClaraVizOperator\u001b[39m\n", - "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 98097, Operator ID: 67a92a8d-da44-44a0-b418-b28e82ff701a)\u001b[39m\n" + "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 599314, Operator ID: 5449286e-3dc7-4a3c-8d1a-e00f52fa7801)\u001b[39m\n" ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "3d9986b677e04a128042983e7236c008", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Box(children=(Widget(), VBox(children=(interactive(children=(Dropdown(description='View mode', index=2, option…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[34mDone performing execution of operator ClaraVizOperator\n", - "\u001b[39m\n" + "ename": "AttributeError", + "evalue": "'Widget' object has no attribute 'on_displayed'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn [6], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m app \u001b[38;5;241m=\u001b[39m AISpleenSegApp()\n\u001b[0;32m----> 3\u001b[0m \u001b[43mapp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdcm\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43moutput\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmodel.ts\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn [5], line 12\u001b[0m, in \u001b[0;36mAISpleenSegApp.run\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrun\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# This method calls the base class to run. Can be omitted if simply calling through.\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mBegin \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrun\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 12\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEnd \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrun\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/core/application.py:429\u001b[0m, in \u001b[0;36mApplication.run\u001b[0;34m(self, log_level, input, output, model, workdir, datastore, executor)\u001b[0m\n\u001b[1;32m 427\u001b[0m datastore_obj \u001b[38;5;241m=\u001b[39m DatastoreFactory\u001b[38;5;241m.\u001b[39mcreate(app_context\u001b[38;5;241m.\u001b[39mdatastore)\n\u001b[1;32m 428\u001b[0m executor_obj \u001b[38;5;241m=\u001b[39m ExecutorFactory\u001b[38;5;241m.\u001b[39mcreate(app_context\u001b[38;5;241m.\u001b[39mexecutor, {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mapp\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28mself\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdatastore\u001b[39m\u001b[38;5;124m\"\u001b[39m: datastore_obj})\n\u001b[0;32m--> 429\u001b[0m \u001b[43mexecutor_obj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/core/executors/single_process_executor.py:125\u001b[0m, in \u001b[0;36mSingleProcessExecutor.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 117\u001b[0m \u001b[38;5;66;03m# Execute compute()\u001b[39;00m\n\u001b[1;32m 118\u001b[0m \u001b[38;5;28mprint\u001b[39m(\n\u001b[1;32m 119\u001b[0m Fore\u001b[38;5;241m.\u001b[39mGREEN\n\u001b[1;32m 120\u001b[0m \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mExecuting operator \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m op\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[38;5;241m+\u001b[39m Fore\u001b[38;5;241m.\u001b[39mRESET\n\u001b[1;32m 124\u001b[0m )\n\u001b[0;32m--> 125\u001b[0m \u001b[43mop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcompute\u001b[49m\u001b[43m(\u001b[49m\u001b[43mop_exec_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minput_context\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mop_exec_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moutput_context\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mop_exec_context\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 127\u001b[0m \u001b[38;5;66;03m# Execute post_compute()\u001b[39;00m\n\u001b[1;32m 128\u001b[0m \u001b[38;5;28mprint\u001b[39m(Fore\u001b[38;5;241m.\u001b[39mBLUE \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDone performing execution of operator \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m op\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m \u001b[38;5;241m+\u001b[39m Fore\u001b[38;5;241m.\u001b[39mRESET)\n", + "File \u001b[0;32m~/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/operators/clara_viz_operator.py:100\u001b[0m, in \u001b[0;36mClaraVizOperator.compute\u001b[0;34m(self, op_input, op_output, context)\u001b[0m\n\u001b[1;32m 96\u001b[0m data_definition\u001b[38;5;241m.\u001b[39marrays\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_build_array(input_image, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDXYZ\u001b[39m\u001b[38;5;124m\"\u001b[39m))\n\u001b[1;32m 98\u001b[0m data_definition\u001b[38;5;241m.\u001b[39marrays\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_build_array(input_seg_image, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMXYZ\u001b[39m\u001b[38;5;124m\"\u001b[39m))\n\u001b[0;32m--> 100\u001b[0m widget \u001b[38;5;241m=\u001b[39m \u001b[43mWidget\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 101\u001b[0m widget\u001b[38;5;241m.\u001b[39mselect_data_definition(data_definition)\n\u001b[1;32m 102\u001b[0m \u001b[38;5;66;03m# default view mode is 'CINEMATIC' switch to 'SLICE_SEGMENTATION' since we have no transfer functions defined\u001b[39;00m\n", + "File \u001b[0;32m~/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/clara/viz/widgets/widget.py:121\u001b[0m, in \u001b[0;36mWidget.__init__\u001b[0;34m(self, renderer, data_definition, **kwargs)\u001b[0m\n\u001b[1;32m 118\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__update_dataset_info(size, element_size, permute_axes)\n\u001b[1;32m 120\u001b[0m \u001b[38;5;66;03m# start video stream when the widget is displayed\u001b[39;00m\n\u001b[0;32m--> 121\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mon_displayed\u001b[49m(\u001b[38;5;28;01mlambda\u001b[39;00m widget, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__on_displayed())\n\u001b[1;32m 123\u001b[0m \u001b[38;5;66;03m# custom message handling\u001b[39;00m\n\u001b[1;32m 124\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mon_msg(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__on_msg)\n", + "\u001b[0;31mAttributeError\u001b[0m: 'Widget' object has no attribute 'on_displayed'" ] } ], @@ -1057,7 +943,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -1074,7 +960,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -1099,20 +985,20 @@ " Activationsd,\n", " AsDiscreted,\n", " Compose,\n", - " CropForegroundd,\n", " EnsureChannelFirstd,\n", + " EnsureTyped,\n", " Invertd,\n", " LoadImaged,\n", + " Orientationd,\n", " SaveImaged,\n", " ScaleIntensityRanged,\n", " Spacingd,\n", - " ToTensord,\n", ")\n", "\n", "\n", "@md.input(\"image\", Image, IOType.IN_MEMORY)\n", "@md.output(\"seg_image\", Image, IOType.IN_MEMORY)\n", - "@md.env(pip_packages=[\"monai>=0.8.1\", \"torch>=1.5\", \"numpy>=1.20\", \"nibabel\", \"typeguard\"])\n", + "@md.env(pip_packages=[\"monai>=0.8.1\", \"torch>=1.10.2\", \"numpy>=1.21\", \"nibabel\"])\n", "class SpleenSegOperator(Operator):\n", " \"\"\"Performs Spleen segmentation with a 3D image converted from a DICOM CT series.\n", " \"\"\"\n", @@ -1140,9 +1026,9 @@ " # Delegates inference and saving output to the built-in operator.\n", " infer_operator = MonaiSegInferenceOperator(\n", " (\n", - " 160,\n", - " 160,\n", - " 160,\n", + " 96,\n", + " 96,\n", + " 96,\n", " ),\n", " pre_transforms,\n", " post_transforms,\n", @@ -1163,10 +1049,10 @@ " [\n", " LoadImaged(keys=my_key, reader=img_reader),\n", " EnsureChannelFirstd(keys=my_key),\n", - " Spacingd(keys=my_key, pixdim=[1.0, 1.0, 1.0], mode=[\"bilinear\"], align_corners=True),\n", + " Orientationd(keys=my_key, axcodes=\"RAS\"),\n", + " Spacingd(keys=my_key, pixdim=[1.5, 1.5, 2.9], mode=[\"bilinear\"]),\n", " ScaleIntensityRanged(keys=my_key, a_min=-57, a_max=164, b_min=0.0, b_max=1.0, clip=True),\n", - " CropForegroundd(keys=my_key, source_key=my_key),\n", - " ToTensord(keys=my_key),\n", + " EnsureTyped(keys=my_key),\n", " ]\n", " )\n", "\n", @@ -1177,11 +1063,20 @@ " return Compose(\n", " [\n", " Activationsd(keys=pred_key, softmax=True),\n", - " AsDiscreted(keys=pred_key, argmax=True),\n", " Invertd(\n", - " keys=pred_key, transform=pre_transforms, orig_keys=self._input_dataset_key, nearest_interp=True\n", + " keys=pred_key,\n", + " transform=pre_transforms,\n", + " orig_keys=self._input_dataset_key,\n", + " nearest_interp=False,\n", + " to_tensor=True,\n", + " ),\n", + " AsDiscreted(keys=pred_key, argmax=True),\n", + " SaveImaged(\n", + " keys=pred_key,\n", + " output_dir=out_dir,\n", + " output_postfix=\"seg\",\n", + " output_dtype=uint8,\n", " ),\n", - " SaveImaged(keys=pred_key, output_dir=out_dir, output_postfix=\"seg\", output_dtype=uint8, resample=False),\n", " ]\n", " )\n" ] @@ -1195,7 +1090,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -1212,57 +1107,128 @@ "\n", "from spleen_seg_operator import SpleenSegOperator\n", "\n", + "# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package.\n", + "from pydicom.sr.codedict import codes\n", + "\n", "from monai.deploy.core import Application, resource\n", "from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator\n", - "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator\n", + "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription\n", "from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator\n", "from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator\n", "from monai.deploy.operators.clara_viz_operator import ClaraVizOperator\n", "\n", + "# This is a sample series selection rule in JSON, simply selecting CT series.\n", + "# If the study has more than 1 CT series, then all of them will be selected.\n", + "# Please see more detail in DICOMSeriesSelectorOperator.\n", + "Sample_Rules_Text = \"\"\"\n", + "{\n", + " \"selections\": [\n", + " {\n", + " \"name\": \"CT Series\",\n", + " \"conditions\": {\n", + " \"StudyDescription\": \"(.*?)\",\n", + " \"Modality\": \"(?i)CT\",\n", + " \"SeriesDescription\": \"(.*?)\",\n", + " \"ImageType\": [\"PRIMARY\", \"ORIGINAL\"],\n", + " }\n", + " }\n", + " ]\n", + "}\n", + "\"\"\"\n", + "\n", "@resource(cpu=1, gpu=1, memory=\"7Gi\")\n", "class AISpleenSegApp(Application):\n", " def __init__(self, *args, **kwargs):\n", + " \"\"\"Creates an application instance.\"\"\"\n", + "\n", + " self._logger = logging.getLogger(\"{}.{}\".format(__name__, type(self).__name__))\n", " super().__init__(*args, **kwargs)\n", "\n", + " def run(self, *args, **kwargs):\n", + " # This method calls the base class to run. Can be omitted if simply calling through.\n", + " self._logger.debug(f\"Begin {self.run.__name__}\")\n", + " super().run(*args, **kwargs)\n", + " self._logger.debug(f\"End {self.run.__name__}\")\n", + "\n", " def compose(self):\n", + " \"\"\"Creates the app specific operators and chain them up in the processing DAG.\"\"\"\n", "\n", + " self._logger.debug(f\"Begin {self.compose.__name__}\")\n", + " # Creates the custom operator(s) as well as SDK built-in operator(s).\n", " study_loader_op = DICOMDataLoaderOperator()\n", - " series_selector_op = DICOMSeriesSelectorOperator(Sample_Rules_Text)\n", + " series_selector_op = DICOMSeriesSelectorOperator(rules=Sample_Rules_Text)\n", " series_to_vol_op = DICOMSeriesToVolumeOperator()\n", - " # Creates DICOM Seg writer with segment label name in a string list\n", - " dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=[\"Spleen\"])\n", + " # Model specific inference operator, supporting MONAI transforms.\n", + "\n", " # Creates the model specific segmentation operator\n", " spleen_seg_op = SpleenSegOperator()\n", "\n", - " # Creates the DAG by link the operators\n", + " # Create DICOM Seg writer providing the required segment description for each segment with\n", + " # the actual algorithm and the pertinent organ/tissue.\n", + " # The segment_label, algorithm_name, and algorithm_version are limited to 64 chars.\n", + " # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html\n", + " # User can Look up SNOMED CT codes at, e.g.\n", + " # https://bioportal.bioontology.org/ontologies/SNOMEDCT\n", + "\n", + " _algorithm_name = \"3D segmentation of the Spleen from a CT series\"\n", + " _algorithm_family = codes.DCM.ArtificialIntelligence\n", + " _algorithm_version = \"0.1.0\"\n", + "\n", + " segment_descriptions = [\n", + " SegmentDescription(\n", + " segment_label=\"Lung\",\n", + " segmented_property_category=codes.SCT.Organ,\n", + " segmented_property_type=codes.SCT.Lung,\n", + " algorithm_name=_algorithm_name,\n", + " algorithm_family=_algorithm_family,\n", + " algorithm_version=_algorithm_version,\n", + " ),\n", + " ]\n", + "\n", + " dicom_seg_writer = DICOMSegmentationWriterOperator(segment_descriptions)\n", + "\n", + " # Create the processing pipeline, by specifying the source and destination operators, and\n", + " # ensuring the output from the former matches the input of the latter, in both name and type.\n", " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", - " self.add_flow(series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", + " self.add_flow(\n", + " series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", " self.add_flow(series_to_vol_op, spleen_seg_op, {\"image\": \"image\"})\n", - " self.add_flow(series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", + "\n", + " # Note below the dicom_seg_writer requires two inputs, each coming from a source operator.\n", + " self.add_flow(\n", + " series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", " self.add_flow(spleen_seg_op, dicom_seg_writer, {\"seg_image\": \"seg_image\"})\n", "\n", " viz_op = ClaraVizOperator()\n", " self.add_flow(series_to_vol_op, viz_op, {\"image\": \"image\"})\n", " self.add_flow(spleen_seg_op, viz_op, {\"seg_image\": \"seg_image\"})\n", "\n", + " self._logger.debug(f\"End {self.compose.__name__}\")\n", + "\n", "# This is a sample series selection rule in JSON, simply selecting CT series.\n", "# If the study has more than 1 CT series, then all of them will be selected.\n", "# Please see more detail in DICOMSeriesSelectorOperator.\n", + "# For list of string values, e.g. \"ImageType\": [\"PRIMARY\", \"ORIGINAL\"], it is a match if all elements\n", + "# are all in the multi-value attribute of the DICOM series.\n", + "\n", "Sample_Rules_Text = \"\"\"\n", "{\n", " \"selections\": [\n", " {\n", " \"name\": \"CT Series\",\n", " \"conditions\": {\n", - " \"StudyDescription\": \"(.*?)\",\n", " \"Modality\": \"(?i)CT\",\n", - " \"SeriesDescription\": \"(.*?)\"\n", + " \"ImageType\": [\"PRIMARY\", \"ORIGINAL\"],\n", + " \"PhotometricInterpretation\": \"MONOCHROME2\"\n", " }\n", " }\n", " ]\n", "}\n", "\"\"\"\n", "\n", + "\n", "if __name__ == \"__main__\":\n", " # Creates the app and test it standalone. When running is this mode, please note the following:\n", " # -i , for input DICOM CT series folder\n", @@ -1292,7 +1258,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -1313,14 +1279,14 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "app.py\t__main__.py spleen_seg_operator.py\n" + "app.py\t__main__.py __pycache__ spleen_seg_operator.py\n" ] } ], @@ -1337,7 +1303,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -1345,75 +1311,204 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 99004, Operator ID: 7115f2a4-8785-4cb8-a355-bae80217a0be)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 578792, Operator ID: f73925a1-3f81-4528-a410-9b3e4a12f2ae)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 99004, Operator ID: fdfd5a52-cbbd-47b6-b346-e9814e333c5e)\u001b[39m\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 578792, Operator ID: ae4f4548-6bd2-448c-8ee0-c083520cb8f4)\u001b[39m\n", + "[2022-10-11 18:09:35,865] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - Series attribute value: spleen\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - Series attribute value: CT\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - Series attribute value: No series description\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-01-28 11:27:27,862] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", + "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", + "[2022-10-11 18:09:35,867] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 99004, Operator ID: 70a886ab-9f0b-4280-b521-992f56a9020b)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 578792, Operator ID: a9f4b0fa-c1a7-4e45-91dd-738c69bf33c2)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 99004, Operator ID: 25cce913-6d32-4215-8fb2-358dd0d18702)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 578792, Operator ID: d2bdae77-16eb-489b-930d-da051db9b836)\u001b[39m\n", "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763, type \n", + "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", + "SeriesDate: 20090831, type \n", + "SeriesTime: 101721.452, type \n", "Modality: CT, type \n", - "SeriesDescription: No series description, type \n", + "SeriesDescription: ABD/PANC 3.0 B31f, type \n", "PatientPosition: HFS, type \n", - "SeriesNumber: 1, type \n", - "row_pixel_spacing: 1.0, type \n", - "col_pixel_spacing: 1.0, type \n", - "depth_pixel_spacing: 1.0, type \n", - "row_direction_cosine: [-1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, -1.0, 0.0], type \n", + "SeriesNumber: 8, type \n", + "row_pixel_spacing: 0.7890625, type \n", + "col_pixel_spacing: 0.7890625, type \n", + "depth_pixel_spacing: 1.5, type \n", + "row_direction_cosine: [1.0, 0.0, 0.0], type \n", + "col_direction_cosine: [0.0, 1.0, 0.0], type \n", "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[-1. 0. 0. 0.]\n", - " [ 0. -1. 0. 0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "nifti_affine_transform: [[ 1. -0. -0. -0.]\n", - " [-0. 1. -0. -0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "StudyInstanceUID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213, type \n", - "StudyID: SLICER10001, type \n", - "StudyDate: 2019-09-16, type \n", - "StudyTime: 010100.000000, type \n", - "StudyDescription: spleen, type \n", - "AccessionNumber: 1, type \n", + "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", + " [ 0. 0.7890625 0. -398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", + " [ -0. -0.7890625 -0. 398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", + "StudyID: , type \n", + "StudyDate: 20090831, type \n", + "StudyTime: 095948.599, type \n", + "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", + "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "file written: /home/aheumann/projects/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", + "2022-10-11 18:09:49,260 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 99004, Operator ID: dba1cc01-1dda-49e0-9c95-f91100ef4fbe)\u001b[39m\n", - "[2022-01-28 11:27:34,283] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2022-01-28 11:27:34,283] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2022-01-28 11:27:34,283] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2022-01-28 11:27:35,656] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2022-01-28 11:27:36,287] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file /home/aheumann/projects/monai-deploy-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2022-01-28 11:27:36,468] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 578792, Operator ID: 9b62cfed-9c50-47a9-912f-a5614a660411)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-11 18:09:52,262] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-11 18:09:52,263] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-11 18:09:52,264] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-11 18:09:52,265] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-11 18:09:52,266] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-11 18:09:52,267] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-11 18:09:52,268] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-11 18:09:52,269] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-11 18:09:52,270] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-11 18:09:52,271] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-11 18:09:52,272] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-11 18:09:52,273] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-11 18:09:52,274] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-11 18:09:52,275] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-11 18:09:52,276] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-11 18:09:52,276] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-11 18:09:52,277] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-11 18:09:52,278] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-11 18:09:52,279] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-11 18:09:52,280] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-11 18:09:52,281] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-11 18:09:52,282] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-11 18:09:52,283] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-11 18:09:52,284] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-11 18:09:52,285] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-11 18:09:52,286] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-11 18:09:52,287] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-11 18:09:52,288] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-11 18:09:52,289] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-11 18:09:52,290] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-11 18:09:52,291] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-11 18:09:52,292] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-11 18:09:52,293] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-11 18:09:52,294] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-11 18:09:52,296] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-11 18:09:52,296] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-11 18:09:52,297] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-11 18:09:52,298] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-11 18:09:52,299] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-11 18:09:52,300] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-11 18:09:52,301] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-11 18:09:52,302] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-11 18:09:52,303] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-11 18:09:52,304] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-11 18:09:52,305] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-11 18:09:52,306] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-11 18:09:52,307] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-11 18:09:52,308] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-11 18:09:52,309] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-11 18:09:52,310] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-11 18:09:52,311] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-11 18:09:52,312] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-11 18:09:52,313] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-11 18:09:52,314] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-11 18:09:52,315] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-11 18:09:52,316] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-11 18:09:52,317] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-11 18:09:52,318] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-11 18:09:52,319] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-11 18:09:52,320] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-11 18:09:52,321] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-11 18:09:52,322] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-11 18:09:52,323] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-11 18:09:52,324] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-11 18:09:52,325] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-11 18:09:52,326] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-11 18:09:52,327] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-11 18:09:52,328] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-11 18:09:52,329] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-11 18:09:52,330] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-11 18:09:52,331] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-11 18:09:52,332] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-11 18:09:52,333] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-11 18:09:52,334] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-11 18:09:52,335] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-11 18:09:52,336] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-11 18:09:52,337] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-11 18:09:52,338] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-11 18:09:52,339] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-11 18:09:52,340] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-11 18:09:52,341] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-11 18:09:52,342] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-11 18:09:52,343] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-11 18:09:52,344] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-11 18:09:52,345] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-11 18:09:52,346] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-11 18:09:52,347] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-11 18:09:52,348] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-11 18:09:52,393] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 18:09:52,393] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-11 18:09:52,393] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 18:09:52,393] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-11 18:09:52,394] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-11 18:09:52,394] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 18:09:52,394] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-11 18:09:52,394] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-11 18:09:52,394] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", - "\u001b[39m\n" + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator ClaraVizOperator\u001b[39m\n", + "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 578792, Operator ID: c79f53ec-734f-4f60-95be-76cd09417a64)\u001b[39m\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.8/runpy.py\", line 194, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/my_app/__main__.py\", line 4, in \n", + " AISpleenSegApp(do_run=True)\n", + " File \"/home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/my_app/app.py\", line 21, in __init__\n", + " super().__init__(*args, **kwargs)\n", + " File \"/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/core/application.py\", line 129, in __init__\n", + " self.run(log_level=args.log_level)\n", + " File \"/home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/my_app/app.py\", line 26, in run\n", + " super().run(*args, **kwargs)\n", + " File \"/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/core/application.py\", line 429, in run\n", + " executor_obj.run()\n", + " File \"/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/core/executors/single_process_executor.py\", line 125, in run\n", + " op.compute(op_exec_context.input_context, op_exec_context.output_context, op_exec_context)\n", + " File \"/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/operators/clara_viz_operator.py\", line 100, in compute\n", + " widget = Widget()\n", + " File \"/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/clara/viz/widgets/widget.py\", line 121, in __init__\n", + " self.on_displayed(lambda widget, **kwargs: self.__on_displayed())\n", + "AttributeError: 'Widget' object has no attribute 'on_displayed'\n" ] } ], @@ -1728,9 +1823,6 @@ } ], "metadata": { - "interpreter": { - "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" - }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", @@ -1747,6 +1839,11 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" + }, + "vscode": { + "interpreter": { + "hash": "9b4ab1155d0cd1042497eb40fd55b2d15caf4b3c0f9fbfcc7ba4404045d40f12" + } } }, "nbformat": 4, diff --git a/notebooks/tutorials/05_full_tutorial.ipynb b/notebooks/tutorials/05_full_tutorial.ipynb index 91d67c01..eb80d7c9 100644 --- a/notebooks/tutorials/05_full_tutorial.ipynb +++ b/notebooks/tutorials/05_full_tutorial.ipynb @@ -703,7 +703,6 @@ " SaveImaged,\n", " ScaleIntensityRanged,\n", " Spacingd,\n", - " ToTensord,\n", ")\n", "\n", "from monai.deploy.core import Application, resource\n", @@ -800,7 +799,6 @@ " Spacingd(keys=my_key, pixdim=[1.0, 1.0, 1.0], mode=[\"bilinear\"], align_corners=True),\n", " ScaleIntensityRanged(keys=my_key, a_min=-57, a_max=164, b_min=0.0, b_max=1.0, clip=True),\n", " CropForegroundd(keys=my_key, source_key=my_key),\n", - " ToTensord(keys=my_key),\n", " ]\n", " )\n", "\n", @@ -1018,7 +1016,6 @@ " SaveImaged,\n", " ScaleIntensityRanged,\n", " Spacingd,\n", - " ToTensord,\n", ")\n", "\n", "\n", @@ -1078,7 +1075,6 @@ " Spacingd(keys=my_key, pixdim=[1.0, 1.0, 1.0], mode=[\"bilinear\"], align_corners=True),\n", " ScaleIntensityRanged(keys=my_key, a_min=-57, a_max=164, b_min=0.0, b_max=1.0, clip=True),\n", " CropForegroundd(keys=my_key, source_key=my_key),\n", - " ToTensord(keys=my_key),\n", " ]\n", " )\n", "\n", diff --git a/notebooks/tutorials/06_monai_bundle_app.ipynb b/notebooks/tutorials/06_monai_bundle_app.ipynb index cf80a88e..dbcf8039 100644 --- a/notebooks/tutorials/06_monai_bundle_app.ipynb +++ b/notebooks/tutorials/06_monai_bundle_app.ipynb @@ -100,7 +100,7 @@ "source": [ "# Install MONAI and other necessary image processing packages for the application\n", "!python -c \"import monai\" || pip install --upgrade -q \"monai\"\n", - "!python -c \"import torch\" || pip install -q \"torch>=1.5\"\n", + "!python -c \"import torch\" || pip install -q \"torch>=1.10.2\"\n", "!python -c \"import numpy\" || pip install -q \"numpy>=1.21\"\n", "!python -c \"import nibabel\" || pip install -q \"nibabel>=3.2.1\"\n", "!python -c \"import pydicom\" || pip install -q \"pydicom>=1.4.2\"\n", @@ -134,29 +134,227 @@ "name": "stdout", "output_type": "stream", "text": [ + "Requirement already satisfied: gdown in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (4.5.1)\n", + "Requirement already satisfied: six in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (1.16.0)\n", + "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", + "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", + "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", + "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", + "Requirement already satisfied: soupsieve>1.2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from beautifulsoup4->gdown) (2.3.2.post1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (3.3)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.26.12)\n", + "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.7.1)\n", "Downloading...\n", - "From: https://drive.google.com/uc?id=1cJq0iQh_yzYIxVElSlVa141aEmHZADJh\n", - "To: ~/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_bundle_data.zip\n", - "104MB [00:10, 10.3MB/s] \n", - "Archive: ai_spleen_bundle_data.zip\n", - " creating: dcm/\n", - " inflating: dcm/IMG0001.dcm \n", - " inflating: dcm/IMG0002.dcm \n", - " inflating: dcm/IMG0003.dcm \n", - " inflating: dcm/IMG0004.dcm \n", - " inflating: dcm/IMG0005.dcm \n", - " inflating: dcm/IMG0006.dcm \n", - " inflating: dcm/IMG0007.dcm \n", - " inflating: dcm/IMG0008.dcm \n", - " inflating: dcm/IMG0009.dcm \n", - "... \n", - " inflating: dcm/IMG0509.dcm \n", - " inflating: dcm/IMG0510.dcm \n", - " inflating: dcm/IMG0511.dcm \n", - " inflating: dcm/IMG0512.dcm \n", - " inflating: dcm/IMG0513.dcm \n", - " inflating: dcm/IMG0514.dcm \n", - " inflating: dcm/IMG0515.dcm \n", + "From: https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\n", + "To: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_seg_bundle_data.zip\n", + "100%|██████████████████████████████████████| 79.4M/79.4M [00:00<00:00, 81.3MB/s]\n", + "Archive: ai_spleen_seg_bundle_data.zip\n", + " inflating: dcm/1-001.dcm \n", + " inflating: dcm/1-002.dcm \n", + " inflating: dcm/1-003.dcm \n", + " inflating: dcm/1-004.dcm \n", + " inflating: dcm/1-005.dcm \n", + " inflating: dcm/1-006.dcm \n", + " inflating: dcm/1-007.dcm \n", + " inflating: dcm/1-008.dcm \n", + " inflating: dcm/1-009.dcm \n", + " inflating: dcm/1-010.dcm \n", + " inflating: dcm/1-011.dcm \n", + " inflating: dcm/1-012.dcm \n", + " inflating: dcm/1-013.dcm \n", + " inflating: dcm/1-014.dcm \n", + " inflating: dcm/1-015.dcm \n", + " inflating: dcm/1-016.dcm \n", + " inflating: dcm/1-017.dcm \n", + " inflating: dcm/1-018.dcm \n", + " inflating: dcm/1-019.dcm \n", + " inflating: dcm/1-020.dcm \n", + " inflating: dcm/1-021.dcm \n", + " inflating: dcm/1-022.dcm \n", + " inflating: dcm/1-023.dcm \n", + " inflating: dcm/1-024.dcm \n", + " inflating: dcm/1-025.dcm \n", + " inflating: dcm/1-026.dcm \n", + " inflating: dcm/1-027.dcm \n", + " inflating: dcm/1-028.dcm \n", + " inflating: dcm/1-029.dcm \n", + " inflating: dcm/1-030.dcm \n", + " inflating: dcm/1-031.dcm \n", + " inflating: dcm/1-032.dcm \n", + " inflating: dcm/1-033.dcm \n", + " inflating: dcm/1-034.dcm \n", + " inflating: dcm/1-035.dcm \n", + " inflating: dcm/1-036.dcm \n", + " inflating: dcm/1-037.dcm \n", + " inflating: dcm/1-038.dcm \n", + " inflating: dcm/1-039.dcm \n", + " inflating: dcm/1-040.dcm \n", + " inflating: dcm/1-041.dcm \n", + " inflating: dcm/1-042.dcm \n", + " inflating: dcm/1-043.dcm \n", + " inflating: dcm/1-044.dcm \n", + " inflating: dcm/1-045.dcm \n", + " inflating: dcm/1-046.dcm \n", + " inflating: dcm/1-047.dcm \n", + " inflating: dcm/1-048.dcm \n", + " inflating: dcm/1-049.dcm \n", + " inflating: dcm/1-050.dcm \n", + " inflating: dcm/1-051.dcm \n", + " inflating: dcm/1-052.dcm \n", + " inflating: dcm/1-053.dcm \n", + " inflating: dcm/1-054.dcm \n", + " inflating: dcm/1-055.dcm \n", + " inflating: dcm/1-056.dcm \n", + " inflating: dcm/1-057.dcm \n", + " inflating: dcm/1-058.dcm \n", + " inflating: dcm/1-059.dcm \n", + " inflating: dcm/1-060.dcm \n", + " inflating: dcm/1-061.dcm \n", + " inflating: dcm/1-062.dcm \n", + " inflating: dcm/1-063.dcm \n", + " inflating: dcm/1-064.dcm \n", + " inflating: dcm/1-065.dcm \n", + " inflating: dcm/1-066.dcm \n", + " inflating: dcm/1-067.dcm \n", + " inflating: dcm/1-068.dcm \n", + " inflating: dcm/1-069.dcm \n", + " inflating: dcm/1-070.dcm \n", + " inflating: dcm/1-071.dcm \n", + " inflating: dcm/1-072.dcm \n", + " inflating: dcm/1-073.dcm \n", + " inflating: dcm/1-074.dcm \n", + " inflating: dcm/1-075.dcm \n", + " inflating: dcm/1-076.dcm \n", + " inflating: dcm/1-077.dcm \n", + " inflating: dcm/1-078.dcm \n", + " inflating: dcm/1-079.dcm \n", + " inflating: dcm/1-080.dcm \n", + " inflating: dcm/1-081.dcm \n", + " inflating: dcm/1-082.dcm \n", + " inflating: dcm/1-083.dcm \n", + " inflating: dcm/1-084.dcm \n", + " inflating: dcm/1-085.dcm \n", + " inflating: dcm/1-086.dcm \n", + " inflating: dcm/1-087.dcm \n", + " inflating: dcm/1-088.dcm \n", + " inflating: dcm/1-089.dcm \n", + " inflating: dcm/1-090.dcm \n", + " inflating: dcm/1-091.dcm \n", + " inflating: dcm/1-092.dcm \n", + " inflating: dcm/1-093.dcm \n", + " inflating: dcm/1-094.dcm \n", + " inflating: dcm/1-095.dcm \n", + " inflating: dcm/1-096.dcm \n", + " inflating: dcm/1-097.dcm \n", + " inflating: dcm/1-098.dcm \n", + " inflating: dcm/1-099.dcm \n", + " inflating: dcm/1-100.dcm \n", + " inflating: dcm/1-101.dcm \n", + " inflating: dcm/1-102.dcm \n", + " inflating: dcm/1-103.dcm \n", + " inflating: dcm/1-104.dcm \n", + " inflating: dcm/1-105.dcm \n", + " inflating: dcm/1-106.dcm \n", + " inflating: dcm/1-107.dcm \n", + " inflating: dcm/1-108.dcm \n", + " inflating: dcm/1-109.dcm \n", + " inflating: dcm/1-110.dcm \n", + " inflating: dcm/1-111.dcm \n", + " inflating: dcm/1-112.dcm \n", + " inflating: dcm/1-113.dcm \n", + " inflating: dcm/1-114.dcm \n", + " inflating: dcm/1-115.dcm \n", + " inflating: dcm/1-116.dcm \n", + " inflating: dcm/1-117.dcm \n", + " inflating: dcm/1-118.dcm \n", + " inflating: dcm/1-119.dcm \n", + " inflating: dcm/1-120.dcm \n", + " inflating: dcm/1-121.dcm \n", + " inflating: dcm/1-122.dcm \n", + " inflating: dcm/1-123.dcm \n", + " inflating: dcm/1-124.dcm \n", + " inflating: dcm/1-125.dcm \n", + " inflating: dcm/1-126.dcm \n", + " inflating: dcm/1-127.dcm \n", + " inflating: dcm/1-128.dcm \n", + " inflating: dcm/1-129.dcm \n", + " inflating: dcm/1-130.dcm \n", + " inflating: dcm/1-131.dcm \n", + " inflating: dcm/1-132.dcm \n", + " inflating: dcm/1-133.dcm \n", + " inflating: dcm/1-134.dcm \n", + " inflating: dcm/1-135.dcm \n", + " inflating: dcm/1-136.dcm \n", + " inflating: dcm/1-137.dcm \n", + " inflating: dcm/1-138.dcm \n", + " inflating: dcm/1-139.dcm \n", + " inflating: dcm/1-140.dcm \n", + " inflating: dcm/1-141.dcm \n", + " inflating: dcm/1-142.dcm \n", + " inflating: dcm/1-143.dcm \n", + " inflating: dcm/1-144.dcm \n", + " inflating: dcm/1-145.dcm \n", + " inflating: dcm/1-146.dcm \n", + " inflating: dcm/1-147.dcm \n", + " inflating: dcm/1-148.dcm \n", + " inflating: dcm/1-149.dcm \n", + " inflating: dcm/1-150.dcm \n", + " inflating: dcm/1-151.dcm \n", + " inflating: dcm/1-152.dcm \n", + " inflating: dcm/1-153.dcm \n", + " inflating: dcm/1-154.dcm \n", + " inflating: dcm/1-155.dcm \n", + " inflating: dcm/1-156.dcm \n", + " inflating: dcm/1-157.dcm \n", + " inflating: dcm/1-158.dcm \n", + " inflating: dcm/1-159.dcm \n", + " inflating: dcm/1-160.dcm \n", + " inflating: dcm/1-161.dcm \n", + " inflating: dcm/1-162.dcm \n", + " inflating: dcm/1-163.dcm \n", + " inflating: dcm/1-164.dcm \n", + " inflating: dcm/1-165.dcm \n", + " inflating: dcm/1-166.dcm \n", + " inflating: dcm/1-167.dcm \n", + " inflating: dcm/1-168.dcm \n", + " inflating: dcm/1-169.dcm \n", + " inflating: dcm/1-170.dcm \n", + " inflating: dcm/1-171.dcm \n", + " inflating: dcm/1-172.dcm \n", + " inflating: dcm/1-173.dcm \n", + " inflating: dcm/1-174.dcm \n", + " inflating: dcm/1-175.dcm \n", + " inflating: dcm/1-176.dcm \n", + " inflating: dcm/1-177.dcm \n", + " inflating: dcm/1-178.dcm \n", + " inflating: dcm/1-179.dcm \n", + " inflating: dcm/1-180.dcm \n", + " inflating: dcm/1-181.dcm \n", + " inflating: dcm/1-182.dcm \n", + " inflating: dcm/1-183.dcm \n", + " inflating: dcm/1-184.dcm \n", + " inflating: dcm/1-185.dcm \n", + " inflating: dcm/1-186.dcm \n", + " inflating: dcm/1-187.dcm \n", + " inflating: dcm/1-188.dcm \n", + " inflating: dcm/1-189.dcm \n", + " inflating: dcm/1-190.dcm \n", + " inflating: dcm/1-191.dcm \n", + " inflating: dcm/1-192.dcm \n", + " inflating: dcm/1-193.dcm \n", + " inflating: dcm/1-194.dcm \n", + " inflating: dcm/1-195.dcm \n", + " inflating: dcm/1-196.dcm \n", + " inflating: dcm/1-197.dcm \n", + " inflating: dcm/1-198.dcm \n", + " inflating: dcm/1-199.dcm \n", + " inflating: dcm/1-200.dcm \n", + " inflating: dcm/1-201.dcm \n", + " inflating: dcm/1-202.dcm \n", + " inflating: dcm/1-203.dcm \n", + " inflating: dcm/1-204.dcm \n", " inflating: model.ts \n" ] } @@ -164,10 +362,10 @@ "source": [ "# Download the test data and MONAI bundle zip file\n", "!pip install gdown \n", - "!gdown \"https://drive.google.com/uc?id=1cJq0iQh_yzYIxVElSlVa141aEmHZADJh\"\n", + "!gdown \"https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\"\n", "\n", "# After downloading ai_spleen_bundle_data zip file from the web browser or using gdown,\n", - "!unzip -o \"ai_spleen_bundle_data.zip\"" + "!unzip -o \"ai_spleen_seg_bundle_data.zip\"" ] }, { @@ -187,11 +385,14 @@ "source": [ "import logging\n", "\n", + "# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package.\n", + "from pydicom.sr.codedict import codes\n", + "\n", "from monai.deploy.core import Application, resource\n", "from monai.deploy.core.domain import Image\n", "from monai.deploy.core.io_type import IOType\n", "from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator\n", - "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator\n", + "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription\n", "from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator\n", "from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator\n", "from monai.deploy.operators.monai_bundle_inference_operator import IOMapping, MonaiBundleInferenceOperator\n" @@ -232,6 +433,8 @@ "outputs": [], "source": [ "@resource(cpu=1, gpu=1, memory=\"7Gi\")\n", + "# pip_packages can be a string that is a path(str) to requirements.txt file or a list of packages.\n", + "# The monai pkg is not required by this class, instead by the included operators.\n", "class AISpleenSegApp(Application):\n", " def __init__(self, *args, **kwargs):\n", " \"\"\"Creates an application instance.\"\"\"\n", @@ -239,6 +442,7 @@ " super().__init__(*args, **kwargs)\n", "\n", " def run(self, *args, **kwargs):\n", + " # This method calls the base class to run. Can be omitted if simply calling through.\n", " self._logger.info(f\"Begin {self.run.__name__}\")\n", " super().run(*args, **kwargs)\n", " self._logger.info(f\"End {self.run.__name__}\")\n", @@ -248,6 +452,7 @@ "\n", " logging.info(f\"Begin {self.compose.__name__}\")\n", "\n", + " # Create the custom operator(s) as well as SDK built-in operator(s).\n", " study_loader_op = DICOMDataLoaderOperator()\n", " series_selector_op = DICOMSeriesSelectorOperator()\n", " series_to_vol_op = DICOMSeriesToVolumeOperator()\n", @@ -260,14 +465,33 @@ " # during init to provide the optional packages info, parsed from the bundle, to the packager\n", " # for it to install the packages in the MAP docker image.\n", " # Setting output IOType to DISK only works only for leaf operators, not the case in this example.\n", + " #\n", + " # Pertinent MONAI Bundle:\n", + " # https://github.com/Project-MONAI/model-zoo/tree/dev/models/spleen_ct_segmentation\n", " bundle_spleen_seg_op = MonaiBundleInferenceOperator(\n", " input_mapping=[IOMapping(\"image\", Image, IOType.IN_MEMORY)],\n", " output_mapping=[IOMapping(\"pred\", Image, IOType.IN_MEMORY)],\n", " )\n", "\n", - " # Create DICOM Seg writer with segment label name in a string list\n", - " dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=[\"Spleen\"])\n", + " # Create DICOM Seg writer providing the required segment description for each segment with\n", + " # the actual algorithm and the pertinent organ/tissue. The segment_label, algorithm_name,\n", + " # and algorithm_version are of DICOM VR LO type, limited to 64 chars.\n", + " # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html\n", + " segment_descriptions = [\n", + " SegmentDescription(\n", + " segment_label=\"Spleen\",\n", + " segmented_property_category=codes.SCT.Organ,\n", + " segmented_property_type=codes.SCT.Spleen,\n", + " algorithm_name=\"volumetric (3D) segmentation of the spleen from CT image\",\n", + " algorithm_family=codes.DCM.ArtificialIntelligence,\n", + " algorithm_version=\"0.1.0\",\n", + " )\n", + " ]\n", + " custom_tags = {\"SeriesDescription\": \"AI generated Seg, not for clinical use.\"}\n", "\n", + " dicom_seg_writer = DICOMSegmentationWriterOperator(\n", + " segment_descriptions=segment_descriptions, custom_tags=custom_tags\n", + " )\n", " # Create the processing pipeline, by specifying the source and destination operators, and\n", " # ensuring the output from the former matches the input of the latter, in both name and type.\n", " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", @@ -280,8 +504,12 @@ " series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", " )\n", " self.add_flow(bundle_spleen_seg_op, dicom_seg_writer, {\"pred\": \"seg_image\"})\n", + " # Create the surface mesh STL conversion operator and add it to the app execution flow, if needed, by\n", + " # uncommenting the following couple lines.\n", + " # stl_conversion_op = STLConversionOperator(output_file=\"stl/spleen.stl\")\n", + " # self.add_flow(bundle_spleen_seg_op, stl_conversion_op, {\"pred\": \"image\"})\n", "\n", - " logging.info(f\"End {self.compose.__name__}\")" + " logging.info(f\"End {self.compose.__name__}\")\n" ] }, { @@ -302,17 +530,22 @@ "name": "stdout", "output_type": "stream", "text": [ + "2022-10-11 23:19:01,992 - Begin compose\n", + "2022-10-11 23:19:01,995 - End compose\n", + "2022-10-11 23:19:01,997 - Begin run\n", "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 4288, Operator ID: 5874a40f-a44b-4f81-b9d7-86456fc82732)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 591970, Operator ID: 7c9c0590-b4ae-4d55-97f4-0cb828ec9ce5)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2022-07-07 20:10:19,497] [WARNING] (root) - No selection rules given; select all series.\n", - "[2022-07-07 20:10:19,498] [INFO] (root) - Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "[2022-07-07 20:10:19,499] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" + "[2022-10-11 23:19:03,931] [WARNING] (root) - No selection rules given; select all series.\n", + "[2022-10-11 23:19:03,932] [INFO] (root) - Working on study, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "[2022-10-11 23:19:03,933] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 23:19:03,934] [INFO] (root) - Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-11 23:19:03,935] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" ] }, { @@ -322,46 +555,128 @@ "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 4288, Operator ID: d7802157-c044-452f-bbf4-ba381d04e474)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 591970, Operator ID: 5d431cab-5bac-4d60-a5f5-aeab7194362e)\u001b[39m\n", + "Working on study, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", "Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", "Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 4288, Operator ID: 6ae16897-42b4-454f-9598-338682aa0dae)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 591970, Operator ID: bc0a400e-0edb-4a0d-ae03-910d437c3f97)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", - "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 4288, Operator ID: 910d8955-578e-45ef-b60e-f4e0fc7d4b06)\u001b[39m\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[2022-07-07 20:10:47,624] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2022-07-07 20:10:47,624] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2022-07-07 20:10:47,625] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 591970, Operator ID: 58d00778-de6d-4fed-97b1-bf511115b2e9)\u001b[39m\n", "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 4288, Operator ID: e5fd81c6-0e0c-438d-9e32-cb7c2a4fa481)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 591970, Operator ID: 2c7c55c6-95f4-42fc-bb84-510f67278a3a)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2022-07-07 20:10:49,639] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2022-07-07 20:10:50,856] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file /home/mqin/src/monai-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2022-07-07 20:10:50,919] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", - "[2022-07-07 20:10:50,926] [INFO] (__main__.AISpleenSegApp) - End run\n" + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-11 23:19:20,627] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-11 23:19:20,630] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-11 23:19:20,631] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-11 23:19:20,633] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-11 23:19:20,635] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-11 23:19:20,636] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-11 23:19:20,638] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-11 23:19:20,639] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-11 23:19:20,641] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-11 23:19:20,643] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-11 23:19:20,645] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-11 23:19:20,648] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-11 23:19:20,651] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-11 23:19:20,653] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-11 23:19:20,656] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-11 23:19:20,658] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-11 23:19:20,659] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-11 23:19:20,661] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-11 23:19:20,663] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-11 23:19:20,665] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-11 23:19:20,666] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-11 23:19:20,668] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-11 23:19:20,669] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-11 23:19:20,671] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-11 23:19:20,672] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-11 23:19:20,674] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-11 23:19:20,676] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-11 23:19:20,677] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-11 23:19:20,679] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-11 23:19:20,680] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-11 23:19:20,682] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-11 23:19:20,683] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-11 23:19:20,685] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-11 23:19:20,687] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-11 23:19:20,688] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-11 23:19:20,690] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-11 23:19:20,692] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-11 23:19:20,693] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-11 23:19:20,695] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-11 23:19:20,696] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-11 23:19:20,698] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-11 23:19:20,699] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-11 23:19:20,701] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-11 23:19:20,703] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-11 23:19:20,704] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-11 23:19:20,706] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-11 23:19:20,708] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-11 23:19:20,710] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-11 23:19:20,712] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-11 23:19:20,714] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-11 23:19:20,715] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-11 23:19:20,717] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-11 23:19:20,719] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-11 23:19:20,721] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-11 23:19:20,723] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-11 23:19:20,734] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-11 23:19:20,738] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-11 23:19:20,743] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-11 23:19:20,747] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-11 23:19:20,750] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-11 23:19:20,754] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-11 23:19:20,757] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-11 23:19:20,760] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-11 23:19:20,763] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-11 23:19:20,766] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-11 23:19:20,768] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-11 23:19:20,771] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-11 23:19:20,773] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-11 23:19:20,776] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-11 23:19:20,778] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-11 23:19:20,780] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-11 23:19:20,783] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-11 23:19:20,786] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-11 23:19:20,788] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-11 23:19:20,790] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-11 23:19:20,792] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-11 23:19:20,794] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-11 23:19:20,796] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-11 23:19:20,798] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-11 23:19:20,800] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-11 23:19:20,802] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-11 23:19:20,804] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-11 23:19:20,806] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-11 23:19:20,808] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-11 23:19:20,810] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-11 23:19:20,812] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-11 23:19:20,814] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-11 23:19:20,855] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 23:19:20,856] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-11 23:19:20,857] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 23:19:20,857] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-11 23:19:20,858] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-11 23:19:20,859] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 23:19:20,860] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-11 23:19:20,860] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-11 23:19:20,861] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-11 23:19:20,958] [INFO] (__main__.AISpleenSegApp) - End run\n" ] }, { @@ -426,19 +741,38 @@ ], "source": [ "%%writefile my_app/app.py\n", + "\n", + "# Copyright 2021-2022 MONAI Consortium\n", + "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", + "# you may not use this file except in compliance with the License.\n", + "# You may obtain a copy of the License at\n", + "# http://www.apache.org/licenses/LICENSE-2.0\n", + "# Unless required by applicable law or agreed to in writing, software\n", + "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", + "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", + "# See the License for the specific language governing permissions and\n", + "# limitations under the License.\n", + "\n", "import logging\n", "\n", + "# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package.\n", + "from pydicom.sr.codedict import codes\n", + "\n", "from monai.deploy.core import Application, resource\n", "from monai.deploy.core.domain import Image\n", "from monai.deploy.core.io_type import IOType\n", "from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator\n", - "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator\n", + "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription\n", "from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator\n", "from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator\n", "from monai.deploy.operators.monai_bundle_inference_operator import IOMapping, MonaiBundleInferenceOperator\n", "\n", + "# from monai.deploy.operators.stl_conversion_operator import STLConversionOperator # import as needed.\n", + "\n", "\n", "@resource(cpu=1, gpu=1, memory=\"7Gi\")\n", + "# pip_packages can be a string that is a path(str) to requirements.txt file or a list of packages.\n", + "# The monai pkg is not required by this class, instead by the included operators.\n", "class AISpleenSegApp(Application):\n", " def __init__(self, *args, **kwargs):\n", " \"\"\"Creates an application instance.\"\"\"\n", @@ -458,7 +792,7 @@ "\n", " # Create the custom operator(s) as well as SDK built-in operator(s).\n", " study_loader_op = DICOMDataLoaderOperator()\n", - " series_selector_op = DICOMSeriesSelectorOperator()\n", + " series_selector_op = DICOMSeriesSelectorOperator(Sample_Rules_Text)\n", " series_to_vol_op = DICOMSeriesToVolumeOperator()\n", "\n", " # Create the inference operator that supports MONAI Bundle and automates the inference.\n", @@ -469,13 +803,33 @@ " # during init to provide the optional packages info, parsed from the bundle, to the packager\n", " # for it to install the packages in the MAP docker image.\n", " # Setting output IOType to DISK only works only for leaf operators, not the case in this example.\n", + " #\n", + " # Pertinent MONAI Bundle:\n", + " # https://github.com/Project-MONAI/model-zoo/tree/dev/models/spleen_ct_segmentation\n", " bundle_spleen_seg_op = MonaiBundleInferenceOperator(\n", " input_mapping=[IOMapping(\"image\", Image, IOType.IN_MEMORY)],\n", " output_mapping=[IOMapping(\"pred\", Image, IOType.IN_MEMORY)],\n", " )\n", "\n", - " # Create DICOM Seg writer with segment label name in a string list\n", - " dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=[\"Spleen\"])\n", + " # Create DICOM Seg writer providing the required segment description for each segment with\n", + " # the actual algorithm and the pertinent organ/tissue. The segment_label, algorithm_name,\n", + " # and algorithm_version are of DICOM VR LO type, limited to 64 chars.\n", + " # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html\n", + " segment_descriptions = [\n", + " SegmentDescription(\n", + " segment_label=\"Spleen\",\n", + " segmented_property_category=codes.SCT.Organ,\n", + " segmented_property_type=codes.SCT.Spleen,\n", + " algorithm_name=\"volumetric (3D) segmentation of the spleen from CT image\",\n", + " algorithm_family=codes.DCM.ArtificialIntelligence,\n", + " algorithm_version=\"0.1.0\",\n", + " )\n", + " ]\n", + " custom_tags = {\"SeriesDescription\": \"AI generated Seg, not for clinical use.\"}\n", + "\n", + " dicom_seg_writer = DICOMSegmentationWriterOperator(\n", + " segment_descriptions=segment_descriptions, custom_tags=custom_tags\n", + " )\n", "\n", " # Create the processing pipeline, by specifying the source and destination operators, and\n", " # ensuring the output from the former matches the input of the latter, in both name and type.\n", @@ -489,11 +843,34 @@ " series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", " )\n", " self.add_flow(bundle_spleen_seg_op, dicom_seg_writer, {\"pred\": \"seg_image\"})\n", + " # Create the surface mesh STL conversion operator and add it to the app execution flow, if needed, by\n", + " # uncommenting the following couple lines.\n", + " # stl_conversion_op = STLConversionOperator(output_file=\"stl/spleen.stl\")\n", + " # self.add_flow(bundle_spleen_seg_op, stl_conversion_op, {\"pred\": \"image\"})\n", "\n", " logging.info(f\"End {self.compose.__name__}\")\n", "\n", + "\n", + "# This is a sample series selection rule in JSON, simply selecting CT series.\n", + "# If the study has more than 1 CT series, then all of them will be selected.\n", + "# Please see more detail in DICOMSeriesSelectorOperator.\n", + "Sample_Rules_Text = \"\"\"\n", + "{\n", + " \"selections\": [\n", + " {\n", + " \"name\": \"CT Series\",\n", + " \"conditions\": {\n", + " \"StudyDescription\": \"(.*?)\",\n", + " \"Modality\": \"(?i)CT\",\n", + " \"SeriesDescription\": \"(.*?)\"\n", + " }\n", + " }\n", + " ]\n", + "}\n", + "\"\"\"\n", + "\n", "if __name__ == \"__main__\":\n", - " # Creates the app and test it standalone. When running in this mode, please note the following:\n", + " # Creates the app and test it standalone. When running is this mode, please note the following:\n", " # -m , for model file path\n", " # -i , for input DICOM CT series folder\n", " # -o , for the output folder, default $PWD/output\n", @@ -501,7 +878,7 @@ " # monai-deploy exec app.py -i input -m model/model.ts\n", " #\n", " logging.basicConfig(level=logging.DEBUG)\n", - " app_instance = AISpleenSegApp(do_run=True)" + " app_instance = AISpleenSegApp(do_run=True)\n" ] }, { @@ -550,7 +927,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "app.py\t__main__.py __pycache__\n" + "app.py\t__main__.py __pycache__ spleen_seg_operator.py\n" ] } ], @@ -574,38 +951,156 @@ "name": "stdout", "output_type": "stream", "text": [ + "2022-10-11 23:19:25,485 - Begin compose\n", + "2022-10-11 23:19:25,487 - End compose\n", + "2022-10-11 23:19:25,487 - Begin run\n", "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 4765, Operator ID: b02877e6-a841-43e6-9267-53c2d24402fb)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 592223, Operator ID: 38b015a0-eb26-4492-9812-68a807a397ed)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 4765, Operator ID: 44b01560-4417-4173-853f-2a4d6d751892)\u001b[39m\n", - "[2022-07-07 20:12:09,138] [WARNING] (root) - No selection rules given; select all series.\n", - "[2022-07-07 20:12:09,138] [INFO] (root) - Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "[2022-07-07 20:12:09,138] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 592223, Operator ID: 672296f5-d713-4d98-93bd-703acd64af5a)\u001b[39m\n", + "[2022-10-11 23:19:26,615] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 23:19:26,615] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-11 23:19:26,615] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + " # of series: 1\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-11 23:19:26,617] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-11 23:19:26,617] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:26,617] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 4765, Operator ID: 58d2e9ea-0c95-4d27-8535-02fc6a3106d3)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 592223, Operator ID: 5847d584-c4c1-4ced-92c6-2984973326a9)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", - "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 4765, Operator ID: 1d361473-ae16-4f98-9406-71b7cc11f983)\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 592223, Operator ID: 267177d2-cb80-4be5-ad88-fe2c3d529b03)\u001b[39m\n", "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 4765, Operator ID: 76fcb554-8754-49bd-95aa-91496465196e)\u001b[39m\n", - "[2022-07-07 20:12:36,824] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2022-07-07 20:12:36,824] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2022-07-07 20:12:36,824] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2022-07-07 20:12:38,800] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2022-07-07 20:12:39,891] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file /home/mqin/src/monai-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2022-07-07 20:12:39,954] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 592223, Operator ID: 27914786-f3c2-4829-b68d-90a98e62e36c)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-11 23:19:41,297] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-11 23:19:41,298] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-11 23:19:41,299] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-11 23:19:41,300] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-11 23:19:41,301] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-11 23:19:41,302] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-11 23:19:41,303] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-11 23:19:41,304] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-11 23:19:41,305] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-11 23:19:41,306] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-11 23:19:41,307] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-11 23:19:41,308] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-11 23:19:41,309] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-11 23:19:41,310] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-11 23:19:41,311] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-11 23:19:41,312] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-11 23:19:41,313] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-11 23:19:41,314] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-11 23:19:41,315] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-11 23:19:41,316] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-11 23:19:41,317] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-11 23:19:41,318] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-11 23:19:41,319] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-11 23:19:41,321] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-11 23:19:41,322] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-11 23:19:41,322] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-11 23:19:41,323] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-11 23:19:41,324] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-11 23:19:41,325] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-11 23:19:41,326] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-11 23:19:41,327] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-11 23:19:41,328] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-11 23:19:41,329] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-11 23:19:41,330] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-11 23:19:41,331] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-11 23:19:41,332] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-11 23:19:41,333] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-11 23:19:41,334] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-11 23:19:41,335] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-11 23:19:41,336] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-11 23:19:41,337] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-11 23:19:41,338] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-11 23:19:41,339] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-11 23:19:41,340] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-11 23:19:41,341] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-11 23:19:41,342] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-11 23:19:41,343] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-11 23:19:41,344] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-11 23:19:41,345] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-11 23:19:41,346] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-11 23:19:41,347] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-11 23:19:41,348] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-11 23:19:41,349] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-11 23:19:41,350] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-11 23:19:41,351] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-11 23:19:41,352] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-11 23:19:41,353] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-11 23:19:41,354] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-11 23:19:41,355] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-11 23:19:41,356] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-11 23:19:41,357] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-11 23:19:41,358] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-11 23:19:41,360] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-11 23:19:41,361] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-11 23:19:41,362] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-11 23:19:41,363] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-11 23:19:41,364] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-11 23:19:41,365] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-11 23:19:41,366] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-11 23:19:41,367] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-11 23:19:41,368] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-11 23:19:41,369] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-11 23:19:41,370] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-11 23:19:41,371] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-11 23:19:41,372] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-11 23:19:41,373] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-11 23:19:41,374] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-11 23:19:41,375] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-11 23:19:41,376] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-11 23:19:41,377] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-11 23:19:41,378] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-11 23:19:41,379] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-11 23:19:41,380] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-11 23:19:41,381] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-11 23:19:41,382] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-11 23:19:41,383] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-11 23:19:41,384] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-11 23:19:41,422] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", - "[2022-07-07 20:12:39,958] [INFO] (app.AISpleenSegApp) - End run\n" + "[2022-10-11 23:19:41,513] [INFO] (app.AISpleenSegApp) - End run\n" ] } ], @@ -629,38 +1124,156 @@ "name": "stdout", "output_type": "stream", "text": [ + "2022-10-11 23:19:45,558 - Begin compose\n", + "2022-10-11 23:19:45,560 - End compose\n", + "2022-10-11 23:19:45,560 - Begin run\n", "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 4852, Operator ID: 5d746e23-c941-4b9f-8d59-1209f6674b2e)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 592286, Operator ID: bf2be83d-cff1-48de-87c7-19b6feaa8bf6)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 4852, Operator ID: 0b43252c-4e8c-45f7-be3e-b6a0f1f9211f)\u001b[39m\n", - "[2022-07-07 20:12:58,224] [WARNING] (root) - No selection rules given; select all series.\n", - "[2022-07-07 20:12:58,224] [INFO] (root) - Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "[2022-07-07 20:12:58,224] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 592286, Operator ID: d13e582d-c5db-40aa-9376-5757de53e312)\u001b[39m\n", + "[2022-10-11 23:19:46,620] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 23:19:46,620] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-11 23:19:46,620] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 23:19:46,620] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + " # of series: 1\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-11 23:19:46,621] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 4852, Operator ID: 8a3b960f-6c2e-4ba1-83cc-155ae4ff1771)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 592286, Operator ID: 0cdff929-93dd-4736-a36d-47f4f72a862f)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", - "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 4852, Operator ID: b60cb240-43d7-482e-85c1-bdce50bd87be)\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 592286, Operator ID: 61803275-93cd-4709-bd80-362ad85fa6dc)\u001b[39m\n", "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 4852, Operator ID: 0b34cf71-0fb2-4900-8ed7-872348a0f772)\u001b[39m\n", - "[2022-07-07 20:13:26,091] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2022-07-07 20:13:26,091] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2022-07-07 20:13:26,091] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2022-07-07 20:13:28,081] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2022-07-07 20:13:29,127] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file /home/mqin/src/monai-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2022-07-07 20:13:29,189] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 592286, Operator ID: 526509f7-e0e2-45de-b1f1-89b77e51e902)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-11 23:20:01,185] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-11 23:20:01,186] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-11 23:20:01,187] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-11 23:20:01,188] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-11 23:20:01,189] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-11 23:20:01,190] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-11 23:20:01,191] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-11 23:20:01,192] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-11 23:20:01,193] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-11 23:20:01,194] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-11 23:20:01,195] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-11 23:20:01,196] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-11 23:20:01,197] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-11 23:20:01,198] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-11 23:20:01,199] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-11 23:20:01,200] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-11 23:20:01,201] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-11 23:20:01,202] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-11 23:20:01,203] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-11 23:20:01,205] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-11 23:20:01,206] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-11 23:20:01,207] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-11 23:20:01,208] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-11 23:20:01,209] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-11 23:20:01,210] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-11 23:20:01,211] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-11 23:20:01,212] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-11 23:20:01,213] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-11 23:20:01,214] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-11 23:20:01,215] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-11 23:20:01,216] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-11 23:20:01,217] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-11 23:20:01,218] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-11 23:20:01,219] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-11 23:20:01,220] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-11 23:20:01,221] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-11 23:20:01,222] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-11 23:20:01,223] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-11 23:20:01,224] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-11 23:20:01,225] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-11 23:20:01,226] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-11 23:20:01,227] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-11 23:20:01,229] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-11 23:20:01,230] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-11 23:20:01,231] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-11 23:20:01,232] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-11 23:20:01,233] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-11 23:20:01,234] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-11 23:20:01,235] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-11 23:20:01,236] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-11 23:20:01,237] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-11 23:20:01,238] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-11 23:20:01,239] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-11 23:20:01,240] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-11 23:20:01,241] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-11 23:20:01,243] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-11 23:20:01,244] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-11 23:20:01,245] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-11 23:20:01,247] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-11 23:20:01,248] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-11 23:20:01,249] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-11 23:20:01,250] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-11 23:20:01,251] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-11 23:20:01,252] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-11 23:20:01,253] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-11 23:20:01,254] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-11 23:20:01,255] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-11 23:20:01,256] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-11 23:20:01,257] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-11 23:20:01,258] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-11 23:20:01,259] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-11 23:20:01,260] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-11 23:20:01,261] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-11 23:20:01,262] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-11 23:20:01,263] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-11 23:20:01,264] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-11 23:20:01,265] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-11 23:20:01,266] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-11 23:20:01,267] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-11 23:20:01,268] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-11 23:20:01,270] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-11 23:20:01,271] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-11 23:20:01,272] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-11 23:20:01,273] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-11 23:20:01,274] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-11 23:20:01,275] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-11 23:20:01,276] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-11 23:20:01,316] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 23:20:01,316] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-11 23:20:01,316] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 23:20:01,316] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-11 23:20:01,317] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-11 23:20:01,317] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-11 23:20:01,317] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-11 23:20:01,317] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-11 23:20:01,317] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", - "[2022-07-07 20:13:29,194] [INFO] (app.AISpleenSegApp) - End run\n" + "[2022-10-11 23:20:01,413] [INFO] (app.AISpleenSegApp) - End run\n" ] } ], @@ -679,7 +1292,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "dicom_seg-DICOMSEG.dcm\n" + "1.2.826.0.1.3680043.10.511.3.39847376485312952059071814082872364.dcm\n", + "1.2.826.0.1.3680043.10.511.3.65358466040336222587469743448756625.dcm\n", + "1.2.826.0.1.3680043.10.511.3.97759908331215885912830153660777122.dcm\n" ] } ], @@ -710,10 +1325,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "[2022-07-07 20:14:05,029] [INFO] (root) - Begin compose\n", - "[2022-07-07 20:14:05,030] [INFO] (root) - End compose\n", + "[2022-10-11 23:20:06,194] [INFO] (root) - Begin compose\n", + "[2022-10-11 23:20:06,196] [INFO] (root) - End compose\n", "Building MONAI Application Package... Done\n", - "[2022-07-07 20:14:05,630] [INFO] (app_packager) - Successfully built my_app:latest\n" + "[2022-10-11 23:20:10,106] [INFO] (app_packager) - Successfully built my_app:latest\n" ] } ], @@ -741,7 +1356,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "my_app latest 05c843c720ad 2 hours ago 15.3GB\n" + "my_app latest 40ee7906a957 6 seconds ago 15.1GB\n" ] } ], @@ -778,48 +1393,158 @@ "Reading MONAI App Package manifest...\n", "--> Verifying if \"nvidia-docker\" is installed...\n", "\n", - "/opt/conda/lib/python3.8/site-packages/scipy/__init__.py:138: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.0)\n", + "/opt/conda/lib/python3.8/site-packages/scipy/__init__.py:138: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.3)\n", " warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion} is required for this version of \"\n", - "INFO:root:Begin compose\n", - "DEBUG:root:Bundle path, None, not valid. Will get it in the execution context.\n", - "INFO:root:End compose\n", - "INFO:__main__.AISpleenSegApp:Begin run\n", + "2022-10-12 06:20:28,787 - Begin compose\n", + "2022-10-12 06:20:28,789 - End compose\n", + "2022-10-12 06:20:28,789 - Begin run\n", "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: a2b6f335-f5f5-4327-a681-439b36091ca2)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: 4e3456c3-5bd9-4a75-87b7-c7737a5d6d62)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: 4e7f84f5-ca5f-42ba-8984-86ee5c527594)\u001b[39m\n", - "[2022-07-08 03:14:33,651] [WARNING] (root) - No selection rules given; select all series.\n", - "[2022-07-08 03:14:33,651] [INFO] (root) - Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "[2022-07-08 03:14:33,651] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: cb7ccde8-3bdb-4137-b6b7-9a963ecde038)\u001b[39m\n", + "[2022-10-12 06:20:29,916] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-12 06:20:29,916] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-12 06:20:29,916] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-12 06:20:29,916] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-12 06:20:29,916] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-12 06:20:29,916] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 06:20:29,917] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-12 06:20:29,917] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-12 06:20:29,917] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 06:20:29,917] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + " # of series: 1\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-12 06:20:29,918] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: 413e0366-114c-4d06-9faf-3a8f4ba6863f)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: f3413742-bbf3-4cd7-af00-f02ee854a222)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", - "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1, Operator ID: f250496d-9b15-4ab3-83b3-6a608f07dd7c)\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1, Operator ID: 4b3e45b2-7b24-4899-a791-c6f94b5cf944)\u001b[39m\n", "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: b85c589b-054c-4ecd-b8d9-cb7745bd9011)\u001b[39m\n", - "[2022-07-08 03:15:00,796] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2022-07-08 03:15:00,796] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2022-07-08 03:15:00,796] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2022-07-08 03:15:02,511] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "/root/.local/lib/python3.8/site-packages/pydicom/valuerep.py:290: UserWarning: Invalid value for VR DA: '2019-09-16'.\n", - " warnings.warn(msg)\n", - "/root/.local/lib/python3.8/site-packages/pydicom/valuerep.py:290: UserWarning: The value length (94) exceeds the maximum length of 64 allowed for VR LO.\n", - " warnings.warn(msg)\n", - "[2022-07-08 03:15:03,694] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file /var/monai/output/dicom_seg-DICOMSEG.dcm\n", - "[2022-07-08 03:15:03,797] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: 478f74c1-86b4-4c31-8e98-965c2133197b)\u001b[39m\n", + "/root/.local/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-12 06:20:47,797] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-12 06:20:47,799] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-12 06:20:47,800] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-12 06:20:47,802] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-12 06:20:47,803] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-12 06:20:47,804] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-12 06:20:47,806] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-12 06:20:47,807] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-12 06:20:47,809] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-12 06:20:47,810] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-12 06:20:47,811] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-12 06:20:47,813] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-12 06:20:47,814] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-12 06:20:47,816] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-12 06:20:47,817] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-12 06:20:47,818] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-12 06:20:47,820] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-12 06:20:47,821] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-12 06:20:47,823] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-12 06:20:47,824] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-12 06:20:47,825] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-12 06:20:47,827] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-12 06:20:47,828] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-12 06:20:47,830] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-12 06:20:47,831] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-12 06:20:47,833] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-12 06:20:47,834] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-12 06:20:47,836] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-12 06:20:47,837] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-12 06:20:47,839] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-12 06:20:47,840] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-12 06:20:47,842] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-12 06:20:47,843] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-12 06:20:47,844] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-12 06:20:47,846] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-12 06:20:47,847] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-12 06:20:47,849] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-12 06:20:47,850] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-12 06:20:47,852] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-12 06:20:47,853] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-12 06:20:47,855] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-12 06:20:47,856] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-12 06:20:47,858] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-12 06:20:47,859] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-12 06:20:47,860] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-12 06:20:47,862] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-12 06:20:47,863] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-12 06:20:47,865] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-12 06:20:47,866] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-12 06:20:47,868] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-12 06:20:47,869] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-12 06:20:47,871] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-12 06:20:47,872] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-12 06:20:47,874] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-12 06:20:47,875] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-12 06:20:47,877] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-12 06:20:47,878] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-12 06:20:47,880] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-12 06:20:47,881] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-12 06:20:47,883] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-12 06:20:47,884] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-12 06:20:47,886] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-12 06:20:47,887] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-12 06:20:47,889] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-12 06:20:47,890] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-12 06:20:47,892] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-12 06:20:47,893] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-12 06:20:47,895] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-12 06:20:47,896] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-12 06:20:47,898] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-12 06:20:47,899] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-12 06:20:47,901] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-12 06:20:47,903] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-12 06:20:47,904] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-12 06:20:47,906] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-12 06:20:47,908] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-12 06:20:47,909] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-12 06:20:47,911] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-12 06:20:47,912] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-12 06:20:47,914] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-12 06:20:47,915] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-12 06:20:47,917] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-12 06:20:47,918] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-12 06:20:47,920] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-12 06:20:47,922] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-12 06:20:47,923] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-12 06:20:47,925] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-12 06:20:47,965] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-12 06:20:47,965] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", - "[2022-07-08 03:15:03,803] [INFO] (__main__.AISpleenSegApp) - End run\n" + "[2022-10-12 06:20:48,103] [INFO] (__main__.AISpleenSegApp) - End run\n" ] } ], @@ -839,7 +1564,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "dicom_seg-DICOMSEG.dcm\n" + "1.2.826.0.1.3680043.10.511.3.12073638797197701526521011456573587.dcm\n", + "1.2.826.0.1.3680043.10.511.3.39847376485312952059071814082872364.dcm\n", + "1.2.826.0.1.3680043.10.511.3.65358466040336222587469743448756625.dcm\n", + "1.2.826.0.1.3680043.10.511.3.97759908331215885912830153660777122.dcm\n" ] } ], @@ -849,11 +1577,8 @@ } ], "metadata": { - "interpreter": { - "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" - }, "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3.8.10 ('.venv': venv)", "language": "python", "name": "python3" }, @@ -867,7 +1592,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.8.10" + }, + "vscode": { + "interpreter": { + "hash": "9b4ab1155d0cd1042497eb40fd55b2d15caf4b3c0f9fbfcc7ba4404045d40f12" + } } }, "nbformat": 4, diff --git a/requirements-dev.txt b/requirements-dev.txt index 6818512a..1409db08 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -23,7 +23,7 @@ pytest==6.2.4 pytest-cov==2.12.1 pytest-lazy-fixture==0.6.3 cucim~=21.06; platform_system == "Linux" -monai==0.9.0 +monai>=1.0.0 docker>=5.0.0 pydicom>=2.3.0 highdicom>=0.18.2 diff --git a/requirements-examples.txt b/requirements-examples.txt index 7d7bd818..307c99ee 100644 --- a/requirements-examples.txt +++ b/requirements-examples.txt @@ -9,4 +9,4 @@ nibabel >= 3.2.1 numpy-stl >= 2.12.0 trimesh >= 3.8.11 torch >= 1.10.0 -monai == 0.9.0 \ No newline at end of file +monai >= 1.0.0 \ No newline at end of file From c6548f94f8cc0ca6ad8c379b291887ff1982575c Mon Sep 17 00:00:00 2001 From: Andres Date: Thu, 13 Oct 2022 18:56:23 +0100 Subject: [PATCH 016/216] Minor typo in property method Signed-off-by: Andres Signed-off-by: Simone Bendazzoli --- monai/deploy/core/domain/dicom_series_selection.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/monai/deploy/core/domain/dicom_series_selection.py b/monai/deploy/core/domain/dicom_series_selection.py index 59baf9e6..4cef25e2 100644 --- a/monai/deploy/core/domain/dicom_series_selection.py +++ b/monai/deploy/core/domain/dicom_series_selection.py @@ -63,7 +63,7 @@ def series(self) -> DICOMSeries: return self._series @property - def slection_name(self) -> str: + def selection_name(self) -> str: return self._name @property @@ -144,6 +144,6 @@ def add_selected_series(self, selected_series: SelectedSeries) -> None: """ if not isinstance(selected_series, SelectedSeries): raise ValueError("A SelectedSeries object is required.") - selected_series_list = self._select_series_dict.get(selected_series.slection_name, []) + selected_series_list = self._select_series_dict.get(selected_series.selection_name, []) selected_series_list.append(selected_series) - self._select_series_dict[selected_series.slection_name] = selected_series_list + self._select_series_dict[selected_series.selection_name] = selected_series_list From cc98293afe4f526eea828dd20bb99235353f3dac Mon Sep 17 00:00:00 2001 From: Andres Date: Thu, 13 Oct 2022 19:39:34 +0100 Subject: [PATCH 017/216] Update method name Signed-off-by: Andres Signed-off-by: Simone Bendazzoli --- monai/deploy/operators/dicom_series_to_volume_operator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/deploy/operators/dicom_series_to_volume_operator.py b/monai/deploy/operators/dicom_series_to_volume_operator.py index 8e38f486..e5837b8f 100644 --- a/monai/deploy/operators/dicom_series_to_volume_operator.py +++ b/monai/deploy/operators/dicom_series_to_volume_operator.py @@ -52,7 +52,7 @@ def convert_to_image(self, study_selected_series_list: List[StudySelectedSeries] raise ValueError("Element in input is not expected type, 'StudySelectedSeries'.") selected_series = study_selected_series.selected_series[0] dicom_series = selected_series.series - selection_name = selected_series.slection_name + selection_name = selected_series.selection_name self.prepare_series(dicom_series) metadata = self.create_metadata(dicom_series) From a1f39ccc692354cf7a3f54dc0db7cab48144a3eb Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Thu, 13 Oct 2022 13:14:16 -0700 Subject: [PATCH 018/216] Add DICOM PDF Writer and split dicom_utils common module out of Text SR Writer (#366) * Created dicom_utils for common obj and func, and added DICOM PDF Writer Signed-off-by: M Q * Formatting update Signed-off-by: M Q * Fix flake8 complaints Signed-off-by: M Q * Address mypy complaints Signed-off-by: M Q * Formatting Signed-off-by: M Q * Change to use full path of dicom_utils Signed-off-by: M Q * Replace Union with Optional Signed-off-by: M Q * Replace unused Union Signed-off-by: M Q * Update the year in the copyright notice Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- THIRD_PARTY_NOTICES/PyPDF2_BSD-3_LICENSE.txt | 29 ++ .../mednist_classifier_monaideploy.py | 2 +- monai/deploy/operators/__init__.py | 5 +- .../dicom_encapsulated_pdf_writer_operator.py | 271 +++++++++++++++++ .../dicom_text_sr_writer_operator.py | 286 ++---------------- monai/deploy/operators/dicom_utils.py | 284 +++++++++++++++++ 6 files changed, 619 insertions(+), 258 deletions(-) create mode 100644 THIRD_PARTY_NOTICES/PyPDF2_BSD-3_LICENSE.txt create mode 100644 monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py create mode 100644 monai/deploy/operators/dicom_utils.py diff --git a/THIRD_PARTY_NOTICES/PyPDF2_BSD-3_LICENSE.txt b/THIRD_PARTY_NOTICES/PyPDF2_BSD-3_LICENSE.txt new file mode 100644 index 00000000..6b83096f --- /dev/null +++ b/THIRD_PARTY_NOTICES/PyPDF2_BSD-3_LICENSE.txt @@ -0,0 +1,29 @@ +Copyright (c) 2006-2008, Mathieu Fenniak +Some contributions copyright (c) 2007, Ashish Kulkarni +Some contributions copyright (c) 2014, Steve Witham + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +* The name of the author may not be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/examples/apps/mednist_classifier_monaideploy/mednist_classifier_monaideploy.py b/examples/apps/mednist_classifier_monaideploy/mednist_classifier_monaideploy.py index 2759737c..3705109b 100644 --- a/examples/apps/mednist_classifier_monaideploy/mednist_classifier_monaideploy.py +++ b/examples/apps/mednist_classifier_monaideploy/mednist_classifier_monaideploy.py @@ -22,7 +22,7 @@ Operator, OutputContext, ) -from monai.deploy.operators.dicom_text_sr_writer_operator import DICOMTextSRWriterOperator, EquipmentInfo, ModelInfo +from monai.deploy.operators import DICOMTextSRWriterOperator, EquipmentInfo, ModelInfo from monai.transforms import AddChannel, Compose, EnsureType, ScaleIntensity MEDNIST_CLASSES = ["AbdomenCT", "BreastMRI", "CXR", "ChestCT", "Hand", "HeadCT"] diff --git a/monai/deploy/operators/__init__.py b/monai/deploy/operators/__init__.py index b0ac5ed9..c9dce3a4 100644 --- a/monai/deploy/operators/__init__.py +++ b/monai/deploy/operators/__init__.py @@ -19,8 +19,10 @@ DICOMSeriesSelectorOperator DICOMSeriesToVolumeOperator DICOMTextSRWriterOperator + EquipmentInfo InferenceOperator IOMapping + ModelInfo MonaiBundleInferenceOperator MonaiSegInferenceOperator PNGConverterOperator @@ -34,7 +36,8 @@ from .dicom_seg_writer_operator import DICOMSegmentationWriterOperator from .dicom_series_selector_operator import DICOMSeriesSelectorOperator from .dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator -from .dicom_text_sr_writer_operator import DICOMTextSRWriterOperator, EquipmentInfo, ModelInfo +from .dicom_text_sr_writer_operator import DICOMTextSRWriterOperator +from .dicom_utils import EquipmentInfo, ModelInfo, random_with_n_digits, save_dcm_file, write_common_modules from .inference_operator import InferenceOperator from .monai_bundle_inference_operator import BundleConfigNames, IOMapping, MonaiBundleInferenceOperator from .monai_seg_inference_operator import MonaiSegInferenceOperator diff --git a/monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py b/monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py new file mode 100644 index 00000000..4e4fafd6 --- /dev/null +++ b/monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py @@ -0,0 +1,271 @@ +# Copyright 2022 MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +from ast import Bytes +from io import BytesIO +from pathlib import Path +from typing import Dict, List, Optional + +from PyPDF2 import PdfReader + +from monai.deploy.utils.importutil import optional_import + +dcmread, _ = optional_import("pydicom", name="dcmread") +dcmwrite, _ = optional_import("pydicom.filewriter", name="dcmwrite") +generate_uid, _ = optional_import("pydicom.uid", name="generate_uid") +ImplicitVRLittleEndian, _ = optional_import("pydicom.uid", name="ImplicitVRLittleEndian") +Dataset, _ = optional_import("pydicom.dataset", name="Dataset") +FileDataset, _ = optional_import("pydicom.dataset", name="FileDataset") +Sequence, _ = optional_import("pydicom.sequence", name="Sequence") + +import monai.deploy.core as md +from monai.deploy.core import DataPath, ExecutionContext, InputContext, IOType, Operator, OutputContext +from monai.deploy.core.domain.dicom_series import DICOMSeries +from monai.deploy.core.domain.dicom_series_selection import StudySelectedSeries +from monai.deploy.exceptions import ItemNotExistsError +from monai.deploy.operators.dicom_utils import EquipmentInfo, ModelInfo, save_dcm_file, write_common_modules +from monai.deploy.utils.version import get_sdk_semver + + +# The SR writer operator class +@md.input("pdf_bytes", Bytes, IOType.IN_MEMORY) +@md.input("pdf_file", DataPath, IOType.DISK) +@md.input("study_selected_series_list", List[StudySelectedSeries], IOType.IN_MEMORY) +@md.output("dicom_instance", DataPath, IOType.DISK) +@md.env(pip_packages=["pydicom >= 1.4.2"]) +class DICOMEncapsulatedPDFWriterOperator(Operator): + + DCM_EXTENSION = ".dcm" + + def __init__( + self, + copy_tags: bool, + model_info: ModelInfo, + equipment_info: Optional[EquipmentInfo] = None, + custom_tags: Optional[Dict[str, str]] = None, + *args, + **kwargs, + ): + """Class to write DICOM Encapsulated PDF Instance with PDF bytes in memory or in a file. + + Args: + copy_tags (bool): True for copying DICOM attributes from a provided DICOMSeries. + model_info (ModelInfo): Object encapsulating model creator, name, version and UID. + equipment_info (EquipmentInfo, optional): Object encapsulating info for DICOM Equipment Module. + Defaults to None. + custom_tags (Dict[str, str], optional): Dictionary for setting custom DICOM tags using Keywords + and str values only. Defaults to None. + + Raises: + ValueError: If copy_tags is true and no DICOMSeries object provided, or + if PDF bytes cannot be found in memory or loaded from the file. + """ + super().__init__(*args, **kwargs) + self._logger = logging.getLogger("{}.{}".format(__name__, type(self).__name__)) + self.copy_tags = copy_tags + self.model_info = model_info if model_info else ModelInfo() + self.equipment_info = equipment_info if equipment_info else EquipmentInfo() + self.custom_tags = custom_tags + + # Set own Modality and SOP Class UID + # Modality, e.g., + # "OT" for PDF, "DOC" would do too. + # "SR" for Structured Report. + # Media Storage SOP Class UID, e.g., + # "1.2.840.10008.5.1.4.1.1.88.11" for Basic Text SR Storage + # "1.2.840.10008.5.1.4.1.1.104.1" for Encapsulated PDF Storage, + # "1.2.840.10008.5.1.4.1.1.88.34" for Comprehensive 3D SR IOD + # "1.2.840.10008.5.1.4.1.1.66.4" for Segmentation Storage + # '1.2.840.10008.5.1.4.1.1.104.1' for Encapsulated PDF Storage + self.modality_type = "OT" + self.sop_class_uid = "1.2.840.10008.5.1.4.1.1.104.1" + + # Equipment version may be different from contributing equipment version + try: + self.software_version_number = get_sdk_semver() # SDK Version + except Exception: + self.software_version_number = "" + self.operators_name = f"AI Algorithm {self.model_info.name}" + + def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): + """Performs computation for this operator and handles I/O. + + For now, only a single result content is supported, which could be in bytes or a path + to the PDF file. The DICOM series used during inference is optional, but is required if the + `copy_tags` is true indicating the generated DICOM object needs to copy study level metadata. + + When there are multiple selected series in the input, the first series' containing study will + be used for retrieving DICOM Study module attributes, e.g. StudyInstanceUID. + + Raises: + FileNotFoundError: When bytes are not in the input, and the file is not given or found. + ValueError: Input bytes and PDF file not in the input, or no DICOM series when required. + IOError: If fails to get the bytes of the PDF + """ + + # Gets the input, prepares the output folder, and then delegates the processing. + pdf_bytes: bytes = b"" + try: + pdf_bytes = op_input.get("pdf_bytes") + except ItemNotExistsError: + try: + file_path = op_input.get("pdf_file") + except ItemNotExistsError: + raise ValueError("None of the named inputs can be found.") from None + # Read file, and if exception, let it bubble up + with open(file_path.path, "rb") as f: + pdf_bytes = f.read().strip() + + if not pdf_bytes or not len(pdf_bytes.strip()): + raise IOError("Input is read but blank.") + + try: + study_selected_series_list = op_input.get("study_selected_series_list") + except ItemNotExistsError: + study_selected_series_list = None + + dicom_series = None # It can be None if not to copy_tags. + if self.copy_tags: + # Get the first DICOM Series for retrieving study level tags. + if not study_selected_series_list or len(study_selected_series_list) < 1: + raise ValueError("Missing input, list of 'StudySelectedSeries'.") + for study_selected_series in study_selected_series_list: + if not isinstance(study_selected_series, StudySelectedSeries): + raise ValueError("Element in input is not expected type, 'StudySelectedSeries'.") + for selected_series in study_selected_series.selected_series: + dicom_series = selected_series.series + break + + output_dir = op_output.get().path + output_dir.mkdir(parents=True, exist_ok=True) + + # Now ready to starting writing the DICOM instance + self.write(pdf_bytes, dicom_series, output_dir) + + def write(self, content_bytes, dicom_series: Optional[DICOMSeries], output_dir: Path): + """Writes DICOM object + + Args: + content_bytes (bytes): Content bytes of PDF + dicom_series (DicomSeries): DicomSeries object encapsulating the original series. + output_dir (Path): Folder path for saving the generated file. + """ + self._logger.debug("Writing DICOM object...\n") + + if not isinstance(content_bytes, bytes): + raise ValueError("Input must be bytes.") + elif not len(content_bytes.strip()): + raise ValueError("Content is empty.") + elif not self._is_pdf_bytes(content_bytes): + raise ValueError("Not PDF bytes.") + + if not isinstance(output_dir, Path): + raise ValueError("output_dir is not a valid Path.") + + output_dir.mkdir(parents=True, exist_ok=True) # Just in case + + ds = write_common_modules( + dicom_series, self.copy_tags, self.modality_type, self.sop_class_uid, self.model_info, self.equipment_info + ) + + # Encapsulated PDF specific + # SC Equipment Module + ds.Modality = self.modality_type + ds.ConversionType = "SD" # Describes the kind of image conversion, Scanned Doc + + # Encapsulated Document Module + ds.VerificationFlag = "UNVERIFIED" # Not attested by a legally accountable person. + + ds.BurnedInAnnotation = "YES" + ds.DocumentTitle = "Generated Observations" + ds.MIMETypeOfEncapsulatedDocument = "application/pdf" + ds.EncapsulatedDocument = content_bytes + + # ConceptNameCode Sequence + seq_concept_name_code = Sequence() + ds_concept_name_code = Dataset() + ds_concept_name_code.CodeValue = "18748-4" + ds_concept_name_code.CodingSchemeDesignator = "LN" + ds_concept_name_code.CodeMeaning = "Diagnostic Imaging Report" + seq_concept_name_code.append(ds_concept_name_code) + ds.ConceptNameCodeSequence = seq_concept_name_code + + # For now, only allow str Keywords and str value + if self.custom_tags: + for k, v in self.custom_tags.items(): + if isinstance(k, str) and isinstance(v, str): + try: + ds.update({k: v}) + except Exception as ex: + # Best effort for now. + logging.warning(f"Tag {k} was not written, due to {ex}") + + # Instance file name is the same as the new SOP instance UID + file_path = output_dir.joinpath(f"{ds.SOPInstanceUID}{DICOMEncapsulatedPDFWriterOperator.DCM_EXTENSION}") + save_dcm_file(ds, file_path) + self._logger.info(f"DICOM SOP instance saved in {file_path}") + + def _is_pdf_bytes(self, content: bytes): + try: + bytes_stream = BytesIO(content) + reader = PdfReader(bytes_stream) + self._logger.debug(f"The PDF has {reader.pages} page(s).") + except Exception as ex: + self._logger.exception(f"Cannot read as PDF: {ex}") + return False + return True + + +def test(): + from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator + from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator + + current_file_dir = Path(__file__).parent.resolve() + dcm_folder = current_file_dir.joinpath("../../../inputs/livertumor_ct/dcm/1-CT_series_liver_tumor_from_nii014") + pdf_file = current_file_dir.joinpath("../../../inputs/pdf/TestPDF.pdf") + out_path = "output_pdf_op" + pdf_bytes = b"Not PDF bytes." + test_copy_tags = False + + loader = DICOMDataLoaderOperator() + series_selector = DICOMSeriesSelectorOperator() + sr_writer = DICOMEncapsulatedPDFWriterOperator( + copy_tags=test_copy_tags, + model_info=None, + equipment_info=EquipmentInfo(), + custom_tags={"SeriesDescription": "Report from AI algorithm. Not for clinical use."}, + ) + + # Testing with the main entry functions + dicom_series = None + if test_copy_tags: + study_list = loader.load_data_to_studies(Path(dcm_folder).absolute()) + study_selected_series_list = series_selector.filter(None, study_list) + # Get the first DICOM Series, as for now, only expecting this. + if not study_selected_series_list or len(study_selected_series_list) < 1: + raise ValueError("Missing input, list of 'StudySelectedSeries'.") + for study_selected_series in study_selected_series_list: + if not isinstance(study_selected_series, StudySelectedSeries): + raise ValueError("Element in input is not expected type, 'StudySelectedSeries'.") + for selected_series in study_selected_series.selected_series: + print(type(selected_series)) + dicom_series = selected_series.series + print(type(dicom_series)) + + with open(pdf_file, "rb") as f: + pdf_bytes = f.read() + + sr_writer.write(pdf_bytes, dicom_series, Path(out_path).absolute()) + + +if __name__ == "__main__": + test() diff --git a/monai/deploy/operators/dicom_text_sr_writer_operator.py b/monai/deploy/operators/dicom_text_sr_writer_operator.py index 5e34c5b2..43d115da 100644 --- a/monai/deploy/operators/dicom_text_sr_writer_operator.py +++ b/monai/deploy/operators/dicom_text_sr_writer_operator.py @@ -1,4 +1,4 @@ -# Copyright 2021 MONAI Consortium +# Copyright 2021-2022 MONAI Consortium # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -9,11 +9,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -import datetime import logging from pathlib import Path -from random import randint -from typing import Dict, List, Optional, Text, Union +from typing import Dict, List, Optional, Text from monai.deploy.utils.importutil import optional_import @@ -30,61 +28,10 @@ from monai.deploy.core.domain.dicom_series import DICOMSeries from monai.deploy.core.domain.dicom_series_selection import StudySelectedSeries from monai.deploy.exceptions import ItemNotExistsError +from monai.deploy.operators.dicom_utils import EquipmentInfo, ModelInfo, save_dcm_file, write_common_modules from monai.deploy.utils.version import get_sdk_semver -# Utility classes considered to be moved into Domain module -class ModelInfo(object): - """Class encapsulating AI model information, according to IHE AI Results (AIR) Rev 1.1. - - The attributes of the class will be used to populate the Contributing Equipment Sequence in the DICOM IOD - per IHE AIR Rev 1.1, Section 6.5.3.1 General Result Encoding Requirements, as the following, - - The Creator shall describe each algorithm that was used to generate the results in the - Contributing Equipment Sequence (0018,A001). Multiple items may be included. The Creator - shall encode the following details in the Contributing Equipment Sequence, - - Purpose of Reference Code Sequence (0040,A170) shall be (Newcode1, 99IHE, 1630 "Processing Algorithm") - - Manufacturer (0008,0070) - - Manufacturer's Model Name (0008,1090) - - Software Versions (0018,1020) - - Device UID (0018,1002) - - Each time an AI Model is modified, for example by training, it would be appropriate to update - the Device UID. - """ - - def __init__(self, creator: str = "", name: str = "", version: str = "", uid: str = ""): - - self.creator = creator if isinstance(creator, str) else "" - self.name = name if isinstance(name, str) else "" - self.version = version if isinstance(version, str) else "" - self.uid = uid if isinstance(uid, str) else "" - - -class EquipmentInfo(object): - """Class encapsulating attributes required for DICOM Equipment Module.""" - - def __init__( - self, - manufacturer: str = "MONAI Deploy", - manufacturer_model: str = "MONAI Deploy App SDK", - series_number: str = "0000", - software_version_number: str = "", - ): - - self.manufacturer = manufacturer if isinstance(manufacturer, str) else "" - self.manufacturer_model = manufacturer_model if isinstance(manufacturer_model, str) else "" - self.series_number = series_number if isinstance(series_number, str) else "" - if software_version_number: - self.software_version_number = software_version_number - else: - try: - version_str = get_sdk_semver() # SDK Version - except Exception: - version_str = "" # Fall back to the initial version - self.software_version_number = version_str - - # The SR writer operator class @md.input("classification_result", Text, IOType.IN_MEMORY) @md.input("classification_result_file", DataPath, IOType.DISK) @@ -93,14 +40,15 @@ def __init__( @md.env(pip_packages=["pydicom >= 1.4.2"]) class DICOMTextSRWriterOperator(Operator): + # File extension for the generated DICOM Part 10 file. DCM_EXTENSION = ".dcm" def __init__( self, copy_tags: bool, model_info: ModelInfo, - equipment_info: Union[EquipmentInfo, None] = None, - custom_tags: Union[Dict[str, str], None] = None, + equipment_info: Optional[EquipmentInfo] = None, + custom_tags: Optional[Dict[str, str]] = None, *args, **kwargs, ): @@ -146,14 +94,17 @@ def __init__( def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): """Performs computation for this operator and handles I/O. - For now, only a single image object or result content is supported and the selected DICOM - series for inference is required, because the generated IOD needs to refer to original instance. + For now, only a single result content is supported, which could be in memory or an accessible file. + The DICOM series used during inference is optional, but is required if the + `copy_tags` is true indicating the generated DICOM object needs to copy study level metadata. + When there are multiple selected series in the input, the first series' containing study will be used for retrieving DICOM Study module attributes, e.g. StudyInstanceUID. Raises: FileNotFoundError: When result object not in the input, and result file not found either. - ValueError: Neither image object nor image file's folder is in the input, or no selected series. + ValueError: Content object and file path not in the inputs, or no DICOM series when required. + IOError: If the input content is blank. """ # Gets the input, prepares the output folder, and then delegates the processing. @@ -177,9 +128,9 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe except ItemNotExistsError: study_selected_series_list = None - dicom_series = None # It can be None of copy_tags is false. + dicom_series = None # It can be None if not to copy_tags. if self.copy_tags: - # Get the first DICOM Series, as for now, only expecting this. + # Get the first DICOM Series to retrieve study level tags. if not study_selected_series_list or len(study_selected_series_list) < 1: raise ValueError("Missing input, list of 'StudySelectedSeries'.") for study_selected_series in study_selected_series_list: @@ -187,6 +138,7 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe raise ValueError("Element in input is not expected type, 'StudySelectedSeries'.") for selected_series in study_selected_series.selected_series: dicom_series = selected_series.series + break output_dir = op_output.get().path output_dir.mkdir(parents=True, exist_ok=True) @@ -205,10 +157,16 @@ def write(self, content_text, dicom_series: Optional[DICOMSeries], output_dir: P Returns: PyDicom Dataset """ - self._logger.debug("Writing DICOM object...\n{}") + self._logger.debug("Writing DICOM object...\n") + + if not content_text or not len(content_text.strip()): + raise ValueError("Content is empty.") + if not isinstance(output_dir, Path): + raise ValueError("output_dir is not a valid Path.") + output_dir.mkdir(parents=True, exist_ok=True) # Just in case - ds = DICOMTextSRWriterOperator.write_common_modules( + ds = write_common_modules( dicom_series, self.copy_tags, self.modality_type, self.sop_class_uid, self.model_info, self.equipment_info ) @@ -274,194 +232,10 @@ def write(self, content_text, dicom_series: Optional[DICOMSeries], output_dir: P # Best effort for now. logging.warning(f"Tag {k} was not written, due to {ex}") - # Create the dcm file name, based on series instance UID, then save it. - file_name = f"{ds.SeriesInstanceUID}_{ds.Modality}{DICOMTextSRWriterOperator.DCM_EXTENSION}" - file_path = output_dir.joinpath(file_name) - self.save_dcm_file(ds, file_path) - - @staticmethod - def save_dcm_file(data_set, file_path: Path, validate_readable: bool = True): - logging.debug(f"DICOM dataset to be written:{data_set}") - - # Write out the DCM file - if file_path: - dcmwrite(str(file_path), data_set, write_like_original=False) - logging.info(f"Finished writing DICOM instance to file {file_path}") - if validate_readable: - # Test reading back - _ = dcmread(str(file_path)) - - # TODO: The following function can be moved into Domain module as it's common. - @staticmethod - def write_common_modules( - dicom_series: Optional[DICOMSeries], - copy_tags: bool, - modality_type: str, - sop_class_uid: str, - model_info: Optional[ModelInfo] = None, - equipment_info: Optional[EquipmentInfo] = None, - ): - """Writes DICOM object common modules with or without a reference DCIOM Series - - Common modules include Study, Patient, Equipment, Series, and SOP common. - - Args: - dicom_series (DicomSeries): DicomSeries object encapsulating the original series. - copy_tags (bool): If true, dicom_series must be provided for copying tags. - modality_type (str): DICOM Modality Type, e.g. SR. - sop_class_uid (str): Media Storage SOP Class UID, e.g. "1.2.840.10008.5.1.4.1.1.88.34" for Comprehensive 3D SR IOD. - model_info (MoelInfo): Object encapsulating model creator, name, version and UID. - equipment_info(EquipmentInfo): Object encapsulating attributes for DICOM Equipment Module - - Returns: - pydicom Dataset - - Raises: - ValueError: When dicom_series is not a DICOMSeries object, and new_study is not True. - """ - - if copy_tags: - if not isinstance(dicom_series, DICOMSeries): - raise ValueError("A DICOMSeries object is required for coping tags.") - - if len(dicom_series.get_sop_instances()) < 1: - raise ValueError("DICOMSeries must have at least one SOP instance.") - - # Get one of the SOP instance's native sop instance dataset - orig_ds = dicom_series.get_sop_instances()[0].get_native_sop_instance() - - logging.debug("Writing DICOM common modules...") - - # Get and format date and time per DICOM standards. - dt_now = datetime.datetime.now() - date_now_dcm = dt_now.strftime("%Y%m%d") - time_now_dcm = dt_now.strftime("%H%M%S") - offset_from_utc = dt_now.astimezone().isoformat()[-6:].replace(":", "") # '2022-09-27T22:36:20.143857-07:00' - - # Generate UIDs and descriptions - my_sop_instance_uid = generate_uid() - my_series_instance_uid = generate_uid() - my_series_description = "CAUTION: Not for Diagnostic Use, for research use only." - my_series_number = str(DICOMTextSRWriterOperator.random_with_n_digits(4)) # 4 digit number to avoid conflict - my_study_instance_uid = orig_ds.StudyInstanceUID if copy_tags else generate_uid() - - # File meta info data set - file_meta = Dataset() - file_meta.FileMetaInformationGroupLength = 198 - file_meta.FileMetaInformationVersion = bytes("01", "utf-8") # '\x00\x01' - - file_meta.MediaStorageSOPClassUID = sop_class_uid - file_meta.MediaStorageSOPInstanceUID = my_sop_instance_uid - file_meta.TransferSyntaxUID = ImplicitVRLittleEndian # 1.2.840.10008.1.2, Little Endian Implicit VR - file_meta.ImplementationClassUID = "1.2.40.0.13.1.1.1" # Made up. Not registered. - file_meta.ImplementationVersionName = equipment_info.software_version_number if equipment_info else "" - - # Write modules to data set - ds = Dataset() - ds.file_meta = file_meta - ds.is_implicit_VR = True - ds.is_little_endian = True - - # Content Date (0008,0023) and Content Time (0008,0033) are defined to be the date and time that - # the document content creation started. In the context of analysis results, these may be considered - # to be the date and time that the analysis that generated the result(s) started executing. - # Use current time for now, but could potentially use the actual inference start time. - ds.ContentDate = date_now_dcm - ds.ContentTime = time_now_dcm - ds.TimezoneOffsetFromUTC = offset_from_utc - - # The date and time that the original generation of the data in the document started. - ds.AcquisitionDateTime = date_now_dcm + time_now_dcm # Result has just been created. - - # Patient Module, mandatory. - # Copy over from the original DICOM metadata. - ds.PatientName = orig_ds.get("PatientName", "") if copy_tags else "" - ds.PatientID = orig_ds.get("PatientID", "") if copy_tags else "" - ds.IssuerOfPatientID = orig_ds.get("IssuerOfPatientID", "") if copy_tags else "" - ds.PatientBirthDate = orig_ds.get("PatientBirthDate", "") if copy_tags else "" - ds.PatientSex = orig_ds.get("PatientSex", "") if copy_tags else "" - - # Study Module, mandatory - # Copy over from the original DICOM metadata. - ds.StudyDate = orig_ds.get("StudyDate", "") if copy_tags else date_now_dcm - ds.StudyTime = orig_ds.get("StudyTime", "") if copy_tags else time_now_dcm - ds.AccessionNumber = orig_ds.get("AccessionNumber", "") if copy_tags else "" - ds.StudyDescription = orig_ds.get("StudyDescription", "") if copy_tags else "AI results." - ds.StudyInstanceUID = my_study_instance_uid - ds.StudyID = orig_ds.get("StudyID", "") if copy_tags else "1" - ds.ReferringPhysicianName = orig_ds.get("ReferringPhysicianName", "") if copy_tags else "" - - # Equipment Module, mandatory - if equipment_info: - ds.Manufacturer = equipment_info.manufacturer - ds.ManufacturerModelName = equipment_info.manufacturer_model - ds.SeriesNumber = equipment_info.series_number - ds.SoftwareVersions = equipment_info.software_version_number - - # SOP Common Module, mandatory - ds.InstanceCreationDate = date_now_dcm - ds.InstanceCreationTime = time_now_dcm - ds.SOPClassUID = sop_class_uid - ds.SOPInstanceUID = my_sop_instance_uid - ds.InstanceNumber = "1" - ds.SpecificCharacterSet = "ISO_IR 100" - - # Series Module, mandatory - ds.Modality = modality_type - ds.SeriesInstanceUID = my_series_instance_uid - ds.SeriesNumber = my_series_number - ds.SeriesDescription = my_series_description - ds.SeriesDate = date_now_dcm - ds.SeriesTime = time_now_dcm - # Body part copied over, although not mandatory depending on modality - ds.BodyPartExamined = orig_ds.get("BodyPartExamined", "") if copy_tags else "" - ds.RequestedProcedureID = orig_ds.get("RequestedProcedureID", "") if copy_tags else "" - - # Contributing Equipment Sequence - # The Creator shall describe each algorithm that was used to generate the results in the - # Contributing Equipment Sequence (0018,A001). Multiple items may be included. The Creator - # shall encode the following details in the Contributing Equipment Sequence: - # • Purpose of Reference Code Sequence (0040,A170) shall be (Newcode1, 99IHE, 1630 "Processing Algorithm") - # • Manufacturer (0008,0070) - # • Manufacturer’s Model Name (0008,1090) - # • Software Versions (0018,1020) - # • Device UID (0018,1002) - - if model_info: - # First create the Purpose of Reference Code Sequence - seq_purpose_of_reference_code = Sequence() - ds_purpose_of_reference_code = Dataset() - ds_purpose_of_reference_code.CodeValue = "Newcode1" - ds_purpose_of_reference_code.CodingSchemeDesignator = "99IHE" - ds_purpose_of_reference_code.CodeMeaning = '"Processing Algorithm' - seq_purpose_of_reference_code.append(ds_purpose_of_reference_code) - - seq_contributing_equipment = Sequence() - ds_contributing_equipment = Dataset() - ds_contributing_equipment.PurposeOfReferenceCodeSequence = seq_purpose_of_reference_code - # '(121014, DCM, “Device Observer Manufacturer")' - ds_contributing_equipment.Manufacturer = model_info.creator - # u'(121015, DCM, “Device Observer Model Name")' - ds_contributing_equipment.ManufacturerModelName = model_info.name - # u'(111003, DCM, “Algorithm Version")' - ds_contributing_equipment.SoftwareVersions = model_info.version - ds_contributing_equipment.DeviceUID = model_info.uid # u'(121012, DCM, “Device Observer UID")' - seq_contributing_equipment.append(ds_contributing_equipment) - ds.ContributingEquipmentSequence = seq_contributing_equipment - - logging.debug("DICOM common modules written:\n{}".format(ds)) - - return ds - - @staticmethod - def random_with_n_digits(n): - """Random number generator to generate n digit int, where 1 <= n <= 32.""" - - assert isinstance(n, int) and n <= 32, "Argument n must be an int, n <= 32." - n = n if n >= 1 else 1 - range_start = 10 ** (n - 1) - range_end = (10**n) - 1 - return randint(range_start, range_end) + # Instance file name is the same as the new SOP instance UID + file_path = output_dir.joinpath(f"{ds.SOPInstanceUID}{DICOMTextSRWriterOperator.DCM_EXTENSION}") + save_dcm_file(ds, file_path) + self._logger.info(f"DICOM SOP instance saved in {file_path}") def test(): @@ -470,16 +244,16 @@ def test(): current_file_dir = Path(__file__).parent.resolve() data_path = current_file_dir.joinpath("../../../inputs/livertumor_ct/dcm/1-CT_series_liver_tumor_from_nii014") - out_path = current_file_dir.joinpath("../../../examples/output_sr_op") + out_path = "output_sr_op" test_report_text = "Tumors detected in Liver using MONAI Liver Tumor Seg model." - test_copy_tags = False + test_copy_tags = True loader = DICOMDataLoaderOperator() series_selector = DICOMSeriesSelectorOperator() sr_writer = DICOMTextSRWriterOperator( copy_tags=test_copy_tags, model_info=None, - equipment_info=EquipmentInfo(software_version_number="0.4"), + equipment_info=EquipmentInfo(), custom_tags={"SeriesDescription": "Textual report from AI algorithm. Not for clinical use."}, ) diff --git a/monai/deploy/operators/dicom_utils.py b/monai/deploy/operators/dicom_utils.py new file mode 100644 index 00000000..6d434953 --- /dev/null +++ b/monai/deploy/operators/dicom_utils.py @@ -0,0 +1,284 @@ +# Copyright 2022 MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import datetime +import logging +from pathlib import Path +from random import randint +from typing import Any, Optional + +from monai.deploy.utils.importutil import optional_import + +dcmread, _ = optional_import("pydicom", name="dcmread") +dcmwrite, _ = optional_import("pydicom.filewriter", name="dcmwrite") +generate_uid, _ = optional_import("pydicom.uid", name="generate_uid") +ImplicitVRLittleEndian, _ = optional_import("pydicom.uid", name="ImplicitVRLittleEndian") +Dataset_, _ = optional_import("pydicom.dataset", name="Dataset") +FileDataset, _ = optional_import("pydicom.dataset", name="FileDataset") +Sequence, _ = optional_import("pydicom.sequence", name="Sequence") + +from monai.deploy.core.domain.dicom_series import DICOMSeries +from monai.deploy.utils.version import get_sdk_semver + +# To address mypy complaint +Dataset: Any = Dataset_ + +__all__ = [ + "EquipmentInfo", + "ModelInfo", + "random_with_n_digits", + "save_dcm_file", + "write_common_modules", +] + + +class ModelInfo(object): + """Class encapsulating AI model information, according to IHE AI Results (AIR) Rev 1.1. + + The attributes of the class will be used to populate the Contributing Equipment Sequence in the DICOM IOD + per IHE AIR Rev 1.1, Section 6.5.3.1 General Result Encoding Requirements, as the following, + + The Creator shall describe each algorithm that was used to generate the results in the + Contributing Equipment Sequence (0018,A001). Multiple items may be included. The Creator + shall encode the following details in the Contributing Equipment Sequence, + - Purpose of Reference Code Sequence (0040,A170) shall be (Newcode1, 99IHE, 1630 "Processing Algorithm") + - Manufacturer (0008,0070) + - Manufacturer's Model Name (0008,1090) + - Software Versions (0018,1020) + - Device UID (0018,1002) + + Each time an AI Model is modified, for example by training, it would be appropriate to update + the Device UID. + """ + + def __init__(self, creator: str = "", name: str = "", version: str = "", uid: str = ""): + + self.creator = creator if isinstance(creator, str) else "" + self.name = name if isinstance(name, str) else "" + self.version = version if isinstance(version, str) else "" + self.uid = uid if isinstance(uid, str) else "" + + +class EquipmentInfo(object): + """Class encapsulating attributes required for DICOM Equipment Module.""" + + def __init__( + self, + manufacturer: str = "MONAI Deploy", + manufacturer_model: str = "MONAI Deploy App SDK", + series_number: str = "0000", + software_version_number: str = "", + ): + + self.manufacturer = manufacturer if isinstance(manufacturer, str) else "" + self.manufacturer_model = manufacturer_model if isinstance(manufacturer_model, str) else "" + self.series_number = series_number if isinstance(series_number, str) else "" + if software_version_number: + self.software_version_number = str(software_version_number)[0:15] + else: + try: + version_str = get_sdk_semver() # SDK Version + except Exception: + version_str = "" # Fall back to the initial version + self.software_version_number = version_str[0:15] + + +# Utility functions + + +def random_with_n_digits(n): + """Random number generator to generate n digit int, where 1 <= n <= 32.""" + + assert isinstance(n, int) and n <= 32, "Argument n must be an int, n <= 32." + n = n if n >= 1 else 1 + range_start = 10 ** (n - 1) + range_end = (10**n) - 1 + return randint(range_start, range_end) + + +def save_dcm_file(data_set: Dataset, file_path: Path, validate_readable: bool = True): + """Save a DICOM data set, in pydicom Dataset, to the provided file path.""" + + logging.debug(f"DICOM dataset to be written:{data_set}") + + if not isinstance(data_set, Dataset): + raise ValueError("data_set is not the expected Dataset type.") + + if not str(file_path).strip(): + raise ValueError("file_path to save dcm file not provided.") + + dcmwrite(str(file_path).strip(), data_set, write_like_original=False) + logging.info(f"Finished writing DICOM instance to file {file_path}") + + if validate_readable: + # Test reading back + _ = dcmread(str(file_path)) + + +def write_common_modules( + dicom_series: Optional[DICOMSeries], + copy_tags: bool, + modality_type: str, + sop_class_uid: str, + model_info: Optional[ModelInfo] = None, + equipment_info: Optional[EquipmentInfo] = None, +) -> Dataset: + """Writes DICOM object common modules with or without a reference DCIOM Series + + Common modules include Study, Patient, Equipment, Series, and SOP common. + + Args: + dicom_series (DicomSeries): DicomSeries object encapsulating the original series. + copy_tags (bool): If true, dicom_series must be provided for copying tags. + modality_type (str): DICOM Modality Type, e.g. SR. + sop_class_uid (str): Media Storage SOP Class UID, e.g. "1.2.840.10008.5.1.4.1.1.88.34" for Comprehensive 3D SR IOD. + model_info (MoelInfo): Object encapsulating model creator, name, version and UID. + equipment_info(EquipmentInfo): Object encapsulating attributes for DICOM Equipment Module + + Returns: + pydicom Dataset + + Raises: + ValueError: When dicom_series is not a DICOMSeries object, and new_study is not True. + """ + + if copy_tags: + if not isinstance(dicom_series, DICOMSeries): + raise ValueError("A DICOMSeries object is required for coping tags.") + + if len(dicom_series.get_sop_instances()) < 1: + raise ValueError("DICOMSeries must have at least one SOP instance.") + + # Get one of the SOP instance's native sop instance dataset + orig_ds = dicom_series.get_sop_instances()[0].get_native_sop_instance() + + logging.debug("Writing DICOM common modules...") + + # Get and format date and time per DICOM standards. + dt_now = datetime.datetime.now() + date_now_dcm = dt_now.strftime("%Y%m%d") + time_now_dcm = dt_now.strftime("%H%M%S") + offset_from_utc = dt_now.astimezone().isoformat()[-6:].replace(":", "") # '2022-09-27T22:36:20.143857-07:00' + + # Generate UIDs and descriptions + my_sop_instance_uid = generate_uid() + my_series_instance_uid = generate_uid() + my_series_description = "CAUTION: Not for Diagnostic Use, for research use only." + my_series_number = str(random_with_n_digits(4)) # 4 digit number to avoid conflict + my_study_instance_uid = orig_ds.StudyInstanceUID if copy_tags else generate_uid() + + # File meta info data set + file_meta = Dataset() + file_meta.FileMetaInformationGroupLength = 198 + file_meta.FileMetaInformationVersion = bytes("01", "utf-8") # '\x00\x01' + + file_meta.MediaStorageSOPClassUID = sop_class_uid + file_meta.MediaStorageSOPInstanceUID = my_sop_instance_uid + file_meta.TransferSyntaxUID = ImplicitVRLittleEndian # 1.2.840.10008.1.2, Little Endian Implicit VR + file_meta.ImplementationClassUID = "1.2.40.0.13.1.1.1" # Made up. Not registered. + file_meta.ImplementationVersionName = equipment_info.software_version_number if equipment_info else "" + + # Write modules to data set + ds = Dataset() + ds.file_meta = file_meta + ds.is_implicit_VR = True + ds.is_little_endian = True + + # Content Date (0008,0023) and Content Time (0008,0033) are defined to be the date and time that + # the document content creation started. In the context of analysis results, these may be considered + # to be the date and time that the analysis that generated the result(s) started executing. + # Use current time for now, but could potentially use the actual inference start time. + ds.ContentDate = date_now_dcm + ds.ContentTime = time_now_dcm + ds.TimezoneOffsetFromUTC = offset_from_utc + + # The date and time that the original generation of the data in the document started. + ds.AcquisitionDateTime = date_now_dcm + time_now_dcm # Result has just been created. + + # Patient Module, mandatory. + # Copy over from the original DICOM metadata. + ds.PatientName = orig_ds.get("PatientName", "") if copy_tags else "" + ds.PatientID = orig_ds.get("PatientID", "") if copy_tags else "" + ds.IssuerOfPatientID = orig_ds.get("IssuerOfPatientID", "") if copy_tags else "" + ds.PatientBirthDate = orig_ds.get("PatientBirthDate", "") if copy_tags else "" + ds.PatientSex = orig_ds.get("PatientSex", "") if copy_tags else "" + + # Study Module, mandatory + # Copy over from the original DICOM metadata. + ds.StudyDate = orig_ds.get("StudyDate", "") if copy_tags else date_now_dcm + ds.StudyTime = orig_ds.get("StudyTime", "") if copy_tags else time_now_dcm + ds.AccessionNumber = orig_ds.get("AccessionNumber", "") if copy_tags else "" + ds.StudyDescription = orig_ds.get("StudyDescription", "") if copy_tags else "AI results." + ds.StudyInstanceUID = my_study_instance_uid + ds.StudyID = orig_ds.get("StudyID", "") if copy_tags else "1" + ds.ReferringPhysicianName = orig_ds.get("ReferringPhysicianName", "") if copy_tags else "" + + # Equipment Module, mandatory + if equipment_info: + ds.Manufacturer = equipment_info.manufacturer + ds.ManufacturerModelName = equipment_info.manufacturer_model + ds.SeriesNumber = equipment_info.series_number + ds.SoftwareVersions = equipment_info.software_version_number + + # SOP Common Module, mandatory + ds.InstanceCreationDate = date_now_dcm + ds.InstanceCreationTime = time_now_dcm + ds.SOPClassUID = sop_class_uid + ds.SOPInstanceUID = my_sop_instance_uid + ds.InstanceNumber = "1" + ds.SpecificCharacterSet = "ISO_IR 100" + + # Series Module, mandatory + ds.Modality = modality_type + ds.SeriesInstanceUID = my_series_instance_uid + ds.SeriesNumber = my_series_number + ds.SeriesDescription = my_series_description + ds.SeriesDate = date_now_dcm + ds.SeriesTime = time_now_dcm + # Body part copied over, although not mandatory depending on modality + ds.BodyPartExamined = orig_ds.get("BodyPartExamined", "") if copy_tags else "" + ds.RequestedProcedureID = orig_ds.get("RequestedProcedureID", "") if copy_tags else "" + + # Contributing Equipment Sequence + # The Creator shall describe each algorithm that was used to generate the results in the + # Contributing Equipment Sequence (0018,A001). Multiple items may be included. The Creator + # shall encode the following details in the Contributing Equipment Sequence: + # • Purpose of Reference Code Sequence (0040,A170) shall be (Newcode1, 99IHE, 1630 "Processing Algorithm") + # • Manufacturer (0008,0070) + # • Manufacturer’s Model Name (0008,1090) + # • Software Versions (0018,1020) + # • Device UID (0018,1002) + + if model_info: + # First create the Purpose of Reference Code Sequence + seq_purpose_of_reference_code = Sequence() + ds_purpose_of_reference_code = Dataset() + ds_purpose_of_reference_code.CodeValue = "Newcode1" + ds_purpose_of_reference_code.CodingSchemeDesignator = "99IHE" + ds_purpose_of_reference_code.CodeMeaning = '"Processing Algorithm' + seq_purpose_of_reference_code.append(ds_purpose_of_reference_code) + + seq_contributing_equipment = Sequence() + ds_contributing_equipment = Dataset() + ds_contributing_equipment.PurposeOfReferenceCodeSequence = seq_purpose_of_reference_code + # '(121014, DCM, “Device Observer Manufacturer")' + ds_contributing_equipment.Manufacturer = model_info.creator + # u'(121015, DCM, “Device Observer Model Name")' + ds_contributing_equipment.ManufacturerModelName = model_info.name + # u'(111003, DCM, “Algorithm Version")' + ds_contributing_equipment.SoftwareVersions = model_info.version + ds_contributing_equipment.DeviceUID = model_info.uid # u'(121012, DCM, “Device Observer UID")' + seq_contributing_equipment.append(ds_contributing_equipment) + ds.ContributingEquipmentSequence = seq_contributing_equipment + + logging.debug("DICOM common modules written:\n{}".format(ds)) + + return ds From b6f22be32154068092adae2ba223bd22a4c0b395 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Sun, 16 Oct 2022 21:36:04 -0700 Subject: [PATCH 019/216] Add the missing python package, PyPDF2 (#372) * Add the missing python package, PyPDF2 Signed-off-by: M Q * Add PyPDF2>=2.11.1 Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- .../dicom_encapsulated_pdf_writer_operator.py | 2 +- requirements-dev.txt | 1 + requirements-examples.txt | 19 ++++++++++--------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py b/monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py index 4e4fafd6..9ef96b62 100644 --- a/monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py +++ b/monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py @@ -41,7 +41,7 @@ @md.input("pdf_file", DataPath, IOType.DISK) @md.input("study_selected_series_list", List[StudySelectedSeries], IOType.IN_MEMORY) @md.output("dicom_instance", DataPath, IOType.DISK) -@md.env(pip_packages=["pydicom >= 1.4.2"]) +@md.env(pip_packages=["pydicom >= 1.4.2", "PyPDF2 >= 2.11.1"]) class DICOMEncapsulatedPDFWriterOperator(Operator): DCM_EXTENSION = ".dcm" diff --git a/requirements-dev.txt b/requirements-dev.txt index 1409db08..34a81aa3 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -26,6 +26,7 @@ cucim~=21.06; platform_system == "Linux" monai>=1.0.0 docker>=5.0.0 pydicom>=2.3.0 +PyPDF2>=2.11.1 highdicom>=0.18.2 SimpleITK>=2.0.0 Pillow>=8.0.0 diff --git a/requirements-examples.txt b/requirements-examples.txt index 307c99ee..a6efd43b 100644 --- a/requirements-examples.txt +++ b/requirements-examples.txt @@ -1,12 +1,13 @@ -scikit-image >= 0.17.2 -pydicom >= 2.3.0 +scikit-image>=0.17.2 +pydicom>=2.3.0 +PyPDF2>=2.11.1 highdicom>=0.18.2 -SimpleITK >= 2.0.0 -Pillow >= 8.0.0 +SimpleITK>=2.0.0 +Pillow>=8.0.0 numpy-stl>=2.12.0 trimesh>=3.8.11 -nibabel >= 3.2.1 -numpy-stl >= 2.12.0 -trimesh >= 3.8.11 -torch >= 1.10.0 -monai >= 1.0.0 \ No newline at end of file +nibabel>=3.2.1 +numpy-stl>=2.12.0 +trimesh>=3.8.11 +torch>=1.10.0 +monai>=1.0.0 \ No newline at end of file From 1c76efaf1895dff208e179fd3c721c2912a3612f Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Tue, 18 Oct 2022 09:20:49 -0700 Subject: [PATCH 020/216] Enhanced multi-value DateElement parsing (#370) Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- monai/deploy/operators/dicom_series_selector_operator.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/monai/deploy/operators/dicom_series_selector_operator.py b/monai/deploy/operators/dicom_series_selector_operator.py index d088e48a..9f85418c 100644 --- a/monai/deploy/operators/dicom_series_selector_operator.py +++ b/monai/deploy/operators/dicom_series_selector_operator.py @@ -225,7 +225,13 @@ def _select_series(self, attributes: dict, study: DICOMStudy, all_matched=False) # This is mainly for attributes like ImageType if not attr_value: try: - attr_value = [series.get_sop_instances()[0].get_native_sop_instance()[key].repval] + # Can use some enhancements, especially multi-value where VM > 1 + elem = series.get_sop_instances()[0].get_native_sop_instance()[key] + if elem.VM > 1: + attr_value = [elem.repval] # repval: str representation of the element’s value + else: + attr_value = elem.value # element's value + series_attr.update({key: attr_value}) except Exception: logging.info(f" Attribute {key} not at instance level either.") From f76de9624c4ddb52b165feac51add0b474e034c7 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Tue, 18 Oct 2022 20:22:21 -0700 Subject: [PATCH 021/216] Doc changes for addressing issues and for releasing App SDK v0.5 (#373) * Draft of 0.5 docs Signed-off-by: M Q * Add doc for DICOM PDF Signed-off-by: M Q * Fix typo Signed-off-by: M Q * Added a missing new file and typo corrections Signed-off-by: M Q * Update requirements for docs (for gen_docs) and typo corrections Signed-off-by: M Q * Reran clara-viz notebook with just release new clara-viz package 0.2.2 Signed-off-by: M Q * Release note adds reference to MD Express, and the removal of MIS Signed-off-by: M Q * Release note adds statement on DICOM date/time/TimezoneOffset Signed-off-by: M Q * Correct missing optional import found during QA Signed-off-by: M Q * Final corrections after QA Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- README.md | 7 +- docs/requirements.txt | 6 +- .../developing_with_sdk/core_concepts.md | 2 +- .../deploying_and_hosting_map.md | 6 + .../deploying_to_the_remote_server.md | 11 - docs/source/developing_with_sdk/index.md | 2 +- .../developing_with_sdk/packaging_app.md | 4 +- .../tutorials/04_mis_tutorial.md | 33 - .../tutorials/05_full_tutorial.md | 33 - .../source/getting_started/tutorials/index.md | 11 +- .../{02_mednist_app.md => mednist_app.md} | 4 +- ...onai_bundle_app.md => monai_bundle_app.md} | 16 +- ...egmentation_app.md => segmentation_app.md} | 18 +- .../tutorials/segmentation_clara-viz_app.md | 33 + .../{01_simple_app.md => simple_app.md} | 4 +- docs/source/introduction/overview.md | 14 + docs/source/introduction/roadmap.md | 4 +- docs/source/release_notes/index.md | 7 + docs/source/release_notes/v0.5.0.md | 27 + examples/apps/lung_seg_cv_app/__init__.py | 0 monai/deploy/core/domain/image.py | 18 + monai/deploy/operators/__init__.py | 2 + .../dicom_encapsulated_pdf_writer_operator.py | 5 +- .../dicom_text_sr_writer_operator.py | 2 +- notebooks/tutorials/01_simple_app.ipynb | 140 ++- notebooks/tutorials/03_segmentation_app.ipynb | 1114 ++++++++--------- .../tutorials/03_segmentation_viz_app.ipynb | 1028 +++++++-------- notebooks/tutorials/06_monai_bundle_app.ipynb | 1045 ++++++++-------- setup.cfg | 2 +- 29 files changed, 1786 insertions(+), 1812 deletions(-) create mode 100644 docs/source/developing_with_sdk/deploying_and_hosting_map.md delete mode 100644 docs/source/developing_with_sdk/deploying_to_the_remote_server.md delete mode 100644 docs/source/getting_started/tutorials/04_mis_tutorial.md delete mode 100644 docs/source/getting_started/tutorials/05_full_tutorial.md rename docs/source/getting_started/tutorials/{02_mednist_app.md => mednist_app.md} (91%) rename docs/source/getting_started/tutorials/{06_monai_bundle_app.md => monai_bundle_app.md} (76%) rename docs/source/getting_started/tutorials/{03_segmentation_app.md => segmentation_app.md} (77%) create mode 100644 docs/source/getting_started/tutorials/segmentation_clara-viz_app.md rename docs/source/getting_started/tutorials/{01_simple_app.md => simple_app.md} (93%) create mode 100644 docs/source/release_notes/v0.5.0.md delete mode 100644 examples/apps/lung_seg_cv_app/__init__.py diff --git a/README.md b/README.md index b7addfa1..eca60f8f 100644 --- a/README.md +++ b/README.md @@ -79,16 +79,15 @@ YouTube Video: - [Spleen Organ Segmentation - Jupyter Notebook Tutorial](https://www.youtube.com/watch?v=cqDVxzYt9lY) - [Spleen Organ Segmentation - Deep Dive](https://www.youtube.com/watch?v=nivgfD4pwWE) -### [4) Deploying Segmentation app with MONAI Inference Service (MIS)](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/getting_started/tutorials/04_mis_tutorial.html) +### [4) Creating a Segmentation app](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/getting_started/tutorials/03_segmentation_viz_app.html) -### [5) Building and deploying Segmentation app with MONAI Inference Service (MIS)](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/getting_started/tutorials/05_full_tutorial.html) - -### [6) Creating a Segmentation app consuming a MONAI Bundle](https://docs.monai.io/projects/monai-deploy-app-sdk/en/0.4.0/getting_started/tutorials/06_monai_bundle_app.html) +### [5) Creating a Segmentation app consuming a MONAI Bundle](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/getting_started/tutorials/06_monai_bundle_app.html) ### [Examples](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/getting_started/examples.html) has example apps that you can see. +- ai_livertumor_seg_app - ai_spleen_seg_app - ai_unetr_seg_app - dicom_series_to_image_app diff --git a/docs/requirements.txt b/docs/requirements.txt index a154b509..0cd1c356 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,7 +1,7 @@ Sphinx==4.1.2 sphinx-autobuild==2021.3.14 myst-parser==0.15.2 -numpy==1.21.2 # CVE-2021-33430 +numpy>=1.21.2 # CVE-2021-33430 matplotlib==3.3.4 ipywidgets==7.6.4 pandas==1.1.5 @@ -22,11 +22,13 @@ scipy scikit-image>=0.17.2 plotly nibabel>=3.2.1 -monai>=0.9.0 +monai>=1.0.0 torch>=1.10.0 numpy-stl>=2.12.0 trimesh>=3.8.11 pydicom +PyPDF2>=2.11.1 +highdicom>=0.18.2 sphinx-autodoc-typehints==1.12.0 sphinxcontrib-applehelp==1.0.2 sphinxcontrib-devhelp==1.0.2 diff --git a/docs/source/developing_with_sdk/core_concepts.md b/docs/source/developing_with_sdk/core_concepts.md index e72fd39f..61dba915 100644 --- a/docs/source/developing_with_sdk/core_concepts.md +++ b/docs/source/developing_with_sdk/core_concepts.md @@ -78,7 +78,7 @@ graph TD click Package "./packaging_app.html" "Go to the document" _self click ExecPackage "./executing_packaged_app_locally.html" "Go to the document" _self - click DeployPackage "./deploying_to_the_remote_server.html" "Go to the document" _self + click DeployPackage "./deploying_and_hosting_map.html" "Go to the document" _self ``` diff --git a/docs/source/developing_with_sdk/deploying_and_hosting_map.md b/docs/source/developing_with_sdk/deploying_and_hosting_map.md new file mode 100644 index 00000000..899e16ae --- /dev/null +++ b/docs/source/developing_with_sdk/deploying_and_hosting_map.md @@ -0,0 +1,6 @@ +# Deploying and Hosting MONAI App Package + +The MONAI Application Package, MAP, built and packaged using MONAI Deploy App SDK, can be deployed in multiple ways, each with different levels of integration with a hosting platform. +- A MAP is an OCI compliant container, albeit requiring Nvidia Container Toolkit as it is based on the Nvidia PyTorch Python container image . The hosting platforms, via their own tooling, can inspect the MAP metadata and ensure dependencies are satisfied on launching the MAP container, for example, an MAP can used in a Argo workflow. +- A MAP runs "natively" on a platform, where the platform specific adaptor or shim embedded in the MAP can understand the MAP and the platform APIs thus manages the life cycle of the application per platform requests. At the onset, the only native execution planned is on the MONAI Deploy. The support for other platforms is on the horizon. +- As envisioned for the long term, standardization of deployment package specification will be needed, so that compliant application packages shall work on all compliant platforms. One of the initiatives in this area is the Open Appication Model, though the App SDK project is not yet actively investigating the integration. diff --git a/docs/source/developing_with_sdk/deploying_to_the_remote_server.md b/docs/source/developing_with_sdk/deploying_to_the_remote_server.md deleted file mode 100644 index e6b94514..00000000 --- a/docs/source/developing_with_sdk/deploying_to_the_remote_server.md +++ /dev/null @@ -1,11 +0,0 @@ -# Deploying to the remote server (coming soon) - -As of v0.2.0, the SDK is not yet ready to deploy to the remote server (MONAI Deploy App Server). -We are actively working on it. - -Meanwhile, you can use the following tutorial to deploy your model with the RESTful Inference Service -- [MONAI Inference Service (MIS)](https://github.com/Project-MONAI/monai-deploy-app-server/blob/main/components/inference-service/README.md). - -Please refer to the following tutorial for more details: - -- 4) Deploying Segmentation app with MONAI Inference Service (MIS) -- 5) Building and deploying Segmentation app with MONAI Inference Service (MIS) diff --git a/docs/source/developing_with_sdk/index.md b/docs/source/developing_with_sdk/index.md index 3ed09281..5b14a9d4 100644 --- a/docs/source/developing_with_sdk/index.md +++ b/docs/source/developing_with_sdk/index.md @@ -11,5 +11,5 @@ creating_application_class executing_app_locally.ipynb packaging_app executing_packaged_app_locally -deploying_to_the_remote_server +deploying_and_hosting_map ``` diff --git a/docs/source/developing_with_sdk/packaging_app.md b/docs/source/developing_with_sdk/packaging_app.md index c4cbe2af..f2f9545e 100644 --- a/docs/source/developing_with_sdk/packaging_app.md +++ b/docs/source/developing_with_sdk/packaging_app.md @@ -6,7 +6,7 @@ In this step, the MONAI Deploy application can now be built into a deployable Do The MONAI Application Packager (Packager) is a utility for building an application developed with the MONAI Deploy App SDK into a structured MONAI Application Package (**MAP**). -The MAP produced by the Packager is a deployable and reusable docker image that can be launched [locally](./executing_packaged_app_locally) or [remotely](./deploying_to_the_remote_server). +The MAP produced by the Packager is a deployable and reusable docker image that can be launched [locally](./executing_packaged_app_locally) or [remotely](./deploying_and_hosting_map). ### Basic Usage of MONAI Application Packager @@ -67,7 +67,7 @@ Building MONAI Application Package... Successfully built my_app:latest ``` -The MAP image `my_app:latest` will be seen in the list of container images on the user's local machine when the command `docker images` is run. The MAP image `my_app:latest` will be able to run [locally](./executing_packaged_app_locally) or [remotely](./deploying_to_the_remote_server). +The MAP image `my_app:latest` will be seen in the list of container images on the user's local machine when the command `docker images` is run. The MAP image `my_app:latest` will be able to run [locally](./executing_packaged_app_locally) or [remotely](./deploying_and_hosting_map). ```{note} * The current implementation (as of `0.1.0`) of the Packager **ONLY** supports [**CUDA**](https://ngc.nvidia.com/catalog/containers/nvidia:cuda) and [**Pytorch**](https://ngc.nvidia.com/catalog/containers/nvidia:pytorch) images from `nvcr.io` as base images for the MAP. There are efforts in progress to add support for smaller images from [dockerhub](https://hub.docker.com/). diff --git a/docs/source/getting_started/tutorials/04_mis_tutorial.md b/docs/source/getting_started/tutorials/04_mis_tutorial.md deleted file mode 100644 index 2cc96fec..00000000 --- a/docs/source/getting_started/tutorials/04_mis_tutorial.md +++ /dev/null @@ -1,33 +0,0 @@ -# 4) Deploying Segmentation app with MONAI Inference Service (MIS) - -## Setup - -The environment from the previous section (**Creating a Segmentation app**) is required to run this example. - -## Executing from Jupyter Notebook - -```{toctree} -:maxdepth: 4 - -../../notebooks/tutorials/04_mis_tutorial.ipynb -``` - - - -```{raw} html -
- -
-``` - -```{raw} html -

- - Download 04_mis_tutorial.ipynb - -

-``` diff --git a/docs/source/getting_started/tutorials/05_full_tutorial.md b/docs/source/getting_started/tutorials/05_full_tutorial.md deleted file mode 100644 index 46588e52..00000000 --- a/docs/source/getting_started/tutorials/05_full_tutorial.md +++ /dev/null @@ -1,33 +0,0 @@ -# 5) Building and deploying Segmentation app with MONAI Inference Service (MIS) - -## Setup - -The environment from the previous section (**Creating a Segmentation app**) is required to run this example. - -## Executing from Jupyter Notebook - -```{toctree} -:maxdepth: 4 - -../../notebooks/tutorials/05_full_tutorial.ipynb -``` - - - -```{raw} html -
- -
-``` - -```{raw} html -

- - Download 05_full_tutorial.ipynb - -

-``` diff --git a/docs/source/getting_started/tutorials/index.md b/docs/source/getting_started/tutorials/index.md index 2077b140..8617759b 100644 --- a/docs/source/getting_started/tutorials/index.md +++ b/docs/source/getting_started/tutorials/index.md @@ -4,10 +4,9 @@ :glob: :maxdepth: 2 -01_simple_app -02_mednist_app -03_segmentation_app -04_mis_tutorial -05_full_tutorial -06_monai_bundle_app +simple_app +mednist_app +monai_bundle_app +segmentation_app +segmentation_clara-viz_app ``` diff --git a/docs/source/getting_started/tutorials/02_mednist_app.md b/docs/source/getting_started/tutorials/mednist_app.md similarity index 91% rename from docs/source/getting_started/tutorials/02_mednist_app.md rename to docs/source/getting_started/tutorials/mednist_app.md index 6363e145..539d98fe 100644 --- a/docs/source/getting_started/tutorials/02_mednist_app.md +++ b/docs/source/getting_started/tutorials/mednist_app.md @@ -1,4 +1,6 @@ -# 2) Creating MedNIST Classifier app +# Creating MedNIST Classifier App + +This tutorial demos the process of packaging up a trained model using MONAI Deploy App SDK into an artifact which can be run as a local program performing inference, a workflow job doing the same, and a Docker containerized workflow execution. ## Setup diff --git a/docs/source/getting_started/tutorials/06_monai_bundle_app.md b/docs/source/getting_started/tutorials/monai_bundle_app.md similarity index 76% rename from docs/source/getting_started/tutorials/06_monai_bundle_app.md rename to docs/source/getting_started/tutorials/monai_bundle_app.md index dce533f5..bc47b1b5 100644 --- a/docs/source/getting_started/tutorials/06_monai_bundle_app.md +++ b/docs/source/getting_started/tutorials/monai_bundle_app.md @@ -1,4 +1,6 @@ -# 6) Creating a Segmentation app consuming a MONAI Bundle +# Creating a Segmentation App Consuming a MONAI Bundle + +This tutorial shows how to create an organ segmentation application for a PyTorch model that has been trained with MONAI and packaged in the [MONAI Bundle](https://docs.monai.io/en/latest/bundle_intro.html) format. ## Setup @@ -39,20 +41,20 @@ git clone --branch main --depth 1 https://github.com/Project-MONAI/monai-deploy- cd monai-deploy-app-sdk # Install monai-deploy-app-sdk package -pip install monai-deploy-app-sdk +pip install --upgrade monai-deploy-app-sdk # Download/Extract ai_spleen_bundle_data zip file from https://drive.google.com/file/d/1cJq0iQh_yzYIxVElSlVa141aEmHZADJh/view?usp=sharing -# Download ai_spleen_bundle_data.zip +# Download the zip file containing both the model and test data pip install gdown -gdown https://drive.google.com/uc?id=1cJq0iQh_yzYIxVElSlVa141aEmHZADJh +gdown https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ -# After downloading ai_spleen_bundle_data.zip from the web browser or using gdown, -unzip -o ai_spleen_bundle_data.zip +# After downloading it using gdown, unzip the zip file saved by gdown +unzip -o ai_spleen_seg_bundle_data.zip # Install necessary packages from the app; note that numpy-stl and trimesh are only # needed if the application uses the STL Conversion Operator -pip install monai pydicom SimpleITK Pillow nibabel scikit-image numpy-stl trimesh +pip install monai torch pydicom highdicom SimpleITK Pillow nibabel scikit-image numpy-stl trimesh # Local execution of the app directly or using MONAI Deploy CLI python examples/apps/ai_spleen_seg_app/app.py -i dcm/ -o output -m model.ts diff --git a/docs/source/getting_started/tutorials/03_segmentation_app.md b/docs/source/getting_started/tutorials/segmentation_app.md similarity index 77% rename from docs/source/getting_started/tutorials/03_segmentation_app.md rename to docs/source/getting_started/tutorials/segmentation_app.md index 4e7f5a1f..2905729d 100644 --- a/docs/source/getting_started/tutorials/03_segmentation_app.md +++ b/docs/source/getting_started/tutorials/segmentation_app.md @@ -1,4 +1,6 @@ -# 3) Creating a Segmentation app +# Creating a Segmentation App + +This tutorial shows how to create an organ segmentation application for a PyTorch model that has been trained with MONAI. Please note that the example code used in the Jupyter Notebook is based on an earlier version of the segmentation application, i.e., not using MONAI Bundle Inference Operator, and the code is not necessarily the same as the latest source code on Github. ## Setup @@ -15,7 +17,7 @@ jupyter-lab ``` ## Executing from Jupyter Notebook -Please note that the example code used in the Jupyter Notebook is based on an earlier version of the segmentation application, hence not the same as the latest source code on Github, e.g. not using MONAI Bundle inference operator. + ```{toctree} :maxdepth: 4 @@ -51,20 +53,20 @@ git clone --branch main --depth 1 https://github.com/Project-MONAI/monai-deploy- cd monai-deploy-app-sdk # Install monai-deploy-app-sdk package -pip install monai-deploy-app-sdk +pip install --upgrade monai-deploy-app-sdk # Download/Extract ai_spleen_bundle_data zip file from https://drive.google.com/file/d/1cJq0iQh_yzYIxVElSlVa141aEmHZADJh/view?usp=sharing -# Download ai_spleen_bundle_data.zip +# Download the zip file containing both the model and test data pip install gdown -gdown https://drive.google.com/uc?id=1cJq0iQh_yzYIxVElSlVa141aEmHZADJh +gdown https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ -# After downloading ai_spleen_bundle_data.zip from the web browser or using gdown, -unzip -o ai_spleen_bundle_data.zip +# After downloading it using gdown, unzip the zip file saved by gdown +unzip -o ai_spleen_seg_bundle_data.zip # Install necessary packages from the app; note that numpy-stl and trimesh are only # needed if the application uses the STL Conversion Operator -pip install monai pydicom SimpleITK Pillow nibabel scikit-image numpy-stl trimesh +pip install monai pydicom highdicom SimpleITK Pillow nibabel scikit-image numpy-stl trimesh # Local execution of the app python examples/apps/ai_spleen_seg_app/app.py -i dcm/ -o output -m model.ts diff --git a/docs/source/getting_started/tutorials/segmentation_clara-viz_app.md b/docs/source/getting_started/tutorials/segmentation_clara-viz_app.md new file mode 100644 index 00000000..744fdb00 --- /dev/null +++ b/docs/source/getting_started/tutorials/segmentation_clara-viz_app.md @@ -0,0 +1,33 @@ +# Creating a Segmentation App Including Including Visualization with Clara-Viz + +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. + +## Setup + +```bash +# Create a virtual environment with Python 3.7. +# Skip if you are already in a virtual environment. +# (JupyterLab dropped its support for Python 3.6 since 2021-12-23. +# See https://github.com/jupyterlab/jupyterlab/pull/11740) +conda create -n monai python=3.7 pytorch torchvision jupyterlab cudatoolkit=11.1 -c pytorch -c conda-forge +conda activate monai + +# Launch JupyterLab if you want to work on Jupyter Notebook +jupyter-lab +``` + +## Executing from Jupyter Notebook + +```{toctree} +:maxdepth: 4 + +../../notebooks/tutorials/03_segmentation_viz_app.ipynb +``` + +```{raw} html +

+ + Download 03_segmentation_viz_app.ipynb + +

+``` \ No newline at end of file diff --git a/docs/source/getting_started/tutorials/01_simple_app.md b/docs/source/getting_started/tutorials/simple_app.md similarity index 93% rename from docs/source/getting_started/tutorials/01_simple_app.md rename to docs/source/getting_started/tutorials/simple_app.md index 02217d42..849a0b2a 100644 --- a/docs/source/getting_started/tutorials/01_simple_app.md +++ b/docs/source/getting_started/tutorials/simple_app.md @@ -1,4 +1,6 @@ -# 1) Creating a simple image processing app +# Creating a simple image processing app + +This tutorial shows how to develop a simple image processing application can be created with MONAI Deploy App SDK. ## Setup diff --git a/docs/source/introduction/overview.md b/docs/source/introduction/overview.md index df777173..90900fdd 100644 --- a/docs/source/introduction/overview.md +++ b/docs/source/introduction/overview.md @@ -9,3 +9,17 @@ It contains the following elements: - A mechanism to locally run a MAP via App Runner - A set of sample applications - API documentation + +To further accelerate the development of medical imaging AI inference application with DICOM imaging network integration, a set of domain specific functionalities are provided by this Application SDK, +- generic application classes to automate the inference with MONAI Bundle +- DICOM study parsing and selection classes, as well as DICOM instance to volume image conversion +- DICOM instance writers to encapsulate AI inference results in these DICOM OID, + - DICOM Segmentation + - DICOM Basic Text Structured Report + - DICOM Encapsulated PDF + - more are coming + +:::{note} +- The software and the imaging AI results generated are for research use only, and per applicable laws and regulations, are not for clinical use. +- The App SDK, and specifically the DICOM instance writers, rely upon the underlying operating system to provide accurate and consistent time, though have no direct control over how the OS performs time synchronization, e.g. NTP on Ubuntu. For creation of DICOM or HL7 objects that use time, the built-in classes do, and it would also be incumbent on the developer to appropriately use the available system time service and reflect the correct time in those objects properly. Additionally, the DICOM instance generated by the App SDK built-in classes set the Timezone Offset From UTC with the underlying operating system's timezone setting. +::: \ No newline at end of file diff --git a/docs/source/introduction/roadmap.md b/docs/source/introduction/roadmap.md index 3637cc69..fc93da03 100644 --- a/docs/source/introduction/roadmap.md +++ b/docs/source/introduction/roadmap.md @@ -1,5 +1,5 @@ # Roadmap -The first version of the MONAI Deploy App SDK offers a core framework to build & package healthcare AI apps so that they can be deployed to a production environment +The first versions of the MONAI Deploy App SDK offer a core framework to build & package healthcare AI apps so that they can be deployed to a production environment. -We are currently in the process of creating a roadmap for the product based on the community’s input. +We are currently in the process of refining the roadmap for the product based on the community’s input, though it is clear that on the roadmap are more built-in DICOM parsing and DICOM OID generation capabilities to better support IHE AIR profiles, as well as serving model network in a separate process. diff --git a/docs/source/release_notes/index.md b/docs/source/release_notes/index.md index 9e77fb72..f24793da 100644 --- a/docs/source/release_notes/index.md +++ b/docs/source/release_notes/index.md @@ -4,6 +4,13 @@ :hidden: :maxdepth: 2 +``` +## Version 0.5 + +```{toctree} +:maxdepth: 1 + +v0.5.0 ``` ## Version 0.4 diff --git a/docs/source/release_notes/v0.5.0.md b/docs/source/release_notes/v0.5.0.md new file mode 100644 index 00000000..32ac5af3 --- /dev/null +++ b/docs/source/release_notes/v0.5.0.md @@ -0,0 +1,27 @@ +# Version 0.5.0 + +## What's new in 0.5.0 +- App SDK is now compatible with MONAI v0.9.1 and later +- DICOM Encapsulated PDF Writer. This built-in operator provides a simple and easy way to encapsulate PDF contents in a DICOM instance with or without referenced original DICOM instance(s) +- DICOM Segmentation Writer with highdicom back end. This improves the description of segments with proper DICOM coding sequence(s) +- Generated DICOM instances as AI evidence now have the attribute (0008,0201) Timezone Offset From UTC, in addition to the DICOM date and time which are set with values from the underlying operating system. The OS is expected to be synchronized with a known good timing source and have the correct timezone setting +- Generated DICOM instance file names are now based on the SOP instance UID +- Support DICOM instance level attribute matching in the DICOM Series Selection Operator +- Operators and example applications are verified to be re-runable without needing to reinitialize the application object or re-load the AI model network. This will allow a main function or an external script to instantiate the application object once and use it to process multiple discreet inputs, either in a batch processing mode or in a long running service +- Tutorials, in Jupyter notebooks, are re-organized and updated +- Reference added for MONAI Deploy Express for hosting MAPs in development environments +- Removed is the reference to the deprecated MONAI Inference Service + +## What's fixed/updated + +Please see the closed issues on Github and the closed pull requests on Github. + +## Known Issues +The example MedNIST Classifier application works but its MAP container image may fail to run. + +## Additional information +Please visit [GETTING STARTED](/getting_started/index) guide and follow the tutorials. + +You can learn more about SDK usage through [DEVELOPING WITH SDK](/developing_with_sdk/index). + +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) \ No newline at end of file diff --git a/examples/apps/lung_seg_cv_app/__init__.py b/examples/apps/lung_seg_cv_app/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/monai/deploy/core/domain/image.py b/monai/deploy/core/domain/image.py index abc24af7..33851b52 100644 --- a/monai/deploy/core/domain/image.py +++ b/monai/deploy/core/domain/image.py @@ -22,7 +22,25 @@ class Image(Domain): + """_summary_ + + Args: + Domain (_type_): _description_ + """ + def __init__(self, data: Union[ArrayLike], metadata: Optional[Dict] = None): + """This class encapsulates array-lile object along with its associated metadata dictionary. + + It is designed to represent an image object, without constraining the specific format of its data. Derived + classes should be created for more specific type of images. + The default implementation assumes the internal data object is a ndarray, and the metadata dictionary + is expected to hold the key attributes associated with the original image, e.g., for image converted + from DICOM instances, the pixel spacings, image orientation patient, etc. + + Args: + data (Union[ArrayLike]): Numpy Array object. + metadata (Optional[Dict], optional): A dictionary of the object's metadata. Defaults to None. + """ super().__init__(metadata) self._data = data diff --git a/monai/deploy/operators/__init__.py b/monai/deploy/operators/__init__.py index c9dce3a4..11c16caa 100644 --- a/monai/deploy/operators/__init__.py +++ b/monai/deploy/operators/__init__.py @@ -15,6 +15,7 @@ BundleConfigNames ClaraVizOperator DICOMDataLoaderOperator + DICOMEncapsulatedPDFWriterOperator DICOMSegmentationWriterOperator DICOMSeriesSelectorOperator DICOMSeriesToVolumeOperator @@ -33,6 +34,7 @@ from .clara_viz_operator import ClaraVizOperator from .dicom_data_loader_operator import DICOMDataLoaderOperator +from .dicom_encapsulated_pdf_writer_operator import DICOMEncapsulatedPDFWriterOperator from .dicom_seg_writer_operator import DICOMSegmentationWriterOperator from .dicom_series_selector_operator import DICOMSeriesSelectorOperator from .dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator diff --git a/monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py b/monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py index 9ef96b62..ddafac65 100644 --- a/monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py +++ b/monai/deploy/operators/dicom_encapsulated_pdf_writer_operator.py @@ -15,8 +15,6 @@ from pathlib import Path from typing import Dict, List, Optional -from PyPDF2 import PdfReader - from monai.deploy.utils.importutil import optional_import dcmread, _ = optional_import("pydicom", name="dcmread") @@ -26,6 +24,7 @@ Dataset, _ = optional_import("pydicom.dataset", name="Dataset") FileDataset, _ = optional_import("pydicom.dataset", name="FileDataset") Sequence, _ = optional_import("pydicom.sequence", name="Sequence") +PdfReader, _ = optional_import("PyPDF2", name="PdfReader") import monai.deploy.core as md from monai.deploy.core import DataPath, ExecutionContext, InputContext, IOType, Operator, OutputContext @@ -41,7 +40,7 @@ @md.input("pdf_file", DataPath, IOType.DISK) @md.input("study_selected_series_list", List[StudySelectedSeries], IOType.IN_MEMORY) @md.output("dicom_instance", DataPath, IOType.DISK) -@md.env(pip_packages=["pydicom >= 1.4.2", "PyPDF2 >= 2.11.1"]) +@md.env(pip_packages=["pydicom >= 1.4.2", "PyPDF2 >= 2.11.1", "monai"]) class DICOMEncapsulatedPDFWriterOperator(Operator): DCM_EXTENSION = ".dcm" diff --git a/monai/deploy/operators/dicom_text_sr_writer_operator.py b/monai/deploy/operators/dicom_text_sr_writer_operator.py index 43d115da..422a2770 100644 --- a/monai/deploy/operators/dicom_text_sr_writer_operator.py +++ b/monai/deploy/operators/dicom_text_sr_writer_operator.py @@ -37,7 +37,7 @@ @md.input("classification_result_file", DataPath, IOType.DISK) @md.input("study_selected_series_list", List[StudySelectedSeries], IOType.IN_MEMORY) @md.output("dicom_instance", DataPath, IOType.DISK) -@md.env(pip_packages=["pydicom >= 1.4.2"]) +@md.env(pip_packages=["pydicom >= 1.4.2", "monai"]) class DICOMTextSRWriterOperator(Operator): # File extension for the generated DICOM Part 10 file. diff --git a/notebooks/tutorials/01_simple_app.ipynb b/notebooks/tutorials/01_simple_app.ipynb index 5854aa4b..75535ce9 100644 --- a/notebooks/tutorials/01_simple_app.ipynb +++ b/notebooks/tutorials/01_simple_app.ipynb @@ -91,7 +91,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -100,14 +100,12 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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9IlPfMJJpVLOD3/4w4rtCouLi6rMxz/+cWfbtm3O97//feenP/2pc+jQIefQoUPqe25XuP/++52jR4863/3ud53u7u5ratvH5z//eefZZ591hoeHnVdeecX5/Oc/70QiEed73/ue4zjhGNYCGQXtOOFY2uKzn/2s88Mf/tAZHh52fvSjHzmHDx92urq6nMnJScdxLt84bjoCdhzH+fu//3tn27ZtTnNzs3PnnXc6zz///EZ36YrCD37wAwfART8f+chHHMc5vxXpT/7kT5ze3l6npaXFec973uMcP368oo7p6Wnn4Ycfdtra2pxkMul89KMfdYrF4gbczcbBNIYAnK985SuqTKlUcn7nd37HyWQyTmtrq/PBD37QGR8fr6jn7bffdh588EEnHo87XV1dzmc/+1lnZWXlMt/NxuE3f/M3naGhIae5udnp7u523vOe9yjydZxwDGuBTsDhWNrhwx/+sNPf3+80Nzc7W7ZscT784Q87J0+eVN9frnEMzwMOESJEiBAhNgCbygccIkSIECFCXC0ICThEiBAhQoTYAIQEHCJEiBAhQmwAQgIOESJEiBAhNgAhAYcIESJEiBAbgJCAQ4QIESJEiA1ASMAhQoQIESLEBiAk4BAhQoQIEWIDEBJwiBAhQoQIsQEICThEiBAhQoTYAIQEHCJEiBAhQmwA/h98RZkJ0aXveQAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -376,19 +374,20 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator SobelOperator\u001b[39m\n", - "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 25247, Operator ID: 0214f705-4b02-4f96-a460-6bd6dc6a9842)\u001b[39m\n", + "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 982168, Operator ID: 17f08a58-3988-4c98-9cf9-9d827eb283b7)\u001b[39m\n", "\u001b[34mDone performing execution of operator SobelOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MedianOperator\u001b[39m\n", - "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 25247, Operator ID: f10e106b-f554-41e2-a1b8-5f4dc2b1fabd)\u001b[39m\n" + "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 982168, Operator ID: 72c7a0ad-3a47-47fb-896c-18486e79b182)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", - "[2021-09-20 15:42:44,506] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n" + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/skimage/_shared/utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", + " return func(*args, **kwargs)\n", + "[2022-10-18 17:29:31,196] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n" ] }, { @@ -398,7 +397,7 @@ "\u001b[34mDone performing execution of operator MedianOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\n", - "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 25247, Operator ID: 439747dd-7b9c-43a8-a1c3-725cfead7de5)\u001b[39m\n", + "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 982168, Operator ID: b07b4eb2-2194-480f-828f-b34080e1a91d)\u001b[39m\n", "\u001b[34mDone performing execution of operator GaussianOperator\n", "\u001b[39m\n" ] @@ -417,7 +416,40 @@ "name": "stdout", "output_type": "stream", "text": [ - "final_output.png output.json\n" + "1.2.826.0.1.3680043.10.511.3.10195035642003860413057936982968723.dcm\n", + "1.2.826.0.1.3680043.10.511.3.10697584562685878853363496613905022.dcm\n", + "1.2.826.0.1.3680043.10.511.3.11007185683656203101622184429425124.dcm\n", + "1.2.826.0.1.3680043.10.511.3.11010764142907798817891854085040824.dcm\n", + "1.2.826.0.1.3680043.10.511.3.11619418586545827859010837278006939.dcm\n", + "1.2.826.0.1.3680043.10.511.3.11690041677421435338444238047096628.dcm\n", + "1.2.826.0.1.3680043.10.511.3.11766242804993128636390418603798576.dcm\n", + "1.2.826.0.1.3680043.10.511.3.12038210552683396113759169001251030.dcm\n", + "1.2.826.0.1.3680043.10.511.3.12194673301371710294708887115321840.dcm\n", + "1.2.826.0.1.3680043.10.511.3.12839953903115687811576743419329745.dcm\n", + "1.2.826.0.1.3680043.10.511.3.19954741813431048648918533230571869.dcm\n", + "1.2.826.0.1.3680043.10.511.3.28115597778269862176555674040553881.dcm\n", + "1.2.826.0.1.3680043.10.511.3.44487290837312664283259666820005457.dcm\n", + "1.2.826.0.1.3680043.10.511.3.45596709770136744924389849060252151.dcm\n", + "1.2.826.0.1.3680043.10.511.3.48053436239690093700485303833643842.dcm\n", + "1.2.826.0.1.3680043.10.511.3.50450656018567836855649222204213673.dcm\n", + "1.2.826.0.1.3680043.10.511.3.56443338884049557610021781979169198.dcm\n", + "1.2.826.0.1.3680043.10.511.3.62905264636861078355087938407260399.dcm\n", + "1.2.826.0.1.3680043.10.511.3.63518052505348964835943999985193771.dcm\n", + "1.2.826.0.1.3680043.10.511.3.63718222025542372977124930426912191.dcm\n", + "1.2.826.0.1.3680043.10.511.3.66031544317130698088559963332931309.dcm\n", + "1.2.826.0.1.3680043.10.511.3.66050173813682677299415741521954338.dcm\n", + "1.2.826.0.1.3680043.10.511.3.68149507415808990964307203550287864.dcm\n", + "1.2.826.0.1.3680043.10.511.3.75511961623701605158799300926480961.dcm\n", + "1.2.826.0.1.3680043.10.511.3.82849670307523903379368674519966835.dcm\n", + "1.2.826.0.1.3680043.10.511.3.84658241622586336538727133572766827.dcm\n", + "1.2.826.0.1.3680043.10.511.3.85114306985515069483865702271375697.dcm\n", + "1.2.826.0.1.3680043.10.511.3.85565902926765146391303452285820969.dcm\n", + "1.2.826.0.1.3680043.10.511.3.86751253737736980135752555204124863.dcm\n", + "1.2.826.0.1.3680043.10.511.3.94432351620392403645555377570642324.dcm\n", + "1.2.826.0.1.3680043.10.511.3.98283821667334470130741553845107039.dcm\n", + "final_output.png\n", + "output.json\n", + "prediction_output\n" ] } ], @@ -433,7 +465,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 11, @@ -442,14 +474,12 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -719,8 +749,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "__main__.py app.py\t\t median_operator.py\n", - "__pycache__ gaussian_operator.py sobel_operator.py\n" + "app.py\t\t __main__.py\t __pycache__\n", + "gaussian_operator.py median_operator.py sobel_operator.py\n" ] } ], @@ -745,17 +775,18 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator SobelOperator\u001b[39m\n", - "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 25403, Operator ID: e807eda9-a946-4a38-a23e-494277d18142)\u001b[39m\n", + "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 982716, Operator ID: a69f7049-06ff-4d92-bab5-50a3bf545616)\u001b[39m\n", "\u001b[34mDone performing execution of operator SobelOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MedianOperator\u001b[39m\n", - "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 25403, Operator ID: f97c5ed5-c439-470a-a953-89e1d0991dc9)\u001b[39m\n", + "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 982716, Operator ID: a2a5878a-2279-4a9d-9f25-22d62ea368c9)\u001b[39m\n", "\u001b[34mDone performing execution of operator MedianOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\n", - "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 25403, Operator ID: d9556676-8298-4eee-ac14-f15d1a488b15)\u001b[39m\n", - "Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", - "[2021-09-20 15:42:49,192] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n", + "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 982716, Operator ID: 0f9c879e-8124-44fe-8a8f-943c96efc8d2)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/skimage/_shared/utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", + " return func(*args, **kwargs)\n", + "[2022-10-18 17:29:37,907] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n", "\u001b[34mDone performing execution of operator GaussianOperator\n", "\u001b[39m\n" ] @@ -782,17 +813,18 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator SobelOperator\u001b[39m\n", - "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 25511, Operator ID: 80e08212-66e2-4637-b0d9-1a3da51941c3)\u001b[39m\n", + "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 982757, Operator ID: bc876ff4-9349-4805-9500-a4a0f79326c6)\u001b[39m\n", "\u001b[34mDone performing execution of operator SobelOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MedianOperator\u001b[39m\n", - "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 25511, Operator ID: 08081ad2-a96f-4b05-9120-31474bb20933)\u001b[39m\n", + "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 982757, Operator ID: a0109f55-1d2b-45ae-bf41-e97c1b100574)\u001b[39m\n", "\u001b[34mDone performing execution of operator MedianOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\n", - "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 25511, Operator ID: d63175c6-cdf8-4e45-8816-6c058c8b1d20)\u001b[39m\n", - "Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", - "[2021-09-20 15:42:53,589] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n", + "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 982757, Operator ID: 42ab046c-f81b-446e-a130-f126650f3770)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/skimage/_shared/utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", + " return func(*args, **kwargs)\n", + "[2022-10-18 17:29:42,717] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n", "\u001b[34mDone performing execution of operator GaussianOperator\n", "\u001b[39m\n" ] @@ -810,7 +842,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 21, @@ -819,14 +851,12 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -859,7 +889,7 @@ "output_type": "stream", "text": [ "Building MONAI Application Package... Done\n", - "[2021-09-20 15:45:05,735] [INFO] (app_packager) - Successfully built simple_app:latest\n" + "[2022-10-18 17:32:36,953] [INFO] (app_packager) - Successfully built simple_app:latest\n" ] } ], @@ -888,7 +918,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "simple_app latest f0e23439921a 2 seconds ago 15.3GB\n" + "simple_app latest 2b8fbb1eec36 4 seconds ago 15.6GB\n" ] } ], @@ -923,21 +953,20 @@ "\"simple_app:latest\" found.\n", "\n", "Reading MONAI App Package manifest...\n", - " > export '/var/run/monai/export/' detected\n", "\u001b[34mGoing to initiate execution of operator SobelOperator\u001b[39m\n", - "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 1, Operator ID: 02b420fe-cbe4-4d79-a7a8-55c3efef984f)\u001b[39m\n", - "[2021-09-20 22:45:15,969] [INFO] (matplotlib.font_manager) - generated new fontManager\n", + "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 1, Operator ID: 4be86b2a-0f0e-44b4-bcb5-6d49b04a7bd2)\u001b[39m\n", + "[2022-10-19 00:32:50,281] [INFO] (matplotlib.font_manager) - generated new fontManager\n", "\u001b[34mDone performing execution of operator SobelOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MedianOperator\u001b[39m\n", - "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 1, Operator ID: 98982612-eebd-4a93-b0b0-0f4694966b1e)\u001b[39m\n", + "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 1, Operator ID: a92fe3dd-1848-4f56-a0f1-c744863aba9f)\u001b[39m\n", "\u001b[34mDone performing execution of operator MedianOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\n", - "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 1, Operator ID: 5fe7ec51-153e-434e-bd57-631f7c5fe1a4)\u001b[39m\n", - "/opt/monai/app/gaussian_operator.py:22: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", - " data_out = gaussian(data_in, sigma=0.2)\n", - "[2021-09-20 22:45:16,221] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n", + "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 1, Operator ID: 61ba09a4-2af4-45af-95de-50545f8d7b90)\u001b[39m\n", + "/root/.local/lib/python3.8/site-packages/skimage/_shared/utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", + " return func(*args, **kwargs)\n", + "[2022-10-19 00:32:50,737] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n", "\u001b[34mDone performing execution of operator GaussianOperator\n", "\u001b[39m\n" ] @@ -960,7 +989,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 25, @@ -969,14 +998,12 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -988,7 +1015,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3.8.10 ('.venv': venv)", "language": "python", "name": "python3" }, @@ -1002,7 +1029,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.13" + "version": "3.8.10" + }, + "vscode": { + "interpreter": { + "hash": "9b4ab1155d0cd1042497eb40fd55b2d15caf4b3c0f9fbfcc7ba4404045d40f12" + } } }, "nbformat": 4, diff --git a/notebooks/tutorials/03_segmentation_app.ipynb b/notebooks/tutorials/03_segmentation_app.ipynb index 532d37b6..7a1b6a44 100644 --- a/notebooks/tutorials/03_segmentation_app.ipynb +++ b/notebooks/tutorials/03_segmentation_app.ipynb @@ -102,6 +102,7 @@ "!python -c \"import numpy\" || pip install -q \"numpy>=1.21\"\n", "!python -c \"import nibabel\" || pip install -q \"nibabel>=3.2.1\"\n", "!python -c \"import pydicom\" || pip install -q \"pydicom>=1.4.2\"\n", + "!python -c \"import highdicom\" || pip install -q \"highdicom>=0.18.2\"\n", "!python -c \"import SimpleITK\" || pip install -q \"SimpleITK>=2.0.0\"\n", "!python -c \"import typeguard\" || pip install -q \"typeguard>=2.12.1\"\n", "\n", @@ -134,20 +135,20 @@ "text": [ "Requirement already satisfied: gdown in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (4.5.1)\n", "Requirement already satisfied: six in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (1.16.0)\n", - "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", - "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", + "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", + "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", "Requirement already satisfied: soupsieve>1.2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from beautifulsoup4->gdown) (2.3.2.post1)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.26.12)\n", - "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", "Requirement already satisfied: idna<4,>=2.5 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (3.3)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.7.1)\n", "Downloading...\n", "From: https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\n", "To: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_seg_bundle_data.zip\n", - "100%|███████████████████████████████████████| 79.4M/79.4M [00:00<00:00, 110MB/s]\n", + "100%|██████████████████████████████████████| 79.4M/79.4M [00:01<00:00, 65.5MB/s]\n", "Archive: ai_spleen_seg_bundle_data.zip\n", " inflating: dcm/1-001.dcm \n", " inflating: dcm/1-002.dcm \n", @@ -664,45 +665,45 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 587978, Operator ID: d7487fdf-932a-4804-a9a4-f70a4abdd17f)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1019435, Operator ID: 89c54ae4-ecee-4226-b209-149cefcdffec)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2022-10-11 21:26:54,414] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 21:26:54,417] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "[2022-10-18 17:58:39,522] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 17:58:39,523] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-11 21:26:54,418] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 21:26:54,418] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:26:54,419] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-11 21:26:54,420] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:26:54,421] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 21:26:54,421] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 21:26:54,424] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:26:54,425] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:26:54,428] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-11 21:26:54,429] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:26:54,430] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-11 21:26:54,431] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-11 21:26:54,432] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 21:26:54,433] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 21:26:54,433] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-18 17:58:39,523] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 17:58:39,524] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:58:39,525] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-18 17:58:39,526] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:58:39,527] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 17:58:39,530] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 17:58:39,531] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:58:39,532] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:58:39,532] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-18 17:58:39,533] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:58:39,533] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 17:58:39,534] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 17:58:39,535] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 17:58:39,536] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 17:58:39,536] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2022-10-11 21:26:54,441] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-11 21:26:54,442] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:26:54,443] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-11 21:26:54,444] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:26:54,444] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 21:26:54,445] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 21:26:54,445] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:26:54,446] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:26:54,447] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-11 21:26:54,448] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:26:54,449] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-11 21:26:54,449] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-11 21:26:54,450] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" + "[2022-10-18 17:58:39,537] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 17:58:39,538] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:58:39,538] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-18 17:58:39,539] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:58:39,539] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 17:58:39,540] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 17:58:39,541] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:58:39,541] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:58:39,542] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-18 17:58:39,542] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:58:39,543] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 17:58:39,544] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 17:58:39,544] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" ] }, { @@ -712,15 +713,15 @@ "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 587978, Operator ID: dcb76118-2339-48ad-8c0c-12baa847b8af)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1019435, Operator ID: 119fc15c-258f-48e8-b963-9425de0df7a8)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 587978, Operator ID: 8861558d-c466-4dca-aabb-080299a48195)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1019435, Operator ID: c0b16856-6c62-4edb-ba2d-82de7ae3dc7b)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 587978, Operator ID: cc45134f-6779-4a9f-b1d4-0ded8ed41019)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1019435, Operator ID: 660a1854-11b8-48a6-bf38-5072a3815213)\u001b[39m\n", "Converted Image object metadata:\n", "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", "SeriesDate: 20090831, type \n", @@ -750,13 +751,13 @@ "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "2022-10-11 21:27:09,274 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "2022-10-18 17:58:53,479 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 587978, Operator ID: 901ed820-097b-43d8-9c87-bde9deabfaaa)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1019435, Operator ID: bae7d05c-d71a-4415-836b-a94202ae6c5b)\u001b[39m\n" ] }, { @@ -765,103 +766,104 @@ "text": [ "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", " warnings.warn(\n", - "[2022-10-11 21:27:13,561] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-11 21:27:13,564] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-11 21:27:13,567] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-11 21:27:13,570] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-11 21:27:13,572] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-11 21:27:13,575] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-11 21:27:13,579] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-11 21:27:13,581] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-11 21:27:13,585] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-11 21:27:13,588] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-11 21:27:13,591] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-11 21:27:13,594] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-11 21:27:13,598] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-11 21:27:13,600] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-11 21:27:13,602] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-11 21:27:13,603] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-11 21:27:13,605] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-11 21:27:13,610] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-11 21:27:13,614] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-11 21:27:13,621] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-11 21:27:13,623] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-11 21:27:13,626] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-11 21:27:13,629] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-11 21:27:13,632] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-11 21:27:13,638] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-11 21:27:13,641] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-11 21:27:13,646] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-11 21:27:13,650] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-11 21:27:13,653] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-11 21:27:13,655] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-11 21:27:13,658] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-11 21:27:13,661] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-11 21:27:13,665] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-11 21:27:13,668] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-11 21:27:13,671] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-11 21:27:13,674] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-11 21:27:13,678] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-11 21:27:13,684] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-11 21:27:13,686] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-11 21:27:13,689] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-11 21:27:13,693] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-11 21:27:13,695] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-11 21:27:13,697] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-11 21:27:13,699] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-11 21:27:13,703] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-11 21:27:13,706] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-11 21:27:13,708] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-11 21:27:13,712] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-11 21:27:13,716] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-11 21:27:13,718] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-11 21:27:13,721] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-11 21:27:13,723] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-11 21:27:13,726] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-11 21:27:13,729] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-11 21:27:13,732] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-11 21:27:13,735] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-11 21:27:13,738] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-11 21:27:13,741] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-11 21:27:13,744] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-11 21:27:13,748] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-11 21:27:13,751] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-11 21:27:13,754] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-11 21:27:13,758] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-11 21:27:13,762] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-11 21:27:13,767] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-11 21:27:13,770] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-11 21:27:13,773] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-11 21:27:13,776] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-11 21:27:13,779] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-11 21:27:13,782] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-11 21:27:13,785] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-11 21:27:13,787] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-11 21:27:13,789] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-11 21:27:13,792] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-11 21:27:13,798] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-11 21:27:13,801] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-11 21:27:13,804] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-11 21:27:13,808] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-11 21:27:13,811] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-11 21:27:13,816] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-11 21:27:13,820] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-11 21:27:13,823] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-11 21:27:13,826] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-11 21:27:13,830] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-11 21:27:13,834] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-11 21:27:13,836] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-11 21:27:13,840] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-11 21:27:13,844] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-11 21:27:13,903] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 21:27:13,904] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-11 21:27:13,905] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 21:27:13,906] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-11 21:27:13,907] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-11 21:27:13,907] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 21:27:13,908] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-11 21:27:13,909] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-11 21:27:13,910] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n" + "[2022-10-18 17:58:57,104] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 17:58:57,107] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 17:58:57,110] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 17:58:57,112] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 17:58:57,115] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 17:58:57,117] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 17:58:57,120] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 17:58:57,123] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 17:58:57,125] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 17:58:57,128] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 17:58:57,130] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 17:58:57,133] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 17:58:57,136] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 17:58:57,139] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 17:58:57,142] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 17:58:57,145] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 17:58:57,148] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 17:58:57,151] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 17:58:57,153] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 17:58:57,156] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 17:58:57,158] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 17:58:57,161] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 17:58:57,164] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 17:58:57,166] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 17:58:57,169] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 17:58:57,171] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 17:58:57,174] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 17:58:57,178] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 17:58:57,181] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 17:58:57,183] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 17:58:57,186] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 17:58:57,191] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 17:58:57,194] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 17:58:57,198] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 17:58:57,201] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 17:58:57,204] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 17:58:57,207] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 17:58:57,211] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 17:58:57,214] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 17:58:57,217] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 17:58:57,220] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 17:58:57,224] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 17:58:57,227] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 17:58:57,230] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 17:58:57,233] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 17:58:57,236] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 17:58:57,239] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 17:58:57,242] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 17:58:57,245] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 17:58:57,249] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 17:58:57,252] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 17:58:57,255] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 17:58:57,259] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 17:58:57,263] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 17:58:57,268] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 17:58:57,272] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 17:58:57,276] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 17:58:57,279] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 17:58:57,287] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 17:58:57,293] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 17:58:57,296] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 17:58:57,299] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 17:58:57,302] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 17:58:57,304] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 17:58:57,307] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 17:58:57,311] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 17:58:57,314] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 17:58:57,317] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 17:58:57,320] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 17:58:57,324] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 17:58:57,329] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 17:58:57,333] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 17:58:57,337] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 17:58:57,341] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 17:58:57,344] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 17:58:57,348] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 17:58:57,351] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 17:58:57,354] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 17:58:57,357] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 17:58:57,360] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 17:58:57,363] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 17:58:57,367] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 17:58:57,370] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 17:58:57,374] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 17:58:57,376] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 17:58:57,379] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 17:58:57,382] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 17:58:57,385] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 17:58:57,433] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 17:58:57,434] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 17:58:57,435] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 17:58:57,436] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 17:58:57,437] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 17:58:57,437] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 17:58:57,438] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 17:58:57,438] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 17:58:57,439] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 17:58:57,455] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n" ] }, { @@ -1247,51 +1249,51 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 588223, Operator ID: 7c2124ec-d374-4c4d-b7e8-60e94d880972)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1019704, Operator ID: c48f1ee6-bae2-47be-be45-2399634d4398)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 588223, Operator ID: a8f9c6a9-01bc-43ab-98fa-857ea9408e4f)\u001b[39m\n", - "[2022-10-11 21:27:20,865] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1019704, Operator ID: bd12ab53-c27e-48e5-916a-223c9adc24b2)\u001b[39m\n", + "[2022-10-18 17:59:03,840] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 17:59:03,840] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 21:27:20,866] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-18 17:59:03,840] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 17:59:03,840] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:59:03,840] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-11 21:27:20,867] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 17:59:03,841] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 588223, Operator ID: 1ae00f87-456f-436b-8c66-292241770ca9)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1019704, Operator ID: f7a45398-b237-4ea0-b2d1-429c69818ff1)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 588223, Operator ID: 4400d567-9a72-45eb-890f-88d3ef790ea1)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1019704, Operator ID: 7d7f541f-a5f6-4968-9983-eb620d3cbc12)\u001b[39m\n", "Converted Image object metadata:\n", "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", "SeriesDate: 20090831, type \n", @@ -1320,126 +1322,114 @@ "StudyTime: 095948.599, type \n", "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", "AccessionNumber: 5471978513296937, type \n", - "selection_name: CT Series, type \n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "IOStream.flush timed out\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2022-10-11 21:30:07,825 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "selection_name: CT Series, type \n", + "2022-10-18 17:59:17,460 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 588223, Operator ID: 30fe1dc4-d9e1-4d98-8c57-8577c6a968ec)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1019704, Operator ID: 4376980c-6baf-4e41-9e3e-c21dd6f6a393)\u001b[39m\n", "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", " warnings.warn(\n", - "[2022-10-11 21:30:11,711] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-11 21:30:11,714] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-11 21:30:11,716] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-11 21:30:11,717] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-11 21:30:11,719] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-11 21:30:11,721] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-11 21:30:11,723] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-11 21:30:11,725] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-11 21:30:11,727] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-11 21:30:11,728] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-11 21:30:11,729] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-11 21:30:11,731] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-11 21:30:11,732] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-11 21:30:11,734] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-11 21:30:11,736] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-11 21:30:11,738] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-11 21:30:11,740] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-11 21:30:11,742] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-11 21:30:11,743] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-11 21:30:11,745] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-11 21:30:11,747] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-11 21:30:11,749] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-11 21:30:11,751] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-11 21:30:11,753] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-11 21:30:11,755] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-11 21:30:11,757] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-11 21:30:11,759] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-11 21:30:11,761] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-11 21:30:11,763] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-11 21:30:11,764] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-11 21:30:11,766] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-11 21:30:11,768] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-11 21:30:11,769] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-11 21:30:11,771] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-11 21:30:11,773] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-11 21:30:11,775] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-11 21:30:11,777] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-11 21:30:11,779] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-11 21:30:11,781] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-11 21:30:11,782] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-11 21:30:11,785] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-11 21:30:11,786] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-11 21:30:11,788] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-11 21:30:11,789] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-11 21:30:11,790] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-11 21:30:11,791] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-11 21:30:11,793] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-11 21:30:11,795] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-11 21:30:11,796] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-11 21:30:11,798] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-11 21:30:11,799] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-11 21:30:11,800] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-11 21:30:11,802] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-11 21:30:11,803] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-11 21:30:11,805] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-11 21:30:11,807] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-11 21:30:11,809] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-11 21:30:11,811] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-11 21:30:11,812] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-11 21:30:11,814] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-11 21:30:11,816] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-11 21:30:11,818] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-11 21:30:11,820] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-11 21:30:11,822] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-11 21:30:11,823] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-11 21:30:11,825] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-11 21:30:11,827] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-11 21:30:11,829] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-11 21:30:11,831] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-11 21:30:11,833] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-11 21:30:11,835] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-11 21:30:11,837] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-11 21:30:11,839] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-11 21:30:11,841] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-11 21:30:11,843] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-11 21:30:11,846] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-11 21:30:11,848] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-11 21:30:11,850] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-11 21:30:11,852] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-11 21:30:11,854] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-11 21:30:11,857] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-11 21:30:11,859] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-11 21:30:11,861] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-11 21:30:11,863] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-11 21:30:11,864] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-11 21:30:11,866] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-11 21:30:11,868] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-11 21:30:11,870] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-11 21:30:11,977] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 21:30:11,977] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-11 21:30:11,977] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 21:30:11,977] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-11 21:30:11,978] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-11 21:30:11,978] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 21:30:11,978] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-11 21:30:11,978] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-11 21:30:11,978] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 17:59:20,664] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 17:59:20,665] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 17:59:20,667] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 17:59:20,668] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 17:59:20,669] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 17:59:20,670] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 17:59:20,671] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 17:59:20,672] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 17:59:20,673] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 17:59:20,674] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 17:59:20,675] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 17:59:20,676] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 17:59:20,677] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 17:59:20,678] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 17:59:20,679] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 17:59:20,680] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 17:59:20,681] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 17:59:20,682] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 17:59:20,683] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 17:59:20,684] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 17:59:20,685] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 17:59:20,686] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 17:59:20,687] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 17:59:20,688] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 17:59:20,689] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 17:59:20,691] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 17:59:20,692] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 17:59:20,693] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 17:59:20,694] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 17:59:20,695] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 17:59:20,696] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 17:59:20,697] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 17:59:20,698] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 17:59:20,699] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 17:59:20,700] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 17:59:20,701] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 17:59:20,702] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 17:59:20,703] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 17:59:20,704] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 17:59:20,705] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 17:59:20,706] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 17:59:20,707] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 17:59:20,708] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 17:59:20,709] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 17:59:20,710] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 17:59:20,711] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 17:59:20,712] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 17:59:20,713] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 17:59:20,714] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 17:59:20,716] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 17:59:20,718] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 17:59:20,719] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 17:59:20,721] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 17:59:20,723] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 17:59:20,724] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 17:59:20,726] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 17:59:20,727] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 17:59:20,729] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 17:59:20,731] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 17:59:20,732] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 17:59:20,734] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 17:59:20,735] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 17:59:20,737] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 17:59:20,738] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 17:59:20,740] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 17:59:20,742] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 17:59:20,743] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 17:59:20,745] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 17:59:20,746] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 17:59:20,748] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 17:59:20,750] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 17:59:20,751] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 17:59:20,753] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 17:59:20,754] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 17:59:20,756] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 17:59:20,758] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 17:59:20,759] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 17:59:20,761] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 17:59:20,763] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 17:59:20,764] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 17:59:20,766] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 17:59:20,767] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 17:59:20,769] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 17:59:20,771] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 17:59:20,772] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 17:59:20,774] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 17:59:20,776] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 17:59:20,777] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 17:59:20,829] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 17:59:20,829] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 17:59:20,829] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 17:59:20,829] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 17:59:20,830] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 17:59:20,830] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 17:59:20,830] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 17:59:20,830] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 17:59:20,830] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 17:59:20,841] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n" ] @@ -1466,51 +1456,51 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 588321, Operator ID: 6483fb70-5b69-4f7a-9f52-e539a9e07be4)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1019765, Operator ID: 47ec707f-e6ae-44b5-a3fb-92c4f514a42f)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 588321, Operator ID: 427aaa27-564a-41dc-88fc-1edcce5532c5)\u001b[39m\n", - "[2022-10-11 21:30:22,348] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 21:30:22,348] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1019765, Operator ID: 011609ba-8225-4401-a8b0-552f3e1771f6)\u001b[39m\n", + "[2022-10-18 17:59:26,795] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 17:59:26,795] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-11 21:30:22,348] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 21:30:22,348] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:30:22,348] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-11 21:30:22,348] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:30:22,348] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-18 17:59:26,795] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 17:59:26,795] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:59:26,795] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-18 17:59:26,795] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:26,795] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 17:59:26,795] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 17:59:26,795] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 21:30:22,349] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:30:22,350] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-11 21:30:22,350] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-11 21:30:22,350] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 21:30:22,350] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-11 21:30:22,350] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-11 21:30:22,350] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 17:59:26,796] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 588321, Operator ID: 206f44df-3c98-45c7-84d3-49762357e816)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1019765, Operator ID: 119e513a-a950-4fbc-9d38-35523d1fcb69)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 588321, Operator ID: 5ec8fbd6-a667-4ffc-8aaf-3890365e428e)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1019765, Operator ID: 02659e90-c135-4bb2-bc92-eeafbb01360c)\u001b[39m\n", "Converted Image object metadata:\n", "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", "SeriesDate: 20090831, type \n", @@ -1540,112 +1530,113 @@ "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "2022-10-11 21:30:37,175 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "2022-10-18 17:59:40,713 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 588321, Operator ID: 61d8cd8e-f76c-4ed8-b2a2-17a5aa8e0539)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1019765, Operator ID: b32304d5-109f-43db-9265-550acbef270a)\u001b[39m\n", "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", " warnings.warn(\n", - "[2022-10-11 21:30:40,571] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-11 21:30:40,573] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-11 21:30:40,575] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-11 21:30:40,577] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-11 21:30:40,579] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-11 21:30:40,582] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-11 21:30:40,584] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-11 21:30:40,585] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-11 21:30:40,587] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-11 21:30:40,589] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-11 21:30:40,591] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-11 21:30:40,593] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-11 21:30:40,595] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-11 21:30:40,597] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-11 21:30:40,600] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-11 21:30:40,601] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-11 21:30:40,603] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-11 21:30:40,606] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-11 21:30:40,608] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-11 21:30:40,610] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-11 21:30:40,612] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-11 21:30:40,614] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-11 21:30:40,616] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-11 21:30:40,618] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-11 21:30:40,620] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-11 21:30:40,622] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-11 21:30:40,624] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-11 21:30:40,625] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-11 21:30:40,627] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-11 21:30:40,629] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-11 21:30:40,631] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-11 21:30:40,632] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-11 21:30:40,634] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-11 21:30:40,637] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-11 21:30:40,639] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-11 21:30:40,641] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-11 21:30:40,643] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-11 21:30:40,645] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-11 21:30:40,647] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-11 21:30:40,649] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-11 21:30:40,652] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-11 21:30:40,654] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-11 21:30:40,656] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-11 21:30:40,658] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-11 21:30:40,660] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-11 21:30:40,662] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-11 21:30:40,664] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-11 21:30:40,667] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-11 21:30:40,669] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-11 21:30:40,671] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-11 21:30:40,673] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-11 21:30:40,675] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-11 21:30:40,677] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-11 21:30:40,679] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-11 21:30:40,680] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-11 21:30:40,682] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-11 21:30:40,683] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-11 21:30:40,685] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-11 21:30:40,686] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-11 21:30:40,688] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-11 21:30:40,691] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-11 21:30:40,693] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-11 21:30:40,695] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-11 21:30:40,697] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-11 21:30:40,699] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-11 21:30:40,701] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-11 21:30:40,703] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-11 21:30:40,706] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-11 21:30:40,708] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-11 21:30:40,710] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-11 21:30:40,712] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-11 21:30:40,714] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-11 21:30:40,716] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-11 21:30:40,718] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-11 21:30:40,721] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-11 21:30:40,723] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-11 21:30:40,725] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-11 21:30:40,727] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-11 21:30:40,729] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-11 21:30:40,731] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-11 21:30:40,733] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-11 21:30:40,735] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-11 21:30:40,737] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-11 21:30:40,739] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-11 21:30:40,741] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-11 21:30:40,744] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-11 21:30:40,746] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-11 21:30:40,748] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-11 21:30:40,801] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 21:30:40,802] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-11 21:30:40,802] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 21:30:40,802] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-11 21:30:40,802] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-11 21:30:40,803] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 21:30:40,803] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-11 21:30:40,803] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-11 21:30:40,803] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 17:59:43,907] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 17:59:43,908] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 17:59:43,909] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 17:59:43,911] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 17:59:43,912] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 17:59:43,913] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 17:59:43,914] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 17:59:43,915] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 17:59:43,916] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 17:59:43,917] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 17:59:43,918] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 17:59:43,919] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 17:59:43,920] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 17:59:43,921] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 17:59:43,923] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 17:59:43,923] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 17:59:43,924] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 17:59:43,925] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 17:59:43,926] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 17:59:43,927] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 17:59:43,929] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 17:59:43,930] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 17:59:43,931] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 17:59:43,932] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 17:59:43,933] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 17:59:43,934] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 17:59:43,935] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 17:59:43,936] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 17:59:43,937] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 17:59:43,938] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 17:59:43,939] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 17:59:43,940] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 17:59:43,941] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 17:59:43,942] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 17:59:43,943] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 17:59:43,944] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 17:59:43,945] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 17:59:43,946] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 17:59:43,947] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 17:59:43,948] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 17:59:43,949] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 17:59:43,950] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 17:59:43,951] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 17:59:43,952] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 17:59:43,954] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 17:59:43,955] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 17:59:43,956] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 17:59:43,957] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 17:59:43,958] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 17:59:43,959] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 17:59:43,960] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 17:59:43,961] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 17:59:43,962] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 17:59:43,963] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 17:59:43,964] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 17:59:43,965] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 17:59:43,966] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 17:59:43,967] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 17:59:43,968] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 17:59:43,969] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 17:59:43,970] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 17:59:43,971] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 17:59:43,973] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 17:59:43,974] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 17:59:43,975] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 17:59:43,976] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 17:59:43,977] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 17:59:43,978] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 17:59:43,979] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 17:59:43,980] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 17:59:43,981] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 17:59:43,982] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 17:59:43,983] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 17:59:43,984] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 17:59:43,985] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 17:59:43,986] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 17:59:43,987] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 17:59:43,988] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 17:59:43,990] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 17:59:43,991] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 17:59:43,993] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 17:59:43,994] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 17:59:43,996] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 17:59:43,997] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 17:59:43,999] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 17:59:44,000] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 17:59:44,002] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 17:59:44,003] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 17:59:44,055] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 17:59:44,055] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 17:59:44,055] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 17:59:44,055] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 17:59:44,056] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 17:59:44,056] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 17:59:44,056] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 17:59:44,056] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 17:59:44,056] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 17:59:44,072] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n" ] @@ -1666,9 +1657,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "1.2.826.0.1.3680043.10.511.3.11972508174681468557260210868245236.dcm\n", - "1.2.826.0.1.3680043.10.511.3.12522236683424194054574611600659749.dcm\n", - "1.2.826.0.1.3680043.10.511.3.73406030375861033199007467688193029.dcm\n", + "1.2.826.0.1.3680043.10.511.3.10233860337763721213019398752177157.dcm\n", + "1.2.826.0.1.3680043.10.511.3.36836057024065268415569650469263172.dcm\n", + "1.2.826.0.1.3680043.10.511.3.71094963129049572641804175456834092.dcm\n", "prediction_output\n" ] } @@ -1701,7 +1692,7 @@ "output_type": "stream", "text": [ "Building MONAI Application Package... Done\n", - "[2022-10-11 21:30:49,237] [INFO] (app_packager) - Successfully built my_app:latest\n" + "[2022-10-18 17:59:50,292] [INFO] (app_packager) - Successfully built my_app:latest\n" ] } ], @@ -1729,7 +1720,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "my_app latest fedeeb004af3 8 minutes ago 15.1GB\n" + "my_app latest d34d8fb2cdc9 8 minutes ago 15.1GB\n" ] } ], @@ -1766,54 +1757,54 @@ "Reading MONAI App Package manifest...\n", "--> Verifying if \"nvidia-docker\" is installed...\n", "\n", - "/opt/conda/lib/python3.8/site-packages/scipy/__init__.py:138: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.3)\n", + "/opt/conda/lib/python3.8/site-packages/scipy/__init__.py:138: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.4)\n", " warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion} is required for this version of \"\n", "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: c948605e-43c6-4ce0-8996-96c357ce7015)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: 87f153a1-6df1-471a-8387-91fa4c8072fd)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: 160ff6db-0ee2-46b9-ae28-e72680c282fb)\u001b[39m\n", - "[2022-10-12 04:31:12,637] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-12 04:31:12,637] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: fdeb8d41-35cf-48f4-b278-af0b60e8d993)\u001b[39m\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-12 04:31:12,637] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-12 04:31:12,637] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-12 04:31:12,637] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-19 01:00:05,860] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 04:31:12,638] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-12 04:31:12,639] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-12 04:31:12,639] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-19 01:00:05,861] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: 7d1c7954-7a7f-4582-a80d-88afa45dda2b)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: 574f535f-7d01-4112-b4eb-3281280251a6)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1, Operator ID: b010f916-845e-4815-807a-9294b2f76ceb)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1, Operator ID: ef34ddb9-0d8d-48d6-a9d9-c179d824860f)\u001b[39m\n", "Converted Image object metadata:\n", "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", "SeriesDate: 20090831, type \n", @@ -1843,112 +1834,113 @@ "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "2022-10-12 04:31:58,211 INFO image_writer.py:194 - writing: /var/monai/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "2022-10-19 01:00:18,462 INFO image_writer.py:194 - writing: /var/monai/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: b29eac1a-4326-4167-8ddd-3d679da0c342)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: 7a4a446e-42e7-4dbc-898e-2dc907cba1fb)\u001b[39m\n", "/root/.local/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", " warnings.warn(\n", - "[2022-10-12 04:32:01,942] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-12 04:32:01,944] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-12 04:32:01,946] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-12 04:32:01,947] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-12 04:32:01,948] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-12 04:32:01,950] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-12 04:32:01,952] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-12 04:32:01,953] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-12 04:32:01,955] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-12 04:32:01,956] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-12 04:32:01,958] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-12 04:32:01,959] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-12 04:32:01,960] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-12 04:32:01,962] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-12 04:32:01,963] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-12 04:32:01,965] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-12 04:32:01,966] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-12 04:32:01,967] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-12 04:32:01,969] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-12 04:32:01,970] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-12 04:32:01,972] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-12 04:32:01,973] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-12 04:32:01,975] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-12 04:32:01,976] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-12 04:32:01,978] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-12 04:32:01,979] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-12 04:32:01,981] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-12 04:32:01,982] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-12 04:32:01,984] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-12 04:32:01,986] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-12 04:32:01,987] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-12 04:32:01,988] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-12 04:32:01,990] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-12 04:32:01,991] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-12 04:32:01,993] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-12 04:32:01,994] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-12 04:32:01,996] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-12 04:32:01,997] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-12 04:32:01,999] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-12 04:32:02,000] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-12 04:32:02,002] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-12 04:32:02,003] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-12 04:32:02,005] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-12 04:32:02,006] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-12 04:32:02,008] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-12 04:32:02,009] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-12 04:32:02,011] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-12 04:32:02,012] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-12 04:32:02,014] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-12 04:32:02,015] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-12 04:32:02,017] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-12 04:32:02,018] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-12 04:32:02,020] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-12 04:32:02,021] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-12 04:32:02,023] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-12 04:32:02,025] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-12 04:32:02,026] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-12 04:32:02,028] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-12 04:32:02,030] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-12 04:32:02,031] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-12 04:32:02,033] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-12 04:32:02,034] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-12 04:32:02,036] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-12 04:32:02,037] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-12 04:32:02,039] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-12 04:32:02,040] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-12 04:32:02,042] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-12 04:32:02,043] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-12 04:32:02,045] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-12 04:32:02,046] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-12 04:32:02,048] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-12 04:32:02,049] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-12 04:32:02,051] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-12 04:32:02,053] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-12 04:32:02,054] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-12 04:32:02,056] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-12 04:32:02,057] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-12 04:32:02,059] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-12 04:32:02,060] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-12 04:32:02,062] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-12 04:32:02,065] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-12 04:32:02,066] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-12 04:32:02,068] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-12 04:32:02,069] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-12 04:32:02,071] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-12 04:32:02,072] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-12 04:32:02,074] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-12 04:32:02,076] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-12 04:32:02,146] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-12 04:32:02,146] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-12 04:32:02,146] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-12 04:32:02,146] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-12 04:32:02,147] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-12 04:32:02,147] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-12 04:32:02,147] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-12 04:32:02,147] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-12 04:32:02,147] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-19 01:00:21,752] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-19 01:00:21,753] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-19 01:00:21,755] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-19 01:00:21,756] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-19 01:00:21,758] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-19 01:00:21,760] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-19 01:00:21,761] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-19 01:00:21,762] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-19 01:00:21,764] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-19 01:00:21,765] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-19 01:00:21,767] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-19 01:00:21,768] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-19 01:00:21,770] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-19 01:00:21,771] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-19 01:00:21,772] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-19 01:00:21,774] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-19 01:00:21,775] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-19 01:00:21,777] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-19 01:00:21,778] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-19 01:00:21,779] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-19 01:00:21,781] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-19 01:00:21,782] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-19 01:00:21,784] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-19 01:00:21,786] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-19 01:00:21,787] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-19 01:00:21,789] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-19 01:00:21,790] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-19 01:00:21,792] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-19 01:00:21,793] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-19 01:00:21,795] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-19 01:00:21,796] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-19 01:00:21,797] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-19 01:00:21,799] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-19 01:00:21,800] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-19 01:00:21,802] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-19 01:00:21,803] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-19 01:00:21,805] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-19 01:00:21,806] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-19 01:00:21,808] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-19 01:00:21,809] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-19 01:00:21,811] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-19 01:00:21,812] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-19 01:00:21,814] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-19 01:00:21,815] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-19 01:00:21,817] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-19 01:00:21,818] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-19 01:00:21,820] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-19 01:00:21,821] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-19 01:00:21,823] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-19 01:00:21,824] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-19 01:00:21,826] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-19 01:00:21,827] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-19 01:00:21,829] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-19 01:00:21,830] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-19 01:00:21,832] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-19 01:00:21,833] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-19 01:00:21,835] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-19 01:00:21,836] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-19 01:00:21,838] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-19 01:00:21,840] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-19 01:00:21,841] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-19 01:00:21,843] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-19 01:00:21,844] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-19 01:00:21,846] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-19 01:00:21,847] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-19 01:00:21,849] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-19 01:00:21,851] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-19 01:00:21,852] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-19 01:00:21,854] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-19 01:00:21,855] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-19 01:00:21,857] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-19 01:00:21,858] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-19 01:00:21,860] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-19 01:00:21,862] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-19 01:00:21,863] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-19 01:00:21,865] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-19 01:00:21,866] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-19 01:00:21,868] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-19 01:00:21,869] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-19 01:00:21,871] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-19 01:00:21,873] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-19 01:00:21,875] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-19 01:00:21,876] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-19 01:00:21,878] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-19 01:00:21,879] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-19 01:00:21,881] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-19 01:00:21,883] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-19 01:00:21,884] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-19 01:00:21,932] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-19 01:00:21,932] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-19 01:00:21,932] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-19 01:00:21,932] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-19 01:00:21,933] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-19 01:00:21,933] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-19 01:00:21,933] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-19 01:00:21,933] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-19 01:00:21,933] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-19 01:00:21,951] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n" ] @@ -1970,10 +1962,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "1.2.826.0.1.3680043.10.511.3.11972508174681468557260210868245236.dcm\n", - "1.2.826.0.1.3680043.10.511.3.12522236683424194054574611600659749.dcm\n", - "1.2.826.0.1.3680043.10.511.3.73406030375861033199007467688193029.dcm\n", - "1.2.826.0.1.3680043.10.511.3.76852153726118442165214649561497685.dcm\n", + "1.2.826.0.1.3680043.10.511.3.10233860337763721213019398752177157.dcm\n", + "1.2.826.0.1.3680043.10.511.3.36836057024065268415569650469263172.dcm\n", + "1.2.826.0.1.3680043.10.511.3.62377077913869141856004675688121326.dcm\n", + "1.2.826.0.1.3680043.10.511.3.71094963129049572641804175456834092.dcm\n", "prediction_output\n" ] } diff --git a/notebooks/tutorials/03_segmentation_viz_app.ipynb b/notebooks/tutorials/03_segmentation_viz_app.ipynb index edc95569..8ab9ddec 100644 --- a/notebooks/tutorials/03_segmentation_viz_app.ipynb +++ b/notebooks/tutorials/03_segmentation_viz_app.ipynb @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -111,6 +111,7 @@ "!python -c \"import numpy\" || pip install -q \"numpy>=1.21\"\n", "!python -c \"import nibabel\" || pip install -q \"nibabel>=3.2.1\"\n", "!python -c \"import pydicom\" || pip install -q \"pydicom>=1.4.2\"\n", + "!python -c \"import highdicom\" || pip install -q \"highdicom>=0.18.2\"\n", "!python -c \"import SimpleITK\" || pip install -q \"SimpleITK>=2.0.0\"\n", "!python -c \"import typeguard\" || pip install -q \"typeguard>=2.12.1\"\n", "\n", @@ -137,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -146,20 +147,20 @@ "text": [ "Requirement already satisfied: gdown in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (4.5.1)\n", "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", - "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", - "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", - "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", "Requirement already satisfied: six in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (1.16.0)\n", + "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", + "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", + "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", "Requirement already satisfied: soupsieve>1.2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from beautifulsoup4->gdown) (2.3.2.post1)\n", - "Requirement already satisfied: idna<4,>=2.5 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (3.3)\n", - "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (3.3)\n", "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.26.12)\n", "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.7.1)\n", "Downloading...\n", "From: https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\n", "To: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_seg_bundle_data.zip\n", - "100%|██████████████████████████████████████| 79.4M/79.4M [00:00<00:00, 98.0MB/s]\n", + "100%|███████████████████████████████████████| 79.4M/79.4M [00:00<00:00, 109MB/s]\n", "Archive: ai_spleen_seg_bundle_data.zip\n", " inflating: dcm/1-001.dcm \n", " inflating: dcm/1-002.dcm \n", @@ -327,13 +328,7 @@ " inflating: dcm/1-164.dcm \n", " inflating: dcm/1-165.dcm \n", " inflating: dcm/1-166.dcm \n", - " inflating: dcm/1-167.dcm \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + " inflating: dcm/1-167.dcm \n", " inflating: dcm/1-168.dcm \n", " inflating: dcm/1-169.dcm \n", " inflating: dcm/1-170.dcm \n", @@ -395,7 +390,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -459,7 +454,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -565,7 +560,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -673,7 +668,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -681,45 +676,45 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 599314, Operator ID: 48e76b73-f97a-46c8-abcc-e5b08df11e36)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1023022, Operator ID: a04010af-53dd-4f1b-b43f-655192b0a30c)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2022-10-12 00:45:17,348] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-12 00:45:17,349] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "[2022-10-18 18:20:36,956] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 18:20:36,957] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-12 00:45:17,349] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-12 00:45:17,350] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-12 00:45:17,351] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-12 00:45:17,351] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 00:45:17,352] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-12 00:45:17,352] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-12 00:45:17,353] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 00:45:17,353] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-12 00:45:17,354] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-12 00:45:17,355] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 00:45:17,355] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-12 00:45:17,356] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-12 00:45:17,357] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-12 00:45:17,357] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-12 00:45:17,358] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-18 18:20:36,958] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 18:20:36,958] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:20:36,959] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-18 18:20:36,960] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:20:36,961] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 18:20:36,961] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 18:20:36,962] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:20:36,963] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:20:36,963] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-18 18:20:36,964] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:20:36,964] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 18:20:36,965] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 18:20:36,966] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 18:20:36,967] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 18:20:36,967] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2022-10-12 00:45:17,359] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-12 00:45:17,359] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-12 00:45:17,360] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-12 00:45:17,361] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 00:45:17,361] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-12 00:45:17,362] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-12 00:45:17,363] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 00:45:17,364] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-12 00:45:17,365] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-12 00:45:17,366] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 00:45:17,366] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-12 00:45:17,367] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-12 00:45:17,368] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" + "[2022-10-18 18:20:36,969] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 18:20:36,970] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:20:36,970] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-18 18:20:36,971] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:20:36,972] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 18:20:36,973] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 18:20:36,973] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:20:36,974] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:20:36,975] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-18 18:20:36,975] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:20:36,976] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 18:20:36,977] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 18:20:36,978] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" ] }, { @@ -729,15 +724,15 @@ "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 599314, Operator ID: 929deab3-f1c3-41ee-b94d-8f9faf8786ab)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1023022, Operator ID: d3df392a-1db7-4094-b743-1993af8deda3)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 599314, Operator ID: 5109ceba-44fd-4946-95c9-d66edc9ed0de)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1023022, Operator ID: 03c8b167-737a-4cd8-adb0-b46d59d98d25)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 599314, Operator ID: 4177f666-a619-4fd7-9652-ca7c4c4992b8)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1023022, Operator ID: f84053f9-9d20-48c1-9eb9-66eba296595b)\u001b[39m\n", "Converted Image object metadata:\n", "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", "SeriesDate: 20090831, type \n", @@ -767,124 +762,116 @@ "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "2022-10-12 00:45:30,618 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "2022-10-18 18:20:46,564 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 599314, Operator ID: 94e3c6c0-1d25-4e3f-aadc-e068d3033051)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1023022, Operator ID: cc0c00e0-1e99-4f22-8044-8c96287623e7)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", - " warnings.warn(\n", - "[2022-10-12 00:45:33,850] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-12 00:45:33,853] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-12 00:45:33,856] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-12 00:45:33,859] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-12 00:45:33,861] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-12 00:45:33,866] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-12 00:45:33,871] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-12 00:45:33,875] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-12 00:45:33,879] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-12 00:45:33,882] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-12 00:45:33,885] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-12 00:45:33,888] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-12 00:45:33,891] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-12 00:45:33,894] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-12 00:45:33,896] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-12 00:45:33,898] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-12 00:45:33,899] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-12 00:45:33,902] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-12 00:45:33,904] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-12 00:45:33,905] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-12 00:45:33,907] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-12 00:45:33,908] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-12 00:45:33,910] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-12 00:45:33,912] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-12 00:45:33,915] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-12 00:45:33,918] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-12 00:45:33,919] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-12 00:45:33,921] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-12 00:45:33,922] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-12 00:45:33,924] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-12 00:45:33,925] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-12 00:45:33,928] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-12 00:45:33,931] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-12 00:45:33,934] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-12 00:45:33,936] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-12 00:45:33,939] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-12 00:45:33,942] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-12 00:45:33,945] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-12 00:45:33,947] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-12 00:45:33,950] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-12 00:45:33,954] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-12 00:45:33,959] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-12 00:45:33,964] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-12 00:45:33,967] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-12 00:45:33,971] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-12 00:45:33,975] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-12 00:45:33,978] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-12 00:45:33,981] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-12 00:45:33,984] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-12 00:45:33,987] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-12 00:45:33,990] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-12 00:45:33,993] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-12 00:45:33,995] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-12 00:45:34,001] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-12 00:45:34,005] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-12 00:45:34,010] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-12 00:45:34,014] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-12 00:45:34,017] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-12 00:45:34,020] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-12 00:45:34,024] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-12 00:45:34,027] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-12 00:45:34,030] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-12 00:45:34,033] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-12 00:45:34,036] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-12 00:45:34,043] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-12 00:45:34,048] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-12 00:45:34,051] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-12 00:45:34,055] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-12 00:45:34,058] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-12 00:45:34,061] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-12 00:45:34,063] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-12 00:45:34,065] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-12 00:45:34,068] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-12 00:45:34,070] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-12 00:45:34,072] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-12 00:45:34,075] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-12 00:45:34,077] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-12 00:45:34,080] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-12 00:45:34,082] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-12 00:45:34,084] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-12 00:45:34,086] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-12 00:45:34,088] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-12 00:45:34,091] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-12 00:45:34,093] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-12 00:45:34,096] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-12 00:45:34,098] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-12 00:45:34,101] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-12 00:45:34,102] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-12 00:45:34,151] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-12 00:45:34,153] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[2022-10-12 00:45:34,154] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-12 00:45:34,154] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-12 00:45:34,155] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-12 00:45:34,156] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-12 00:45:34,157] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-12 00:45:34,158] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-12 00:45:34,159] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n" + "[2022-10-18 18:20:49,639] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 18:20:49,641] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 18:20:49,644] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 18:20:49,647] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 18:20:49,649] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 18:20:49,652] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 18:20:49,654] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 18:20:49,657] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 18:20:49,660] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 18:20:49,663] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 18:20:49,666] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 18:20:49,669] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 18:20:49,672] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 18:20:49,675] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 18:20:49,678] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 18:20:49,681] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 18:20:49,685] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 18:20:49,688] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 18:20:49,691] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 18:20:49,694] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 18:20:49,696] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 18:20:49,699] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 18:20:49,702] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 18:20:49,706] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 18:20:49,709] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 18:20:49,712] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 18:20:49,715] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 18:20:49,718] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 18:20:49,721] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 18:20:49,724] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 18:20:49,726] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 18:20:49,729] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 18:20:49,732] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 18:20:49,735] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 18:20:49,738] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 18:20:49,741] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 18:20:49,744] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 18:20:49,747] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 18:20:49,749] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 18:20:49,752] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 18:20:49,755] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 18:20:49,757] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 18:20:49,761] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 18:20:49,764] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 18:20:49,767] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 18:20:49,773] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 18:20:49,777] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 18:20:49,780] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 18:20:49,782] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 18:20:49,785] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 18:20:49,788] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 18:20:49,790] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 18:20:49,791] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 18:20:49,793] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 18:20:49,795] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 18:20:49,796] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 18:20:49,798] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 18:20:49,800] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 18:20:49,804] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 18:20:49,807] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 18:20:49,809] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 18:20:49,812] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 18:20:49,816] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 18:20:49,819] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 18:20:49,822] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 18:20:49,825] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 18:20:49,827] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 18:20:49,830] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 18:20:49,833] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 18:20:49,836] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 18:20:49,840] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 18:20:49,842] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 18:20:49,845] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 18:20:49,848] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 18:20:49,851] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 18:20:49,854] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 18:20:49,858] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 18:20:49,861] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 18:20:49,864] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 18:20:49,866] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 18:20:49,868] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 18:20:49,870] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 18:20:49,872] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 18:20:49,874] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 18:20:49,875] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 18:20:49,877] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 18:20:49,879] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 18:20:49,883] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 18:20:49,932] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:20:49,933] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 18:20:49,934] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:20:49,935] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 18:20:49,936] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 18:20:49,937] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:20:49,938] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 18:20:49,939] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 18:20:49,940] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n" ] }, { @@ -894,23 +881,29 @@ "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator ClaraVizOperator\u001b[39m\n", - "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 599314, Operator ID: 5449286e-3dc7-4a3c-8d1a-e00f52fa7801)\u001b[39m\n" + "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 1023022, Operator ID: dd3edeba-ddd4-4be9-ad3a-691bfa496e73)\u001b[39m\n" ] }, { - "ename": "AttributeError", - "evalue": "'Widget' object has no attribute 'on_displayed'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn [6], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m app \u001b[38;5;241m=\u001b[39m AISpleenSegApp()\n\u001b[0;32m----> 3\u001b[0m \u001b[43mapp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdcm\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43moutput\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmodel.ts\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", - "Cell \u001b[0;32mIn [5], line 12\u001b[0m, in \u001b[0;36mAISpleenSegApp.run\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrun\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# This method calls the base class to run. Can be omitted if simply calling through.\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mBegin \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrun\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 12\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEnd \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrun\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m~/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/core/application.py:429\u001b[0m, in \u001b[0;36mApplication.run\u001b[0;34m(self, log_level, input, output, model, workdir, datastore, executor)\u001b[0m\n\u001b[1;32m 427\u001b[0m datastore_obj \u001b[38;5;241m=\u001b[39m DatastoreFactory\u001b[38;5;241m.\u001b[39mcreate(app_context\u001b[38;5;241m.\u001b[39mdatastore)\n\u001b[1;32m 428\u001b[0m executor_obj \u001b[38;5;241m=\u001b[39m ExecutorFactory\u001b[38;5;241m.\u001b[39mcreate(app_context\u001b[38;5;241m.\u001b[39mexecutor, {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mapp\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28mself\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdatastore\u001b[39m\u001b[38;5;124m\"\u001b[39m: datastore_obj})\n\u001b[0;32m--> 429\u001b[0m \u001b[43mexecutor_obj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/core/executors/single_process_executor.py:125\u001b[0m, in \u001b[0;36mSingleProcessExecutor.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 117\u001b[0m \u001b[38;5;66;03m# Execute compute()\u001b[39;00m\n\u001b[1;32m 118\u001b[0m \u001b[38;5;28mprint\u001b[39m(\n\u001b[1;32m 119\u001b[0m Fore\u001b[38;5;241m.\u001b[39mGREEN\n\u001b[1;32m 120\u001b[0m \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mExecuting operator \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m op\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[38;5;241m+\u001b[39m Fore\u001b[38;5;241m.\u001b[39mRESET\n\u001b[1;32m 124\u001b[0m )\n\u001b[0;32m--> 125\u001b[0m \u001b[43mop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcompute\u001b[49m\u001b[43m(\u001b[49m\u001b[43mop_exec_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minput_context\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mop_exec_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moutput_context\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mop_exec_context\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 127\u001b[0m \u001b[38;5;66;03m# Execute post_compute()\u001b[39;00m\n\u001b[1;32m 128\u001b[0m \u001b[38;5;28mprint\u001b[39m(Fore\u001b[38;5;241m.\u001b[39mBLUE \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDone performing execution of operator \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m op\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m \u001b[38;5;241m+\u001b[39m Fore\u001b[38;5;241m.\u001b[39mRESET)\n", - "File \u001b[0;32m~/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/operators/clara_viz_operator.py:100\u001b[0m, in \u001b[0;36mClaraVizOperator.compute\u001b[0;34m(self, op_input, op_output, context)\u001b[0m\n\u001b[1;32m 96\u001b[0m data_definition\u001b[38;5;241m.\u001b[39marrays\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_build_array(input_image, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDXYZ\u001b[39m\u001b[38;5;124m\"\u001b[39m))\n\u001b[1;32m 98\u001b[0m data_definition\u001b[38;5;241m.\u001b[39marrays\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_build_array(input_seg_image, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMXYZ\u001b[39m\u001b[38;5;124m\"\u001b[39m))\n\u001b[0;32m--> 100\u001b[0m widget \u001b[38;5;241m=\u001b[39m \u001b[43mWidget\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 101\u001b[0m widget\u001b[38;5;241m.\u001b[39mselect_data_definition(data_definition)\n\u001b[1;32m 102\u001b[0m \u001b[38;5;66;03m# default view mode is 'CINEMATIC' switch to 'SLICE_SEGMENTATION' since we have no transfer functions defined\u001b[39;00m\n", - "File \u001b[0;32m~/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/clara/viz/widgets/widget.py:121\u001b[0m, in \u001b[0;36mWidget.__init__\u001b[0;34m(self, renderer, data_definition, **kwargs)\u001b[0m\n\u001b[1;32m 118\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__update_dataset_info(size, element_size, permute_axes)\n\u001b[1;32m 120\u001b[0m \u001b[38;5;66;03m# start video stream when the widget is displayed\u001b[39;00m\n\u001b[0;32m--> 121\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mon_displayed\u001b[49m(\u001b[38;5;28;01mlambda\u001b[39;00m widget, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__on_displayed())\n\u001b[1;32m 123\u001b[0m \u001b[38;5;66;03m# custom message handling\u001b[39;00m\n\u001b[1;32m 124\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mon_msg(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__on_msg)\n", - "\u001b[0;31mAttributeError\u001b[0m: 'Widget' object has no attribute 'on_displayed'" + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6da71aa975554482904a2024c4e7f45d", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Box(children=(Widget(), VBox(children=(interactive(children=(Dropdown(description='View mode', index=2, option…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[34mDone performing execution of operator ClaraVizOperator\n", + "\u001b[39m\n" ] } ], @@ -943,7 +936,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -960,7 +953,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -1090,7 +1083,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -1258,7 +1251,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -1279,7 +1272,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -1298,12 +1291,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In this time, let's execute the app in the command line." + "This time, let's execute the app in the command line." ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -1311,43 +1304,43 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 578792, Operator ID: f73925a1-3f81-4528-a410-9b3e4a12f2ae)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1023682, Operator ID: 1cd6dc57-ebe1-4d03-bea2-6134940f858a)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 578792, Operator ID: ae4f4548-6bd2-448c-8ee0-c083520cb8f4)\u001b[39m\n", - "[2022-10-11 18:09:35,865] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1023682, Operator ID: 937b2641-a831-4175-bbe5-92ad6a305045)\u001b[39m\n", + "[2022-10-18 18:20:59,054] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 18:20:59,054] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-18 18:20:59,054] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 18:20:59,054] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 18:20:59,054] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 18:20:59,054] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", - "[2022-10-11 18:09:35,866] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", - "[2022-10-11 18:09:35,867] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", + "[2022-10-18 18:20:59,055] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 578792, Operator ID: a9f4b0fa-c1a7-4e45-91dd-738c69bf33c2)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1023682, Operator ID: c9013d53-342e-442b-9bbf-262e18b7307b)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 578792, Operator ID: d2bdae77-16eb-489b-930d-da051db9b836)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1023682, Operator ID: 29f01c20-852e-4f2e-94b4-4446d14d97f0)\u001b[39m\n", "Converted Image object metadata:\n", "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", "SeriesDate: 20090831, type \n", @@ -1377,138 +1370,119 @@ "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "2022-10-11 18:09:49,260 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "2022-10-18 18:21:13,525 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 578792, Operator ID: 9b62cfed-9c50-47a9-912f-a5614a660411)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1023682, Operator ID: b4439dc5-c5c9-4e0c-b993-3dc1f83423c1)\u001b[39m\n", "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", " warnings.warn(\n", - "[2022-10-11 18:09:52,262] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-11 18:09:52,263] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-11 18:09:52,264] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-11 18:09:52,265] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-11 18:09:52,266] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-11 18:09:52,267] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-11 18:09:52,268] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-11 18:09:52,269] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-11 18:09:52,270] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-11 18:09:52,271] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-11 18:09:52,272] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-11 18:09:52,273] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-11 18:09:52,274] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-11 18:09:52,275] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-11 18:09:52,276] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-11 18:09:52,276] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-11 18:09:52,277] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-11 18:09:52,278] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-11 18:09:52,279] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-11 18:09:52,280] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-11 18:09:52,281] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-11 18:09:52,282] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-11 18:09:52,283] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-11 18:09:52,284] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-11 18:09:52,285] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-11 18:09:52,286] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-11 18:09:52,287] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-11 18:09:52,288] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-11 18:09:52,289] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-11 18:09:52,290] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-11 18:09:52,291] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-11 18:09:52,292] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-11 18:09:52,293] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-11 18:09:52,294] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-11 18:09:52,296] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-11 18:09:52,296] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-11 18:09:52,297] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-11 18:09:52,298] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-11 18:09:52,299] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-11 18:09:52,300] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-11 18:09:52,301] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-11 18:09:52,302] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-11 18:09:52,303] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-11 18:09:52,304] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-11 18:09:52,305] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-11 18:09:52,306] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-11 18:09:52,307] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-11 18:09:52,308] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-11 18:09:52,309] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-11 18:09:52,310] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-11 18:09:52,311] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-11 18:09:52,312] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-11 18:09:52,313] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-11 18:09:52,314] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-11 18:09:52,315] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-11 18:09:52,316] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-11 18:09:52,317] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-11 18:09:52,318] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-11 18:09:52,319] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-11 18:09:52,320] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-11 18:09:52,321] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-11 18:09:52,322] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-11 18:09:52,323] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-11 18:09:52,324] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-11 18:09:52,325] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-11 18:09:52,326] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-11 18:09:52,327] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-11 18:09:52,328] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-11 18:09:52,329] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-11 18:09:52,330] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-11 18:09:52,331] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-11 18:09:52,332] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-11 18:09:52,333] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-11 18:09:52,334] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-11 18:09:52,335] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-11 18:09:52,336] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-11 18:09:52,337] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-11 18:09:52,338] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-11 18:09:52,339] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-11 18:09:52,340] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-11 18:09:52,341] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-11 18:09:52,342] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-11 18:09:52,343] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-11 18:09:52,344] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-11 18:09:52,345] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-11 18:09:52,346] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-11 18:09:52,347] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-11 18:09:52,348] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-11 18:09:52,393] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 18:09:52,393] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-11 18:09:52,393] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 18:09:52,393] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-11 18:09:52,394] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-11 18:09:52,394] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 18:09:52,394] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-11 18:09:52,394] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-11 18:09:52,394] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 18:21:16,647] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 18:21:16,648] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 18:21:16,649] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 18:21:16,650] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 18:21:16,651] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 18:21:16,652] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 18:21:16,653] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 18:21:16,654] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 18:21:16,655] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 18:21:16,656] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 18:21:16,657] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 18:21:16,658] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 18:21:16,658] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 18:21:16,659] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 18:21:16,660] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 18:21:16,661] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 18:21:16,662] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 18:21:16,663] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 18:21:16,664] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 18:21:16,665] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 18:21:16,666] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 18:21:16,667] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 18:21:16,668] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 18:21:16,669] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 18:21:16,670] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 18:21:16,671] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 18:21:16,673] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 18:21:16,674] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 18:21:16,675] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 18:21:16,676] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 18:21:16,677] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 18:21:16,679] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 18:21:16,680] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 18:21:16,682] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 18:21:16,684] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 18:21:16,686] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 18:21:16,688] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 18:21:16,690] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 18:21:16,691] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 18:21:16,692] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 18:21:16,693] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 18:21:16,694] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 18:21:16,695] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 18:21:16,696] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 18:21:16,697] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 18:21:16,698] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 18:21:16,699] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 18:21:16,701] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 18:21:16,702] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 18:21:16,703] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 18:21:16,704] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 18:21:16,705] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 18:21:16,706] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 18:21:16,707] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 18:21:16,708] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 18:21:16,709] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 18:21:16,710] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 18:21:16,711] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 18:21:16,712] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 18:21:16,713] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 18:21:16,714] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 18:21:16,715] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 18:21:16,717] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 18:21:16,719] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 18:21:16,720] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 18:21:16,722] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 18:21:16,724] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 18:21:16,725] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 18:21:16,727] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 18:21:16,728] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 18:21:16,729] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 18:21:16,731] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 18:21:16,732] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 18:21:16,733] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 18:21:16,734] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 18:21:16,735] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 18:21:16,736] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 18:21:16,737] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 18:21:16,738] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 18:21:16,739] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 18:21:16,740] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 18:21:16,741] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 18:21:16,742] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 18:21:16,743] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 18:21:16,744] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 18:21:16,745] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 18:21:16,746] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 18:21:16,747] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 18:21:16,860] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:21:16,860] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 18:21:16,860] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:21:16,861] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 18:21:16,861] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 18:21:16,861] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:21:16,861] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 18:21:16,862] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 18:21:16,862] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator ClaraVizOperator\u001b[39m\n", - "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 578792, Operator ID: c79f53ec-734f-4f60-95be-76cd09417a64)\u001b[39m\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.8/runpy.py\", line 194, in _run_module_as_main\n", - " return _run_code(code, main_globals, None,\n", - " File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\n", - " exec(code, run_globals)\n", - " File \"/home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/my_app/__main__.py\", line 4, in \n", - " AISpleenSegApp(do_run=True)\n", - " File \"/home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/my_app/app.py\", line 21, in __init__\n", - " super().__init__(*args, **kwargs)\n", - " File \"/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/core/application.py\", line 129, in __init__\n", - " self.run(log_level=args.log_level)\n", - " File \"/home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/my_app/app.py\", line 26, in run\n", - " super().run(*args, **kwargs)\n", - " File \"/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/core/application.py\", line 429, in run\n", - " executor_obj.run()\n", - " File \"/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/core/executors/single_process_executor.py\", line 125, in run\n", - " op.compute(op_exec_context.input_context, op_exec_context.output_context, op_exec_context)\n", - " File \"/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/monai/deploy/operators/clara_viz_operator.py\", line 100, in compute\n", - " widget = Widget()\n", - " File \"/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/clara/viz/widgets/widget.py\", line 121, in __init__\n", - " self.on_displayed(lambda widget, **kwargs: self.__on_displayed())\n", - "AttributeError: 'Widget' object has no attribute 'on_displayed'\n" + "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 1023682, Operator ID: e2609abe-f9ab-4601-8a10-48283cfcdc55)\u001b[39m\n", + "Box(children=(Widget(), VBox(children=(interactive(children=(Dropdown(description='View mode', index=2, options=(('Cinematic', 'CINEMATIC'), ('Slice', 'SLICE'), ('Slice Segmentation', 'SLICE_SEGMENTATION')), value='SLICE_SEGMENTATION'), Output()), _dom_classes=('widget-interact',)), interactive(children=(Dropdown(description='Camera', options=('Top', 'Right', 'Front'), value='Top'), Output()), _dom_classes=('widget-interact',))))))\n", + "\u001b[34mDone performing execution of operator ClaraVizOperator\n", + "\u001b[39m\n" ] } ], @@ -1525,7 +1499,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -1533,74 +1507,184 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 99279, Operator ID: 2ef7b49a-4f37-40b7-a819-cadb1df4a990)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1023754, Operator ID: 5a09378c-8e0c-45e1-8c29-45ea15372477)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 99279, Operator ID: f33c3d86-6eef-4802-ae5d-e9dfd0318f45)\u001b[39m\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1023754, Operator ID: 73396666-3ee3-4f06-9254-8ea9309d7c25)\u001b[39m\n", + "[2022-10-18 18:21:29,305] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 18:21:29,305] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-18 18:21:29,305] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 18:21:29,305] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 18:21:29,305] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 18:21:29,305] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:21:29,305] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 18:21:29,305] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 18:21:29,305] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", + "[2022-10-18 18:21:29,305] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", + "[2022-10-18 18:21:29,305] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 18:21:29,306] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 18:21:29,306] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - Series attribute value: spleen\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - Series attribute value: CT\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - Series attribute value: No series description\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-01-28 11:27:38,401] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 18:21:29,306] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 18:21:29,306] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 18:21:29,306] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 18:21:29,306] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:21:29,306] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 18:21:29,306] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 18:21:29,306] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", + "[2022-10-18 18:21:29,306] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", + "[2022-10-18 18:21:29,306] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 99279, Operator ID: 3a6ab6a4-5a97-4301-939f-c24f5f83de95)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1023754, Operator ID: e3dde3ae-9209-4c15-8dc5-4cf9b9544230)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 99279, Operator ID: 96b1a47c-4628-48f7-a26a-10e498e1ce8a)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1023754, Operator ID: 088f2734-5689-4023-b873-5b82e8a86f32)\u001b[39m\n", "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763, type \n", + "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", + "SeriesDate: 20090831, type \n", + "SeriesTime: 101721.452, type \n", "Modality: CT, type \n", - "SeriesDescription: No series description, type \n", + "SeriesDescription: ABD/PANC 3.0 B31f, type \n", "PatientPosition: HFS, type \n", - "SeriesNumber: 1, type \n", - "row_pixel_spacing: 1.0, type \n", - "col_pixel_spacing: 1.0, type \n", - "depth_pixel_spacing: 1.0, type \n", - "row_direction_cosine: [-1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, -1.0, 0.0], type \n", + "SeriesNumber: 8, type \n", + "row_pixel_spacing: 0.7890625, type \n", + "col_pixel_spacing: 0.7890625, type \n", + "depth_pixel_spacing: 1.5, type \n", + "row_direction_cosine: [1.0, 0.0, 0.0], type \n", + "col_direction_cosine: [0.0, 1.0, 0.0], type \n", "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[-1. 0. 0. 0.]\n", - " [ 0. -1. 0. 0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "nifti_affine_transform: [[ 1. -0. -0. -0.]\n", - " [-0. 1. -0. -0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "StudyInstanceUID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213, type \n", - "StudyID: SLICER10001, type \n", - "StudyDate: 2019-09-16, type \n", - "StudyTime: 010100.000000, type \n", - "StudyDescription: spleen, type \n", - "AccessionNumber: 1, type \n", + "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", + " [ 0. 0.7890625 0. -398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", + " [ -0. -0.7890625 -0. 398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", + "StudyID: , type \n", + "StudyDate: 20090831, type \n", + "StudyTime: 095948.599, type \n", + "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", + "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "file written: /home/aheumann/projects/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", + "2022-10-18 18:21:43,351 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 99279, Operator ID: 50985a8f-832a-48b7-9eee-0c4a105d67f6)\u001b[39m\n", - "[2022-01-28 11:27:44,788] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2022-01-28 11:27:44,788] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2022-01-28 11:27:44,788] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2022-01-28 11:27:46,146] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2022-01-28 11:27:46,775] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file /home/aheumann/projects/monai-deploy-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2022-01-28 11:27:46,959] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1023754, Operator ID: c200d7da-3834-4f6d-80b7-4bc95e9f3b4c)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-18 18:21:46,464] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 18:21:46,465] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 18:21:46,466] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 18:21:46,467] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 18:21:46,468] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 18:21:46,469] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 18:21:46,470] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 18:21:46,471] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 18:21:46,472] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 18:21:46,473] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 18:21:46,474] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 18:21:46,475] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 18:21:46,476] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 18:21:46,477] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 18:21:46,478] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 18:21:46,480] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 18:21:46,481] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 18:21:46,482] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 18:21:46,483] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 18:21:46,484] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 18:21:46,486] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 18:21:46,487] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 18:21:46,488] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 18:21:46,489] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 18:21:46,490] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 18:21:46,491] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 18:21:46,492] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 18:21:46,493] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 18:21:46,494] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 18:21:46,495] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 18:21:46,496] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 18:21:46,497] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 18:21:46,498] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 18:21:46,499] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 18:21:46,500] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 18:21:46,501] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 18:21:46,502] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 18:21:46,503] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 18:21:46,504] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 18:21:46,505] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 18:21:46,506] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 18:21:46,507] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 18:21:46,508] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 18:21:46,509] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 18:21:46,510] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 18:21:46,511] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 18:21:46,512] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 18:21:46,513] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 18:21:46,514] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 18:21:46,515] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 18:21:46,516] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 18:21:46,517] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 18:21:46,518] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 18:21:46,519] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 18:21:46,520] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 18:21:46,522] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 18:21:46,523] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 18:21:46,524] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 18:21:46,525] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 18:21:46,526] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 18:21:46,527] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 18:21:46,528] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 18:21:46,529] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 18:21:46,530] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 18:21:46,531] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 18:21:46,532] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 18:21:46,534] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 18:21:46,535] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 18:21:46,536] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 18:21:46,537] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 18:21:46,538] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 18:21:46,539] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 18:21:46,540] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 18:21:46,541] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 18:21:46,542] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 18:21:46,543] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 18:21:46,544] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 18:21:46,545] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 18:21:46,546] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 18:21:46,547] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 18:21:46,548] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 18:21:46,549] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 18:21:46,551] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 18:21:46,552] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 18:21:46,553] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 18:21:46,554] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 18:21:46,555] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 18:21:46,556] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 18:21:46,604] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:21:46,604] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator ClaraVizOperator\u001b[39m\n", + "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 1023754, Operator ID: 79e96867-5909-4e91-bbec-c967a3745471)\u001b[39m\n", + "Box(children=(Widget(), VBox(children=(interactive(children=(Dropdown(description='View mode', index=2, options=(('Cinematic', 'CINEMATIC'), ('Slice', 'SLICE'), ('Slice Segmentation', 'SLICE_SEGMENTATION')), value='SLICE_SEGMENTATION'), Output()), _dom_classes=('widget-interact',)), interactive(children=(Dropdown(description='Camera', options=('Top', 'Right', 'Front'), value='Top'), Output()), _dom_classes=('widget-interact',))))))\n", + "\u001b[34mDone performing execution of operator ClaraVizOperator\n", "\u001b[39m\n" ] } @@ -1613,14 +1697,17 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "dicom_seg-DICOMSEG.dcm\tprediction_output\n" + "1.2.826.0.1.3680043.10.511.3.11192498220575485856132513807928919.dcm\n", + "1.2.826.0.1.3680043.10.511.3.18200202038304895722865475696382570.dcm\n", + "1.2.826.0.1.3680043.10.511.3.74687294969977766509044626310497294.dcm\n", + "prediction_output\n" ] } ], @@ -1639,187 +1726,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's package the app with [MONAI Application Packager](/developing_with_sdk/packaging_app)." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Building MONAI Application Package... Done\n", - "[2022-01-28 11:29:10,930] [INFO] (app_packager) - Successfully built my_app:latest\n" - ] - } - ], - "source": [ - "!monai-deploy package -b nvcr.io/nvidia/pytorch:21.11-py3 my_app --tag my_app:latest -m model.ts" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::{note}\n", - "Building a MONAI Application Package (Docker image) can take time. Use `-l DEBUG` option if you want to see the progress.\n", - ":::\n", - "\n", - "We can see that the Docker image is created." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "my_app latest 8430fb7497f4 1 second ago 15GB\n" - ] - } - ], - "source": [ - "!docker image ls | grep my_app" + "Clara-Viz operators added in an application are used for interactive visualization, so the application shall not be packaged with [MONAI Application Packager](/developing_with_sdk/packaging_app)." ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Executing packaged app locally\n", - "\n", - "The packaged app can be run locally through [MONAI Application Runner](/developing_with_sdk/executing_packaged_app_locally)." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Checking dependencies...\n", - "--> Verifying if \"docker\" is installed...\n", - "\n", - "--> Verifying if \"my_app:latest\" is available...\n", - "\n", - "Checking for MAP \"my_app:latest\" locally\n", - "\"my_app:latest\" found.\n", - "\n", - "Reading MONAI App Package manifest...\n", - "--> Verifying if \"nvidia-docker\" is installed...\n", - "\n", - "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: 13bce6e6-4fe4-4fdd-acd9-8b7b26fabd4d)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: 3fc4155d-2951-4ece-9f76-fed9572abe12)\u001b[39m\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - " # of series: 1\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - Series attribute value: spleen\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - Series attribute value: CT\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - Series attribute value: No series description\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-01-28 10:29:15,923] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: 1037ab83-1a52-4a94-a3bd-ad70f85ad186)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1, Operator ID: 5435a948-5ae6-441a-8a73-2c418d2b434d)\u001b[39m\n", - "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763, type \n", - "Modality: CT, type \n", - "SeriesDescription: No series description, type \n", - "PatientPosition: HFS, type \n", - "SeriesNumber: 1, type \n", - "row_pixel_spacing: 1.0, type \n", - "col_pixel_spacing: 1.0, type \n", - "depth_pixel_spacing: 1.0, type \n", - "row_direction_cosine: [-1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, -1.0, 0.0], type \n", - "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[-1. 0. 0. 0.]\n", - " [ 0. -1. 0. 0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "nifti_affine_transform: [[ 1. -0. -0. -0.]\n", - " [-0. 1. -0. -0.]\n", - " [ 0. 0. 1. 0.]\n", - " [ 0. 0. 0. 1.]], type \n", - "StudyInstanceUID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213, type \n", - "StudyID: SLICER10001, type \n", - "StudyDate: 2019-09-16, type \n", - "StudyTime: 010100.000000, type \n", - "StudyDescription: spleen, type \n", - "AccessionNumber: 1, type \n", - "selection_name: CT Series, type \n", - "file written: /var/monai/output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", - "Output Seg image pixel max value: 1\n", - "\u001b[34mDone performing execution of operator SpleenSegOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: 31cb5ca9-1fee-43a7-a14a-afef8ef757fe)\u001b[39m\n", - "[2022-01-28 10:29:21,681] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2022-01-28 10:29:21,681] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2022-01-28 10:29:21,681] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2022-01-28 10:29:23,026] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2022-01-28 10:29:23,862] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file /var/monai/output/dicom_seg-DICOMSEG.dcm\n", - "[2022-01-28 10:29:24,013] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", - "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", - "\u001b[39m\n" - ] - } - ], - "source": [ - "# Copy DICOM files are in 'dcm' folder\n", - "\n", - "# Launch the app\n", - "!monai-deploy run my_app:latest dcm output" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dicom_seg-DICOMSEG.dcm\tprediction_output\n" - ] - } - ], - "source": [ - "!ls output" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/notebooks/tutorials/06_monai_bundle_app.ipynb b/notebooks/tutorials/06_monai_bundle_app.ipynb index dbcf8039..9c0dd8f5 100644 --- a/notebooks/tutorials/06_monai_bundle_app.ipynb +++ b/notebooks/tutorials/06_monai_bundle_app.ipynb @@ -104,6 +104,7 @@ "!python -c \"import numpy\" || pip install -q \"numpy>=1.21\"\n", "!python -c \"import nibabel\" || pip install -q \"nibabel>=3.2.1\"\n", "!python -c \"import pydicom\" || pip install -q \"pydicom>=1.4.2\"\n", + "!python -c \"import highdicom\" || pip install -q \"highdicom>=0.18.2\"\n", "!python -c \"import SimpleITK\" || pip install -q \"SimpleITK>=2.0.0\"\n", "!python -c \"import typeguard\" || pip install -q \"typeguard>=2.12.1\"\n", "\n", @@ -135,21 +136,21 @@ "output_type": "stream", "text": [ "Requirement already satisfied: gdown in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (4.5.1)\n", - "Requirement already satisfied: six in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (1.16.0)\n", - "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", - "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", + "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", + "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", + "Requirement already satisfied: six in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (1.16.0)\n", "Requirement already satisfied: soupsieve>1.2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from beautifulsoup4->gdown) (2.3.2.post1)\n", "Requirement already satisfied: idna<4,>=2.5 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (3.3)\n", - "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.26.12)\n", "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.7.1)\n", "Downloading...\n", "From: https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\n", "To: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_seg_bundle_data.zip\n", - "100%|██████████████████████████████████████| 79.4M/79.4M [00:00<00:00, 81.3MB/s]\n", + "100%|██████████████████████████████████████| 79.4M/79.4M [00:00<00:00, 97.8MB/s]\n", "Archive: ai_spleen_seg_bundle_data.zip\n", " inflating: dcm/1-001.dcm \n", " inflating: dcm/1-002.dcm \n", @@ -530,22 +531,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "2022-10-11 23:19:01,992 - Begin compose\n", - "2022-10-11 23:19:01,995 - End compose\n", - "2022-10-11 23:19:01,997 - Begin run\n", + "2022-10-18 18:05:37,621 - Begin compose\n", + "2022-10-18 18:05:37,623 - End compose\n", + "2022-10-18 18:05:37,624 - Begin run\n", "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 591970, Operator ID: 7c9c0590-b4ae-4d55-97f4-0cb828ec9ce5)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1020491, Operator ID: 0e527a77-f91e-46c3-bf14-439de5e86397)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2022-10-11 23:19:03,931] [WARNING] (root) - No selection rules given; select all series.\n", - "[2022-10-11 23:19:03,932] [INFO] (root) - Working on study, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", - "[2022-10-11 23:19:03,933] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 23:19:03,934] [INFO] (root) - Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - "[2022-10-11 23:19:03,935] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" + "[2022-10-18 18:05:38,538] [WARNING] (root) - No selection rules given; select all series.\n", + "[2022-10-18 18:05:38,538] [INFO] (root) - Working on study, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "[2022-10-18 18:05:38,539] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 18:05:38,540] [INFO] (root) - Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-18 18:05:38,540] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" ] }, { @@ -555,7 +556,7 @@ "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 591970, Operator ID: 5d431cab-5bac-4d60-a5f5-aeab7194362e)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1020491, Operator ID: 4599586f-54ea-4945-93f7-1abdd960152f)\u001b[39m\n", "Working on study, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", "Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", "Working on study, instance UID: 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", @@ -563,15 +564,15 @@ "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 591970, Operator ID: bc0a400e-0edb-4a0d-ae03-910d437c3f97)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1020491, Operator ID: 822ca69d-8436-422b-9a88-82a26a3dcdbb)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", - "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 591970, Operator ID: 58d00778-de6d-4fed-97b1-bf511115b2e9)\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1020491, Operator ID: 2ea1e94f-69ce-4ece-9af0-716a99565bdc)\u001b[39m\n", "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 591970, Operator ID: 2c7c55c6-95f4-42fc-bb84-510f67278a3a)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1020491, Operator ID: f1a57c69-a36e-4492-b997-56775810c852)\u001b[39m\n" ] }, { @@ -580,103 +581,104 @@ "text": [ "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", " warnings.warn(\n", - "[2022-10-11 23:19:20,627] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-11 23:19:20,630] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-11 23:19:20,631] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-11 23:19:20,633] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-11 23:19:20,635] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-11 23:19:20,636] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-11 23:19:20,638] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-11 23:19:20,639] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-11 23:19:20,641] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-11 23:19:20,643] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-11 23:19:20,645] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-11 23:19:20,648] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-11 23:19:20,651] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-11 23:19:20,653] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-11 23:19:20,656] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-11 23:19:20,658] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-11 23:19:20,659] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-11 23:19:20,661] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-11 23:19:20,663] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-11 23:19:20,665] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-11 23:19:20,666] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-11 23:19:20,668] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-11 23:19:20,669] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-11 23:19:20,671] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-11 23:19:20,672] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-11 23:19:20,674] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-11 23:19:20,676] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-11 23:19:20,677] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-11 23:19:20,679] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-11 23:19:20,680] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-11 23:19:20,682] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-11 23:19:20,683] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-11 23:19:20,685] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-11 23:19:20,687] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-11 23:19:20,688] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-11 23:19:20,690] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-11 23:19:20,692] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-11 23:19:20,693] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-11 23:19:20,695] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-11 23:19:20,696] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-11 23:19:20,698] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-11 23:19:20,699] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-11 23:19:20,701] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-11 23:19:20,703] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-11 23:19:20,704] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-11 23:19:20,706] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-11 23:19:20,708] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-11 23:19:20,710] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-11 23:19:20,712] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-11 23:19:20,714] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-11 23:19:20,715] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-11 23:19:20,717] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-11 23:19:20,719] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-11 23:19:20,721] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-11 23:19:20,723] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-11 23:19:20,734] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-11 23:19:20,738] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-11 23:19:20,743] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-11 23:19:20,747] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-11 23:19:20,750] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-11 23:19:20,754] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-11 23:19:20,757] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-11 23:19:20,760] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-11 23:19:20,763] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-11 23:19:20,766] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-11 23:19:20,768] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-11 23:19:20,771] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-11 23:19:20,773] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-11 23:19:20,776] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-11 23:19:20,778] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-11 23:19:20,780] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-11 23:19:20,783] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-11 23:19:20,786] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-11 23:19:20,788] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-11 23:19:20,790] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-11 23:19:20,792] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-11 23:19:20,794] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-11 23:19:20,796] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-11 23:19:20,798] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-11 23:19:20,800] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-11 23:19:20,802] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-11 23:19:20,804] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-11 23:19:20,806] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-11 23:19:20,808] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-11 23:19:20,810] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-11 23:19:20,812] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-11 23:19:20,814] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-11 23:19:20,855] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 23:19:20,856] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-11 23:19:20,857] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 23:19:20,857] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-11 23:19:20,858] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-11 23:19:20,859] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 23:19:20,860] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-11 23:19:20,860] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-11 23:19:20,861] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", - "[2022-10-11 23:19:20,958] [INFO] (__main__.AISpleenSegApp) - End run\n" + "[2022-10-18 18:05:54,228] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 18:05:54,231] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 18:05:54,234] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 18:05:54,236] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 18:05:54,238] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 18:05:54,241] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 18:05:54,243] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 18:05:54,245] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 18:05:54,246] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 18:05:54,248] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 18:05:54,249] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 18:05:54,251] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 18:05:54,252] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 18:05:54,255] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 18:05:54,260] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 18:05:54,262] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 18:05:54,264] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 18:05:54,267] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 18:05:54,270] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 18:05:54,272] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 18:05:54,276] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 18:05:54,279] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 18:05:54,282] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 18:05:54,285] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 18:05:54,288] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 18:05:54,291] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 18:05:54,294] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 18:05:54,297] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 18:05:54,299] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 18:05:54,302] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 18:05:54,304] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 18:05:54,306] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 18:05:54,309] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 18:05:54,311] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 18:05:54,314] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 18:05:54,316] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 18:05:54,318] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 18:05:54,323] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 18:05:54,326] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 18:05:54,329] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 18:05:54,332] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 18:05:54,335] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 18:05:54,338] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 18:05:54,340] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 18:05:54,343] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 18:05:54,346] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 18:05:54,348] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 18:05:54,351] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 18:05:54,354] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 18:05:54,356] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 18:05:54,359] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 18:05:54,362] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 18:05:54,365] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 18:05:54,368] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 18:05:54,373] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 18:05:54,378] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 18:05:54,382] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 18:05:54,385] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 18:05:54,388] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 18:05:54,391] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 18:05:54,393] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 18:05:54,396] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 18:05:54,399] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 18:05:54,402] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 18:05:54,405] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 18:05:54,407] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 18:05:54,408] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 18:05:54,410] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 18:05:54,411] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 18:05:54,413] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 18:05:54,414] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 18:05:54,416] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 18:05:54,419] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 18:05:54,421] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 18:05:54,423] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 18:05:54,425] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 18:05:54,427] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 18:05:54,429] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 18:05:54,431] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 18:05:54,434] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 18:05:54,436] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 18:05:54,439] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 18:05:54,441] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 18:05:54,443] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 18:05:54,446] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 18:05:54,448] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 18:05:54,451] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 18:05:54,494] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:05:54,495] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 18:05:54,496] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:05:54,497] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 18:05:54,498] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 18:05:54,499] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:05:54,499] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 18:05:54,500] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 18:05:54,501] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 18:05:54,522] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n", + "[2022-10-18 18:05:54,628] [INFO] (__main__.AISpleenSegApp) - End run\n" ] }, { @@ -951,156 +953,157 @@ "name": "stdout", "output_type": "stream", "text": [ - "2022-10-11 23:19:25,485 - Begin compose\n", - "2022-10-11 23:19:25,487 - End compose\n", - "2022-10-11 23:19:25,487 - Begin run\n", + "2022-10-18 18:05:59,753 - Begin compose\n", + "2022-10-18 18:05:59,754 - End compose\n", + "2022-10-18 18:05:59,754 - Begin run\n", "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 592223, Operator ID: 38b015a0-eb26-4492-9812-68a807a397ed)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1020777, Operator ID: 2771ad3e-33fb-4038-b88a-4d853d049a81)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 592223, Operator ID: 672296f5-d713-4d98-93bd-703acd64af5a)\u001b[39m\n", - "[2022-10-11 23:19:26,615] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 23:19:26,615] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1020777, Operator ID: 44d22322-ff83-4a88-be70-5cc4223694e3)\u001b[39m\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-11 23:19:26,615] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:26,616] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-11 23:19:26,617] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-11 23:19:26,617] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:26,617] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:06:00,668] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-18 18:06:00,669] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:00,669] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 18:06:00,669] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 18:06:00,669] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:00,669] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:06:00,669] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-18 18:06:00,669] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:00,669] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 592223, Operator ID: 5847d584-c4c1-4ced-92c6-2984973326a9)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1020777, Operator ID: c649ade1-971f-4e4d-8baf-64d9db612f10)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", - "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 592223, Operator ID: 267177d2-cb80-4be5-ad88-fe2c3d529b03)\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1020777, Operator ID: d0ff1fcb-96c5-4532-b8ec-86c6aba7b0a6)\u001b[39m\n", "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 592223, Operator ID: 27914786-f3c2-4829-b68d-90a98e62e36c)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1020777, Operator ID: 47727924-4ed9-4ffc-9b34-41ff48e62b1b)\u001b[39m\n", "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", " warnings.warn(\n", - "[2022-10-11 23:19:41,297] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-11 23:19:41,298] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-11 23:19:41,299] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-11 23:19:41,300] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-11 23:19:41,301] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-11 23:19:41,302] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-11 23:19:41,303] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-11 23:19:41,304] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-11 23:19:41,305] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-11 23:19:41,306] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-11 23:19:41,307] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-11 23:19:41,308] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-11 23:19:41,309] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-11 23:19:41,310] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-11 23:19:41,311] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-11 23:19:41,312] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-11 23:19:41,313] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-11 23:19:41,314] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-11 23:19:41,315] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-11 23:19:41,316] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-11 23:19:41,317] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-11 23:19:41,318] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-11 23:19:41,319] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-11 23:19:41,321] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-11 23:19:41,322] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-11 23:19:41,322] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-11 23:19:41,323] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-11 23:19:41,324] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-11 23:19:41,325] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-11 23:19:41,326] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-11 23:19:41,327] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-11 23:19:41,328] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-11 23:19:41,329] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-11 23:19:41,330] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-11 23:19:41,331] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-11 23:19:41,332] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-11 23:19:41,333] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-11 23:19:41,334] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-11 23:19:41,335] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-11 23:19:41,336] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-11 23:19:41,337] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-11 23:19:41,338] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-11 23:19:41,339] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-11 23:19:41,340] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-11 23:19:41,341] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-11 23:19:41,342] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-11 23:19:41,343] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-11 23:19:41,344] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-11 23:19:41,345] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-11 23:19:41,346] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-11 23:19:41,347] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-11 23:19:41,348] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-11 23:19:41,349] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-11 23:19:41,350] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-11 23:19:41,351] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-11 23:19:41,352] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-11 23:19:41,353] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-11 23:19:41,354] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-11 23:19:41,355] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-11 23:19:41,356] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-11 23:19:41,357] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-11 23:19:41,358] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-11 23:19:41,360] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-11 23:19:41,361] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-11 23:19:41,362] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-11 23:19:41,363] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-11 23:19:41,364] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-11 23:19:41,365] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-11 23:19:41,366] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-11 23:19:41,367] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-11 23:19:41,368] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-11 23:19:41,369] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-11 23:19:41,370] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-11 23:19:41,371] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-11 23:19:41,372] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-11 23:19:41,373] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-11 23:19:41,374] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-11 23:19:41,375] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-11 23:19:41,376] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-11 23:19:41,377] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-11 23:19:41,378] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-11 23:19:41,379] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-11 23:19:41,380] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-11 23:19:41,381] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-11 23:19:41,382] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-11 23:19:41,383] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-11 23:19:41,384] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-11 23:19:41,422] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-11 23:19:41,423] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 18:06:16,288] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 18:06:16,289] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 18:06:16,290] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 18:06:16,292] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 18:06:16,293] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 18:06:16,294] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 18:06:16,295] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 18:06:16,296] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 18:06:16,297] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 18:06:16,298] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 18:06:16,299] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 18:06:16,300] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 18:06:16,301] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 18:06:16,302] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 18:06:16,303] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 18:06:16,304] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 18:06:16,305] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 18:06:16,306] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 18:06:16,307] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 18:06:16,308] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 18:06:16,309] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 18:06:16,310] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 18:06:16,311] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 18:06:16,312] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 18:06:16,313] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 18:06:16,315] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 18:06:16,316] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 18:06:16,317] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 18:06:16,318] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 18:06:16,319] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 18:06:16,320] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 18:06:16,321] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 18:06:16,322] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 18:06:16,324] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 18:06:16,325] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 18:06:16,326] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 18:06:16,327] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 18:06:16,328] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 18:06:16,329] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 18:06:16,330] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 18:06:16,331] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 18:06:16,332] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 18:06:16,333] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 18:06:16,334] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 18:06:16,335] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 18:06:16,337] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 18:06:16,338] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 18:06:16,339] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 18:06:16,340] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 18:06:16,341] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 18:06:16,342] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 18:06:16,343] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 18:06:16,344] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 18:06:16,346] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 18:06:16,347] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 18:06:16,349] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 18:06:16,350] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 18:06:16,351] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 18:06:16,353] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 18:06:16,354] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 18:06:16,355] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 18:06:16,356] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 18:06:16,358] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 18:06:16,359] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 18:06:16,360] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 18:06:16,361] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 18:06:16,362] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 18:06:16,363] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 18:06:16,364] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 18:06:16,365] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 18:06:16,366] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 18:06:16,367] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 18:06:16,368] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 18:06:16,369] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 18:06:16,370] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 18:06:16,372] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 18:06:16,373] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 18:06:16,374] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 18:06:16,375] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 18:06:16,376] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 18:06:16,377] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 18:06:16,378] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 18:06:16,380] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 18:06:16,381] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 18:06:16,382] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 18:06:16,383] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 18:06:16,384] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 18:06:16,425] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:06:16,425] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 18:06:16,425] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:06:16,425] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 18:06:16,425] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 18:06:16,425] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:06:16,425] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 18:06:16,426] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 18:06:16,426] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 18:06:16,436] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", - "[2022-10-11 23:19:41,513] [INFO] (app.AISpleenSegApp) - End run\n" + "[2022-10-18 18:06:16,521] [INFO] (app.AISpleenSegApp) - End run\n" ] } ], @@ -1124,156 +1127,157 @@ "name": "stdout", "output_type": "stream", "text": [ - "2022-10-11 23:19:45,558 - Begin compose\n", - "2022-10-11 23:19:45,560 - End compose\n", - "2022-10-11 23:19:45,560 - Begin run\n", + "2022-10-18 18:06:21,346 - Begin compose\n", + "2022-10-18 18:06:21,349 - End compose\n", + "2022-10-18 18:06:21,349 - Begin run\n", "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 592286, Operator ID: bf2be83d-cff1-48de-87c7-19b6feaa8bf6)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1020839, Operator ID: cd6de9f0-8a20-4c8e-ac40-e5bc1fa7c7e2)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 592286, Operator ID: d13e582d-c5db-40aa-9376-5757de53e312)\u001b[39m\n", - "[2022-10-11 23:19:46,620] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 23:19:46,620] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1020839, Operator ID: 99f613a7-c853-4076-bc0e-e12db550cb78)\u001b[39m\n", + "[2022-10-18 18:06:22,381] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 18:06:22,381] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-11 23:19:46,620] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 23:19:46,620] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-11 23:19:46,621] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 18:06:22,382] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 592286, Operator ID: 0cdff929-93dd-4736-a36d-47f4f72a862f)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1020839, Operator ID: 2e372081-a30f-44f2-bc7d-8ba10cee8708)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", - "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 592286, Operator ID: 61803275-93cd-4709-bd80-362ad85fa6dc)\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1020839, Operator ID: 15b8db9a-fa17-4291-b1c3-f61716d6bfa3)\u001b[39m\n", "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 592286, Operator ID: 526509f7-e0e2-45de-b1f1-89b77e51e902)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1020839, Operator ID: 86e7f92c-d707-4cf2-8ce6-95c72c0205ef)\u001b[39m\n", "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", " warnings.warn(\n", - "[2022-10-11 23:20:01,185] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-11 23:20:01,186] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-11 23:20:01,187] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-11 23:20:01,188] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-11 23:20:01,189] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-11 23:20:01,190] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-11 23:20:01,191] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-11 23:20:01,192] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-11 23:20:01,193] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-11 23:20:01,194] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-11 23:20:01,195] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-11 23:20:01,196] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-11 23:20:01,197] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-11 23:20:01,198] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-11 23:20:01,199] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-11 23:20:01,200] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-11 23:20:01,201] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-11 23:20:01,202] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-11 23:20:01,203] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-11 23:20:01,205] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-11 23:20:01,206] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-11 23:20:01,207] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-11 23:20:01,208] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-11 23:20:01,209] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-11 23:20:01,210] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-11 23:20:01,211] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-11 23:20:01,212] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-11 23:20:01,213] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-11 23:20:01,214] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-11 23:20:01,215] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-11 23:20:01,216] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-11 23:20:01,217] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-11 23:20:01,218] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-11 23:20:01,219] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-11 23:20:01,220] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-11 23:20:01,221] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-11 23:20:01,222] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-11 23:20:01,223] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-11 23:20:01,224] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-11 23:20:01,225] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-11 23:20:01,226] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-11 23:20:01,227] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-11 23:20:01,229] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-11 23:20:01,230] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-11 23:20:01,231] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-11 23:20:01,232] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-11 23:20:01,233] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-11 23:20:01,234] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-11 23:20:01,235] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-11 23:20:01,236] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-11 23:20:01,237] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-11 23:20:01,238] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-11 23:20:01,239] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-11 23:20:01,240] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-11 23:20:01,241] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-11 23:20:01,243] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-11 23:20:01,244] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-11 23:20:01,245] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-11 23:20:01,247] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-11 23:20:01,248] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-11 23:20:01,249] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-11 23:20:01,250] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-11 23:20:01,251] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-11 23:20:01,252] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-11 23:20:01,253] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-11 23:20:01,254] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-11 23:20:01,255] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-11 23:20:01,256] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-11 23:20:01,257] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-11 23:20:01,258] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-11 23:20:01,259] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-11 23:20:01,260] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-11 23:20:01,261] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-11 23:20:01,262] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-11 23:20:01,263] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-11 23:20:01,264] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-11 23:20:01,265] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-11 23:20:01,266] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-11 23:20:01,267] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-11 23:20:01,268] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-11 23:20:01,270] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-11 23:20:01,271] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-11 23:20:01,272] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-11 23:20:01,273] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-11 23:20:01,274] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-11 23:20:01,275] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-11 23:20:01,276] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-11 23:20:01,316] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 23:20:01,316] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-11 23:20:01,316] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 23:20:01,316] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-11 23:20:01,317] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-11 23:20:01,317] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-11 23:20:01,317] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-11 23:20:01,317] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-11 23:20:01,317] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 18:06:37,911] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 18:06:37,913] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 18:06:37,914] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 18:06:37,915] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 18:06:37,916] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 18:06:37,917] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 18:06:37,918] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 18:06:37,919] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 18:06:37,920] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 18:06:37,921] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 18:06:37,922] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 18:06:37,923] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 18:06:37,924] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 18:06:37,925] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 18:06:37,926] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 18:06:37,927] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 18:06:37,928] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 18:06:37,929] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 18:06:37,930] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 18:06:37,931] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 18:06:37,932] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 18:06:37,933] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 18:06:37,934] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 18:06:37,935] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 18:06:37,936] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 18:06:37,937] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 18:06:37,938] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 18:06:37,939] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 18:06:37,940] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 18:06:37,941] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 18:06:37,942] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 18:06:37,943] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 18:06:37,945] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 18:06:37,946] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 18:06:37,947] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 18:06:37,948] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 18:06:37,949] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 18:06:37,950] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 18:06:37,951] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 18:06:37,952] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 18:06:37,953] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 18:06:37,954] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 18:06:37,955] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 18:06:37,956] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 18:06:37,957] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 18:06:37,958] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 18:06:37,960] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 18:06:37,961] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 18:06:37,962] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 18:06:37,963] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 18:06:37,964] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 18:06:37,966] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 18:06:37,967] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 18:06:37,968] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 18:06:37,969] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 18:06:37,970] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 18:06:37,972] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 18:06:37,973] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 18:06:37,974] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 18:06:37,975] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 18:06:37,976] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 18:06:37,977] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 18:06:37,978] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 18:06:37,980] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 18:06:37,981] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 18:06:37,982] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 18:06:37,983] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 18:06:37,984] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 18:06:37,985] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 18:06:37,986] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 18:06:37,987] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 18:06:37,989] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 18:06:37,990] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 18:06:37,991] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 18:06:37,992] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 18:06:37,993] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 18:06:37,994] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 18:06:37,995] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 18:06:37,996] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 18:06:37,998] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 18:06:37,999] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 18:06:38,000] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 18:06:38,001] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 18:06:38,002] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 18:06:38,003] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 18:06:38,004] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 18:06:38,005] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 18:06:38,045] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:06:38,046] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 18:06:38,046] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:06:38,046] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 18:06:38,046] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 18:06:38,046] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 18:06:38,046] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 18:06:38,046] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 18:06:38,047] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 18:06:38,057] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", - "[2022-10-11 23:20:01,413] [INFO] (app.AISpleenSegApp) - End run\n" + "[2022-10-18 18:06:38,143] [INFO] (app.AISpleenSegApp) - End run\n" ] } ], @@ -1292,9 +1296,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "1.2.826.0.1.3680043.10.511.3.39847376485312952059071814082872364.dcm\n", - "1.2.826.0.1.3680043.10.511.3.65358466040336222587469743448756625.dcm\n", - "1.2.826.0.1.3680043.10.511.3.97759908331215885912830153660777122.dcm\n" + "1.2.826.0.1.3680043.10.511.3.12041615526490041922994303524987331.dcm\n", + "1.2.826.0.1.3680043.10.511.3.46164851841087364253778499084246156.dcm\n", + "1.2.826.0.1.3680043.10.511.3.59253586144990251681167260565313540.dcm\n" ] } ], @@ -1325,10 +1329,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "[2022-10-11 23:20:06,194] [INFO] (root) - Begin compose\n", - "[2022-10-11 23:20:06,196] [INFO] (root) - End compose\n", + "[2022-10-18 18:06:43,671] [INFO] (root) - Begin compose\n", + "[2022-10-18 18:06:43,673] [INFO] (root) - End compose\n", "Building MONAI Application Package... Done\n", - "[2022-10-11 23:20:10,106] [INFO] (app_packager) - Successfully built my_app:latest\n" + "[2022-10-18 18:07:05,945] [INFO] (app_packager) - Successfully built my_app:latest\n" ] } ], @@ -1356,7 +1360,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "my_app latest 40ee7906a957 6 seconds ago 15.1GB\n" + "my_app latest cb63d46f6b85 4 seconds ago 15.1GB\n" ] } ], @@ -1393,158 +1397,159 @@ "Reading MONAI App Package manifest...\n", "--> Verifying if \"nvidia-docker\" is installed...\n", "\n", - "/opt/conda/lib/python3.8/site-packages/scipy/__init__.py:138: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.3)\n", + "/opt/conda/lib/python3.8/site-packages/scipy/__init__.py:138: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.4)\n", " warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion} is required for this version of \"\n", - "2022-10-12 06:20:28,787 - Begin compose\n", - "2022-10-12 06:20:28,789 - End compose\n", - "2022-10-12 06:20:28,789 - Begin run\n", + "2022-10-19 01:07:20,302 - Begin compose\n", + "2022-10-19 01:07:20,304 - End compose\n", + "2022-10-19 01:07:20,304 - Begin run\n", "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: 4e3456c3-5bd9-4a75-87b7-c7737a5d6d62)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: 2b5b3f81-8010-442f-b119-85c5ed42a6a6)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: cb7ccde8-3bdb-4137-b6b7-9a963ecde038)\u001b[39m\n", - "[2022-10-12 06:20:29,916] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-12 06:20:29,916] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: 9f226d1c-84cb-4569-9067-195ea5ed5248)\u001b[39m\n", + "[2022-10-19 01:07:21,460] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-19 01:07:21,460] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-12 06:20:29,916] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-12 06:20:29,916] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-12 06:20:29,916] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-12 06:20:29,916] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 06:20:29,917] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-12 06:20:29,917] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-12 06:20:29,917] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 06:20:29,917] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-19 01:07:21,460] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-19 01:07:21,461] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-19 01:07:21,461] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-19 01:07:21,461] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", " # of series: 1\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-12 06:20:29,918] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - Series attribute StudyDescription value: spleen\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:07:21,462] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-19 01:07:21,463] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-19 01:07:21,463] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:07:21,463] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-19 01:07:21,463] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", + "[2022-10-19 01:07:21,463] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 01:07:21,463] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: f3413742-bbf3-4cd7-af00-f02ee854a222)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: 3b219d8c-e5aa-4314-a002-a92a78aa247d)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", - "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1, Operator ID: 4b3e45b2-7b24-4899-a791-c6f94b5cf944)\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1, Operator ID: 832ca868-4163-4a99-aa28-542908a26b79)\u001b[39m\n", "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: 478f74c1-86b4-4c31-8e98-965c2133197b)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: c7867e7d-5bc8-45ed-a368-7965e49ea8b1)\u001b[39m\n", "/root/.local/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", " warnings.warn(\n", - "[2022-10-12 06:20:47,797] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-12 06:20:47,799] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-12 06:20:47,800] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-12 06:20:47,802] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-12 06:20:47,803] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-12 06:20:47,804] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-12 06:20:47,806] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-12 06:20:47,807] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-12 06:20:47,809] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-12 06:20:47,810] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-12 06:20:47,811] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-12 06:20:47,813] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-12 06:20:47,814] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-12 06:20:47,816] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-12 06:20:47,817] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-12 06:20:47,818] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-12 06:20:47,820] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-12 06:20:47,821] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-12 06:20:47,823] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-12 06:20:47,824] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-12 06:20:47,825] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-12 06:20:47,827] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-12 06:20:47,828] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-12 06:20:47,830] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-12 06:20:47,831] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-12 06:20:47,833] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-12 06:20:47,834] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-12 06:20:47,836] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-12 06:20:47,837] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-12 06:20:47,839] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-12 06:20:47,840] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-12 06:20:47,842] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-12 06:20:47,843] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-12 06:20:47,844] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-12 06:20:47,846] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-12 06:20:47,847] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-12 06:20:47,849] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-12 06:20:47,850] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-12 06:20:47,852] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-12 06:20:47,853] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-12 06:20:47,855] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-12 06:20:47,856] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-12 06:20:47,858] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-12 06:20:47,859] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-12 06:20:47,860] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-12 06:20:47,862] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-12 06:20:47,863] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-12 06:20:47,865] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-12 06:20:47,866] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-12 06:20:47,868] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-12 06:20:47,869] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-12 06:20:47,871] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-12 06:20:47,872] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-12 06:20:47,874] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-12 06:20:47,875] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-12 06:20:47,877] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-12 06:20:47,878] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-12 06:20:47,880] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-12 06:20:47,881] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-12 06:20:47,883] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-12 06:20:47,884] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-12 06:20:47,886] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-12 06:20:47,887] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-12 06:20:47,889] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-12 06:20:47,890] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-12 06:20:47,892] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-12 06:20:47,893] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-12 06:20:47,895] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-12 06:20:47,896] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-12 06:20:47,898] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-12 06:20:47,899] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-12 06:20:47,901] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-12 06:20:47,903] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-12 06:20:47,904] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-12 06:20:47,906] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-12 06:20:47,908] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-12 06:20:47,909] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-12 06:20:47,911] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-12 06:20:47,912] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-12 06:20:47,914] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-12 06:20:47,915] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-12 06:20:47,917] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-12 06:20:47,918] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-12 06:20:47,920] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-12 06:20:47,922] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-12 06:20:47,923] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-12 06:20:47,925] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-12 06:20:47,964] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-12 06:20:47,965] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-12 06:20:47,965] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-19 01:07:36,076] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-19 01:07:36,078] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-19 01:07:36,079] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-19 01:07:36,081] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-19 01:07:36,082] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-19 01:07:36,084] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-19 01:07:36,085] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-19 01:07:36,086] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-19 01:07:36,088] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-19 01:07:36,089] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-19 01:07:36,091] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-19 01:07:36,092] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-19 01:07:36,093] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-19 01:07:36,095] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-19 01:07:36,096] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-19 01:07:36,098] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-19 01:07:36,099] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-19 01:07:36,101] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-19 01:07:36,102] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-19 01:07:36,103] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-19 01:07:36,105] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-19 01:07:36,106] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-19 01:07:36,108] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-19 01:07:36,109] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-19 01:07:36,111] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-19 01:07:36,112] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-19 01:07:36,114] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-19 01:07:36,115] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-19 01:07:36,117] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-19 01:07:36,118] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-19 01:07:36,120] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-19 01:07:36,121] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-19 01:07:36,123] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-19 01:07:36,125] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-19 01:07:36,126] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-19 01:07:36,128] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-19 01:07:36,129] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-19 01:07:36,130] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-19 01:07:36,132] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-19 01:07:36,133] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-19 01:07:36,135] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-19 01:07:36,136] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-19 01:07:36,138] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-19 01:07:36,139] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-19 01:07:36,141] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-19 01:07:36,142] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-19 01:07:36,144] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-19 01:07:36,145] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-19 01:07:36,146] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-19 01:07:36,148] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-19 01:07:36,149] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-19 01:07:36,151] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-19 01:07:36,152] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-19 01:07:36,154] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-19 01:07:36,155] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-19 01:07:36,157] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-19 01:07:36,158] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-19 01:07:36,160] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-19 01:07:36,161] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-19 01:07:36,163] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-19 01:07:36,164] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-19 01:07:36,166] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-19 01:07:36,167] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-19 01:07:36,169] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-19 01:07:36,170] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-19 01:07:36,172] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-19 01:07:36,173] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-19 01:07:36,175] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-19 01:07:36,176] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-19 01:07:36,178] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-19 01:07:36,179] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-19 01:07:36,181] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-19 01:07:36,182] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-19 01:07:36,184] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-19 01:07:36,186] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-19 01:07:36,187] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-19 01:07:36,189] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-19 01:07:36,190] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-19 01:07:36,192] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-19 01:07:36,193] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-19 01:07:36,195] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-19 01:07:36,196] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-19 01:07:36,198] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-19 01:07:36,199] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-19 01:07:36,201] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-19 01:07:36,203] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-19 01:07:36,204] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-19 01:07:36,243] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-19 01:07:36,243] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-19 01:07:36,243] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-19 01:07:36,243] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-19 01:07:36,244] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-19 01:07:36,244] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-19 01:07:36,244] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-19 01:07:36,244] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-19 01:07:36,245] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-19 01:07:36,262] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", - "[2022-10-12 06:20:48,103] [INFO] (__main__.AISpleenSegApp) - End run\n" + "[2022-10-19 01:07:36,385] [INFO] (__main__.AISpleenSegApp) - End run\n" ] } ], @@ -1564,10 +1569,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "1.2.826.0.1.3680043.10.511.3.12073638797197701526521011456573587.dcm\n", - "1.2.826.0.1.3680043.10.511.3.39847376485312952059071814082872364.dcm\n", - "1.2.826.0.1.3680043.10.511.3.65358466040336222587469743448756625.dcm\n", - "1.2.826.0.1.3680043.10.511.3.97759908331215885912830153660777122.dcm\n" + "1.2.826.0.1.3680043.10.511.3.10344779550124226469948949035444422.dcm\n", + "1.2.826.0.1.3680043.10.511.3.12041615526490041922994303524987331.dcm\n", + "1.2.826.0.1.3680043.10.511.3.46164851841087364253778499084246156.dcm\n", + "1.2.826.0.1.3680043.10.511.3.59253586144990251681167260565313540.dcm\n" ] } ], diff --git a/setup.cfg b/setup.cfg index aec9f6c0..3ffe071f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -11,7 +11,7 @@ license = Apache License 2.0 license_files = LICENSE project_urls = - Documentation=https://docs.monai.io/ + Documentation=https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/ Bug Tracker=https://github.com/Project-MONAI/monai-deploy-app-sdk/issues Source Code=https://github.com/Project-MONAI/monai-deploy-app-sdk From e3089ec794cc63f1053e3ef5535fe052501f3c3a Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Tue, 18 Oct 2022 21:20:47 -0700 Subject: [PATCH 022/216] Add missed change (#374) Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- .../operators/dicom_seg_writer_operator.py | 5 +- notebooks/tutorials/03_segmentation_app.ipynb | 1172 +---------------- 2 files changed, 43 insertions(+), 1134 deletions(-) diff --git a/monai/deploy/operators/dicom_seg_writer_operator.py b/monai/deploy/operators/dicom_seg_writer_operator.py index e9f2d8d9..4de8f6ba 100644 --- a/monai/deploy/operators/dicom_seg_writer_operator.py +++ b/monai/deploy/operators/dicom_seg_writer_operator.py @@ -305,7 +305,10 @@ def create_dicom_seg(self, image: np.ndarray, dicom_series: DICOMSeries, output_ for k, v in self._custom_tags.items(): if isinstance(k, str) and isinstance(v, str): try: - seg[k].value = v + if k in seg: + seg.data_element(k).value = v + else: + seg.update({k: v}) except Exception as ex: # Best effort for now. logging.warning(f"Tag {k} was not written, due to {ex}") diff --git a/notebooks/tutorials/03_segmentation_app.ipynb b/notebooks/tutorials/03_segmentation_app.ipynb index 7a1b6a44..fb0af512 100644 --- a/notebooks/tutorials/03_segmentation_app.ipynb +++ b/notebooks/tutorials/03_segmentation_app.ipynb @@ -94,7 +94,15 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "^C\n" + ] + } + ], "source": [ "# Install MONAI and other necessary image processing packages for the application\n", "!python -c \"import monai\" || pip install --upgrade -q \"monai\"\n", @@ -126,238 +134,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: gdown in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (4.5.1)\n", - "Requirement already satisfied: six in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (1.16.0)\n", - "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", - "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", - "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", - "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", - "Requirement already satisfied: soupsieve>1.2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from beautifulsoup4->gdown) (2.3.2.post1)\n", - "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.26.12)\n", - "Requirement already satisfied: idna<4,>=2.5 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (3.3)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", - "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", - "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.7.1)\n", - "Downloading...\n", - "From: https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\n", - "To: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_seg_bundle_data.zip\n", - "100%|██████████████████████████████████████| 79.4M/79.4M [00:01<00:00, 65.5MB/s]\n", - "Archive: ai_spleen_seg_bundle_data.zip\n", - " inflating: dcm/1-001.dcm \n", - " inflating: dcm/1-002.dcm \n", - " inflating: dcm/1-003.dcm \n", - " inflating: dcm/1-004.dcm \n", - " inflating: dcm/1-005.dcm \n", - " inflating: dcm/1-006.dcm \n", - " inflating: dcm/1-007.dcm \n", - " inflating: dcm/1-008.dcm \n", - " inflating: dcm/1-009.dcm \n", - " inflating: dcm/1-010.dcm \n", - " inflating: dcm/1-011.dcm \n", - " inflating: dcm/1-012.dcm \n", - " inflating: dcm/1-013.dcm \n", - " inflating: dcm/1-014.dcm \n", - " inflating: dcm/1-015.dcm \n", - " inflating: dcm/1-016.dcm \n", - " inflating: dcm/1-017.dcm \n", - " inflating: dcm/1-018.dcm \n", - " inflating: dcm/1-019.dcm \n", - " inflating: dcm/1-020.dcm \n", - " inflating: dcm/1-021.dcm \n", - " inflating: dcm/1-022.dcm \n", - " inflating: dcm/1-023.dcm \n", - " inflating: dcm/1-024.dcm \n", - " inflating: dcm/1-025.dcm \n", - " inflating: dcm/1-026.dcm \n", - " inflating: dcm/1-027.dcm \n", - " inflating: dcm/1-028.dcm \n", - " inflating: dcm/1-029.dcm \n", - " inflating: dcm/1-030.dcm \n", - " inflating: dcm/1-031.dcm \n", - " inflating: dcm/1-032.dcm \n", - " inflating: dcm/1-033.dcm \n", - " inflating: dcm/1-034.dcm \n", - " inflating: dcm/1-035.dcm \n", - " inflating: dcm/1-036.dcm \n", - " inflating: dcm/1-037.dcm \n", - " inflating: dcm/1-038.dcm \n", - " inflating: dcm/1-039.dcm \n", - " inflating: dcm/1-040.dcm \n", - " inflating: dcm/1-041.dcm \n", - " inflating: dcm/1-042.dcm \n", - " inflating: dcm/1-043.dcm \n", - " inflating: dcm/1-044.dcm \n", - " inflating: dcm/1-045.dcm \n", - " inflating: dcm/1-046.dcm \n", - " inflating: dcm/1-047.dcm \n", - " inflating: dcm/1-048.dcm \n", - " inflating: dcm/1-049.dcm \n", - " inflating: dcm/1-050.dcm \n", - " inflating: dcm/1-051.dcm \n", - " inflating: dcm/1-052.dcm \n", - " inflating: dcm/1-053.dcm \n", - " inflating: dcm/1-054.dcm \n", - " inflating: dcm/1-055.dcm \n", - " inflating: dcm/1-056.dcm \n", - " inflating: dcm/1-057.dcm \n", - " inflating: dcm/1-058.dcm \n", - " inflating: dcm/1-059.dcm \n", - " inflating: dcm/1-060.dcm \n", - " inflating: dcm/1-061.dcm \n", - " inflating: dcm/1-062.dcm \n", - " inflating: dcm/1-063.dcm \n", - " inflating: dcm/1-064.dcm \n", - " inflating: dcm/1-065.dcm \n", - " inflating: dcm/1-066.dcm \n", - " inflating: dcm/1-067.dcm \n", - " inflating: dcm/1-068.dcm \n", - " inflating: dcm/1-069.dcm \n", - " inflating: dcm/1-070.dcm \n", - " inflating: dcm/1-071.dcm \n", - " inflating: dcm/1-072.dcm \n", - " inflating: dcm/1-073.dcm \n", - " inflating: dcm/1-074.dcm \n", - " inflating: dcm/1-075.dcm \n", - " inflating: dcm/1-076.dcm \n", - " inflating: dcm/1-077.dcm \n", - " inflating: dcm/1-078.dcm \n", - " inflating: dcm/1-079.dcm \n", - " inflating: dcm/1-080.dcm \n", - " inflating: dcm/1-081.dcm \n", - " inflating: dcm/1-082.dcm \n", - " inflating: dcm/1-083.dcm \n", - " inflating: dcm/1-084.dcm \n", - " inflating: dcm/1-085.dcm \n", - " inflating: dcm/1-086.dcm \n", - " inflating: dcm/1-087.dcm \n", - " inflating: dcm/1-088.dcm \n", - " inflating: dcm/1-089.dcm \n", - " inflating: dcm/1-090.dcm \n", - " inflating: dcm/1-091.dcm \n", - " inflating: dcm/1-092.dcm \n", - " inflating: dcm/1-093.dcm \n", - " inflating: dcm/1-094.dcm \n", - " inflating: dcm/1-095.dcm \n", - " inflating: dcm/1-096.dcm \n", - " inflating: dcm/1-097.dcm \n", - " inflating: dcm/1-098.dcm \n", - " inflating: dcm/1-099.dcm \n", - " inflating: dcm/1-100.dcm \n", - " inflating: dcm/1-101.dcm \n", - " inflating: dcm/1-102.dcm \n", - " inflating: dcm/1-103.dcm \n", - " inflating: dcm/1-104.dcm \n", - " inflating: dcm/1-105.dcm \n", - " inflating: dcm/1-106.dcm \n", - " inflating: dcm/1-107.dcm \n", - " inflating: dcm/1-108.dcm \n", - " inflating: dcm/1-109.dcm \n", - " inflating: dcm/1-110.dcm \n", - " inflating: dcm/1-111.dcm \n", - " inflating: dcm/1-112.dcm \n", - " inflating: dcm/1-113.dcm \n", - " inflating: dcm/1-114.dcm \n", - " inflating: dcm/1-115.dcm \n", - " inflating: dcm/1-116.dcm \n", - " inflating: dcm/1-117.dcm \n", - " inflating: dcm/1-118.dcm \n", - " inflating: dcm/1-119.dcm \n", - " inflating: dcm/1-120.dcm \n", - " inflating: dcm/1-121.dcm \n", - " inflating: dcm/1-122.dcm \n", - " inflating: dcm/1-123.dcm \n", - " inflating: dcm/1-124.dcm \n", - " inflating: dcm/1-125.dcm \n", - " inflating: dcm/1-126.dcm \n", - " inflating: dcm/1-127.dcm \n", - " inflating: dcm/1-128.dcm \n", - " inflating: dcm/1-129.dcm \n", - " inflating: dcm/1-130.dcm \n", - " inflating: dcm/1-131.dcm \n", - " inflating: dcm/1-132.dcm \n", - " inflating: dcm/1-133.dcm \n", - " inflating: dcm/1-134.dcm \n", - " inflating: dcm/1-135.dcm \n", - " inflating: dcm/1-136.dcm \n", - " inflating: dcm/1-137.dcm \n", - " inflating: dcm/1-138.dcm \n", - " inflating: dcm/1-139.dcm \n", - " inflating: dcm/1-140.dcm \n", - " inflating: dcm/1-141.dcm \n", - " inflating: dcm/1-142.dcm \n", - " inflating: dcm/1-143.dcm \n", - " inflating: dcm/1-144.dcm \n", - " inflating: dcm/1-145.dcm \n", - " inflating: dcm/1-146.dcm \n", - " inflating: dcm/1-147.dcm \n", - " inflating: dcm/1-148.dcm \n", - " inflating: dcm/1-149.dcm \n", - " inflating: dcm/1-150.dcm \n", - " inflating: dcm/1-151.dcm \n", - " inflating: dcm/1-152.dcm \n", - " inflating: dcm/1-153.dcm \n", - " inflating: dcm/1-154.dcm \n", - " inflating: dcm/1-155.dcm \n", - " inflating: dcm/1-156.dcm \n", - " inflating: dcm/1-157.dcm \n", - " inflating: dcm/1-158.dcm \n", - " inflating: dcm/1-159.dcm \n", - " inflating: dcm/1-160.dcm \n", - " inflating: dcm/1-161.dcm \n", - " inflating: dcm/1-162.dcm \n", - " inflating: dcm/1-163.dcm \n", - " inflating: dcm/1-164.dcm \n", - " inflating: dcm/1-165.dcm \n", - " inflating: dcm/1-166.dcm \n", - " inflating: dcm/1-167.dcm \n", - " inflating: dcm/1-168.dcm \n", - " inflating: dcm/1-169.dcm \n", - " inflating: dcm/1-170.dcm \n", - " inflating: dcm/1-171.dcm \n", - " inflating: dcm/1-172.dcm \n", - " inflating: dcm/1-173.dcm \n", - " inflating: dcm/1-174.dcm \n", - " inflating: dcm/1-175.dcm \n", - " inflating: dcm/1-176.dcm \n", - " inflating: dcm/1-177.dcm \n", - " inflating: dcm/1-178.dcm \n", - " inflating: dcm/1-179.dcm \n", - " inflating: dcm/1-180.dcm \n", - " inflating: dcm/1-181.dcm \n", - " inflating: dcm/1-182.dcm \n", - " inflating: dcm/1-183.dcm \n", - " inflating: dcm/1-184.dcm \n", - " inflating: dcm/1-185.dcm \n", - " inflating: dcm/1-186.dcm \n", - " inflating: dcm/1-187.dcm \n", - " inflating: dcm/1-188.dcm \n", - " inflating: dcm/1-189.dcm \n", - " inflating: dcm/1-190.dcm \n", - " inflating: dcm/1-191.dcm \n", - " inflating: dcm/1-192.dcm \n", - " inflating: dcm/1-193.dcm \n", - " inflating: dcm/1-194.dcm \n", - " inflating: dcm/1-195.dcm \n", - " inflating: dcm/1-196.dcm \n", - " inflating: dcm/1-197.dcm \n", - " inflating: dcm/1-198.dcm \n", - " inflating: dcm/1-199.dcm \n", - " inflating: dcm/1-200.dcm \n", - " inflating: dcm/1-201.dcm \n", - " inflating: dcm/1-202.dcm \n", - " inflating: dcm/1-203.dcm \n", - " inflating: dcm/1-204.dcm \n", - " inflating: model.ts \n" - ] - } - ], + "outputs": [], "source": [ "# Download ai_spleen_bundle_data test data zip file\n", "!pip install gdown \n", @@ -378,7 +157,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -441,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -547,7 +326,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -657,224 +436,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1019435, Operator ID: 89c54ae4-ecee-4226-b209-149cefcdffec)\u001b[39m\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[2022-10-18 17:58:39,522] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 17:58:39,523] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", - " # of series: 1\n", - "[2022-10-18 17:58:39,523] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 17:58:39,524] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:58:39,525] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-18 17:58:39,526] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:58:39,527] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 17:58:39,530] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 17:58:39,531] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:58:39,532] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:58:39,532] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-18 17:58:39,533] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:58:39,533] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 17:58:39,534] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 17:58:39,535] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 17:58:39,536] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 17:58:39,536] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - " # of series: 1\n", - "[2022-10-18 17:58:39,537] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-18 17:58:39,538] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:58:39,538] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-18 17:58:39,539] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:58:39,539] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 17:58:39,540] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 17:58:39,541] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:58:39,541] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:58:39,542] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-18 17:58:39,542] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:58:39,543] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 17:58:39,544] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 17:58:39,544] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1019435, Operator ID: 119fc15c-258f-48e8-b963-9425de0df7a8)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1019435, Operator ID: c0b16856-6c62-4edb-ba2d-82de7ae3dc7b)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1019435, Operator ID: 660a1854-11b8-48a6-bf38-5072a3815213)\u001b[39m\n", - "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", - "SeriesDate: 20090831, type \n", - "SeriesTime: 101721.452, type \n", - "Modality: CT, type \n", - "SeriesDescription: ABD/PANC 3.0 B31f, type \n", - "PatientPosition: HFS, type \n", - "SeriesNumber: 8, type \n", - "row_pixel_spacing: 0.7890625, type \n", - "col_pixel_spacing: 0.7890625, type \n", - "depth_pixel_spacing: 1.5, type \n", - "row_direction_cosine: [1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, 1.0, 0.0], type \n", - "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", - " [ 0. 0.7890625 0. -398.60547 ]\n", - " [ 0. 0. 1.5 -383. ]\n", - " [ 0. 0. 0. 1. ]], type \n", - "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", - " [ -0. -0.7890625 -0. 398.60547 ]\n", - " [ 0. 0. 1.5 -383. ]\n", - " [ 0. 0. 0. 1. ]], type \n", - "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", - "StudyID: , type \n", - "StudyDate: 20090831, type \n", - "StudyTime: 095948.599, type \n", - "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", - "AccessionNumber: 5471978513296937, type \n", - "selection_name: CT Series, type \n", - "2022-10-18 17:58:53,479 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", - "Output Seg image numpy array shaped: (204, 512, 512)\n", - "Output Seg image pixel max value: 1\n", - "\u001b[34mDone performing execution of operator SpleenSegOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1019435, Operator ID: bae7d05c-d71a-4415-836b-a94202ae6c5b)\u001b[39m\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", - " warnings.warn(\n", - "[2022-10-18 17:58:57,104] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-18 17:58:57,107] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-18 17:58:57,110] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-18 17:58:57,112] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-18 17:58:57,115] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-18 17:58:57,117] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-18 17:58:57,120] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-18 17:58:57,123] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-18 17:58:57,125] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-18 17:58:57,128] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-18 17:58:57,130] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-18 17:58:57,133] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-18 17:58:57,136] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-18 17:58:57,139] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-18 17:58:57,142] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-18 17:58:57,145] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-18 17:58:57,148] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-18 17:58:57,151] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-18 17:58:57,153] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-18 17:58:57,156] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-18 17:58:57,158] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-18 17:58:57,161] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-18 17:58:57,164] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-18 17:58:57,166] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-18 17:58:57,169] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-18 17:58:57,171] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-18 17:58:57,174] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-18 17:58:57,178] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-18 17:58:57,181] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-18 17:58:57,183] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-18 17:58:57,186] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-18 17:58:57,191] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-18 17:58:57,194] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-18 17:58:57,198] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-18 17:58:57,201] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-18 17:58:57,204] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-18 17:58:57,207] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-18 17:58:57,211] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-18 17:58:57,214] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-18 17:58:57,217] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-18 17:58:57,220] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-18 17:58:57,224] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-18 17:58:57,227] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-18 17:58:57,230] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-18 17:58:57,233] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-18 17:58:57,236] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-18 17:58:57,239] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-18 17:58:57,242] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-18 17:58:57,245] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-18 17:58:57,249] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-18 17:58:57,252] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-18 17:58:57,255] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-18 17:58:57,259] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-18 17:58:57,263] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-18 17:58:57,268] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-18 17:58:57,272] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-18 17:58:57,276] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-18 17:58:57,279] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-18 17:58:57,287] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-18 17:58:57,293] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-18 17:58:57,296] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-18 17:58:57,299] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-18 17:58:57,302] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-18 17:58:57,304] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-18 17:58:57,307] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-18 17:58:57,311] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-18 17:58:57,314] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-18 17:58:57,317] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-18 17:58:57,320] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-18 17:58:57,324] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-18 17:58:57,329] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-18 17:58:57,333] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-18 17:58:57,337] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-18 17:58:57,341] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-18 17:58:57,344] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-18 17:58:57,348] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-18 17:58:57,351] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-18 17:58:57,354] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-18 17:58:57,357] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-18 17:58:57,360] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-18 17:58:57,363] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-18 17:58:57,367] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-18 17:58:57,370] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-18 17:58:57,374] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-18 17:58:57,376] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-18 17:58:57,379] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-18 17:58:57,382] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-18 17:58:57,385] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-18 17:58:57,433] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 17:58:57,434] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-18 17:58:57,435] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 17:58:57,436] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-18 17:58:57,437] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-18 17:58:57,437] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 17:58:57,438] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-18 17:58:57,438] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-18 17:58:57,439] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", - "[2022-10-18 17:58:57,455] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", - "\u001b[39m\n" - ] - } - ], + "outputs": [], "source": [ "app = AISpleenSegApp()\n", "\n", @@ -904,7 +468,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -921,17 +485,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Overwriting my_app/spleen_seg_operator.py\n" - ] - } - ], + "outputs": [], "source": [ "%%writefile my_app/spleen_seg_operator.py\n", "import logging\n", @@ -1051,17 +607,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Overwriting my_app/app.py\n" - ] - } - ], + "outputs": [], "source": [ "%%writefile my_app/app.py\n", "import logging\n", @@ -1196,17 +744,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Overwriting my_app/__main__.py\n" - ] - } - ], + "outputs": [], "source": [ "%%writefile my_app/__main__.py\n", "from app import AISpleenSegApp\n", @@ -1217,17 +757,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "app.py\t__main__.py __pycache__ spleen_seg_operator.py\n" - ] - } - ], + "outputs": [], "source": [ "!ls my_app" ] @@ -1241,200 +773,9 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1019704, Operator ID: c48f1ee6-bae2-47be-be45-2399634d4398)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1019704, Operator ID: bd12ab53-c27e-48e5-916a-223c9adc24b2)\u001b[39m\n", - "[2022-10-18 17:59:03,840] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 17:59:03,840] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", - " # of series: 1\n", - "[2022-10-18 17:59:03,840] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 17:59:03,840] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:59:03,840] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - " # of series: 1\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 17:59:03,841] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1019704, Operator ID: f7a45398-b237-4ea0-b2d1-429c69818ff1)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1019704, Operator ID: 7d7f541f-a5f6-4968-9983-eb620d3cbc12)\u001b[39m\n", - "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", - "SeriesDate: 20090831, type \n", - "SeriesTime: 101721.452, type \n", - "Modality: CT, type \n", - "SeriesDescription: ABD/PANC 3.0 B31f, type \n", - "PatientPosition: HFS, type \n", - "SeriesNumber: 8, type \n", - "row_pixel_spacing: 0.7890625, type \n", - "col_pixel_spacing: 0.7890625, type \n", - "depth_pixel_spacing: 1.5, type \n", - "row_direction_cosine: [1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, 1.0, 0.0], type \n", - "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", - " [ 0. 0.7890625 0. -398.60547 ]\n", - " [ 0. 0. 1.5 -383. ]\n", - " [ 0. 0. 0. 1. ]], type \n", - "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", - " [ -0. -0.7890625 -0. 398.60547 ]\n", - " [ 0. 0. 1.5 -383. ]\n", - " [ 0. 0. 0. 1. ]], type \n", - "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", - "StudyID: , type \n", - "StudyDate: 20090831, type \n", - "StudyTime: 095948.599, type \n", - "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", - "AccessionNumber: 5471978513296937, type \n", - "selection_name: CT Series, type \n", - "2022-10-18 17:59:17,460 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", - "Output Seg image numpy array shaped: (204, 512, 512)\n", - "Output Seg image pixel max value: 1\n", - "\u001b[34mDone performing execution of operator SpleenSegOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1019704, Operator ID: 4376980c-6baf-4e41-9e3e-c21dd6f6a393)\u001b[39m\n", - "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", - " warnings.warn(\n", - "[2022-10-18 17:59:20,664] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-18 17:59:20,665] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-18 17:59:20,667] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-18 17:59:20,668] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-18 17:59:20,669] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-18 17:59:20,670] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-18 17:59:20,671] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-18 17:59:20,672] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-18 17:59:20,673] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-18 17:59:20,674] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-18 17:59:20,675] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-18 17:59:20,676] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-18 17:59:20,677] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-18 17:59:20,678] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-18 17:59:20,679] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-18 17:59:20,680] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-18 17:59:20,681] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-18 17:59:20,682] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-18 17:59:20,683] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-18 17:59:20,684] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-18 17:59:20,685] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-18 17:59:20,686] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-18 17:59:20,687] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-18 17:59:20,688] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-18 17:59:20,689] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-18 17:59:20,691] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-18 17:59:20,692] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-18 17:59:20,693] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-18 17:59:20,694] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-18 17:59:20,695] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-18 17:59:20,696] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-18 17:59:20,697] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-18 17:59:20,698] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-18 17:59:20,699] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-18 17:59:20,700] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-18 17:59:20,701] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-18 17:59:20,702] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-18 17:59:20,703] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-18 17:59:20,704] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-18 17:59:20,705] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-18 17:59:20,706] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-18 17:59:20,707] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-18 17:59:20,708] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-18 17:59:20,709] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-18 17:59:20,710] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-18 17:59:20,711] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-18 17:59:20,712] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-18 17:59:20,713] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-18 17:59:20,714] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-18 17:59:20,716] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-18 17:59:20,718] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-18 17:59:20,719] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-18 17:59:20,721] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-18 17:59:20,723] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-18 17:59:20,724] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-18 17:59:20,726] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-18 17:59:20,727] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-18 17:59:20,729] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-18 17:59:20,731] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-18 17:59:20,732] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-18 17:59:20,734] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-18 17:59:20,735] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-18 17:59:20,737] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-18 17:59:20,738] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-18 17:59:20,740] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-18 17:59:20,742] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-18 17:59:20,743] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-18 17:59:20,745] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-18 17:59:20,746] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-18 17:59:20,748] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-18 17:59:20,750] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-18 17:59:20,751] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-18 17:59:20,753] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-18 17:59:20,754] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-18 17:59:20,756] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-18 17:59:20,758] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-18 17:59:20,759] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-18 17:59:20,761] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-18 17:59:20,763] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-18 17:59:20,764] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-18 17:59:20,766] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-18 17:59:20,767] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-18 17:59:20,769] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-18 17:59:20,771] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-18 17:59:20,772] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-18 17:59:20,774] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-18 17:59:20,776] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-18 17:59:20,777] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-18 17:59:20,829] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 17:59:20,829] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-18 17:59:20,829] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 17:59:20,829] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-18 17:59:20,830] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-18 17:59:20,830] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 17:59:20,830] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-18 17:59:20,830] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-18 17:59:20,830] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", - "[2022-10-18 17:59:20,841] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n", - "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", - "\u001b[39m\n" - ] - } - ], + "outputs": [], "source": [ "!python my_app -i dcm -o output -m model.ts" ] @@ -1448,200 +789,9 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1019765, Operator ID: 47ec707f-e6ae-44b5-a3fb-92c4f514a42f)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1019765, Operator ID: 011609ba-8225-4401-a8b0-552f3e1771f6)\u001b[39m\n", - "[2022-10-18 17:59:26,795] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 17:59:26,795] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", - " # of series: 1\n", - "[2022-10-18 17:59:26,795] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 17:59:26,795] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:59:26,795] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-18 17:59:26,795] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:26,795] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 17:59:26,795] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 17:59:26,795] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - " # of series: 1\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 17:59:26,796] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1019765, Operator ID: 119e513a-a950-4fbc-9d38-35523d1fcb69)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1019765, Operator ID: 02659e90-c135-4bb2-bc92-eeafbb01360c)\u001b[39m\n", - "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", - "SeriesDate: 20090831, type \n", - "SeriesTime: 101721.452, type \n", - "Modality: CT, type \n", - "SeriesDescription: ABD/PANC 3.0 B31f, type \n", - "PatientPosition: HFS, type \n", - "SeriesNumber: 8, type \n", - "row_pixel_spacing: 0.7890625, type \n", - "col_pixel_spacing: 0.7890625, type \n", - "depth_pixel_spacing: 1.5, type \n", - "row_direction_cosine: [1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, 1.0, 0.0], type \n", - "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", - " [ 0. 0.7890625 0. -398.60547 ]\n", - " [ 0. 0. 1.5 -383. ]\n", - " [ 0. 0. 0. 1. ]], type \n", - "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", - " [ -0. -0.7890625 -0. 398.60547 ]\n", - " [ 0. 0. 1.5 -383. ]\n", - " [ 0. 0. 0. 1. ]], type \n", - "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", - "StudyID: , type \n", - "StudyDate: 20090831, type \n", - "StudyTime: 095948.599, type \n", - "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", - "AccessionNumber: 5471978513296937, type \n", - "selection_name: CT Series, type \n", - "2022-10-18 17:59:40,713 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", - "Output Seg image numpy array shaped: (204, 512, 512)\n", - "Output Seg image pixel max value: 1\n", - "\u001b[34mDone performing execution of operator SpleenSegOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1019765, Operator ID: b32304d5-109f-43db-9265-550acbef270a)\u001b[39m\n", - "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", - " warnings.warn(\n", - "[2022-10-18 17:59:43,907] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-18 17:59:43,908] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-18 17:59:43,909] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-18 17:59:43,911] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-18 17:59:43,912] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-18 17:59:43,913] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-18 17:59:43,914] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-18 17:59:43,915] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-18 17:59:43,916] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-18 17:59:43,917] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-18 17:59:43,918] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-18 17:59:43,919] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-18 17:59:43,920] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-18 17:59:43,921] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-18 17:59:43,923] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-18 17:59:43,923] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-18 17:59:43,924] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-18 17:59:43,925] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-18 17:59:43,926] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-18 17:59:43,927] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-18 17:59:43,929] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-18 17:59:43,930] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-18 17:59:43,931] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-18 17:59:43,932] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-18 17:59:43,933] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-18 17:59:43,934] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-18 17:59:43,935] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-18 17:59:43,936] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-18 17:59:43,937] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-18 17:59:43,938] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-18 17:59:43,939] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-18 17:59:43,940] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-18 17:59:43,941] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-18 17:59:43,942] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-18 17:59:43,943] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-18 17:59:43,944] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-18 17:59:43,945] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-18 17:59:43,946] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-18 17:59:43,947] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-18 17:59:43,948] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-18 17:59:43,949] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-18 17:59:43,950] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-18 17:59:43,951] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-18 17:59:43,952] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-18 17:59:43,954] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-18 17:59:43,955] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-18 17:59:43,956] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-18 17:59:43,957] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-18 17:59:43,958] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-18 17:59:43,959] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-18 17:59:43,960] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-18 17:59:43,961] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-18 17:59:43,962] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-18 17:59:43,963] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-18 17:59:43,964] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-18 17:59:43,965] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-18 17:59:43,966] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-18 17:59:43,967] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-18 17:59:43,968] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-18 17:59:43,969] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-18 17:59:43,970] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-18 17:59:43,971] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-18 17:59:43,973] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-18 17:59:43,974] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-18 17:59:43,975] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-18 17:59:43,976] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-18 17:59:43,977] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-18 17:59:43,978] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-18 17:59:43,979] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-18 17:59:43,980] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-18 17:59:43,981] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-18 17:59:43,982] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-18 17:59:43,983] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-18 17:59:43,984] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-18 17:59:43,985] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-18 17:59:43,986] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-18 17:59:43,987] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-18 17:59:43,988] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-18 17:59:43,990] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-18 17:59:43,991] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-18 17:59:43,993] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-18 17:59:43,994] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-18 17:59:43,996] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-18 17:59:43,997] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-18 17:59:43,999] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-18 17:59:44,000] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-18 17:59:44,002] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-18 17:59:44,003] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-18 17:59:44,055] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 17:59:44,055] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-18 17:59:44,055] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 17:59:44,055] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-18 17:59:44,056] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-18 17:59:44,056] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 17:59:44,056] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-18 17:59:44,056] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-18 17:59:44,056] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", - "[2022-10-18 17:59:44,072] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n", - "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", - "\u001b[39m\n" - ] - } - ], + "outputs": [], "source": [ "import os\n", "os.environ['MKL_THREADING_LAYER'] = 'GNU'\n", @@ -1650,20 +800,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.2.826.0.1.3680043.10.511.3.10233860337763721213019398752177157.dcm\n", - "1.2.826.0.1.3680043.10.511.3.36836057024065268415569650469263172.dcm\n", - "1.2.826.0.1.3680043.10.511.3.71094963129049572641804175456834092.dcm\n", - "prediction_output\n" - ] - } - ], + "outputs": [], "source": [ "!ls output" ] @@ -1684,18 +823,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Building MONAI Application Package... Done\n", - "[2022-10-18 17:59:50,292] [INFO] (app_packager) - Successfully built my_app:latest\n" - ] - } - ], + "outputs": [], "source": [ "!monai-deploy package -b nvcr.io/nvidia/pytorch:21.11-py3 my_app --tag my_app:latest -m model.ts" ] @@ -1713,17 +843,9 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "my_app latest d34d8fb2cdc9 8 minutes ago 15.1GB\n" - ] - } - ], + "outputs": [], "source": [ "!docker image ls | grep my_app" ] @@ -1739,213 +861,9 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Checking dependencies...\n", - "--> Verifying if \"docker\" is installed...\n", - "\n", - "--> Verifying if \"my_app:latest\" is available...\n", - "\n", - "Checking for MAP \"my_app:latest\" locally\n", - "\"my_app:latest\" found.\n", - "\n", - "Reading MONAI App Package manifest...\n", - "--> Verifying if \"nvidia-docker\" is installed...\n", - "\n", - "/opt/conda/lib/python3.8/site-packages/scipy/__init__.py:138: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.4)\n", - " warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion} is required for this version of \"\n", - "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: 87f153a1-6df1-471a-8387-91fa4c8072fd)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: fdeb8d41-35cf-48f4-b278-af0b60e8d993)\u001b[39m\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", - " # of series: 1\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-19 01:00:05,860] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", - " # of series: 1\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-19 01:00:05,861] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: 574f535f-7d01-4112-b4eb-3281280251a6)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1, Operator ID: ef34ddb9-0d8d-48d6-a9d9-c179d824860f)\u001b[39m\n", - "Converted Image object metadata:\n", - "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", - "SeriesDate: 20090831, type \n", - "SeriesTime: 101721.452, type \n", - "Modality: CT, type \n", - "SeriesDescription: ABD/PANC 3.0 B31f, type \n", - "PatientPosition: HFS, type \n", - "SeriesNumber: 8, type \n", - "row_pixel_spacing: 0.7890625, type \n", - "col_pixel_spacing: 0.7890625, type \n", - "depth_pixel_spacing: 1.5, type \n", - "row_direction_cosine: [1.0, 0.0, 0.0], type \n", - "col_direction_cosine: [0.0, 1.0, 0.0], type \n", - "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", - "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", - " [ 0. 0.7890625 0. -398.60547 ]\n", - " [ 0. 0. 1.5 -383. ]\n", - " [ 0. 0. 0. 1. ]], type \n", - "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", - " [ -0. -0.7890625 -0. 398.60547 ]\n", - " [ 0. 0. 1.5 -383. ]\n", - " [ 0. 0. 0. 1. ]], type \n", - "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", - "StudyID: , type \n", - "StudyDate: 20090831, type \n", - "StudyTime: 095948.599, type \n", - "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", - "AccessionNumber: 5471978513296937, type \n", - "selection_name: CT Series, type \n", - "2022-10-19 01:00:18,462 INFO image_writer.py:194 - writing: /var/monai/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", - "Output Seg image numpy array shaped: (204, 512, 512)\n", - "Output Seg image pixel max value: 1\n", - "\u001b[34mDone performing execution of operator SpleenSegOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: 7a4a446e-42e7-4dbc-898e-2dc907cba1fb)\u001b[39m\n", - "/root/.local/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", - " warnings.warn(\n", - "[2022-10-19 01:00:21,752] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-19 01:00:21,753] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-19 01:00:21,755] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-19 01:00:21,756] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-19 01:00:21,758] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-19 01:00:21,760] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-19 01:00:21,761] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-19 01:00:21,762] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-19 01:00:21,764] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-19 01:00:21,765] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-19 01:00:21,767] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-19 01:00:21,768] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-19 01:00:21,770] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-19 01:00:21,771] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-19 01:00:21,772] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-19 01:00:21,774] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-19 01:00:21,775] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-19 01:00:21,777] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-19 01:00:21,778] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-19 01:00:21,779] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-19 01:00:21,781] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-19 01:00:21,782] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-19 01:00:21,784] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-19 01:00:21,786] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-19 01:00:21,787] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-19 01:00:21,789] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-19 01:00:21,790] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-19 01:00:21,792] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-19 01:00:21,793] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-19 01:00:21,795] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-19 01:00:21,796] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-19 01:00:21,797] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-19 01:00:21,799] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-19 01:00:21,800] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-19 01:00:21,802] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-19 01:00:21,803] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-19 01:00:21,805] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-19 01:00:21,806] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-19 01:00:21,808] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-19 01:00:21,809] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-19 01:00:21,811] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-19 01:00:21,812] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-19 01:00:21,814] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-19 01:00:21,815] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-19 01:00:21,817] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-19 01:00:21,818] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-19 01:00:21,820] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-19 01:00:21,821] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-19 01:00:21,823] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-19 01:00:21,824] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-19 01:00:21,826] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-19 01:00:21,827] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-19 01:00:21,829] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-19 01:00:21,830] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-19 01:00:21,832] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-19 01:00:21,833] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-19 01:00:21,835] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-19 01:00:21,836] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-19 01:00:21,838] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-19 01:00:21,840] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-19 01:00:21,841] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-19 01:00:21,843] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-19 01:00:21,844] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-19 01:00:21,846] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-19 01:00:21,847] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-19 01:00:21,849] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-19 01:00:21,851] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-19 01:00:21,852] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-19 01:00:21,854] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-19 01:00:21,855] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-19 01:00:21,857] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-19 01:00:21,858] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-19 01:00:21,860] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-19 01:00:21,862] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-19 01:00:21,863] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-19 01:00:21,865] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-19 01:00:21,866] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-19 01:00:21,868] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-19 01:00:21,869] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-19 01:00:21,871] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-19 01:00:21,873] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-19 01:00:21,875] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-19 01:00:21,876] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-19 01:00:21,878] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-19 01:00:21,879] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-19 01:00:21,881] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-19 01:00:21,883] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-19 01:00:21,884] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-19 01:00:21,932] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-19 01:00:21,932] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-19 01:00:21,932] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-19 01:00:21,932] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-19 01:00:21,933] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-19 01:00:21,933] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-19 01:00:21,933] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-19 01:00:21,933] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-19 01:00:21,933] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", - "[2022-10-19 01:00:21,951] [WARNING] (root) - Tag SeriesDescription was not written, due to (0008, 103e)\n", - "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", - "\u001b[39m\n" - ] - } - ], + "outputs": [], "source": [ "# Copy DICOM files are in 'dcm' folder\n", "\n", @@ -1955,21 +873,9 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.2.826.0.1.3680043.10.511.3.10233860337763721213019398752177157.dcm\n", - "1.2.826.0.1.3680043.10.511.3.36836057024065268415569650469263172.dcm\n", - "1.2.826.0.1.3680043.10.511.3.62377077913869141856004675688121326.dcm\n", - "1.2.826.0.1.3680043.10.511.3.71094963129049572641804175456834092.dcm\n", - "prediction_output\n" - ] - } - ], + "outputs": [], "source": [ "!ls output" ] From 1392e0a7eb93ff76cd4e7427bf2a68430010873a Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Tue, 18 Oct 2022 21:49:46 -0700 Subject: [PATCH 023/216] Update notebook output after retest (#375) Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- notebooks/tutorials/03_segmentation_app.ipynb | 1104 ++++++++++++++++- .../tutorials/03_segmentation_viz_app.ipynb | 786 ++++++------ 2 files changed, 1439 insertions(+), 451 deletions(-) diff --git a/notebooks/tutorials/03_segmentation_app.ipynb b/notebooks/tutorials/03_segmentation_app.ipynb index fb0af512..7460b5ee 100644 --- a/notebooks/tutorials/03_segmentation_app.ipynb +++ b/notebooks/tutorials/03_segmentation_app.ipynb @@ -94,15 +94,7 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "^C\n" - ] - } - ], + "outputs": [], "source": [ "# Install MONAI and other necessary image processing packages for the application\n", "!python -c \"import monai\" || pip install --upgrade -q \"monai\"\n", @@ -134,9 +126,238 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: gdown in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (4.5.1)\n", + "Requirement already satisfied: six in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (1.16.0)\n", + "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", + "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", + "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", + "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", + "Requirement already satisfied: soupsieve>1.2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from beautifulsoup4->gdown) (2.3.2.post1)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.26.12)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (3.3)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", + "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.7.1)\n", + "Downloading...\n", + "From: https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\n", + "To: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_seg_bundle_data.zip\n", + "100%|███████████████████████████████████████| 79.4M/79.4M [00:00<00:00, 105MB/s]\n", + "Archive: ai_spleen_seg_bundle_data.zip\n", + " inflating: dcm/1-001.dcm \n", + " inflating: dcm/1-002.dcm \n", + " inflating: dcm/1-003.dcm \n", + " inflating: dcm/1-004.dcm \n", + " inflating: dcm/1-005.dcm \n", + " inflating: dcm/1-006.dcm \n", + " inflating: dcm/1-007.dcm \n", + " inflating: dcm/1-008.dcm \n", + " inflating: dcm/1-009.dcm \n", + " inflating: dcm/1-010.dcm \n", + " inflating: dcm/1-011.dcm \n", + " inflating: dcm/1-012.dcm \n", + " inflating: dcm/1-013.dcm \n", + " inflating: dcm/1-014.dcm \n", + " inflating: dcm/1-015.dcm \n", + " inflating: dcm/1-016.dcm \n", + " inflating: dcm/1-017.dcm \n", + " inflating: dcm/1-018.dcm \n", + " inflating: dcm/1-019.dcm \n", + " inflating: dcm/1-020.dcm \n", + " inflating: dcm/1-021.dcm \n", + " inflating: dcm/1-022.dcm \n", + " inflating: dcm/1-023.dcm \n", + " inflating: dcm/1-024.dcm \n", + " inflating: dcm/1-025.dcm \n", + " inflating: dcm/1-026.dcm \n", + " inflating: dcm/1-027.dcm \n", + " inflating: dcm/1-028.dcm \n", + " inflating: dcm/1-029.dcm \n", + " inflating: dcm/1-030.dcm \n", + " inflating: dcm/1-031.dcm \n", + " inflating: dcm/1-032.dcm \n", + " inflating: dcm/1-033.dcm \n", + " inflating: dcm/1-034.dcm \n", + " inflating: dcm/1-035.dcm \n", + " inflating: dcm/1-036.dcm \n", + " inflating: dcm/1-037.dcm \n", + " inflating: dcm/1-038.dcm \n", + " inflating: dcm/1-039.dcm \n", + " inflating: dcm/1-040.dcm \n", + " inflating: dcm/1-041.dcm \n", + " inflating: dcm/1-042.dcm \n", + " inflating: dcm/1-043.dcm \n", + " inflating: dcm/1-044.dcm \n", + " inflating: dcm/1-045.dcm \n", + " inflating: dcm/1-046.dcm \n", + " inflating: dcm/1-047.dcm \n", + " inflating: dcm/1-048.dcm \n", + " inflating: dcm/1-049.dcm \n", + " inflating: dcm/1-050.dcm \n", + " inflating: dcm/1-051.dcm \n", + " inflating: dcm/1-052.dcm \n", + " inflating: dcm/1-053.dcm \n", + " inflating: dcm/1-054.dcm \n", + " inflating: dcm/1-055.dcm \n", + " inflating: dcm/1-056.dcm \n", + " inflating: dcm/1-057.dcm \n", + " inflating: dcm/1-058.dcm \n", + " inflating: dcm/1-059.dcm \n", + " inflating: dcm/1-060.dcm \n", + " inflating: dcm/1-061.dcm \n", + " inflating: dcm/1-062.dcm \n", + " inflating: dcm/1-063.dcm \n", + " inflating: dcm/1-064.dcm \n", + " inflating: dcm/1-065.dcm \n", + " inflating: dcm/1-066.dcm \n", + " inflating: dcm/1-067.dcm \n", + " inflating: dcm/1-068.dcm \n", + " inflating: dcm/1-069.dcm \n", + " inflating: dcm/1-070.dcm \n", + " inflating: dcm/1-071.dcm \n", + " inflating: dcm/1-072.dcm \n", + " inflating: dcm/1-073.dcm \n", + " inflating: dcm/1-074.dcm \n", + " inflating: dcm/1-075.dcm \n", + " inflating: dcm/1-076.dcm \n", + " inflating: dcm/1-077.dcm \n", + " inflating: dcm/1-078.dcm \n", + " inflating: dcm/1-079.dcm \n", + " inflating: dcm/1-080.dcm \n", + " inflating: dcm/1-081.dcm \n", + " inflating: dcm/1-082.dcm \n", + " inflating: dcm/1-083.dcm \n", + " inflating: dcm/1-084.dcm \n", + " inflating: dcm/1-085.dcm \n", + " inflating: dcm/1-086.dcm \n", + " inflating: dcm/1-087.dcm \n", + " inflating: dcm/1-088.dcm \n", + " inflating: dcm/1-089.dcm \n", + " inflating: dcm/1-090.dcm \n", + " inflating: dcm/1-091.dcm \n", + " inflating: dcm/1-092.dcm \n", + " inflating: dcm/1-093.dcm \n", + " inflating: dcm/1-094.dcm \n", + " inflating: dcm/1-095.dcm \n", + " inflating: dcm/1-096.dcm \n", + " inflating: dcm/1-097.dcm \n", + " inflating: dcm/1-098.dcm \n", + " inflating: dcm/1-099.dcm \n", + " inflating: dcm/1-100.dcm \n", + " inflating: dcm/1-101.dcm \n", + " inflating: dcm/1-102.dcm \n", + " inflating: dcm/1-103.dcm \n", + " inflating: dcm/1-104.dcm \n", + " inflating: dcm/1-105.dcm \n", + " inflating: dcm/1-106.dcm \n", + " inflating: dcm/1-107.dcm \n", + " inflating: dcm/1-108.dcm \n", + " inflating: dcm/1-109.dcm \n", + " inflating: dcm/1-110.dcm \n", + " inflating: dcm/1-111.dcm \n", + " inflating: dcm/1-112.dcm \n", + " inflating: dcm/1-113.dcm \n", + " inflating: dcm/1-114.dcm \n", + " inflating: dcm/1-115.dcm \n", + " inflating: dcm/1-116.dcm \n", + " inflating: dcm/1-117.dcm \n", + " inflating: dcm/1-118.dcm \n", + " inflating: dcm/1-119.dcm \n", + " inflating: dcm/1-120.dcm \n", + " inflating: dcm/1-121.dcm \n", + " inflating: dcm/1-122.dcm \n", + " inflating: dcm/1-123.dcm \n", + " inflating: dcm/1-124.dcm \n", + " inflating: dcm/1-125.dcm \n", + " inflating: dcm/1-126.dcm \n", + " inflating: dcm/1-127.dcm \n", + " inflating: dcm/1-128.dcm \n", + " inflating: dcm/1-129.dcm \n", + " inflating: dcm/1-130.dcm \n", + " inflating: dcm/1-131.dcm \n", + " inflating: dcm/1-132.dcm \n", + " inflating: dcm/1-133.dcm \n", + " inflating: dcm/1-134.dcm \n", + " inflating: dcm/1-135.dcm \n", + " inflating: dcm/1-136.dcm \n", + " inflating: dcm/1-137.dcm \n", + " inflating: dcm/1-138.dcm \n", + " inflating: dcm/1-139.dcm \n", + " inflating: dcm/1-140.dcm \n", + " inflating: dcm/1-141.dcm \n", + " inflating: dcm/1-142.dcm \n", + " inflating: dcm/1-143.dcm \n", + " inflating: dcm/1-144.dcm \n", + " inflating: dcm/1-145.dcm \n", + " inflating: dcm/1-146.dcm \n", + " inflating: dcm/1-147.dcm \n", + " inflating: dcm/1-148.dcm \n", + " inflating: dcm/1-149.dcm \n", + " inflating: dcm/1-150.dcm \n", + " inflating: dcm/1-151.dcm \n", + " inflating: dcm/1-152.dcm \n", + " inflating: dcm/1-153.dcm \n", + " inflating: dcm/1-154.dcm \n", + " inflating: dcm/1-155.dcm \n", + " inflating: dcm/1-156.dcm \n", + " inflating: dcm/1-157.dcm \n", + " inflating: dcm/1-158.dcm \n", + " inflating: dcm/1-159.dcm \n", + " inflating: dcm/1-160.dcm \n", + " inflating: dcm/1-161.dcm \n", + " inflating: dcm/1-162.dcm \n", + " inflating: dcm/1-163.dcm \n", + " inflating: dcm/1-164.dcm \n", + " inflating: dcm/1-165.dcm \n", + " inflating: dcm/1-166.dcm \n", + " inflating: dcm/1-167.dcm \n", + " inflating: dcm/1-168.dcm \n", + " inflating: dcm/1-169.dcm \n", + " inflating: dcm/1-170.dcm \n", + " inflating: dcm/1-171.dcm \n", + " inflating: dcm/1-172.dcm \n", + " inflating: dcm/1-173.dcm \n", + " inflating: dcm/1-174.dcm \n", + " inflating: dcm/1-175.dcm \n", + " inflating: dcm/1-176.dcm \n", + " inflating: dcm/1-177.dcm \n", + " inflating: dcm/1-178.dcm \n", + " inflating: dcm/1-179.dcm \n", + " inflating: dcm/1-180.dcm \n", + " inflating: dcm/1-181.dcm \n", + " inflating: dcm/1-182.dcm \n", + " inflating: dcm/1-183.dcm \n", + " inflating: dcm/1-184.dcm \n", + " inflating: dcm/1-185.dcm \n", + " inflating: dcm/1-186.dcm \n", + " inflating: dcm/1-187.dcm \n", + " inflating: dcm/1-188.dcm \n", + " inflating: dcm/1-189.dcm \n", + " inflating: dcm/1-190.dcm \n", + " inflating: dcm/1-191.dcm \n", + " inflating: dcm/1-192.dcm \n", + " inflating: dcm/1-193.dcm \n", + " inflating: dcm/1-194.dcm \n", + " inflating: dcm/1-195.dcm \n", + " inflating: dcm/1-196.dcm \n", + " inflating: dcm/1-197.dcm \n", + " inflating: dcm/1-198.dcm \n", + " inflating: dcm/1-199.dcm \n", + " inflating: dcm/1-200.dcm \n", + " inflating: dcm/1-201.dcm \n", + " inflating: dcm/1-202.dcm \n", + " inflating: dcm/1-203.dcm \n", + " inflating: dcm/1-204.dcm \n", + " inflating: model.ts \n" + ] + } + ], "source": [ "# Download ai_spleen_bundle_data test data zip file\n", "!pip install gdown \n", @@ -157,7 +378,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -220,7 +441,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -326,7 +547,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -436,9 +657,207 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1073180, Operator ID: d3dedce7-cf25-425f-ba2f-a70665103680)\u001b[39m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[2022-10-18 21:27:52,341] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 21:27:52,342] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-18 21:27:52,343] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 21:27:52,344] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 21:27:52,345] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-18 21:27:52,346] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:27:52,347] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 21:27:52,348] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 21:27:52,348] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:27:52,349] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 21:27:52,350] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-18 21:27:52,350] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:27:52,351] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 21:27:52,352] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 21:27:52,353] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1073180, Operator ID: 1b41cb58-49c4-43ef-90fa-310769a4c261)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1073180, Operator ID: b4ac94fa-d5ee-482c-b8f6-f789b388b8c3)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1073180, Operator ID: d4752eb4-0315-4add-bf80-1b9e50027ca6)\u001b[39m\n", + "Converted Image object metadata:\n", + "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", + "SeriesDate: 20090831, type \n", + "SeriesTime: 101721.452, type \n", + "Modality: CT, type \n", + "SeriesDescription: ABD/PANC 3.0 B31f, type \n", + "PatientPosition: HFS, type \n", + "SeriesNumber: 8, type \n", + "row_pixel_spacing: 0.7890625, type \n", + "col_pixel_spacing: 0.7890625, type \n", + "depth_pixel_spacing: 1.5, type \n", + "row_direction_cosine: [1.0, 0.0, 0.0], type \n", + "col_direction_cosine: [0.0, 1.0, 0.0], type \n", + "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", + "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", + " [ 0. 0.7890625 0. -398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", + " [ -0. -0.7890625 -0. 398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", + "StudyID: , type \n", + "StudyDate: 20090831, type \n", + "StudyTime: 095948.599, type \n", + "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", + "AccessionNumber: 5471978513296937, type \n", + "selection_name: CT Series, type \n", + "2022-10-18 21:28:06,172 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "Output Seg image numpy array shaped: (204, 512, 512)\n", + "Output Seg image pixel max value: 1\n", + "\u001b[34mDone performing execution of operator SpleenSegOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1073180, Operator ID: 4dc3c84a-3f4d-4c07-a44b-dfab39c888a4)\u001b[39m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-18 21:28:09,730] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 21:28:09,733] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 21:28:09,734] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 21:28:09,736] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 21:28:09,737] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 21:28:09,739] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 21:28:09,740] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 21:28:09,742] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 21:28:09,743] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 21:28:09,744] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 21:28:09,746] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 21:28:09,748] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 21:28:09,750] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 21:28:09,752] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 21:28:09,754] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 21:28:09,755] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 21:28:09,757] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 21:28:09,758] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 21:28:09,759] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 21:28:09,761] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 21:28:09,762] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 21:28:09,764] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 21:28:09,765] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 21:28:09,767] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 21:28:09,769] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 21:28:09,770] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 21:28:09,772] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 21:28:09,773] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 21:28:09,775] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 21:28:09,777] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 21:28:09,779] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 21:28:09,781] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 21:28:09,782] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 21:28:09,784] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 21:28:09,786] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 21:28:09,788] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 21:28:09,790] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 21:28:09,792] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 21:28:09,795] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 21:28:09,796] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 21:28:09,798] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 21:28:09,799] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 21:28:09,801] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 21:28:09,802] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 21:28:09,804] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 21:28:09,805] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 21:28:09,809] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 21:28:09,813] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 21:28:09,820] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 21:28:09,826] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 21:28:09,829] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 21:28:09,832] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 21:28:09,834] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 21:28:09,837] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 21:28:09,840] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 21:28:09,842] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 21:28:09,845] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 21:28:09,847] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 21:28:09,850] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 21:28:09,852] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 21:28:09,854] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 21:28:09,855] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 21:28:09,857] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 21:28:09,859] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 21:28:09,860] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 21:28:09,864] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 21:28:09,869] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 21:28:09,873] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 21:28:09,876] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 21:28:09,880] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 21:28:09,883] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 21:28:09,885] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 21:28:09,888] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 21:28:09,891] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 21:28:09,895] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 21:28:09,898] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 21:28:09,902] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 21:28:09,905] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 21:28:09,909] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 21:28:09,913] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 21:28:09,916] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 21:28:09,918] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 21:28:09,920] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 21:28:09,923] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 21:28:09,925] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 21:28:09,927] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 21:28:09,928] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 21:28:09,930] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 21:28:09,977] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:28:09,978] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 21:28:09,978] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:28:09,979] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 21:28:09,979] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 21:28:09,980] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:28:09,980] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 21:28:09,981] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 21:28:09,981] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n" + ] + } + ], "source": [ "app = AISpleenSegApp()\n", "\n", @@ -468,7 +887,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -485,9 +904,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing my_app/spleen_seg_operator.py\n" + ] + } + ], "source": [ "%%writefile my_app/spleen_seg_operator.py\n", "import logging\n", @@ -607,9 +1034,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing my_app/app.py\n" + ] + } + ], "source": [ "%%writefile my_app/app.py\n", "import logging\n", @@ -744,9 +1179,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing my_app/__main__.py\n" + ] + } + ], "source": [ "%%writefile my_app/__main__.py\n", "from app import AISpleenSegApp\n", @@ -757,9 +1200,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "app.py\t__main__.py spleen_seg_operator.py\n" + ] + } + ], "source": [ "!ls my_app" ] @@ -773,9 +1224,183 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1073440, Operator ID: 80e8d7c8-9198-443e-84a3-8055a8d7b83a)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1073440, Operator ID: bc4dd0d0-71d5-4c45-b254-1466cfd1f7a7)\u001b[39m\n", + "[2022-10-18 21:28:15,990] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 21:28:15,990] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-18 21:28:15,990] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 21:28:15,990] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 21:28:15,990] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-18 21:28:15,990] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:28:15,990] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 21:28:15,990] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 21:28:15,990] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:28:15,991] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 21:28:15,991] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-18 21:28:15,991] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:28:15,991] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 21:28:15,991] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 21:28:15,991] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1073440, Operator ID: 11f938ee-6c1f-484a-8e28-f34f575b17e0)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1073440, Operator ID: ea4565db-e057-40ba-8708-e6c81a6eb7e5)\u001b[39m\n", + "Converted Image object metadata:\n", + "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", + "SeriesDate: 20090831, type \n", + "SeriesTime: 101721.452, type \n", + "Modality: CT, type \n", + "SeriesDescription: ABD/PANC 3.0 B31f, type \n", + "PatientPosition: HFS, type \n", + "SeriesNumber: 8, type \n", + "row_pixel_spacing: 0.7890625, type \n", + "col_pixel_spacing: 0.7890625, type \n", + "depth_pixel_spacing: 1.5, type \n", + "row_direction_cosine: [1.0, 0.0, 0.0], type \n", + "col_direction_cosine: [0.0, 1.0, 0.0], type \n", + "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", + "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", + " [ 0. 0.7890625 0. -398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", + " [ -0. -0.7890625 -0. 398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", + "StudyID: , type \n", + "StudyDate: 20090831, type \n", + "StudyTime: 095948.599, type \n", + "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", + "AccessionNumber: 5471978513296937, type \n", + "selection_name: CT Series, type \n", + "2022-10-18 21:28:29,842 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "Output Seg image numpy array shaped: (204, 512, 512)\n", + "Output Seg image pixel max value: 1\n", + "\u001b[34mDone performing execution of operator SpleenSegOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1073440, Operator ID: 2fcc7247-e95b-448a-a1e6-787d262cfa1d)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-18 21:28:33,270] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 21:28:33,271] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 21:28:33,272] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 21:28:33,273] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 21:28:33,274] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 21:28:33,275] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 21:28:33,276] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 21:28:33,277] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 21:28:33,278] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 21:28:33,279] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 21:28:33,280] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 21:28:33,281] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 21:28:33,282] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 21:28:33,283] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 21:28:33,285] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 21:28:33,286] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 21:28:33,287] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 21:28:33,288] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 21:28:33,289] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 21:28:33,290] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 21:28:33,291] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 21:28:33,292] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 21:28:33,293] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 21:28:33,294] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 21:28:33,295] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 21:28:33,297] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 21:28:33,298] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 21:28:33,299] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 21:28:33,300] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 21:28:33,301] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 21:28:33,302] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 21:28:33,303] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 21:28:33,303] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 21:28:33,304] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 21:28:33,305] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 21:28:33,306] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 21:28:33,307] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 21:28:33,308] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 21:28:33,309] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 21:28:33,310] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 21:28:33,311] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 21:28:33,312] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 21:28:33,313] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 21:28:33,314] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 21:28:33,315] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 21:28:33,316] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 21:28:33,317] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 21:28:33,318] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 21:28:33,319] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 21:28:33,320] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 21:28:33,321] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 21:28:33,322] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 21:28:33,323] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 21:28:33,324] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 21:28:33,325] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 21:28:33,326] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 21:28:33,327] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 21:28:33,328] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 21:28:33,329] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 21:28:33,330] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 21:28:33,331] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 21:28:33,332] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 21:28:33,333] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 21:28:33,334] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 21:28:33,335] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 21:28:33,336] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 21:28:33,337] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 21:28:33,338] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 21:28:33,339] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 21:28:33,340] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 21:28:33,341] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 21:28:33,342] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 21:28:33,343] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 21:28:33,344] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 21:28:33,346] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 21:28:33,347] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 21:28:33,348] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 21:28:33,349] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 21:28:33,350] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 21:28:33,351] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 21:28:33,352] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 21:28:33,353] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 21:28:33,354] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 21:28:33,355] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 21:28:33,356] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 21:28:33,357] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 21:28:33,358] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 21:28:33,359] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 21:28:33,404] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:28:33,404] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 21:28:33,405] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:28:33,405] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 21:28:33,405] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 21:28:33,405] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:28:33,405] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 21:28:33,405] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 21:28:33,405] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n" + ] + } + ], "source": [ "!python my_app -i dcm -o output -m model.ts" ] @@ -789,9 +1414,183 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1073501, Operator ID: 66133a89-7330-4de5-bdd8-b39e46603565)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1073501, Operator ID: 56990475-971c-412d-bb1c-4d01d6681064)\u001b[39m\n", + "[2022-10-18 21:28:38,695] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 21:28:38,695] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-18 21:28:38,695] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 21:28:38,695] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 21:28:38,695] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-18 21:28:38,695] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:28:38,695] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 21:28:38,695] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 21:28:38,695] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:28:38,696] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 21:28:38,696] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-18 21:28:38,696] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:28:38,696] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 21:28:38,696] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 21:28:38,696] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1073501, Operator ID: c7f385c8-02c1-480c-8624-a7cbe635c6d1)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1073501, Operator ID: 499282f6-c8ec-4b6e-a15f-8f8d12e1d202)\u001b[39m\n", + "Converted Image object metadata:\n", + "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", + "SeriesDate: 20090831, type \n", + "SeriesTime: 101721.452, type \n", + "Modality: CT, type \n", + "SeriesDescription: ABD/PANC 3.0 B31f, type \n", + "PatientPosition: HFS, type \n", + "SeriesNumber: 8, type \n", + "row_pixel_spacing: 0.7890625, type \n", + "col_pixel_spacing: 0.7890625, type \n", + "depth_pixel_spacing: 1.5, type \n", + "row_direction_cosine: [1.0, 0.0, 0.0], type \n", + "col_direction_cosine: [0.0, 1.0, 0.0], type \n", + "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", + "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", + " [ 0. 0.7890625 0. -398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", + " [ -0. -0.7890625 -0. 398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", + "StudyID: , type \n", + "StudyDate: 20090831, type \n", + "StudyTime: 095948.599, type \n", + "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", + "AccessionNumber: 5471978513296937, type \n", + "selection_name: CT Series, type \n", + "2022-10-18 21:28:52,347 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "Output Seg image numpy array shaped: (204, 512, 512)\n", + "Output Seg image pixel max value: 1\n", + "\u001b[34mDone performing execution of operator SpleenSegOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1073501, Operator ID: e8c56c3c-f244-41b0-9b7c-903d7b3b1a8d)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-18 21:28:55,727] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 21:28:55,728] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 21:28:55,729] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 21:28:55,730] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 21:28:55,731] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 21:28:55,732] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 21:28:55,733] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 21:28:55,734] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 21:28:55,735] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 21:28:55,736] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 21:28:55,737] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 21:28:55,738] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 21:28:55,739] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 21:28:55,740] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 21:28:55,741] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 21:28:55,742] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 21:28:55,743] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 21:28:55,744] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 21:28:55,745] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 21:28:55,746] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 21:28:55,747] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 21:28:55,748] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 21:28:55,749] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 21:28:55,750] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 21:28:55,751] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 21:28:55,752] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 21:28:55,753] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 21:28:55,754] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 21:28:55,755] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 21:28:55,756] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 21:28:55,757] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 21:28:55,758] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 21:28:55,759] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 21:28:55,760] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 21:28:55,761] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 21:28:55,762] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 21:28:55,763] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 21:28:55,764] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 21:28:55,765] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 21:28:55,766] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 21:28:55,767] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 21:28:55,767] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 21:28:55,768] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 21:28:55,769] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 21:28:55,770] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 21:28:55,771] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 21:28:55,772] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 21:28:55,773] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 21:28:55,774] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 21:28:55,775] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 21:28:55,776] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 21:28:55,777] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 21:28:55,778] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 21:28:55,779] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 21:28:55,780] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 21:28:55,781] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 21:28:55,782] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 21:28:55,783] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 21:28:55,784] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 21:28:55,785] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 21:28:55,786] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 21:28:55,787] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 21:28:55,788] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 21:28:55,789] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 21:28:55,790] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 21:28:55,791] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 21:28:55,792] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 21:28:55,794] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 21:28:55,795] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 21:28:55,796] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 21:28:55,797] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 21:28:55,798] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 21:28:55,799] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 21:28:55,800] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 21:28:55,801] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 21:28:55,802] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 21:28:55,803] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 21:28:55,804] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 21:28:55,805] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 21:28:55,806] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 21:28:55,807] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 21:28:55,808] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 21:28:55,809] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 21:28:55,810] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 21:28:55,811] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 21:28:55,812] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 21:28:55,814] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 21:28:55,815] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 21:28:55,861] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:28:55,861] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 21:28:55,861] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:28:55,861] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 21:28:55,861] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 21:28:55,861] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:28:55,861] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 21:28:55,861] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 21:28:55,862] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n" + ] + } + ], "source": [ "import os\n", "os.environ['MKL_THREADING_LAYER'] = 'GNU'\n", @@ -800,9 +1599,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.2.826.0.1.3680043.10.511.3.11520264113032864635597744730480621.dcm\n", + "1.2.826.0.1.3680043.10.511.3.60037419814661212759821378502636860.dcm\n", + "1.2.826.0.1.3680043.10.511.3.62411810421842534426987578192611738.dcm\n", + "prediction_output\n" + ] + } + ], "source": [ "!ls output" ] @@ -823,9 +1633,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Building MONAI Application Package... Done\n", + "[2022-10-18 21:31:49,815] [INFO] (app_packager) - Successfully built my_app:latest\n" + ] + } + ], "source": [ "!monai-deploy package -b nvcr.io/nvidia/pytorch:21.11-py3 my_app --tag my_app:latest -m model.ts" ] @@ -843,9 +1662,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "my_app latest cd8a77c9c781 4 seconds ago 15.1GB\n" + ] + } + ], "source": [ "!docker image ls | grep my_app" ] @@ -861,9 +1688,196 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Checking dependencies...\n", + "--> Verifying if \"docker\" is installed...\n", + "\n", + "--> Verifying if \"my_app:latest\" is available...\n", + "\n", + "Checking for MAP \"my_app:latest\" locally\n", + "\"my_app:latest\" found.\n", + "\n", + "Reading MONAI App Package manifest...\n", + "--> Verifying if \"nvidia-docker\" is installed...\n", + "\n", + "/opt/conda/lib/python3.8/site-packages/scipy/__init__.py:138: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.4)\n", + " warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion} is required for this version of \"\n", + "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: 8ed98656-f2d5-4d7b-8b17-86fe78ed66c7)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: 6944859e-643f-4914-81d8-26b18ce05f71)\u001b[39m\n", + "[2022-10-19 04:32:07,327] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-19 04:32:07,327] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-19 04:32:07,328] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: 8b4c3c73-c2f8-4460-a256-2ddd8e58964c)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1, Operator ID: 510d5b42-d2d8-453a-806b-55d60ea0f106)\u001b[39m\n", + "Converted Image object metadata:\n", + "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", + "SeriesDate: 20090831, type \n", + "SeriesTime: 101721.452, type \n", + "Modality: CT, type \n", + "SeriesDescription: ABD/PANC 3.0 B31f, type \n", + "PatientPosition: HFS, type \n", + "SeriesNumber: 8, type \n", + "row_pixel_spacing: 0.7890625, type \n", + "col_pixel_spacing: 0.7890625, type \n", + "depth_pixel_spacing: 1.5, type \n", + "row_direction_cosine: [1.0, 0.0, 0.0], type \n", + "col_direction_cosine: [0.0, 1.0, 0.0], type \n", + "depth_direction_cosine: [0.0, 0.0, 1.0], type \n", + "dicom_affine_transform: [[ 0.7890625 0. 0. -197.60547 ]\n", + " [ 0. 0.7890625 0. -398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "nifti_affine_transform: [[ -0.7890625 -0. -0. 197.60547 ]\n", + " [ -0. -0.7890625 -0. 398.60547 ]\n", + " [ 0. 0. 1.5 -383. ]\n", + " [ 0. 0. 0. 1. ]], type \n", + "StudyInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291, type \n", + "StudyID: , type \n", + "StudyDate: 20090831, type \n", + "StudyTime: 095948.599, type \n", + "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", + "AccessionNumber: 5471978513296937, type \n", + "selection_name: CT Series, type \n", + "2022-10-19 04:32:23,910 INFO image_writer.py:194 - writing: /var/monai/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "Output Seg image numpy array shaped: (204, 512, 512)\n", + "Output Seg image pixel max value: 1\n", + "\u001b[34mDone performing execution of operator SpleenSegOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: 7774b902-43ca-4266-8ca6-bf022267707a)\u001b[39m\n", + "/root/.local/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-19 04:32:27,247] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-19 04:32:27,249] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-19 04:32:27,250] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-19 04:32:27,251] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-19 04:32:27,253] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-19 04:32:27,254] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-19 04:32:27,255] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-19 04:32:27,257] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-19 04:32:27,258] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-19 04:32:27,260] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-19 04:32:27,261] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-19 04:32:27,263] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-19 04:32:27,264] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-19 04:32:27,265] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-19 04:32:27,267] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-19 04:32:27,268] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-19 04:32:27,269] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-19 04:32:27,271] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-19 04:32:27,272] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-19 04:32:27,274] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-19 04:32:27,275] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-19 04:32:27,277] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-19 04:32:27,278] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-19 04:32:27,280] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-19 04:32:27,281] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-19 04:32:27,282] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-19 04:32:27,284] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-19 04:32:27,285] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-19 04:32:27,287] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-19 04:32:27,288] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-19 04:32:27,289] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-19 04:32:27,291] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-19 04:32:27,293] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-19 04:32:27,294] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-19 04:32:27,296] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-19 04:32:27,297] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-19 04:32:27,298] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-19 04:32:27,300] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-19 04:32:27,301] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-19 04:32:27,303] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-19 04:32:27,304] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-19 04:32:27,306] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-19 04:32:27,307] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-19 04:32:27,309] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-19 04:32:27,310] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-19 04:32:27,312] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-19 04:32:27,313] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-19 04:32:27,315] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-19 04:32:27,316] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-19 04:32:27,318] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-19 04:32:27,319] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-19 04:32:27,321] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-19 04:32:27,322] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-19 04:32:27,324] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-19 04:32:27,325] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-19 04:32:27,327] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-19 04:32:27,328] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-19 04:32:27,330] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-19 04:32:27,331] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-19 04:32:27,333] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-19 04:32:27,334] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-19 04:32:27,336] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-19 04:32:27,337] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-19 04:32:27,339] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-19 04:32:27,340] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-19 04:32:27,342] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-19 04:32:27,343] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-19 04:32:27,345] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-19 04:32:27,348] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-19 04:32:27,349] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-19 04:32:27,351] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-19 04:32:27,352] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-19 04:32:27,354] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-19 04:32:27,355] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-19 04:32:27,357] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-19 04:32:27,358] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-19 04:32:27,360] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-19 04:32:27,361] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-19 04:32:27,363] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-19 04:32:27,365] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-19 04:32:27,366] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-19 04:32:27,368] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-19 04:32:27,369] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-19 04:32:27,371] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-19 04:32:27,372] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-19 04:32:27,374] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-19 04:32:27,376] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-19 04:32:27,377] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-19 04:32:27,423] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-19 04:32:27,423] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-19 04:32:27,423] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-19 04:32:27,424] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-19 04:32:27,424] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-19 04:32:27,424] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-19 04:32:27,424] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-19 04:32:27,424] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-19 04:32:27,424] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n" + ] + } + ], "source": [ "# Copy DICOM files are in 'dcm' folder\n", "\n", @@ -873,9 +1887,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.2.826.0.1.3680043.10.511.3.11520264113032864635597744730480621.dcm\n", + "1.2.826.0.1.3680043.10.511.3.12640275207784915071286249090159942.dcm\n", + "1.2.826.0.1.3680043.10.511.3.60037419814661212759821378502636860.dcm\n", + "1.2.826.0.1.3680043.10.511.3.62411810421842534426987578192611738.dcm\n", + "prediction_output\n" + ] + } + ], "source": [ "!ls output" ] diff --git a/notebooks/tutorials/03_segmentation_viz_app.ipynb b/notebooks/tutorials/03_segmentation_viz_app.ipynb index 8ab9ddec..d9ce34aa 100644 --- a/notebooks/tutorials/03_segmentation_viz_app.ipynb +++ b/notebooks/tutorials/03_segmentation_viz_app.ipynb @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -138,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -146,21 +146,21 @@ "output_type": "stream", "text": [ "Requirement already satisfied: gdown in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (4.5.1)\n", - "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", "Requirement already satisfied: six in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (1.16.0)\n", - "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", - "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", + "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", + "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", + "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", "Requirement already satisfied: soupsieve>1.2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from beautifulsoup4->gdown) (2.3.2.post1)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", "Requirement already satisfied: idna<4,>=2.5 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (3.3)\n", "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.26.12)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.7.1)\n", "Downloading...\n", "From: https://drive.google.com/uc?id=1Uds8mEvdGNYUuvFpTtCQ8gNU97bAPCaQ\n", "To: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_seg_bundle_data.zip\n", - "100%|███████████████████████████████████████| 79.4M/79.4M [00:00<00:00, 109MB/s]\n", + "100%|███████████████████████████████████████| 79.4M/79.4M [00:00<00:00, 102MB/s]\n", "Archive: ai_spleen_seg_bundle_data.zip\n", " inflating: dcm/1-001.dcm \n", " inflating: dcm/1-002.dcm \n", @@ -390,7 +390,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -454,7 +454,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -560,7 +560,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -668,7 +668,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -676,45 +676,29 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1023022, Operator ID: a04010af-53dd-4f1b-b43f-655192b0a30c)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1084421, Operator ID: ad334e7d-979b-484b-b73d-70bb012cfe05)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2022-10-18 18:20:36,956] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 18:20:36,957] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", - " # of series: 1\n", - "[2022-10-18 18:20:36,958] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 18:20:36,958] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-18 18:20:36,959] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", - "[2022-10-18 18:20:36,960] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 18:20:36,961] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 18:20:36,961] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 18:20:36,962] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 18:20:36,963] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-18 18:20:36,963] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", - "[2022-10-18 18:20:36,964] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 18:20:36,964] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 18:20:36,965] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 18:20:36,966] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 18:20:36,967] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 18:20:36,967] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "[2022-10-18 21:33:47,082] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 21:33:47,084] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-18 18:20:36,969] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-18 18:20:36,970] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", - "[2022-10-18 18:20:36,970] [INFO] (root) - Series attribute StudyDescription value: spleen\n", - "[2022-10-18 18:20:36,971] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 18:20:36,972] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 18:20:36,973] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 18:20:36,973] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 18:20:36,974] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", - "[2022-10-18 18:20:36,975] [INFO] (root) - Series attribute SeriesDescription value: No series description\n", - "[2022-10-18 18:20:36,975] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 18:20:36,976] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 18:20:36,977] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 18:20:36,978] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n" + "[2022-10-18 21:33:47,085] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 21:33:47,087] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-18 21:33:47,087] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-18 21:33:47,088] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:33:47,088] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 21:33:47,089] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 21:33:47,089] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:33:47,090] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-18 21:33:47,091] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-18 21:33:47,091] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:33:47,091] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 21:33:47,092] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 21:33:47,092] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n" ] }, { @@ -724,15 +708,15 @@ "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1023022, Operator ID: d3df392a-1db7-4094-b743-1993af8deda3)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1084421, Operator ID: 52bc0253-84e7-4d83-bf67-aea10d6df3ae)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1023022, Operator ID: 03c8b167-737a-4cd8-adb0-b46d59d98d25)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1084421, Operator ID: 47a7415b-28f3-4a81-abf8-43fa2bd55389)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1023022, Operator ID: f84053f9-9d20-48c1-9eb9-66eba296595b)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1084421, Operator ID: 2963c156-eb97-43ec-b48d-ddbc67984cc1)\u001b[39m\n", "Converted Image object metadata:\n", "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", "SeriesDate: 20090831, type \n", @@ -762,116 +746,118 @@ "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "2022-10-18 18:20:46,564 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "2022-10-18 21:34:00,641 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1023022, Operator ID: cc0c00e0-1e99-4f22-8044-8c96287623e7)\u001b[39m\n" + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1084421, Operator ID: 8340781d-9a63-46f1-ae80-1405bb6a644d)\u001b[39m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "[2022-10-18 18:20:49,639] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-18 18:20:49,641] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-18 18:20:49,644] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-18 18:20:49,647] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-18 18:20:49,649] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-18 18:20:49,652] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-18 18:20:49,654] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-18 18:20:49,657] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-18 18:20:49,660] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-18 18:20:49,663] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-18 18:20:49,666] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-18 18:20:49,669] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-18 18:20:49,672] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-18 18:20:49,675] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-18 18:20:49,678] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-18 18:20:49,681] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-18 18:20:49,685] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-18 18:20:49,688] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-18 18:20:49,691] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-18 18:20:49,694] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-18 18:20:49,696] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-18 18:20:49,699] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-18 18:20:49,702] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-18 18:20:49,706] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-18 18:20:49,709] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-18 18:20:49,712] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-18 18:20:49,715] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-18 18:20:49,718] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-18 18:20:49,721] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-18 18:20:49,724] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-18 18:20:49,726] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-18 18:20:49,729] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-18 18:20:49,732] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-18 18:20:49,735] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-18 18:20:49,738] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-18 18:20:49,741] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-18 18:20:49,744] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-18 18:20:49,747] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-18 18:20:49,749] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-18 18:20:49,752] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-18 18:20:49,755] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-18 18:20:49,757] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-18 18:20:49,761] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-18 18:20:49,764] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-18 18:20:49,767] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-18 18:20:49,773] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-18 18:20:49,777] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-18 18:20:49,780] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-18 18:20:49,782] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-18 18:20:49,785] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-18 18:20:49,788] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-18 18:20:49,790] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-18 18:20:49,791] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-18 18:20:49,793] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-18 18:20:49,795] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-18 18:20:49,796] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-18 18:20:49,798] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-18 18:20:49,800] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-18 18:20:49,804] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-18 18:20:49,807] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-18 18:20:49,809] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-18 18:20:49,812] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-18 18:20:49,816] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-18 18:20:49,819] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-18 18:20:49,822] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-18 18:20:49,825] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-18 18:20:49,827] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-18 18:20:49,830] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-18 18:20:49,833] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-18 18:20:49,836] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-18 18:20:49,840] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-18 18:20:49,842] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-18 18:20:49,845] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-18 18:20:49,848] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-18 18:20:49,851] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-18 18:20:49,854] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-18 18:20:49,858] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-18 18:20:49,861] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-18 18:20:49,864] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-18 18:20:49,866] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-18 18:20:49,868] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-18 18:20:49,870] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-18 18:20:49,872] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-18 18:20:49,874] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-18 18:20:49,875] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-18 18:20:49,877] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-18 18:20:49,879] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-18 18:20:49,883] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-18 18:20:49,932] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 18:20:49,933] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-18 18:20:49,934] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 18:20:49,935] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-18 18:20:49,936] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-18 18:20:49,937] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 18:20:49,938] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-18 18:20:49,939] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-18 18:20:49,940] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n" + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-18 21:34:04,374] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 21:34:04,377] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 21:34:04,378] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 21:34:04,381] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 21:34:04,382] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 21:34:04,384] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 21:34:04,386] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 21:34:04,388] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 21:34:04,389] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 21:34:04,391] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 21:34:04,393] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 21:34:04,394] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 21:34:04,396] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 21:34:04,398] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 21:34:04,400] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 21:34:04,402] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 21:34:04,404] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 21:34:04,405] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 21:34:04,407] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 21:34:04,409] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 21:34:04,411] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 21:34:04,413] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 21:34:04,415] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 21:34:04,418] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 21:34:04,421] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 21:34:04,424] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 21:34:04,426] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 21:34:04,428] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 21:34:04,430] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 21:34:04,432] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 21:34:04,435] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 21:34:04,438] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 21:34:04,441] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 21:34:04,444] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 21:34:04,446] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 21:34:04,449] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 21:34:04,452] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 21:34:04,454] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 21:34:04,457] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 21:34:04,459] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 21:34:04,460] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 21:34:04,462] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 21:34:04,464] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 21:34:04,465] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 21:34:04,467] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 21:34:04,469] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 21:34:04,471] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 21:34:04,473] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 21:34:04,475] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 21:34:04,477] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 21:34:04,479] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 21:34:04,480] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 21:34:04,482] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 21:34:04,484] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 21:34:04,485] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 21:34:04,487] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 21:34:04,489] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 21:34:04,491] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 21:34:04,494] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 21:34:04,496] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 21:34:04,498] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 21:34:04,500] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 21:34:04,502] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 21:34:04,504] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 21:34:04,505] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 21:34:04,507] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 21:34:04,509] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 21:34:04,510] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 21:34:04,513] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 21:34:04,516] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 21:34:04,519] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 21:34:04,528] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 21:34:04,532] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 21:34:04,535] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 21:34:04,538] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 21:34:04,542] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 21:34:04,546] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 21:34:04,549] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 21:34:04,552] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 21:34:04,555] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 21:34:04,558] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 21:34:04,561] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 21:34:04,563] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 21:34:04,566] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 21:34:04,568] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 21:34:04,570] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 21:34:04,573] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 21:34:04,575] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 21:34:04,625] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:34:04,626] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 21:34:04,626] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:34:04,626] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 21:34:04,627] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 21:34:04,628] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:34:04,628] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 21:34:04,629] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 21:34:04,629] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n" ] }, { @@ -881,13 +867,13 @@ "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator ClaraVizOperator\u001b[39m\n", - "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 1023022, Operator ID: dd3edeba-ddd4-4be9-ad3a-691bfa496e73)\u001b[39m\n" + "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 1084421, Operator ID: 22570e7b-4760-478a-b876-78cc803f90c3)\u001b[39m\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "6da71aa975554482904a2024c4e7f45d", + "model_id": "90eff793a99e4988b2f921df491c9cf4", "version_major": 2, "version_minor": 0 }, @@ -936,7 +922,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -953,7 +939,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -1083,7 +1069,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -1251,7 +1237,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -1272,7 +1258,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -1296,7 +1282,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -1304,43 +1290,31 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1023682, Operator ID: 1cd6dc57-ebe1-4d03-bea2-6134940f858a)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1084688, Operator ID: 110251db-4c50-42ff-a56d-32bd876bb739)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1023682, Operator ID: 937b2641-a831-4175-bbe5-92ad6a305045)\u001b[39m\n", - "[2022-10-18 18:20:59,054] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 18:20:59,054] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", - " # of series: 1\n", - "[2022-10-18 18:20:59,054] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 18:20:59,054] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 18:20:59,054] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 18:20:59,054] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1084688, Operator ID: 741a6c5d-8439-414f-b4f0-c499fa9f85a9)\u001b[39m\n", + "[2022-10-18 21:34:15,156] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 21:34:15,156] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", - "[2022-10-18 18:20:59,055] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 21:34:15,156] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 21:34:15,156] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 21:34:15,156] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 21:34:15,156] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:34:15,157] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 21:34:15,157] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 21:34:15,157] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", + "[2022-10-18 21:34:15,157] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", + "[2022-10-18 21:34:15,157] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1023682, Operator ID: c9013d53-342e-442b-9bbf-262e18b7307b)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1084688, Operator ID: ec4bd664-8c8c-4d7e-a466-cbb55f6abb05)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1023682, Operator ID: 29f01c20-852e-4f2e-94b4-4446d14d97f0)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1084688, Operator ID: 3931c216-5bbb-4c64-8bee-7144e7de0f9e)\u001b[39m\n", "Converted Image object metadata:\n", "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", "SeriesDate: 20090831, type \n", @@ -1370,116 +1344,116 @@ "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "2022-10-18 18:21:13,525 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "2022-10-18 21:34:29,110 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1023682, Operator ID: b4439dc5-c5c9-4e0c-b993-3dc1f83423c1)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1084688, Operator ID: bb507096-3d21-419d-b746-cda41ab7a9f5)\u001b[39m\n", "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", " warnings.warn(\n", - "[2022-10-18 18:21:16,647] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-18 18:21:16,648] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-18 18:21:16,649] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-18 18:21:16,650] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-18 18:21:16,651] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-18 18:21:16,652] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-18 18:21:16,653] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-18 18:21:16,654] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-18 18:21:16,655] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-18 18:21:16,656] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-18 18:21:16,657] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-18 18:21:16,658] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-18 18:21:16,658] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-18 18:21:16,659] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-18 18:21:16,660] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-18 18:21:16,661] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-18 18:21:16,662] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-18 18:21:16,663] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-18 18:21:16,664] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-18 18:21:16,665] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-18 18:21:16,666] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-18 18:21:16,667] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-18 18:21:16,668] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-18 18:21:16,669] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-18 18:21:16,670] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-18 18:21:16,671] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-18 18:21:16,673] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-18 18:21:16,674] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-18 18:21:16,675] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-18 18:21:16,676] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-18 18:21:16,677] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-18 18:21:16,679] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-18 18:21:16,680] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-18 18:21:16,682] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-18 18:21:16,684] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-18 18:21:16,686] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-18 18:21:16,688] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-18 18:21:16,690] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-18 18:21:16,691] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-18 18:21:16,692] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-18 18:21:16,693] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-18 18:21:16,694] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-18 18:21:16,695] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-18 18:21:16,696] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-18 18:21:16,697] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-18 18:21:16,698] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-18 18:21:16,699] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-18 18:21:16,701] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-18 18:21:16,702] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-18 18:21:16,703] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-18 18:21:16,704] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-18 18:21:16,705] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-18 18:21:16,706] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-18 18:21:16,707] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-18 18:21:16,708] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-18 18:21:16,709] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-18 18:21:16,710] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-18 18:21:16,711] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-18 18:21:16,712] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-18 18:21:16,713] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-18 18:21:16,714] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-18 18:21:16,715] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-18 18:21:16,717] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-18 18:21:16,719] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-18 18:21:16,720] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-18 18:21:16,722] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-18 18:21:16,724] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-18 18:21:16,725] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-18 18:21:16,727] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-18 18:21:16,728] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-18 18:21:16,729] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-18 18:21:16,731] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-18 18:21:16,732] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-18 18:21:16,733] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-18 18:21:16,734] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-18 18:21:16,735] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-18 18:21:16,736] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-18 18:21:16,737] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-18 18:21:16,738] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-18 18:21:16,739] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-18 18:21:16,740] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-18 18:21:16,741] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-18 18:21:16,742] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-18 18:21:16,743] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-18 18:21:16,744] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-18 18:21:16,745] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-18 18:21:16,746] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-18 18:21:16,747] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-18 18:21:16,860] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 18:21:16,860] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-18 18:21:16,860] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 18:21:16,861] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-18 18:21:16,861] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-18 18:21:16,861] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 18:21:16,861] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-18 18:21:16,862] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-18 18:21:16,862] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 21:34:32,757] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 21:34:32,758] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 21:34:32,760] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 21:34:32,760] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 21:34:32,761] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 21:34:32,762] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 21:34:32,763] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 21:34:32,764] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 21:34:32,765] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 21:34:32,766] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 21:34:32,767] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 21:34:32,768] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 21:34:32,769] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 21:34:32,770] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 21:34:32,772] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 21:34:32,773] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 21:34:32,774] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 21:34:32,774] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 21:34:32,775] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 21:34:32,776] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 21:34:32,777] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 21:34:32,778] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 21:34:32,779] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 21:34:32,780] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 21:34:32,781] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 21:34:32,782] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 21:34:32,783] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 21:34:32,784] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 21:34:32,785] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 21:34:32,786] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 21:34:32,787] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 21:34:32,788] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 21:34:32,789] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 21:34:32,790] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 21:34:32,791] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 21:34:32,792] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 21:34:32,793] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 21:34:32,794] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 21:34:32,795] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 21:34:32,796] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 21:34:32,797] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 21:34:32,798] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 21:34:32,799] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 21:34:32,800] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 21:34:32,801] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 21:34:32,802] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 21:34:32,803] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 21:34:32,804] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 21:34:32,805] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 21:34:32,806] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 21:34:32,807] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 21:34:32,808] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 21:34:32,810] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 21:34:32,811] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 21:34:32,812] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 21:34:32,813] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 21:34:32,814] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 21:34:32,815] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 21:34:32,816] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 21:34:32,817] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 21:34:32,818] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 21:34:32,819] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 21:34:32,820] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 21:34:32,821] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 21:34:32,822] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 21:34:32,823] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 21:34:32,824] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 21:34:32,825] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 21:34:32,826] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 21:34:32,828] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 21:34:32,829] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 21:34:32,830] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 21:34:32,831] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 21:34:32,832] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 21:34:32,833] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 21:34:32,834] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 21:34:32,835] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 21:34:32,836] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 21:34:32,837] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 21:34:32,839] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 21:34:32,840] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 21:34:32,841] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 21:34:32,842] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 21:34:32,843] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 21:34:32,844] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 21:34:32,845] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 21:34:32,846] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 21:34:32,847] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 21:34:32,931] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:34:32,932] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 21:34:32,932] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:34:32,932] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 21:34:32,932] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 21:34:32,932] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:34:32,932] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 21:34:32,932] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 21:34:32,932] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator ClaraVizOperator\u001b[39m\n", - "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 1023682, Operator ID: e2609abe-f9ab-4601-8a10-48283cfcdc55)\u001b[39m\n", + "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 1084688, Operator ID: d0e9f72b-6ff8-454b-9550-21bd4263a16a)\u001b[39m\n", "Box(children=(Widget(), VBox(children=(interactive(children=(Dropdown(description='View mode', index=2, options=(('Cinematic', 'CINEMATIC'), ('Slice', 'SLICE'), ('Slice Segmentation', 'SLICE_SEGMENTATION')), value='SLICE_SEGMENTATION'), Output()), _dom_classes=('widget-interact',)), interactive(children=(Dropdown(description='Camera', options=('Top', 'Right', 'Front'), value='Top'), Output()), _dom_classes=('widget-interact',))))))\n", "\u001b[34mDone performing execution of operator ClaraVizOperator\n", "\u001b[39m\n" @@ -1499,7 +1473,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -1507,43 +1481,31 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1023754, Operator ID: 5a09378c-8e0c-45e1-8c29-45ea15372477)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1084773, Operator ID: 21b70bc7-bd07-4803-936b-aadc983343c8)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1023754, Operator ID: 73396666-3ee3-4f06-9254-8ea9309d7c25)\u001b[39m\n", - "[2022-10-18 18:21:29,305] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 18:21:29,305] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", - " # of series: 1\n", - "[2022-10-18 18:21:29,305] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 18:21:29,305] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 18:21:29,305] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 18:21:29,305] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 18:21:29,305] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 18:21:29,305] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 18:21:29,305] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", - "[2022-10-18 18:21:29,305] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", - "[2022-10-18 18:21:29,305] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", - "[2022-10-18 18:21:29,306] [INFO] (root) - Finding series for Selection named: CT Series\n", - "[2022-10-18 18:21:29,306] [INFO] (root) - Searching study, : 1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1084773, Operator ID: 06cf792c-e49a-4a84-b04b-c38ec1e2830a)\u001b[39m\n", + "[2022-10-18 21:34:41,042] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-18 21:34:41,042] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", " # of series: 1\n", - "[2022-10-18 18:21:29,306] [INFO] (root) - Working on series, instance UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", - "[2022-10-18 18:21:29,306] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", - "[2022-10-18 18:21:29,306] [INFO] (root) - Series attribute Modality value: CT\n", - "[2022-10-18 18:21:29,306] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", - "[2022-10-18 18:21:29,306] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", - "[2022-10-18 18:21:29,306] [INFO] (root) - Series attribute ImageType value: None\n", - "[2022-10-18 18:21:29,306] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", - "[2022-10-18 18:21:29,306] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", - "[2022-10-18 18:21:29,306] [INFO] (root) - Selected Series, UID: 1.2.826.0.1.3680043.2.1125.1.68102559796966796813942775094416763\n", + "[2022-10-18 21:34:41,042] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-18 21:34:41,042] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-18 21:34:41,042] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-18 21:34:41,043] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-18 21:34:41,043] [INFO] (root) - On attribute: 'ImageType' to match value: '['PRIMARY', 'ORIGINAL']'\n", + "[2022-10-18 21:34:41,043] [INFO] (root) - Series attribute ImageType value: None\n", + "[2022-10-18 21:34:41,043] [INFO] (root) - On attribute: 'PhotometricInterpretation' to match value: 'MONOCHROME2'\n", + "[2022-10-18 21:34:41,043] [INFO] (root) - Series attribute PhotometricInterpretation value: None\n", + "[2022-10-18 21:34:41,043] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1023754, Operator ID: e3dde3ae-9209-4c15-8dc5-4cf9b9544230)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1084773, Operator ID: 8017c508-ab6a-4969-a7fc-13a963d60bf6)\u001b[39m\n", "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1023754, Operator ID: 088f2734-5689-4023-b873-5b82e8a86f32)\u001b[39m\n", + "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1084773, Operator ID: 6acc2418-dbe4-4d34-bde0-aea2461b3acf)\u001b[39m\n", "Converted Image object metadata:\n", "SeriesInstanceUID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239, type \n", "SeriesDate: 20090831, type \n", @@ -1573,116 +1535,116 @@ "StudyDescription: CT ABDOMEN W IV CONTRAST, type \n", "AccessionNumber: 5471978513296937, type \n", "selection_name: CT Series, type \n", - "2022-10-18 18:21:43,351 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", + "2022-10-18 21:34:54,946 INFO image_writer.py:194 - writing: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/1.3.6.1.4.1.14519.5.2.1.7085.2626/1.3.6.1.4.1.14519.5.2.1.7085.2626_seg.nii.gz\n", "Output Seg image numpy array shaped: (204, 512, 512)\n", "Output Seg image pixel max value: 1\n", "\u001b[34mDone performing execution of operator SpleenSegOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1023754, Operator ID: c200d7da-3834-4f6d-80b7-4bc95e9f3b4c)\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1084773, Operator ID: 78e3d0dc-7d3d-4746-989c-8c1f9f749316)\u001b[39m\n", "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", " warnings.warn(\n", - "[2022-10-18 18:21:46,464] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", - "[2022-10-18 18:21:46,465] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", - "[2022-10-18 18:21:46,466] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", - "[2022-10-18 18:21:46,467] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", - "[2022-10-18 18:21:46,468] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", - "[2022-10-18 18:21:46,469] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", - "[2022-10-18 18:21:46,470] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", - "[2022-10-18 18:21:46,471] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", - "[2022-10-18 18:21:46,472] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", - "[2022-10-18 18:21:46,473] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", - "[2022-10-18 18:21:46,474] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", - "[2022-10-18 18:21:46,475] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", - "[2022-10-18 18:21:46,476] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", - "[2022-10-18 18:21:46,477] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", - "[2022-10-18 18:21:46,478] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", - "[2022-10-18 18:21:46,480] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", - "[2022-10-18 18:21:46,481] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", - "[2022-10-18 18:21:46,482] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", - "[2022-10-18 18:21:46,483] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", - "[2022-10-18 18:21:46,484] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", - "[2022-10-18 18:21:46,486] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", - "[2022-10-18 18:21:46,487] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", - "[2022-10-18 18:21:46,488] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", - "[2022-10-18 18:21:46,489] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", - "[2022-10-18 18:21:46,490] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", - "[2022-10-18 18:21:46,491] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", - "[2022-10-18 18:21:46,492] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", - "[2022-10-18 18:21:46,493] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", - "[2022-10-18 18:21:46,494] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", - "[2022-10-18 18:21:46,495] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", - "[2022-10-18 18:21:46,496] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", - "[2022-10-18 18:21:46,497] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", - "[2022-10-18 18:21:46,498] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", - "[2022-10-18 18:21:46,499] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", - "[2022-10-18 18:21:46,500] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", - "[2022-10-18 18:21:46,501] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", - "[2022-10-18 18:21:46,502] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", - "[2022-10-18 18:21:46,503] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", - "[2022-10-18 18:21:46,504] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", - "[2022-10-18 18:21:46,505] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", - "[2022-10-18 18:21:46,506] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", - "[2022-10-18 18:21:46,507] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", - "[2022-10-18 18:21:46,508] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", - "[2022-10-18 18:21:46,509] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", - "[2022-10-18 18:21:46,510] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", - "[2022-10-18 18:21:46,511] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", - "[2022-10-18 18:21:46,512] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", - "[2022-10-18 18:21:46,513] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", - "[2022-10-18 18:21:46,514] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", - "[2022-10-18 18:21:46,515] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", - "[2022-10-18 18:21:46,516] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", - "[2022-10-18 18:21:46,517] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", - "[2022-10-18 18:21:46,518] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", - "[2022-10-18 18:21:46,519] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", - "[2022-10-18 18:21:46,520] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", - "[2022-10-18 18:21:46,522] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", - "[2022-10-18 18:21:46,523] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", - "[2022-10-18 18:21:46,524] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", - "[2022-10-18 18:21:46,525] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", - "[2022-10-18 18:21:46,526] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", - "[2022-10-18 18:21:46,527] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", - "[2022-10-18 18:21:46,528] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", - "[2022-10-18 18:21:46,529] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", - "[2022-10-18 18:21:46,530] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", - "[2022-10-18 18:21:46,531] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", - "[2022-10-18 18:21:46,532] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", - "[2022-10-18 18:21:46,534] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", - "[2022-10-18 18:21:46,535] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", - "[2022-10-18 18:21:46,536] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", - "[2022-10-18 18:21:46,537] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", - "[2022-10-18 18:21:46,538] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", - "[2022-10-18 18:21:46,539] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", - "[2022-10-18 18:21:46,540] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", - "[2022-10-18 18:21:46,541] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", - "[2022-10-18 18:21:46,542] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", - "[2022-10-18 18:21:46,543] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", - "[2022-10-18 18:21:46,544] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", - "[2022-10-18 18:21:46,545] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", - "[2022-10-18 18:21:46,546] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", - "[2022-10-18 18:21:46,547] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", - "[2022-10-18 18:21:46,548] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", - "[2022-10-18 18:21:46,549] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", - "[2022-10-18 18:21:46,551] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", - "[2022-10-18 18:21:46,552] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", - "[2022-10-18 18:21:46,553] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", - "[2022-10-18 18:21:46,554] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", - "[2022-10-18 18:21:46,555] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", - "[2022-10-18 18:21:46,556] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", - "[2022-10-18 18:21:46,604] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 18:21:46,604] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", - "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", - "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", - "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", - "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", - "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", - "[2022-10-18 18:21:46,605] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-18 21:34:58,408] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-18 21:34:58,409] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-18 21:34:58,410] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-18 21:34:58,411] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-18 21:34:58,412] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-18 21:34:58,413] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-18 21:34:58,414] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-18 21:34:58,415] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-18 21:34:58,416] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-18 21:34:58,417] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-18 21:34:58,418] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-18 21:34:58,419] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-18 21:34:58,420] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-18 21:34:58,421] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-18 21:34:58,422] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-18 21:34:58,423] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-18 21:34:58,424] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-18 21:34:58,425] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-18 21:34:58,426] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-18 21:34:58,427] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-18 21:34:58,428] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-18 21:34:58,429] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-18 21:34:58,430] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-18 21:34:58,431] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-18 21:34:58,432] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-18 21:34:58,434] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-18 21:34:58,435] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-18 21:34:58,436] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-18 21:34:58,437] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-18 21:34:58,438] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-18 21:34:58,439] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-18 21:34:58,440] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-18 21:34:58,441] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-18 21:34:58,442] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-18 21:34:58,443] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-18 21:34:58,444] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-18 21:34:58,445] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-18 21:34:58,446] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-18 21:34:58,447] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-18 21:34:58,448] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-18 21:34:58,449] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-18 21:34:58,450] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-18 21:34:58,451] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-18 21:34:58,452] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-18 21:34:58,453] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-18 21:34:58,454] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-18 21:34:58,455] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-18 21:34:58,456] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-18 21:34:58,457] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-18 21:34:58,458] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-18 21:34:58,459] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-18 21:34:58,460] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-18 21:34:58,461] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-18 21:34:58,462] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-18 21:34:58,463] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-18 21:34:58,465] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-18 21:34:58,466] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-18 21:34:58,467] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-18 21:34:58,468] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-18 21:34:58,469] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-18 21:34:58,470] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-18 21:34:58,471] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-18 21:34:58,472] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-18 21:34:58,473] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-18 21:34:58,474] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-18 21:34:58,475] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-18 21:34:58,476] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-18 21:34:58,477] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-18 21:34:58,478] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-18 21:34:58,479] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-18 21:34:58,480] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-18 21:34:58,481] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-18 21:34:58,482] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-18 21:34:58,484] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-18 21:34:58,485] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-18 21:34:58,486] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-18 21:34:58,487] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-18 21:34:58,488] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-18 21:34:58,489] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-18 21:34:58,490] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-18 21:34:58,491] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-18 21:34:58,492] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-18 21:34:58,493] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-18 21:34:58,494] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-18 21:34:58,495] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-18 21:34:58,497] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-18 21:34:58,498] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-18 21:34:58,499] [INFO] (highdicom.seg.sop) - add plane #87 for segment #1\n", + "[2022-10-18 21:34:58,546] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:34:58,546] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-18 21:34:58,546] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:34:58,546] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-18 21:34:58,547] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-18 21:34:58,547] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-18 21:34:58,547] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-18 21:34:58,547] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-18 21:34:58,547] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator ClaraVizOperator\u001b[39m\n", - "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 1023754, Operator ID: 79e96867-5909-4e91-bbec-c967a3745471)\u001b[39m\n", + "\u001b[32mExecuting operator ClaraVizOperator \u001b[33m(Process ID: 1084773, Operator ID: 0b5669c2-1eba-4dfb-aca7-f5059aa855d9)\u001b[39m\n", "Box(children=(Widget(), VBox(children=(interactive(children=(Dropdown(description='View mode', index=2, options=(('Cinematic', 'CINEMATIC'), ('Slice', 'SLICE'), ('Slice Segmentation', 'SLICE_SEGMENTATION')), value='SLICE_SEGMENTATION'), Output()), _dom_classes=('widget-interact',)), interactive(children=(Dropdown(description='Camera', options=('Top', 'Right', 'Front'), value='Top'), Output()), _dom_classes=('widget-interact',))))))\n", "\u001b[34mDone performing execution of operator ClaraVizOperator\n", "\u001b[39m\n" @@ -1697,16 +1659,16 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "1.2.826.0.1.3680043.10.511.3.11192498220575485856132513807928919.dcm\n", - "1.2.826.0.1.3680043.10.511.3.18200202038304895722865475696382570.dcm\n", - "1.2.826.0.1.3680043.10.511.3.74687294969977766509044626310497294.dcm\n", + "1.2.826.0.1.3680043.10.511.3.11636838214613793635775978376672891.dcm\n", + "1.2.826.0.1.3680043.10.511.3.17384468917290596349831996191635582.dcm\n", + "1.2.826.0.1.3680043.10.511.3.55545104192889656878608836519404425.dcm\n", "prediction_output\n" ] } From 659b1d3c8eb62965f93d09c730a4767433694de3 Mon Sep 17 00:00:00 2001 From: Christopher Bridge Date: Thu, 13 Oct 2022 10:33:31 -0400 Subject: [PATCH 024/216] Various fixes to PIN integration example Signed-off-by: Christopher Bridge Signed-off-by: Simone Bendazzoli --- integrations/nuance_pin/README.md | 12 +-- integrations/nuance_pin/app/inference.py | 2 +- .../nuance_pin/app/post_inference_ops.py | 92 +++++++++++-------- integrations/nuance_pin/app_wrapper.py | 2 +- 4 files changed, 61 insertions(+), 47 deletions(-) diff --git a/integrations/nuance_pin/README.md b/integrations/nuance_pin/README.md index 20442e23..4895674c 100644 --- a/integrations/nuance_pin/README.md +++ b/integrations/nuance_pin/README.md @@ -8,7 +8,7 @@ with minimal code changes. ## Prerequisites -Before setting up and running the example MONAI spleen segmentation app to run as a Nuance PIN App, the user will need to install/download the following libraries. +Before setting up and running the example MONAI lung nodule detection app to run as a Nuance PIN App, the user will need to install/download the following libraries. It is optional to use a GPU for the example app, however, it is recommended that a GPU is used for inference as it is very computationally intensive. Minimum software requirements: @@ -30,9 +30,9 @@ cd integrations/nuance_pin In this folder you will see the following directory structure ```bash nuance_pin - ├── app # directory with MONAI app code - ├── lib # directory where we will place Nuance PIN wheels - ├── model # directory where we will place the model used by our MONAI app + ├── app/ # directory with MONAI app code + ├── lib/ # you should create this directory where we will place Nuance PIN wheels + ├── model/ # directory where we will place the model used by our MONAI app ├── app_wrapper.py # Nuance PIN wrapper code ├── docker-compose.yml # docker compose runtime script ├── Dockerfile # container image build script @@ -48,7 +48,7 @@ To download the test data you may follow the instructions in the [Lund Nodule De ### Download Nuance PIN SDK -Place the Nuance PIN `ai_service` wheel in the `nuance_pin/lib` folder. This can be obtained in the link provided in step 3 of of the [prerequisites](#prerequisites). +Place the Nuance PIN `ai_service` wheel in the `nuance_pin/lib` folder. This can be obtained in the link provided in step 4 of of the [prerequisites](#prerequisites). ### Running the Example App in the Container @@ -57,7 +57,7 @@ Now we are ready to build and start the container that runs our MONAI app as a N docker-compose up --build ``` -If the build is successful the a service will start on `localhost:5000`. We can verify the service is running +If the build is successful the service will start on `localhost:5000`. We can verify the service is running by issuing a "live" request such as ```bash curl -v http://localhost:5000/aiservice/2/live && echo "" diff --git a/integrations/nuance_pin/app/inference.py b/integrations/nuance_pin/app/inference.py index 016e439f..75f24c01 100644 --- a/integrations/nuance_pin/app/inference.py +++ b/integrations/nuance_pin/app/inference.py @@ -177,7 +177,7 @@ def pre_process(self, img_reader) -> Compose: keys=[image_key, f"{image_key}_meta_dict"], names=[orig_image_key, f"{orig_image_key}_meta_dict"], ), - ToDeviced(keys=image_key, device="cuda"), + ToDeviced(keys=image_key, device=self.device), EnsureChannelFirstd(keys=image_key), Spacingd(keys=image_key, pixdim=(0.703125, 0.703125, 1.25)), Orientationd( diff --git a/integrations/nuance_pin/app/post_inference_ops.py b/integrations/nuance_pin/app/post_inference_ops.py index 4958456d..068ce6cc 100644 --- a/integrations/nuance_pin/app/post_inference_ops.py +++ b/integrations/nuance_pin/app/post_inference_ops.py @@ -46,8 +46,26 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe series_uid = hd.UID() series_number = randint(1, 100000) + # One graphic layer to contain all detections + layer = hd.pr.GraphicLayer( + layer_name="LUNG_NODULES", + order=1, + description="Lung Nodule Detections", + ) + + annotations = [] + + all_ref_images = [ + ins.get_native_sop_instance() + for ins in selected_series.series.get_sop_instances() + ] + accession = all_ref_images[0].AccessionNumber + for inst_num, (box_data, box_score) in enumerate(zip(detection_result.box_data, detection_result.score_data)): + tracking_id = f"{accession}_nodule_{inst_num}" # site-specific ID + tracking_uid = hd.UID() + polyline = hd.pr.GraphicObject( graphic_type=hd.pr.GraphicTypeValues.POLYLINE, graphic_data=np.array( @@ -60,8 +78,8 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe ] ), # coordinates of polyline vertices units=hd.pr.AnnotationUnitsValues.PIXEL, # units for graphic data - tracking_id="lung_nodule_MONAI", # site-specific ID - tracking_uid=hd.UID(), # highdicom will generate a unique ID + tracking_id=tracking_id, + tracking_uid=tracking_uid, ) self.logger.info(f"Box: {[box_data[0], box_data[1], box_data[3], box_data[4]]}") @@ -70,14 +88,8 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe text_value=f"{box_score:.2f}", bounding_box=(box_data[0], box_data[1], box_data[3], box_data[4]), # left, top, right, bottom units=hd.pr.AnnotationUnitsValues.PIXEL, # units for bounding box - tracking_id="LungNoduleMONAI", # site-specific ID - tracking_uid=hd.UID(), # highdicom will generate a unique ID - ) - - layer = hd.pr.GraphicLayer( - layer_name="LUNG_NODULE", - order=1, - description="Lung Nodule Detection", + tracking_id=tracking_id, + tracking_uid=tracking_uid, ) affected_slice_idx = [ @@ -103,37 +115,39 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe graphic_objects=[polyline], ) - # Assemble the components into a GSPS object - gsps = hd.pr.GrayscaleSoftcopyPresentationState( - referenced_images=ref_images, - series_instance_uid=series_uid, - series_number=series_number, - sop_instance_uid=hd.UID(), - instance_number=inst_num + 1, - manufacturer="MONAI", - manufacturer_model_name="lung_nodule_ct_detection", - software_versions="v0.2.0", - device_serial_number="", - content_label="ANNOTATIONS", - graphic_layers=[layer], - graphic_annotations=[annotation], - institution_name="MONAI", - institutional_department_name="Deploy", - voi_lut_transformations=[ - hd.pr.SoftcopyVOILUTTransformation( - window_center=-550.0, - window_width=1350.0, - ) - ], - ) + annotations.append(annotation) + + # Assemble the components into a GSPS object + gsps = hd.pr.GrayscaleSoftcopyPresentationState( + referenced_images=all_ref_images, + series_instance_uid=series_uid, + series_number=series_number, + sop_instance_uid=hd.UID(), + instance_number=1, + manufacturer="MONAI", + manufacturer_model_name="lung_nodule_ct_detection", + software_versions="v0.2.0", + device_serial_number="", + content_label="ANNOTATIONS", + graphic_layers=[layer], + graphic_annotations=annotations, + institution_name="MONAI", + institutional_department_name="Deploy", + voi_lut_transformations=[ + hd.pr.SoftcopyVOILUTTransformation( + window_center=-550.0, + window_width=1350.0, + ) + ], + ) - gsps.save_as(os.path.join(output_path, f"gsps-{inst_num:04d}.dcm")) + gsps.save_as(os.path.join(output_path, f"gsps.dcm")) - self.upload_gsps( - file=os.path.join(output_path, f"gsps-{inst_num:04d}.dcm"), - document_detail="MONAI Lung Nodule Detection v0.2.0", - series_uid=series_uid, - ) + self.upload_gsps( + file=os.path.join(output_path, f"gsps.dcm"), + document_detail="MONAI Lung Nodule Detection v0.2.0", + series_uid=series_uid, + ) @md.input("original_dicom", List[StudySelectedSeries], IOType.IN_MEMORY) diff --git a/integrations/nuance_pin/app_wrapper.py b/integrations/nuance_pin/app_wrapper.py index 3456f846..ca0a43d2 100644 --- a/integrations/nuance_pin/app_wrapper.py +++ b/integrations/nuance_pin/app_wrapper.py @@ -73,7 +73,7 @@ def initialize_class(cls): monai_app_class_name = cls.monai_app_module.rsplit(".", 1)[1] if not cls.monai_app_module: raise ValueError( - "MONAI App to be run has not been specificed in `MONAI_APP_CLASSPATH` environment variable" + "MONAI App to be run has not been specified in `MONAI_APP_CLASSPATH` environment variable" ) monai_app_class = getattr(import_module(monai_app_class_module), monai_app_class_name) From c865b0a2b69f29b73e8ed713e52f5ef2a3cb5555 Mon Sep 17 00:00:00 2001 From: Christopher Bridge Date: Fri, 14 Oct 2022 15:37:31 -0400 Subject: [PATCH 025/216] Fix style errors Signed-off-by: Christopher Bridge Signed-off-by: Simone Bendazzoli --- integrations/nuance_pin/app/post_inference_ops.py | 5 +---- integrations/nuance_pin/app_wrapper.py | 4 +--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/integrations/nuance_pin/app/post_inference_ops.py b/integrations/nuance_pin/app/post_inference_ops.py index 068ce6cc..7e406861 100644 --- a/integrations/nuance_pin/app/post_inference_ops.py +++ b/integrations/nuance_pin/app/post_inference_ops.py @@ -55,10 +55,7 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe annotations = [] - all_ref_images = [ - ins.get_native_sop_instance() - for ins in selected_series.series.get_sop_instances() - ] + all_ref_images = [ins.get_native_sop_instance() for ins in selected_series.series.get_sop_instances()] accession = all_ref_images[0].AccessionNumber for inst_num, (box_data, box_score) in enumerate(zip(detection_result.box_data, detection_result.score_data)): diff --git a/integrations/nuance_pin/app_wrapper.py b/integrations/nuance_pin/app_wrapper.py index ca0a43d2..f2128d33 100644 --- a/integrations/nuance_pin/app_wrapper.py +++ b/integrations/nuance_pin/app_wrapper.py @@ -72,9 +72,7 @@ def initialize_class(cls): monai_app_class_module = cls.monai_app_module.rsplit(".", 1)[0] monai_app_class_name = cls.monai_app_module.rsplit(".", 1)[1] if not cls.monai_app_module: - raise ValueError( - "MONAI App to be run has not been specified in `MONAI_APP_CLASSPATH` environment variable" - ) + raise ValueError("MONAI App to be run has not been specified in `MONAI_APP_CLASSPATH` environment variable") monai_app_class = getattr(import_module(monai_app_class_module), monai_app_class_name) if monai_app_class is None: From a13410c46f2303ea176d9d8c1f0e4df3a118a1c4 Mon Sep 17 00:00:00 2001 From: Christopher Bridge Date: Fri, 14 Oct 2022 15:51:07 -0400 Subject: [PATCH 026/216] Fix f-strings Signed-off-by: Christopher Bridge Signed-off-by: Simone Bendazzoli --- integrations/nuance_pin/app/post_inference_ops.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/integrations/nuance_pin/app/post_inference_ops.py b/integrations/nuance_pin/app/post_inference_ops.py index 7e406861..17534511 100644 --- a/integrations/nuance_pin/app/post_inference_ops.py +++ b/integrations/nuance_pin/app/post_inference_ops.py @@ -138,10 +138,11 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe ], ) - gsps.save_as(os.path.join(output_path, f"gsps.dcm")) + gsps_filename = os.path.join(output_path, "gsps.dcm") + gsps.save_as(gsps_filename) self.upload_gsps( - file=os.path.join(output_path, f"gsps.dcm"), + file=gsps_filename, document_detail="MONAI Lung Nodule Detection v0.2.0", series_uid=series_uid, ) From 39bfb35a8f00ac8186f191f2815776f4ba8af3db Mon Sep 17 00:00:00 2001 From: Christopher Bridge Date: Tue, 18 Oct 2022 18:49:17 -0400 Subject: [PATCH 027/216] Tweak to README Signed-off-by: Christopher Bridge Signed-off-by: Simone Bendazzoli --- integrations/nuance_pin/README.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/integrations/nuance_pin/README.md b/integrations/nuance_pin/README.md index 4895674c..19064f13 100644 --- a/integrations/nuance_pin/README.md +++ b/integrations/nuance_pin/README.md @@ -30,8 +30,7 @@ cd integrations/nuance_pin In this folder you will see the following directory structure ```bash nuance_pin - ├── app/ # directory with MONAI app code - ├── lib/ # you should create this directory where we will place Nuance PIN wheels + ├── app/ # directory with MONAI app code ├── lib/ # you should create this directory where we will place Nuance PIN wheels ├── model/ # directory where we will place the model used by our MONAI app ├── app_wrapper.py # Nuance PIN wrapper code ├── docker-compose.yml # docker compose runtime script @@ -136,12 +135,12 @@ python -m AiSvcTest -i ~/Downloads/dcm -o ~/Downloads/dcm/out -s http://localhos ### Bring Your Own MONAI App -This example integration may be modified to fit any existing MONAI app, however, there may be caveats. +This example integration may be modified to fit any existing MONAI app by tailoring the files within the `app/` directory, however, there may be caveats. Nuance PIN requires all artifacts present in the output folder to be also added into the `resultManifest.json` output file to consider the run successful. To see what this means in practical terms, check the `resultManifest.json` output from the example app we ran the in previous sections. You will notice an entry in `resultManifest.json` that corresponds to the DICOM -SEG output generated by the underlying MONAI app +GSPS output generated by the underlying MONAI app ```json "study": { "uid": "1.2.826.0.1.3680043.2.1125.1.67295333199898911264201812221946213", @@ -153,7 +152,7 @@ SEG output generated by the underlying MONAI app { "documentType": "application/dicom", "groupCode": "default", - "name": "dicom_seg-DICOMSEG.dcm", + "name": "gsps.dcm", "trackingUids": [] } ] @@ -161,9 +160,8 @@ SEG output generated by the underlying MONAI app ] }, ``` -This entry is generated by `app_wrapper.py`, which takes care of adding any DICOM present in the output folder in the `resultManifest.json` -to ensure that existing MONAI apps complete successfully when deployed in Nuance. In general, however, the developer may need to tailor some -of the code in `app_wrapper.py` to provide more insight to Nuance's network, such as adding findings, conclusions, etc. and generating more insight +This entry is generated automatically by Nuance's `ai_service` library as a result of uploading the DICOM GSPS object in `app/post_inference_ops.py`. +In general, however, the developer may need to tailor some of the code in `app_wrapper.py` to provide more insight to Nuance's network, such as adding findings, conclusions, etc. and generating more insight using SNOMED codes. All of this is handled within the Nuance PIN SDK libraries - for more information please consult Nuance PIN [documentation](https://www.nuance.com/healthcare/diagnostics-solutions/precision-imaging-network.html). In simpler cases, the developer will need to place their code and model under `nuance_pin`. Placing the model under `model` is optional as the model may be placed From cbbb016a36d0c01c11ae21a2b60e42cc9a070f92 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Wed, 19 Oct 2022 09:12:19 -0700 Subject: [PATCH 028/216] Release v0.5.0 (#376) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Bump version: 0.4.0 → 0.5.0 Signed-off-by: M Q * Update editable package detection method Signed-off-by: Gigon Bae * Update module path detection method Signed-off-by: Gigon Bae * Fix mypy type error Signed-off-by: Gigon Bae Signed-off-by: M Q Signed-off-by: Gigon Bae Co-authored-by: Gigon Bae Signed-off-by: Simone Bendazzoli --- .bumpversion.cfg | 2 +- .../operators/dicom_seg_writer_operator.py | 6 ++- monai/deploy/utils/importutil.py | 37 +++++++++++++++++-- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 2ff8281d..5fd7e27d 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.4.0 +current_version = 0.5.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)((?Pa|b|rc)(?P\d+))? serialize = {major}.{minor}.{patch}{release}{build} diff --git a/monai/deploy/operators/dicom_seg_writer_operator.py b/monai/deploy/operators/dicom_seg_writer_operator.py index 4de8f6ba..5240054e 100644 --- a/monai/deploy/operators/dicom_seg_writer_operator.py +++ b/monai/deploy/operators/dicom_seg_writer_operator.py @@ -306,9 +306,11 @@ def create_dicom_seg(self, image: np.ndarray, dicom_series: DICOMSeries, output_ if isinstance(k, str) and isinstance(v, str): try: if k in seg: - seg.data_element(k).value = v + data_element = seg.data_element(k) + if data_element: + data_element.value = v else: - seg.update({k: v}) + seg.update({k: v}) # type: ignore except Exception as ex: # Best effort for now. logging.warning(f"Tag {k} was not written, due to {ex}") diff --git a/monai/deploy/utils/importutil.py b/monai/deploy/utils/importutil.py index 4bb9e55c..1cba334f 100644 --- a/monai/deploy/utils/importutil.py +++ b/monai/deploy/utils/importutil.py @@ -1,4 +1,4 @@ -# Copyright 2021 MONAI Consortium +# Copyright 2021-2022 MONAI Consortium # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -280,14 +280,45 @@ def is_dist_editable(project_name: str) -> bool: if not hasattr(dist, "egg_info"): return False egg_info = Path(dist.egg_info) - if egg_info.is_dir() and egg_info.suffix == ".egg-info": - return True + if egg_info.is_dir(): + if egg_info.suffix == ".egg-info": + return True + elif egg_info.suffix == ".dist-info": + if (egg_info / "direct_url.json").exists(): + import json + + # Check direct_url.json for "editable": true + # (https://packaging.python.org/en/latest/specifications/direct-url/) + with open(egg_info / "direct_url.json", "r") as f: + data = json.load(f) + try: + if data["dir_info"]["editable"]: + return True + except KeyError: + pass return False def dist_module_path(project_name: str) -> str: distributions: Dict = {v.key: v for v in pkg_resources.working_set} dist: Any = distributions.get(project_name) + if hasattr(dist, "egg_info"): + egg_info = Path(dist.egg_info) + if egg_info.is_dir() and egg_info.suffix == ".dist-info": + if (egg_info / "direct_url.json").exists(): + import json + + # Check direct_url.json for "url" + # (https://packaging.python.org/en/latest/specifications/direct-url/) + with open(egg_info / "direct_url.json", "r") as f: + data = json.load(f) + try: + file_url = data["url"] + if file_url.startswith("file://"): + return str(file_url[7:]) + except KeyError: + pass + if hasattr(dist, "module_path"): return str(dist.module_path) return "" From d8e516fc8c9513dfa13ef36347fcc40b8e66ab62 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Fri, 21 Oct 2022 11:37:42 -0700 Subject: [PATCH 029/216] Enhanced code to extract and parse specific config files from TorchScript archive (#378) * Enhanced code to extract and parse specific config files from TorchScript archive Signed-off-by: M Q * Fix flake8 complaint Signed-off-by: M Q * Bundle names regarded as case insentitive and add "yml" ext Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- examples/apps/ai_spleen_seg_app/app.py | 10 +- .../monai_bundle_inference_operator.py | 118 ++++++++++++++---- 2 files changed, 102 insertions(+), 26 deletions(-) diff --git a/examples/apps/ai_spleen_seg_app/app.py b/examples/apps/ai_spleen_seg_app/app.py index 0eed831d..cb7a8b2b 100644 --- a/examples/apps/ai_spleen_seg_app/app.py +++ b/examples/apps/ai_spleen_seg_app/app.py @@ -21,7 +21,11 @@ from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator -from monai.deploy.operators.monai_bundle_inference_operator import IOMapping, MonaiBundleInferenceOperator +from monai.deploy.operators.monai_bundle_inference_operator import ( + BundleConfigNames, + IOMapping, + MonaiBundleInferenceOperator, +) # from monai.deploy.operators.stl_conversion_operator import STLConversionOperator # import as needed. @@ -62,9 +66,13 @@ def compose(self): # # Pertinent MONAI Bundle: # https://github.com/Project-MONAI/model-zoo/tree/dev/models/spleen_ct_segmentation + + config_names = BundleConfigNames(config_names=["inference"]) # Same as the default + bundle_spleen_seg_op = MonaiBundleInferenceOperator( input_mapping=[IOMapping("image", Image, IOType.IN_MEMORY)], output_mapping=[IOMapping("pred", Image, IOType.IN_MEMORY)], + bundle_config_names=config_names, ) # Create DICOM Seg writer providing the required segment description for each segment with diff --git a/monai/deploy/operators/monai_bundle_inference_operator.py b/monai/deploy/operators/monai_bundle_inference_operator.py index bb919c3d..226e27af 100644 --- a/monai/deploy/operators/monai_bundle_inference_operator.py +++ b/monai/deploy/operators/monai_bundle_inference_operator.py @@ -13,6 +13,7 @@ import logging import os import pickle +import tempfile import time import zipfile from copy import deepcopy @@ -62,43 +63,110 @@ def get_bundle_config(bundle_path, config_names): Gets the configuration parser from the specified Torchscript bundle file path. """ - def _read_from_archive(archive, root_name: str, relative_path: str, path_list: List[str]): - """A helper function for reading a file in an zip archive. + bundle_suffixes = (".json", ".yaml", "yml") # The only supported file ext(s) + config_folder = "extra" - Tries to read with the full path of # a archive file, if error, then find the relative - path and then read the file. + def _read_from_archive(archive, root_name: str, config_name: str, do_search=True): + """A helper function for reading the content of a config in the zip archive. + + Tries to read config content at the expected path in the archive, if error occurs, + search and read with alternative paths. """ + content_text = None - try: - content_text = archive.read(f"{root_name}/{relative_path}") - except KeyError: - logging.debug(f"Trying to find the metadata/config file in the bundle archive: {relative_path}.") - for n in path_list: - if relative_path in n: - content_text = archive.read(n) - break - if content_text is None: - raise + config_name = config_name.split(".")[0] # In case ext is present + + # Try directly read with constructed and expected path into the archive + for suffix in bundle_suffixes: + try: + path = Path(root_name, config_folder, config_name).with_suffix(suffix) + logging.debug(f"Trying to read config '{config_name}' content from {path}.") + content_text = archive.read(str(path)) + break + except Exception: + logging.debug(f"Error reading from {path}. Will try alternative ways.") + continue + + # Try search for the name in the name list of the archive + if not content_text and do_search: + logging.debug(f"Trying to find the file in the archive for config '{config_name}'.") + name_list = archive.namelist() + for suffix in bundle_suffixes: + for n in name_list: + if (f"{config_name}{suffix}").casefold in n.casefold(): + logging.debug(f"Trying to read content of config '{config_name}' from {n}.") + content_text = archive.read(n) + break + + if not content_text: + raise IOError(f"Cannot read config {config_name}{bundle_suffixes} or its content in the archive.") return content_text + def _extract_from_archive( + archive, root_name: str, config_names: List[str], dest_folder: Union[str, Path], do_search=True + ): + """A helper function for extract files of configs from the archive to the destination folder + + Tries to extract with the full paths from the archive file, if error occurs, tries to search for + and read from the file(s) if do_search is true. + """ + + config_names = [cn.split(".")[0] for cn in config_names] # In case the extension is present + file_list = [] + + # Try directly read first with path into the archive + for suffix in bundle_suffixes: + try: + logging.debug(f"Trying to extract {config_names} with ext {suffix}.") + file_list = [str(Path(root_name, config_folder, cn).with_suffix(suffix)) for cn in config_names] + archive.extractall(members=file_list, path=dest_folder) + break + except Exception as ex: + file_list = [] + logging.debug(f"Will try file search after error on extracting {config_names} with {file_list}: {ex}") + continue + + # If files not extracted, try search for expected files in the name list of the archive + if (len(file_list) < 1) and do_search: + logging.debug(f"Trying to find the config files in the archive for {config_names}.") + name_list = archive.namelist() + leftovers = deepcopy(config_names) # to track any that are not found. + for cn in config_names: + for suffix in bundle_suffixes: + found = False + for n in name_list: + if (f"{cn}{suffix}").casefold() in n.casefold(): + found = True + archive.extract(member=n, path=dest_folder) + break + if found: + leftovers.remove(cn) + break + + if len(leftovers) > 0: + raise IOError(f"Failed to extract content for these config(s): {leftovers}.") + + return file_list + + # End of helper functions + if isinstance(config_names, str): config_names = [config_names] - name, _ = os.path.splitext(os.path.basename(bundle_path)) + name, _ = os.path.splitext(os.path.basename(bundle_path)) # bundle file name same archive folder name parser = ConfigParser() # Parser to read the required metadata and extra config contents from the archive - with zipfile.ZipFile(bundle_path, "r") as archive: - name_list = archive.namelist() - metadata_relative_path = "extra/metadata.json" - metadata_text = _read_from_archive(archive, name, metadata_relative_path, name_list) - parser.read_meta(f=json.loads(metadata_text)) + with tempfile.TemporaryDirectory() as tmp_dir: + with zipfile.ZipFile(bundle_path, "r") as archive: + metadata_config_name = "metadata" + metadata_text = _read_from_archive(archive, name, metadata_config_name) + parser.read_meta(f=json.loads(metadata_text)) - for cn in config_names: - config_relative_path = f"extra/{cn}.json" - config_text = _read_from_archive(archive, name, config_relative_path, name_list) - parser.read_config(f=json.loads(config_text)) + # now get the other named configs + file_list = _extract_from_archive(archive, name, config_names, tmp_dir) + parser.read_config([Path(tmp_dir, f_path) for f_path in file_list]) parser.parse() @@ -261,7 +329,7 @@ def __init__( Defaults to "". bundle_path (Optional[str], optional): For completing . Defaults to None. bundle_config_names (BundleConfigNames, optional): Relevant config item names in a the bundle. - Defaults to None. + Defaults to DEFAULT_BundleConfigNames. """ super().__init__(*args, **kwargs) From 27aad6857580d9f226cc24d2a0c62a98148ba308 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Sat, 22 Oct 2022 15:06:04 -0700 Subject: [PATCH 030/216] Deprecate the MIS as it does not serve intended purpose (#379) Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- notebooks/tutorials/04_mis_tutorial.ipynb | 1164 +---------- notebooks/tutorials/05_full_tutorial.ipynb | 2084 +------------------- 2 files changed, 9 insertions(+), 3239 deletions(-) diff --git a/notebooks/tutorials/04_mis_tutorial.ipynb b/notebooks/tutorials/04_mis_tutorial.ipynb index 3efa8ccd..dc99193e 100644 --- a/notebooks/tutorials/04_mis_tutorial.ipynb +++ b/notebooks/tutorials/04_mis_tutorial.ipynb @@ -6,1168 +6,13 @@ "source": [ "# Deploying Segmentation App with MONAI Inference Service (MIS)\n", "\n", - "This tutorial discusses how to deploy the segmentation application with the RESTful [MONAI Inference Service](https://github.com/Project-MONAI/monai-deploy-app-server/blob/main/components/inference-service/README.md).\n", - "\n", - "Please refer back to the previous [tutorial](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/notebooks/tutorials/03_segmentation_app.html) for creating the Segmentation App using MONAI App SDK\n", - "\n", - "In the following sections, we will demonstrate how to deploy a packaged MONAI Application with the [MONAI Inference Service](https://github.com/Project-MONAI/monai-deploy-app-server/blob/main/components/inference-service/README.md). Along the way we will provide verification steps to confirm that our application produces the desired output both locally (for verification) and as a service output." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exporting Application and Package Manifest Files\n", - "\n", - "Given a succesfully built MAP image (ex. `my_app:latest` from previous tutorial), its manifest files can be extracted with all configured paramters. This can be done by running `docker run` with the image and making sure to map a local volume (ex. ./output) to `\"/var/run/monai/export/config/\"` within the contianer" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[?1h\u001b= > export '/var/run/monai/export/' detected\r\n" - ] - } - ], - "source": [ - "!mkdir ./export\n", - "!docker run -it -v \"$(pwd)/export/\":\"/var/run/monai/export/config/\" my_app:latest" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "After running, two `.json` files (application and package manifests) can be found inside\n", - "of the local directory volume mount" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "app.json pkg.json\r\n" - ] - } - ], - "source": [ - "!ls ./export/" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\r\n", - " \"api-version\": \"0.1.0\",\r\n", - " \"command\": \"python3 -u /opt/monai/app/app.py\",\r\n", - " \"environment\": {},\r\n", - " \"input\": {\r\n", - " \"formats\": [],\r\n", - " \"path\": \"input\"\r\n", - " },\r\n", - " \"output\": {\r\n", - " \"format\": {},\r\n", - " \"path\": \"output\"\r\n", - " },\r\n", - " \"sdk-version\": \"0.2.0\",\r\n", - " \"timeout\": 0,\r\n", - " \"version\": \"0.0.0\",\r\n", - " \"working-directory\": \"/var/monai/\"\r\n", - "}" - ] - } - ], - "source": [ - "!cat ./export/app.json" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\r\n", - " \"api-version\": \"0.1.0\",\r\n", - " \"application-root\": \"/var/monai/\",\r\n", - " \"models\": [\r\n", - " {\r\n", - " \"name\": \"model-54dd6cdaac290a0e800c0fa627cd60410bb2cea173ac8bb2f4816cc54ea88c90\",\r\n", - " \"path\": \"/opt/monai/models/model/model.ts\"\r\n", - " }\r\n", - " ],\r\n", - " \"resources\": {\r\n", - " \"cpu\": 1,\r\n", - " \"gpu\": 1,\r\n", - " \"memory\": \"7168Mi\"\r\n", - " },\r\n", - " \"sdk-version\": \"0.2.0\",\r\n", - " \"version\": \"0.0.0\"\r\n", - "}" - ] - } - ], - "source": [ - "!cat ./export/pkg.json" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Deploying MONAI Inference Service (MIS)\n", - "\n", - "With the MONAI application package image we built, we can now deploy it with the\n", - "[MONAI Inference Service](https://github.com/Project-MONAI/monai-deploy-app-server/blob/main/components/inference-service/README.md).\n", - "\n", - "This is a RESTful service which will allow other users to make inference requests\n", - "with our MAP using HTTP.\n", - "\n", - "We first need to the clone the MIS repository and build the MIS container." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cloning into 'monai-deploy-app-server'...\n", - "remote: Enumerating objects: 274, done.\u001b[K\n", - "remote: Counting objects: 100% (274/274), done.\u001b[K\n", - "remote: Compressing objects: 100% (143/143), done.\u001b[K\n", - "remote: Total 274 (delta 127), reused 213 (delta 90), pack-reused 0\u001b[K\n", - "Receiving objects: 100% (274/274), 79.20 KiB | 705.00 KiB/s, done.\n", - "Resolving deltas: 100% (127/127), done.\n", - "~/src/monai-deploy-app-sdk/notebooks/tutorials/monai-deploy-app-server/components/inference-service\n", - "\n", - "Step 1/12 : FROM python:3.9-slim-buster\n", - " ---> edd87973afe0\n", - "Step 2/12 : LABEL \"base\"=\"python:3.9-slim-buster\"\n", - " ---> Using cache\n", - " ---> 74208e399b3d\n", - "Step 3/12 : ARG APTVER_CURL=7.64.0-4+deb10u2\n", - " ---> Using cache\n", - " ---> 86f5d84752a5\n", - "Step 4/12 : ARG APTVER_TRANSPORT_HTTPS=1.8.2.2\n", - " ---> Using cache\n", - " ---> 094aa1423e82\n", - "Step 5/12 : ARG APTVER_GNUPG2=2.2.12-1+deb10u1\n", - " ---> Using cache\n", - " ---> a6e28500ca8a\n", - "Step 6/12 : RUN apt-get update && apt-get install -y --no-install-recommends apt-transport-https=${APTVER_TRANSPORT_HTTPS} gnupg2=${APTVER_GNUPG2} curl=${APTVER_CURL} && apt-get update && apt-get install --no-install-recommends -y libgssapi-krb5-2 build-essential unixodbc-dev\n", - " ---> Using cache\n", - " ---> b07cf4a99e2f\n", - "Step 7/12 : RUN python -m pip install --upgrade pip\n", - " ---> Using cache\n", - " ---> 819e3a3d83f5\n", - "Step 8/12 : ADD ./requirements.txt /monai_inference/requirements.txt\n", - " ---> Using cache\n", - " ---> 52d6970c621d\n", - "Step 9/12 : RUN python -m pip install -r /monai_inference/requirements.txt\n", - " ---> Using cache\n", - " ---> 5f17816da8d0\n", - "Step 10/12 : ADD ./monaiinference /monai_inference/monaiinference\n", - " ---> Using cache\n", - " ---> 514993560936\n", - "Step 11/12 : ENV PYTHONPATH \"${PYTHONPATH}:/monai_inference/\"\n", - " ---> Using cache\n", - " ---> e7fa6a995039\n", - "Step 12/12 : ENTRYPOINT [\"/usr/local/bin/python\", \"/monai_inference/monaiinference/main.py\"]\n", - " ---> Using cache\n", - " ---> a6834eb5a23b\n", - "Successfully built a6834eb5a23b\n", - "Successfully tagged monai/inference-service:0.1\n", - "~/src/monai-deploy-app-sdk/notebooks/tutorials\n" - ] - } - ], - "source": [ - "!git clone https://github.com/Project-MONAI/monai-deploy-app-server.git\n", - "%cd monai-deploy-app-server/components/inference-service\n", - "!./build.sh\n", - "%cd -" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we need to acquire the MIS helm charts and provide them with information of our MAP" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloading...\n", - "From: https://drive.google.com/uc?id=12uNO1tyqZh1oFkZH41Osliey7TRm-BBG\n", - "To: ~/src/monai-deploy-app-sdk/notebooks/tutorials/charts.zip\n", - "100%|██████████████████████████████████████| 9.18k/9.18k [00:00<00:00, 10.9MB/s]\n", - "Archive: charts.zip\n", - " inflating: charts/templates/monaiinferenceservice-deployment.yaml \n", - " inflating: charts/templates/monaiinferenceservice-service.yaml \n", - " inflating: charts/templates/monaiinferenceservice-clusterrole.yaml \n", - " inflating: charts/templates/monaiinferenceservice-payload-volume.yaml \n", - " inflating: charts/templates/monaiinferenceservice-serviceaccount.yaml \n", - " inflating: charts/templates/monaiinferenceservice-clusterrolebinding.yaml \n", - " inflating: charts/templates/monaiinferenceservice-payload-volume-claim.yaml \n", - " inflating: charts/templates/_helpers.tpl \n", - " inflating: charts/Chart.yaml \n", - " inflating: charts/values.yaml \n" - ] - } - ], - "source": [ - "!gdown \"https://drive.google.com/uc?id=12uNO1tyqZh1oFkZH41Osliey7TRm-BBG\"\n", - "!unzip -o charts.zip" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Before starting MONAI Inference Service, a set of values must be specified within\n", - "`./charts/values.yaml` to configure the MIS instance with a MAP:\n", - "\n", - "| Parameter | Value Description |\n", - "| ----------- | ----------- |\n", - "| `images.monaiInferenceService` | MONAI Inference Service image name (`monai/inference-service`) |\n", - "| `images.monaiInferenceServiceTag` | MONAI Inference Service image tag (`0.1`) |\n", - "| `payloadService.hostVolumePath` | Path to a local directory which will serve as a shared volume for payloads between MIS and its pods |\n", - "| `map.urn` | Name:Tag of MAP image built with MONAI application packager |\n", - "| `map.entrypoint` | Application entrypoint which can obtained from `app.json` |\n", - "| `map.cpu` | Number of CPUs requested by application which can be obtained either from `pkg.json` OR from when we created app.py (check @resource decorator) |\n", - "| `map.memory` | Memory requested by application which can be obtained either from `pkg.json` OR from when we created app.py (check @resource decorator) |\n", - "| `map.gpu` | Number of GPUs requested by application which can be obtained either from `pkg.json` OR from when we created app.py (check @resource decorator) |\n", - "| `map.inputPath` | Input volume path within MAP container, can be derived by appending the `input.path` with the `working-directory` in `app.json` |\n", - "| `map.outputPath` | Output volume path within MAP container, can be derived by appending the `output.path` with the `working-directory` in `app.json` |\n", - "| `map.modelPath` | Model volume path within MAP container, can be derived using a `path` of an entry under `models` in `pkg.json`, and taking the sub-path where the `/model` folder resides (ex: `path: \"/opt/monai/models/model/model.ts\"` -> `\"/opt/monai/models\"`) |" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Overwriting charts/values.yaml\n" - ] - } - ], - "source": [ - "%%writefile charts/values.yaml\n", - "# Default values for MONAI Inference Service.\n", - "# This is a YAML-formatted file.\n", - "# Declare variables to be passed into your templates.\n", - "images:\n", - " monaiInferenceService: monai/inference-service\n", - " monaiInferenceServiceTag: 0.1\n", - "\n", - "########################################################\n", - "# Configuration Values for MONAI Inference Service #\n", - "########################################################\n", - "\n", - "server:\n", - " names:\n", - " clusterRole: monai-inference-service-cluster-role\n", - " clusterRoleBinding: monai-inference-service-binding\n", - " deployment: monai-inference-service\n", - " service: monai-inference-service\n", - " serviceAccount: monai-inference-service-service-account\n", - " storageClass: monai-inference-service-storage-class\n", - " volume: monai-inference-service-payload-volume\n", - " volumeClaim: monai-inference-service-payload-volume-claim\n", - "\n", - " serviceType: NodePort # Alternatively: ClusterIp if only in cluster clients will exist\n", - " nodePort: 32000\n", - " pullSecrets: []\n", - " targetPort: 8000\n", - "\n", - " # Configuration for the payload service in the MONAI Inference Service.\n", - " payloadService:\n", - " # The path on the node running MONAI Inference Service where a payload will be stored.\n", - " # The input directory and output directory that are created by MONAI Inference Service\n", - " # will exist as a directory inside this path. \n", - " # (e.g. \"/monai/payload/input\").\n", - " # Please make sure that this directory has read, write, and execute permissions for the user,\n", - " # group, and all other users `rwxrwxrwx`. Running `chmod 777 ` will achomplish this.\n", - " hostVolumePath: \"/monai/payload\"\n", - "\n", - " # MAP configuration.\n", - " map:\n", - " # MAP Container : to de deployed by MONAI Inference Service.\n", - " # For example, urn: \"ubuntu:latest\"\n", - " urn: \"my_app:latest\"\n", - "\n", - " # String value which defines entry point command for MAP Container.\n", - " # For example, entrypoint: \"/bin/echo Hello\"\n", - " entrypoint: \"python3 -u /opt/monai/app/app.py\"\n", - "\n", - " # Integer value which defines the CPU limit assigned to the MAP container.\n", - " # This value can not be less than 1.\n", - " cpu: 1\n", - "\n", - " # Integer value in Megabytes which defines the Memory limit assigned to the MAP container.\n", - " # This value can not be less than 256.\n", - " memory: 7168\n", - "\n", - " # Integer value which defines the number of GPUs assigned to the MAP container.\n", - " # This value can not be less than 0.\n", - " gpu: 1\n", - "\n", - " # Input directory path of MAP Container.\n", - " # An environment variable `MONAI_INPUTPATH` is mounted in the MAP container\n", - " # with it's value equal to the one provided for this field.\n", - " inputPath: \"/var/monai/input\"\n", - "\n", - " # Output directory path of MAP Container.\n", - " # An environment variable `MONAI_OUTPUTPATH` is mounted in the MAP container\n", - " # with it's value equal to the one provided for this field.\n", - " outputPath: \"/var/monai/output\"\n", - "\n", - " # Model directory path of MAP Container.\n", - " # For example, modelPath: /opt/monai/models.\n", - " # An environment variable `MONAI_MODELPATH` is mounted in the MAP container\n", - " # with it's value equal to the one provided for this field.\n", - " modelPath: \"/opt/monai/models\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we are ready to deploy our MIS instance:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NAME: monai-inference-service\r\n", - "LAST DEPLOYED: Wed Nov 24 16:06:57 2021\r\n", - "NAMESPACE: default\r\n", - "STATUS: deployed\r\n", - "REVISION: 1\r\n", - "TEST SUITE: None\r\n" - ] - } - ], - "source": [ - "!helm install monai-inference-service ./charts/" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NAME READY STATUS RESTARTS AGE\r\n", - "clara-clara-platformapiserver-75bc9b4867-q4jvz 1/1 Running 7 68d\r\n", - "clara-console-6d944c97d5-zsxn2 2/2 Running 10 68d\r\n", - "clara-dicom-adapter-7fb4cc587b-6fn6h 1/1 Running 5 68d\r\n", - "clara-node-monitor-rjb5z 1/1 Running 5 68d\r\n", - "clara-resultsservice-f758699b-lv56q 1/1 Running 5 68d\r\n", - "clara-ui-758d9645b7-zf9mn 1/1 Running 5 68d\r\n", - "clara-workflow-controller-7c66d77f55-557js 1/1 Running 7 68d\r\n", - "fluentd-ffrtf 1/1 Running 7 68d\r\n", - "monai-inference-service-6bd7d8f5df-ngcfz 0/1 ContainerCreating 0 3s\r\n" - ] - } - ], - "source": [ - "!kubectl get po" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Inferencing Segmentation AI with MIS\n", - "\n", - "With our MIS instance running as a kubernetes pod, we can now submit REST inferencing \n", - "requests to it\n", - "\n", - "In the previous [chapter](https://docs.monai.io/projects/monai-deploy-app-sdk/en/latest/notebooks/tutorials/03_segmentation_app.html), we downloaded our input data for our spleen segmentation application.\n", - "We just need to compress the dicom files under `/dcm` into a compressed .zip as MIS accepts that format.\n", - "\n", - "If you have not downloaded the data already, the neccessary `gdown` command is provided below" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: gdown in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (4.2.0)\n", - "Requirement already satisfied: six in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from gdown) (1.16.0)\n", - "Requirement already satisfied: beautifulsoup4 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from gdown) (4.10.0)\n", - "Requirement already satisfied: filelock in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from gdown) (3.4.0)\n", - "Requirement already satisfied: tqdm in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from gdown) (4.62.3)\n", - "Requirement already satisfied: requests[socks] in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from gdown) (2.12.5)\n", - "Requirement already satisfied: soupsieve>1.2 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from beautifulsoup4->gdown) (2.3.1)\n", - "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from requests[socks]->gdown) (1.7.1)\n", - "Downloading...\n", - "From: https://drive.google.com/uc?id=1GC_N8YQk_mOWN02oOzAU_2YDmNRWk--n\n", - "To: ~/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_seg_data_updated_1203.zip\n", - "100%|████████████████████████████████████████| 104M/104M [00:20<00:00, 4.97MB/s]\n", - "Archive: ai_spleen_seg_data_updated_1203.zip\n", - " inflating: dcm/IMG0001.dcm \n", - " inflating: dcm/IMG0002.dcm \n", - " inflating: dcm/IMG0003.dcm \n", - " inflating: dcm/IMG0004.dcm \n", - " inflating: dcm/IMG0005.dcm \n", - " inflating: dcm/IMG0006.dcm \n", - " inflating: dcm/IMG0007.dcm \n", - " inflating: dcm/IMG0008.dcm \n", - " inflating: dcm/IMG0009.dcm \n", - " inflating: dcm/IMG0010.dcm \n", - " inflating: dcm/IMG0011.dcm \n", - " inflating: dcm/IMG0012.dcm \n", - " inflating: dcm/IMG0013.dcm \n", - " inflating: dcm/IMG0014.dcm \n", - " inflating: dcm/IMG0015.dcm \n", - " inflating: dcm/IMG0016.dcm \n", - " inflating: dcm/IMG0017.dcm \n", - " inflating: dcm/IMG0018.dcm \n", - " inflating: dcm/IMG0019.dcm \n", - " inflating: dcm/IMG0020.dcm \n", - " inflating: dcm/IMG0021.dcm \n", - " inflating: dcm/IMG0022.dcm \n", - " inflating: dcm/IMG0023.dcm \n", - " inflating: dcm/IMG0024.dcm \n", - " inflating: dcm/IMG0025.dcm \n", - " inflating: dcm/IMG0026.dcm \n", - " inflating: dcm/IMG0027.dcm \n", - " inflating: dcm/IMG0028.dcm \n", - " inflating: dcm/IMG0029.dcm \n", - " inflating: dcm/IMG0030.dcm \n", - " inflating: dcm/IMG0031.dcm \n", - " inflating: dcm/IMG0032.dcm \n", - " inflating: dcm/IMG0033.dcm \n", - " inflating: dcm/IMG0034.dcm \n", - " inflating: dcm/IMG0035.dcm \n", - " inflating: dcm/IMG0036.dcm \n", - " inflating: dcm/IMG0037.dcm \n", - " inflating: dcm/IMG0038.dcm \n", - " inflating: dcm/IMG0039.dcm \n", - " inflating: dcm/IMG0040.dcm \n", - " inflating: dcm/IMG0041.dcm \n", - " inflating: dcm/IMG0042.dcm \n", - " inflating: dcm/IMG0043.dcm \n", - " inflating: dcm/IMG0044.dcm \n", - " inflating: dcm/IMG0045.dcm \n", - " inflating: dcm/IMG0046.dcm \n", - " inflating: dcm/IMG0047.dcm \n", - " inflating: dcm/IMG0048.dcm \n", - " inflating: dcm/IMG0049.dcm \n", - " inflating: dcm/IMG0050.dcm \n", - " inflating: dcm/IMG0051.dcm \n", - " inflating: dcm/IMG0052.dcm \n", - " inflating: dcm/IMG0053.dcm \n", - " inflating: dcm/IMG0054.dcm \n", - " inflating: dcm/IMG0055.dcm \n", - " inflating: dcm/IMG0056.dcm \n", - " inflating: dcm/IMG0057.dcm \n", - " inflating: dcm/IMG0058.dcm \n", - " inflating: dcm/IMG0059.dcm \n", - " inflating: dcm/IMG0060.dcm \n", - " inflating: dcm/IMG0061.dcm \n", - " inflating: dcm/IMG0062.dcm \n", - " inflating: dcm/IMG0063.dcm \n", - " inflating: dcm/IMG0064.dcm \n", - " inflating: dcm/IMG0065.dcm \n", - " inflating: dcm/IMG0066.dcm \n", - " inflating: dcm/IMG0067.dcm \n", - " inflating: dcm/IMG0068.dcm \n", - " inflating: dcm/IMG0069.dcm \n", - " inflating: dcm/IMG0070.dcm \n", - " inflating: dcm/IMG0071.dcm \n", - " inflating: dcm/IMG0072.dcm \n", - " inflating: dcm/IMG0073.dcm \n", - " inflating: dcm/IMG0074.dcm \n", - " inflating: dcm/IMG0075.dcm \n", - " inflating: dcm/IMG0076.dcm \n", - " inflating: dcm/IMG0077.dcm \n", - " inflating: dcm/IMG0078.dcm \n", - " inflating: dcm/IMG0079.dcm \n", - " inflating: dcm/IMG0080.dcm \n", - " inflating: dcm/IMG0081.dcm \n", - " inflating: dcm/IMG0082.dcm \n", - " inflating: dcm/IMG0083.dcm \n", - " inflating: dcm/IMG0084.dcm \n", - " inflating: dcm/IMG0085.dcm \n", - " inflating: dcm/IMG0086.dcm \n", - " inflating: dcm/IMG0087.dcm \n", - " inflating: dcm/IMG0088.dcm \n", - " inflating: dcm/IMG0089.dcm \n", - " inflating: dcm/IMG0090.dcm \n", - " inflating: dcm/IMG0091.dcm \n", - " inflating: dcm/IMG0092.dcm \n", - " inflating: dcm/IMG0093.dcm \n", - " inflating: dcm/IMG0094.dcm \n", - " inflating: dcm/IMG0095.dcm \n", - " inflating: dcm/IMG0096.dcm \n", - " inflating: dcm/IMG0097.dcm \n", - " inflating: dcm/IMG0098.dcm \n", - " inflating: dcm/IMG0099.dcm \n", - " inflating: dcm/IMG0100.dcm \n", - " inflating: dcm/IMG0101.dcm \n", - " inflating: dcm/IMG0102.dcm \n", - " inflating: dcm/IMG0103.dcm \n", - " inflating: dcm/IMG0104.dcm \n", - " inflating: dcm/IMG0105.dcm \n", - " inflating: dcm/IMG0106.dcm \n", - " inflating: dcm/IMG0107.dcm \n", - " inflating: dcm/IMG0108.dcm \n", - " inflating: dcm/IMG0109.dcm \n", - " inflating: dcm/IMG0110.dcm \n", - " inflating: dcm/IMG0111.dcm \n", - " inflating: dcm/IMG0112.dcm \n", - " inflating: dcm/IMG0113.dcm \n", - " inflating: dcm/IMG0114.dcm \n", - " inflating: dcm/IMG0115.dcm \n", - " inflating: dcm/IMG0116.dcm \n", - " inflating: dcm/IMG0117.dcm \n", - " inflating: dcm/IMG0118.dcm \n", - " inflating: dcm/IMG0119.dcm \n", - " inflating: dcm/IMG0120.dcm \n", - " inflating: dcm/IMG0121.dcm \n", - " inflating: dcm/IMG0122.dcm \n", - " inflating: dcm/IMG0123.dcm \n", - " inflating: dcm/IMG0124.dcm \n", - " inflating: dcm/IMG0125.dcm \n", - " inflating: dcm/IMG0126.dcm \n", - " inflating: dcm/IMG0127.dcm \n", - " inflating: dcm/IMG0128.dcm \n", - " inflating: dcm/IMG0129.dcm \n", - " inflating: dcm/IMG0130.dcm \n", - " inflating: dcm/IMG0131.dcm \n", - " inflating: dcm/IMG0132.dcm \n", - " inflating: dcm/IMG0133.dcm \n", - " inflating: dcm/IMG0134.dcm \n", - " inflating: dcm/IMG0135.dcm \n", - " inflating: dcm/IMG0136.dcm \n", - " inflating: dcm/IMG0137.dcm \n", - " inflating: dcm/IMG0138.dcm \n", - " inflating: dcm/IMG0139.dcm \n", - " inflating: dcm/IMG0140.dcm \n", - " inflating: dcm/IMG0141.dcm \n", - " inflating: dcm/IMG0142.dcm \n", - " inflating: dcm/IMG0143.dcm \n", - " inflating: dcm/IMG0144.dcm \n", - " inflating: dcm/IMG0145.dcm \n", - " inflating: dcm/IMG0146.dcm \n", - " inflating: dcm/IMG0147.dcm \n", - " inflating: dcm/IMG0148.dcm \n", - " inflating: dcm/IMG0149.dcm \n", - " inflating: dcm/IMG0150.dcm \n", - " inflating: dcm/IMG0151.dcm \n", - " inflating: dcm/IMG0152.dcm \n", - " inflating: dcm/IMG0153.dcm \n", - " inflating: dcm/IMG0154.dcm \n", - " inflating: dcm/IMG0155.dcm \n", - " inflating: dcm/IMG0156.dcm \n", - " inflating: dcm/IMG0157.dcm \n", - " inflating: dcm/IMG0158.dcm \n", - " inflating: dcm/IMG0159.dcm \n", - " inflating: dcm/IMG0160.dcm \n", - " inflating: dcm/IMG0161.dcm \n", - " inflating: dcm/IMG0162.dcm \n", - " inflating: dcm/IMG0163.dcm \n", - " inflating: dcm/IMG0164.dcm \n", - " inflating: dcm/IMG0165.dcm \n", - " inflating: dcm/IMG0166.dcm \n", - " inflating: dcm/IMG0167.dcm \n", - " inflating: dcm/IMG0168.dcm \n", - " inflating: dcm/IMG0169.dcm \n", - " inflating: dcm/IMG0170.dcm \n", - " inflating: dcm/IMG0171.dcm \n", - " inflating: dcm/IMG0172.dcm \n", - " inflating: dcm/IMG0173.dcm \n", - " inflating: dcm/IMG0174.dcm \n", - " inflating: dcm/IMG0175.dcm \n", - " inflating: dcm/IMG0176.dcm \n", - " inflating: dcm/IMG0177.dcm \n", - " inflating: dcm/IMG0178.dcm \n", - " inflating: dcm/IMG0179.dcm \n", - " inflating: dcm/IMG0180.dcm \n", - " inflating: dcm/IMG0181.dcm \n", - " inflating: dcm/IMG0182.dcm \n", - " inflating: dcm/IMG0183.dcm \n", - " inflating: dcm/IMG0184.dcm \n", - " inflating: dcm/IMG0185.dcm \n", - " inflating: dcm/IMG0186.dcm \n", - " inflating: dcm/IMG0187.dcm \n", - " inflating: dcm/IMG0188.dcm \n", - " inflating: dcm/IMG0189.dcm \n", - " inflating: dcm/IMG0190.dcm \n", - " inflating: dcm/IMG0191.dcm \n", - " inflating: dcm/IMG0192.dcm \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " inflating: dcm/IMG0193.dcm \n", - " inflating: dcm/IMG0194.dcm \n", - " inflating: dcm/IMG0195.dcm \n", - " inflating: dcm/IMG0196.dcm \n", - " inflating: dcm/IMG0197.dcm \n", - " inflating: dcm/IMG0198.dcm \n", - " inflating: dcm/IMG0199.dcm \n", - " inflating: dcm/IMG0200.dcm \n", - " inflating: dcm/IMG0201.dcm \n", - " inflating: dcm/IMG0202.dcm \n", - " inflating: dcm/IMG0203.dcm \n", - " inflating: dcm/IMG0204.dcm \n", - " inflating: dcm/IMG0205.dcm \n", - " inflating: dcm/IMG0206.dcm \n", - " inflating: dcm/IMG0207.dcm \n", - " inflating: dcm/IMG0208.dcm \n", - " inflating: dcm/IMG0209.dcm \n", - " inflating: dcm/IMG0210.dcm \n", - " inflating: dcm/IMG0211.dcm \n", - " inflating: dcm/IMG0212.dcm \n", - " inflating: dcm/IMG0213.dcm \n", - " inflating: dcm/IMG0214.dcm \n", - " inflating: dcm/IMG0215.dcm \n", - " inflating: dcm/IMG0216.dcm \n", - " inflating: dcm/IMG0217.dcm \n", - " inflating: dcm/IMG0218.dcm \n", - " inflating: dcm/IMG0219.dcm \n", - " inflating: dcm/IMG0220.dcm \n", - " inflating: dcm/IMG0221.dcm \n", - " inflating: dcm/IMG0222.dcm \n", - " inflating: dcm/IMG0223.dcm \n", - " inflating: dcm/IMG0224.dcm \n", - " inflating: dcm/IMG0225.dcm \n", - " inflating: dcm/IMG0226.dcm \n", - " inflating: dcm/IMG0227.dcm \n", - " inflating: dcm/IMG0228.dcm \n", - " inflating: dcm/IMG0229.dcm \n", - " inflating: dcm/IMG0230.dcm \n", - " inflating: dcm/IMG0231.dcm \n", - " inflating: dcm/IMG0232.dcm \n", - " inflating: dcm/IMG0233.dcm \n", - " inflating: dcm/IMG0234.dcm \n", - " inflating: dcm/IMG0235.dcm \n", - " inflating: dcm/IMG0236.dcm \n", - " inflating: dcm/IMG0237.dcm \n", - " inflating: dcm/IMG0238.dcm \n", - " inflating: dcm/IMG0239.dcm \n", - " inflating: dcm/IMG0240.dcm \n", - " inflating: dcm/IMG0241.dcm \n", - " inflating: dcm/IMG0242.dcm \n", - " inflating: dcm/IMG0243.dcm \n", - " inflating: dcm/IMG0244.dcm \n", - " inflating: dcm/IMG0245.dcm \n", - " inflating: dcm/IMG0246.dcm \n", - " inflating: dcm/IMG0247.dcm \n", - " inflating: dcm/IMG0248.dcm \n", - " inflating: dcm/IMG0249.dcm \n", - " inflating: dcm/IMG0250.dcm \n", - " inflating: dcm/IMG0251.dcm \n", - " inflating: dcm/IMG0252.dcm \n", - " inflating: dcm/IMG0253.dcm \n", - " inflating: dcm/IMG0254.dcm \n", - " inflating: dcm/IMG0255.dcm \n", - " inflating: dcm/IMG0256.dcm \n", - " inflating: dcm/IMG0257.dcm \n", - " inflating: dcm/IMG0258.dcm \n", - " inflating: dcm/IMG0259.dcm \n", - " inflating: dcm/IMG0260.dcm \n", - " inflating: dcm/IMG0261.dcm \n", - " inflating: dcm/IMG0262.dcm \n", - " inflating: dcm/IMG0263.dcm \n", - " inflating: dcm/IMG0264.dcm \n", - " inflating: dcm/IMG0265.dcm \n", - " inflating: dcm/IMG0266.dcm \n", - " inflating: dcm/IMG0267.dcm \n", - " inflating: dcm/IMG0268.dcm \n", - " inflating: dcm/IMG0269.dcm \n", - " inflating: dcm/IMG0270.dcm \n", - " inflating: dcm/IMG0271.dcm \n", - " inflating: dcm/IMG0272.dcm \n", - " inflating: dcm/IMG0273.dcm \n", - " inflating: dcm/IMG0274.dcm \n", - " inflating: dcm/IMG0275.dcm \n", - " inflating: dcm/IMG0276.dcm \n", - " inflating: dcm/IMG0277.dcm \n", - " inflating: dcm/IMG0278.dcm \n", - " inflating: dcm/IMG0279.dcm \n", - " inflating: dcm/IMG0280.dcm \n", - " inflating: dcm/IMG0281.dcm \n", - " inflating: dcm/IMG0282.dcm \n", - " inflating: dcm/IMG0283.dcm \n", - " inflating: dcm/IMG0284.dcm \n", - " inflating: dcm/IMG0285.dcm \n", - " inflating: dcm/IMG0286.dcm \n", - " inflating: dcm/IMG0287.dcm \n", - " inflating: dcm/IMG0288.dcm \n", - " inflating: dcm/IMG0289.dcm \n", - " inflating: dcm/IMG0290.dcm \n", - " inflating: dcm/IMG0291.dcm \n", - " inflating: dcm/IMG0292.dcm \n", - " inflating: dcm/IMG0293.dcm \n", - " inflating: dcm/IMG0294.dcm \n", - " inflating: dcm/IMG0295.dcm \n", - " inflating: dcm/IMG0296.dcm \n", - " inflating: dcm/IMG0297.dcm \n", - " inflating: dcm/IMG0298.dcm \n", - " inflating: dcm/IMG0299.dcm \n", - " inflating: dcm/IMG0300.dcm \n", - " inflating: dcm/IMG0301.dcm \n", - " inflating: dcm/IMG0302.dcm \n", - " inflating: dcm/IMG0303.dcm \n", - " inflating: dcm/IMG0304.dcm \n", - " inflating: dcm/IMG0305.dcm \n", - " inflating: dcm/IMG0306.dcm \n", - " inflating: dcm/IMG0307.dcm \n", - " inflating: dcm/IMG0308.dcm \n", - " inflating: dcm/IMG0309.dcm \n", - " inflating: dcm/IMG0310.dcm \n", - " inflating: dcm/IMG0311.dcm \n", - " inflating: dcm/IMG0312.dcm \n", - " inflating: dcm/IMG0313.dcm \n", - " inflating: dcm/IMG0314.dcm \n", - " inflating: dcm/IMG0315.dcm \n", - " inflating: dcm/IMG0316.dcm \n", - " inflating: dcm/IMG0317.dcm \n", - " inflating: dcm/IMG0318.dcm \n", - " inflating: dcm/IMG0319.dcm \n", - " inflating: dcm/IMG0320.dcm \n", - " inflating: dcm/IMG0321.dcm \n", - " inflating: dcm/IMG0322.dcm \n", - " inflating: dcm/IMG0323.dcm \n", - " inflating: dcm/IMG0324.dcm \n", - " inflating: dcm/IMG0325.dcm \n", - " inflating: dcm/IMG0326.dcm \n", - " inflating: dcm/IMG0327.dcm \n", - " inflating: dcm/IMG0328.dcm \n", - " inflating: dcm/IMG0329.dcm \n", - " inflating: dcm/IMG0330.dcm \n", - " inflating: dcm/IMG0331.dcm \n", - " inflating: dcm/IMG0332.dcm \n", - " inflating: dcm/IMG0333.dcm \n", - " inflating: dcm/IMG0334.dcm \n", - " inflating: dcm/IMG0335.dcm \n", - " inflating: dcm/IMG0336.dcm \n", - " inflating: dcm/IMG0337.dcm \n", - " inflating: dcm/IMG0338.dcm \n", - " inflating: dcm/IMG0339.dcm \n", - " inflating: dcm/IMG0340.dcm \n", - " inflating: dcm/IMG0341.dcm \n", - " inflating: dcm/IMG0342.dcm \n", - " inflating: dcm/IMG0343.dcm \n", - " inflating: dcm/IMG0344.dcm \n", - " inflating: dcm/IMG0345.dcm \n", - " inflating: dcm/IMG0346.dcm \n", - " inflating: dcm/IMG0347.dcm \n", - " inflating: dcm/IMG0348.dcm \n", - " inflating: dcm/IMG0349.dcm \n", - " inflating: dcm/IMG0350.dcm \n", - " inflating: dcm/IMG0351.dcm \n", - " inflating: dcm/IMG0352.dcm \n", - " inflating: dcm/IMG0353.dcm \n", - " inflating: dcm/IMG0354.dcm \n", - " inflating: dcm/IMG0355.dcm \n", - " inflating: dcm/IMG0356.dcm \n", - " inflating: dcm/IMG0357.dcm \n", - " inflating: dcm/IMG0358.dcm \n", - " inflating: dcm/IMG0359.dcm \n", - " inflating: dcm/IMG0360.dcm \n", - " inflating: dcm/IMG0361.dcm \n", - " inflating: dcm/IMG0362.dcm \n", - " inflating: dcm/IMG0363.dcm \n", - " inflating: dcm/IMG0364.dcm \n", - " inflating: dcm/IMG0365.dcm \n", - " inflating: dcm/IMG0366.dcm \n", - " inflating: dcm/IMG0367.dcm \n", - " inflating: dcm/IMG0368.dcm \n", - " inflating: dcm/IMG0369.dcm \n", - " inflating: dcm/IMG0370.dcm \n", - " inflating: dcm/IMG0371.dcm \n", - " inflating: dcm/IMG0372.dcm \n", - " inflating: dcm/IMG0373.dcm \n", - " inflating: dcm/IMG0374.dcm \n", - " inflating: dcm/IMG0375.dcm \n", - " inflating: dcm/IMG0376.dcm \n", - " inflating: dcm/IMG0377.dcm \n", - " inflating: dcm/IMG0378.dcm \n", - " inflating: dcm/IMG0379.dcm \n", - " inflating: dcm/IMG0380.dcm \n", - " inflating: dcm/IMG0381.dcm \n", - " inflating: dcm/IMG0382.dcm \n", - " inflating: dcm/IMG0383.dcm \n", - " inflating: dcm/IMG0384.dcm \n", - " inflating: dcm/IMG0385.dcm \n", - " inflating: dcm/IMG0386.dcm \n", - " inflating: dcm/IMG0387.dcm \n", - " inflating: dcm/IMG0388.dcm \n", - " inflating: dcm/IMG0389.dcm \n", - " inflating: dcm/IMG0390.dcm \n", - " inflating: dcm/IMG0391.dcm \n", - " inflating: dcm/IMG0392.dcm \n", - " inflating: dcm/IMG0393.dcm \n", - " inflating: dcm/IMG0394.dcm \n", - " inflating: dcm/IMG0395.dcm \n", - " inflating: dcm/IMG0396.dcm \n", - " inflating: dcm/IMG0397.dcm \n", - " inflating: dcm/IMG0398.dcm \n", - " inflating: dcm/IMG0399.dcm \n", - " inflating: dcm/IMG0400.dcm \n", - " inflating: dcm/IMG0401.dcm \n", - " inflating: dcm/IMG0402.dcm \n", - " inflating: dcm/IMG0403.dcm \n", - " inflating: dcm/IMG0404.dcm \n", - " inflating: dcm/IMG0405.dcm \n", - " inflating: dcm/IMG0406.dcm \n", - " inflating: dcm/IMG0407.dcm \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " inflating: dcm/IMG0408.dcm \n", - " inflating: dcm/IMG0409.dcm \n", - " inflating: dcm/IMG0410.dcm \n", - " inflating: dcm/IMG0411.dcm \n", - " inflating: dcm/IMG0412.dcm \n", - " inflating: dcm/IMG0413.dcm \n", - " inflating: dcm/IMG0414.dcm \n", - " inflating: dcm/IMG0415.dcm \n", - " inflating: dcm/IMG0416.dcm \n", - " inflating: dcm/IMG0417.dcm \n", - " inflating: dcm/IMG0418.dcm \n", - " inflating: dcm/IMG0419.dcm \n", - " inflating: dcm/IMG0420.dcm \n", - " inflating: dcm/IMG0421.dcm \n", - " inflating: dcm/IMG0422.dcm \n", - " inflating: dcm/IMG0423.dcm \n", - " inflating: dcm/IMG0424.dcm \n", - " inflating: dcm/IMG0425.dcm \n", - " inflating: dcm/IMG0426.dcm \n", - " inflating: dcm/IMG0427.dcm \n", - " inflating: dcm/IMG0428.dcm \n", - " inflating: dcm/IMG0429.dcm \n", - " inflating: dcm/IMG0430.dcm \n", - " inflating: dcm/IMG0431.dcm \n", - " inflating: dcm/IMG0432.dcm \n", - " inflating: dcm/IMG0433.dcm \n", - " inflating: dcm/IMG0434.dcm \n", - " inflating: dcm/IMG0435.dcm \n", - " inflating: dcm/IMG0436.dcm \n", - " inflating: dcm/IMG0437.dcm \n", - " inflating: dcm/IMG0438.dcm \n", - " inflating: dcm/IMG0439.dcm \n", - " inflating: dcm/IMG0440.dcm \n", - " inflating: dcm/IMG0441.dcm \n", - " inflating: dcm/IMG0442.dcm \n", - " inflating: dcm/IMG0443.dcm \n", - " inflating: dcm/IMG0444.dcm \n", - " inflating: dcm/IMG0445.dcm \n", - " inflating: dcm/IMG0446.dcm \n", - " inflating: dcm/IMG0447.dcm \n", - " inflating: dcm/IMG0448.dcm \n", - " inflating: dcm/IMG0449.dcm \n", - " inflating: dcm/IMG0450.dcm \n", - " inflating: dcm/IMG0451.dcm \n", - " inflating: dcm/IMG0452.dcm \n", - " inflating: dcm/IMG0453.dcm \n", - " inflating: dcm/IMG0454.dcm \n", - " inflating: dcm/IMG0455.dcm \n", - " inflating: dcm/IMG0456.dcm \n", - " inflating: dcm/IMG0457.dcm \n", - " inflating: dcm/IMG0458.dcm \n", - " inflating: dcm/IMG0459.dcm \n", - " inflating: dcm/IMG0460.dcm \n", - " inflating: dcm/IMG0461.dcm \n", - " inflating: dcm/IMG0462.dcm \n", - " inflating: dcm/IMG0463.dcm \n", - " inflating: dcm/IMG0464.dcm \n", - " inflating: dcm/IMG0465.dcm \n", - " inflating: dcm/IMG0466.dcm \n", - " inflating: dcm/IMG0467.dcm \n", - " inflating: dcm/IMG0468.dcm \n", - " inflating: dcm/IMG0469.dcm \n", - " inflating: dcm/IMG0470.dcm \n", - " inflating: dcm/IMG0471.dcm \n", - " inflating: dcm/IMG0472.dcm \n", - " inflating: dcm/IMG0473.dcm \n", - " inflating: dcm/IMG0474.dcm \n", - " inflating: dcm/IMG0475.dcm \n", - " inflating: dcm/IMG0476.dcm \n", - " inflating: dcm/IMG0477.dcm \n", - " inflating: dcm/IMG0478.dcm \n", - " inflating: dcm/IMG0479.dcm \n", - " inflating: dcm/IMG0480.dcm \n", - " inflating: dcm/IMG0481.dcm \n", - " inflating: dcm/IMG0482.dcm \n", - " inflating: dcm/IMG0483.dcm \n", - " inflating: dcm/IMG0484.dcm \n", - " inflating: dcm/IMG0485.dcm \n", - " inflating: dcm/IMG0486.dcm \n", - " inflating: dcm/IMG0487.dcm \n", - " inflating: dcm/IMG0488.dcm \n", - " inflating: dcm/IMG0489.dcm \n", - " inflating: dcm/IMG0490.dcm \n", - " inflating: dcm/IMG0491.dcm \n", - " inflating: dcm/IMG0492.dcm \n", - " inflating: dcm/IMG0493.dcm \n", - " inflating: dcm/IMG0494.dcm \n", - " inflating: dcm/IMG0495.dcm \n", - " inflating: dcm/IMG0496.dcm \n", - " inflating: dcm/IMG0497.dcm \n", - " inflating: dcm/IMG0498.dcm \n", - " inflating: dcm/IMG0499.dcm \n", - " inflating: dcm/IMG0500.dcm \n", - " inflating: dcm/IMG0501.dcm \n", - " inflating: dcm/IMG0502.dcm \n", - " inflating: dcm/IMG0503.dcm \n", - " inflating: dcm/IMG0504.dcm \n", - " inflating: dcm/IMG0505.dcm \n", - " inflating: dcm/IMG0506.dcm \n", - " inflating: dcm/IMG0507.dcm \n", - " inflating: dcm/IMG0508.dcm \n", - " inflating: dcm/IMG0509.dcm \n", - " inflating: dcm/IMG0510.dcm \n", - " inflating: dcm/IMG0511.dcm \n", - " inflating: dcm/IMG0512.dcm \n", - " inflating: dcm/IMG0513.dcm \n", - " inflating: dcm/IMG0514.dcm \n", - " inflating: dcm/IMG0515.dcm \n", - " inflating: model.ts \n", - "input.zip\n" - ] - } - ], - "source": [ - "# Download ai_spleen_seg_data if not done so already\n", - "!pip install gdown \n", - "!gdown \"https://drive.google.com/uc?id=1GC_N8YQk_mOWN02oOzAU_2YDmNRWk--n\"\n", - "!unzip -o \"ai_spleen_seg_data_updated_1203.zip\"\n", - "\n", - "!cd dcm; zip -rq ../input.zip *\n", - "!ls input.zip" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that we have our compressed .zip, we can now making an inferencing request to our\n", - "MIS instance using `curl`\n", - "\n", - "**Usage:**\n", - "```bash\n", - "curl -X 'POST' 'http://[CLUSTER-IP:8000 OR HOST-IP:32000]/upload/' \\\n", - " -H 'accept: application/json' \\\n", - " -H 'Content-Type: multipart/form-data' \\\n", - " -F 'file=@[PATH TO INPUT PAYLOAD ZIP];type=application/x-zip-compressed' \\\n", - " -o output.zip\n", - "```\n", - "\n", - "You can obtain the cluster IP of the MIS Kubernetes service by doing a `kubectl get svc`.\n", - "\n", - "For example,\n", - "```bash\n", - "user@hostname:~$ kubectl get svc\n", - "NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\n", - "kubernetes ClusterIP 10.96.0.1 443/TCP 8d\n", - "monai-inference-service NodePort 10.97.138.32 8000:32000/TCP 4s\n", - "```\n", - "Under the entry `monai-inference-service`, note the IP registered under the `CLUSTER-IP` section. This is the Cluster IP of the MIS." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " % Total % Received % Xferd Average Speed Time Time Time Current\n", - " Dload Upload Total Spent Left Speed\n", - "100 86.5M 100 1018 100 86.5M 7953 675M --:--:-- --:--:-- --:--:-- 675M\n" - ] - } - ], - "source": [ - "!curl -X 'POST' 'http://localhost:8000/upload/' \\\n", - " -H 'accept: application/json' \\\n", - " -H 'Content-Type: multipart/form-data' \\\n", - " -F 'file=@input.zip;type=application/x-zip-compressed' \\\n", - " -o output.zip" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Archive: output.zip\r\n", - " End-of-central-directory signature not found. Either this file is not\r\n", - " a zipfile, or it constitutes one disk of a multi-part archive. In the\r\n", - " latter case the central directory and zipfile comment will be found on\r\n", - " the last disk(s) of this archive.\r\n", - "unzip: cannot find zipfile directory in one of output.zip or\r\n", - " output.zip.zip, and cannot find output.zip.ZIP, period.\r\n" - ] - } - ], - "source": [ - "!unzip -o output.zip" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: nilearn in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (0.8.1)\n", - "Requirement already satisfied: matplotlib in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (3.3.4)\n", - "Requirement already satisfied: pandas>=0.24.0 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from nilearn) (1.1.5)\n", - "Requirement already satisfied: numpy>=1.16 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from nilearn) (1.19.2)\n", - "Requirement already satisfied: scikit-learn>=0.21 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from nilearn) (0.24.2)\n", - "Requirement already satisfied: nibabel>=2.5 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from nilearn) (3.2.1)\n", - "Requirement already satisfied: requests>=2 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from nilearn) (2.12.5)\n", - "Requirement already satisfied: joblib>=0.12 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from nilearn) (1.1.0)\n", - "Requirement already satisfied: scipy>=1.2 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from nilearn) (1.5.4)\n", - "Requirement already satisfied: cycler>=0.10 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from matplotlib) (0.11.0)\n", - "Requirement already satisfied: python-dateutil>=2.1 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from matplotlib) (2.8.2)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from matplotlib) (1.3.1)\n", - "Requirement already satisfied: pillow>=6.2.0 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from matplotlib) (8.3.1)\n", - "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from matplotlib) (3.0.4)\n", - "Requirement already satisfied: packaging>=14.3 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from nibabel>=2.5->nilearn) (21.3)\n", - "Requirement already satisfied: pytz>=2017.2 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from pandas>=0.24.0->nilearn) (2021.3)\n", - "Requirement already satisfied: six>=1.5 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from python-dateutil>=2.1->matplotlib) (1.16.0)\n", - "Requirement already satisfied: threadpoolctl>=2.0.0 in /home/gupta/miniconda3/envs/monairsna/lib/python3.6/site-packages (from scikit-learn>=0.21->nilearn) (3.0.0)\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "!pip install nilearn matplotlib\n", - "def visualize_output(predicted_output: str):\n", - " import SimpleITK as sitk\n", - " reader = sitk.ImageSeriesReader()\n", - " dicom_names = reader.GetGDCMSeriesFileNames('./dcm')\n", - " reader.SetFileNames(dicom_names)\n", - " input_image = reader.Execute()\n", - "\n", - " writer = sitk.ImageFileWriter()\n", - " writer.SetFileName('input.nii.gz')\n", - " writer.Execute(input_image)\n", - "\n", - " import nibabel as nib\n", - " input_image_nib = nib.load('input.nii.gz')\n", - "\n", - " image_itk = nib.load(predicted_output)\n", - "\n", - " from nilearn import plotting, image\n", - " display = plotting.plot_anat(input_image_nib, cut_coords=(123, 162, 387), colorbar=False)\n", - " display.add_overlay(image_itk)\n", - "\n", - "visualize_output(\"./output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Uninstalling MONAI Inference Service**" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "release \"monai-inference-service\" uninstalled\r\n" - ] - } - ], - "source": [ - "!helm uninstall monai-inference-service" + "This tutorial has been deprecated as the MIS itself has been. Please use [MONAI Deploy Express](https://github.com/Project-MONAI/monai-deploy/tags) for hosting MONAI Application Packages in non-production environment." ] } ], "metadata": { - "interpreter": { - "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" - }, "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3.8.10 ('.venv': venv)", "language": "python", "name": "python3" }, @@ -1182,6 +27,11 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" + }, + "vscode": { + "interpreter": { + "hash": "9b4ab1155d0cd1042497eb40fd55b2d15caf4b3c0f9fbfcc7ba4404045d40f12" + } } }, "nbformat": 4, diff --git a/notebooks/tutorials/05_full_tutorial.ipynb b/notebooks/tutorials/05_full_tutorial.ipynb index eb80d7c9..e42380bc 100644 --- a/notebooks/tutorials/05_full_tutorial.ipynb +++ b/notebooks/tutorials/05_full_tutorial.ipynb @@ -6,2087 +6,7 @@ "source": [ "# Full Tutorial Building and Deploying Segmentation App with MONAI Inference Service (MIS)\n", "\n", - "This tutorial begins with creating an organ segmentation application using MONAI App SDK for a PyTorch model that has been trained with MONAI. Then this tutorial transitions into discussing how to deploy the segmentation application with the RESTful [MONAI Inference Service](https://github.com/Project-MONAI/monai-deploy-app-server/blob/main/components/inference-service/README.md). Please note that this tutorial is based on the [earlier version](https://github.com/Project-MONAI/monai-deploy-app-sdk/blob/7615d73f6ec2125ba5d2e3480f85b060e95b81e4/examples/apps/ai_spleen_seg_app/app.py) of the Spleen Segmentation Application.\n", - "\n", - "In the following sections, we will demonstrate how to create a MONAI Deploy application package using the MONAI Deploy App SDK and then will demonstrate how to deploy this package with the [MONAI Inference Service](https://github.com/Project-MONAI/monai-deploy-app-server/blob/main/components/inference-service/README.md). Along the way we will provide verification steps to confirm that our application produces the desired output both locally (for verification) and as a service output.\n", - "\n", - "\n", - "## Creating Operators and connecting them in Application class\n", - "\n", - "We will implement an application that consists of five Operators:\n", - "\n", - "- **DICOMDataLoaderOperator**:\n", - " - **Input(dicom_files)**: a folder path ([`DataPath`](/modules/_autosummary/monai.deploy.core.domain.DataPath))\n", - " - **Output(dicom_study_list)**: a list of DICOM studies in memory (List[[`DICOMStudy`](/modules/_autosummary/monai.deploy.core.domain.DICOMStudy)])\n", - "- **DICOMSeriesSelectorOperator**:\n", - " - **Input(dicom_study_list)**: a list of DICOM studies in memory (List[[`DICOMStudy`](/modules/_autosummary/monai.deploy.core.domain.DICOMStudy)])\n", - " - **Input(selection_rules)**: a selection rule (Dict)\n", - " - **Output(study_selected_series_list)**: a DICOM series object in memory ([`StudySelectedSeries`](/modules/_autosummary/monai.deploy.core.domain.StudySelectedSeries))\n", - "- **DICOMSeriesToVolumeOperator**:\n", - " - **Input(study_selected_series_list)**: a DICOM series object in memory ([`StudySelectedSeries`](/modules/_autosummary/monai.deploy.core.domain.StudySelectedSeries))\n", - " - **Output(image)**: an image object in memory ([`Image`](/modules/_autosummary/monai.deploy.core.domain.Image))\n", - "- **SpleenSegOperator**:\n", - " - **Input(image)**: an image object in memory ([`Image`](/modules/_autosummary/monai.deploy.core.domain.Image))\n", - " - **Output(seg_image)**: an image object in memory ([`Image`](/modules/_autosummary/monai.deploy.core.domain.Image))\n", - "- **DICOMSegmentationWriterOperator**:\n", - " - **Input(seg_image)**: a segmentation image object in memory ([`Image`](/modules/_autosummary/monai.deploy.core.domain.Image))\n", - " - **Input(study_selected_series_list)**: a DICOM series object in memory ([`StudySelectedSeries`](/modules/_autosummary/monai.deploy.core.domain.StudySelectedSeries))\n", - " - **Output(dicom_seg_instance)**: a file path ([`DataPath`](/modules/_autosummary/monai.deploy.core.domain.DataPath))\n", - "\n", - "\n", - ":::{note}\n", - "The `DICOMSegmentationWriterOperator` needs both the segmentation image as well as the original DICOM series meta-data in order to use the patient demographics and the DICOM Study level attributes.\n", - ":::\n", - "\n", - "The workflow of the application would look like this.\n", - "\n", - "```{mermaid}\n", - "%%{init: {\"theme\": \"base\", \"themeVariables\": { \"fontSize\": \"16px\"}} }%%\n", - "\n", - "classDiagram\n", - " direction TB\n", - "\n", - " DICOMDataLoaderOperator --|> DICOMSeriesSelectorOperator : dicom_study_list...dicom_study_list\n", - " DICOMSeriesSelectorOperator --|> DICOMSeriesToVolumeOperator : study_selected_series_list...study_selected_series_list\n", - " DICOMSeriesToVolumeOperator --|> SpleenSegOperator : image...image\n", - " DICOMSeriesSelectorOperator --|> DICOMSegmentationWriterOperator : study_selected_series_list...study_selected_series_list\n", - " SpleenSegOperator --|> DICOMSegmentationWriterOperator : seg_image...seg_image\n", - "\n", - "\n", - " class DICOMDataLoaderOperator {\n", - " dicom_files : DISK\n", - " dicom_study_list(out) IN_MEMORY\n", - " }\n", - " class DICOMSeriesSelectorOperator {\n", - " dicom_study_list : IN_MEMORY\n", - " selection_rules : IN_MEMORY\n", - " study_selected_series_list(out) IN_MEMORY\n", - " }\n", - " class DICOMSeriesToVolumeOperator {\n", - " study_selected_series_list : IN_MEMORY\n", - " image(out) IN_MEMORY\n", - " }\n", - " class SpleenSegOperator {\n", - " image : IN_MEMORY\n", - " seg_image(out) IN_MEMORY\n", - " }\n", - " class DICOMSegmentationWriterOperator {\n", - " seg_image : IN_MEMORY\n", - " study_selected_series_list : IN_MEMORY\n", - " dicom_seg_instance(out) DISK\n", - " }\n", - "```\n", - "\n", - "### Setup environment\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "# Install MONAI and other necessary image processing packages for the application\n", - "!python -c \"import monai\" || pip install -q \"monai\"\n", - "!python -c \"import torch\" || pip install -q \"torch>=1.5\"\n", - "!python -c \"import numpy\" || pip install -q \"numpy>=1.21\"\n", - "!python -c \"import nibabel\" || pip install -q \"nibabel>=3.2.1\"\n", - "!python -c \"import pydicom\" || pip install -q \"pydicom>=1.4.2\"\n", - "!python -c \"import SimpleITK\" || pip install -q \"SimpleITK>=2.0.0\"\n", - "!python -c \"import typeguard\" || pip install -q \"typeguard>=2.12.1\"\n", - "!python -c \"import matplotlib\" || pip install -q \"matplotlib>=3.3.4\"\n", - "!python -c \"import nilearn\" || pip install -q \"nilearn>=0.8.1\"\n", - "\n", - "# Install MONAI Deploy App SDK package\n", - "!python -c \"import monai.deploy\" || pip install --upgrade -q \"monai-deploy-app-sdk\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note: you may need to restart the Jupyter kernel to use the updated packages." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Download/Extract ai_spleen_bundle_data from Google Drive" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com\n", - "Requirement already satisfied: gdown in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (3.13.1)\n", - "Requirement already satisfied: six in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from gdown) (1.16.0)\n", - "Requirement already satisfied: filelock in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from gdown) (3.0.12)\n", - "Requirement already satisfied: requests[socks]>=2.12.0 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from gdown) (2.26.0)\n", - "Requirement already satisfied: tqdm in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from gdown) (4.62.3)\n", - "Requirement already satisfied: charset-normalizer~=2.0.0 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from requests[socks]>=2.12.0->gdown) (2.0.0)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from requests[socks]>=2.12.0->gdown) (2021.5.30)\n", - "Requirement already satisfied: idna<4,>=2.5 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from requests[socks]>=2.12.0->gdown) (3.1)\n", - "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from requests[socks]>=2.12.0->gdown) (1.26.6)\n", - "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/gbae/miniconda3/envs/mednist/lib/python3.6/site-packages (from requests[socks]>=2.12.0->gdown) (1.7.1)\n", - "Downloading...\n", - "From: https://drive.google.com/uc?id=1cJq0iQh_yzYIxVElSlVa141aEmHZADJh\n", - "To: ~/src/monai-deploy-app-sdk/notebooks/tutorials/ai_spleen_bundle_data.zip\n", - "104MB [00:10, 10.3MB/s] \n", - "Archive: ai_spleen_bundle_data.zip\n", - " creating: dcm/\n", - " inflating: dcm/IMG0001.dcm \n", - " inflating: dcm/IMG0002.dcm \n", - " inflating: dcm/IMG0003.dcm \n", - " inflating: dcm/IMG0004.dcm \n", - " inflating: dcm/IMG0005.dcm \n", - " inflating: dcm/IMG0006.dcm \n", - " inflating: dcm/IMG0007.dcm \n", - " inflating: dcm/IMG0008.dcm \n", - " inflating: dcm/IMG0009.dcm \n", - " inflating: dcm/IMG0010.dcm \n", - " inflating: dcm/IMG0011.dcm \n", - " inflating: dcm/IMG0012.dcm \n", - " inflating: dcm/IMG0013.dcm \n", - " inflating: dcm/IMG0014.dcm \n", - " inflating: dcm/IMG0015.dcm \n", - " inflating: dcm/IMG0016.dcm \n", - " inflating: dcm/IMG0017.dcm \n", - " inflating: dcm/IMG0018.dcm \n", - " inflating: dcm/IMG0019.dcm \n", - " inflating: dcm/IMG0020.dcm \n", - " inflating: dcm/IMG0021.dcm \n", - " inflating: dcm/IMG0022.dcm \n", - " inflating: dcm/IMG0023.dcm \n", - " inflating: dcm/IMG0024.dcm \n", - " inflating: dcm/IMG0025.dcm \n", - " inflating: dcm/IMG0026.dcm \n", - " inflating: dcm/IMG0027.dcm \n", - " inflating: dcm/IMG0028.dcm \n", - " inflating: dcm/IMG0029.dcm \n", - " inflating: dcm/IMG0030.dcm \n", - " inflating: dcm/IMG0031.dcm \n", - " inflating: dcm/IMG0032.dcm \n", - " inflating: dcm/IMG0033.dcm \n", - " inflating: dcm/IMG0034.dcm \n", - " inflating: dcm/IMG0035.dcm \n", - " inflating: dcm/IMG0036.dcm \n", - " inflating: dcm/IMG0037.dcm \n", - " inflating: dcm/IMG0038.dcm \n", - " inflating: dcm/IMG0039.dcm \n", - " inflating: dcm/IMG0040.dcm \n", - " inflating: dcm/IMG0041.dcm \n", - " inflating: dcm/IMG0042.dcm \n", - " inflating: dcm/IMG0043.dcm \n", - " inflating: dcm/IMG0044.dcm \n", - " inflating: dcm/IMG0045.dcm \n", - " inflating: dcm/IMG0046.dcm \n", - " inflating: dcm/IMG0047.dcm \n", - " inflating: dcm/IMG0048.dcm \n", - " inflating: dcm/IMG0049.dcm \n", - " inflating: dcm/IMG0050.dcm \n", - " inflating: dcm/IMG0051.dcm \n", - " inflating: dcm/IMG0052.dcm \n", - " inflating: dcm/IMG0053.dcm \n", - " inflating: dcm/IMG0054.dcm \n", - " inflating: dcm/IMG0055.dcm \n", - " inflating: dcm/IMG0056.dcm \n", - " inflating: dcm/IMG0057.dcm \n", - " inflating: dcm/IMG0058.dcm \n", - " inflating: dcm/IMG0059.dcm \n", - " inflating: dcm/IMG0060.dcm \n", - " inflating: dcm/IMG0061.dcm \n", - " inflating: dcm/IMG0062.dcm \n", - " inflating: dcm/IMG0063.dcm \n", - " inflating: dcm/IMG0064.dcm \n", - " inflating: dcm/IMG0065.dcm \n", - " inflating: dcm/IMG0066.dcm \n", - " inflating: dcm/IMG0067.dcm \n", - " inflating: dcm/IMG0068.dcm \n", - " inflating: dcm/IMG0069.dcm \n", - " inflating: dcm/IMG0070.dcm \n", - " inflating: dcm/IMG0071.dcm \n", - " inflating: dcm/IMG0072.dcm \n", - " inflating: dcm/IMG0073.dcm \n", - " inflating: dcm/IMG0074.dcm \n", - " inflating: dcm/IMG0075.dcm \n", - " inflating: dcm/IMG0076.dcm \n", - " inflating: dcm/IMG0077.dcm \n", - " inflating: dcm/IMG0078.dcm \n", - " inflating: dcm/IMG0079.dcm \n", - " inflating: dcm/IMG0080.dcm \n", - " inflating: dcm/IMG0081.dcm \n", - " inflating: dcm/IMG0082.dcm \n", - " inflating: dcm/IMG0083.dcm \n", - " inflating: dcm/IMG0084.dcm \n", - " inflating: dcm/IMG0085.dcm \n", - " inflating: dcm/IMG0086.dcm \n", - " inflating: dcm/IMG0087.dcm \n", - " inflating: dcm/IMG0088.dcm \n", - " inflating: dcm/IMG0089.dcm \n", - " inflating: dcm/IMG0090.dcm \n", - " inflating: dcm/IMG0091.dcm \n", - " inflating: dcm/IMG0092.dcm \n", - " inflating: dcm/IMG0093.dcm \n", - " inflating: dcm/IMG0094.dcm \n", - " inflating: dcm/IMG0095.dcm \n", - " inflating: dcm/IMG0096.dcm \n", - " inflating: dcm/IMG0097.dcm \n", - " inflating: dcm/IMG0098.dcm \n", - " inflating: dcm/IMG0099.dcm \n", - " inflating: dcm/IMG0100.dcm \n", - " inflating: dcm/IMG0101.dcm \n", - " inflating: dcm/IMG0102.dcm \n", - " inflating: dcm/IMG0103.dcm \n", - " inflating: dcm/IMG0104.dcm \n", - " inflating: dcm/IMG0105.dcm \n", - " inflating: dcm/IMG0106.dcm \n", - " inflating: dcm/IMG0107.dcm \n", - " inflating: dcm/IMG0108.dcm \n", - " inflating: dcm/IMG0109.dcm \n", - " inflating: dcm/IMG0110.dcm \n", - " inflating: dcm/IMG0111.dcm \n", - " inflating: dcm/IMG0112.dcm \n", - " inflating: dcm/IMG0113.dcm \n", - " inflating: dcm/IMG0114.dcm \n", - " inflating: dcm/IMG0115.dcm \n", - " inflating: dcm/IMG0116.dcm \n", - " inflating: dcm/IMG0117.dcm \n", - " inflating: dcm/IMG0118.dcm \n", - " inflating: dcm/IMG0119.dcm \n", - " inflating: dcm/IMG0120.dcm \n", - " inflating: dcm/IMG0121.dcm \n", - " inflating: dcm/IMG0122.dcm \n", - " inflating: dcm/IMG0123.dcm \n", - " inflating: dcm/IMG0124.dcm \n", - " inflating: dcm/IMG0125.dcm \n", - " inflating: dcm/IMG0126.dcm \n", - " inflating: dcm/IMG0127.dcm \n", - " inflating: dcm/IMG0128.dcm \n", - " inflating: dcm/IMG0129.dcm \n", - " inflating: dcm/IMG0130.dcm \n", - " inflating: dcm/IMG0131.dcm \n", - " inflating: dcm/IMG0132.dcm \n", - " inflating: dcm/IMG0133.dcm \n", - " inflating: dcm/IMG0134.dcm \n", - " inflating: dcm/IMG0135.dcm \n", - " inflating: dcm/IMG0136.dcm \n", - " inflating: dcm/IMG0137.dcm \n", - " inflating: dcm/IMG0138.dcm \n", - " inflating: dcm/IMG0139.dcm \n", - " inflating: dcm/IMG0140.dcm \n", - " inflating: dcm/IMG0141.dcm \n", - " inflating: dcm/IMG0142.dcm \n", - " inflating: dcm/IMG0143.dcm \n", - " inflating: dcm/IMG0144.dcm \n", - " inflating: dcm/IMG0145.dcm \n", - " inflating: dcm/IMG0146.dcm \n", - " inflating: dcm/IMG0147.dcm \n", - " inflating: dcm/IMG0148.dcm \n", - " inflating: dcm/IMG0149.dcm \n", - " inflating: dcm/IMG0150.dcm \n", - " inflating: dcm/IMG0151.dcm \n", - " inflating: dcm/IMG0152.dcm \n", - " inflating: dcm/IMG0153.dcm \n", - " inflating: dcm/IMG0154.dcm \n", - " inflating: dcm/IMG0155.dcm \n", - " inflating: dcm/IMG0156.dcm \n", - " inflating: dcm/IMG0157.dcm \n", - " inflating: dcm/IMG0158.dcm \n", - " inflating: dcm/IMG0159.dcm \n", - " inflating: dcm/IMG0160.dcm \n", - " inflating: dcm/IMG0161.dcm \n", - " inflating: dcm/IMG0162.dcm \n", - " inflating: dcm/IMG0163.dcm \n", - " inflating: dcm/IMG0164.dcm \n", - " inflating: dcm/IMG0165.dcm \n", - " inflating: dcm/IMG0166.dcm \n", - " inflating: dcm/IMG0167.dcm \n", - " inflating: dcm/IMG0168.dcm \n", - " inflating: dcm/IMG0169.dcm \n", - " inflating: dcm/IMG0170.dcm \n", - " inflating: dcm/IMG0171.dcm \n", - " inflating: dcm/IMG0172.dcm \n", - " inflating: dcm/IMG0173.dcm \n", - " inflating: dcm/IMG0174.dcm \n", - " inflating: dcm/IMG0175.dcm \n", - " inflating: dcm/IMG0176.dcm \n", - " inflating: dcm/IMG0177.dcm \n", - " inflating: dcm/IMG0178.dcm \n", - " inflating: dcm/IMG0179.dcm \n", - " inflating: dcm/IMG0180.dcm \n", - " inflating: dcm/IMG0181.dcm \n", - " inflating: dcm/IMG0182.dcm \n", - " inflating: dcm/IMG0183.dcm \n", - " inflating: dcm/IMG0184.dcm \n", - " inflating: dcm/IMG0185.dcm \n", - " inflating: dcm/IMG0186.dcm \n", - " inflating: dcm/IMG0187.dcm \n", - " inflating: dcm/IMG0188.dcm \n", - " inflating: dcm/IMG0189.dcm \n", - " inflating: dcm/IMG0190.dcm \n", - " inflating: dcm/IMG0191.dcm \n", - " inflating: dcm/IMG0192.dcm \n", - " inflating: dcm/IMG0193.dcm \n", - " inflating: dcm/IMG0194.dcm \n", - " inflating: dcm/IMG0195.dcm \n", - " inflating: dcm/IMG0196.dcm \n", - " inflating: dcm/IMG0197.dcm \n", - " inflating: dcm/IMG0198.dcm \n", - " inflating: dcm/IMG0199.dcm \n", - " inflating: dcm/IMG0200.dcm \n", - " inflating: dcm/IMG0201.dcm \n", - " inflating: dcm/IMG0202.dcm \n", - " inflating: dcm/IMG0203.dcm \n", - " inflating: dcm/IMG0204.dcm \n", - " inflating: dcm/IMG0205.dcm \n", - " inflating: dcm/IMG0206.dcm \n", - " inflating: dcm/IMG0207.dcm \n", - " inflating: dcm/IMG0208.dcm \n", - " inflating: dcm/IMG0209.dcm \n", - " inflating: dcm/IMG0210.dcm \n", - " inflating: dcm/IMG0211.dcm \n", - " inflating: dcm/IMG0212.dcm \n", - " inflating: dcm/IMG0213.dcm \n", - " inflating: dcm/IMG0214.dcm \n", - " inflating: dcm/IMG0215.dcm \n", - " inflating: dcm/IMG0216.dcm \n", - " inflating: dcm/IMG0217.dcm \n", - " inflating: dcm/IMG0218.dcm \n", - " inflating: dcm/IMG0219.dcm \n", - " inflating: dcm/IMG0220.dcm \n", - " inflating: dcm/IMG0221.dcm \n", - " inflating: dcm/IMG0222.dcm \n", - " inflating: dcm/IMG0223.dcm \n", - " inflating: dcm/IMG0224.dcm \n", - " inflating: dcm/IMG0225.dcm \n", - " inflating: dcm/IMG0226.dcm \n", - " inflating: dcm/IMG0227.dcm \n", - " inflating: dcm/IMG0228.dcm \n", - " inflating: dcm/IMG0229.dcm \n", - " inflating: dcm/IMG0230.dcm \n", - " inflating: dcm/IMG0231.dcm \n", - " inflating: dcm/IMG0232.dcm \n", - " inflating: dcm/IMG0233.dcm \n", - " inflating: dcm/IMG0234.dcm \n", - " inflating: dcm/IMG0235.dcm \n", - " inflating: dcm/IMG0236.dcm \n", - " inflating: dcm/IMG0237.dcm \n", - " inflating: dcm/IMG0238.dcm \n", - " inflating: dcm/IMG0239.dcm \n", - " inflating: dcm/IMG0240.dcm \n", - " inflating: dcm/IMG0241.dcm \n", - " inflating: dcm/IMG0242.dcm \n", - " inflating: dcm/IMG0243.dcm \n", - " inflating: dcm/IMG0244.dcm \n", - " inflating: dcm/IMG0245.dcm \n", - " inflating: dcm/IMG0246.dcm \n", - " inflating: dcm/IMG0247.dcm \n", - " inflating: dcm/IMG0248.dcm \n", - " inflating: dcm/IMG0249.dcm \n", - " inflating: dcm/IMG0250.dcm \n", - " inflating: dcm/IMG0251.dcm \n", - " inflating: dcm/IMG0252.dcm \n", - " inflating: dcm/IMG0253.dcm \n", - " inflating: dcm/IMG0254.dcm \n", - " inflating: dcm/IMG0255.dcm \n", - " inflating: dcm/IMG0256.dcm \n", - " inflating: dcm/IMG0257.dcm \n", - " inflating: dcm/IMG0258.dcm \n", - " inflating: dcm/IMG0259.dcm \n", - " inflating: dcm/IMG0260.dcm \n", - " inflating: dcm/IMG0261.dcm \n", - " inflating: dcm/IMG0262.dcm \n", - " inflating: dcm/IMG0263.dcm \n", - " inflating: dcm/IMG0264.dcm \n", - " inflating: dcm/IMG0265.dcm \n", - " inflating: dcm/IMG0266.dcm \n", - " inflating: dcm/IMG0267.dcm \n", - " inflating: dcm/IMG0268.dcm \n", - " inflating: dcm/IMG0269.dcm \n", - " inflating: dcm/IMG0270.dcm \n", - " inflating: dcm/IMG0271.dcm \n", - " inflating: dcm/IMG0272.dcm \n", - " inflating: dcm/IMG0273.dcm \n", - " inflating: dcm/IMG0274.dcm \n", - " inflating: dcm/IMG0275.dcm \n", - " inflating: dcm/IMG0276.dcm \n", - " inflating: dcm/IMG0277.dcm \n", - " inflating: dcm/IMG0278.dcm \n", - " inflating: dcm/IMG0279.dcm \n", - " inflating: dcm/IMG0280.dcm \n", - " inflating: dcm/IMG0281.dcm \n", - " inflating: dcm/IMG0282.dcm \n", - " inflating: dcm/IMG0283.dcm \n", - " inflating: dcm/IMG0284.dcm \n", - " inflating: dcm/IMG0285.dcm \n", - " inflating: dcm/IMG0286.dcm \n", - " inflating: dcm/IMG0287.dcm \n", - " inflating: dcm/IMG0288.dcm \n", - " inflating: dcm/IMG0289.dcm \n", - " inflating: dcm/IMG0290.dcm \n", - " inflating: dcm/IMG0291.dcm \n", - " inflating: dcm/IMG0292.dcm \n", - " inflating: dcm/IMG0293.dcm \n", - " inflating: dcm/IMG0294.dcm \n", - " inflating: dcm/IMG0295.dcm \n", - " inflating: dcm/IMG0296.dcm \n", - " inflating: dcm/IMG0297.dcm \n", - " inflating: dcm/IMG0298.dcm \n", - " inflating: dcm/IMG0299.dcm \n", - " inflating: dcm/IMG0300.dcm \n", - " inflating: dcm/IMG0301.dcm \n", - " inflating: dcm/IMG0302.dcm \n", - " inflating: dcm/IMG0303.dcm \n", - " inflating: dcm/IMG0304.dcm \n", - " inflating: dcm/IMG0305.dcm \n", - " inflating: dcm/IMG0306.dcm \n", - " inflating: dcm/IMG0307.dcm \n", - " inflating: dcm/IMG0308.dcm \n", - " inflating: dcm/IMG0309.dcm \n", - " inflating: dcm/IMG0310.dcm \n", - " inflating: dcm/IMG0311.dcm \n", - " inflating: dcm/IMG0312.dcm \n", - " inflating: dcm/IMG0313.dcm \n", - " inflating: dcm/IMG0314.dcm \n", - " inflating: dcm/IMG0315.dcm \n", - " inflating: dcm/IMG0316.dcm \n", - " inflating: dcm/IMG0317.dcm \n", - " inflating: dcm/IMG0318.dcm \n", - " inflating: dcm/IMG0319.dcm \n", - " inflating: dcm/IMG0320.dcm \n", - " inflating: dcm/IMG0321.dcm \n", - " inflating: dcm/IMG0322.dcm \n", - " inflating: dcm/IMG0323.dcm \n", - " inflating: dcm/IMG0324.dcm \n", - " inflating: dcm/IMG0325.dcm \n", - " inflating: dcm/IMG0326.dcm \n", - " inflating: dcm/IMG0327.dcm \n", - " inflating: dcm/IMG0328.dcm \n", - " inflating: dcm/IMG0329.dcm \n", - " inflating: dcm/IMG0330.dcm \n", - " inflating: dcm/IMG0331.dcm \n", - " inflating: dcm/IMG0332.dcm \n", - " inflating: dcm/IMG0333.dcm \n", - " inflating: dcm/IMG0334.dcm \n", - " inflating: dcm/IMG0335.dcm \n", - " inflating: dcm/IMG0336.dcm \n", - " inflating: dcm/IMG0337.dcm \n", - " inflating: dcm/IMG0338.dcm \n", - " inflating: dcm/IMG0339.dcm \n", - " inflating: dcm/IMG0340.dcm \n", - " inflating: dcm/IMG0341.dcm \n", - " inflating: dcm/IMG0342.dcm \n", - " inflating: dcm/IMG0343.dcm \n", - " inflating: dcm/IMG0344.dcm \n", - " inflating: dcm/IMG0345.dcm \n", - " inflating: dcm/IMG0346.dcm \n", - " inflating: dcm/IMG0347.dcm \n", - " inflating: dcm/IMG0348.dcm \n", - " inflating: dcm/IMG0349.dcm \n", - " inflating: dcm/IMG0350.dcm \n", - " inflating: dcm/IMG0351.dcm \n", - " inflating: dcm/IMG0352.dcm \n", - " inflating: dcm/IMG0353.dcm \n", - " inflating: dcm/IMG0354.dcm \n", - " inflating: dcm/IMG0355.dcm \n", - " inflating: dcm/IMG0356.dcm \n", - " inflating: dcm/IMG0357.dcm \n", - " inflating: dcm/IMG0358.dcm \n", - " inflating: dcm/IMG0359.dcm \n", - " inflating: dcm/IMG0360.dcm \n", - " inflating: dcm/IMG0361.dcm \n", - " inflating: dcm/IMG0362.dcm \n", - " inflating: dcm/IMG0363.dcm \n", - " inflating: dcm/IMG0364.dcm \n", - " inflating: dcm/IMG0365.dcm \n", - " inflating: dcm/IMG0366.dcm \n", - " inflating: dcm/IMG0367.dcm \n", - " inflating: dcm/IMG0368.dcm \n", - " inflating: dcm/IMG0369.dcm \n", - " inflating: dcm/IMG0370.dcm \n", - " inflating: dcm/IMG0371.dcm \n", - " inflating: dcm/IMG0372.dcm \n", - " inflating: dcm/IMG0373.dcm \n", - " inflating: dcm/IMG0374.dcm \n", - " inflating: dcm/IMG0375.dcm \n", - " inflating: dcm/IMG0376.dcm \n", - " inflating: dcm/IMG0377.dcm \n", - " inflating: dcm/IMG0378.dcm \n", - " inflating: dcm/IMG0379.dcm \n", - " inflating: dcm/IMG0380.dcm \n", - " inflating: dcm/IMG0381.dcm \n", - " inflating: dcm/IMG0382.dcm \n", - " inflating: dcm/IMG0383.dcm \n", - " inflating: dcm/IMG0384.dcm \n", - " inflating: dcm/IMG0385.dcm \n", - " inflating: dcm/IMG0386.dcm \n", - " inflating: dcm/IMG0387.dcm \n", - " inflating: dcm/IMG0388.dcm \n", - " inflating: dcm/IMG0389.dcm \n", - " inflating: dcm/IMG0390.dcm \n", - " inflating: dcm/IMG0391.dcm \n", - " inflating: dcm/IMG0392.dcm \n", - " inflating: dcm/IMG0393.dcm \n", - " inflating: dcm/IMG0394.dcm \n", - " inflating: dcm/IMG0395.dcm \n", - " inflating: dcm/IMG0396.dcm \n", - " inflating: dcm/IMG0397.dcm \n", - " inflating: dcm/IMG0398.dcm \n", - " inflating: dcm/IMG0399.dcm \n", - " inflating: dcm/IMG0400.dcm \n", - " inflating: dcm/IMG0401.dcm \n", - " inflating: dcm/IMG0402.dcm \n", - " inflating: dcm/IMG0403.dcm \n", - " inflating: dcm/IMG0404.dcm \n", - " inflating: dcm/IMG0405.dcm \n", - " inflating: dcm/IMG0406.dcm \n", - " inflating: dcm/IMG0407.dcm \n", - " inflating: dcm/IMG0408.dcm \n", - " inflating: dcm/IMG0409.dcm \n", - " inflating: dcm/IMG0410.dcm \n", - " inflating: dcm/IMG0411.dcm \n", - " inflating: dcm/IMG0412.dcm \n", - " inflating: dcm/IMG0413.dcm \n", - " inflating: dcm/IMG0414.dcm \n", - " inflating: dcm/IMG0415.dcm \n", - " inflating: dcm/IMG0416.dcm \n", - " inflating: dcm/IMG0417.dcm \n", - " inflating: dcm/IMG0418.dcm \n", - " inflating: dcm/IMG0419.dcm \n", - " inflating: dcm/IMG0420.dcm \n", - " inflating: dcm/IMG0421.dcm \n", - " inflating: dcm/IMG0422.dcm \n", - " inflating: dcm/IMG0423.dcm \n", - " inflating: dcm/IMG0424.dcm \n", - " inflating: dcm/IMG0425.dcm \n", - " inflating: dcm/IMG0426.dcm \n", - " inflating: dcm/IMG0427.dcm \n", - " inflating: dcm/IMG0428.dcm \n", - " inflating: dcm/IMG0429.dcm \n", - " inflating: dcm/IMG0430.dcm \n", - " inflating: dcm/IMG0431.dcm \n", - " inflating: dcm/IMG0432.dcm \n", - " inflating: dcm/IMG0433.dcm \n", - " inflating: dcm/IMG0434.dcm \n", - " inflating: dcm/IMG0435.dcm \n", - " inflating: dcm/IMG0436.dcm \n", - " inflating: dcm/IMG0437.dcm \n", - " inflating: dcm/IMG0438.dcm \n", - " inflating: dcm/IMG0439.dcm \n", - " inflating: dcm/IMG0440.dcm \n", - " inflating: dcm/IMG0441.dcm \n", - " inflating: dcm/IMG0442.dcm \n", - " inflating: dcm/IMG0443.dcm \n", - " inflating: dcm/IMG0444.dcm \n", - " inflating: dcm/IMG0445.dcm \n", - " inflating: dcm/IMG0446.dcm \n", - " inflating: dcm/IMG0447.dcm \n", - " inflating: dcm/IMG0448.dcm \n", - " inflating: dcm/IMG0449.dcm \n", - " inflating: dcm/IMG0450.dcm \n", - " inflating: dcm/IMG0451.dcm \n", - " inflating: dcm/IMG0452.dcm \n", - " inflating: dcm/IMG0453.dcm \n", - " inflating: dcm/IMG0454.dcm \n", - " inflating: dcm/IMG0455.dcm \n", - " inflating: dcm/IMG0456.dcm \n", - " inflating: dcm/IMG0457.dcm \n", - " inflating: dcm/IMG0458.dcm \n", - " inflating: dcm/IMG0459.dcm \n", - " inflating: dcm/IMG0460.dcm \n", - " inflating: dcm/IMG0461.dcm \n", - " inflating: dcm/IMG0462.dcm \n", - " inflating: dcm/IMG0463.dcm \n", - " inflating: dcm/IMG0464.dcm \n", - " inflating: dcm/IMG0465.dcm \n", - " inflating: dcm/IMG0466.dcm \n", - " inflating: dcm/IMG0467.dcm \n", - " inflating: dcm/IMG0468.dcm \n", - " inflating: dcm/IMG0469.dcm \n", - " inflating: dcm/IMG0470.dcm \n", - " inflating: dcm/IMG0471.dcm \n", - " inflating: dcm/IMG0472.dcm \n", - " inflating: dcm/IMG0473.dcm \n", - " inflating: dcm/IMG0474.dcm \n", - " inflating: dcm/IMG0475.dcm \n", - " inflating: dcm/IMG0476.dcm \n", - " inflating: dcm/IMG0477.dcm \n", - " inflating: dcm/IMG0478.dcm \n", - " inflating: dcm/IMG0479.dcm \n", - " inflating: dcm/IMG0480.dcm \n", - " inflating: dcm/IMG0481.dcm \n", - " inflating: dcm/IMG0482.dcm \n", - " inflating: dcm/IMG0483.dcm \n", - " inflating: dcm/IMG0484.dcm \n", - " inflating: dcm/IMG0485.dcm \n", - " inflating: dcm/IMG0486.dcm \n", - " inflating: dcm/IMG0487.dcm \n", - " inflating: dcm/IMG0488.dcm \n", - " inflating: dcm/IMG0489.dcm \n", - " inflating: dcm/IMG0490.dcm \n", - " inflating: dcm/IMG0491.dcm \n", - " inflating: dcm/IMG0492.dcm \n", - " inflating: dcm/IMG0493.dcm \n", - " inflating: dcm/IMG0494.dcm \n", - " inflating: dcm/IMG0495.dcm \n", - " inflating: dcm/IMG0496.dcm \n", - " inflating: dcm/IMG0497.dcm \n", - " inflating: dcm/IMG0498.dcm \n", - " inflating: dcm/IMG0499.dcm \n", - " inflating: dcm/IMG0500.dcm \n", - " inflating: dcm/IMG0501.dcm \n", - " inflating: dcm/IMG0502.dcm \n", - " inflating: dcm/IMG0503.dcm \n", - " inflating: dcm/IMG0504.dcm \n", - " inflating: dcm/IMG0505.dcm \n", - " inflating: dcm/IMG0506.dcm \n", - " inflating: dcm/IMG0507.dcm \n", - " inflating: dcm/IMG0508.dcm \n", - " inflating: dcm/IMG0509.dcm \n", - " inflating: dcm/IMG0510.dcm \n", - " inflating: dcm/IMG0511.dcm \n", - " inflating: dcm/IMG0512.dcm \n", - " inflating: dcm/IMG0513.dcm \n", - " inflating: dcm/IMG0514.dcm \n", - " inflating: dcm/IMG0515.dcm \n", - " inflating: model.ts \n" - ] - } - ], - "source": [ - "# Download ai_spleen_bundle_data test data zip file\n", - "!pip install gdown \n", - "!gdown \"https://drive.google.com/uc?id=1cJq0iQh_yzYIxVElSlVa141aEmHZADJh\"\n", - "\n", - "# After downloading ai_spleen_bundle_data zip file from the web browser or using gdown,\n", - "!unzip -o \"ai_spleen_bundle_data.zip\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Setup imports\n", - "\n", - "Let's import necessary classes/decorators to define Application and Operator." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "from os import path\n", - "\n", - "from numpy import uint8\n", - "\n", - "import monai.deploy.core as md\n", - "from monai.deploy.core import ExecutionContext, Image, InputContext, IOType, Operator, OutputContext\n", - "from monai.deploy.operators.monai_seg_inference_operator import InMemImageReader, MonaiSegInferenceOperator\n", - "from monai.transforms import (\n", - " Activationsd,\n", - " AsDiscreted,\n", - " Compose,\n", - " CropForegroundd,\n", - " EnsureChannelFirstd,\n", - " Invertd,\n", - " LoadImaged,\n", - " SaveImaged,\n", - " ScaleIntensityRanged,\n", - " Spacingd,\n", - ")\n", - "\n", - "from monai.deploy.core import Application, resource\n", - "from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator\n", - "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator\n", - "from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator\n", - "from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Creating Model Specific Inference Operator classes\n", - "\n", - "Each Operator class inherits [Operator](/modules/_autosummary/monai.deploy.core.Operator) class and input/output properties are specified by using [@input](/modules/_autosummary/monai.deploy.core.input)/[@output](/modules/_autosummary/monai.deploy.core.output) decorators.\n", - "\n", - "Business logic would be implemented in the compute() method.\n", - "\n", - "The App SDK provides a `MonaiSegInferenceOperator` class to perform segmentation prediction with a Torch Script model. For consistency, this class uses MONAI dictionary-based transforms, as `Compose` object, for pre and post transforms. The model-specific inference operator will then only need to create the pre and post transform `Compose` based on what has been used in the model training and validation. Note that for deploy application, `ignite` is not needed nor supported.\n", - "\n", - "#### SpleenSegOperator\n", - "\n", - "The `SpleenSegOperator` gets as input an in-memory [Image](/modules/_autosummary/monai.deploy.core.domain.Image) object that has been converted from a DICOM CT series by the preceding `DICOMSeriesToVolumeOperator`, and as output in-memory segmentation [Image](/modules/_autosummary/monai.deploy.core.domain.Image) object.\n", - "\n", - "The `pre_process` function creates the pre-transforms `Compose` object. For `LoadImage`, a specialized `InMemImageReader`, derived from MONAI `ImageReader`, is used to convert the in-memory pixel data and return the `numpy` array as well as the meta-data. Also, the DICOM input pixel spacings are often not the same as expected by the model, so the `Spacingd` transform must be used to re-sample the image with the expected spacing.\n", - "\n", - "The `post_process` function creates the post-transform `Compose` object. The `SaveImageD` transform class is used to save the segmentation mask as NIfTI image file, which is optional as the in-memory mask image will be passed down to the DICOM Segmentation writer for creating a DICOM Segmentation instance. The `Invertd` must also be used to revert the segmentation image's orientation and spacing to be the same as the input.\n", - "\n", - "When the `MonaiSegInferenceOperator` object is created, the `ROI` size is specified, as well as the transform `Compose` objects. Furthermore, the dataset image key names are set accordingly.\n", - "\n", - "Loading of the model and performing the prediction are encapsulated in the `MonaiSegInferenceOperator` and other SDK classes. Once the inference is completed, the segmentation [Image](/modules/_autosummary/monai.deploy.core.domain.Image) object is created and set to the output (op_output.set(value, label)), by the `MonaiSegInferenceOperator`." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "@md.input(\"image\", Image, IOType.IN_MEMORY)\n", - "@md.output(\"seg_image\", Image, IOType.IN_MEMORY)\n", - "@md.env(pip_packages=[\"monai>=0.8.1\", \"torch>=1.5\", \"numpy>=1.21\", \"nibabel\"])\n", - "class SpleenSegOperator(Operator):\n", - " \"\"\"Performs Spleen segmentation with a 3D image converted from a DICOM CT series.\n", - " \"\"\"\n", - "\n", - " def __init__(self):\n", - "\n", - " self.logger = logging.getLogger(\"{}.{}\".format(__name__, type(self).__name__))\n", - " super().__init__()\n", - " self._input_dataset_key = \"image\"\n", - " self._pred_dataset_key = \"pred\"\n", - "\n", - " def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext):\n", - "\n", - " input_image = op_input.get(\"image\")\n", - " if not input_image:\n", - " raise ValueError(\"Input image is not found.\")\n", - "\n", - " output_path = context.output.get().path\n", - "\n", - " # This operator gets an in-memory Image object, so a specialized ImageReader is needed.\n", - " _reader = InMemImageReader(input_image)\n", - " pre_transforms = self.pre_process(_reader)\n", - " post_transforms = self.post_process(pre_transforms, path.join(output_path, \"prediction_output\"))\n", - "\n", - " # Delegates inference and saving output to the built-in operator.\n", - " infer_operator = MonaiSegInferenceOperator(\n", - " (\n", - " 160,\n", - " 160,\n", - " 160,\n", - " ),\n", - " pre_transforms,\n", - " post_transforms,\n", - " )\n", - "\n", - " # Setting the keys used in the dictironary based transforms may change.\n", - " infer_operator.input_dataset_key = self._input_dataset_key\n", - " infer_operator.pred_dataset_key = self._pred_dataset_key\n", - "\n", - " # Now let the built-in operator handles the work with the I/O spec and execution context.\n", - " infer_operator.compute(op_input, op_output, context)\n", - "\n", - " def pre_process(self, img_reader) -> Compose:\n", - " \"\"\"Composes transforms for preprocessing input before predicting on a model.\"\"\"\n", - "\n", - " my_key = self._input_dataset_key\n", - " return Compose(\n", - " [\n", - " LoadImaged(keys=my_key, reader=img_reader),\n", - " EnsureChannelFirstd(keys=my_key),\n", - " Spacingd(keys=my_key, pixdim=[1.0, 1.0, 1.0], mode=[\"bilinear\"], align_corners=True),\n", - " ScaleIntensityRanged(keys=my_key, a_min=-57, a_max=164, b_min=0.0, b_max=1.0, clip=True),\n", - " CropForegroundd(keys=my_key, source_key=my_key),\n", - " ]\n", - " )\n", - "\n", - " def post_process(self, pre_transforms: Compose, out_dir: str = \"./prediction_output\") -> Compose:\n", - " \"\"\"Composes transforms for postprocessing the prediction results.\"\"\"\n", - "\n", - " pred_key = self._pred_dataset_key\n", - " return Compose(\n", - " [\n", - " Activationsd(keys=pred_key, softmax=True),\n", - " AsDiscreted(keys=pred_key, argmax=True),\n", - " Invertd(\n", - " keys=pred_key, transform=pre_transforms, orig_keys=self._input_dataset_key, nearest_interp=True\n", - " ),\n", - " SaveImaged(keys=pred_key, output_dir=out_dir, output_postfix=\"seg\", output_dtype=uint8, resample=False),\n", - " ]\n", - " )\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Creating Application class\n", - "\n", - "Our application class would look like below.\n", - "\n", - "It defines `App` class, inheriting [Application](/modules/_autosummary/monai.deploy.core.Application) class.\n", - "\n", - "The requirements (resource and package dependency) for the App can be specified by using [@resource](/modules/_autosummary/monai.deploy.core.resource) and [@env](/modules/_autosummary/monai.deploy.core.env) decorators.\n", - "\n", - "The base class method, `compose`, is overridden. Objects required for DICOM parsing, series selection (selecting the first series for the current release), pixel data conversion to volume image, and segmentation instance creation are created, so is the model-specific `SpleenSegOperator`. The execution pipeline, as a Directed Acyclic Graph, is created by connecting these objects through self.add_flow()." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "@resource(cpu=1, gpu=1, memory=\"7Gi\")\n", - "class AISpleenSegApp(Application):\n", - " def __init__(self, *args, **kwargs):\n", - " super().__init__(*args, **kwargs)\n", - "\n", - " def compose(self):\n", - "\n", - " study_loader_op = DICOMDataLoaderOperator()\n", - " series_selector_op = DICOMSeriesSelectorOperator()\n", - " series_to_vol_op = DICOMSeriesToVolumeOperator()\n", - " # Creates DICOM Seg writer with segment label name in a string list\n", - " dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=[\"Spleen\"])\n", - "\n", - " # Creates the model specific segmentation operator\n", - " spleen_seg_op = SpleenSegOperator()\n", - "\n", - " # Creates the DAG by linking the operators\n", - " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", - " self.add_flow(series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", - " self.add_flow(series_to_vol_op, spleen_seg_op, {\"image\": \"image\"})\n", - "\n", - " self.add_flow(series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", - " self.add_flow(spleen_seg_op, dicom_seg_writer, {\"seg_image\": \"seg_image\"})\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Executing app locally\n", - "\n", - "We can execute the app in the Jupyter notebook. Note that the DICOM files of the CT Abdomen series must be present in the `dcm` and the Torch Script model at `model.ts`. Please use the actual path in your environment.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 3885, Operator ID: a345e29f-33ba-44d6-ac64-f4c37edf3eed)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 3885, Operator ID: ad5e3c12-6c1c-42c1-b5ae-f02124e2b4d8)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 3885, Operator ID: 1702a7dd-5cc7-4acc-bbab-d6c5e191471b)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 3885, Operator ID: 6222eee5-4a70-424e-b010-2263d41c8ccf)\u001b[39m\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[2021-09-23 02:20:17,805] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2021-09-23 02:20:17,806] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2021-09-23 02:20:17,807] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "file written: ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/Img_in_context/Img_in_context_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", - "Output Seg image pixel max value: 1\n", - "\u001b[34mDone performing execution of operator SpleenSegOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 3885, Operator ID: d6208465-9e0e-44fa-8b71-938c490b7c04)\u001b[39m\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[2021-09-23 02:20:19,972] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2021-09-23 02:20:21,118] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2021-09-23 02:20:21,397] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", - "\u001b[39m\n" - ] - } - ], - "source": [ - "app = AISpleenSegApp()\n", - "\n", - "app.run(input=\"dcm\", output=\"output\", model=\"model.ts\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once the application is verified inside Jupyter notebook, we can write the above Python code into Python files in an application folder.\n", - "\n", - "The application folder structure would look like below:\n", - "\n", - "```bash\n", - "my_app\n", - "├── __main__.py\n", - "├── app.py\n", - "└── spleen_seg_operator.py\n", - "```\n", - "\n", - ":::{note}\n", - "We can create a single application Python file (such as `spleen_app.py`) that includes the content of the files, instead of creating multiple files.\n", - "You will see such an example in MedNist Classifier Tutorial.\n", - ":::" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# Create an application folder\n", - "!mkdir -p my_app" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### spleen_seg_operator.py" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Writing my_app/spleen_seg_operator.py\n" - ] - } - ], - "source": [ - "%%writefile my_app/spleen_seg_operator.py\n", - "import logging\n", - "from os import path\n", - "\n", - "from numpy import uint8\n", - "\n", - "import monai.deploy.core as md\n", - "from monai.deploy.core import ExecutionContext, Image, InputContext, IOType, Operator, OutputContext\n", - "from monai.deploy.operators.monai_seg_inference_operator import InMemImageReader, MonaiSegInferenceOperator\n", - "from monai.transforms import (\n", - " Activationsd,\n", - " AsDiscreted,\n", - " Compose,\n", - " CropForegroundd,\n", - " EnsureChannelFirstd,\n", - " Invertd,\n", - " LoadImaged,\n", - " SaveImaged,\n", - " ScaleIntensityRanged,\n", - " Spacingd,\n", - ")\n", - "\n", - "\n", - "@md.input(\"image\", Image, IOType.IN_MEMORY)\n", - "@md.output(\"seg_image\", Image, IOType.IN_MEMORY)\n", - "@md.env(pip_packages=[\"monai>=0.8.1\", \"torch>=1.5\", \"numpy>=1.21\", \"nibabel\", \"typeguard\"])\n", - "class SpleenSegOperator(Operator):\n", - " \"\"\"Performs Spleen segmentation with a 3D image converted from a DICOM CT series.\n", - " \"\"\"\n", - "\n", - " def __init__(self):\n", - "\n", - " self.logger = logging.getLogger(\"{}.{}\".format(__name__, type(self).__name__))\n", - " super().__init__()\n", - " self._input_dataset_key = \"image\"\n", - " self._pred_dataset_key = \"pred\"\n", - "\n", - " def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext):\n", - "\n", - " input_image = op_input.get(\"image\")\n", - " if not input_image:\n", - " raise ValueError(\"Input image is not found.\")\n", - "\n", - " output_path = context.output.get().path\n", - "\n", - " # This operator gets an in-memory Image object, so a specialized ImageReader is needed.\n", - " _reader = InMemImageReader(input_image)\n", - " pre_transforms = self.pre_process(_reader)\n", - " post_transforms = self.post_process(pre_transforms, path.join(output_path, \"prediction_output\"))\n", - "\n", - " # Delegates inference and saving output to the built-in operator.\n", - " infer_operator = MonaiSegInferenceOperator(\n", - " (\n", - " 160,\n", - " 160,\n", - " 160,\n", - " ),\n", - " pre_transforms,\n", - " post_transforms,\n", - " )\n", - "\n", - " # Setting the keys used in the dictironary based transforms may change.\n", - " infer_operator.input_dataset_key = self._input_dataset_key\n", - " infer_operator.pred_dataset_key = self._pred_dataset_key\n", - "\n", - " # Now let the built-in operator handles the work with the I/O spec and execution context.\n", - " infer_operator.compute(op_input, op_output, context)\n", - "\n", - " def pre_process(self, img_reader) -> Compose:\n", - " \"\"\"Composes transforms for preprocessing input before predicting on a model.\"\"\"\n", - "\n", - " my_key = self._input_dataset_key\n", - " return Compose(\n", - " [\n", - " LoadImaged(keys=my_key, reader=img_reader),\n", - " EnsureChannelFirstd(keys=my_key),\n", - " Spacingd(keys=my_key, pixdim=[1.0, 1.0, 1.0], mode=[\"bilinear\"], align_corners=True),\n", - " ScaleIntensityRanged(keys=my_key, a_min=-57, a_max=164, b_min=0.0, b_max=1.0, clip=True),\n", - " CropForegroundd(keys=my_key, source_key=my_key),\n", - " ]\n", - " )\n", - "\n", - " def post_process(self, pre_transforms: Compose, out_dir: str = \"./prediction_output\") -> Compose:\n", - " \"\"\"Composes transforms for postprocessing the prediction results.\"\"\"\n", - "\n", - " pred_key = self._pred_dataset_key\n", - " return Compose(\n", - " [\n", - " Activationsd(keys=pred_key, softmax=True),\n", - " AsDiscreted(keys=pred_key, argmax=True),\n", - " Invertd(\n", - " keys=pred_key, transform=pre_transforms, orig_keys=self._input_dataset_key, nearest_interp=True\n", - " ),\n", - " SaveImaged(keys=pred_key, output_dir=out_dir, output_postfix=\"seg\", output_dtype=uint8, resample=False),\n", - " ]\n", - " )\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### app.py" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Writing my_app/app.py\n" - ] - } - ], - "source": [ - "%%writefile my_app/app.py\n", - "import logging\n", - "\n", - "from spleen_seg_operator import SpleenSegOperator\n", - "\n", - "from monai.deploy.core import Application, resource\n", - "from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator\n", - "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator\n", - "from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator\n", - "from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator\n", - "\n", - "@resource(cpu=1, gpu=1, memory=\"7Gi\")\n", - "class AISpleenSegApp(Application):\n", - " def __init__(self, *args, **kwargs):\n", - " super().__init__(*args, **kwargs)\n", - "\n", - " def compose(self):\n", - "\n", - " study_loader_op = DICOMDataLoaderOperator()\n", - " series_selector_op = DICOMSeriesSelectorOperator(Sample_Rules_Text)\n", - " series_to_vol_op = DICOMSeriesToVolumeOperator()\n", - " # Creates DICOM Seg writer with segment label name in a string list\n", - " dicom_seg_writer = DICOMSegmentationWriterOperator(seg_labels=[\"Spleen\"])\n", - " # Creates the model specific segmentation operator\n", - " spleen_seg_op = SpleenSegOperator()\n", - "\n", - " # Creates the DAG by link the operators\n", - " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", - " self.add_flow(series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", - " self.add_flow(series_to_vol_op, spleen_seg_op, {\"image\": \"image\"})\n", - " self.add_flow(series_selector_op, dicom_seg_writer, {\"study_selected_series_list\": \"study_selected_series_list\"})\n", - " self.add_flow(spleen_seg_op, dicom_seg_writer, {\"seg_image\": \"seg_image\"})\n", - "\n", - "# This is a sample series selection rule in JSON, simply selecting CT series.\n", - "# If the study has more than 1 CT series, then all of them will be selected.\n", - "# Please see more detail in DICOMSeriesSelectorOperator.\n", - "Sample_Rules_Text = \"\"\"\n", - "{\n", - " \"selections\": [\n", - " {\n", - " \"name\": \"CT Series\",\n", - " \"conditions\": {\n", - " \"StudyDescription\": \"(.*?)\",\n", - " \"Modality\": \"(?i)CT\",\n", - " \"SeriesDescription\": \"(.*?)\"\n", - " }\n", - " }\n", - " ]\n", - "}\n", - "\"\"\"\n", - "\n", - "if __name__ == \"__main__\":\n", - " # Creates the app and test it standalone. When running is this mode, please note the following:\n", - " # -i , for input DICOM CT series folder\n", - " # -o , for the output folder, default $PWD/output\n", - " # -m , for model file path\n", - " # e.g.\n", - " # python3 app.py -i input -m model.ts\n", - " #\n", - " AISpleenSegApp(do_run=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```python\n", - "if __name__ == \"__main__\":\n", - " AISpleenSegApp(do_run=True)\n", - "```\n", - "\n", - "The above lines are needed to execute the application code by using `python` interpreter.\n", - "\n", - "### \\_\\_main\\_\\_.py\n", - "\n", - "\\_\\_main\\_\\_.py is needed for MONAI Application Packager to detect the main application code (`app.py`) when the application is executed with the application folder path (e.g., `python simple_imaging_app`)." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Writing my_app/__main__.py\n" - ] - } - ], - "source": [ - "%%writefile my_app/__main__.py\n", - "from app import AISpleenSegApp\n", - "\n", - "if __name__ == \"__main__\":\n", - " AISpleenSegApp(do_run=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "__main__.py app.py spleen_seg_operator.py\n" - ] - } - ], - "source": [ - "!ls my_app" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this time, let's execute the app in the command line." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 5326, Operator ID: ba037402-5d1d-4133-944b-080397ff5ac5)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 5326, Operator ID: 9fe72901-dd8b-4574-8378-7a13fb927d92)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 5326, Operator ID: ea353df5-0177-4286-bd63-0e2456d9f4f0)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 5326, Operator ID: a46c7abc-1f90-4009-80d2-0804b23221db)\u001b[39m\n", - "file written: ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/Img_in_context/Img_in_context_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", - "Output Seg image pixel max value: 1\n", - "\u001b[34mDone performing execution of operator SpleenSegOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 5326, Operator ID: 7787e305-8bbd-4a7d-ad04-c4a46524358c)\u001b[39m\n", - "[2021-09-23 02:20:31,260] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2021-09-23 02:20:31,260] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2021-09-23 02:20:31,260] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2021-09-23 02:20:33,355] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2021-09-23 02:20:34,659] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2021-09-23 02:20:34,846] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", - "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", - "\u001b[39m\n" - ] - } - ], - "source": [ - "!python my_app -i dcm -o output -m model.ts" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Above command is same with the following command line:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 5905, Operator ID: 24d2620a-fdc0-46ce-b87b-f24311e63532)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 5905, Operator ID: 5e6f5d1c-6812-4b07-8090-ea05cec57f04)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 5905, Operator ID: 7b51ddcd-ad2c-4cca-ad95-2b9b39cfea8d)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 5905, Operator ID: 33da2642-2729-46ea-afe0-632e2a1ae5fc)\u001b[39m\n", - "file written: ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/prediction_output/Img_in_context/Img_in_context_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", - "Output Seg image pixel max value: 1\n", - "\u001b[34mDone performing execution of operator SpleenSegOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 5905, Operator ID: a90c464f-496a-4d2e-8d0a-b4a359f5f3ac)\u001b[39m\n", - "[2021-09-23 02:20:44,984] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2021-09-23 02:20:44,984] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2021-09-23 02:20:44,984] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2021-09-23 02:20:47,101] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2021-09-23 02:20:48,312] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file ~/src/monai-deploy-app-sdk/notebooks/tutorials/output/dicom_seg-DICOMSEG.dcm\n", - "[2021-09-23 02:20:48,513] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", - "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", - "\u001b[39m\n" - ] - } - ], - "source": [ - "!monai-deploy exec my_app -i dcm -o output -m model.ts" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dicom_seg-DICOMSEG.dcm\tprediction_output\n" - ] - } - ], - "source": [ - "!ls output" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Packaging app" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's package the app with [MONAI Application Packager](/developing_with_sdk/packaging_app)." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Building MONAI Application Package... Done\n", - "[2021-09-23 02:20:50,882] [INFO] (app_packager) - Successfully built my_app:latest\n" - ] - } - ], - "source": [ - "!monai-deploy package my_app --tag my_app:latest -m model.ts" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::{note}\n", - "Building a MONAI Application Package (Docker image) can take time. Use `-l DEBUG` option if you want to see the progress.\n", - ":::\n", - "\n", - "We can see that the Docker image is created." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "my_app latest 7176a8fc6df7 6 minutes ago 15.6GB\n" - ] - } - ], - "source": [ - "!docker image ls | grep my_app" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Executing packaged app locally\n", - "\n", - "The packaged app can be run locally through [MONAI Application Runner](/developing_with_sdk/executing_packaged_app_locally)." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Checking dependencies...\n", - "--> Verifying if \"docker\" is installed...\n", - "\n", - "--> Verifying if \"my_app:latest\" is available...\n", - "\n", - "Checking for MAP \"my_app:latest\" locally\n", - "\"my_app:latest\" found.\n", - "\n", - "Reading MONAI App Package manifest...\n", - " > export '/var/run/monai/export/' detected\n", - "--> Verifying if \"nvidia-docker\" is installed...\n", - "\n", - "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: 8ae35b26-50b3-45e1-8e31-f6ceeabd067e)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: 1145bd17-87e6-4ef2-aea4-193bf5b7de2b)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: 514e95ba-fc8b-4134-be5a-9f2f9fd77955)\u001b[39m\n", - "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator SpleenSegOperator\u001b[39m\n", - "\u001b[32mExecuting operator SpleenSegOperator \u001b[33m(Process ID: 1, Operator ID: fd562906-0cdc-43bf-82ec-1de79df8e155)\u001b[39m\n", - "file written: /var/monai/output/prediction_output/Img_in_context/Img_in_context_seg.nii.gz.\n", - "Output Seg image numpy array shaped: (515, 440, 440)\n", - "Output Seg image pixel max value: 1\n", - "\u001b[34mDone performing execution of operator SpleenSegOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", - "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: 90794f86-fedc-44e8-857a-0ab4cf22f8e4)\u001b[39m\n", - "[2021-09-23 09:21:12,891] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of DICOM instance datasets in the list: 515\n", - "[2021-09-23 09:21:12,891] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Number of slices in the numpy image: 515\n", - "[2021-09-23 09:21:12,891] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Labels of the segments: ['Spleen']\n", - "[2021-09-23 09:21:15,148] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Unique values in seg image: [0 1]\n", - "[2021-09-23 09:21:16,705] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - Saving output file /var/monai/output/dicom_seg-DICOMSEG.dcm\n", - "[2021-09-23 09:21:16,967] [INFO] (monai.deploy.operators.dicom_seg_writer_operator.DICOMSegWriter) - File saved.\n", - "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", - "\u001b[39m\n" - ] - } - ], - "source": [ - "# Copy DICOM files are in 'dcm' folder\n", - "\n", - "# Launch the app\n", - "!monai-deploy run my_app:latest dcm output" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dicom_seg-DICOMSEG.dcm\tprediction_output\n" - ] - } - ], - "source": [ - "!ls output" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def visualize_output(predicted_output: str):\n", - " import SimpleITK as sitk\n", - " reader = sitk.ImageSeriesReader()\n", - " dicom_names = reader.GetGDCMSeriesFileNames('./dcm')\n", - " reader.SetFileNames(dicom_names)\n", - " input_image = reader.Execute()\n", - "\n", - " writer = sitk.ImageFileWriter()\n", - " writer.SetFileName('input.nii.gz')\n", - " writer.Execute(input_image)\n", - "\n", - " import nibabel as nib\n", - " input_image_nib = nib.load('input.nii.gz')\n", - "\n", - " image_itk = nib.load(predicted_output)\n", - "\n", - " from nilearn import plotting, image\n", - " display = plotting.plot_anat(input_image_nib, cut_coords=(123, 162, 387), colorbar=False)\n", - " display.add_overlay(image_itk)\n", - "\n", - "visualize_output(\"output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exporting Application and Package Manifest Files\n", - "\n", - "Given a succesfully built MAP image, its manifest files can be extracted with all configured paramters. This can be done by running `docker run` with the image and making sure to map a local volume (ex. ./output) to `\"/var/run/monai/export/config/\"` within the contianer" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[?1h\u001b= > export '/var/run/monai/export/' detected\n" - ] - } - ], - "source": [ - "!mkdir ./export\n", - "!docker run -it -v \"$(pwd)/export/\":\"/var/run/monai/export/config/\" my_app:latest" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "After running, two `.json` files (application and package manifests) can be found inside\n", - "of the local directory volume mount" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "app.json pkg.json\n" - ] - } - ], - "source": [ - "!ls ./export/" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"api-version\": \"0.1.0\",\n", - " \"command\": \"python3 -u /opt/monai/app/app.py\",\n", - " \"environment\": {},\n", - " \"input\": {\n", - " \"formats\": [],\n", - " \"path\": \"input\"\n", - " },\n", - " \"output\": {\n", - " \"format\": {},\n", - " \"path\": \"output\"\n", - " },\n", - " \"sdk-version\": \"0.1.1\",\n", - " \"timeout\": 0,\n", - " \"version\": \"0.0.0\",\n", - " \"working-directory\": \"/var/monai/\"\n", - "}" - ] - } - ], - "source": [ - "!cat ./export/app.json" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"api-version\": \"0.1.0\",\n", - " \"application-root\": \"/var/monai/\",\n", - " \"models\": [\n", - " {\n", - " \"name\": \"model-54dd6cdaac290a0e800c0fa627cd60410bb2cea173ac8bb2f4816cc54ea88c90\",\n", - " \"path\": \"/opt/monai/models/model/model.ts\"\n", - " }\n", - " ],\n", - " \"resources\": {\n", - " \"cpu\": 1,\n", - " \"gpu\": 1,\n", - " \"memory\": \"7168Mi\"\n", - " },\n", - " \"sdk-version\": \"0.1.1\",\n", - " \"version\": \"0.0.0\"\n", - "}" - ] - } - ], - "source": [ - "!cat ./export/pkg.json" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Deploying MONAI Inference Service (MIS)\n", - "\n", - "With the MONAI application package image we built, we can now deploy it with the\n", - "[MONAI Inference Service](https://github.com/Project-MONAI/monai-deploy-app-server/blob/main/components/inference-service/README.md).\n", - "\n", - "This is a RESTful service which will allow other users to make inference requests\n", - "with our MAP using HTTP.\n", - "\n", - "We first need to clone the MIS repository and build the MIS container." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cloning into 'monai-deploy-app-server'...\n", - "remote: Enumerating objects: 274, done.\u001b[K\n", - "remote: Counting objects: 100% (274/274), done.\u001b[K\n", - "remote: Compressing objects: 100% (143/143), done.\u001b[K\n", - "remote: Total 274 (delta 127), reused 213 (delta 90), pack-reused 0\u001b[K\n", - "Receiving objects: 100% (274/274), 79.20 KiB | 705.00 KiB/s, done.\n", - "Resolving deltas: 100% (127/127), done.\n", - "~/src/monai-deploy-app-sdk/notebooks/tutorials/monai-deploy-app-server/components/inference-service\n", - "\n", - "Step 1/12 : FROM python:3.9-slim-buster\n", - " ---> edd87973afe0\n", - "Step 2/12 : LABEL \"base\"=\"python:3.9-slim-buster\"\n", - " ---> Using cache\n", - " ---> 74208e399b3d\n", - "Step 3/12 : ARG APTVER_CURL=7.64.0-4+deb10u2\n", - " ---> Using cache\n", - " ---> 86f5d84752a5\n", - "Step 4/12 : ARG APTVER_TRANSPORT_HTTPS=1.8.2.2\n", - " ---> Using cache\n", - " ---> 094aa1423e82\n", - "Step 5/12 : ARG APTVER_GNUPG2=2.2.12-1+deb10u1\n", - " ---> Using cache\n", - " ---> a6e28500ca8a\n", - "Step 6/12 : RUN apt-get update && apt-get install -y --no-install-recommends apt-transport-https=${APTVER_TRANSPORT_HTTPS} gnupg2=${APTVER_GNUPG2} curl=${APTVER_CURL} && apt-get update && apt-get install --no-install-recommends -y libgssapi-krb5-2 build-essential unixodbc-dev\n", - " ---> Using cache\n", - " ---> b07cf4a99e2f\n", - "Step 7/12 : RUN python -m pip install --upgrade pip\n", - " ---> Using cache\n", - " ---> 819e3a3d83f5\n", - "Step 8/12 : ADD ./requirements.txt /monai_inference/requirements.txt\n", - " ---> Using cache\n", - " ---> 52d6970c621d\n", - "Step 9/12 : RUN python -m pip install -r /monai_inference/requirements.txt\n", - " ---> Using cache\n", - " ---> 5f17816da8d0\n", - "Step 10/12 : ADD ./monaiinference /monai_inference/monaiinference\n", - " ---> Using cache\n", - " ---> 514993560936\n", - "Step 11/12 : ENV PYTHONPATH \"${PYTHONPATH}:/monai_inference/\"\n", - " ---> Using cache\n", - " ---> e7fa6a995039\n", - "Step 12/12 : ENTRYPOINT [\"/usr/local/bin/python\", \"/monai_inference/monaiinference/main.py\"]\n", - " ---> Using cache\n", - " ---> a6834eb5a23b\n", - "Successfully built a6834eb5a23b\n", - "Successfully tagged monai/inference-service:0.1\n", - "~/src/monai-deploy-app-sdk/notebooks/tutorials\n" - ] - } - ], - "source": [ - "!git clone https://github.com/Project-MONAI/monai-deploy-app-server.git\n", - "%cd monai-deploy-app-server/components/inference-service\n", - "!./build.sh\n", - "%cd -" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we need to acquire the MIS helm charts and provide them with information of our MAP" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloading...\n", - "From: https://drive.google.com/uc?id=12uNO1tyqZh1oFkZH41Osliey7TRm-BBG\n", - "To: ~/src/monai-deploy-app-sdk/notebooks/tutorials/charts.zip\n", - "100%|██████████████████████████████████████| 9.18k/9.18k [00:00<00:00, 10.9MB/s]\n", - "Archive: charts.zip\n", - " inflating: charts/templates/monaiinferenceservice-deployment.yaml \n", - " inflating: charts/templates/monaiinferenceservice-service.yaml \n", - " inflating: charts/templates/monaiinferenceservice-clusterrole.yaml \n", - " inflating: charts/templates/monaiinferenceservice-payload-volume.yaml \n", - " inflating: charts/templates/monaiinferenceservice-serviceaccount.yaml \n", - " inflating: charts/templates/monaiinferenceservice-clusterrolebinding.yaml \n", - " inflating: charts/templates/monaiinferenceservice-payload-volume-claim.yaml \n", - " inflating: charts/templates/_helpers.tpl \n", - " inflating: charts/Chart.yaml \n", - " inflating: charts/values.yaml \n" - ] - } - ], - "source": [ - "!gdown \"https://drive.google.com/uc?id=12uNO1tyqZh1oFkZH41Osliey7TRm-BBG\"\n", - "!unzip -o charts.zip" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Before starting MONAI Inference Service, a set of values must be specified within\n", - "`./charts/values.yaml` to configure the MIS instance with a MAP:\n", - "\n", - "| Parameter | Value Description |\n", - "| ----------- | ----------- |\n", - "| `images.monaiInferenceService` | MONAI Inference Service image name (`monai/inference-service`) |\n", - "| `images.monaiInferenceServiceTag` | MONAI Inference Service image tag (`0.1`) |\n", - "| `payloadService.hostVolumePath` | Path to a local directory which will serve as a shared volume for payloads between MIS and its pods |\n", - "| `map.urn` | Name:Tag of MAP image built with MONAI application packager |\n", - "| `map.entrypoint` | Application entrypoint which can obtained from `app.json` |\n", - "| `map.cpu` | Number of CPUs requested by application which can be obtained either from `pkg.json` OR from when we created app.py (check @resource decorator) |\n", - "| `map.memory` | Memory requested by application which can be obtained either from `pkg.json` OR from when we created app.py (check @resource decorator) |\n", - "| `map.gpu` | Number of GPUs requested by application which can be obtained either from `pkg.json` OR from when we created app.py (check @resource decorator) |\n", - "| `map.inputPath` | Input volume path within MAP container, can be derived by appending the `input.path` with the `working-directory` in `app.json` |\n", - "| `map.outputPath` | Output volume path within MAP container, can be derived by appending the `output.path` with the `working-directory` in `app.json` |\n", - "| `map.modelPath` | Model volume path within MAP container, can be derived using a `path` of an entry under `models` in `pkg.json`, and taking the sub-path where the `/model` folder resides (ex: `path: \"/opt/monai/models/model/model.ts\"` -> `\"/opt/monai/models\"`) |" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Overwriting charts/values.yaml\n" - ] - } - ], - "source": [ - "%%writefile charts/values.yaml\n", - "# Default values for MONAI Inference Service.\n", - "# This is a YAML-formatted file.\n", - "# Declare variables to be passed into your templates.\n", - "images:\n", - " monaiInferenceService: monai/inference-service\n", - " monaiInferenceServiceTag: 0.1\n", - "\n", - "########################################################\n", - "# Configuration Values for MONAI Inference Service #\n", - "########################################################\n", - "\n", - "server:\n", - " names:\n", - " clusterRole: monai-inference-service-cluster-role\n", - " clusterRoleBinding: monai-inference-service-binding\n", - " deployment: monai-inference-service\n", - " service: monai-inference-service\n", - " serviceAccount: monai-inference-service-service-account\n", - " storageClass: monai-inference-service-storage-class\n", - " volume: monai-inference-service-payload-volume\n", - " volumeClaim: monai-inference-service-payload-volume-claim\n", - "\n", - " serviceType: NodePort # Alternatively: ClusterIp if only in cluster clients will exist\n", - " nodePort: 32000\n", - " pullSecrets: []\n", - " targetPort: 8000\n", - "\n", - " # Configuration for the payload service in the MONAI Inference Service.\n", - " payloadService:\n", - " # The path on the node running MONAI Inference Service where a payload will be stored.\n", - " # The input directory and output directory that are created by MONAI Inference Service\n", - " # will exist as a directory inside this path. \n", - " # (e.g. \"/monai/payload/input\").\n", - " # Please make sure that this directory has read, write, and execute permissions for the user,\n", - " # group, and all other users `rwxrwxrwx`. Running `chmod 777 ` will achomplish this.\n", - " hostVolumePath: \"/monai/payload\"\n", - "\n", - " # MAP configuration.\n", - " map:\n", - " # MAP Container : to de deployed by MONAI Inference Service.\n", - " # For example, urn: \"ubuntu:latest\"\n", - " urn: \"my_app:latest\"\n", - "\n", - " # String value which defines entry point command for MAP Container.\n", - " # For example, entrypoint: \"/bin/echo Hello\"\n", - " entrypoint: \"python3 -u /opt/monai/app/app.py\"\n", - "\n", - " # Integer value which defines the CPU limit assigned to the MAP container.\n", - " # This value can not be less than 1.\n", - " cpu: 1\n", - "\n", - " # Integer value in Megabytes which defines the Memory limit assigned to the MAP container.\n", - " # This value can not be less than 256.\n", - " memory: 7168\n", - "\n", - " # Integer value which defines the number of GPUs assigned to the MAP container.\n", - " # This value can not be less than 0.\n", - " gpu: 1\n", - "\n", - " # Input directory path of MAP Container.\n", - " # An environment variable `MONAI_INPUTPATH` is mounted in the MAP container\n", - " # with it's value equal to the one provided for this field.\n", - " inputPath: \"/var/monai/input\"\n", - "\n", - " # Output directory path of MAP Container.\n", - " # An environment variable `MONAI_OUTPUTPATH` is mounted in the MAP container\n", - " # with it's value equal to the one provided for this field.\n", - " outputPath: \"/var/monai/output\"\n", - "\n", - " # Model directory path of MAP Container.\n", - " # For example, modelPath: /opt/monai/models.\n", - " # An environment variable `MONAI_MODELPATH` is mounted in the MAP container\n", - " # with it's value equal to the one provided for this field.\n", - " modelPath: \"/opt/monai/models\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we are ready to deploy our MIS instance:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NAME: monai\n", - "LAST DEPLOYED: Thu Nov 18 16:17:05 2021\n", - "NAMESPACE: default\n", - "STATUS: deployed\n", - "REVISION: 1\n", - "TEST SUITE: None\n" - ] - } - ], - "source": [ - "!helm install monai ./charts/" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NAME READY STATUS RESTARTS AGE\n", - "monai-inference-service-7fcc7f5b69-qmp9s 1/1 Running 0 76s\n" - ] - } - ], - "source": [ - "!kubectl get po" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Inferencing Segmentation AI with MIS\n", - "\n", - "With our MIS instance running as a kubernetes pod, we can now submit REST inferencing \n", - "requests to it\n", - "\n", - "We first need to compress our dicom files under `/dcm` into a compressed .zip as\n", - "MIS accepts that format" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "input.zip\n" - ] - } - ], - "source": [ - "!cd dcm; zip -rq ../input.zip *\n", - "!ls input.zip" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that we have our compressed .zip, we can now making an inferencing request to our\n", - "MIS instance using `curl`\n", - "\n", - "**Usage:**\n", - "```bash\n", - "curl -X 'POST' 'http://[CLUSTER-IP:8000 OR HOST-IP:32000]/upload/' \\\n", - " -H 'accept: application/json' \\\n", - " -H 'Content-Type: multipart/form-data' \\\n", - " -F 'file=@[PATH TO INPUT PAYLOAD ZIP];type=application/x-zip-compressed' \\\n", - " -o output.zip\n", - "```\n", - "\n", - "You can obtain the cluster IP of the MIS Kubernetes service by doing a `kubectl get svc`.\n", - "\n", - "For example,\n", - "```bash\n", - "user@hostname:~$ kubectl get svc\n", - "NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\n", - "kubernetes ClusterIP 10.96.0.1 443/TCP 8d\n", - "monai-inference-service NodePort 10.97.138.32 8000:32000/TCP 4s\n", - "```\n", - "Under the entry `monai-inference-service`, note the IP registered under the `CLUSTER-IP` section. This is the Cluster IP of the MIS." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " % Total % Received % Xferd Average Speed Time Time Time Current\n", - " Dload Upload Total Spent Left Speed\n", - "100 86.6M 100 87283 100 86.5M 3185 3233k 0:00:27 0:00:27 --:--:-- 18523\n" - ] - } - ], - "source": [ - "!curl -X 'POST' 'http://10.108.206.27:8000/upload/' \\\n", - " -H 'accept: application/json' \\\n", - " -H 'Content-Type: multipart/form-data' \\\n", - " -F 'file=@input.zip;type=application/x-zip-compressed' \\\n", - " -o output.zip" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Archive: output.zip\n", - " inflating: output/dicom_seg-DICOMSEG.dcm \n", - " inflating: output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz \n" - ] - } - ], - "source": [ - "!unzip -o output.zip" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "~/.local/lib/python3.8/site-packages/nilearn/datasets/__init__.py:93: FutureWarning: Fetchers from the nilearn.datasets module will be updated in version 0.9 to return python strings instead of bytes and Pandas dataframes instead of Numpy arrays.\n", - " warn(\"Fetchers from the nilearn.datasets module will be \"\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "visualize_output(\"output/prediction_output/1.2.826.0.1.3680043.2.1125.1/1.2.826.0.1.3680043.2.1125.1_seg.nii.gz\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Uninstalling MONAI Inference Service**" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "release \"monai\" uninstalled\n" - ] - } - ], - "source": [ - "!helm uninstall monai" + "This tutorial has been deprecated as the MIS itself has been. Please use [MONAI Deploy Express](https://github.com/Project-MONAI/monai-deploy/tags) for hosting MONAI Application Packages in non-production environment.\n" ] } ], @@ -2109,7 +29,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.8.10" } }, "nbformat": 4, From f32441d9bd9f665125e9495b95e085ef47bd419f Mon Sep 17 00:00:00 2001 From: Alvin Ihsani Date: Tue, 25 Oct 2022 17:01:58 -0400 Subject: [PATCH 031/216] Fix app requirements to working version (#380) Co-authored-by: Alvin Ihsani Signed-off-by: Simone Bendazzoli --- integrations/nuance_pin/app/inference.py | 2 ++ integrations/nuance_pin/requirements.txt | 2 +- setup.cfg | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/integrations/nuance_pin/app/inference.py b/integrations/nuance_pin/app/inference.py index 75f24c01..b2d8e6e4 100644 --- a/integrations/nuance_pin/app/inference.py +++ b/integrations/nuance_pin/app/inference.py @@ -37,6 +37,7 @@ ScaleIntensityRanged, Spacingd, ToDeviced, + ToTensord, ) sliding_window_inference, _ = optional_import("monai.inferers", name="sliding_window_inference") @@ -177,6 +178,7 @@ def pre_process(self, img_reader) -> Compose: keys=[image_key, f"{image_key}_meta_dict"], names=[orig_image_key, f"{orig_image_key}_meta_dict"], ), + ToTensord(keys=image_key), ToDeviced(keys=image_key, device=self.device), EnsureChannelFirstd(keys=image_key), Spacingd(keys=image_key, pixdim=(0.703125, 0.703125, 1.25)), diff --git a/integrations/nuance_pin/requirements.txt b/integrations/nuance_pin/requirements.txt index 835ccdc1..caa140c7 100644 --- a/integrations/nuance_pin/requirements.txt +++ b/integrations/nuance_pin/requirements.txt @@ -1,4 +1,4 @@ -monai-deploy-app-sdk>=0.4.0 +monai-deploy-app-sdk==0.4.0 monai[all]==0.9.0 pydicom==2.3.0 highdicom==0.19.0 diff --git a/setup.cfg b/setup.cfg index 3ffe071f..0e86f83d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -43,7 +43,8 @@ ignore = E203,E305,E402,E501,E721,E741,F821,F841,F999,W503,W504,C408,E302,W291,E303, # N812 lowercase 'torch.nn.functional' imported as non lowercase 'F' N812, - B024 #abstract base class, but it has no abstract methods + B024, #abstract base class, but it has no abstract methods + B027 #method in base class with no implementation per_file_ignores = __init__.py: F401 # Allow using camel case for variable/argument names for the sake of readability. From 2abdbb2ca61ab54058da1cfedb4bf4596ba32df3 Mon Sep 17 00:00:00 2001 From: Iain Henderson Date: Tue, 25 Oct 2022 18:07:35 -0400 Subject: [PATCH 032/216] Merge Nuance Updates (#377) Signed-off-by: Iain Henderson Co-authored-by: iain_nuance Co-authored-by: Iain Henderson <111384325+nuance-iain@users.noreply.github.com> Signed-off-by: Simone Bendazzoli --- .gitignore | 123 +++++++++++++++++- integrations/nuance_pin/Dockerfile | 72 ++++++---- integrations/nuance_pin/app/lung_nodule.py | 14 +- .../nuance_pin/app/post_inference_ops.py | 61 ++++++--- integrations/nuance_pin/app_wrapper.py | 41 +++--- integrations/nuance_pin/lib/.gitkeep | 0 6 files changed, 234 insertions(+), 77 deletions(-) create mode 100644 integrations/nuance_pin/lib/.gitkeep diff --git a/.gitignore b/.gitignore index 18334cbb..93ef740a 100644 --- a/.gitignore +++ b/.gitignore @@ -50,6 +50,7 @@ coverage.xml *.py,cover .hypothesis/ .pytest_cache/ +cover/ # Translations *.mo @@ -72,6 +73,7 @@ instance/ docs/_build/ # PyBuilder +.pybuilder/ target/ # Jupyter Notebook @@ -82,6 +84,8 @@ profile_default/ ipython_config.py # pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: .python-version # pipenv @@ -91,7 +95,22 @@ ipython_config.py # install all needed dependencies. #Pipfile.lock -# PEP 582; used by e.g. github.com/David-OConnor/pyflow +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm __pypackages__/ # Celery stuff @@ -140,3 +159,105 @@ _autosummary # model files *.ts + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix diff --git a/integrations/nuance_pin/Dockerfile b/integrations/nuance_pin/Dockerfile index fe22c601..48cee468 100644 --- a/integrations/nuance_pin/Dockerfile +++ b/integrations/nuance_pin/Dockerfile @@ -1,3 +1,25 @@ +FROM nvcr.io/nvidia/pytorch:21.07-py3 AS foundation + +ARG EXTRA_PYTHON_PACKAGES + +RUN apt-get -y update && \ + apt-get -y install python3-distutils python3-pip python3-venv && \ + python3 -m pip install --no-cache-dir --upgrade pip && \ + python3 -m pip install --no-cache-dir --ignore-installed setuptools + +# Create a Virtual Environment to limit the size of the application container +RUN python3 -m venv /opt/venv +ENV PATH="/opt/venv/bin:$PATH" +RUN python3 -m pip install --upgrade pip + +# Copy the ai_service wheel, this is separate from requirements.txt to help with layer caching for repeated builds +COPY lib/ai_service-*-py3-none-any.whl /tmp/ +RUN python3 -m pip install --no-cache-dir /tmp/ai_service-*-py3-none-any.whl + +COPY requirements.txt /tmp/ +# Add any other python packages your AI Service requires +RUN python3 -m pip install --no-cache-dir ${EXTRA_PYTHON_PACKAGES} -r /tmp/requirements.txt + FROM nvcr.io/nvidia/pytorch:21.07-py3 AS application ARG PARTNER_NAME @@ -5,51 +27,47 @@ ARG SERVICE_NAME ARG VERSION ARG MONAI_APP_MODULE ARG MODEL_PATH -ARG EXTRA_PYTHON_PACKAGES ENV TZ=Etc/UTC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # python3-gdcm or python-gdcm is required for decompression RUN apt-get -y update && \ - apt-get -y install --no-install-recommends python3-distutils python3-gdcm && \ - # apt-get -y install python3.7 && \ + apt-get -y install --no-install-recommends python3-gdcm && \ apt-get autoclean && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* -ENV DEBUG=YES -ENV KEEP_FILES=YES - -# make sure all messages reach the console -ENV PYTHONUNBUFFERED=1 - -# copy MONAI app files -COPY . /app/. -WORKDIR /app - # copy model file to model folder RUN wget -q https://github.com/Project-MONAI/model-zoo/releases/download/hosting_storage_v1/lung_nodule_ct_detection_v0.2.0.zip && \ unzip lung_nodule_ct_detection_v0.2.0.zip -d /tmp/ && \ - cp /tmp/lung_nodule_ct_detection/models/model.ts model/. && \ + mkdir -p /app/model && \ + cp /tmp/lung_nodule_ct_detection/models/model.ts /app/model/ && \ rm -rf /tmp/lung_nodule_ct_detection && \ rm lung_nodule_ct_detection_v0.2.0.zip # non-root aiserviceuser in group aiserviceuser with UserID and GroupID as 20225 -RUN groupadd -g 20225 -r aiserviceuser && useradd -u 20225 -r -g aiserviceuser aiserviceuser && chown -R aiserviceuser:aiserviceuser /app && \ - chown -R aiserviceuser:aiserviceuser /var +RUN groupadd -g 20225 -r aiserviceuser && \ + useradd -u 20225 -r -g aiserviceuser aiserviceuser && \ + chown -R aiserviceuser:aiserviceuser /app /var USER aiserviceuser:aiserviceuser -ENV VIRTUAL_ENV=.venv -RUN python3 -m venv $VIRTUAL_ENV -ENV PATH="$VIRTUAL_ENV/bin:$PATH" +# Enable Matplotlib cache folder +RUN mkdir -p /app/.config/matplotlib +ENV MPLCONFIGDIR=/app/.config/matplotlib + +# Copy the virtual environment from the foundation image +ENV VIRTUAL_ENV=/app/venv +COPY --from=foundation --chown=aiserviceuser:aiserviceuser /opt/venv "${VIRTUAL_ENV}" +ENV PATH="${VIRTUAL_ENV}/bin:${PATH}" + +# make sure all messages reach the console +ENV PYTHONUNBUFFERED=1 -RUN python -m pip install --upgrade pip && \ - python -m pip install --upgrade --no-cache-dir ${EXTRA_PYTHON_PACKAGES} -r requirements.txt && \ - python -m pip install --upgrade --no-cache-dir lib/ai_service-*-py3-none-any.whl && \ - pip install --upgrade numpy && \ - rm -rf lib && \ - rm requirements.txt +# copy MONAI app files +COPY --chown=aiserviceuser:aiserviceuser app_wrapper.py /app/ +COPY --chown=aiserviceuser:aiserviceuser app/* /app/app/ +WORKDIR /app ENV AI_PARTNER_NAME ${PARTNER_NAME} ENV AI_SVC_NAME ${SERVICE_NAME} @@ -58,4 +76,8 @@ ENV AI_MODEL_PATH ${MODEL_PATH} ENV MONAI_APP_CLASSPATH ${MONAI_APP_MODULE} ENV PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python + +ENV DEBUG=NO +ENV KEEP_FILES=NO + CMD ["python", "app_wrapper.py"] diff --git a/integrations/nuance_pin/app/lung_nodule.py b/integrations/nuance_pin/app/lung_nodule.py index 67f36ef5..57e09a5b 100644 --- a/integrations/nuance_pin/app/lung_nodule.py +++ b/integrations/nuance_pin/app/lung_nodule.py @@ -10,8 +10,9 @@ # limitations under the License. import logging -from typing import Callable +from typing import Optional +from ai_service import AiJobProcessor from app.inference import LungNoduleInferenceOperator from app.post_inference_ops import CreatePINDiagnosticsReportOp, GenerateGSPSOp @@ -24,11 +25,10 @@ @resource(cpu=1, gpu=1, memory="7Gi") # The monai pkg is not required by this class, instead by the included operators. class LungNoduleDetectionApp(Application): - def __init__(self, upload_document: Callable, upload_gsps: Callable, *args, **kwargs): + def __init__(self, pin_processor: Optional[AiJobProcessor] = None, *args, **kwargs): """Creates an application instance.""" self._logger = logging.getLogger("{}.{}".format(__name__, type(self).__name__)) - self.upload_document = upload_document - self.upload_gsps = upload_gsps + self.pin_processor = pin_processor super().__init__(*args, **kwargs) def run(self, *args, **kwargs): @@ -60,8 +60,8 @@ def compose(self): series_selector_op = DICOMSeriesSelectorOperator(dicom_selection_rules) series_to_vol_op = DICOMSeriesToVolumeOperator() detection_op = LungNoduleInferenceOperator() - gsps_op = GenerateGSPSOp(upload_gsps_fn=self.upload_gsps) - pin_report_op = CreatePINDiagnosticsReportOp(upload_doc_fn=self.upload_document) + gsps_op = GenerateGSPSOp(pin_processor=self.pin_processor) + pin_report_op = CreatePINDiagnosticsReportOp(pin_processor=self.pin_processor) self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) self.add_flow( @@ -87,4 +87,4 @@ def compose(self): # monai-deploy exec app.py -i input -m model/model.ts # logging.basicConfig(level=logging.DEBUG) - app_instance = LungNoduleDetectionApp(lambda x: x, lambda x: x, do_run=True) + app_instance = LungNoduleDetectionApp(do_run=True) diff --git a/integrations/nuance_pin/app/post_inference_ops.py b/integrations/nuance_pin/app/post_inference_ops.py index 17534511..2a0d78a2 100644 --- a/integrations/nuance_pin/app/post_inference_ops.py +++ b/integrations/nuance_pin/app/post_inference_ops.py @@ -12,11 +12,12 @@ import logging import os from random import randint -from typing import Callable, List +from typing import List, Optional import diagnostic_report as dr import highdicom as hd import numpy as np +from ai_service import AiJobProcessor from ai_service.utility import JSON_MIME_TYPE from app.inference import DetectionResult, DetectionResultList @@ -29,10 +30,10 @@ @md.input("detection_predictions", DetectionResultList, IOType.IN_MEMORY) @md.output("gsps_files", DataPath, IOType.DISK) class GenerateGSPSOp(Operator): - def __init__(self, upload_gsps_fn: Callable, *args, **kwargs): + def __init__(self, pin_processor: Optional[AiJobProcessor], *args, **kwargs): super().__init__(*args, **kwargs) self.logger = logging.getLogger("{}.{}".format(__name__, type(self).__name__)) - self.upload_gsps = upload_gsps_fn + self.pin_processor = pin_processor def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): @@ -141,21 +142,22 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe gsps_filename = os.path.join(output_path, "gsps.dcm") gsps.save_as(gsps_filename) - self.upload_gsps( - file=gsps_filename, - document_detail="MONAI Lung Nodule Detection v0.2.0", - series_uid=series_uid, - ) + if self.pin_processor is not None: + self.pin_processor.upload_gsps_dicom( + file=gsps_filename, + document_detail="MONAI Lung Nodule Detection v0.2.0", + series_uid=series_uid, + ) @md.input("original_dicom", List[StudySelectedSeries], IOType.IN_MEMORY) @md.input("detection_predictions", DetectionResultList, IOType.IN_MEMORY) @md.output("pin_report", DataPath, IOType.DISK) class CreatePINDiagnosticsReportOp(Operator): - def __init__(self, upload_doc_fn: Callable, *args, **kwargs): + def __init__(self, pin_processor: Optional[AiJobProcessor], *args, **kwargs): super().__init__(*args, **kwargs) self.logger = logging.getLogger("{}.{}".format(__name__, type(self).__name__)) - self.upload_doc = upload_doc_fn + self.pin_processor = pin_processor def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): @@ -200,19 +202,36 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe self.logger.info(f"Slice: {[box_data[2], box_data[5]]}, Instances: {affected_slice_idx}") for dcm_img in ref_images: - report.add_observation( + box_score_percent = np.round(box_score * 100, decimals=2) + message = f"Lung nodule present with probability {box_score_percent}%" + observation = report.add_observation( + body_part_code="RID1301", + body_part_text="lung", + dcm=dcm_img, derived_from=report.study, + note=message, # is box_score associated with a specific image? observation_code="RID50149", - observation_text="Pulmonary nodule", - note=f"Lung nodule present with probability {box_score:.2f}", - dcm=dcm_img, observation_system="http://nuancepowerscribe.com/saf", + observation_text="Pulmonary nodule", ) + observation.set_probability(box_score_percent) # probability's unit of measure is percent + observation.set_summary(message) + self.logger.info(message) + if box_score_percent > 80: + observation.set_present_qualifier() + elif box_score_percent > 15: + observation.set_indeterminate_qualifier() + else: + observation.set_absent_qualifier() + + if self.pin_processor is not None: + report_path = os.path.join( + output_path, f"{self.pin_processor.partner_name}-{self.pin_processor.service_name}-FHIR.json" + ) + report.write_to_file(report_path) - report.write_to_file(os.path.join(output_path, "diagnostic_report.json")) - - self.upload_doc( - file=os.path.join(output_path, "diagnostic_report.json"), - content_type=JSON_MIME_TYPE, - series_uid=selected_series.series.SeriesInstanceUID, - ) + self.pin_processor.upload_document( + file=report_path, + content_type=JSON_MIME_TYPE, + series_uid=selected_series.series.SeriesInstanceUID, + ) diff --git a/integrations/nuance_pin/app_wrapper.py b/integrations/nuance_pin/app_wrapper.py index f2128d33..c9601812 100644 --- a/integrations/nuance_pin/app_wrapper.py +++ b/integrations/nuance_pin/app_wrapper.py @@ -28,6 +28,9 @@ It meets all of the necessary requirements, but performs trivial actions. """ +import os +from importlib import import_module + # Copyright 2022 MONAI Consortium # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -38,9 +41,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -import os -from importlib import import_module +from pathlib import Path from typing import List import pydicom @@ -54,7 +55,9 @@ class MONAIAppWrapper(AiJobProcessor): service_name = os.environ["AI_SVC_NAME"] service_version = os.environ["AI_SVC_VERSION"] - monai_app_module = os.environ["MONAI_APP_CLASSPATH"] + monai_app_instance = None + monai_app_module = os.getenv("MONAI_APP_CLASSPATH", "") + model_path = Path(os.getenv("AI_MODEL_PATH", "/app/model/model.ts")) def filter_image(self, image: pydicom.Dataset) -> bool: return True @@ -64,14 +67,14 @@ def select_series(self, image_series_list: List[Series]) -> List[Series]: @classmethod def initialize_class(cls): - cls.model_path = os.getenv("AI_MODEL_PATH", "/app/model/model.ts") - if not os.path.exists(cls.model_path): + if not cls.model_path.exists(): raise FileNotFoundError(f"Could not find model file in path `{cls.model_path}`") cls.logger.info(f"Model path: {cls.model_path}") - monai_app_class_module = cls.monai_app_module.rsplit(".", 1)[0] - monai_app_class_name = cls.monai_app_module.rsplit(".", 1)[1] - if not cls.monai_app_module: + if cls.monai_app_module: + monai_app_class_module = cls.monai_app_module.rsplit(".", 1)[0] + monai_app_class_name = cls.monai_app_module.rsplit(".", 1)[1] + else: raise ValueError("MONAI App to be run has not been specified in `MONAI_APP_CLASSPATH` environment variable") monai_app_class = getattr(import_module(monai_app_class_module), monai_app_class_name) @@ -81,14 +84,8 @@ def initialize_class(cls): def process_study(self): self.logger.info("Starting Processing") self.logger.info(f"{len(self.ai_job.prior_studies)} images in prior studies") - - if not hasattr(MONAIAppWrapper, "input_path") or self.input_path is None: - self.input_path = self.ai_job.image_folder - self.logger.info(f"Input path: {self.input_path}") - - if not hasattr(MONAIAppWrapper, "output_path") or self.output_path is None: - self.output_path = self.ai_job.output_folder - self.logger.info(f"Output path: {self.output_path}") + self.logger.info(f"Input path: {self.ai_job.image_folder}") + self.logger.info(f"Output path: {self.ai_job.output_folder}") # create the inference app instance to run on this subprocess self.logger.info("Running MONAI App") @@ -97,24 +94,22 @@ def process_study(self): monai_app_class_module = self.monai_app_module.rsplit(".", 1)[0] monai_app_class_name = self.monai_app_module.rsplit(".", 1)[1] monai_app_class = getattr(import_module(monai_app_class_module), monai_app_class_name) - self.monai_app_instance = monai_app_class( - do_run=False, upload_document=self.upload_document, upload_gsps=self.upload_gsps_dicom - ) + self.monai_app_instance = monai_app_class(pin_processor=self, do_run=False) self.logger.info(f"MONAI App Info: {self.monai_app_instance.get_package_info()}") self.logger.info(f"MONAI working directory: {self.ai_job.folder}") self.monai_app_instance.run( log_level=self.logger.level, - input=self.input_path, - output=self.output_path, + input=self.ai_job.image_folder, + output=self.ai_job.output_folder, model=self.model_path, workdir=self.ai_job.folder, ) self.logger.info("MONAI App complete") - self.set_transaction_status(reason=ResultStatus.ANALYSIS_COMPLETE) + self.set_transaction_status(status=ResultStatus.ANALYSIS_COMPLETE) if __name__ == "__main__": diff --git a/integrations/nuance_pin/lib/.gitkeep b/integrations/nuance_pin/lib/.gitkeep new file mode 100644 index 00000000..e69de29b From 52f695c8897e45d80dccc90e3f9b4b986026a549 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Wed, 26 Oct 2022 17:37:55 -0700 Subject: [PATCH 033/216] Add Pancreas Seg app, multi-model app, and Jupyter Notebook tutorial (#315) * Add the WIP multi-model example Signed-off-by: mmelqin * Quiet the style checking error Signed-off-by: mmelqin * Solved the issue with Pancreas Seg bundle by upping torch version. Now the whole app works with both Spleen and Pancreas bundles Signed-off-by: mmelqin * Update app and change readme file type Signed-off-by: mmelqin * Formatting change Signed-off-by: mmelqin * Add more comments and to trigger a Github build for testing formatting check. Signed-off-by: mmelqin * Reset to 0.5 main rebase, and re-add new Pancreas and changes Signed-off-by: M Q * Correct typo in comments Signed-off-by: M Q * Change the name of model in readme Signed-off-by: M Q * Add Jupyter notebook for multi_model tutorial Signed-off-by: M Q * Remove commented out code line Signed-off-by: M Q Signed-off-by: mmelqin Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- .../source/getting_started/tutorials/index.md | 1 + .../tutorials/multi_model_app.md | 71 + examples/apps/ai_multi_ai_app/__init__.py | 7 + examples/apps/ai_multi_ai_app/__main__.py | 4 + examples/apps/ai_multi_ai_app/app.py | 223 ++ examples/apps/ai_multi_ai_app/readme.md | 26 + examples/apps/ai_pancrea_seg_app/__init__.py | 7 + examples/apps/ai_pancrea_seg_app/__main__.py | 4 + examples/apps/ai_pancrea_seg_app/app.py | 144 ++ examples/apps/ai_spleen_seg_app/app.py | 2 - notebooks/tutorials/06_monai_bundle_app.ipynb | 2 +- notebooks/tutorials/07_multi_model_app.ipynb | 2170 +++++++++++++++++ 12 files changed, 2658 insertions(+), 3 deletions(-) create mode 100644 docs/source/getting_started/tutorials/multi_model_app.md create mode 100644 examples/apps/ai_multi_ai_app/__init__.py create mode 100644 examples/apps/ai_multi_ai_app/__main__.py create mode 100644 examples/apps/ai_multi_ai_app/app.py create mode 100644 examples/apps/ai_multi_ai_app/readme.md create mode 100644 examples/apps/ai_pancrea_seg_app/__init__.py create mode 100644 examples/apps/ai_pancrea_seg_app/__main__.py create mode 100644 examples/apps/ai_pancrea_seg_app/app.py create mode 100644 notebooks/tutorials/07_multi_model_app.ipynb diff --git a/docs/source/getting_started/tutorials/index.md b/docs/source/getting_started/tutorials/index.md index 8617759b..3a1d8395 100644 --- a/docs/source/getting_started/tutorials/index.md +++ b/docs/source/getting_started/tutorials/index.md @@ -9,4 +9,5 @@ mednist_app monai_bundle_app segmentation_app segmentation_clara-viz_app +multi_model_app ``` diff --git a/docs/source/getting_started/tutorials/multi_model_app.md b/docs/source/getting_started/tutorials/multi_model_app.md new file mode 100644 index 00000000..44b2bcbd --- /dev/null +++ b/docs/source/getting_started/tutorials/multi_model_app.md @@ -0,0 +1,71 @@ +# Creating a Segmentation App Consuming a MONAI Bundle + +This tutorial shows how to create an inference application with multiple models, focusing on model files organization, inferring with named model in the application, and packaging. + +The models used in this example are trained with MONAI, and are packaged in the [MONAI Bundle](https://docs.monai.io/en/latest/bundle_intro.html) format. + +## Setup + +```bash +# Create a virtual environment with Python 3.8. +# Skip if you are already in a virtual environment. +# (JupyterLab dropped its support for Python 3.6 since 2021-12-23. +# See https://github.com/jupyterlab/jupyterlab/pull/11740) +conda create -n monai python=3.8 pytorch torchvision jupyterlab cudatoolkit=11.1 -c pytorch -c conda-forge +conda activate monai + +# Launch JupyterLab if you want to work on Jupyter Notebook +jupyter-lab +``` + +## Executing from Jupyter Notebook + +```{toctree} +:maxdepth: 4 + +../../notebooks/tutorials/07_multi_model_app.ipynb +``` + +```{raw} html +

+ + Download 07_multi_model_app.ipynb + +

+``` + +## Executing from Shell + +```bash +# Clone the github project (the latest version of main branch only) +git clone --branch main --depth 1 https://github.com/Project-MONAI/monai-deploy-app-sdk.git + +cd monai-deploy-app-sdk + +# Install monai-deploy-app-sdk package +pip install --upgrade monai-deploy-app-sdk + +# Download the zip file containing both the model and test data +pip install gdown +gdown https://drive.google.com/uc?id=1llJ4NGNTjY187RLX4MtlmHYhfGxBNWmd + +# After downloading it using gdown, unzip the zip file saved by gdown +unzip -o ai_multi_model_bundle_data.zip + +# Install necessary packages from the app; note that numpy-stl and trimesh are only +# needed if the application uses the STL Conversion Operator +pip install monai torch pydicom highdicom SimpleITK Pillow nibabel scikit-image numpy-stl trimesh + +# Local execution of the app directly or using MONAI Deploy CLI +python examples/apps/examples/apps/ai_multi_ai_app/app.py -i dcm/ -o output -m multip_models +# or alternatively, +monai-deploy exec ../examples/apps/examples/apps/ai_multi_ai_app/app.py -i dcm/ -o output -m multip_models + +# Package app (creating MAP docker image) using `-l DEBUG` option to see progress. +# This assumes that nvidia docker is installed in the local machine. +# Please see https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker to install nvidia-docker2. +monai-deploy package -b nvcr.io/nvidia/pytorch:22.08-py3 examples/apps/ai_multi_ai_app --tag multi_model_app:latest --model multi_models -l DEBUG + +# Run the app with docker image and input file locally +monai-deploy run multi_model_app:latest dcm/ output +``` diff --git a/examples/apps/ai_multi_ai_app/__init__.py b/examples/apps/ai_multi_ai_app/__init__.py new file mode 100644 index 00000000..521cb31b --- /dev/null +++ b/examples/apps/ai_multi_ai_app/__init__.py @@ -0,0 +1,7 @@ +import os +import sys + +_current_dir = os.path.abspath(os.path.dirname(__file__)) +if sys.path and os.path.abspath(sys.path[0]) != _current_dir: + sys.path.insert(0, _current_dir) +del _current_dir diff --git a/examples/apps/ai_multi_ai_app/__main__.py b/examples/apps/ai_multi_ai_app/__main__.py new file mode 100644 index 00000000..412a8ca1 --- /dev/null +++ b/examples/apps/ai_multi_ai_app/__main__.py @@ -0,0 +1,4 @@ +from app import App + +if __name__ == "__main__": + App(do_run=True) diff --git a/examples/apps/ai_multi_ai_app/app.py b/examples/apps/ai_multi_ai_app/app.py new file mode 100644 index 00000000..e6ea0a7e --- /dev/null +++ b/examples/apps/ai_multi_ai_app/app.py @@ -0,0 +1,223 @@ +# Copyright 2021-2022 MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging + +# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package. +from pydicom.sr.codedict import codes + +import monai.deploy.core as md +from monai.deploy.core import Application, resource +from monai.deploy.core.domain import Image +from monai.deploy.core.io_type import IOType +from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator +from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription +from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator +from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator +from monai.deploy.operators.monai_bundle_inference_operator import ( + BundleConfigNames, + IOMapping, + MonaiBundleInferenceOperator, +) + + +@resource(cpu=1, gpu=1, memory="7Gi") +# Enforcing torch>=1.12.0 because one of the Bundles/TorchScripts, Pancreas CT Seg, was created +# with this version, and would fail to jit.load with lower version of torch. +# The Bundle Inference Operator as of now only requires torch>=1.10.2, and does not yet dynamically +# parse the MONAI bundle to get the required pip package or ver on initialization, hence it does not set +# its own @env decorator accordingly when the app is being packaged into a MONAI Package. +@md.env(pip_packages=["torch>=1.12.0"]) +# pip_packages can be a string that is a path(str) to requirements.txt file or a list of packages. +# The monai pkg is not required by this class, instead by the included operators. +class App(Application): + """This example demonstrates how to create a multi-model/multi-AI application. + + The important steps are: + 1. Place the model TorchScripts in a defined folder structure, see below for details + 2. Pass the model name to the inference operator instance in the app + 3. Connect the input to and output from the inference operators, as required by the app + + Required Model Folder Structure: + 1. The model TorchScripts, be it MONAI Bundle compliant or not, must be placed in + a parent folder, whose path is used as the path to the model(s) on app execution + 2. Each TorchScript file needs to be in a sub-folder, whose name is the model name + + An example is shown below, where the `parent_foler` name can be the app's own choosing, and + the sub-folder names become model names, `pancreas_ct_dints` and `spleen_model`, respectively. + + + ├── pancreas_ct_dints + │ └── model.ts + └── spleen_ct + └── model.ts + + Note: + 1. The TorchScript files of MONAI Bundles can be downloaded from MONAI Model Zoo, at + https://github.com/Project-MONAI/model-zoo/tree/dev/models + 2. The input DICOM instances are from a DICOM Series of CT Abdomen, similar to the ones + used in the Spleen Segmentation example + 3. This example is purely for technical demonstration, not for clinical use + """ + + def __init__(self, *args, **kwargs): + """Creates an application instance.""" + self._logger = logging.getLogger("{}.{}".format(__name__, type(self).__name__)) + super().__init__(*args, **kwargs) + + def run(self, *args, **kwargs): + # This method calls the base class to run. Can be omitted if simply calling through. + self._logger.info(f"Begin {self.run.__name__}") + super().run(*args, **kwargs) + self._logger.info(f"End {self.run.__name__}") + + def compose(self): + """Creates the app specific operators and chain them up in the processing DAG.""" + + logging.info(f"Begin {self.compose.__name__}") + + # Create the custom operator(s) as well as SDK built-in operator(s). + study_loader_op = DICOMDataLoaderOperator() + series_selector_op = DICOMSeriesSelectorOperator(Sample_Rules_Text) + series_to_vol_op = DICOMSeriesToVolumeOperator() + + # Create the inference operator that supports MONAI Bundle and automates the inference. + # The IOMapping labels match the input and prediction keys in the pre and post processing. + # The model_name is optional when the app has only one model. + # The bundle_path argument optionally can be set to an accessible bundle file path in the dev + # environment, so when the app is packaged into a MAP, the operator can complete the bundle parsing + # during init to provide the optional packages info, parsed from the bundle, to the packager + # for it to install the packages in the MAP docker image. + # Setting output IOType to DISK only works only for leaf operators, not the case in this example. + # When multiple models/bundles are supported, create an inference operator for each. + # + # Pertinent MONAI Bundle: + # https://github.com/Project-MONAI/model-zoo/tree/dev/models/spleen_ct_segmentation, v0.3.2 + # https://github.com/Project-MONAI/model-zoo/tree/dev/models/pancreas_ct_dints_segmentation, v0.3 + + config_names = BundleConfigNames(config_names=["inference"]) # Same as the default + + # This is the inference operator for the spleen_model bundle. Note the model name. + bundle_spleen_seg_op = MonaiBundleInferenceOperator( + input_mapping=[IOMapping("image", Image, IOType.IN_MEMORY)], + output_mapping=[IOMapping("pred", Image, IOType.IN_MEMORY)], + bundle_config_names=config_names, + model_name="spleen_ct", + ) + + # This is the inference operator for the pancreas_ct_dints bundle. Note the model name. + bundle_pancreas_seg_op = MonaiBundleInferenceOperator( + input_mapping=[IOMapping("image", Image, IOType.IN_MEMORY)], + output_mapping=[IOMapping("pred", Image, IOType.IN_MEMORY)], + model_name="pancreas_ct_dints", + ) + + # Create DICOM Seg writer providing the required segment description for each segment with + # the actual algorithm and the pertinent organ/tissue. The segment_label, algorithm_name, + # and algorithm_version are of DICOM VR LO type, limited to 64 chars. + # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html + # + # NOTE: Each generated DICOM Seg will be a dcm file with the name based on the SOP instance UID. + + # Description for the Spleen seg, and the seg writer obj + seg_descriptions_spleen = [ + SegmentDescription( + segment_label="Spleen", + segmented_property_category=codes.SCT.Organ, + segmented_property_type=codes.SCT.Spleen, + algorithm_name="volumetric (3D) segmentation of the spleen from CT image", + algorithm_family=codes.DCM.ArtificialIntelligence, + algorithm_version="0.3.2", + ) + ] + + custom_tags_spleen = {"SeriesDescription": "AI Spleen Seg for research use only. Not for clinical use."} + dicom_seg_writer_spleen = DICOMSegmentationWriterOperator( + segment_descriptions=seg_descriptions_spleen, custom_tags=custom_tags_spleen + ) + + # Description for the Pancreas seg, and the seg writer obj + seg_descriptions_pancreas = [ + SegmentDescription( + segment_label="Pancreas", + segmented_property_category=codes.SCT.Organ, + segmented_property_type=codes.SCT.Pancreas, + algorithm_name="volumetric (3D) segmentation of the pancreas from CT image", + algorithm_family=codes.DCM.ArtificialIntelligence, + algorithm_version="0.3.0", + ) + ] + custom_tags_pancreas = {"SeriesDescription": "AI Pancreas Seg for research use only. Not for clinical use."} + + dicom_seg_writer_pancreas = DICOMSegmentationWriterOperator( + segment_descriptions=seg_descriptions_pancreas, custom_tags=custom_tags_pancreas + ) + + # NOTE: Sharp eyed readers can already see that the above instantiation of object can be simply parameterized. + # Very true, but leaving them as if for easy reading. In fact the whole app can be parameterized for general use. + + # Create the processing pipeline, by specifying the upstream and downstream operators, and + # ensuring the output from the former matches the input of the latter, in both name and type. + self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) + self.add_flow( + series_selector_op, series_to_vol_op, {"study_selected_series_list": "study_selected_series_list"} + ) + + # Feed the input image to all inference operators + self.add_flow(series_to_vol_op, bundle_spleen_seg_op, {"image": "image"}) + # The Pancreas CT Seg bundle requires PyTorch 1.12.0 to avoid failure to load. + self.add_flow(series_to_vol_op, bundle_pancreas_seg_op, {"image": "image"}) + + # Create DICOM Seg for one of the inference output + # Note below the dicom_seg_writer requires two inputs, each coming from a upstream operator. + self.add_flow( + series_selector_op, dicom_seg_writer_spleen, {"study_selected_series_list": "study_selected_series_list"} + ) + self.add_flow(bundle_spleen_seg_op, dicom_seg_writer_spleen, {"pred": "seg_image"}) + + # Create DICOM Seg for one of the inference output + # Note below the dicom_seg_writer requires two inputs, each coming from a upstream operator. + self.add_flow( + series_selector_op, dicom_seg_writer_pancreas, {"study_selected_series_list": "study_selected_series_list"} + ) + self.add_flow(bundle_pancreas_seg_op, dicom_seg_writer_pancreas, {"pred": "seg_image"}) + + logging.info(f"End {self.compose.__name__}") + + +# This is a sample series selection rule in JSON, simply selecting CT series. +# If the study has more than 1 CT series, then all of them will be selected. +# Please see more detail in DICOMSeriesSelectorOperator. +Sample_Rules_Text = """ +{ + "selections": [ + { + "name": "CT Series", + "conditions": { + "StudyDescription": "(.*?)", + "Modality": "(?i)CT", + "SeriesDescription": "(.*?)" + } + } + ] +} +""" + +if __name__ == "__main__": + # Creates the app and test it standalone. When running is this mode, please note the following: + # -m , for model file path + # -i , for input DICOM CT series folder + # -o , for the output folder, default $PWD/output + # e.g. + # monai-deploy exec app.py -i input -m model/model.ts + # + logging.basicConfig(level=logging.DEBUG) + app_instance = App(do_run=True) diff --git a/examples/apps/ai_multi_ai_app/readme.md b/examples/apps/ai_multi_ai_app/readme.md new file mode 100644 index 00000000..1262aa09 --- /dev/null +++ b/examples/apps/ai_multi_ai_app/readme.md @@ -0,0 +1,26 @@ +# About the Multi-Model/Multi-AI Example + +This example demonstrates how to create a multi-model/multi-AI application. + +## The important steps +- Place the model TorchScripts in a defined folder structure, see below for details +- Pass the model name to the inference operator instance in the app +- Connect the input to and output from the inference operators, as required by the app + +## Required model folder structure: +- The model TorchScripts, be it MONAI Bundle compliant or not, must be placed in a parent folder, whose path is used as the path to the model(s) on app execution +- Each TorchScript file needs to be in a sub-folder, whose name is the model name + +An example is shown below, where the `parent_foler` name can be the app's own choosing, and the sub-folder names become model names, `pancreas_ct_dints` and `spleen_model`, respectively. +``` + +├── pancreas_ct_dints +│ └── model.ts +└── spleen_ct + └── model.ts +``` + +## Note: +- The TorchScript files of MONAI Bundles can be downloaded from MONAI Model Zoo, at https://github.com/Project-MONAI/model-zoo/tree/dev/models +- The input DICOM instances are from a DICOM Series of CT Abdomen study, similar to the ones used in the Spleen Segmentation example +- This example is purely for technical demonstration, not for clinical use. \ No newline at end of file diff --git a/examples/apps/ai_pancrea_seg_app/__init__.py b/examples/apps/ai_pancrea_seg_app/__init__.py new file mode 100644 index 00000000..521cb31b --- /dev/null +++ b/examples/apps/ai_pancrea_seg_app/__init__.py @@ -0,0 +1,7 @@ +import os +import sys + +_current_dir = os.path.abspath(os.path.dirname(__file__)) +if sys.path and os.path.abspath(sys.path[0]) != _current_dir: + sys.path.insert(0, _current_dir) +del _current_dir diff --git a/examples/apps/ai_pancrea_seg_app/__main__.py b/examples/apps/ai_pancrea_seg_app/__main__.py new file mode 100644 index 00000000..273444f9 --- /dev/null +++ b/examples/apps/ai_pancrea_seg_app/__main__.py @@ -0,0 +1,4 @@ +from app import AISpleenSegApp + +if __name__ == "__main__": + AISpleenSegApp(do_run=True) diff --git a/examples/apps/ai_pancrea_seg_app/app.py b/examples/apps/ai_pancrea_seg_app/app.py new file mode 100644 index 00000000..48e37397 --- /dev/null +++ b/examples/apps/ai_pancrea_seg_app/app.py @@ -0,0 +1,144 @@ +# Copyright 2021-2022 MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging + +# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package. +from pydicom.sr.codedict import codes + +import monai.deploy.core as md +from monai.deploy.core import Application, resource +from monai.deploy.core.domain import Image +from monai.deploy.core.io_type import IOType +from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator +from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription +from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator +from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator +from monai.deploy.operators.monai_bundle_inference_operator import ( + BundleConfigNames, + IOMapping, + MonaiBundleInferenceOperator, +) + + +@resource(cpu=1, gpu=1, memory="7Gi") +@md.env(pip_packages=["torch>=1.12.0"]) +# pip_packages can be a string that is a path(str) to requirements.txt file or a list of packages. +# The monai pkg is not required by this class, instead by the included operators. +class AIPancreasSegApp(Application): + def __init__(self, *args, **kwargs): + """Creates an application instance.""" + self._logger = logging.getLogger("{}.{}".format(__name__, type(self).__name__)) + super().__init__(*args, **kwargs) + + def run(self, *args, **kwargs): + # This method calls the base class to run. Can be omitted if simply calling through. + self._logger.info(f"Begin {self.run.__name__}") + super().run(*args, **kwargs) + self._logger.info(f"End {self.run.__name__}") + + def compose(self): + """Creates the app specific operators and chain them up in the processing DAG.""" + + logging.info(f"Begin {self.compose.__name__}") + + # Create the custom operator(s) as well as SDK built-in operator(s). + study_loader_op = DICOMDataLoaderOperator() + series_selector_op = DICOMSeriesSelectorOperator(Sample_Rules_Text) + series_to_vol_op = DICOMSeriesToVolumeOperator() + + # Create the inference operator that supports MONAI Bundle and automates the inference. + # The IOMapping labels match the input and prediction keys in the pre and post processing. + # The model_name is optional when the app has only one model. + # The bundle_path argument optionally can be set to an accessible bundle file path in the dev + # environment, so when the app is packaged into a MAP, the operator can complete the bundle parsing + # during init to provide the optional packages info, parsed from the bundle, to the packager + # for it to install the packages in the MAP docker image. + # Setting output IOType to DISK only works only for leaf operators, not the case in this example. + # + # Pertinent MONAI Bundle: + # https://github.com/Project-MONAI/model-zoo/tree/dev/models/spleen_ct_segmentation + + bundle_spleen_seg_op = MonaiBundleInferenceOperator( + input_mapping=[IOMapping("image", Image, IOType.IN_MEMORY)], + output_mapping=[IOMapping("pred", Image, IOType.IN_MEMORY)], + bundle_config_names=BundleConfigNames(config_names=["inference"]), # Same as the default + ) + + # Create DICOM Seg writer providing the required segment description for each segment with + # the actual algorithm and the pertinent organ/tissue. The segment_label, algorithm_name, + # and algorithm_version are of DICOM VR LO type, limited to 64 chars. + # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html + segment_descriptions = [ + SegmentDescription( + segment_label="Pancreas", + segmented_property_category=codes.SCT.Organ, + segmented_property_type=codes.SCT.Pancreas, + algorithm_name="volumetric (3D) segmentation of the pancreas from CT image", + algorithm_family=codes.DCM.ArtificialIntelligence, + algorithm_version="0.3.0", + ) + ] + + custom_tags = {"SeriesDescription": "AI generated Seg for research use only. Not for clinical use."} + + dicom_seg_writer = DICOMSegmentationWriterOperator( + segment_descriptions=segment_descriptions, custom_tags=custom_tags + ) + + # Create the processing pipeline, by specifying the source and destination operators, and + # ensuring the output from the former matches the input of the latter, in both name and type. + self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) + self.add_flow( + series_selector_op, series_to_vol_op, {"study_selected_series_list": "study_selected_series_list"} + ) + self.add_flow(series_to_vol_op, bundle_spleen_seg_op, {"image": "image"}) + # Note below the dicom_seg_writer requires two inputs, each coming from a source operator. + self.add_flow( + series_selector_op, dicom_seg_writer, {"study_selected_series_list": "study_selected_series_list"} + ) + self.add_flow(bundle_spleen_seg_op, dicom_seg_writer, {"pred": "seg_image"}) + # Create the surface mesh STL conversion operator and add it to the app execution flow, if needed, by + # uncommenting the following couple lines. + # stl_conversion_op = STLConversionOperator(output_file="stl/spleen.stl") + # self.add_flow(bundle_spleen_seg_op, stl_conversion_op, {"pred": "image"}) + + logging.info(f"End {self.compose.__name__}") + + +# This is a sample series selection rule in JSON, simply selecting CT series. +# If the study has more than 1 CT series, then all of them will be selected. +# Please see more detail in DICOMSeriesSelectorOperator. +Sample_Rules_Text = """ +{ + "selections": [ + { + "name": "CT Series", + "conditions": { + "StudyDescription": "(.*?)", + "Modality": "(?i)CT", + "SeriesDescription": "(.*?)" + } + } + ] +} +""" + +if __name__ == "__main__": + # Creates the app and test it standalone. When running is this mode, please note the following: + # -m , for model file path + # -i , for input DICOM CT series folder + # -o , for the output folder, default $PWD/output + # e.g. + # monai-deploy exec app.py -i input -m model/model.ts + # + logging.basicConfig(level=logging.DEBUG) + app_instance = AIPancreasSegApp(do_run=True) diff --git a/examples/apps/ai_spleen_seg_app/app.py b/examples/apps/ai_spleen_seg_app/app.py index cb7a8b2b..f267f114 100644 --- a/examples/apps/ai_spleen_seg_app/app.py +++ b/examples/apps/ai_spleen_seg_app/app.py @@ -27,8 +27,6 @@ MonaiBundleInferenceOperator, ) -# from monai.deploy.operators.stl_conversion_operator import STLConversionOperator # import as needed. - @resource(cpu=1, gpu=1, memory="7Gi") # pip_packages can be a string that is a path(str) to requirements.txt file or a list of packages. diff --git a/notebooks/tutorials/06_monai_bundle_app.ipynb b/notebooks/tutorials/06_monai_bundle_app.ipynb index 9c0dd8f5..8783b3d0 100644 --- a/notebooks/tutorials/06_monai_bundle_app.ipynb +++ b/notebooks/tutorials/06_monai_bundle_app.ipynb @@ -424,7 +424,7 @@ "\n", "The requirements (resource and package dependency) for the App can be specified by using [@resource](/modules/_autosummary/monai.deploy.core.resource) and [@env](/modules/_autosummary/monai.deploy.core.env) decorators.\n", "\n", - "The base class method, `compose`, is overridden. Objects required for DICOM parsing, series selection (selecting the first series for the current release), pixel data conversion to volume image, and segmentation instance creation are created, so is the model-specific `SpleenSegOperator`. The execution pipeline, as a Directed Acyclic Graph, is created by connecting these objects through self.add_flow()." + "Objects required for DICOM parsing, series selection, pixel data conversion to volume image, model specific inference, and the AI result specific DICOM Segmentation object writers are created. The execution pipeline, as a Directed Acyclic Graph, is then constructed by connecting these objects through self.add_flow()." ] }, { diff --git a/notebooks/tutorials/07_multi_model_app.ipynb b/notebooks/tutorials/07_multi_model_app.ipynb new file mode 100644 index 00000000..ac737859 --- /dev/null +++ b/notebooks/tutorials/07_multi_model_app.ipynb @@ -0,0 +1,2170 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Creating a Deploy App for Multi-Ai with Multiple Models\n", + "\n", + "This tutorial shows how to create an inference application with multiple models, focusing on model files organization, inferring with named model in the application, and packaging.\n", + "\n", + "Typically multiple models will work in tandem, e.g. a lung segmentation model's output, along with the original image, are be used by a lung nodule detection and classification model. However, there are currently no such models in the [MONAI Model Zoo](https://github.com/Project-MONAI/model-zoo), so two independent models will be used in this example, [Spleen Segmentation](https://github.com/Project-MONAI/model-zoo/tree/dev/models/spleen_ct_segmentation) and [Pancreas Segmentation](https://github.com/Project-MONAI/model-zoo/tree/dev/models/pancreas_ct_dints_segmentation), both are trained with DICOM images of CT modality, and both are packaged in the [MONAI Bundle](https://docs.monai.io/en/latest/bundle_intro.html) format. A single input of a CT Abdomen DICOM Series can be used for both models within the application.\n", + "\n", + "\n", + "## Important Steps\n", + "- Place the model TorchScripts in a defined folder structure, see below for details\n", + "- Pass the model name to the inference operator instance in the app\n", + "- Connect the input to and output from the inference operators, as required by the app\n", + "\n", + "## Required Model File Organization\n", + "\n", + "- The model files in TorchScript, be it MONAI Bundle compliant or not, must each be placed in an uniquely named folder. The name of this folder is used within the application to retrieve the loaded model network from the execution context.\n", + "- The folders containing the individual model file must then be place under a parent folder. The name of this folder can be any valid folder name chosen by the application developer.\n", + "\n", + "## Example Model File Organization\n", + "\n", + "In this example, the models are organized as shown below.\n", + "```\n", + "multi_models\n", + "├── pancreas_ct_dints\n", + "│ └── model.ts\n", + "└── spleen_ct\n", + " └── model.ts\n", + "```\n", + "\n", + "Please note,\n", + "\n", + "- The `multi_models` is parent folder, and its path will be used as the model path when using App SDK CLI `exec` and `package` commands.\n", + "- The sub-folder names become model names, `pancreas_ct_dints` and `spleen_model`, respectively.\n", + "\n", + "In the following sections, we will demonstrate how to create and package the application using these two models.\n", + "\n", + ":::{note}\n", + "The two models are both MONAI bundles, published in [MONAI Model Zoo](https://github.com/Project-MONAI/model-zoo)\n", + "- [spleen_ct_segmentation, v0.3.2](https://github.com/Project-MONAI/model-zoo/tree/dev/models/spleen_ct_segmentation)\n", + "- [pancreas_ct_dints_segmentation, v0.3.0](https://github.com/Project-MONAI/model-zoo/tree/dev/models/pancreas_ct_dints_segmentation)\n", + "\n", + "The DICOM CT series used as test input is downloaded from [TCIA](https://www.cancerimagingarchive.net/), CT Abdomen Collection ID `CPTAC-PDA` Subject ID `C3N-00198`.\n", + "\n", + "Both the DICOM files and the models have been packaged and shared on Google Drive.\n", + ":::\n", + "\n", + "## Creating Operators and connecting them in Application class\n", + "\n", + "We will implement an application that consists of seven Operators:\n", + "\n", + "- **DICOMDataLoaderOperator**:\n", + " - **Input(dicom_files)**: a folder path ([`DataPath`](/modules/_autosummary/monai.deploy.core.domain.DataPath))\n", + " - **Output(dicom_study_list)**: a list of DICOM studies in memory (List[[`DICOMStudy`](/modules/_autosummary/monai.deploy.core.domain.DICOMStudy)])\n", + "- **DICOMSeriesSelectorOperator**:\n", + " - **Input(dicom_study_list)**: a list of DICOM studies in memory (List[[`DICOMStudy`](/modules/_autosummary/monai.deploy.core.domain.DICOMStudy)])\n", + " - **Input(selection_rules)**: a selection rule (Dict)\n", + " - **Output(study_selected_series_list)**: a DICOM series object in memory ([`StudySelectedSeries`](/modules/_autosummary/monai.deploy.core.domain.StudySelectedSeries))\n", + "- **DICOMSeriesToVolumeOperator**:\n", + " - **Input(study_selected_series_list)**: a DICOM series object in memory ([`StudySelectedSeries`](/modules/_autosummary/monai.deploy.core.domain.StudySelectedSeries))\n", + " - **Output(image)**: an image object in memory ([`Image`](/modules/_autosummary/monai.deploy.core.domain.Image))\n", + "- **MonaiBundleInferenceOperator** x 2:\n", + " - **Input(image)**: an image object in memory ([`Image`](/modules/_autosummary/monai.deploy.core.domain.Image))\n", + " - **Output(pred)**: an image object in memory ([`Image`](/modules/_autosummary/monai.deploy.core.domain.Image))\n", + "- **DICOMSegmentationWriterOperator** x2:\n", + " - **Input(seg_image)**: a segmentation image object in memory ([`Image`](/modules/_autosummary/monai.deploy.core.domain.Image))\n", + " - **Input(study_selected_series_list)**: a DICOM series object in memory ([`StudySelectedSeries`](/modules/_autosummary/monai.deploy.core.domain.StudySelectedSeries))\n", + " - **Output(dicom_seg_instance)**: a file path ([`DataPath`](/modules/_autosummary/monai.deploy.core.domain.DataPath))\n", + "\n", + "\n", + ":::{note}\n", + "The `DICOMSegmentationWriterOperator` needs both the segmentation image as well as the original DICOM series meta-data in order to use the patient demographics and the DICOM Study level attributes.\n", + ":::\n", + "\n", + "The workflow of the application is illustrated below.\n", + "\n", + "```{mermaid}\n", + "%%{init: {\"theme\": \"base\", \"themeVariables\": { \"fontSize\": \"16px\"}} }%%\n", + "\n", + "classDiagram\n", + " direction TB\n", + " DICOMDataLoaderOperator --|> DICOMSeriesSelectorOperator : dicom_study_list...dicom_study_list\n", + " DICOMSeriesSelectorOperator --|> DICOMSeriesToVolumeOperator : study_selected_series_list...study_selected_series_list\n", + "\n", + " DICOMSeriesToVolumeOperator --|> Spleen_BundleInferenceOperator : image...image\n", + " DICOMSeriesSelectorOperator --|> Spleen_DICOMSegmentationWriterOperator : study_selected_series_list...study_selected_series_list\n", + " Spleen_BundleInferenceOperator --|> Spleen_DICOMSegmentationWriterOperator : pred...seg_image\n", + "\n", + " DICOMSeriesToVolumeOperator --|> Pancreas_BundleInferenceOperator : image...image\n", + " DICOMSeriesSelectorOperator --|> Pancreas_DICOMSegmentationWriterOperator : study_selected_series_list...study_selected_series_list\n", + " Pancreas_BundleInferenceOperator --|> Pancreas_DICOMSegmentationWriterOperator : pred...seg_image\n", + "\n", + " class DICOMDataLoaderOperator {\n", + " dicom_files : DISK\n", + " dicom_study_list(out) IN_MEMORY\n", + " }\n", + " class DICOMSeriesSelectorOperator {\n", + " dicom_study_list : IN_MEMORY\n", + " selection_rules : IN_MEMORY\n", + " study_selected_series_list(out) IN_MEMORY\n", + " }\n", + " class DICOMSeriesToVolumeOperator {\n", + " study_selected_series_list : IN_MEMORY\n", + " image(out) IN_MEMORY\n", + " }\n", + " class Spleen_BundleInferenceOperator {\n", + " image : IN_MEMORY\n", + " pred(out) IN_MEMORY\n", + " }\n", + " class Pancreas_BundleInferenceOperator {\n", + " image : IN_MEMORY\n", + " pred(out) IN_MEMORY\n", + " }\n", + " class Spleen_DICOMSegmentationWriterOperator {\n", + " seg_image : IN_MEMORY\n", + " study_selected_series_list : IN_MEMORY\n", + " dicom_seg_instance(out) DISK\n", + " }\n", + " class Pancreas_DICOMSegmentationWriterOperator {\n", + " seg_image : IN_MEMORY\n", + " study_selected_series_list : IN_MEMORY\n", + " dicom_seg_instance(out) DISK\n", + " }\n", + "```\n", + "\n", + "### Setup environment\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Install MONAI and other necessary image processing packages for the application\n", + "!python -c \"import monai\" || pip install --upgrade -q \"monai\"\n", + "!python -c \"import torch\" || pip install -q \"torch>=1.12.0\"\n", + "!python -c \"import numpy\" || pip install -q \"numpy>=1.21\"\n", + "!python -c \"import nibabel\" || pip install -q \"nibabel>=3.2.1\"\n", + "!python -c \"import pydicom\" || pip install -q \"pydicom>=1.4.2\"\n", + "!python -c \"import highdicom\" || pip install -q \"highdicom>=0.18.2\"\n", + "!python -c \"import SimpleITK\" || pip install -q \"SimpleITK>=2.0.0\"\n", + "!python -c \"import typeguard\" || pip install -q \"typeguard>=2.12.1\"\n", + "\n", + "# Install MONAI Deploy App SDK package\n", + "!python -c \"import monai.deploy\" || pip install --upgrade -q \"monai-deploy-app-sdk\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note: you may need to restart the Jupyter kernel to use the updated packages." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Download/Extract input and model/bundle files from Google Drive" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: gdown in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (4.5.1)\n", + "Requirement already satisfied: beautifulsoup4 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.11.1)\n", + "Requirement already satisfied: six in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (1.16.0)\n", + "Requirement already satisfied: filelock in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (3.8.0)\n", + "Requirement already satisfied: requests[socks] in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (2.28.1)\n", + "Requirement already satisfied: tqdm in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from gdown) (4.64.0)\n", + "Requirement already satisfied: soupsieve>1.2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from beautifulsoup4->gdown) (2.3.2.post1)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2022.6.15)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (3.3)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (2.1.1)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.26.12)\n", + "Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages (from requests[socks]->gdown) (1.7.1)\n", + "Downloading...\n", + "From: https://drive.google.com/uc?id=1llJ4NGNTjY187RLX4MtlmHYhfGxBNWmd\n", + "To: /home/mqin/src/monai-deploy-app-sdk/notebooks/tutorials/ai_multi_model_bundle_data.zip\n", + "100%|█████████████████████████████████████████| 647M/647M [00:05<00:00, 114MB/s]\n", + "Archive: ai_multi_model_bundle_data.zip\n", + " inflating: dcm/1-001.dcm \n", + " inflating: dcm/1-002.dcm \n", + " inflating: dcm/1-003.dcm \n", + " inflating: dcm/1-004.dcm \n", + " inflating: dcm/1-005.dcm \n", + " inflating: dcm/1-006.dcm \n", + " inflating: dcm/1-007.dcm \n", + " inflating: dcm/1-008.dcm \n", + " inflating: dcm/1-009.dcm \n", + " inflating: dcm/1-010.dcm \n", + " inflating: dcm/1-011.dcm \n", + " inflating: dcm/1-012.dcm \n", + " inflating: dcm/1-013.dcm \n", + " inflating: dcm/1-014.dcm \n", + " inflating: dcm/1-015.dcm \n", + " inflating: dcm/1-016.dcm \n", + " inflating: dcm/1-017.dcm \n", + " inflating: dcm/1-018.dcm \n", + " inflating: dcm/1-019.dcm \n", + " inflating: dcm/1-020.dcm \n", + " inflating: dcm/1-021.dcm \n", + " inflating: dcm/1-022.dcm \n", + " inflating: dcm/1-023.dcm \n", + " inflating: dcm/1-024.dcm \n", + " inflating: dcm/1-025.dcm \n", + " inflating: dcm/1-026.dcm \n", + " inflating: dcm/1-027.dcm \n", + " inflating: dcm/1-028.dcm \n", + " inflating: dcm/1-029.dcm \n", + " inflating: dcm/1-030.dcm \n", + " inflating: dcm/1-031.dcm \n", + " inflating: dcm/1-032.dcm \n", + " inflating: dcm/1-033.dcm \n", + " inflating: dcm/1-034.dcm \n", + " inflating: dcm/1-035.dcm \n", + " inflating: dcm/1-036.dcm \n", + " inflating: dcm/1-037.dcm \n", + " inflating: dcm/1-038.dcm \n", + " inflating: dcm/1-039.dcm \n", + " inflating: dcm/1-040.dcm \n", + " inflating: dcm/1-041.dcm \n", + " inflating: dcm/1-042.dcm \n", + " inflating: dcm/1-043.dcm \n", + " inflating: dcm/1-044.dcm \n", + " inflating: dcm/1-045.dcm \n", + " inflating: dcm/1-046.dcm \n", + " inflating: dcm/1-047.dcm \n", + " inflating: dcm/1-048.dcm \n", + " inflating: dcm/1-049.dcm \n", + " inflating: dcm/1-050.dcm \n", + " inflating: dcm/1-051.dcm \n", + " inflating: dcm/1-052.dcm \n", + " inflating: dcm/1-053.dcm \n", + " inflating: dcm/1-054.dcm \n", + " inflating: dcm/1-055.dcm \n", + " inflating: dcm/1-056.dcm \n", + " inflating: dcm/1-057.dcm \n", + " inflating: dcm/1-058.dcm \n", + " inflating: dcm/1-059.dcm \n", + " inflating: dcm/1-060.dcm \n", + " inflating: dcm/1-061.dcm \n", + " inflating: dcm/1-062.dcm \n", + " inflating: dcm/1-063.dcm \n", + " inflating: dcm/1-064.dcm \n", + " inflating: dcm/1-065.dcm \n", + " inflating: dcm/1-066.dcm \n", + " inflating: dcm/1-067.dcm \n", + " inflating: dcm/1-068.dcm \n", + " inflating: dcm/1-069.dcm \n", + " inflating: dcm/1-070.dcm \n", + " inflating: dcm/1-071.dcm \n", + " inflating: dcm/1-072.dcm \n", + " inflating: dcm/1-073.dcm \n", + " inflating: dcm/1-074.dcm \n", + " inflating: dcm/1-075.dcm \n", + " inflating: dcm/1-076.dcm \n", + " inflating: dcm/1-077.dcm \n", + " inflating: dcm/1-078.dcm \n", + " inflating: dcm/1-079.dcm \n", + " inflating: dcm/1-080.dcm \n", + " inflating: dcm/1-081.dcm \n", + " inflating: dcm/1-082.dcm \n", + " inflating: dcm/1-083.dcm \n", + " inflating: dcm/1-084.dcm \n", + " inflating: dcm/1-085.dcm \n", + " inflating: dcm/1-086.dcm \n", + " inflating: dcm/1-087.dcm \n", + " inflating: dcm/1-088.dcm \n", + " inflating: dcm/1-089.dcm \n", + " inflating: dcm/1-090.dcm \n", + " inflating: dcm/1-091.dcm \n", + " inflating: dcm/1-092.dcm \n", + " inflating: dcm/1-093.dcm \n", + " inflating: dcm/1-094.dcm \n", + " inflating: dcm/1-095.dcm \n", + " inflating: dcm/1-096.dcm \n", + " inflating: dcm/1-097.dcm \n", + " inflating: dcm/1-098.dcm \n", + " inflating: dcm/1-099.dcm \n", + " inflating: dcm/1-100.dcm \n", + " inflating: dcm/1-101.dcm \n", + " inflating: dcm/1-102.dcm \n", + " inflating: dcm/1-103.dcm \n", + " inflating: dcm/1-104.dcm \n", + " inflating: dcm/1-105.dcm \n", + " inflating: dcm/1-106.dcm \n", + " inflating: dcm/1-107.dcm \n", + " inflating: dcm/1-108.dcm \n", + " inflating: dcm/1-109.dcm \n", + " inflating: dcm/1-110.dcm \n", + " inflating: dcm/1-111.dcm \n", + " inflating: dcm/1-112.dcm \n", + " inflating: dcm/1-113.dcm \n", + " inflating: dcm/1-114.dcm \n", + " inflating: dcm/1-115.dcm \n", + " inflating: dcm/1-116.dcm \n", + " inflating: dcm/1-117.dcm \n", + " inflating: dcm/1-118.dcm \n", + " inflating: dcm/1-119.dcm \n", + " inflating: dcm/1-120.dcm \n", + " inflating: dcm/1-121.dcm \n", + " inflating: dcm/1-122.dcm \n", + " inflating: dcm/1-123.dcm \n", + " inflating: dcm/1-124.dcm \n", + " inflating: dcm/1-125.dcm \n", + " inflating: dcm/1-126.dcm \n", + " inflating: dcm/1-127.dcm \n", + " inflating: dcm/1-128.dcm \n", + " inflating: dcm/1-129.dcm \n", + " inflating: dcm/1-130.dcm \n", + " inflating: dcm/1-131.dcm \n", + " inflating: dcm/1-132.dcm \n", + " inflating: dcm/1-133.dcm \n", + " inflating: dcm/1-134.dcm \n", + " inflating: dcm/1-135.dcm \n", + " inflating: dcm/1-136.dcm \n", + " inflating: dcm/1-137.dcm \n", + " inflating: dcm/1-138.dcm \n", + " inflating: dcm/1-139.dcm \n", + " inflating: dcm/1-140.dcm \n", + " inflating: dcm/1-141.dcm \n", + " inflating: dcm/1-142.dcm \n", + " inflating: dcm/1-143.dcm \n", + " inflating: dcm/1-144.dcm \n", + " inflating: dcm/1-145.dcm \n", + " inflating: dcm/1-146.dcm \n", + " inflating: dcm/1-147.dcm \n", + " inflating: dcm/1-148.dcm \n", + " inflating: dcm/1-149.dcm \n", + " inflating: dcm/1-150.dcm \n", + " inflating: dcm/1-151.dcm \n", + " inflating: dcm/1-152.dcm \n", + " inflating: dcm/1-153.dcm \n", + " inflating: dcm/1-154.dcm \n", + " inflating: dcm/1-155.dcm \n", + " inflating: dcm/1-156.dcm \n", + " inflating: dcm/1-157.dcm \n", + " inflating: dcm/1-158.dcm \n", + " inflating: dcm/1-159.dcm \n", + " inflating: dcm/1-160.dcm \n", + " inflating: dcm/1-161.dcm \n", + " inflating: dcm/1-162.dcm \n", + " inflating: dcm/1-163.dcm \n", + " inflating: dcm/1-164.dcm \n", + " inflating: dcm/1-165.dcm \n", + " inflating: dcm/1-166.dcm \n", + " inflating: dcm/1-167.dcm \n", + " inflating: dcm/1-168.dcm \n", + " inflating: dcm/1-169.dcm \n", + " inflating: dcm/1-170.dcm \n", + " inflating: dcm/1-171.dcm \n", + " inflating: dcm/1-172.dcm \n", + " inflating: dcm/1-173.dcm \n", + " inflating: dcm/1-174.dcm \n", + " inflating: dcm/1-175.dcm \n", + " inflating: dcm/1-176.dcm \n", + " inflating: dcm/1-177.dcm \n", + " inflating: dcm/1-178.dcm \n", + " inflating: dcm/1-179.dcm \n", + " inflating: dcm/1-180.dcm \n", + " inflating: dcm/1-181.dcm \n", + " inflating: dcm/1-182.dcm \n", + " inflating: dcm/1-183.dcm \n", + " inflating: dcm/1-184.dcm \n", + " inflating: dcm/1-185.dcm \n", + " inflating: dcm/1-186.dcm \n", + " inflating: dcm/1-187.dcm \n", + " inflating: dcm/1-188.dcm \n", + " inflating: dcm/1-189.dcm \n", + " inflating: dcm/1-190.dcm \n", + " inflating: dcm/1-191.dcm \n", + " inflating: dcm/1-192.dcm \n", + " inflating: dcm/1-193.dcm \n", + " inflating: dcm/1-194.dcm \n", + " inflating: dcm/1-195.dcm \n", + " inflating: dcm/1-196.dcm \n", + " inflating: dcm/1-197.dcm \n", + " inflating: dcm/1-198.dcm \n", + " inflating: dcm/1-199.dcm \n", + " inflating: dcm/1-200.dcm \n", + " inflating: dcm/1-201.dcm \n", + " inflating: dcm/1-202.dcm \n", + " inflating: dcm/1-203.dcm \n", + " inflating: dcm/1-204.dcm \n", + " inflating: multi_models/pancreas_ct_dints/model.ts \n", + " inflating: multi_models/spleen_ct/model.ts \n" + ] + } + ], + "source": [ + "# Download the test data and MONAI bundle zip file\n", + "!pip install gdown \n", + "!gdown \"https://drive.google.com/uc?id=1llJ4NGNTjY187RLX4MtlmHYhfGxBNWmd\"\n", + "\n", + "# After downloading ai_spleen_bundle_data zip file from the web browser or using gdown,\n", + "!unzip -o \"ai_multi_model_bundle_data.zip\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup imports\n", + "\n", + "Let's import necessary classes/decorators to define Application and Operator." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "\n", + "# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package.\n", + "from pydicom.sr.codedict import codes\n", + "\n", + "import monai.deploy.core as md\n", + "from monai.deploy.core import Application, resource\n", + "from monai.deploy.core.domain import Image\n", + "from monai.deploy.core.io_type import IOType\n", + "from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator\n", + "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription\n", + "from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator\n", + "from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator\n", + "from monai.deploy.operators.monai_bundle_inference_operator import (\n", + " BundleConfigNames,\n", + " IOMapping,\n", + " MonaiBundleInferenceOperator,\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Determining the Model Name and IOfor the Model Bundle Inference Operator\n", + "\n", + "The App SDK provides a `MonaiBundleInferenceOperator` class to perform inference with a MONAI Bundle, which is essentially a PyTorch model in TorchScript with additional metadata describing the model network and processing specification. This operator uses the MONAI utilities to parse a MONAI Bundle to automatically instantiate the objects required for input and output processing as well as inference, as such it depends on MONAI transforms, inferers, and in turn their dependencies.\n", + "\n", + "Each Operator class inherits from the base [Operator](/modules/_autosummary/monai.deploy.core.Operator) class, and its input/output properties are specified by using [@input](/modules/_autosummary/monai.deploy.core.input)/[@output](/modules/_autosummary/monai.deploy.core.output) decorators. For the `MonaiBundleInferenceOperator` class, the input/output need to be defined to match those of the model network, both in name and data type. For the current release, an `IOMapping` object is used to connect the operator input/output to those of the model network by using the same names. This is likely to change, to be automated, in the future releases once certain limitation in the App SDK is removed.\n", + "\n", + "When multiple models are used in an application, it is important that each model network name is passed in when creating the inference operator, via the `model_name` argument.\n", + "\n", + "The Spleen CT Segmentation and Pancreas model networks have a named input, called \"image\", and the named output called \"pred\", and both are of image type. These can all be mapped to the App SDK [Image](/modules/_autosummary/monai.deploy.core.domain.Image). This piece of information is typically acquired by examining the model metadata `network_data_format` attribute in the bundle, as seen in this [example] (https://github.com/Project-MONAI/model-zoo/blob/dev/models/spleen_ct_segmentation/configs/metadata.json)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating Application class\n", + "\n", + "Our application class would look like below.\n", + "\n", + "It defines `App` class, inheriting [Application](/modules/_autosummary/monai.deploy.core.Application) class.\n", + "\n", + "The requirements (resource and package dependency) for the App can be specified by using [@resource](/modules/_autosummary/monai.deploy.core.resource) and [@env](/modules/_autosummary/monai.deploy.core.env) decorators.\n", + "\n", + "Objects required for DICOM parsing, series selection, pixel data conversion to volume image, model specific inference, and the AI result specific DICOM Segmentation object writers are created. The execution pipeline, as a Directed Acyclic Graph, is then constructed by connecting these objects through self.add_flow()." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-10-23 16:14:37,601 - Begin compose\n", + "2022-10-23 16:14:37,604 - End compose\n", + "2022-10-23 16:14:37,605 - Begin run\n", + "2022-10-23 16:14:37,605 - End run\n" + ] + } + ], + "source": [ + "@resource(cpu=1, gpu=1, memory=\"7Gi\")\n", + "# Enforcing torch>=1.12.0 because one of the Bundles/TorchScripts, Pancreas CT Seg, was created\n", + "# with this version, and would fail to jit.load with lower version of torch.\n", + "# The Bundle Inference Operator as of now only requires torch>=1.10.2, and does not yet dynamically\n", + "# parse the MONAI bundle to get the required pip package or ver on initialization, hence it does not set\n", + "# its own @env decorator accordingly when the app is being packaged into a MONAI Package.\n", + "@md.env(pip_packages=[\"torch>=1.12.0\"])\n", + "# pip_packages can be a string that is a path(str) to requirements.txt file or a list of packages.\n", + "# The monai pkg is not required by this class, instead by the included operators.\n", + "class App(Application):\n", + " \"\"\"This example demonstrates how to create a multi-model/multi-AI application.\n", + "\n", + " The important steps are:\n", + " 1. Place the model TorchScripts in a defined folder structure, see below for details\n", + " 2. Pass the model name to the inference operator instance in the app\n", + " 3. Connect the input to and output from the inference operators, as required by the app\n", + "\n", + " Model organization for this example:\n", + "\n", + " multi_models\n", + " ├── pancreas_ct_dints\n", + " │ └── model.ts\n", + " └── spleen_ct\n", + " └── model.ts\n", + " \"\"\"\n", + "\n", + " def __init__(self, *args, **kwargs):\n", + " \"\"\"Creates an application instance.\"\"\"\n", + " self._logger = logging.getLogger(\"{}.{}\".format(__name__, type(self).__name__))\n", + " super().__init__(*args, **kwargs)\n", + "\n", + " def run(self, *args, **kwargs):\n", + " # This method calls the base class to run. Can be omitted if simply calling through.\n", + " self._logger.info(f\"Begin {self.run.__name__}\")\n", + " super().run(*args, **kwargs)\n", + " self._logger.info(f\"End {self.run.__name__}\")\n", + "\n", + " def compose(self):\n", + " \"\"\"Creates the app specific operators and chain them up in the processing DAG.\"\"\"\n", + "\n", + " logging.info(f\"Begin {self.compose.__name__}\")\n", + "\n", + " # Create the custom operator(s) as well as SDK built-in operator(s).\n", + " study_loader_op = DICOMDataLoaderOperator()\n", + " series_selector_op = DICOMSeriesSelectorOperator(Sample_Rules_Text)\n", + " series_to_vol_op = DICOMSeriesToVolumeOperator()\n", + "\n", + " # Create the inference operator that supports MONAI Bundle and automates the inference.\n", + " # The IOMapping labels match the input and prediction keys in the pre and post processing.\n", + " # The model_name is optional when the app has only one model.\n", + " # The bundle_path argument optionally can be set to an accessible bundle file path in the dev\n", + " # environment, so when the app is packaged into a MAP, the operator can complete the bundle parsing\n", + " # during init to provide the optional packages info, parsed from the bundle, to the packager\n", + " # for it to install the packages in the MAP docker image.\n", + " # Setting output IOType to DISK only works only for leaf operators, not the case in this example.\n", + " # When multiple models/bundles are supported, create an inference operator for each.\n", + " #\n", + " # Pertinent MONAI Bundle:\n", + " # https://github.com/Project-MONAI/model-zoo/tree/dev/models/spleen_ct_segmentation, v0.3.2\n", + " # https://github.com/Project-MONAI/model-zoo/tree/dev/models/pancreas_ct_dints_segmentation, v0.3\n", + "\n", + " config_names = BundleConfigNames(config_names=[\"inference\"]) # Same as the default\n", + "\n", + " # This is the inference operator for the spleen_model bundle. Note the model name.\n", + " bundle_spleen_seg_op = MonaiBundleInferenceOperator(\n", + " input_mapping=[IOMapping(\"image\", Image, IOType.IN_MEMORY)],\n", + " output_mapping=[IOMapping(\"pred\", Image, IOType.IN_MEMORY)],\n", + " bundle_config_names=config_names,\n", + " model_name=\"spleen_ct\",\n", + " )\n", + "\n", + " # This is the inference operator for the pancreas_ct_dints bundle. Note the model name.\n", + " bundle_pancreas_seg_op = MonaiBundleInferenceOperator(\n", + " input_mapping=[IOMapping(\"image\", Image, IOType.IN_MEMORY)],\n", + " output_mapping=[IOMapping(\"pred\", Image, IOType.IN_MEMORY)],\n", + " model_name=\"pancreas_ct_dints\",\n", + " )\n", + "\n", + " # Create DICOM Seg writer providing the required segment description for each segment with\n", + " # the actual algorithm and the pertinent organ/tissue. The segment_label, algorithm_name,\n", + " # and algorithm_version are of DICOM VR LO type, limited to 64 chars.\n", + " # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html\n", + " #\n", + " # NOTE: Each generated DICOM Seg will be a dcm file with the name based on the SOP instance UID.\n", + "\n", + " # Description for the Spleen seg, and the seg writer obj\n", + " seg_descriptions_spleen = [\n", + " SegmentDescription(\n", + " segment_label=\"Spleen\",\n", + " segmented_property_category=codes.SCT.Organ,\n", + " segmented_property_type=codes.SCT.Spleen,\n", + " algorithm_name=\"volumetric (3D) segmentation of the spleen from CT image\",\n", + " algorithm_family=codes.DCM.ArtificialIntelligence,\n", + " algorithm_version=\"0.3.2\",\n", + " )\n", + " ]\n", + "\n", + " custom_tags_spleen = {\"SeriesDescription\": \"AI Spleen Seg for research use only. Not for clinical use.\"}\n", + " dicom_seg_writer_spleen = DICOMSegmentationWriterOperator(\n", + " segment_descriptions=seg_descriptions_spleen, custom_tags=custom_tags_spleen\n", + " )\n", + "\n", + " # Description for the Pancreas seg, and the seg writer obj\n", + " seg_descriptions_pancreas = [\n", + " SegmentDescription(\n", + " segment_label=\"Pancreas\",\n", + " segmented_property_category=codes.SCT.Organ,\n", + " segmented_property_type=codes.SCT.Pancreas,\n", + " algorithm_name=\"volumetric (3D) segmentation of the pancreas from CT image\",\n", + " algorithm_family=codes.DCM.ArtificialIntelligence,\n", + " algorithm_version=\"0.3.0\",\n", + " )\n", + " ]\n", + " custom_tags_pancreas = {\"SeriesDescription\": \"AI Pancreas Seg for research use only. Not for clinical use.\"}\n", + "\n", + " dicom_seg_writer_pancreas = DICOMSegmentationWriterOperator(\n", + " segment_descriptions=seg_descriptions_pancreas, custom_tags=custom_tags_pancreas\n", + " )\n", + "\n", + " # NOTE: Sharp eyed readers can already see that the above instantiation of object can be simply parameterized.\n", + " # Very true, but leaving them as if for easy reading. In fact the whole app can be parameterized for general use.\n", + "\n", + " # Create the processing pipeline, by specifying the upstream and downstream operators, and\n", + " # ensuring the output from the former matches the input of the latter, in both name and type.\n", + " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", + " self.add_flow(\n", + " series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", + "\n", + " # Feed the input image to all inference operators\n", + " self.add_flow(series_to_vol_op, bundle_spleen_seg_op, {\"image\": \"image\"})\n", + " # The Pancreas CT Seg bundle requires PyTorch 1.12.0 to avoid failure to load.\n", + " self.add_flow(series_to_vol_op, bundle_pancreas_seg_op, {\"image\": \"image\"})\n", + "\n", + " # Create DICOM Seg for one of the inference output\n", + " # Note below the dicom_seg_writer requires two inputs, each coming from a upstream operator.\n", + " self.add_flow(\n", + " series_selector_op, dicom_seg_writer_spleen, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", + " self.add_flow(bundle_spleen_seg_op, dicom_seg_writer_spleen, {\"pred\": \"seg_image\"})\n", + "\n", + " # Create DICOM Seg for one of the inference output\n", + " # Note below the dicom_seg_writer requires two inputs, each coming from a upstream operator.\n", + " self.add_flow(\n", + " series_selector_op, dicom_seg_writer_pancreas, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", + " self.add_flow(bundle_pancreas_seg_op, dicom_seg_writer_pancreas, {\"pred\": \"seg_image\"})\n", + "\n", + " logging.info(f\"End {self.compose.__name__}\")\n", + "\n", + "\n", + "# This is a sample series selection rule in JSON, simply selecting CT series.\n", + "# If the study has more than 1 CT series, then all of them will be selected.\n", + "# Please see more detail in DICOMSeriesSelectorOperator.\n", + "Sample_Rules_Text = \"\"\"\n", + "{\n", + " \"selections\": [\n", + " {\n", + " \"name\": \"CT Series\",\n", + " \"conditions\": {\n", + " \"StudyDescription\": \"(.*?)\",\n", + " \"Modality\": \"(?i)CT\",\n", + " \"SeriesDescription\": \"(.*?)\"\n", + " }\n", + " }\n", + " ]\n", + "}\n", + "\"\"\"\n", + "\n", + "if __name__ == \"__main__\":\n", + " # Creates the app and test it standalone. When running is this mode, please note the following:\n", + " # -m , for model file path\n", + " # -i , for input DICOM CT series folder\n", + " # -o , for the output folder, default $PWD/output\n", + " # e.g.\n", + " # monai-deploy exec app.py -i input -m model/model.ts\n", + " #\n", + " logging.basicConfig(level=logging.DEBUG)\n", + " app_instance = App(do_run=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Executing app locally\n", + "\n", + "We can execute the app in the Jupyter notebook. Note that the DICOM files of the CT Abdomen series must be present in the `dcm` and the Torch Script model at `model.ts`. Please use the actual path in your environment.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-10-23 16:14:37,742 - Begin compose\n", + "2022-10-23 16:14:37,745 - End compose\n", + "2022-10-23 16:14:37,746 - Begin run\n", + "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1303858, Operator ID: d12df864-d3eb-4c7f-88b8-3fbbec159fbc)\u001b[39m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[2022-10-23 16:14:38,314] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-23 16:14:38,315] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-23 16:14:38,316] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-23 16:14:38,317] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-23 16:14:38,318] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-23 16:14:38,319] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 16:14:38,320] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-23 16:14:38,321] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-23 16:14:38,322] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 16:14:38,323] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-23 16:14:38,323] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-23 16:14:38,324] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 16:14:38,325] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1303858, Operator ID: 6f40f1f0-27f8-4f71-b9bd-4fa8eeece94d)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1303858, Operator ID: 09eefdde-25cb-4762-90b5-8b75fe237a62)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1303858, Operator ID: a5fcb2c0-5b57-42ba-8669-58ea87828a88)\u001b[39m\n", + "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1303858, Operator ID: d2117e67-7a3e-4e91-8ba9-ce26f1f8f079)\u001b[39m\n", + "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1303858, Operator ID: 3cd0e57b-0b5c-49c5-8e90-4a588c246e74)\u001b[39m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-23 16:17:02,106] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-23 16:17:02,108] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-23 16:17:02,110] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-23 16:17:02,112] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-23 16:17:02,114] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-23 16:17:02,116] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-23 16:17:02,117] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-23 16:17:02,120] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-23 16:17:02,126] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-23 16:17:02,130] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-23 16:17:02,134] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-23 16:17:02,139] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-23 16:17:02,143] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-23 16:17:02,145] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-23 16:17:02,147] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-23 16:17:02,151] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-23 16:17:02,153] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-23 16:17:02,155] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-23 16:17:02,157] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-23 16:17:02,159] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-23 16:17:02,164] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-23 16:17:02,168] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-23 16:17:02,172] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-23 16:17:02,175] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-23 16:17:02,178] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-23 16:17:02,181] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-23 16:17:02,183] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-23 16:17:02,186] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-23 16:17:02,188] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-23 16:17:02,190] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-23 16:17:02,192] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-23 16:17:02,194] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-23 16:17:02,196] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-23 16:17:02,198] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-23 16:17:02,200] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-23 16:17:02,201] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-23 16:17:02,203] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-23 16:17:02,205] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-23 16:17:02,206] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-23 16:17:02,208] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-23 16:17:02,209] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-23 16:17:02,211] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-23 16:17:02,213] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-23 16:17:02,216] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-23 16:17:02,218] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-23 16:17:02,220] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-23 16:17:02,222] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-23 16:17:02,224] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-23 16:17:02,226] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-23 16:17:02,228] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-23 16:17:02,230] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-23 16:17:02,231] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-23 16:17:02,233] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-23 16:17:02,236] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-23 16:17:02,238] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-23 16:17:02,240] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-23 16:17:02,243] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-23 16:17:02,245] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-23 16:17:02,247] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-23 16:17:02,249] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-23 16:17:02,251] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-23 16:17:02,254] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-23 16:17:02,257] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-23 16:17:02,260] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-23 16:17:02,264] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-23 16:17:02,267] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-23 16:17:02,270] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-23 16:17:02,272] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-23 16:17:02,274] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-23 16:17:02,276] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-23 16:17:02,278] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-23 16:17:02,280] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-23 16:17:02,282] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-23 16:17:02,285] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-23 16:17:02,287] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-23 16:17:02,289] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-23 16:17:02,291] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-23 16:17:02,293] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-23 16:17:02,295] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-23 16:17:02,297] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-23 16:17:02,299] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-23 16:17:02,301] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-23 16:17:02,303] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-23 16:17:02,305] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-23 16:17:02,307] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-23 16:17:02,309] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-23 16:17:02,311] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-23 16:17:02,353] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:17:02,353] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-23 16:17:02,354] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:17:02,354] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-23 16:17:02,355] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-23 16:17:02,356] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:17:02,356] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-23 16:17:02,357] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-23 16:17:02,357] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1303858, Operator ID: 70acb0d2-9ab6-4724-ada6-f9e793f3f9c9)\u001b[39m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[2022-10-23 16:17:03,808] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-23 16:17:03,810] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-23 16:17:03,811] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-23 16:17:03,813] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-23 16:17:03,816] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-23 16:17:03,818] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-23 16:17:03,820] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-23 16:17:03,822] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-23 16:17:03,825] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-23 16:17:03,827] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-23 16:17:03,829] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-23 16:17:03,831] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-23 16:17:03,833] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-23 16:17:03,836] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-23 16:17:03,838] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-23 16:17:03,840] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-23 16:17:03,843] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-23 16:17:03,845] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-23 16:17:03,848] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-23 16:17:03,850] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-23 16:17:03,852] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-23 16:17:03,855] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-23 16:17:03,857] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-23 16:17:03,859] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-23 16:17:03,862] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-23 16:17:03,865] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-23 16:17:03,868] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-23 16:17:03,870] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-23 16:17:03,872] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-23 16:17:03,874] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-23 16:17:03,876] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-23 16:17:03,878] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-23 16:17:03,880] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-23 16:17:03,882] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-23 16:17:03,884] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-23 16:17:03,888] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-23 16:17:03,892] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-23 16:17:03,896] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-23 16:17:03,900] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-23 16:17:03,903] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-23 16:17:03,906] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-23 16:17:03,909] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-23 16:17:03,912] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-23 16:17:03,914] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-23 16:17:03,917] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-23 16:17:03,919] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-23 16:17:03,921] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-23 16:17:03,924] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-23 16:17:03,925] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-23 16:17:03,927] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-23 16:17:03,929] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-23 16:17:03,930] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-23 16:17:03,932] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-23 16:17:03,934] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-23 16:17:03,935] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-23 16:17:03,937] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-23 16:17:03,938] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-23 16:17:03,940] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-23 16:17:03,941] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-23 16:17:03,943] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-23 16:17:03,945] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-23 16:17:03,947] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-23 16:17:03,948] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-23 16:17:03,950] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-23 16:17:03,951] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-23 16:17:03,953] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-23 16:17:03,954] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-23 16:17:03,956] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-23 16:17:03,995] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:17:03,995] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-23 16:17:03,996] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:17:03,996] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-23 16:17:03,997] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-23 16:17:03,998] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:17:03,998] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-23 16:17:03,999] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-23 16:17:04,000] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "[2022-10-23 16:17:04,106] [INFO] (__main__.App) - End run\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n" + ] + } + ], + "source": [ + "app = App()\n", + "\n", + "app.run(input=\"dcm\", output=\"output\", model=\"multi_models\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once the application is verified inside Jupyter notebook, we can write the above Python code into Python files in an application folder.\n", + "\n", + "The application folder structure would look like below:\n", + "\n", + "```bash\n", + "my_app\n", + "├── __main__.py\n", + "└── app.py\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Create an application folder\n", + "!mkdir -p my_app" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### app.py" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing my_app/app.py\n" + ] + } + ], + "source": [ + "%%writefile my_app/app.py\n", + "\n", + "# Copyright 2021-2022 MONAI Consortium\n", + "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", + "# you may not use this file except in compliance with the License.\n", + "# You may obtain a copy of the License at\n", + "# http://www.apache.org/licenses/LICENSE-2.0\n", + "# Unless required by applicable law or agreed to in writing, software\n", + "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", + "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", + "# See the License for the specific language governing permissions and\n", + "# limitations under the License.\n", + "\n", + "import logging\n", + "\n", + "# Required for setting SegmentDescription attributes. Direct import as this is not part of App SDK package.\n", + "from pydicom.sr.codedict import codes\n", + "\n", + "import monai.deploy.core as md\n", + "from monai.deploy.core import Application, resource\n", + "from monai.deploy.core.domain import Image\n", + "from monai.deploy.core.io_type import IOType\n", + "from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator\n", + "from monai.deploy.operators.dicom_seg_writer_operator import DICOMSegmentationWriterOperator, SegmentDescription\n", + "from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator\n", + "from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator\n", + "from monai.deploy.operators.monai_bundle_inference_operator import (\n", + " BundleConfigNames,\n", + " IOMapping,\n", + " MonaiBundleInferenceOperator,\n", + ")\n", + "\n", + "\n", + "@resource(cpu=1, gpu=1, memory=\"7Gi\")\n", + "# Enforcing torch>=1.12.0 because one of the Bundles/TorchScripts, Pancreas CT Seg, was created\n", + "# with this version, and would fail to jit.load with lower version of torch.\n", + "# The Bundle Inference Operator as of now only requires torch>=1.10.2, and does not yet dynamically\n", + "# parse the MONAI bundle to get the required pip package or ver on initialization, hence it does not set\n", + "# its own @env decorator accordingly when the app is being packaged into a MONAI Package.\n", + "@md.env(pip_packages=[\"torch>=1.12.0\"])\n", + "# pip_packages can be a string that is a path(str) to requirements.txt file or a list of packages.\n", + "# The monai pkg is not required by this class, instead by the included operators.\n", + "class App(Application):\n", + " \"\"\"This example demonstrates how to create a multi-model/multi-AI application.\n", + "\n", + " The important steps are:\n", + " 1. Place the model TorchScripts in a defined folder structure, see below for details\n", + " 2. Pass the model name to the inference operator instance in the app\n", + " 3. Connect the input to and output from the inference operators, as required by the app\n", + "\n", + " Model organization for this example:\n", + "\n", + " multi_models\n", + " ├── pancreas_ct_dints\n", + " │ └── model.ts\n", + " └── spleen_ct\n", + " └── model.ts\n", + "\n", + " Note:\n", + " 1. The TorchScript files of MONAI Bundles can be downloaded from MONAI Model Zoo, at\n", + " https://github.com/Project-MONAI/model-zoo/tree/dev/models\n", + " 2. The input DICOM instances are from a DICOM Series of CT Abdomen, similar to the ones\n", + " used in the Spleen Segmentation example\n", + " 3. This example is purely for technical demonstration, not for clinical use\n", + " \"\"\"\n", + "\n", + " def __init__(self, *args, **kwargs):\n", + " \"\"\"Creates an application instance.\"\"\"\n", + " self._logger = logging.getLogger(\"{}.{}\".format(__name__, type(self).__name__))\n", + " super().__init__(*args, **kwargs)\n", + "\n", + " def run(self, *args, **kwargs):\n", + " # This method calls the base class to run. Can be omitted if simply calling through.\n", + " self._logger.info(f\"Begin {self.run.__name__}\")\n", + " super().run(*args, **kwargs)\n", + " self._logger.info(f\"End {self.run.__name__}\")\n", + "\n", + " def compose(self):\n", + " \"\"\"Creates the app specific operators and chain them up in the processing DAG.\"\"\"\n", + "\n", + " logging.info(f\"Begin {self.compose.__name__}\")\n", + "\n", + " # Create the custom operator(s) as well as SDK built-in operator(s).\n", + " study_loader_op = DICOMDataLoaderOperator()\n", + " series_selector_op = DICOMSeriesSelectorOperator(Sample_Rules_Text)\n", + " series_to_vol_op = DICOMSeriesToVolumeOperator()\n", + "\n", + " # Create the inference operator that supports MONAI Bundle and automates the inference.\n", + " # The IOMapping labels match the input and prediction keys in the pre and post processing.\n", + " # The model_name is optional when the app has only one model.\n", + " # The bundle_path argument optionally can be set to an accessible bundle file path in the dev\n", + " # environment, so when the app is packaged into a MAP, the operator can complete the bundle parsing\n", + " # during init to provide the optional packages info, parsed from the bundle, to the packager\n", + " # for it to install the packages in the MAP docker image.\n", + " # Setting output IOType to DISK only works only for leaf operators, not the case in this example.\n", + " # When multiple models/bundles are supported, create an inference operator for each.\n", + " #\n", + " # Pertinent MONAI Bundle:\n", + " # https://github.com/Project-MONAI/model-zoo/tree/dev/models/spleen_ct_segmentation, v0.3.2\n", + " # https://github.com/Project-MONAI/model-zoo/tree/dev/models/pancreas_ct_dints_segmentation, v0.3\n", + "\n", + " config_names = BundleConfigNames(config_names=[\"inference\"]) # Same as the default\n", + "\n", + " # This is the inference operator for the spleen_model bundle. Note the model name.\n", + " bundle_spleen_seg_op = MonaiBundleInferenceOperator(\n", + " input_mapping=[IOMapping(\"image\", Image, IOType.IN_MEMORY)],\n", + " output_mapping=[IOMapping(\"pred\", Image, IOType.IN_MEMORY)],\n", + " bundle_config_names=config_names,\n", + " model_name=\"spleen_ct\",\n", + " )\n", + "\n", + " # This is the inference operator for the pancreas_ct_dints bundle. Note the model name.\n", + " bundle_pancreas_seg_op = MonaiBundleInferenceOperator(\n", + " input_mapping=[IOMapping(\"image\", Image, IOType.IN_MEMORY)],\n", + " output_mapping=[IOMapping(\"pred\", Image, IOType.IN_MEMORY)],\n", + " model_name=\"pancreas_ct_dints\",\n", + " )\n", + "\n", + " # Create DICOM Seg writer providing the required segment description for each segment with\n", + " # the actual algorithm and the pertinent organ/tissue. The segment_label, algorithm_name,\n", + " # and algorithm_version are of DICOM VR LO type, limited to 64 chars.\n", + " # https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html\n", + " #\n", + " # NOTE: Each generated DICOM Seg will be a dcm file with the name based on the SOP instance UID.\n", + "\n", + " # Description for the Spleen seg, and the seg writer obj\n", + " seg_descriptions_spleen = [\n", + " SegmentDescription(\n", + " segment_label=\"Spleen\",\n", + " segmented_property_category=codes.SCT.Organ,\n", + " segmented_property_type=codes.SCT.Spleen,\n", + " algorithm_name=\"volumetric (3D) segmentation of the spleen from CT image\",\n", + " algorithm_family=codes.DCM.ArtificialIntelligence,\n", + " algorithm_version=\"0.3.2\",\n", + " )\n", + " ]\n", + "\n", + " custom_tags_spleen = {\"SeriesDescription\": \"AI Spleen Seg for research use only. Not for clinical use.\"}\n", + " dicom_seg_writer_spleen = DICOMSegmentationWriterOperator(\n", + " segment_descriptions=seg_descriptions_spleen, custom_tags=custom_tags_spleen\n", + " )\n", + "\n", + " # Description for the Pancreas seg, and the seg writer obj\n", + " seg_descriptions_pancreas = [\n", + " SegmentDescription(\n", + " segment_label=\"Pancreas\",\n", + " segmented_property_category=codes.SCT.Organ,\n", + " segmented_property_type=codes.SCT.Pancreas,\n", + " algorithm_name=\"volumetric (3D) segmentation of the pancreas from CT image\",\n", + " algorithm_family=codes.DCM.ArtificialIntelligence,\n", + " algorithm_version=\"0.3.0\",\n", + " )\n", + " ]\n", + " custom_tags_pancreas = {\"SeriesDescription\": \"AI Pancreas Seg for research use only. Not for clinical use.\"}\n", + "\n", + " dicom_seg_writer_pancreas = DICOMSegmentationWriterOperator(\n", + " segment_descriptions=seg_descriptions_pancreas, custom_tags=custom_tags_pancreas\n", + " )\n", + "\n", + " # NOTE: Sharp eyed readers can already see that the above instantiation of object can be simply parameterized.\n", + " # Very true, but leaving them as if for easy reading. In fact the whole app can be parameterized for general use.\n", + "\n", + " # Create the processing pipeline, by specifying the upstream and downstream operators, and\n", + " # ensuring the output from the former matches the input of the latter, in both name and type.\n", + " self.add_flow(study_loader_op, series_selector_op, {\"dicom_study_list\": \"dicom_study_list\"})\n", + " self.add_flow(\n", + " series_selector_op, series_to_vol_op, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", + "\n", + " # Feed the input image to all inference operators\n", + " self.add_flow(series_to_vol_op, bundle_spleen_seg_op, {\"image\": \"image\"})\n", + " # The Pancreas CT Seg bundle requires PyTorch 1.12.0 to avoid failure to load.\n", + " self.add_flow(series_to_vol_op, bundle_pancreas_seg_op, {\"image\": \"image\"})\n", + "\n", + " # Create DICOM Seg for one of the inference output\n", + " # Note below the dicom_seg_writer requires two inputs, each coming from a upstream operator.\n", + " self.add_flow(\n", + " series_selector_op, dicom_seg_writer_spleen, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", + " self.add_flow(bundle_spleen_seg_op, dicom_seg_writer_spleen, {\"pred\": \"seg_image\"})\n", + "\n", + " # Create DICOM Seg for one of the inference output\n", + " # Note below the dicom_seg_writer requires two inputs, each coming from a upstream operator.\n", + " self.add_flow(\n", + " series_selector_op, dicom_seg_writer_pancreas, {\"study_selected_series_list\": \"study_selected_series_list\"}\n", + " )\n", + " self.add_flow(bundle_pancreas_seg_op, dicom_seg_writer_pancreas, {\"pred\": \"seg_image\"})\n", + "\n", + " logging.info(f\"End {self.compose.__name__}\")\n", + "\n", + "\n", + "# This is a sample series selection rule in JSON, simply selecting CT series.\n", + "# If the study has more than 1 CT series, then all of them will be selected.\n", + "# Please see more detail in DICOMSeriesSelectorOperator.\n", + "Sample_Rules_Text = \"\"\"\n", + "{\n", + " \"selections\": [\n", + " {\n", + " \"name\": \"CT Series\",\n", + " \"conditions\": {\n", + " \"StudyDescription\": \"(.*?)\",\n", + " \"Modality\": \"(?i)CT\",\n", + " \"SeriesDescription\": \"(.*?)\"\n", + " }\n", + " }\n", + " ]\n", + "}\n", + "\"\"\"\n", + "\n", + "if __name__ == \"__main__\":\n", + " # Creates the app and test it standalone. When running is this mode, please note the following:\n", + " # -m , for model file path\n", + " # -i , for input DICOM CT series folder\n", + " # -o , for the output folder, default $PWD/output\n", + " # e.g.\n", + " # monai-deploy exec app.py -i input -m model/model.ts\n", + " #\n", + " logging.basicConfig(level=logging.DEBUG)\n", + " app_instance = App(do_run=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```python\n", + "if __name__ == \"__main__\":\n", + " App(do_run=True)\n", + "```\n", + "\n", + "The above lines are needed to execute the application code by using `python` interpreter.\n", + "\n", + "### \\_\\_main\\_\\_.py\n", + "\n", + "\\_\\_main\\_\\_.py is needed for MONAI Application Packager to detect the main application code (`app.py`) when the application is executed with the application folder path (e.g., `python simple_imaging_app`)." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing my_app/__main__.py\n" + ] + } + ], + "source": [ + "%%writefile my_app/__main__.py\n", + "import logging\n", + "from app import App\n", + "\n", + "if __name__ == \"__main__\":\n", + " logging.basicConfig(level=logging.DEBUG)\n", + " App(do_run=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "app.py\t__main__.py\n" + ] + } + ], + "source": [ + "!ls my_app" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this time, let's execute the app in the command line." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-10-23 16:17:09,434 - Begin compose\n", + "2022-10-23 16:17:09,436 - End compose\n", + "2022-10-23 16:17:09,436 - Begin run\n", + "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1304139, Operator ID: b4a3028c-409b-40b4-ac87-84063c8492ff)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1304139, Operator ID: dae12c6a-e046-499e-adab-3ee14e65d99d)\u001b[39m\n", + "[2022-10-23 16:17:09,959] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-23 16:17:09,959] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-23 16:17:09,959] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-23 16:17:09,959] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-23 16:17:09,959] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-23 16:17:09,959] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 16:17:09,959] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-23 16:17:09,959] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-23 16:17:09,959] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 16:17:09,960] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-23 16:17:09,960] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-23 16:17:09,960] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 16:17:09,960] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1304139, Operator ID: ca8c4e90-0e6d-4a3a-b3fe-7bac291ae196)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1304139, Operator ID: cf1e02c7-2435-44e2-8851-1d563187f704)\u001b[39m\n", + "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1304139, Operator ID: 2edbc688-1c59-47ae-8197-c38dc346a278)\u001b[39m\n", + "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1304139, Operator ID: 043a224c-fe51-4557-ba1b-09f2eef565f2)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-23 16:19:34,601] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-23 16:19:34,603] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-23 16:19:34,604] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-23 16:19:34,605] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-23 16:19:34,606] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-23 16:19:34,607] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-23 16:19:34,608] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-23 16:19:34,608] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-23 16:19:34,609] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-23 16:19:34,610] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-23 16:19:34,611] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-23 16:19:34,612] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-23 16:19:34,613] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-23 16:19:34,614] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-23 16:19:34,615] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-23 16:19:34,616] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-23 16:19:34,617] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-23 16:19:34,618] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-23 16:19:34,619] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-23 16:19:34,619] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-23 16:19:34,620] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-23 16:19:34,621] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-23 16:19:34,622] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-23 16:19:34,623] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-23 16:19:34,624] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-23 16:19:34,625] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-23 16:19:34,626] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-23 16:19:34,627] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-23 16:19:34,628] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-23 16:19:34,629] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-23 16:19:34,630] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-23 16:19:34,631] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-23 16:19:34,632] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-23 16:19:34,633] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-23 16:19:34,634] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-23 16:19:34,635] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-23 16:19:34,636] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-23 16:19:34,636] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-23 16:19:34,637] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-23 16:19:34,639] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-23 16:19:34,640] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-23 16:19:34,641] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-23 16:19:34,642] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-23 16:19:34,643] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-23 16:19:34,644] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-23 16:19:34,851] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-23 16:19:34,852] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-23 16:19:34,853] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-23 16:19:34,854] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-23 16:19:34,855] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-23 16:19:34,856] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-23 16:19:34,857] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-23 16:19:34,858] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-23 16:19:34,859] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-23 16:19:34,860] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-23 16:19:34,861] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-23 16:19:34,862] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-23 16:19:34,863] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-23 16:19:34,864] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-23 16:19:34,865] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-23 16:19:34,866] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-23 16:19:34,867] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-23 16:19:34,868] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-23 16:19:34,869] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-23 16:19:34,870] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-23 16:19:34,871] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-23 16:19:34,872] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-23 16:19:34,873] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-23 16:19:34,874] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-23 16:19:34,875] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-23 16:19:34,876] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-23 16:19:34,877] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-23 16:19:34,878] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-23 16:19:34,878] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-23 16:19:34,879] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-23 16:19:34,880] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-23 16:19:34,882] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-23 16:19:34,883] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-23 16:19:34,884] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-23 16:19:34,885] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-23 16:19:34,886] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-23 16:19:34,887] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-23 16:19:34,888] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-23 16:19:34,889] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-23 16:19:34,890] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-23 16:19:34,891] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-23 16:19:34,892] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-23 16:19:34,926] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:19:34,926] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-23 16:19:34,926] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:19:34,926] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-23 16:19:34,926] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-23 16:19:34,926] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:19:34,927] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-23 16:19:34,927] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-23 16:19:34,927] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1304139, Operator ID: 2bfeb96e-a8a9-43c6-bbb8-bd76590be9e0)\u001b[39m\n", + "[2022-10-23 16:19:36,319] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-23 16:19:36,320] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-23 16:19:36,321] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-23 16:19:36,322] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-23 16:19:36,323] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-23 16:19:36,324] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-23 16:19:36,325] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-23 16:19:36,326] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-23 16:19:36,327] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-23 16:19:36,328] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-23 16:19:36,329] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-23 16:19:36,330] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-23 16:19:36,331] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-23 16:19:36,332] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-23 16:19:36,333] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-23 16:19:36,334] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-23 16:19:36,335] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-23 16:19:36,336] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-23 16:19:36,337] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-23 16:19:36,338] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-23 16:19:36,339] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-23 16:19:36,340] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-23 16:19:36,341] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-23 16:19:36,342] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-23 16:19:36,343] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-23 16:19:36,344] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-23 16:19:36,345] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-23 16:19:36,346] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-23 16:19:36,347] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-23 16:19:36,348] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-23 16:19:36,349] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-23 16:19:36,350] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-23 16:19:36,351] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-23 16:19:36,352] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-23 16:19:36,352] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-23 16:19:36,353] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-23 16:19:36,354] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-23 16:19:36,355] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-23 16:19:36,356] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-23 16:19:36,357] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-23 16:19:36,358] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-23 16:19:36,359] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-23 16:19:36,360] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-23 16:19:36,361] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-23 16:19:36,363] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-23 16:19:36,364] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-23 16:19:36,365] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-23 16:19:36,366] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-23 16:19:36,367] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-23 16:19:36,368] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-23 16:19:36,369] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-23 16:19:36,370] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-23 16:19:36,371] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-23 16:19:36,372] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-23 16:19:36,373] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-23 16:19:36,374] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-23 16:19:36,376] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-23 16:19:36,377] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-23 16:19:36,378] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-23 16:19:36,379] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-23 16:19:36,380] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-23 16:19:36,381] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-23 16:19:36,382] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-23 16:19:36,383] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-23 16:19:36,384] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-23 16:19:36,385] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-23 16:19:36,386] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-23 16:19:36,387] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-23 16:19:36,412] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:19:36,412] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-23 16:19:36,413] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:19:36,413] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-23 16:19:36,413] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-23 16:19:36,413] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:19:36,413] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-23 16:19:36,413] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-23 16:19:36,413] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n", + "[2022-10-23 16:19:36,493] [INFO] (app.App) - End run\n" + ] + } + ], + "source": [ + "!python my_app -i dcm -o output -m multi_models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Above command is same with the following command line:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022-10-23 16:19:41,503 - Begin compose\n", + "2022-10-23 16:19:41,505 - End compose\n", + "2022-10-23 16:19:41,505 - Begin run\n", + "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1304251, Operator ID: 334fd88f-0c7a-4004-bf95-dcf21dc3fe7b)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1304251, Operator ID: 060f7ba3-b44b-4950-b732-014887fc8a41)\u001b[39m\n", + "[2022-10-23 16:19:42,025] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-23 16:19:42,025] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-23 16:19:42,026] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-23 16:19:42,026] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-23 16:19:42,026] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-23 16:19:42,026] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 16:19:42,026] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-23 16:19:42,026] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-23 16:19:42,026] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 16:19:42,026] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-23 16:19:42,026] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-23 16:19:42,026] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 16:19:42,026] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1304251, Operator ID: 0b23b294-4e3a-47f6-9a54-62e0cda43135)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1304251, Operator ID: 0d9916f3-9d87-4577-965a-89b7270e6509)\u001b[39m\n", + "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1304251, Operator ID: d6a9ceb4-9091-4cbd-ae01-a3ccda29ed26)\u001b[39m\n", + "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1304251, Operator ID: 9a75b60a-8e56-48b7-a1ed-b48fe4040bc1)\u001b[39m\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-23 16:22:06,783] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-23 16:22:06,785] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-23 16:22:06,786] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-23 16:22:06,787] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-23 16:22:06,788] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-23 16:22:06,789] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-23 16:22:06,790] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-23 16:22:06,791] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-23 16:22:06,791] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-23 16:22:06,792] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-23 16:22:06,793] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-23 16:22:06,794] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-23 16:22:06,796] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-23 16:22:06,797] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-23 16:22:06,798] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-23 16:22:06,799] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-23 16:22:06,800] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-23 16:22:06,801] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-23 16:22:06,802] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-23 16:22:06,803] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-23 16:22:06,804] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-23 16:22:06,805] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-23 16:22:06,805] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-23 16:22:06,806] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-23 16:22:06,807] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-23 16:22:06,808] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-23 16:22:06,809] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-23 16:22:06,810] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-23 16:22:06,811] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-23 16:22:06,812] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-23 16:22:06,813] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-23 16:22:06,814] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-23 16:22:06,815] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-23 16:22:06,816] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-23 16:22:06,817] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-23 16:22:06,818] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-23 16:22:06,819] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-23 16:22:06,820] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-23 16:22:06,821] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-23 16:22:06,822] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-23 16:22:06,823] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-23 16:22:06,824] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-23 16:22:06,825] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-23 16:22:06,826] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-23 16:22:06,827] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-23 16:22:06,828] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-23 16:22:06,829] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-23 16:22:06,830] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-23 16:22:06,831] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-23 16:22:06,832] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-23 16:22:06,833] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-23 16:22:06,834] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-23 16:22:06,835] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-23 16:22:06,836] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-23 16:22:06,837] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-23 16:22:06,838] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-23 16:22:06,839] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-23 16:22:06,840] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-23 16:22:06,841] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-23 16:22:06,842] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-23 16:22:06,843] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-23 16:22:06,844] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-23 16:22:06,845] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-23 16:22:06,846] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-23 16:22:06,847] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-23 16:22:06,848] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-23 16:22:06,849] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-23 16:22:06,850] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-23 16:22:06,851] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-23 16:22:06,852] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-23 16:22:06,854] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-23 16:22:06,855] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-23 16:22:06,856] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-23 16:22:06,857] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-23 16:22:06,858] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-23 16:22:06,859] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-23 16:22:06,860] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-23 16:22:06,861] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-23 16:22:06,862] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-23 16:22:06,863] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-23 16:22:06,864] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-23 16:22:06,865] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-23 16:22:06,866] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-23 16:22:06,867] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-23 16:22:06,868] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-23 16:22:06,870] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-23 16:22:06,872] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-23 16:22:06,908] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:22:06,908] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-23 16:22:06,908] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:22:06,908] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-23 16:22:06,908] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-23 16:22:06,909] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:22:06,909] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-23 16:22:06,909] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-23 16:22:06,909] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1304251, Operator ID: 0e637a28-dd05-412f-83a4-0b24d88b2666)\u001b[39m\n", + "[2022-10-23 16:22:08,310] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-23 16:22:08,312] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-23 16:22:08,313] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-23 16:22:08,315] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-23 16:22:08,316] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-23 16:22:08,317] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-23 16:22:08,319] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-23 16:22:08,320] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-23 16:22:08,322] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-23 16:22:08,323] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-23 16:22:08,324] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-23 16:22:08,326] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-23 16:22:08,327] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-23 16:22:08,329] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-23 16:22:08,330] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-23 16:22:08,331] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-23 16:22:08,333] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-23 16:22:08,334] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-23 16:22:08,336] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-23 16:22:08,337] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-23 16:22:08,338] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-23 16:22:08,340] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-23 16:22:08,341] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-23 16:22:08,342] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-23 16:22:08,344] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-23 16:22:08,345] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-23 16:22:08,347] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-23 16:22:08,348] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-23 16:22:08,349] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-23 16:22:08,351] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-23 16:22:08,352] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-23 16:22:08,354] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-23 16:22:08,355] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-23 16:22:08,356] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-23 16:22:08,358] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-23 16:22:08,359] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-23 16:22:08,361] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-23 16:22:08,362] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-23 16:22:08,364] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-23 16:22:08,365] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-23 16:22:08,366] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-23 16:22:08,368] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-23 16:22:08,369] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-23 16:22:08,371] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-23 16:22:08,372] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-23 16:22:08,374] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-23 16:22:08,375] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-23 16:22:08,376] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-23 16:22:08,378] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-23 16:22:08,379] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-23 16:22:08,381] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-23 16:22:08,382] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-23 16:22:08,384] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-23 16:22:08,385] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-23 16:22:08,387] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-23 16:22:08,388] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-23 16:22:08,390] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-23 16:22:08,391] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-23 16:22:08,392] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-23 16:22:08,394] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-23 16:22:08,395] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-23 16:22:08,397] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-23 16:22:08,399] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-23 16:22:08,401] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-23 16:22:08,402] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-23 16:22:08,404] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-23 16:22:08,405] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-23 16:22:08,406] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-23 16:22:08,435] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:22:08,435] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-23 16:22:08,435] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:22:08,435] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-23 16:22:08,436] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-23 16:22:08,436] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 16:22:08,436] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-23 16:22:08,436] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-23 16:22:08,436] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n", + "[2022-10-23 16:22:08,552] [INFO] (app.App) - End run\n" + ] + } + ], + "source": [ + "import os\n", + "os.environ['MKL_THREADING_LAYER'] = 'GNU'\n", + "!monai-deploy exec my_app -i dcm -o output -m multi_models" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.2.826.0.1.3680043.10.511.3.32702698541528038834448962737039727.dcm\n", + "1.2.826.0.1.3680043.10.511.3.35243474063498201272181310164390593.dcm\n", + "1.2.826.0.1.3680043.10.511.3.58837783720965139512384663048368908.dcm\n", + "1.2.826.0.1.3680043.10.511.3.78470550325986881852478238471324433.dcm\n", + "1.2.826.0.1.3680043.10.511.3.92918041342174595727451303717701071.dcm\n", + "1.2.826.0.1.3680043.10.511.3.96456581526320710751208157315102845.dcm\n" + ] + } + ], + "source": [ + "!ls output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Packaging app" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's package the app with [MONAI Application Packager](/developing_with_sdk/packaging_app).\n", + "\n", + "Note that with option `-b` a specific Nvidia PyTorch base docker image can be specified. Earlier versions of this image, e.g. `nvcr.io/nvidia/pytorch:21.11-py3`, caused Docker runtime errors in PyTorch, though the error only occurred when run in Jupyter." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2022-10-23 16:22:14,259] [INFO] (root) - Begin compose\n", + "[2022-10-23 16:22:14,261] [INFO] (root) - End compose\n", + "Building MONAI Application Package... Done\n", + "[2022-10-23 16:22:25,260] [INFO] (app_packager) - Successfully built my_app:latest\n" + ] + } + ], + "source": [ + "!monai-deploy package -b nvcr.io/nvidia/pytorch:22.08-py3 my_app --tag my_app:latest -m multi_models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + ":::{note}\n", + "Building a MONAI Application Package (Docker image) can take time. Use `-l DEBUG` option if you want to see the progress.\n", + ":::\n", + "\n", + "We can see that the Docker image is created." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "my_app latest 944face05f70 4 seconds ago 15.6GB\n" + ] + } + ], + "source": [ + "!docker image ls | grep my_app" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Executing packaged app locally\n", + "\n", + "The packaged app can be run locally through [MONAI Application Runner](/developing_with_sdk/executing_packaged_app_locally)." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Checking dependencies...\n", + "--> Verifying if \"docker\" is installed...\n", + "\n", + "--> Verifying if \"my_app:latest\" is available...\n", + "\n", + "Checking for MAP \"my_app:latest\" locally\n", + "\"my_app:latest\" found.\n", + "\n", + "Reading MONAI App Package manifest...\n", + "--> Verifying if \"nvidia-docker\" is installed...\n", + "\n", + "/opt/conda/lib/python3.8/site-packages/scipy/__init__.py:138: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.4)\n", + " warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion} is required for this version of \"\n", + "2022-10-23 23:22:41,163 - Begin compose\n", + "2022-10-23 23:22:41,166 - End compose\n", + "2022-10-23 23:22:41,166 - Begin run\n", + "\u001b[34mGoing to initiate execution of operator DICOMDataLoaderOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMDataLoaderOperator \u001b[33m(Process ID: 1, Operator ID: 668c5a88-f99c-42d9-b204-e7a09de71572)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMDataLoaderOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesSelectorOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesSelectorOperator \u001b[33m(Process ID: 1, Operator ID: 611f5234-1a92-4e40-a108-a99a0cba018a)\u001b[39m\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - Finding series for Selection named: CT Series\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - Searching study, : 1.3.6.1.4.1.14519.5.2.1.7085.2626.822645453932810382886582736291\n", + " # of series: 1\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - Working on series, instance UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - On attribute: 'StudyDescription' to match value: '(.*?)'\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - Series attribute StudyDescription value: CT ABDOMEN W IV CONTRAST\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - On attribute: 'Modality' to match value: '(?i)CT'\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - Series attribute Modality value: CT\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - On attribute: 'SeriesDescription' to match value: '(.*?)'\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - Series attribute SeriesDescription value: ABD/PANC 3.0 B31f\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - Series attribute string value did not match. Try regEx.\n", + "[2022-10-23 23:22:41,714] [INFO] (root) - Selected Series, UID: 1.3.6.1.4.1.14519.5.2.1.7085.2626.119403521930927333027265674239\n", + "\u001b[34mDone performing execution of operator DICOMSeriesSelectorOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSeriesToVolumeOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSeriesToVolumeOperator \u001b[33m(Process ID: 1, Operator ID: 6acc05c6-e023-47de-9323-321855c909f3)\u001b[39m\n", + "\u001b[34mDone performing execution of operator DICOMSeriesToVolumeOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1, Operator ID: 85070cf7-ccee-432f-92a6-ec810ac0a052)\u001b[39m\n", + "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator MonaiBundleInferenceOperator\u001b[39m\n", + "\u001b[32mExecuting operator MonaiBundleInferenceOperator \u001b[33m(Process ID: 1, Operator ID: 440a749c-6456-47f0-9913-c553a253bd6f)\u001b[39m\n", + "\u001b[34mDone performing execution of operator MonaiBundleInferenceOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: 0ad2a122-51f4-4ac2-b6c1-87b26ac9cb26)\u001b[39m\n", + "/root/.local/lib/python3.8/site-packages/highdicom/valuerep.py:54: UserWarning: The string \"C3N-00198\" is unlikely to represent the intended person name since it contains only a single component. Construct a person name according to the format in described in http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_6.2.html#sect_6.2.1.2, or, in pydicom 2.2.0 or later, use the pydicom.valuerep.PersonName.from_named_components() method to construct the person name correctly. If a single-component name is really intended, add a trailing caret character to disambiguate the name.\n", + " warnings.warn(\n", + "[2022-10-23 23:24:33,697] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-23 23:24:33,699] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-23 23:24:33,700] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-23 23:24:33,702] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-23 23:24:33,703] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-23 23:24:33,705] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-23 23:24:33,706] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-23 23:24:33,708] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-23 23:24:33,709] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-23 23:24:33,711] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-23 23:24:33,712] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-23 23:24:33,714] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-23 23:24:33,715] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-23 23:24:33,717] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-23 23:24:33,718] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-23 23:24:33,719] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-23 23:24:33,721] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-23 23:24:33,722] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-23 23:24:33,724] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-23 23:24:33,725] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-23 23:24:33,727] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-23 23:24:33,728] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-23 23:24:33,730] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-23 23:24:33,731] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-23 23:24:33,733] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-23 23:24:33,734] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-23 23:24:33,736] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-23 23:24:33,738] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-23 23:24:33,740] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-23 23:24:33,741] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-23 23:24:33,743] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-23 23:24:33,744] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-23 23:24:33,746] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-23 23:24:33,747] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-23 23:24:33,749] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-23 23:24:33,750] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-23 23:24:33,752] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-23 23:24:33,753] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-23 23:24:33,755] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-23 23:24:33,756] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-23 23:24:33,758] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-23 23:24:33,759] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-23 23:24:33,761] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-23 23:24:33,762] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-23 23:24:33,764] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-23 23:24:33,766] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-23 23:24:33,767] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-23 23:24:33,769] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-23 23:24:33,770] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-23 23:24:33,772] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-23 23:24:33,773] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-23 23:24:33,775] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-23 23:24:33,777] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-23 23:24:33,778] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-23 23:24:33,780] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-23 23:24:33,782] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-23 23:24:33,784] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-23 23:24:33,785] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-23 23:24:33,787] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-23 23:24:33,788] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-23 23:24:33,790] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-23 23:24:33,792] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-23 23:24:33,793] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-23 23:24:33,795] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-23 23:24:33,796] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-23 23:24:33,798] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-23 23:24:33,800] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-23 23:24:33,801] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-23 23:24:33,803] [INFO] (highdicom.seg.sop) - add plane #68 for segment #1\n", + "[2022-10-23 23:24:33,804] [INFO] (highdicom.seg.sop) - add plane #69 for segment #1\n", + "[2022-10-23 23:24:33,806] [INFO] (highdicom.seg.sop) - add plane #70 for segment #1\n", + "[2022-10-23 23:24:33,808] [INFO] (highdicom.seg.sop) - add plane #71 for segment #1\n", + "[2022-10-23 23:24:33,809] [INFO] (highdicom.seg.sop) - add plane #72 for segment #1\n", + "[2022-10-23 23:24:33,811] [INFO] (highdicom.seg.sop) - add plane #73 for segment #1\n", + "[2022-10-23 23:24:33,813] [INFO] (highdicom.seg.sop) - add plane #74 for segment #1\n", + "[2022-10-23 23:24:33,814] [INFO] (highdicom.seg.sop) - add plane #75 for segment #1\n", + "[2022-10-23 23:24:33,816] [INFO] (highdicom.seg.sop) - add plane #76 for segment #1\n", + "[2022-10-23 23:24:33,817] [INFO] (highdicom.seg.sop) - add plane #77 for segment #1\n", + "[2022-10-23 23:24:33,819] [INFO] (highdicom.seg.sop) - add plane #78 for segment #1\n", + "[2022-10-23 23:24:33,821] [INFO] (highdicom.seg.sop) - add plane #79 for segment #1\n", + "[2022-10-23 23:24:33,822] [INFO] (highdicom.seg.sop) - add plane #80 for segment #1\n", + "[2022-10-23 23:24:33,824] [INFO] (highdicom.seg.sop) - add plane #81 for segment #1\n", + "[2022-10-23 23:24:33,826] [INFO] (highdicom.seg.sop) - add plane #82 for segment #1\n", + "[2022-10-23 23:24:33,827] [INFO] (highdicom.seg.sop) - add plane #83 for segment #1\n", + "[2022-10-23 23:24:33,829] [INFO] (highdicom.seg.sop) - add plane #84 for segment #1\n", + "[2022-10-23 23:24:33,831] [INFO] (highdicom.seg.sop) - add plane #85 for segment #1\n", + "[2022-10-23 23:24:33,832] [INFO] (highdicom.seg.sop) - add plane #86 for segment #1\n", + "[2022-10-23 23:24:33,874] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 23:24:33,874] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-23 23:24:33,875] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 23:24:33,875] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-23 23:24:33,875] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-23 23:24:33,875] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 23:24:33,875] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-23 23:24:33,876] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-23 23:24:33,876] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator DICOMSegmentationWriterOperator\u001b[39m\n", + "\u001b[32mExecuting operator DICOMSegmentationWriterOperator \u001b[33m(Process ID: 1, Operator ID: ff56e972-1df7-4945-b474-b072cbfc6b57)\u001b[39m\n", + "[2022-10-23 23:24:35,330] [INFO] (highdicom.seg.sop) - add plane #0 for segment #1\n", + "[2022-10-23 23:24:35,332] [INFO] (highdicom.seg.sop) - add plane #1 for segment #1\n", + "[2022-10-23 23:24:35,333] [INFO] (highdicom.seg.sop) - add plane #2 for segment #1\n", + "[2022-10-23 23:24:35,335] [INFO] (highdicom.seg.sop) - add plane #3 for segment #1\n", + "[2022-10-23 23:24:35,336] [INFO] (highdicom.seg.sop) - add plane #4 for segment #1\n", + "[2022-10-23 23:24:35,338] [INFO] (highdicom.seg.sop) - add plane #5 for segment #1\n", + "[2022-10-23 23:24:35,339] [INFO] (highdicom.seg.sop) - add plane #6 for segment #1\n", + "[2022-10-23 23:24:35,340] [INFO] (highdicom.seg.sop) - add plane #7 for segment #1\n", + "[2022-10-23 23:24:35,342] [INFO] (highdicom.seg.sop) - add plane #8 for segment #1\n", + "[2022-10-23 23:24:35,343] [INFO] (highdicom.seg.sop) - add plane #9 for segment #1\n", + "[2022-10-23 23:24:35,345] [INFO] (highdicom.seg.sop) - add plane #10 for segment #1\n", + "[2022-10-23 23:24:35,346] [INFO] (highdicom.seg.sop) - add plane #11 for segment #1\n", + "[2022-10-23 23:24:35,347] [INFO] (highdicom.seg.sop) - add plane #12 for segment #1\n", + "[2022-10-23 23:24:35,349] [INFO] (highdicom.seg.sop) - add plane #13 for segment #1\n", + "[2022-10-23 23:24:35,350] [INFO] (highdicom.seg.sop) - add plane #14 for segment #1\n", + "[2022-10-23 23:24:35,352] [INFO] (highdicom.seg.sop) - add plane #15 for segment #1\n", + "[2022-10-23 23:24:35,353] [INFO] (highdicom.seg.sop) - add plane #16 for segment #1\n", + "[2022-10-23 23:24:35,355] [INFO] (highdicom.seg.sop) - add plane #17 for segment #1\n", + "[2022-10-23 23:24:35,356] [INFO] (highdicom.seg.sop) - add plane #18 for segment #1\n", + "[2022-10-23 23:24:35,357] [INFO] (highdicom.seg.sop) - add plane #19 for segment #1\n", + "[2022-10-23 23:24:35,359] [INFO] (highdicom.seg.sop) - add plane #20 for segment #1\n", + "[2022-10-23 23:24:35,360] [INFO] (highdicom.seg.sop) - add plane #21 for segment #1\n", + "[2022-10-23 23:24:35,362] [INFO] (highdicom.seg.sop) - add plane #22 for segment #1\n", + "[2022-10-23 23:24:35,363] [INFO] (highdicom.seg.sop) - add plane #23 for segment #1\n", + "[2022-10-23 23:24:35,365] [INFO] (highdicom.seg.sop) - add plane #24 for segment #1\n", + "[2022-10-23 23:24:35,366] [INFO] (highdicom.seg.sop) - add plane #25 for segment #1\n", + "[2022-10-23 23:24:35,367] [INFO] (highdicom.seg.sop) - add plane #26 for segment #1\n", + "[2022-10-23 23:24:35,369] [INFO] (highdicom.seg.sop) - add plane #27 for segment #1\n", + "[2022-10-23 23:24:35,370] [INFO] (highdicom.seg.sop) - add plane #28 for segment #1\n", + "[2022-10-23 23:24:35,372] [INFO] (highdicom.seg.sop) - add plane #29 for segment #1\n", + "[2022-10-23 23:24:35,373] [INFO] (highdicom.seg.sop) - add plane #30 for segment #1\n", + "[2022-10-23 23:24:35,375] [INFO] (highdicom.seg.sop) - add plane #31 for segment #1\n", + "[2022-10-23 23:24:35,376] [INFO] (highdicom.seg.sop) - add plane #32 for segment #1\n", + "[2022-10-23 23:24:35,378] [INFO] (highdicom.seg.sop) - add plane #33 for segment #1\n", + "[2022-10-23 23:24:35,379] [INFO] (highdicom.seg.sop) - add plane #34 for segment #1\n", + "[2022-10-23 23:24:35,381] [INFO] (highdicom.seg.sop) - add plane #35 for segment #1\n", + "[2022-10-23 23:24:35,383] [INFO] (highdicom.seg.sop) - add plane #36 for segment #1\n", + "[2022-10-23 23:24:35,384] [INFO] (highdicom.seg.sop) - add plane #37 for segment #1\n", + "[2022-10-23 23:24:35,386] [INFO] (highdicom.seg.sop) - add plane #38 for segment #1\n", + "[2022-10-23 23:24:35,387] [INFO] (highdicom.seg.sop) - add plane #39 for segment #1\n", + "[2022-10-23 23:24:35,389] [INFO] (highdicom.seg.sop) - add plane #40 for segment #1\n", + "[2022-10-23 23:24:35,390] [INFO] (highdicom.seg.sop) - add plane #41 for segment #1\n", + "[2022-10-23 23:24:35,391] [INFO] (highdicom.seg.sop) - add plane #42 for segment #1\n", + "[2022-10-23 23:24:35,393] [INFO] (highdicom.seg.sop) - add plane #43 for segment #1\n", + "[2022-10-23 23:24:35,395] [INFO] (highdicom.seg.sop) - add plane #44 for segment #1\n", + "[2022-10-23 23:24:35,396] [INFO] (highdicom.seg.sop) - add plane #45 for segment #1\n", + "[2022-10-23 23:24:35,397] [INFO] (highdicom.seg.sop) - add plane #46 for segment #1\n", + "[2022-10-23 23:24:35,399] [INFO] (highdicom.seg.sop) - add plane #47 for segment #1\n", + "[2022-10-23 23:24:35,400] [INFO] (highdicom.seg.sop) - add plane #48 for segment #1\n", + "[2022-10-23 23:24:35,402] [INFO] (highdicom.seg.sop) - add plane #49 for segment #1\n", + "[2022-10-23 23:24:35,403] [INFO] (highdicom.seg.sop) - add plane #50 for segment #1\n", + "[2022-10-23 23:24:35,405] [INFO] (highdicom.seg.sop) - add plane #51 for segment #1\n", + "[2022-10-23 23:24:35,406] [INFO] (highdicom.seg.sop) - add plane #52 for segment #1\n", + "[2022-10-23 23:24:35,408] [INFO] (highdicom.seg.sop) - add plane #53 for segment #1\n", + "[2022-10-23 23:24:35,409] [INFO] (highdicom.seg.sop) - add plane #54 for segment #1\n", + "[2022-10-23 23:24:35,411] [INFO] (highdicom.seg.sop) - add plane #55 for segment #1\n", + "[2022-10-23 23:24:35,413] [INFO] (highdicom.seg.sop) - add plane #56 for segment #1\n", + "[2022-10-23 23:24:35,414] [INFO] (highdicom.seg.sop) - add plane #57 for segment #1\n", + "[2022-10-23 23:24:35,416] [INFO] (highdicom.seg.sop) - add plane #58 for segment #1\n", + "[2022-10-23 23:24:35,417] [INFO] (highdicom.seg.sop) - add plane #59 for segment #1\n", + "[2022-10-23 23:24:35,419] [INFO] (highdicom.seg.sop) - add plane #60 for segment #1\n", + "[2022-10-23 23:24:35,420] [INFO] (highdicom.seg.sop) - add plane #61 for segment #1\n", + "[2022-10-23 23:24:35,422] [INFO] (highdicom.seg.sop) - add plane #62 for segment #1\n", + "[2022-10-23 23:24:35,423] [INFO] (highdicom.seg.sop) - add plane #63 for segment #1\n", + "[2022-10-23 23:24:35,425] [INFO] (highdicom.seg.sop) - add plane #64 for segment #1\n", + "[2022-10-23 23:24:35,426] [INFO] (highdicom.seg.sop) - add plane #65 for segment #1\n", + "[2022-10-23 23:24:35,428] [INFO] (highdicom.seg.sop) - add plane #66 for segment #1\n", + "[2022-10-23 23:24:35,429] [INFO] (highdicom.seg.sop) - add plane #67 for segment #1\n", + "[2022-10-23 23:24:35,465] [INFO] (highdicom.base) - copy Image-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 23:24:35,465] [INFO] (highdicom.base) - copy attributes of module \"Specimen\"\n", + "[2022-10-23 23:24:35,465] [INFO] (highdicom.base) - copy Patient-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 23:24:35,465] [INFO] (highdicom.base) - copy attributes of module \"Patient\"\n", + "[2022-10-23 23:24:35,466] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Subject\"\n", + "[2022-10-23 23:24:35,466] [INFO] (highdicom.base) - copy Study-related attributes from dataset \"1.3.6.1.4.1.14519.5.2.1.7085.2626.936983343951485811186213470191\"\n", + "[2022-10-23 23:24:35,466] [INFO] (highdicom.base) - copy attributes of module \"General Study\"\n", + "[2022-10-23 23:24:35,466] [INFO] (highdicom.base) - copy attributes of module \"Patient Study\"\n", + "[2022-10-23 23:24:35,466] [INFO] (highdicom.base) - copy attributes of module \"Clinical Trial Study\"\n", + "\u001b[34mDone performing execution of operator DICOMSegmentationWriterOperator\n", + "\u001b[39m\n", + "[2022-10-23 23:24:35,584] [INFO] (__main__.App) - End run\n" + ] + } + ], + "source": [ + "# Copy DICOM files are in 'dcm' folder\n", + "\n", + "# Launch the app\n", + "!monai-deploy run my_app:latest dcm output" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.2.826.0.1.3680043.10.511.3.12552687019247779801993647988962741.dcm\n", + "1.2.826.0.1.3680043.10.511.3.32702698541528038834448962737039727.dcm\n", + "1.2.826.0.1.3680043.10.511.3.35243474063498201272181310164390593.dcm\n", + "1.2.826.0.1.3680043.10.511.3.58837783720965139512384663048368908.dcm\n", + "1.2.826.0.1.3680043.10.511.3.78470550325986881852478238471324433.dcm\n", + "1.2.826.0.1.3680043.10.511.3.79550200308831900854298455254044232.dcm\n", + "1.2.826.0.1.3680043.10.511.3.92918041342174595727451303717701071.dcm\n", + "1.2.826.0.1.3680043.10.511.3.96456581526320710751208157315102845.dcm\n" + ] + } + ], + "source": [ + "!ls output" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.8.10 ('.venv': venv)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + }, + "vscode": { + "interpreter": { + "hash": "9b4ab1155d0cd1042497eb40fd55b2d15caf4b3c0f9fbfcc7ba4404045d40f12" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 401871c29df1c2b217e12f3ccd0f27b96cbfdd65 Mon Sep 17 00:00:00 2001 From: gupta Date: Tue, 1 Nov 2022 14:11:41 -0400 Subject: [PATCH 034/216] Added breast density classifier app Signed-off-by: gupta Signed-off-by: Simone Bendazzoli --- .../breast_density_classifer_app/README.md | 29 ++++++ .../breast_density_classifer_app/__init__.py | 7 ++ .../breast_density_classifer_app/__main__.py | 4 + .../apps/breast_density_classifer_app/app.py | 63 ++++++++++++ .../breast_density_classifier_operator.py | 95 +++++++++++++++++++ 5 files changed, 198 insertions(+) create mode 100644 examples/apps/breast_density_classifer_app/README.md create mode 100644 examples/apps/breast_density_classifer_app/__init__.py create mode 100644 examples/apps/breast_density_classifer_app/__main__.py create mode 100644 examples/apps/breast_density_classifer_app/app.py create mode 100644 examples/apps/breast_density_classifer_app/breast_density_classifier_operator.py diff --git a/examples/apps/breast_density_classifer_app/README.md b/examples/apps/breast_density_classifer_app/README.md new file mode 100644 index 00000000..7c44e3a0 --- /dev/null +++ b/examples/apps/breast_density_classifer_app/README.md @@ -0,0 +1,29 @@ +## A MONAI Application Package to deploy breast density classification algorithm +This MAP is based on the Breast Density Model in MONAI [Model-Zoo](https://github.com/Project-MONAI/model-zoo). This model is developed at the Center for Augmented Intelligece in Imaging at the Mayo Clinic, Florida. +For any questions, feel free to contact Vikash Gupta (gupta.vikash@mayo.edu) +Sample data and a torchscript model can be downloaded from https://drive.google.com/drive/folders/1Dryozl2MwNunpsGaFPVoaKBLkNbVM3Hu?usp=sharing + + +## Run the application package +### Python CLI +``` +python app.py -i -o -m +``` + +### MONAI Deploy CLI +``` +monai-deploy exec app.py -i -o -m +``` +Alternatively, you can go a level higher and execute +``` +monai-deploy exec breast_density_classification_app -i -o -m +``` + + +### Packaging the monai app +In order to build the monai app, Go a level up and execute the following command. +``` +monai-deploy package -b nvcr.io/nvidia/pytorch:21.12-py3 breast_density_classification_app --tag breast_density:0.1.0 -m $breast_density_model +``` + + diff --git a/examples/apps/breast_density_classifer_app/__init__.py b/examples/apps/breast_density_classifer_app/__init__.py new file mode 100644 index 00000000..521cb31b --- /dev/null +++ b/examples/apps/breast_density_classifer_app/__init__.py @@ -0,0 +1,7 @@ +import os +import sys + +_current_dir = os.path.abspath(os.path.dirname(__file__)) +if sys.path and os.path.abspath(sys.path[0]) != _current_dir: + sys.path.insert(0, _current_dir) +del _current_dir diff --git a/examples/apps/breast_density_classifer_app/__main__.py b/examples/apps/breast_density_classifer_app/__main__.py new file mode 100644 index 00000000..c4cb061f --- /dev/null +++ b/examples/apps/breast_density_classifer_app/__main__.py @@ -0,0 +1,4 @@ +from app import BreastClassificationApp + +if __name__ == '__main__': + BreastClassificationApp(do_run=True) diff --git a/examples/apps/breast_density_classifer_app/app.py b/examples/apps/breast_density_classifer_app/app.py new file mode 100644 index 00000000..c473b93d --- /dev/null +++ b/examples/apps/breast_density_classifer_app/app.py @@ -0,0 +1,63 @@ +import json +from monai.data import Dataset, DataLoader +import logging +from monai.deploy.core import DataPath, ExecutionContext, Image, InputContext, IOType, Operator, OutputContext, Application +import monai.deploy.core as md +from monai.deploy.operators.dicom_text_sr_writer_operator import DICOMTextSRWriterOperator +from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator +from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator +from monai.deploy.operators.dicom_text_sr_writer_operator import DICOMTextSRWriterOperator, ModelInfo, EquipmentInfo +from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator +import os +from monai.deploy.operators.monai_seg_inference_operator import InMemImageReader +from monai.data.meta_tensor import MetaTensor +import numpy as np +from monai.transforms import (Compose, AsChannelFirst, + LoadImage, SqueezeDim, + EnsureType, SaveImage, + Activations, + EnsureChannelFirst, + NormalizeIntensity, + Resize, + EnsureType, + ScaleIntensity, + AddChannel, + ToTensor, + RepeatChannel) +from pathlib import Path +import torch +from typing import Text, Dict, List +from monai.deploy.core.domain.dicom_series_selection import StudySelectedSeries +import numpy +from breast_density_classifier_operator import ClassifierOperator +from pydicom.dataset import FileDataset +from pydicom import dcmread + +class BreastClassificationApp(Application): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def compose(self): + model_info = ModelInfo("MONAI Model for Breast Density", "BreastDensity", "0.1", "Center for Augmented Intelligence in Imaging, Mayo Clinic, Florida") + my_equipment= EquipmentInfo(manufacturer="MONAI Deploy App SD", manufacturer_model="DICOM SR Writer") + my_special_tags={"SeriesDescription": "Not for clinical use"} + study_loader_op = DICOMDataLoaderOperator() + series_selector_op = DICOMSeriesSelectorOperator(rules="") + series_to_vol_op = DICOMSeriesToVolumeOperator() + classifier_op = ClassifierOperator() + sr_writer_op = DICOMTextSRWriterOperator(copy_tags=False, model_info=model_info, equipment_info=my_equipment, custom_tags=my_special_tags) + + self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) + self.add_flow(series_selector_op, series_to_vol_op, {"study_selected_series_list": "study_selected_series_list"}) + self.add_flow(series_to_vol_op, classifier_op, {"image": "image"}) + self.add_flow(classifier_op, sr_writer_op, {"result_text": "classification_result"}) + +def main(): + app = BreastClassificationApp() + image_dir='/home/gupta/Documents/MONAI-DEPLOY/BreastDensity/sampleDICOMs/1/BI_BREAST_SCREENING_BILATERAL_WITH_TOMOSYNTHESIS-2019-07-08/1/L_CC_C-View' + + model_path = './model/traced_ts_model.pt' + app.run(input=image_dir, output='./output', model=model_path) + +if __name__ == '__main__': + main() diff --git a/examples/apps/breast_density_classifer_app/breast_density_classifier_operator.py b/examples/apps/breast_density_classifer_app/breast_density_classifier_operator.py new file mode 100644 index 00000000..41ef1a26 --- /dev/null +++ b/examples/apps/breast_density_classifer_app/breast_density_classifier_operator.py @@ -0,0 +1,95 @@ +import monai.deploy.core as md +import numpy +from monai.deploy.core import DataPath, ExecutionContext, Image, InputContext, IOType, Operator, OutputContext +from monai.data import Dataset, DataLoader +import torch +from typing import Dict +from monai.transforms import (LoadImage, EnsureChannelFirst, SqueezeDim, EnsureType, + NormalizeIntensity, Resize, RepeatChannel, Compose, Activations) +from monai.deploy.operators.monai_seg_inference_operator import InMemImageReader +import json +import numpy as np +from typing import Text + +@md.input("image", Image, IOType.IN_MEMORY) +@md.output("result_text", Text, IOType.IN_MEMORY) +class ClassifierOperator(Operator): + def __init__(self): + super().__init__() + self._input_dataset_key = "image" + self._pred_dataset_key = "pred" + + def _convert_dicom_metadata_datatype(self, metadata: Dict): + if not metadata: + return metadata + + # Try to convert data type for the well knowned attributes. Add more as needed. + if metadata.get("SeriesInstanceUID", None): + try: + metadata["SeriesInstanceUID"] = str(metadata["SeriesInstanceUID"]) + except Exception: + pass + if metadata.get("row_pixel_spacing", None): + try: + metadata["row_pixel_spacing"] = float(metadata["row_pixel_spacing"]) + except Exception: + pass + if metadata.get("col_pixel_spacing", None): + try: + metadata["col_pixel_spacing"] = float(metadata["col_pixel_spacing"]) + except Exception: + pass + + print("Converted Image object metadata:") + for k, v in metadata.items(): + print(f"{k}: {v}, type {type(v)}") + + return metadata + + def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): + input_image = op_input.get("image") + _reader = InMemImageReader(input_image) + input_img_metadata = self._convert_dicom_metadata_datatype(input_image.metadata()) + img_name = str(input_img_metadata.get("SeriesInstanceUID", "Img_in_context")) + + output_path = context.output.get().path + + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + model = context.models.get() + + pre_transforms = self.pre_process(_reader) + post_transforms = self.post_process() + + dataset = Dataset(data=[{self._input_dataset_key: img_name}], transform=pre_transforms) + dataloader = DataLoader(dataset, batch_size=10, shuffle=False, num_workers=0) + + with torch.no_grad(): + for d in dataloader: + image = d[0].to(device) + outputs = model(image) + out = post_transforms(outputs).data.cpu().numpy()[0] + print(out) + + result_dict = 'A ' + ':' + str(out[0]) + ' B ' + ':' + str(out[1]) + ' C ' + ':' + str( + out[2]) + ' D ' + ':' + str(out[3]) + result_dict_out = {'A': str(out[0]), 'B': str(out[1]), 'C': str(out[2]), 'D': str(out[3])} + output_folder = context.output.get().path + output_folder.mkdir(parents=True, exist_ok=True) + + + + output_path = output_folder / "output.json" + with open(output_path, "w") as fp: + json.dump(result_dict, fp) + + op_output.set(result_dict, "result_text") + + + def pre_process(self, ImageReader) -> Compose: + return Compose([LoadImage(reader=ImageReader, image_only=True), EnsureChannelFirst(), SqueezeDim(dim=3), + NormalizeIntensity(), Resize(spatial_size=(299, 299)), RepeatChannel(repeats=3), + EnsureChannelFirst()]) + + def post_process(self) -> Compose: + return Compose([EnsureType(), Activations(sigmoid=True)]) + From 17e650e7a1b961b2409617c3f3c13d1e2ea1544f Mon Sep 17 00:00:00 2001 From: gupta Date: Tue, 1 Nov 2022 14:41:40 -0400 Subject: [PATCH 035/216] Fied formatting and readme Signed-off-by: gupta Signed-off-by: Simone Bendazzoli --- .../breast_density_classifer_app/__main__.py | 4 +- .../apps/breast_density_classifer_app/app.py | 93 ++++++++----------- .../breast_density_classifier_operator.py | 58 +++++++----- 3 files changed, 77 insertions(+), 78 deletions(-) diff --git a/examples/apps/breast_density_classifer_app/__main__.py b/examples/apps/breast_density_classifer_app/__main__.py index c4cb061f..6c420630 100644 --- a/examples/apps/breast_density_classifer_app/__main__.py +++ b/examples/apps/breast_density_classifer_app/__main__.py @@ -1,4 +1,4 @@ from app import BreastClassificationApp -if __name__ == '__main__': - BreastClassificationApp(do_run=True) +if __name__ == "__main__": + BreastClassificationApp(do_run=True) diff --git a/examples/apps/breast_density_classifer_app/app.py b/examples/apps/breast_density_classifer_app/app.py index c473b93d..e64da6d6 100644 --- a/examples/apps/breast_density_classifer_app/app.py +++ b/examples/apps/breast_density_classifer_app/app.py @@ -1,63 +1,48 @@ -import json -from monai.data import Dataset, DataLoader -import logging -from monai.deploy.core import DataPath, ExecutionContext, Image, InputContext, IOType, Operator, OutputContext, Application -import monai.deploy.core as md -from monai.deploy.operators.dicom_text_sr_writer_operator import DICOMTextSRWriterOperator +from breast_density_classifier_operator import ClassifierOperator + +from monai.deploy.core import Application from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator -from monai.deploy.operators.dicom_text_sr_writer_operator import DICOMTextSRWriterOperator, ModelInfo, EquipmentInfo from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator -import os -from monai.deploy.operators.monai_seg_inference_operator import InMemImageReader -from monai.data.meta_tensor import MetaTensor -import numpy as np -from monai.transforms import (Compose, AsChannelFirst, - LoadImage, SqueezeDim, - EnsureType, SaveImage, - Activations, - EnsureChannelFirst, - NormalizeIntensity, - Resize, - EnsureType, - ScaleIntensity, - AddChannel, - ToTensor, - RepeatChannel) -from pathlib import Path -import torch -from typing import Text, Dict, List -from monai.deploy.core.domain.dicom_series_selection import StudySelectedSeries -import numpy -from breast_density_classifier_operator import ClassifierOperator -from pydicom.dataset import FileDataset -from pydicom import dcmread +from monai.deploy.operators.dicom_text_sr_writer_operator import DICOMTextSRWriterOperator, EquipmentInfo, ModelInfo + class BreastClassificationApp(Application): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - def compose(self): - model_info = ModelInfo("MONAI Model for Breast Density", "BreastDensity", "0.1", "Center for Augmented Intelligence in Imaging, Mayo Clinic, Florida") - my_equipment= EquipmentInfo(manufacturer="MONAI Deploy App SD", manufacturer_model="DICOM SR Writer") - my_special_tags={"SeriesDescription": "Not for clinical use"} - study_loader_op = DICOMDataLoaderOperator() - series_selector_op = DICOMSeriesSelectorOperator(rules="") - series_to_vol_op = DICOMSeriesToVolumeOperator() - classifier_op = ClassifierOperator() - sr_writer_op = DICOMTextSRWriterOperator(copy_tags=False, model_info=model_info, equipment_info=my_equipment, custom_tags=my_special_tags) - - self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) - self.add_flow(series_selector_op, series_to_vol_op, {"study_selected_series_list": "study_selected_series_list"}) - self.add_flow(series_to_vol_op, classifier_op, {"image": "image"}) - self.add_flow(classifier_op, sr_writer_op, {"result_text": "classification_result"}) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def compose(self): + model_info = ModelInfo( + "MONAI Model for Breast Density", + "BreastDensity", + "0.1", + "Center for Augmented Intelligence in Imaging, Mayo Clinic, Florida", + ) + my_equipment = EquipmentInfo(manufacturer="MONAI Deploy App SD", manufacturer_model="DICOM SR Writer") + my_special_tags = {"SeriesDescription": "Not for clinical use"} + study_loader_op = DICOMDataLoaderOperator() + series_selector_op = DICOMSeriesSelectorOperator(rules="") + series_to_vol_op = DICOMSeriesToVolumeOperator() + classifier_op = ClassifierOperator() + sr_writer_op = DICOMTextSRWriterOperator( + copy_tags=False, model_info=model_info, equipment_info=my_equipment, custom_tags=my_special_tags + ) + + self.add_flow(study_loader_op, series_selector_op, {"dicom_study_list": "dicom_study_list"}) + self.add_flow( + series_selector_op, series_to_vol_op, {"study_selected_series_list": "study_selected_series_list"} + ) + self.add_flow(series_to_vol_op, classifier_op, {"image": "image"}) + self.add_flow(classifier_op, sr_writer_op, {"result_text": "classification_result"}) + def main(): - app = BreastClassificationApp() - image_dir='/home/gupta/Documents/MONAI-DEPLOY/BreastDensity/sampleDICOMs/1/BI_BREAST_SCREENING_BILATERAL_WITH_TOMOSYNTHESIS-2019-07-08/1/L_CC_C-View' + app = BreastClassificationApp() + image_dir = "./sampleDICOMs/1/BI_BREAST_SCREENING_BILATERAL_WITH_TOMOSYNTHESIS-2019-07-08/1/L_CC_C-View" + + model_path = "./model/traced_ts_model.pt" + app.run(input=image_dir, output="./output", model=model_path) - model_path = './model/traced_ts_model.pt' - app.run(input=image_dir, output='./output', model=model_path) -if __name__ == '__main__': - main() +if __name__ == "__main__": + main() diff --git a/examples/apps/breast_density_classifer_app/breast_density_classifier_operator.py b/examples/apps/breast_density_classifer_app/breast_density_classifier_operator.py index 41ef1a26..9a51f70c 100644 --- a/examples/apps/breast_density_classifer_app/breast_density_classifier_operator.py +++ b/examples/apps/breast_density_classifer_app/breast_density_classifier_operator.py @@ -1,15 +1,24 @@ -import monai.deploy.core as md -import numpy -from monai.deploy.core import DataPath, ExecutionContext, Image, InputContext, IOType, Operator, OutputContext -from monai.data import Dataset, DataLoader +import json +from typing import Dict, Text + import torch -from typing import Dict -from monai.transforms import (LoadImage, EnsureChannelFirst, SqueezeDim, EnsureType, - NormalizeIntensity, Resize, RepeatChannel, Compose, Activations) + +import monai.deploy.core as md +from monai.data import DataLoader, Dataset +from monai.deploy.core import ExecutionContext, Image, InputContext, IOType, Operator, OutputContext from monai.deploy.operators.monai_seg_inference_operator import InMemImageReader -import json -import numpy as np -from typing import Text +from monai.transforms import ( + Activations, + Compose, + EnsureChannelFirst, + EnsureType, + LoadImage, + NormalizeIntensity, + RepeatChannel, + Resize, + SqueezeDim, +) + @md.input("image", Image, IOType.IN_MEMORY) @md.output("result_text", Text, IOType.IN_MEMORY) @@ -70,26 +79,31 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe out = post_transforms(outputs).data.cpu().numpy()[0] print(out) - result_dict = 'A ' + ':' + str(out[0]) + ' B ' + ':' + str(out[1]) + ' C ' + ':' + str( - out[2]) + ' D ' + ':' + str(out[3]) - result_dict_out = {'A': str(out[0]), 'B': str(out[1]), 'C': str(out[2]), 'D': str(out[3])} + result_dict = ( + "A " + ":" + str(out[0]) + " B " + ":" + str(out[1]) + " C " + ":" + str(out[2]) + " D " + ":" + str(out[3]) + ) + result_dict_out = {"A": str(out[0]), "B": str(out[1]), "C": str(out[2]), "D": str(out[3])} output_folder = context.output.get().path output_folder.mkdir(parents=True, exist_ok=True) - - output_path = output_folder / "output.json" with open(output_path, "w") as fp: json.dump(result_dict, fp) - - op_output.set(result_dict, "result_text") + op_output.set(result_dict, "result_text") - def pre_process(self, ImageReader) -> Compose: - return Compose([LoadImage(reader=ImageReader, image_only=True), EnsureChannelFirst(), SqueezeDim(dim=3), - NormalizeIntensity(), Resize(spatial_size=(299, 299)), RepeatChannel(repeats=3), - EnsureChannelFirst()]) + def pre_process(self, image_reader) -> Compose: + return Compose( + [ + LoadImage(reader=image_reader, image_only=True), + EnsureChannelFirst(), + SqueezeDim(dim=3), + NormalizeIntensity(), + Resize(spatial_size=(299, 299)), + RepeatChannel(repeats=3), + EnsureChannelFirst(), + ] + ) def post_process(self) -> Compose: return Compose([EnsureType(), Activations(sigmoid=True)]) - From d29fca70fd78406639a409fc4f7f6e9606f56945 Mon Sep 17 00:00:00 2001 From: gupta Date: Tue, 1 Nov 2022 14:48:22 -0400 Subject: [PATCH 036/216] Fixed typo Signed-off-by: gupta Signed-off-by: Simone Bendazzoli --- examples/apps/breast_density_classifer_app/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/apps/breast_density_classifer_app/README.md b/examples/apps/breast_density_classifer_app/README.md index 7c44e3a0..b488908b 100644 --- a/examples/apps/breast_density_classifer_app/README.md +++ b/examples/apps/breast_density_classifer_app/README.md @@ -1,5 +1,5 @@ ## A MONAI Application Package to deploy breast density classification algorithm -This MAP is based on the Breast Density Model in MONAI [Model-Zoo](https://github.com/Project-MONAI/model-zoo). This model is developed at the Center for Augmented Intelligece in Imaging at the Mayo Clinic, Florida. +This MAP is based on the Breast Density Model in MONAI [Model-Zoo](https://github.com/Project-MONAI/model-zoo). This model is developed at the Center for Augmented Intelligence in Imaging at the Mayo Clinic, Florida. For any questions, feel free to contact Vikash Gupta (gupta.vikash@mayo.edu) Sample data and a torchscript model can be downloaded from https://drive.google.com/drive/folders/1Dryozl2MwNunpsGaFPVoaKBLkNbVM3Hu?usp=sharing From 86b28898e8da4b15c3a8e97c398747a3770f6dab Mon Sep 17 00:00:00 2001 From: gupta Date: Mon, 3 Oct 2022 14:18:34 -0400 Subject: [PATCH 037/216] Added a Nifti data loader for issue #270 Signed-off-by: gupta Signed-off-by: Simone Bendazzoli --- monai/deploy/operators/__init__.py | 2 + .../operators/nii_data_loader_operator.py | 53 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 monai/deploy/operators/nii_data_loader_operator.py diff --git a/monai/deploy/operators/__init__.py b/monai/deploy/operators/__init__.py index 11c16caa..64d9554c 100644 --- a/monai/deploy/operators/__init__.py +++ b/monai/deploy/operators/__init__.py @@ -30,6 +30,7 @@ PublisherOperator STLConversionOperator STLConverter + NiftiDataLoader """ from .clara_viz_operator import ClaraVizOperator @@ -43,6 +44,7 @@ from .inference_operator import InferenceOperator from .monai_bundle_inference_operator import BundleConfigNames, IOMapping, MonaiBundleInferenceOperator from .monai_seg_inference_operator import MonaiSegInferenceOperator +from .nii_data_loader_operator import NiftiDataLoader from .png_converter_operator import PNGConverterOperator from .publisher_operator import PublisherOperator from .stl_conversion_operator import STLConversionOperator, STLConverter diff --git a/monai/deploy/operators/nii_data_loader_operator.py b/monai/deploy/operators/nii_data_loader_operator.py new file mode 100644 index 00000000..d672fa1a --- /dev/null +++ b/monai/deploy/operators/nii_data_loader_operator.py @@ -0,0 +1,53 @@ +# Copyright 2021-2022 MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import numpy as np +import SimpleITK + +import monai.deploy.core as md +from monai.deploy.core import DataPath, ExecutionContext, InputContext, IOType, Operator, OutputContext + + +@md.input("image_path", DataPath, IOType.DISK) +@md.output("image", np.ndarray, IOType.IN_MEMORY) +class NiftiDataLoader(Operator): + """ + This operator reads a nifti image, extracts the numpy array and forwards it to the next operator + """ + + def compute(self, op_input: InputContext, op_output: OutputContext, context: ExecutionContext): + input_path = op_input.get().path + image_np = self.convert_and_save(input_path) + op_output.set(image_np) + + def convert_and_save(self, nii_path): + """ + reads the nifti image and + """ + image_reader = SimpleITK.ImageFileReader() + image_reader.SetFileName(str(nii_path)) + image = image_reader.Execute() + image_np = np.transpose(SimpleITK.GetArrayFromImage(image), [2, 1, 0]) + return image_np + + +def test(): + filepath = "/home/gupta/Documents/mni_icbm152_nlin_sym_09a/mni_icbm152_gm_tal_nlin_sym_09a.nii" + nii_operator = NiftiDataLoader() + image_np = nii_operator.convert_and_save(filepath) + + +def main(): + test() + + +if __name__ == "__main__": + main() From a4ad962cb5ffc1edc10b39291b7abe0aac4cc654 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Wed, 2 Nov 2022 16:25:05 -0700 Subject: [PATCH 038/216] Quick fix to avoid package not found error by use optional import (#386) * Use optional import Signed-off-by: M Q * Also add env packages Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- monai/deploy/operators/nii_data_loader_operator.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/monai/deploy/operators/nii_data_loader_operator.py b/monai/deploy/operators/nii_data_loader_operator.py index d672fa1a..9a5cc6dc 100644 --- a/monai/deploy/operators/nii_data_loader_operator.py +++ b/monai/deploy/operators/nii_data_loader_operator.py @@ -10,14 +10,17 @@ # limitations under the License. import numpy as np -import SimpleITK import monai.deploy.core as md from monai.deploy.core import DataPath, ExecutionContext, InputContext, IOType, Operator, OutputContext +from monai.deploy.utils.importutil import optional_import + +SimpleITK, _ = optional_import("SimpleITK") @md.input("image_path", DataPath, IOType.DISK) @md.output("image", np.ndarray, IOType.IN_MEMORY) +@md.env(pip_packages=["SimpleITK>=2.0.2"]) class NiftiDataLoader(Operator): """ This operator reads a nifti image, extracts the numpy array and forwards it to the next operator @@ -42,7 +45,7 @@ def convert_and_save(self, nii_path): def test(): filepath = "/home/gupta/Documents/mni_icbm152_nlin_sym_09a/mni_icbm152_gm_tal_nlin_sym_09a.nii" nii_operator = NiftiDataLoader() - image_np = nii_operator.convert_and_save(filepath) + _ = nii_operator.convert_and_save(filepath) def main(): From ca3f937f8ae24251168ca586877477bf85d61fc8 Mon Sep 17 00:00:00 2001 From: Lee Newberg <35611400+Leengit@users.noreply.github.com> Date: Thu, 3 Nov 2022 02:41:58 -0400 Subject: [PATCH 039/216] ENH: Versions as strings, not numbers, so that 3.1 != 3.10, etc. (#385) Signed-off-by: Lee Newberg Signed-off-by: Lee Newberg Signed-off-by: Simone Bendazzoli --- .github/workflows/pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index fb4adbd9..419a5ba5 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -17,7 +17,7 @@ jobs: - name: Set up Python 3.7 uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: "3.7" - name: Setup Dev Environment run: | pip install virtualenv From 26f65d9985545d74ca59c0b25e8622d5b4edf036 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Thu, 3 Nov 2022 11:12:02 -0700 Subject: [PATCH 040/216] Enhance Packager to make the MAP more secure, easier to use, and based on new version of PyTorch image for newer CUDA versions. (#381) * Update the default base image to 22.08 version Signed-off-by: M Q * Remove unused file path contain "/tmp/" which caused security warning Signed-off-by: M Q * Add env var and remove /tmp is packager, update dependent package min version Signed-off-by: M Q * Update the Gaussian due to new param introduced in sciki-image 0.19 Signed-off-by: M Q * Formatting fix Signed-off-by: M Q * Fix simple_app Jupyter notebook imshow failure with the new scikit-image Signed-off-by: M Q * Keep Numpy at 1.21.6 for Python 3.7 support Signed-off-by: M Q * Fix Flake8 error Signed-off-by: M Q * For Python 3.7 compatibility Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- docs/requirements.txt | 4 +- .../developing_with_sdk/packaging_app.md | 2 +- .../getting_started/installing_app_sdk.md | 4 +- examples/apps/ai_pancrea_seg_app/__main__.py | 4 +- .../simple_imaging_app/gaussian_operator.py | 2 +- monai/deploy/packager/constants.py | 2 +- monai/deploy/packager/templates.py | 6 +- monai/deploy/packager/util.py | 5 +- notebooks/tutorials/01_simple_app.ipynb | 167 +++++++----------- notebooks/tutorials/03_segmentation_app.ipynb | 2 +- notebooks/tutorials/06_monai_bundle_app.ipynb | 2 +- requirements-dev.txt | 2 +- requirements-examples.txt | 2 +- requirements-min.txt | 2 +- requirements.txt | 2 +- setup.cfg | 2 +- 16 files changed, 92 insertions(+), 118 deletions(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index 0cd1c356..56a20bb0 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,7 +1,7 @@ Sphinx==4.1.2 sphinx-autobuild==2021.3.14 myst-parser==0.15.2 -numpy>=1.21.2 # CVE-2021-33430 +numpy>=1.21.6 matplotlib==3.3.4 ipywidgets==7.6.4 pandas==1.1.5 @@ -23,7 +23,7 @@ scikit-image>=0.17.2 plotly nibabel>=3.2.1 monai>=1.0.0 -torch>=1.10.0 +torch>=1.12.0 numpy-stl>=2.12.0 trimesh>=3.8.11 pydicom diff --git a/docs/source/developing_with_sdk/packaging_app.md b/docs/source/developing_with_sdk/packaging_app.md index f2f9545e..61f65175 100644 --- a/docs/source/developing_with_sdk/packaging_app.md +++ b/docs/source/developing_with_sdk/packaging_app.md @@ -46,7 +46,7 @@ However, the user can choose to override these values by invoking these optional * `--requirements, -r `: Optional path to requirements.txt containing package dependencies of the application * `--log-level, -l `: Set the logging level (`"DEBUG"`, `"INFO"`, `"WARN"`, `"ERROR"`, or `"CRITICAL"`). -* `--base `: Base Docker Image (overrides default `"nvcr.io/nvidia/pytorch:21.07-py3"`). +* `--base `: Base Docker Image (overrides default `"nvcr.io/nvidia/pytorch:22.08-py3"`). * `--input-dir, -i `: Directory mounted in container for Application Input (overrides default `"input"`). * `--models-dir `: Directory mounted in container for Models Path (overrides default `"/opt/monai/models"`). * `--output-dir, -o `: Directory mounted in container for Application Output (overrides default `"output"`). diff --git a/docs/source/getting_started/installing_app_sdk.md b/docs/source/getting_started/installing_app_sdk.md index cac18595..24109f58 100644 --- a/docs/source/getting_started/installing_app_sdk.md +++ b/docs/source/getting_started/installing_app_sdk.md @@ -19,12 +19,12 @@ For packaging your application, [MONAI Application Packager](/developing_with_sd -Currently, `nvcr.io/nvidia/pytorch:21.07-py3` base Docker image is used by [MONAI Application Packager](/developing_with_sdk/packaging_app) by default. +Currently, `nvcr.io/nvidia/pytorch:22.08-py3` base Docker image is used by [MONAI Application Packager](/developing_with_sdk/packaging_app) by default. The image size is large so please pull the image in advance to save time. ```bash -docker pull nvcr.io/nvidia/pytorch:21.07-py3 +docker pull nvcr.io/nvidia/pytorch:22.08-py3 ``` ::: diff --git a/examples/apps/ai_pancrea_seg_app/__main__.py b/examples/apps/ai_pancrea_seg_app/__main__.py index 273444f9..0fb27c9e 100644 --- a/examples/apps/ai_pancrea_seg_app/__main__.py +++ b/examples/apps/ai_pancrea_seg_app/__main__.py @@ -1,4 +1,4 @@ -from app import AISpleenSegApp +from app import AIPancreasSegApp if __name__ == "__main__": - AISpleenSegApp(do_run=True) + AIPancreasSegApp(do_run=True) diff --git a/examples/apps/simple_imaging_app/gaussian_operator.py b/examples/apps/simple_imaging_app/gaussian_operator.py index 0478ebef..58c32060 100644 --- a/examples/apps/simple_imaging_app/gaussian_operator.py +++ b/examples/apps/simple_imaging_app/gaussian_operator.py @@ -29,7 +29,7 @@ def compute(self, op_input: InputContext, op_output: OutputContext, context: Exe from skimage.io import imsave data_in = op_input.get().asnumpy() - data_out = gaussian(data_in, sigma=0.2) + data_out = gaussian(data_in, sigma=0.2, channel_axis=2) # Add the param introduced in 0.19. output_folder = op_output.get().path output_path = output_folder / "final_output.png" diff --git a/monai/deploy/packager/constants.py b/monai/deploy/packager/constants.py index c29f8ba0..0be5d4e1 100644 --- a/monai/deploy/packager/constants.py +++ b/monai/deploy/packager/constants.py @@ -16,7 +16,7 @@ class DefaultValues: """ DOCKER_FILE_NAME = "dockerfile" - BASE_IMAGE = "nvcr.io/nvidia/pytorch:21.07-py3" + BASE_IMAGE = "nvcr.io/nvidia/pytorch:22.08-py3" DOCKERFILE_TYPE = "pytorch" WORK_DIR = "/var/monai/" INPUT_DIR = "input" diff --git a/monai/deploy/packager/templates.py b/monai/deploy/packager/templates.py index 53c929cb..a84bba38 100644 --- a/monai/deploy/packager/templates.py +++ b/monai/deploy/packager/templates.py @@ -1,4 +1,4 @@ -# Copyright 2021 MONAI Consortium +# Copyright 2021-2022 MONAI Consortium # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -12,7 +12,7 @@ COMMON_FOOTPRINT = """ USER root - RUN pip install --no-cache-dir --upgrade setuptools==57.4.0 pip==21.3.1 wheel==0.37.0 numpy>=1.21 + RUN pip install --no-cache-dir --upgrade setuptools==59.5.0 pip==22.3 wheel==0.37.1 numpy>=1.21.6 RUN mkdir -p /etc/monai/ \\ && mkdir -p /opt/monai/ \\ @@ -72,6 +72,7 @@ ENV MONAI_WORKDIR={working_dir} ENV MONAI_APPLICATION={app_dir} ENV MONAI_TIMEOUT={timeout} + ENV MONAI_MODELPATH={models_dir} RUN apt update \\ && apt upgrade -y --no-install-recommends \\ @@ -106,6 +107,7 @@ ENV MONAI_WORKDIR={working_dir} ENV MONAI_APPLICATION={app_dir} ENV MONAI_TIMEOUT={timeout} + ENV MONAI_MODELPATH={models_dir} RUN apt update \\ && apt upgrade -y --no-install-recommends \\ diff --git a/monai/deploy/packager/util.py b/monai/deploy/packager/util.py index 2f8f22ba..3db72128 100644 --- a/monai/deploy/packager/util.py +++ b/monai/deploy/packager/util.py @@ -17,6 +17,7 @@ import sys import tempfile from argparse import Namespace +from pathlib import Path from typing import Dict from monai.deploy.exceptions import WrongValueError @@ -177,7 +178,9 @@ def build_image(args: dict, temp_dir: str): requirements_file.write(line) else: requirements_file.writelines("\n".join(pip_packages)) - map_requirements_path = "/tmp/requirements.txt" + + # Parameter for the Dockerfile for copying content to internal path + map_requirements_path = str(Path(app_dir) / "requirements.txt") # Copy model files to temp directory (under 'model' folder) target_models_path = os.path.join(temp_dir, "models") diff --git a/notebooks/tutorials/01_simple_app.ipynb b/notebooks/tutorials/01_simple_app.ipynb index 75535ce9..1eb324d5 100644 --- a/notebooks/tutorials/01_simple_app.ipynb +++ b/notebooks/tutorials/01_simple_app.ipynb @@ -60,6 +60,8 @@ "# Install necessary image loading/processing packages for the application\n", "!python -c \"import PIL\" || pip install -q \"Pillow\"\n", "!python -c \"import skimage\" || pip install -q \"scikit-image\"\n", + "!python -c \"import matplotlib\" || pip install -q matplotlib\n", + "%matplotlib inline\n", "\n", "# Install MONAI Deploy App SDK package\n", "!python -c \"import monai.deploy\" || pip install -q \"monai-deploy-app-sdk\"" @@ -91,7 +93,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -100,7 +102,7 @@ }, { "data": { - "image/png": "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9IlPfMJJpVLOD3/4w4rtCouLi6rMxz/+cWfbtm3O97//feenP/2pc+jQIefQoUPqe25XuP/++52jR4863/3ud53u7u5ratvH5z//eefZZ591hoeHnVdeecX5/Oc/70QiEed73/ue4zjhGNYCGQXtOOFY2uKzn/2s88Mf/tAZHh52fvSjHzmHDx92urq6nMnJScdxLt84bjoCdhzH+fu//3tn27ZtTnNzs3PnnXc6zz///EZ36YrCD37wAwfART8f+chHHMc5vxXpT/7kT5ze3l6npaXFec973uMcP368oo7p6Wnn4Ycfdtra2pxkMul89KMfdYrF4gbczcbBNIYAnK985SuqTKlUcn7nd37HyWQyTmtrq/PBD37QGR8fr6jn7bffdh588EEnHo87XV1dzmc/+1lnZWXlMt/NxuE3f/M3naGhIae5udnp7u523vOe9yjydZxwDGuBTsDhWNrhwx/+sNPf3+80Nzc7W7ZscT784Q87J0+eVN9frnEMzwMOESJEiBAhNgCbygccIkSIECFCXC0ICThEiBAhQoTYAIQEHCJEiBAhQmwAQgIOESJEiBAhNgAhAYcIESJEiBAbgJCAQ4QIESJEiA1ASMAhQoQIESLEBiAk4BAhQoQIEWIDEBJwiBAhQoQIsQEICThEiBAhQoTYAIQEHCJEiBAhQmwA/h98RZkJ0aXveQAAAABJRU5ErkJggg==", + "image/png": "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o1EcPnwYR44c2cCebR4MDw8jm81WjGEqlcLBgwfVGB45cgTpdBoHDhxQZQ4fPoxoNIoXXnjhsvf5SkE+nwcAdHR0AABefPFFrKysVIzl7t27sW3btoqxvPXWW9Hb26vKPPDAAygUCnjttdcuY++vDKytreGJJ57AwsICDh06FI5hFXj00Ufx0EMPVYwZEM7HoDhx4gQGBgZw3XXX4ZFHHsHo6CiAyzuOm+o0pKmpKaytrVXcNAD09vbizTff3KBebS5ks1kAMI4hv8tms+jp6an4vrGxER0dHarMtYb19XV8+tOfxj333INbbrkFwPlxam5uRjqdriirj6VprPndtYJXX30Vhw4dwtLSEtra2vCNb3wDN910E44ePRqOYQA88cQT+NnPfoaf/OQnF30Xzkd7HDx4EF/96ldx4403Ynx8HH/2Z3+Ge++9F8eOHbus47ipCDhEiI3Co48+imPHjuG5557b6K5sStx44404evQo8vk8/uM//gMf+chH8Oyzz250tzYVzpw5g0996lN4+umnEYvFNro7mxoPPvig+nvv3r04ePAghoaG8LWvfQ3xePyy9WNTmaC7urrQ0NBwUTTaxMQE+vr6NqhXmwscJ68x7Ovrw+TkZMX3q6urmJmZuSbH+ZOf/CS+9a1v4Qc/+AEGBwfV5319fSiXy5ibm6sor4+laaz53bWC5uZmXH/99di/fz8ef/xx7Nu3D3/7t38bjmEAvPjii5icnMTtt9+OxsZGNDY24tlnn8Xf/d3fobGxEb29veFYVol0Oo0bbrgBJ0+evKxzclMRcHNzM/bv349nnnlGfba+vo5nnnkGhw4d2sCebR7s2LEDfX19FWNYKBTwwgsvqDE8dOgQ5ubm8OKLL6oy3//+97G+vo6DBw9e9j5vFBzHwSc/+Ul84xvfwPe//33s2LGj4vv9+/ejqampYiyPHz+O0dHRirF89dVXKwSap59+GslkEjfddNPluZErEOvr61heXg7HMADe85734NVXX8XRo0fVz4EDB/DII4+ov8OxrA7z8/M4deoU+vv7L++crCqEbAPxxBNPOC0tLc5Xv/pV5/XXX3d++7d/20mn0xXRaNc6isWi89JLLzkvvfSSA8D567/+a+ell15yRkZGHMc5vw0pnU47//Vf/+W88sorzgc+8AHjNqTbbrvNeeGFF5znnnvO2bVr1zW3DekTn/iEk0qlnB/+8IcV2xUWFxdVmY9//OPOtm3bnO9///vOT3/6U+fQoUPOoUOH1PfcrnD//fc7R48edb773e863d3d19S2j89//vPOs88+6wwPDzuvvPKK8/nPf96JRCLO9773PcdxwjGsBTIK2nHCsbTFZz/7WeeHP/yhMzw87PzoRz9yDh8+7HR1dTmTk5OO41y+cdx0BOw4jvP3f//3zrZt25zm5mbnzjvvdJ5//vmN7tIVhR/84AcOgIt+PvKRjziOc34r0p/8yZ84vb29TktLi/Oe97zHOX78eEUd09PTzsMPP+y0tbU5yWTS+ehHP+oUi8UNuJuNg2kMAThf+cpXVJlSqeT8zu/8jpPJZJzW1lbngx/8oDM+Pl5Rz9tvv+08+OCDTjwed7q6upzPfvazzsrKymW+m43Db/7mbzpDQ0NOc3Oz093d7bznPe9R5Os44RjWAp2Aw7G0w4c//GGnv7/faW5udrZs2eJ8+MMfdk6ePKm+v1zjGJ4HHCJEiBAhQmwANpUPOESIECFChLhaEBJwiBAhQoQIsQEICThEiBAhQoTYAIQEHCJEiBAhQmwAQgIOESJEiBAhNgAhAYcIESJEiBAbgJCAQ4QIESJEiA1ASMAhQoQIESLEBiAk4BAhQoQIEWIDEBJwiBAhQoQIsQEICThEiBAhQoTYAPw/PrqZCbjWN/UAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -374,11 +376,15 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator SobelOperator\u001b[39m\n", - "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 982168, Operator ID: 17f08a58-3988-4c98-9cf9-9d827eb283b7)\u001b[39m\n", + "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 1713457, Operator ID: 926b6b99-14a9-4d31-a1dc-7ebe3ac8704b)\u001b[39m\n", "\u001b[34mDone performing execution of operator SobelOperator\n", "\u001b[39m\n", "\u001b[34mGoing to initiate execution of operator MedianOperator\u001b[39m\n", - "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 982168, Operator ID: 72c7a0ad-3a47-47fb-896c-18486e79b182)\u001b[39m\n" + "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 1713457, Operator ID: 57dca47d-e0d9-472a-be47-34db0ec058eb)\u001b[39m\n", + "\u001b[34mDone performing execution of operator MedianOperator\n", + "\u001b[39m\n", + "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\n", + "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 1713457, Operator ID: 8238e133-424c-4456-96d2-059c8454980e)\u001b[39m\n" ] }, { @@ -387,17 +393,13 @@ "text": [ "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/skimage/_shared/utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", " return func(*args, **kwargs)\n", - "[2022-10-18 17:29:31,196] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n" + "[2022-10-29 20:11:59,013] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "\u001b[34mDone performing execution of operator MedianOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\n", - "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 982168, Operator ID: b07b4eb2-2194-480f-828f-b34080e1a91d)\u001b[39m\n", "\u001b[34mDone performing execution of operator GaussianOperator\n", "\u001b[39m\n" ] @@ -416,40 +418,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "1.2.826.0.1.3680043.10.511.3.10195035642003860413057936982968723.dcm\n", - "1.2.826.0.1.3680043.10.511.3.10697584562685878853363496613905022.dcm\n", - "1.2.826.0.1.3680043.10.511.3.11007185683656203101622184429425124.dcm\n", - "1.2.826.0.1.3680043.10.511.3.11010764142907798817891854085040824.dcm\n", - "1.2.826.0.1.3680043.10.511.3.11619418586545827859010837278006939.dcm\n", - "1.2.826.0.1.3680043.10.511.3.11690041677421435338444238047096628.dcm\n", - "1.2.826.0.1.3680043.10.511.3.11766242804993128636390418603798576.dcm\n", - "1.2.826.0.1.3680043.10.511.3.12038210552683396113759169001251030.dcm\n", - "1.2.826.0.1.3680043.10.511.3.12194673301371710294708887115321840.dcm\n", - "1.2.826.0.1.3680043.10.511.3.12839953903115687811576743419329745.dcm\n", - "1.2.826.0.1.3680043.10.511.3.19954741813431048648918533230571869.dcm\n", - "1.2.826.0.1.3680043.10.511.3.28115597778269862176555674040553881.dcm\n", - "1.2.826.0.1.3680043.10.511.3.44487290837312664283259666820005457.dcm\n", - "1.2.826.0.1.3680043.10.511.3.45596709770136744924389849060252151.dcm\n", - "1.2.826.0.1.3680043.10.511.3.48053436239690093700485303833643842.dcm\n", - "1.2.826.0.1.3680043.10.511.3.50450656018567836855649222204213673.dcm\n", - "1.2.826.0.1.3680043.10.511.3.56443338884049557610021781979169198.dcm\n", - "1.2.826.0.1.3680043.10.511.3.62905264636861078355087938407260399.dcm\n", - "1.2.826.0.1.3680043.10.511.3.63518052505348964835943999985193771.dcm\n", - "1.2.826.0.1.3680043.10.511.3.63718222025542372977124930426912191.dcm\n", - "1.2.826.0.1.3680043.10.511.3.66031544317130698088559963332931309.dcm\n", - "1.2.826.0.1.3680043.10.511.3.66050173813682677299415741521954338.dcm\n", - "1.2.826.0.1.3680043.10.511.3.68149507415808990964307203550287864.dcm\n", - "1.2.826.0.1.3680043.10.511.3.75511961623701605158799300926480961.dcm\n", - "1.2.826.0.1.3680043.10.511.3.82849670307523903379368674519966835.dcm\n", - "1.2.826.0.1.3680043.10.511.3.84658241622586336538727133572766827.dcm\n", - "1.2.826.0.1.3680043.10.511.3.85114306985515069483865702271375697.dcm\n", - "1.2.826.0.1.3680043.10.511.3.85565902926765146391303452285820969.dcm\n", - "1.2.826.0.1.3680043.10.511.3.86751253737736980135752555204124863.dcm\n", - "1.2.826.0.1.3680043.10.511.3.94432351620392403645555377570642324.dcm\n", - "1.2.826.0.1.3680043.10.511.3.98283821667334470130741553845107039.dcm\n", - "final_output.png\n", - "output.json\n", - "prediction_output\n" + "final_output.png output.json\n" ] } ], @@ -465,7 +434,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 11, @@ -474,7 +443,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -775,20 +744,20 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator SobelOperator\u001b[39m\n", - "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 982716, Operator ID: a69f7049-06ff-4d92-bab5-50a3bf545616)\u001b[39m\n", - "\u001b[34mDone performing execution of operator SobelOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator MedianOperator\u001b[39m\n", - "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 982716, Operator ID: a2a5878a-2279-4a9d-9f25-22d62ea368c9)\u001b[39m\n", - "\u001b[34mDone performing execution of operator MedianOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\n", - "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 982716, Operator ID: 0f9c879e-8124-44fe-8a8f-943c96efc8d2)\u001b[39m\n", - "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/skimage/_shared/utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", - " return func(*args, **kwargs)\n", - "[2022-10-18 17:29:37,907] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n", - "\u001b[34mDone performing execution of operator GaussianOperator\n", - "\u001b[39m\n" + "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 1713625, Operator ID: 0980db0b-4d33-49e9-86aa-98a0f104045f)\u001b[39m\n", + "\u001b[34mDone performing execution of operator SobelOperator\r\n", + "\u001b[39m\r\n", + "\u001b[34mGoing to initiate execution of operator MedianOperator\u001b[39m\r\n", + "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 1713625, Operator ID: 8b0d2bcc-752d-4c1e-8eee-d6ce88b205c5)\u001b[39m\r\n", + "\u001b[34mDone performing execution of operator MedianOperator\r\n", + "\u001b[39m\r\n", + "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\r\n", + "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 1713625, Operator ID: f6f19ca2-d4b4-4297-a018-f67615d9ab6a)\u001b[39m\r\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/skimage/_shared/utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\r\n", + " return func(*args, **kwargs)\r\n", + "[2022-10-29 20:12:05,939] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\r\n", + "\u001b[34mDone performing execution of operator GaussianOperator\r\n", + "\u001b[39m\r\n" ] } ], @@ -813,20 +782,20 @@ "output_type": "stream", "text": [ "\u001b[34mGoing to initiate execution of operator SobelOperator\u001b[39m\n", - "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 982757, Operator ID: bc876ff4-9349-4805-9500-a4a0f79326c6)\u001b[39m\n", - "\u001b[34mDone performing execution of operator SobelOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator MedianOperator\u001b[39m\n", - "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 982757, Operator ID: a0109f55-1d2b-45ae-bf41-e97c1b100574)\u001b[39m\n", - "\u001b[34mDone performing execution of operator MedianOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\n", - "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 982757, Operator ID: 42ab046c-f81b-446e-a130-f126650f3770)\u001b[39m\n", - "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/skimage/_shared/utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", - " return func(*args, **kwargs)\n", - "[2022-10-18 17:29:42,717] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n", - "\u001b[34mDone performing execution of operator GaussianOperator\n", - "\u001b[39m\n" + "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 1713667, Operator ID: dd931989-0613-4143-8a9a-d8194d990d60)\u001b[39m\n", + "\u001b[34mDone performing execution of operator SobelOperator\r\n", + "\u001b[39m\r\n", + "\u001b[34mGoing to initiate execution of operator MedianOperator\u001b[39m\r\n", + "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 1713667, Operator ID: 752602c3-77af-4875-8c45-c62d48c4b215)\u001b[39m\r\n", + "\u001b[34mDone performing execution of operator MedianOperator\r\n", + "\u001b[39m\r\n", + "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\r\n", + "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 1713667, Operator ID: bb8d7535-0293-48e6-895b-b6d292b1f967)\u001b[39m\r\n", + "/home/mqin/src/monai-deploy-app-sdk/.venv/lib/python3.8/site-packages/skimage/_shared/utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\r\n", + " return func(*args, **kwargs)\r\n", + "[2022-10-29 20:12:11,084] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\r\n", + "\u001b[34mDone performing execution of operator GaussianOperator\r\n", + "\u001b[39m\r\n" ] } ], @@ -842,7 +811,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 21, @@ -851,7 +820,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -888,8 +857,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Building MONAI Application Package... Done\n", - "[2022-10-18 17:32:36,953] [INFO] (app_packager) - Successfully built simple_app:latest\n" + "Building MONAI Application Package... -\bDone\r\n", + "[2022-10-29 20:12:16,845] [INFO] (app_packager) - Successfully built simple_app:latest\r\n" ] } ], @@ -918,7 +887,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "simple_app latest 2b8fbb1eec36 4 seconds ago 15.6GB\n" + "simple_app latest ee1cb868d265 About a minute ago 15GB\n" ] } ], @@ -950,25 +919,25 @@ "--> Verifying if \"simple_app:latest\" is available...\n", "\n", "Checking for MAP \"simple_app:latest\" locally\n", - "\"simple_app:latest\" found.\n", - "\n", - "Reading MONAI App Package manifest...\n", - "\u001b[34mGoing to initiate execution of operator SobelOperator\u001b[39m\n", - "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 1, Operator ID: 4be86b2a-0f0e-44b4-bcb5-6d49b04a7bd2)\u001b[39m\n", - "[2022-10-19 00:32:50,281] [INFO] (matplotlib.font_manager) - generated new fontManager\n", - "\u001b[34mDone performing execution of operator SobelOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator MedianOperator\u001b[39m\n", - "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 1, Operator ID: a92fe3dd-1848-4f56-a0f1-c744863aba9f)\u001b[39m\n", - "\u001b[34mDone performing execution of operator MedianOperator\n", - "\u001b[39m\n", - "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\n", - "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 1, Operator ID: 61ba09a4-2af4-45af-95de-50545f8d7b90)\u001b[39m\n", - "/root/.local/lib/python3.8/site-packages/skimage/_shared/utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n", - " return func(*args, **kwargs)\n", - "[2022-10-19 00:32:50,737] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n", - "\u001b[34mDone performing execution of operator GaussianOperator\n", - "\u001b[39m\n" + "\"simple_app:latest\" found.\r\n", + "\r\n", + "Reading MONAI App Package manifest...\r\n", + "\u001b[34mGoing to initiate execution of operator SobelOperator\u001b[39m\r\n", + "\u001b[32mExecuting operator SobelOperator \u001b[33m(Process ID: 1, Operator ID: 7bf99b18-df43-423b-ab1d-f183106f20e2)\u001b[39m\r\n", + "[2022-10-30 03:12:27,405] [INFO] (matplotlib.font_manager) - generated new fontManager\r\n", + "\u001b[34mDone performing execution of operator SobelOperator\r\n", + "\u001b[39m\r\n", + "\u001b[34mGoing to initiate execution of operator MedianOperator\u001b[39m\r\n", + "\u001b[32mExecuting operator MedianOperator \u001b[33m(Process ID: 1, Operator ID: 352120f0-f7b0-4677-8db5-607a6235b7e2)\u001b[39m\r\n", + "\u001b[34mDone performing execution of operator MedianOperator\r\n", + "\u001b[39m\r\n", + "\u001b[34mGoing to initiate execution of operator GaussianOperator\u001b[39m\r\n", + "\u001b[32mExecuting operator GaussianOperator \u001b[33m(Process ID: 1, Operator ID: ad03211f-5e3c-4a6e-baec-33a3ea0e1c96)\u001b[39m\r\n", + "/root/.local/lib/python3.8/site-packages/skimage/_shared/utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\r\n", + " return func(*args, **kwargs)\r\n", + "[2022-10-30 03:12:28,239] [WARNING] (imageio) - Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\r\n", + "\u001b[34mDone performing execution of operator GaussianOperator\r\n", + "\u001b[39m\r\n" ] } ], @@ -989,7 +958,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 25, @@ -998,7 +967,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] diff --git a/notebooks/tutorials/03_segmentation_app.ipynb b/notebooks/tutorials/03_segmentation_app.ipynb index 7460b5ee..29bc13e9 100644 --- a/notebooks/tutorials/03_segmentation_app.ipynb +++ b/notebooks/tutorials/03_segmentation_app.ipynb @@ -1646,7 +1646,7 @@ } ], "source": [ - "!monai-deploy package -b nvcr.io/nvidia/pytorch:21.11-py3 my_app --tag my_app:latest -m model.ts" + "!monai-deploy package -b nvcr.io/nvidia/pytorch:22.08-py3 my_app --tag my_app:latest -m model.ts" ] }, { diff --git a/notebooks/tutorials/06_monai_bundle_app.ipynb b/notebooks/tutorials/06_monai_bundle_app.ipynb index 8783b3d0..d1d8baf7 100644 --- a/notebooks/tutorials/06_monai_bundle_app.ipynb +++ b/notebooks/tutorials/06_monai_bundle_app.ipynb @@ -1337,7 +1337,7 @@ } ], "source": [ - "!monai-deploy package -b nvcr.io/nvidia/pytorch:21.11-py3 my_app --tag my_app:latest -m model.ts" + "!monai-deploy package -b nvcr.io/nvidia/pytorch:22.08-py3 my_app --tag my_app:latest -m model.ts" ] }, { diff --git a/requirements-dev.txt b/requirements-dev.txt index 34a81aa3..440fda6c 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -35,4 +35,4 @@ scikit-image>=0.17.2 nibabel>=3.2.1 numpy-stl>=2.12.0 trimesh>=3.8.11 -torch>=1.10.0 +torch>=1.12.0 diff --git a/requirements-examples.txt b/requirements-examples.txt index a6efd43b..bd720434 100644 --- a/requirements-examples.txt +++ b/requirements-examples.txt @@ -9,5 +9,5 @@ trimesh>=3.8.11 nibabel>=3.2.1 numpy-stl>=2.12.0 trimesh>=3.8.11 -torch>=1.10.0 +torch>=1.12.0 monai>=1.0.0 \ No newline at end of file diff --git a/requirements-min.txt b/requirements-min.txt index 5db219c8..2cf5a4bc 100644 --- a/requirements-min.txt +++ b/requirements-min.txt @@ -1,5 +1,5 @@ # Requirements for minimal tests -r requirements.txt -setuptools>=50.3.0 +setuptools>=59.5.0 coverage>=5.5 parameterized diff --git a/requirements.txt b/requirements.txt index ada874ae..92151b3f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -numpy>=1.21.2 +numpy>=1.21.6 networkx>=2.4 colorama>=0.4.1 typeguard>=2.12.1 diff --git a/setup.cfg b/setup.cfg index 0e86f83d..8fefc871 100644 --- a/setup.cfg +++ b/setup.cfg @@ -23,7 +23,7 @@ python_requires = >= 3.7 # setup_requires = # cucim install_requires = - numpy>=1.21.2 # CVE-2021-33430 + numpy>=1.21.6 networkx>=2.4 colorama>=0.4.1 typeguard>=2.12.1 From 2ae514a7f7e269960c7f8e8b69666278f7420b97 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Thu, 3 Nov 2022 14:20:21 -0700 Subject: [PATCH 041/216] Make app.py's __main__ to init and run the app, as this is how MAP is run (#387) Signed-off-by: M Q Signed-off-by: M Q Signed-off-by: Simone Bendazzoli --- examples/apps/breast_density_classifer_app/app.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/apps/breast_density_classifer_app/app.py b/examples/apps/breast_density_classifer_app/app.py index e64da6d6..d7dbe062 100644 --- a/examples/apps/breast_density_classifer_app/app.py +++ b/examples/apps/breast_density_classifer_app/app.py @@ -1,12 +1,13 @@ from breast_density_classifier_operator import ClassifierOperator -from monai.deploy.core import Application +from monai.deploy.core import Application, env from monai.deploy.operators.dicom_data_loader_operator import DICOMDataLoaderOperator from monai.deploy.operators.dicom_series_selector_operator import DICOMSeriesSelectorOperator from monai.deploy.operators.dicom_series_to_volume_operator import DICOMSeriesToVolumeOperator from monai.deploy.operators.dicom_text_sr_writer_operator import DICOMTextSRWriterOperator, EquipmentInfo, ModelInfo +@env(pip_packages=["highdicom>=0.18.2"]) class BreastClassificationApp(Application): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -36,7 +37,7 @@ def compose(self): self.add_flow(classifier_op, sr_writer_op, {"result_text": "classification_result"}) -def main(): +def test(): app = BreastClassificationApp() image_dir = "./sampleDICOMs/1/BI_BREAST_SCREENING_BILATERAL_WITH_TOMOSYNTHESIS-2019-07-08/1/L_CC_C-View" @@ -45,4 +46,4 @@ def main(): if __name__ == "__main__": - main() + app = BreastClassificationApp(do_run=True) From 897e6764e03cd4bcb8a215c6d787002b76613aef Mon Sep 17 00:00:00 2001 From: David Bericat Date: Tue, 8 Nov 2022 14:57:06 -0500 Subject: [PATCH 042/216] Update README.md Change reference from integrations to platforms Signed-off-by: Simone Bendazzoli --- integrations/nuance_pin/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integrations/nuance_pin/README.md b/integrations/nuance_pin/README.md index 19064f13..b361da2b 100644 --- a/integrations/nuance_pin/README.md +++ b/integrations/nuance_pin/README.md @@ -24,7 +24,7 @@ Minimum software requirements: If you are reading this guide on the MONAI Github repo, you will need to clone the MONAI repo and change the directory to the Nuance PIN integration path. ```bash git clone https://github.com/Project-MONAI/monai-deploy-app-sdk.git -cd integrations/nuance_pin +cd platforms/nuance_pin ``` In this folder you will see the following directory structure From c25f54e5e6653b30e9bbd023e7196fb2df507901 Mon Sep 17 00:00:00 2001 From: David Bericat Date: Tue, 8 Nov 2022 16:33:47 -0500 Subject: [PATCH 043/216] changed name from integrations to platforms (#390) Signed-off-by: Simone Bendazzoli --- integrations/nuance_pin/model/.gitkeep | 0 {integrations => platforms}/nuance_pin/.dockerignore | 0 {integrations => platforms}/nuance_pin/Dockerfile | 0 {integrations => platforms}/nuance_pin/README.md | 0 {integrations => platforms}/nuance_pin/app/__init__.py | 0 {integrations => platforms}/nuance_pin/app/inference.py | 0 {integrations => platforms}/nuance_pin/app/lung_nodule.py | 0 {integrations => platforms}/nuance_pin/app/post_inference_ops.py | 0 {integrations => platforms}/nuance_pin/app_wrapper.py | 0 {integrations => platforms}/nuance_pin/docker-compose.yml | 0 .../nuance_pin/lib => platforms/nuance_pin/model}/.gitkeep | 0 {integrations => platforms}/nuance_pin/requirements.txt | 0 12 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 integrations/nuance_pin/model/.gitkeep rename {integrations => platforms}/nuance_pin/.dockerignore (100%) rename {integrations => platforms}/nuance_pin/Dockerfile (100%) rename {integrations => platforms}/nuance_pin/README.md (100%) rename {integrations => platforms}/nuance_pin/app/__init__.py (100%) rename {integrations => platforms}/nuance_pin/app/inference.py (100%) rename {integrations => platforms}/nuance_pin/app/lung_nodule.py (100%) rename {integrations => platforms}/nuance_pin/app/post_inference_ops.py (100%) rename {integrations => platforms}/nuance_pin/app_wrapper.py (100%) rename {integrations => platforms}/nuance_pin/docker-compose.yml (100%) rename {integrations/nuance_pin/lib => platforms/nuance_pin/model}/.gitkeep (100%) rename {integrations => platforms}/nuance_pin/requirements.txt (100%) diff --git a/integrations/nuance_pin/model/.gitkeep b/integrations/nuance_pin/model/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/integrations/nuance_pin/.dockerignore b/platforms/nuance_pin/.dockerignore similarity index 100% rename from integrations/nuance_pin/.dockerignore rename to platforms/nuance_pin/.dockerignore diff --git a/integrations/nuance_pin/Dockerfile b/platforms/nuance_pin/Dockerfile similarity index 100% rename from integrations/nuance_pin/Dockerfile rename to platforms/nuance_pin/Dockerfile diff --git a/integrations/nuance_pin/README.md b/platforms/nuance_pin/README.md similarity index 100% rename from integrations/nuance_pin/README.md rename to platforms/nuance_pin/README.md diff --git a/integrations/nuance_pin/app/__init__.py b/platforms/nuance_pin/app/__init__.py similarity index 100% rename from integrations/nuance_pin/app/__init__.py rename to platforms/nuance_pin/app/__init__.py diff --git a/integrations/nuance_pin/app/inference.py b/platforms/nuance_pin/app/inference.py similarity index 100% rename from integrations/nuance_pin/app/inference.py rename to platforms/nuance_pin/app/inference.py diff --git a/integrations/nuance_pin/app/lung_nodule.py b/platforms/nuance_pin/app/lung_nodule.py similarity index 100% rename from integrations/nuance_pin/app/lung_nodule.py rename to platforms/nuance_pin/app/lung_nodule.py diff --git a/integrations/nuance_pin/app/post_inference_ops.py b/platforms/nuance_pin/app/post_inference_ops.py similarity index 100% rename from integrations/nuance_pin/app/post_inference_ops.py rename to platforms/nuance_pin/app/post_inference_ops.py diff --git a/integrations/nuance_pin/app_wrapper.py b/platforms/nuance_pin/app_wrapper.py similarity index 100% rename from integrations/nuance_pin/app_wrapper.py rename to platforms/nuance_pin/app_wrapper.py diff --git a/integrations/nuance_pin/docker-compose.yml b/platforms/nuance_pin/docker-compose.yml similarity index 100% rename from integrations/nuance_pin/docker-compose.yml rename to platforms/nuance_pin/docker-compose.yml diff --git a/integrations/nuance_pin/lib/.gitkeep b/platforms/nuance_pin/model/.gitkeep similarity index 100% rename from integrations/nuance_pin/lib/.gitkeep rename to platforms/nuance_pin/model/.gitkeep diff --git a/integrations/nuance_pin/requirements.txt b/platforms/nuance_pin/requirements.txt similarity index 100% rename from integrations/nuance_pin/requirements.txt rename to platforms/nuance_pin/requirements.txt From a599e94db452a951a8e76b90c0e61910e27b90fd Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Thu, 10 Nov 2022 16:35:28 -0800 Subject: [PATCH 044/216] Create Enhancement Signed-off-by: Simone Bendazzoli --- .github/ISSUE_TEMPLATE/Enhancement | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/Enhancement diff --git a/.github/ISSUE_TEMPLATE/Enhancement b/.github/ISSUE_TEMPLATE/Enhancement new file mode 100644 index 00000000..23f69ab7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Enhancement @@ -0,0 +1,19 @@ +**Is your enhancemnet request related to a problem? Please describe.** + + +**Describe the solution you'd like** + + +**Describe alternatives you've considered** + + +**Additional context** + From f27d90d2c56a3471e3c834f410c6c054baf85de1 Mon Sep 17 00:00:00 2001 From: Ming M Qin <38891913+MMelQin@users.noreply.github.com> Date: Thu, 10 Nov 2022 16:52:10 -0800 Subject: [PATCH 045/216] Update and rename Enhancement to enhancement_request.md Signed-off-by: Simone Bendazzoli --- .../{Enhancement => enhancement_request.md} | 9 +++++++++ 1 file changed, 9 insertions(+) rename .github/ISSUE_TEMPLATE/{Enhancement => enhancement_request.md} (75%) diff --git a/.github/ISSUE_TEMPLATE/Enhancement b/.github/ISSUE_TEMPLATE/enhancement_request.md similarity index 75% rename from .github/ISSUE_TEMPLATE/Enhancement rename to .github/ISSUE_TEMPLATE/enhancement_request.md index 23f69ab7..0d86db49 100644 --- a/.github/ISSUE_TEMPLATE/Enhancement +++ b/.github/ISSUE_TEMPLATE/enhancement_request.md @@ -1,3 +1,12 @@ +--- +name: Enhancement request +about: Suggest enhancements on specific implementation of MONAI Deploy App SDK and example applications +title: "[IMP] " +labels: enhancement +assignees: '' + +--- + **Is your enhancemnet request related to a problem? Please describe.** gGFIEAkYeQaCVT)WX%tuz4H*04W_DnWM5t{v&7Rm;*PVkE#Emaa8MceD?oD@`nM`>R$wF>_2!2`otGssF?eXv7dQkG`er?N~5Xmf6>Z? z`)KN-|5dW7lk`<80=`iFsFxl**2%ud$==V-G0R;O8va$~&m&d~-2jUj75dPj_hC`N zruMSs^;$oH44a&`SIsypJ-A^*>ZWVOSwlxE91)-JD@6xrL1X@=jp?#+lRXKbzDu`s z&WO>;05|>^WxB9d(-d0_uSOLrnOtr<_&Vf$V=<#n_eS8MNoSs;_}E{~TyB#TOnC^*!MoNF81v)Rf;=I6yj3N&Q;3{dLo~?`g_uTZL7WKSRi+XlSe0g-L!lc}P z>mwHDoJ&r#La0CUmIu>8J*SmxQ+$=}vzqH~a~e8ku*o1l>tcQOhaWTjq7UfOc^ihs zSEJw_IAlOtBbiBa6iS8(fZe)xu~UAsW}eU2T9Yhf$~`~u58gQ^&G3TP@`au|HT~BY zl_~u?UV0|wY zIg`_!4=hW!-m^HJFmXtF&C55vxPIV4^&R1FT2A;Qvx8CD!)@QsZAaiVeyPCm!Z(%zg~ zCl)8GADjbO$e`(9>fD0}Md+(8-aH8g`tz5qQ_T9#sgFXz4AKmCl5Yl$LmOzY(La1f z`-`?t;Fc|)@q58BmkS)gl3c&!aY7C6GA>S(YN|jipp=>ER`Rm^$76pT^h4jJFL&s_ zeeAEZoG8Ob4^3-Vu1ibiuCQ9MUnlp8quYP~hW?7%)-CNlxKFb}wSED2Fc_>myAH8` zcVuO0Ftc+?Frasz0G@KjheF&aj3o0Ce1MW0ng{e|`gQO9BbS|Y)}*xN(X}EO;~`^_ zhLJpws#k*7v;dEnZ8+pjpI)2!jUFr6CmJHXUBlmOSl^MH%E8N2XEoO+3>_H@vXTB8w+* zg4-mG%g9YYnK@afp)kRUj*85a;Y1aY0k@)c0uPxF>pvH@rq9imVKXU9CY*=mj6VCK z8M<-9Iis62tuRkK{vaIm-B5+T_8d}f9qO>MSDx7-FY|=RPMJRPlge5r-DS@`du!%| z;f0fO{py-!-cF=F2W*I}A94Y?FKf5el_J#{9G1GTz z77e=NWpRZk1GBLaYajFji}KJvxkUyaJIAmTawBiO!gP^eLV&|qb9=egG13<*;nq*I zs=PptOtSM{RIPs%75%riKdVUKepsQJtHLdrA&=wNlP_W}7XIrVU6@wLiTv6VPSUJY zz6jL4nyL|YA!f(IkFu4@^>_8|oh|JD_sbvkqMfvH4~>Txj2s&kAfGGyP#bGd`$C_C zd)KW_V>G*)vMzeTf3_TWI!vpy_#!q){=#jWyh!1B!^gO+Pq!ZF;?WbW7wgUhf-JfT z0%Yn$|Fq{^#XX-fWSHw4QpJn6Zq|9|pS#0_a&VubFfg`Pov+%tGd1d771_~o(f{vP zEKMhB<}EtyA;HIdKvFaqI5^GvpSfXm)tRmWn)|_x>jjhRls&bnT0_6R z+Q0B)9cE4o{hqyhy1%{j^)Jj$^;{)$;qX`rE-OFER`1#_XZ5CZVgnE8b$$sp-XUjd2~$TEx&IJU zk)Op;SwOU#zOJYws*x)8uW*tYTV6kPy5gfBN)K&XYmpXh-I(rLqs4gj0uQeH>E+bL zV<&QG87l|DW=u#@pMbu*2KmS$X4qS7c7+$3KgZ;#T}_b1MQ&!->17X(bwo;vj5x{+5>+F zj%Tk1R_QtLCM`A@*QRRwpLNNMG~MAp9-sGs)<-Ap;TNfW1yO&|HH+;;{%##oRj6ie0D6f)KMmpRCM{%-SG0GpgZ+<#0 z&+vZUi%<76IN@5(^!gXU{him(GV(x&{QPtVO|GX|{)VAU;3ZE*@KWQ%&m=QX(04D^ z1SN%Y%@y|PtL1qQEb`)_@OrwO5r#g5FgEHDY9Tsal{|}>ovK9uPCI#w?g8bFGcyQO8THfw>@ZE4DwL1~Sg>D-)-)0?UXG+TY^&fTe- z;t}0=`-1d=w_TXJD`dm|15N7iT98Nl^CIEOmz?Uwv!IOLnp8e}!K(D&ytQ&{OGYtb zSAU2YGFg%6g$`9rm0RVkf0!pBKO5at;ymfC865|=uSlJB>>GHul^}F8$(I2;HR~Tm zoIGu`!q~9BEP9C!C&9wmfugdGV;>OlAb~@VmjYEi`nY6d8DOo*Yt4gC|HyBUTDaW) zB|lJQfR;Pq6fc&kil>9VbkU*zFo;^a!nSR1Y*e8CVt-9r8q*;yVAw@paCENM%*ZGX z7+Y>e)NjWZgjcxbDn$EP2ifY275Qm-Ms)1F=XG#jk5 zW-*uEs6L6E8<)1i4Q7vjqTz9XQaxQE6NiWx$&fk>I3qC-{k$%1Sg|>+T(mZgIblS4 z;VaKeH~s7`eT@?@`5;npf>Pf&gEn}~pZg#EuqA!!!owcTWbC0AlJ%O^2HEZ!L%VhF znzn7;=`jkYYv2uTfeHQR@!Xt47=*xN`aTL8sseW|_i;9qs1PraZIyp90O!04K>9oWdHp6Kgm`nj%714p6n`UMGl zoEUIz_Qh7dq0D?!KLpT`!1=;q>I^w1bh3Zn!Sv8Q^DK&a6-b3X^^{~N(|dp%EJBPE+_2cJ?wSQ9`pN?^r_#DjdI`*o5w2Ce zG$Xoq-`=W<#tVcTP1(s;oa)#A_-4gV-(Ma73R3H=F1_+?m!?-=^|DItv*q9;H~%(N zAcdk+RAP;A&Oy_SGxXyJyJRqdEt5Z`GRq{p(hF_Uj8qjq`&N^^szm!n*_=ur;S^ z7tT#{H*HF(eQN^^jx?b!qm-b;bhyTKyyQcO>)WlTJ*7B(veQLB9EN(BCPU-*wtq z#&S^OYHhm|`R8uhpzaY5hY(++g-{#eM=9Dg_dk%gqF<~3<86PKhXi=6Pt${Dq)hgTem+Dwe*YpMgK++1loPe z4D}EH%b%w&{M9!#lX8*A4AX~_o?E~1sqdS&b1&_1sJFZFpQ8xr4>A6zAIb3XV|1iH zd<}g6i$C*oU~T(%>)AEE@qJewRrqrK=h73l6IlH0quQ0{FJ)K8-;5PVUo9E7%P|MK zW<;ViQuxVujv`MrRbWcq2uA0ROJ9(T|KKY4!1|~r!hQGiKS}RV{C5gQjvtmzJOAV~ z>vlPdotjgVo}-eZ5GqWHoXBgIt`8i7hcp)uKM!-LTfX}Vr6PzT|D6i;a++p(L;v*i zPD+gHQxwLFb)i78ZOabL4qs&Y)&)3`KQo$lzMnlP{~`pTUK zC}={7UJPBuJ|sKT%0VRsm_EhTEbhKq@N$=8p58udX~mgt<5pd&_tXv80EK&D@Ls!V zn{FD(*GA6rxWVC^9OWs|0Jct_MGnqq@^MlvTCpi@&`fwby5DBy2YX!}Y~;`cng@0q z;C5Pz_O`9NQ@?&aQcuN#+NYc3Zi=zlN1tcR*}5(U0@c~A_(r2g4osaNUTz!{^s<1M z>HL^Y4(=uihlA~o2bOw9K5|h$S#OeFcH#82adTr@w`r%H2f*7o!CpTa&C-Iy`nR+y z!;!7tigSW|m7`<52ulr$d9;1&`ZPjum}wuJ-q7T29uA6i3ZtXb)KxdPV@7Hw3QqCd z0EQ2>n!bpe132-t5O{*D^a{NgIH1q5SIO_EA2b6b(~ov^`&<5k z6a2`W>2%QV(0^O)Pqwn__C;y)H*QRa6zhwruyu0sb{R1^4SMHAsrTt)ZOma=ZLvSa zQd8V<`rwxJ+q9~7W9rL-qBZGg_Ai2IpkC5#T(r?I-n!Ox@%j%?kALm)c8V$D&*85$ zXE3RL5jPb&4yL`QPm$brC@?Dej1S}-JDhI)-+R)VKYV3s7(O74oH#tKShz|dtQZfd zM@@4ON8p3L|1y2`xd7k zf8&4Cj?EgAK?n-yf!khZP*zG{TTtR7)34>AqSstMqXQ(%VC*^%eAXElDX##-evBp1 zVTOc5GEfz|+TxD0p5f7dQNlRtaoP186;az#F}n7)cB~t(_Itls| zaoy3*Q@;fV4Q;#=96T5LajdrI`l{4(V0T?J6}m_laB6T30y8gTEt!lsAh9c9rWyP2Fe5p_oH1 zG2`|}r2x7 zW|G2FZ_NPTBM0x+z33H|qMg82OMii!iNqWy+{=KT^%`FerS*-P!ESnW>En0&&i5eu z^s*$-umzvmT)SUshWzzQ7pEa|On27TIgR>C2by6$Rrwdnsklf#Xg3I!+4TG5yld3# zSQdOVLZc4+wes&(2$z4j^LGv*gWmRv7lcC9MgI?L@z0NK+~~N`I4t+c>1YT8344wH z7s|=^&-d2IEZ7a2wQo14;68rajqVRP1R)S8LKcs4Vv$K4T^-s>4_^xLQt5vHtH#sS z{zd*`e^76odMU2w74LXyy7YA~aDTh;np+%_iOw1-XUn~>nQvXaUCzTEXor^e*8(|g zWEN`MpRCfBt?j?H{H^=nw;#M;&n8{eUJ4n6<5~o2?H@b;%ssbiMtNt=zCJ7%T{D0Z zqRPxNo&WEn^U{sW7rR~etIxHzzXf{1Lg*CwA5Q86vZ?j{5=7ifu8-gTyKGYjTF}2i z3;*7}Y6TSa!YJ%oCoSmz&ysoR2Gee~T^pg$q8DB=UAu5j`qkq3qT5UTzME`$muJ_b zvxnsXzqadK@x#kd<6&yEjQ*!&crlYGbEVy-{F{*v3``OC#I{&SsDJ+3_!Ts#MpDchvJ3*alV@@ZV0 zN*&Yj#XVnDRKL)__jj|>6`FW6LXLFcFL}-RieJv+nh@7ok6K5DP$>|Yt^C`6eNTmc z5DO|C$8`$KfCtYw;P-0sUQaorS=95i^QWg%&Y1@L=Kmhi=jCYi`PZTe0rWG!LJpOU zYc_?jZ+i0~f4P=Be z&gyvqETqB^&_55?r%oM}ZoYeA+O%~?TC0UfM+^yPi?P!&l!gqdm!tYXYEZmXLc+j4 zv}40gf6geG&f!E!IOK2&U@Z)&hphD*hz~9tGLGOs_>Bt$*y9Ef$1?z(J2$7bn|GuY ztG1?hzW&^_V$IexsG)b-p&9iHml1PFw=#me{r)BC?XNvIz4`L9(hkjxo21Vm?tf%O z+NGGUu))R-BGKKvWw+$rX{Q1Y9P2kVrs0Zhe&+Ns=~uVR34T!(6?ttGwW|+T*0IVh z8n^DzsIH+hkx-bNuBmVD`qcH{X3cPAfvxQHRvAvRu8IY^X!&~84X68{0rkECi`try>c7&#r7P8z z@vv(tTBe@W_b`qVV)Gq3em9c^v@6HXp$+vwV@b6WlAdc~@iGreMHN4G!v z-`I&G)7#Ejx@dT4i_5@FvMsYcLzV)`B@-GoA( z>1S?yLss}TE||mfQ6qnhanM9w_*9ZSfR-&;mE!{AJy1NuasmRk5^O{Y)ABLSF%!v5 zM$J+u&RWyw`e3xG6F9ZiKhVJ9tc#(F(!gZ^&M22ddYV4T>@DY4vt~8U{QYc)^(y+U z)PZk!RUKmzD(hAGIDnwX&5!j007-kKjlFB>IOL~|2{U#`4xnBG2=M~{-~yhC{A9qO zp{nty+$YG~$zL?AU$xP&|D? z9Xa_Wg~dnN;x~5MqN|+4k@MN;g!`5_FC{t`5;a34+7vbG+|F6o6YkvBxgY>&qk^V} zJ~57g+rE#*UUM>@C#Fxm9h!XL{w6+=i00of2c*ZLLd?vnpoacI0jz1<1=G%ls_jR6 zNPCmzXW{_y(l-+C85+o6IDG>752^khttVs9OsB9E)R>geq$qjeFhzELt?9>klb`=v+Bb(O6sLuccp+-k^1-PdD{SwEjQbCRV2Q^@ullzhEid502z?l`#3?onmj~s>l$IBsb zD(i9jzhCT_F(Y^keO?4?*t1iPbg0@IO&{4>%il@kHF4cdUr;+eX6Uq){dLLq!1Z90 zX0JOP!Txw{wNdL1Y}~6pO`oZuAMz?o*`@s}vIwrd$G@N-EfSoVofh;9kCy+bw0SFx z2~b_r2R?gM`q#g?Iz4pvJjiCI^reEX^WXlbAKBI}czK6IJ*%u^cZ?eN*uTHG#W+4_ zXgJx95nV^MXSoKv=%{8Udq`ny_V`uZNNK28xU%nuMxf`=)AD~MD#6JFa`$yYU$soiAQhwtJi=nopk1u zG;GwMv|)9G0%XrRRHU;no{?_*)xA1GmcVp0`Um$lrTcGwI9;G;VCwKJJbC)~EWf^H zyY2yD<1VVgVD&iE;d)TpAjf`54T|D1;iR!?=^XhrP*ofCzg;uom(5?HXZEp{<4x~> zbw=5o2q{LItJvyHi0Y)pt)|SFBzJ8awzw9m1nc=}b{ z(w?AkU*N!aF@Q+QOpE*R zP!5RwnMaHz8*)Xb6<>rX4J)QI+p3{dPIL&b{F84d9mf?!1<<8YFT(~RwL8j8N&nk7YhGIZ_HTsaLq=$O%Id69 zYYY49H@JTqIJmFBgju~*V_FShTlL>CR$sVu564RPE}GFR!qA2T+5OCtj%W0O}dW86RKmtX;M#tzXGSxj9|u=CHVwGn$6a6EVb%}I3D5se-*{a)(+|=uzr6b?<)H)lAGQWqv=FD^R4qzaeuH&C*OC5kHSqKQ_-)#;b*BZ4 zORR4;(w}}W+)oYK=I2k2T0MXHF4nMMR~_nW=R1ge8&P`<)?8Y7 z{%G<1_ax~vY6h?14f=Q8I7>6V^`#T6DC@$@&nqO;{8@_ubUNkisp-5+&(N3)S6u(1 zK85v6PCIk57HcJha!dK|x?yJJ`SVoGO0QSQN(ijcB;A#ZR+)`jndA8ftiexVX8T4> zMkd6Hf$P$nw76;S{t6dU0j%nO?1`fkQ+>!0^&equK%&SYV~JD|D2p?_QQ=+|&skx# z-E{3KoHW5um=)Y+I8)|H=(%`1@a6 zwX-L%zkzb54;VBs?c1{ z`ix}2=xf@V_6ID+O2O&GAPDCYWw_Fz^!uOPktR+5lQd*>gFf>*DLs78T#pB(-?pF+ z9uOaaK5Ia{`;%`;ESQBO^qQ~#CjIW3TT`RtA@s++haN~j|IT$@75qK__|{af>%bqq z=|$=On;vrPHO9{9|BM5oBZeVWIEP=KYk!!xfhr%Q5L-hub6~-POB9bi&v190sObvX zu}F4|zm%a<&h>>))*BkbCE2xyLZN`ZhCbH<;Ph|anzQ`DVbHQ2Q4V&GtI7wr{!G!Q zah-F$j4bE_Q^vn6e}!Lg1}?vtEy&zJNEB^tJgUPtOM?`)=PZQ~quL|)EKECgs0{>< zgh87xnZy~2HXquV=g5mO*^uVHz(G2ajvhl_U!HZ+EJYRR1E|zzkY=Xq+Du3=uFsyK zsq4Bg-!>v^%C^bNEfEq-U0Stpt#97z6=JRL00k%%Gev$_ZA&Unz7qb$F$vpJ@o9%~ zt4o!V&~j#LLA~N7^qupRgYK*X?2#iHiXX7K9YaL{=r8eP|A4sV?L5!=%oI55p#Svi ze|YbHX|&?g(>Cb;{teulJ$u^UM%Bg*;a|#^A!wzEoB&;6KFirwIBK?{RMZ<)`14{{8R1n`Ynk z2m?r52Iv|Z>979Gf9qP&oL=-QIf6P;hXy({(4m1R(7@_t>(dQCy)_^hL;U>HoX)&x zMmqUy!gIAXasNVMd}pV-OU5Q0a?5|1`+T3(jQ_qyP)o2rX73>_W8wZ(_q!^~#hL@+ zyVj_ap~`dA(dherOEn{bS4ZNp(BG>y1!rpZ`1zM<_PEju^p(%G-}-erxc^YP`-WNR zrLVilUtc5WUwqFkS6O$#1cns#XYwSEJ8Y4-MHJx5Q`gr+X(lkfOadUXCub6Dh` ztMDn?74>2O6NQz`kLcfd{Y;$*sQ_Ec4{wy2SN2){AO8C<(uY5Hm9W&MNz=xqPk;Zf z)9s4O?l|Vk9i@rOGZac@_~^lU4xFDp_n~h>G54 zrHAjHlct<9zOV;5hkuD@mVj!j{#(CwfC5N#iQMoAAHqi` z+_(Rr>cb%^_~aOVhyiG;CW8lM?WjLiPNhTpcc#8w4+vLJ!RodO2Niq4v3Tl^o%?-! z!o*<;rPDVZWVK<@g%7NHDz*Kh7iL*DU%)JaZX(i7PqG0=vL8mNody0n6~%h)DZLEJ|BZx}Ez4H(xy zt$Adxz9Q-DFJ>HR0Isradk6oe|1tKNj0r(ZzsRhF6cBwh;@F`KPDY}=VCnl0-11P` z{h`ZKFNKGC?Ym!*9+|mNcRjdd3#f&Gi>P`8`iB)q_2SoFpv6pwyWa19dT08@)z>L5 zTz4(TEYGUwH1oBL1bJ8&_0PWVYw7=d^L<*RvR8W98!t-V`OJ^pEFRl}TaTl`YNnst ziSRV{+&DYE>Q67x0+sdYRD9z|0lUM zJ*1I@kOqV=y~7+tq-)ANt#5IR6s+14BIcnB)15M^MlzMew=C+KDG z2%Vk6c_U6%=E|oapOULa^``{9BY;$(eDRWUphik*sXoiZFColZEx%wSe~%-8u}~72 z8uu%~Quh|Fm0c;Ww*=3c)K%G9^ivwyJf1oE?>jm_o2Ta3(&HW-T8bMe^>1dj@bb*G zw;X@A^k2G)^6>Ko&3WeA|J9E^7;E%J#YuZj*UO=i)?daO@)WihF@l%`m*Obt#xTh zpe2Ep1U4suFaPVeJa2GX8F+Sfcg49n_i9U=?Oz(3+NRXh|9k$&_?;nVc{Jn$BKxeQ ztE&Kbiq(G1k2b}Cit%ec>J(!Bp>Zv@gi#)+tN(iv`ivWz9klGY75YEdmpy4rALKde zVfqT_I?a=z^@V@=diYQniZWW(G8d1(#Mlho~rzJ zRQ+2B+v38TrXv5XK__Fnhew&WREQ<(3iG9?WD^`U2M~&sz9RfVF;$-ov6agr9RT=i zRpy}wPSl>{`KBhbWu6&&qjJ~1^J9wk>$*#yG+-JA7ig^`whHvo_nR;69k)XJt#@^> zvn>4N0290wlK5<*AQL(v>nXL&qC*rnVFf3Are|ExRZhX8XsM?KtM`Thlm=bs>fY7C zif&DD0n0u>5I_xz#}=-PlaCu7`{>}(JMNnw`%Rq?2g``?ol9@=p2nu4yueoHauDRF z@?*ZAtV07jwO@1lx@B5*uFpn9#|OcQPquhz)4rUy&(Yyl%F?YBoJSwFj}JD|1~+b8 z0!jUFxr9`22(s}OhRK=#f=tqte!j-6T~x{?fl@A;tAD503rwkmela3nbN!R#$$pVH zkODQ&rf(8Shbx>JoxK^qv(jIE&;01o+s^gcXWwN|!K|AN0Z0@@|7|Qx0SGiZyEMW` z9u6Z%bPfqwg!Wk0$g0X;0G3|^heFnC<=si?v*LN_Pqo^*lrhV%tICK>EESd8`lkl% zu++X+hi9$0{(%^E(k#I?=@l{pNg^^H0u!c8&}aI$Y3r273P6#zfQzrRDKa)W2UGv2 zA2l@|xkW}{wxg0kk%P`McOQRASoz7PH*`73pw4kwp1SIo(j=Rd6&w`;P{nD|#ar^5 ze|dWxr#JBv^_kaX^+k_7q_@%~L$*KQg^RuqnSr#4KGaV<>p8j(isg%!$B)jtRQr4C z6F1~3IMM;P4yj!C{`#S~?N@i{Q{{vF=Kt%TxIl+IYp+@0=u`oA9x|736Mf#ifBV0G z6zBf&OS~`m%ij7zec{9^{>+Lj=#gw#l;6!ncjAp&*W}4uIpk-DbbXc1#klBOKaX$e zkkldFdXZA;JEt&|^1EETAw`bRAW6O~FNBg>HRLPCFH}w66_L0y7ir1MV9~STGqI)2 z$qa5?P0dIMlo;J$6CC4p;Ol|<#1Q%nv>wGct-V%p1>7FfP@XGCj}XP?GX}ZqnWRYSgw^t?OoGs=^>ypl#iB%eN52g3@=|u)r|5Vq= zGwX=FRDaQMq3{R-8qP)?$)TSu`a4Yi*Uz6Di?p{qdmVGo<3OwbRFZ*s%|6zgwe;WZ zm@(dtZ2vdUdn9hu!M!82edox|t{BldB=oUyERhj?sm4*u)vvp|QETJRZWru-p6S-Y zm(%akSAPHbmtVB8$Kww_IcOsrW%&7~pDCxE^So!8wHCdW1X>c<2_$gU#n;E3+P;MG z2LnXEq}J+|v)}l9ec`%gTl+BIs`iJ$ekL*2FXK#(eGcoaZmsq(udbQ?oj2bT56LdM_sq#2NAq=UaSI7)`}VI$e5#iRJVYa!YL_dF6;=`h#(1Pia#f>+D`^B-Otr@s6I+3aju z)q&D?#sZxmiL2v({FIo5YCZa4!&|RKwjQ$!CwQ4q{?9*uJ#Ns~Nw55)vtyF%hu%HI znI#bAU#a=*P1^VThhO^XZE!Zr`i3jm3q9#mClB2{H|EJEFj4kc>Tdb6 z6>V~p0mLVIWx;*zDS zG_h9IF>=J2v@h~X@$~usf%{F054?T6Ch?xWC!7S3YsSfvlT6A22&~aw?J2aKNs(y? z=}V&=*&zDjoDb@-Q4EjGxV%R@`5>ZS&Cf*nUVTdO>$~U0IcFRhFVU*Vb{YO|yX(=o zU;Es$ql_|$;Zk10rk_lL4w`K5GGUxnIc-=fIdv&gTSUN*R@VaArfp|_eb-|#fAI=8 z$Qd%2b%ZnHS#{H&5d!QiN#BeleMk2ZEkN9M9r_!Vtc*opy-KU1ua6C@R-_E1)2Mqbf7PEN zrj!Gb6~OY4pt5q5F2B8R=s*r?K;(x8hPh#3B8z z<>!rYqx|x6u)yk@ABs`4_fK6{RFl#ZD)7QB_!-)lY@^!n^2b-|!Lu;-)WI#)rEd52 zf6fSv%&J@J|M90E6IXokYU3NCebd+IP&?|;pj`Az`O}Ay#8r+ublqinvY#pSs$`d6 z1vZE?Bt3-CJ#0u^@cE15=-G$)gz@K}drExrFTW7O6t9f>nXJ9;!U`R3IdD=Rq|duY zsILb6A-zoCAk$HLOJ3ck^f`CpXXjsGV|u%c?&Bwqi-%cR&VWitTsB>7@ZAi3o&n$g z(#64{Ij?x!B`)xKs3(?)F_}{TgaoVlAFKh(s4*krmHO;$ zs0_JZ`S)*o%Mr?LzI+EBIcFT`YRx*b&{qZkGfMRXCmBON67(zjC!cvHz8blcfPkof zVC9mgeZ_C$@@M_`XsaC$@btW70QU1A=+i;DDu2^-j4nck&g6^V44W1}rk6ymZ+NK} z-$79Qir`;B9h?IqKLgK+`;Hg=)IUl+Sm_*KljR4AWX;=s-VUmsEPo+iudmPMV@y}u z+gs0Z42{W?Zsa2CF63xG`Ql53a(z(ODkNe-#*`JE;Fi%1L1db*8V^an?#mU3_1k&+HW=%OCyi8{)tI`n8@`>-#L+5hEc>TZV%V*7_G*?}@Y_;&`JdF9!O6?>5*?;_+ zeBn%v=MvxvXwd~Y;mm7yfhg~P8-j^*4j#OhUgk*$Soiym7fCd71O z{wpRnk^lLh{*e~IUE)PoYn2b0$knuz71loR`~PTpU^8ODS>0-NOXZ*ShK|VhOxAyq z{nNemlmAvAV;6lZwY7c|1a1zg$qD0%>ks6pMm)6>F?GrwF;$-yJoMP&_|3hK#o>oc zk->bJahM#+D>TnKcxGI$H$}6iPq3kRg$@T02LDJmGSlyk8}E29?s;$lrjdpL(lENz z$tigqr`p5_U_>^gk&@2Qio@PUdeL)dOqz<82S3X1?m$4~b3FcM=y$%m)#T_*Q%pZ#ShYc*}ZzZF<7fIsVeHza%jjO zF{I8p$uM;ISx=ctz8nw@V$XZ)YLzc{bV3=Cf31HqQoD**Y=iF3Pv7s{i}Vnd%Eu>R zl(Ood%U;V*ihF<}FpH%DQ9V`v#%U#OhgJZyRmc?=UK{89!I>4r{X(`OqEuTJtS`w= zp+91jR`gCB5zFSSj4mHuQsi&Le??c@AK_X@d3RBuV33-YJ>MXewbs9hiYB_kOZUef zoELL$y)O=Z_Wn9){OGvkf3JuK=RBzQa*_|YpwHcSeNiB(QwqJe^NToSI`4r+GC;GE z__xp(-Cn(PTr@uqngm<7_9^Efo%NtQgqrnlGxXc_ne(OJy&|r<UF5&J>)*~;{vFg_FsQ%tZ(is3(%1a-hE4kah%bNad_PNH z_^R1Eh{G1yolOG2{E-ey6w@AxFg#(X+;Y2=1ite>7X}AOHs&8H9d-V?_rBcQ4R3K_ z%UCIguVBJy{HcLc^Zc_+cQpSg#amGQ5*2BeOae;0j> zYRhbkQ;s_R-3)!s{aUsZn_Z=4)&!h2(R@E1g32gK9U9KkiuU@4W0DcMZMEW4( zh1yEVBfp>qYt{zCv7BM(o>9I(S@}1mpP58RI5sVREli^4T3!G0|1SD9$J4(z)8BGz z?PijE4UNH1!6nj^rXmn&5vcCX&g3f(0!pL8Anlz#Js$Xx_A}NSBKA%{`}v2PMy2O0 zg5PKA__*UY^J0b$$-DJ8bA?(5nPK6n^b2E)A733y^n(vq3Lx^5reHF?$(QnwKC>I z^SC4Si4i*FuowDT!JYEoX(;8E*FU-J znkyU{lvU2RrZDAi2-wU#J^eEg6KW#ZMDLlP->bU0|1F=1bq_ow*|Igppy-@3F}e?$ z8lAIrpE_1W&JNL)pt|FZ=2}iv41WEos({R5IXcq}XxWv#);~caL*=kxi#x8!HPIxl zotge1ZGW`nn^(umt8S5eQDl|TGE^HWvf>jjqEb%s5K!A0a^PgcSAER92uW@e{hK^( z<1kn3yNS^!1nB($AP~$rkZ~qxOG^NY_Gub~jD+e%pM#W!7gSozjPOTAfS(@UR{3V&x4`h^XGi>15sV0jVVHqE?4dU8<1JSDsuAV zI>vAKEI%|7udXUwt$$X1!#s8Hs&~Cud;Ia)VR(xdwn*V+9DNGTkmMCEoGbLIKEPCYz3NY4w(i?~vzP3k`jn)**OukF7fe@U^q{;3(D8Be69N<0Xg z48&DkQXIPA`sWS+FfIC)Lqq>9l-*ta(u)D$_IH7Kwtl#kAkm${5xJvc;>55*^z9vXzxT4U(f@|) z3s}9ICvCu_&X+rZhFS|vvNUDV=s4n_Den4ty+DzC%>xeOp~oNj2u7sI;X zFfq`8Ju$`Vqd1{9PIyTiM3gwdp;_oB4B^~Sm`^%Ar@^%7Bx@PB74@H5kQj{%I!OWnWPmW_ za5Zg{0Ld8Y8b$-s9a-;*0NH_}>fes0zhU8uc=&zi#k%_+*0v%&(Q)9+nDFiwMEAZE zqMg0CsxUTJ{-*L}|EP!x|GUax^5u;yPEwKAcrro(MO1uEU^Tf}z5|_pyL5lm)wgDm z#H>|{wpPkj4brqZ>xb@b+PY-;vHMswPeuROBYN`miSg(|^J2k*CHlN-NsOJS?U$fY z2tAqpL44X_Q{$G4Z~?wXVz972$!Vzmy4 zUNG)& z315vfE^vcScwE*J2_ZYdtG{)T6owtY94P68$q!2NR>BS`f_yv^oX8Ctg+58}I8o0< zzAC^ys{QT0r)_ZBJH&r|co`4S$`5`nCPtVVg+BEvN0RyJlRweT^kEiku+^a=r|3rd#YiWeJ@3vHz9Hq0TMS{?)E8 zgwNGp;9KiF-ehn|cZ0s<5Cqz!| zY8!B6D{$PAvtp0YLv6IV>iTM(#o>zBm%5$(|~V;BP| zwrpvW!Ge9-q5Jde?ox-T_jTg?cp11lF^usq+!#L6kdfPe*zln|-WJ5dNO_q)Y-yFM zWh)qQd{zD>xj8*C zZ(jcr@s6QC|5KO5T5YF+jEA3oY)t>uTVnW8)1z$^Um5KBHR!!G^KMPK_FM6_i~XPooq7bt-NnivL@ zepL*UlL6dOvk#A%da+01PrmsJZEuyIyOBZJ#-bqb7?tsR4m0cgr*EuP2C4#Ro__)D5vuZeL|f;7gq0;nu@xzF%6PWGGlsFZ zMZd_e$m0p~-`!09lE$`hPtd%#mKL{u><6 zJ#ydJAfxXZ?G5zZAKzG@GG7h^GUtB#?4|7l*2E;OG@UR;tFk$aw~v$!&0dJ-NKY*r z0EFtwbU!Ex{am4?Kw*>><0MtI7`zG4rn6%prKBpN8sHr(9GL>G^f&HGNzC9W#DxjO zSwV_d=KNHfgmex14sO(eqaCr&%!#pK&59VU!&$xOxr|w97#CjQ?$D~%Irq*Bw!MM= zQAfV%_$S}41C8mnC z$fYTFdM(omoA)ZE44HzE8ocC5W|VGXNzu^qW~eU?nd0&`aOkhp;g-vPbfsQW$Y^@V z{xSJOFNwkI9W729#Z+ilEq^T}ZK}W9KINbA{uhNh8@Jb_nYxRSmIpBU0V}=gR63{b z9ecj}G)HWS{Es{BC>t?3IPvaV?{%@ZRR7pFefo3ujtyF=+pV_V5z+}U=YBv8GSsNr z?1ro`F*s=TNw2TJp--s&kjuzLar_|*4?uK(Oa{#xwbcg6vtN2#9DVX(`ohOZP2aFh z^x?@vAHB%qMDd${d52SvIPswP!@qr93>`i+*6WOm_1c1D{rU~DL5IG)L`g8KDm|cQA)gP$@w7uMEV=`a$@GJ zDe=4)YE`=6?!Ntjxcklr{9Hg6tbgF*2Oj;PNg7dHd{3|9o9G)}aNG;vrse0L><+y+ z;T3r2=yrdd!8r^Jn)4acR7T<883X;gwHWop^XGv%59@i}Ufa@B52k>q>`0GwH8Dt zL>Bw%aM2lR%-C%nTevi?x#_-4*0mY~lq3Ve;5g=}17v*ZiRpTSHh!!O>ZaA#pvXvw zW|jrd=2iz?r27*l-C6(1e>I4+xqe?R_*7m9V;mr(uC>D;lA26{bo*0P32AlikWpJXG07JH<#GIqhD z<#EF;X;2wGdRQEJ=nUbJk*FBm({u$@e@>kmz;1_SpUg~?z~h`ERK%2 z`W>NYQtB22hAgVcC_ia_0Bq3dx z^q1$v;2~@&f!jUGpE6g88x>o<+o$|p9C-Xc?~K8tMydU&!;a$0^ng?X{oz3+^e z@r6IoHZNT@`YG$*FsWh0sV^7?L^rGXJo|NAwqPUj#K+#CM%_hQH}eI+3h z?yD3Bc%%IhrvK2rt)o4@_;26#_BMK>5XYZ>WPI|+e;;rEo7cxlFMdv(`>wO&zb^hr zyz-qdiY^^ciu}LzU*C_V>hI~-ae252J!Mj$4DL&s%im02ge(18et6-9WInV?`HjyR zO^5QQBaVO(HPO#h26CqF!|>!$Pz zxakkp^M~}Fb-l6w@iPt2>xhQ@3$X0%;w9K?rWp!~zNb=e`u%<{G` zz#|>>&$L;CboY~oQ{(JtXe;5~h{-S}vYKw;fD1qml zag4SNd`{y>xaD?!34Hf+7sZnKkC%dI?Bj9%(>QdrNhBUyD$Ih`#`xdkRF9%^z^e4- z@n>WHp*;QOKZeuTmvL>u0jb9GAHRP&|MZAAL0j}&@_&N&m09jqcqBcx$rDS#FciJz(c#$1l2I2wC_5^+{xV<>Vi zFKaiVVnC2tKWqzaWWja;453fMm3eExiGtC`BDBX+B!R9 z@US7#Iekj(snr+L{_9OKNPA_c+j99ItoBB`d`$aRFV`vGb}sBw*Z+z8?inK|Ys(HP z{SX;T868McsD8Ot>2cT3^284eu#PGXMPWJ{CDR8H=>ZCG^Z`yHubX@sS~rT#iS4F1#=h2KfL4r#Z6bL|uHep6 z0{KM{1%`9wQ-7G{FEm9zp9H2PFmQpt(1$yXkdiS*dVKY=$xzZdajbFT&W05cmu;EWjVWa9_ z#JxJ`75Xy{-aFd$MFtY7<%hjS{gZzeagFwumE-bT*;T%*f9gm-R|8U~K9QLsh$HO0 znMO=WaDI!4C?K6h0qY_;!CmCvqMxF&9I`F!?((-l2H>To|E=~vaQnZ3)nMq~-|~Nd zKTdwh@$UEa2uR0xK)(O|?2qC*|MTM-+q$zc%UL)*xZ-UM6SBRGE8Ocijw7`0A?C6D7b*&%~13`T7@cPz=$Y zy{DaUpeBlgW4)~7KmOV6v26L;inSkoCh5l=bC6bIua9Xucx|sq7$c#iOR>m$Kp3*|ac%#g?J5L3Sl`%VkYO=7hX_LW zdL1~rMtje;EB&ZvP4`N6klC;Sc7aKJl5;7WiPAxV3;J4VsNyIDw0>ra4E9sf-uhxf zQLgT7Q2#<(NL86PBAk?JmAt^89rW?+Wb~JO>2kfe(Eh+(Lt@-JpHBf?oV@M&<)@sb z#98hda^&_c|KQ=BG4@r*#J=D9lbHV1_r_kIcw5Xo|IcFPdGCxpPCqyXYejlPzbaqi z@~P_I{)g|Q!VQY$kFSW|+3mr-2wz8^k#?H+*&JrQMYmUZ*Wz76@XHR+66; z`yM<)JuBu-=SupG^%U%lz0N}J=Cf9Bsjn4B)^bF#2mMmKOp5#3B*euEKL=)07LSDFWAB~R%eEHS?^ zESM0H$qG3|)SV2cBR`+K4E1Mq^ zg(lTTKWz*}1`aqv7o~~1Y4SnE=rJSWO@HBbzF20*UNA!%3^|GDYwg&I!5vMNh&klw17n@GdvjJlbd&Y;f^*k#mcK=m<+A)GJV({~PZ6eimHN-G@iLEF zK056RF2K$8U-i-us(0=u>Z&imN;vR%pU;Bij2 z|2FMz@R~n)`8F!J#-AR7YJ~Ze=U>bV3PXORYjRMY@1DCB&icmx8Uc85Yv%Dhq-p-! zqL08@^52~PZ5t(T(!Z@hsAbJ{x>0i5IAF~uNiMJHr8SWu?~Rla?S|sW5}}*lKq=3( zy~f7L&z%()U3zcWG#W%&PUi|Fn(6#^#JSLZUk2&&yxbc=bTAe;3hRGOz&x4E9 zmNdLn%VW}58)GHcOFLCVbZ1hm-kwl4mB-7og`T%LIS*w5syu>+sw0_@Dh~XL$h#0Z zoxw__U$_Q}@m`PUV?FU|GdNZLBu!p-DG3N7rS)#?iHQ^T(1EMtW9_m>W6UtERMl!) zl6~N)Cf7EmD=(|kFPBl`fw_xhlxU9`)5ga!N9?Ol{x|qQQbEe-4n1*$0bcxjzjb&k zD;Y6x*w|Bf5gg_7_An|Rce_%4{25c?9RYXX$$KNEM5p`!ED^fZ`X?4A$@=O*Mie?F zrm4PmHu{fWczdkAd5#LQF@`rpO{uRx7+VW?M z3OX3t_|JcET^x4&!8%-72F|L|v_C8D@7Dk4oN;(u|AQOV-n(PekYTZ4#WH0hBl)xc zL6+`yJkqHBPomEdIf{>VM*C$T0vhWak@|OgqK5#sH&(A$6QBRcH{<_)@{cT!cmLxX zx(dEJMgD+nkKmPh<(b1{Cn|?)ut9AOVU%lS_IsI26>`&kQhIn#W zm5u%xescvb6bL+#K78Yw9Ir=uF zE0sf}osax-zeQ&RY>1&FyJMe2 zr|B8p>z4wsZ?1S=SrOo4S8^$9>Ix~Pth2t5nd?14n#xZ~pZ-%R9HQ>ZaVE)3dC-6& zbzx5Dl|fbijW?0E=(ps*ss0s}8GyHz{@OT*gVHvh}XiC_#+#=l@y6!iGD=(psL zj#(Gbhi&3eu$(V%4LUS6b=DpfwXjEflqg=tFz&cIVY3)h9QDh>R;hk@X3?#SLTebgbV#jCk-bskkedOaTEPI z0rp!r^Xi!oN~e;39B@W=g_s>ggcEix~n|+>BhjL5`jI_74J{>;jyG}hfnYr2l9|BAjN~6 zh|RP{IvH^#deib}9?1qUXvDP?K_e3mVk|d)w?UQuOL`h!|@-$W@gNyd-e|ms) z^gkH?Z@A*txIp{sk$IwC%)S0kUlFTTu2wkdQ)jeK@&GAXl}yqcUY z#IuE!2X9UE;iXqbW82w@2N0JXlspQ{Pc&3AY-EZqVZ&GYrYNvX^RD#rCSR(wM3i(W zgv&3^OE%MY^hO;%y*^HT+4Hom%5*5iwU^%wk`EwWQ zi-oy{A3tGi>@{sqKiAM>>Ob{Neu(diPQ^n1kSFrUaw2QhlVz_~H5R zhWEW9p8tvy9LrOrh)@0hAT56QX?){9zt@zb<=venz!wXf{&r`1?963fyJlT{?f+d+ z#(!B7+W)wTW8&=B@n!rravFa!45eSmIbO~+>imQ8zb63+LdWf4hiy(}K-!r9Y2vr( z{Lfr!Ow5SYa}dVI?#7JR_*(Q+xGnkT{0Kcq|F)TH*1xSl%Ct5c37KguxT5@c-AEM9 zH%!*)1Sl|>C9i2{C}=9K29j)yCp>$<*k|hakR2%&FIySk|LM)YgZ`j6^njT$Y1|NP zP_iMOwg28RPM^Qq0I&QQk7%0ZlZk1#o2k;IeUbbTuIZ*cRYoCQ~&w9h@T4}ppds_F#%~#&GRr=p8 zWAwqZ5AgOXs07=+WJ|OZi=nYJgVN625Y;ZLAujtE+O4(8*X)jJTh74_0QhjI9R4BN zNB(2?dJf5^zRkLc-<)|pZp}a zEP_w&$mWEi{{>FW@KV$8O1H^h;b!_^;6HEpp|4w^k4YC4_1a9|aK7Xf-s7K z9T;45|7UzEe{!5z$)3E_JdP;&fTYA(F5n1dTQBfJ0N#8`B%A>@q2Hs!VV`~S;qiv| z{vK?_f=3s}Xa4?c(d`3sc_=}p@{*xSr`AP6Y@U9Sb4f(L@K(xJUpPRw-Nt%emh{BI zC(VjsBZqqB8XK*K19#7jB?}(cW4TBB^FL23ubX};GbipMmy~spv1_fb{s~%R0J2}@ugXXia>OAUybkJu&N}Fblp8oC#7x1T zvTV_pERc!?k@BkTZ?~5}q8Y%hrT?j~t@b~V`o96(UgYJ?v;4FG5&Y5pvssPaK^EX=RcW& z)vrY#A++SbIsHRTwu#%E{%rwb_Drez+Q{Y!NNE6W4^`O(k1-gxTcX_P zoJ1}n_35`J*=L>dte7@wj2q>>4=s%EYUSM;ZCO%XGksQ4&X_SN4n1&E^sHMEQ}-GZ z2hN_u4J}V1?5wmc`0#Pis;YYneG#>3vbKtveAnxiW2fq8Vt$L z5=N%0ILA4p&VYbvVHO~df&0@ZK|Jvp-b5Yxx8Ht~VvzPn?_T#<>?KRO_d}OVV0*9* zYvth3K?=9Yf1_5U->v{~zJQ?(rAQ@eLQWWd*%VU}(6_4{8*l^D8 zBwfTua|!^+0-AO^1AUcq>36U9s>`;aBVznpPcrMfP5HB?c8mI-sQsg7>_5#1DPDj1 zZR&%(4mnkI3-teaFFq!^Ih0w-KD?{jE2XXXw3X6aQGGXV`XA{SeUhVSjnJaoQIuPd zf=OPU+U~fM51ew|%nCUDu_epD|Ji3_{aVMy+yCaZF=6isHi%~Xa~5B6FJ`=@PXPnO zV5icTceC`JC+WLKE%YghV?_)!+5gI;Sm^f|;K{(tPty9+cQJn_efn*%JF|S1C=wuE zuF?mY!E%t7^puWg6Z!^JbRAS8<4VOGmM~kUm<}|6uYH-d z!5vZn0k9p<wx9k}{Uli=@_GD0HrH;y`ZtVdfFtv8&2WppzBq?Kb{BB?+j&W@wj~?kTw!;XMWT%Vn5*a^df4#? z#SzbC_kwNbKn)#kbuQqcl~kx|P{P22JDqY*9Wy7JjDHhl)A-*J3MY}w0@6+9UoHAM z7i-DiDrr60CYNUY+X{qrL7*E6jfH>X?29Q)s4#928i<^gKA{N`t7cshD48^8&{cj~ z2|&7?_58zPvi1yTLVo{4i{ktrU9U6+8rjL4;N%@Yeq22J@O@+BnkCWM*`rnJQ)17F zBW=LM5P@MEvlg2l*Z^XS6b-e~$M`G&zYeRD%~VP#nHs#oqyD|;xjaOrNko{}KxQ)ArdVX_ptpIvBXOK~CtIk8fJ9juZmS#<*dq3|z% zt$(0N;*$RvEU-@Mi^;rzCjs5?$N`wlI+)42CIa2?DC~dvw-f#4*W42;Z@k@gKU7=r z4AzSt+%rYr#B|wF<=>s?cXxNiLC?|N>FO1JeZy~JrS>4NZcF4pZsOROal};VOiy&G z4;U`IbRtD{g%Y2B8h|kPHEv$~$>UYx#IQ8D=s)p>;p#ZFk96X5OBheA-2W+BeaGDU z=f!{j?N_)y$t>67l?CiF9-(h^@;jvxk-N@3AF zc-t3fn$hGRsAl>QY0#&fwfvR77<4}fJ^I8Z`VR06kZW`WDI%jW*}}g06$Yql7x8|X zh_gd*<{`_Tj~3-@$iL7x76Fq@gvkbdWiJ21sL!F^_JLQ$#J$Hm{k)G~5Z7LIi(jfj z-&qUODW7CC`}_uKd7e6baKeVmUGD6J-l69Qbv=602)$q#8|yYCPU866sETqCB^I7F z=@c(S#IubV?c%|^9(DTuhtCwC4%+2#ZywLCBjwVwD4$)5gOOdyAuAP%Dx-EJ8JE38 zSXQKvjNWr^)PwxMTh{WiZ@=+y5o~k)XHI88v`WsLWN6WE$^W}NBhf!@jv6wC!2reU_N!r7#Qy}!ezoy=ATcP|0&sB6);xF zzW#qp=YK8w2ypk3zxC{CUi$0bmLsdPee1ck*orK@N2#+3G$wgg@}lS_B^a7X^=sFQ$zj6^9?VS4^9@hqg)4q#kRzpA<|$3%zPk!PIUYgJbe8ZEW$PJ!&zmvqJ3`*W49%-8;{#_`777J?D&P$DZS~$Fkng zv0~k;*U5*09NFrQK^zfys~DF>@#4h?#VPF7g$}Ejf}=#_uW~R$MwaDC@${E}%8$Ir zO3rdgc>G&Z|0T0;1(j|ThLEC-cHq*$ibs4XV`$>}bG`FB~eOq=Te zu2OzlNmkhIQ~$GHd~B>+yFOMtz9N2l{x7zw{4~*LpLt~F)pckmTWQc8)34Bn(4h3w zog1n|w?ltXMUL@3<)05uU*G4vv`RdqcA?Nf-mK_ETG#&-%OM+vT2kb z;o#`wh^_K#rmuXNm21ki_J5Q#V*!%C;C7iZllcdoJzN3xAMkzj9SePEP-y=bB+8UL zJ9D8kINtRSZ;oS6lRgOcnoDku@1J)`v}+G~oL@5FF&5k7nJdz$BDbE9CqGv|4L^m-Fo$%dQ|ic4jE&< zSo@^!Ic3~-DVT?-Tq?;j|Da=G&g$-^G5-<^9&<4$vz~ zkp*}MbTObJTJ$9fgt5EJUn1BBu37)K2AyWXshQ|$v$Nt_m78LV5?5H}@7aV33=wvU zEqI+Jxoo77iyz=;%swRcpE*&h)_P*u$~E!rAKno6XfNO2PJdABx9`4j$N^Jg{hIl) zVbzkDFkw_2y5E%8d(wEV7(+4~!KacuF?Hi4s77q?%wsq} zg%^MA7+hRkj9&3Qymb@Igt4Q2VCu}hC&l_z3!{DQ{Ft;yM~q-w2MumGNVToKL&jJ9 zT9M9O28q==eD1=Z-4gdbywFDTky^=q&Y91SJw^>T4a^rdoQngtet|wK*_lAwoUxI0 zg~aRXF;wyoU>;fq^9jQ~>y*U?5`m>*MiDqf;;bcq#x^>!8Vh~sH5?Ik&`YWL>Puf5 zx%e4;2kYO{)&J#J+!H-Zm&V2o>tl~MzbM*94sqFbm-6q9^*?3C#MoO~O||Jj(jVz? zCk*R$Td4mB95pM(&(hZ>>Oi{G2XyI$T5UD7UmHB#R>~vO9Ze1}YWvAnrCjt~qTgu8 zN&r{(f5{%#tS=?1fzwa4YfF*yKmEhF?HZj1FSp;bX2hF6_^MdDX05{spIku$tl4_A z{Wj<;K36UzuLc5|JS95_H>K}>26o`T0a*Lr3jfsTyF)P^7Y}lNF>17+fQ}i%qyAsS zp|5`!P3jpa{a=OeqYsop$U;83j8lmEZ>FzcmA~_pi+M2p&6d=z3cX-#kB*MEIN*qV6p(bmB}bVMQk^Uiv_pO*=#CU!c7iH@p9E4Sz$a`?0Y-lP6L0xBD0t*o^)Jx_ z)S_SXN}@>Dl7E%NfV)eBi)-mW{Q|Dl{^`uBX6)$xFY9DyxxVrbUmRy+P)B?`8|=6b zic9|Ym+{4qeyj0(D2c7xZXkgZUi6%J-iwaakNYw4vbVf&Hz@V4Q^fU}Z+=bNHF+3c z+BIF|cwY2rc28OG5BSW@JfTQe?%SjOlX;O7 zjY`f$VX{UHVET(brB%J+uYK~Q828GfQ(ophnSL_;-`UIWhv(C1|2t#(+tt>OJo&Jg z`?-r^t@a+j`KsIF*|QJNy63tD_5ad$o)!Q7$Dh-eDQz)CUpK5?zd`zx{Y^zhJMbfv z6}{lLBZdUEXLph4TS=5cx_co^RD$VFj@tg^Q(j)O@nY^jKK#Y_i~oLiOxb5rJok*F zWBvM``0PJ^P5Cj|$yHS4PK2@X6%PFpjeuSWdX2^`TEIi!mOpaPbE*Hqr%1o#)16NT z!H|tUi6k0g6Ny(vXGk%EFEo3h@7$TsIFyaDR%bp646(G!L1s#4Zz$1m2Cnpy@1_LT zO9LM`z*k7{3`{OR-GsjRQ}fp=WbP^sX15dVb)%Ll}2)2M+4c zEJ^#33A4j^vo4Y^r~R*B4LCC6265OSYyLVYcWaM7fsy`{`c_WdL4V`rm5* z1GfJgfbHceu=IOxKg%z!FVI-kqE#Mx#ld3jPPnhg~luD$>|2c-uQjjZgLr-3h-;AwAza@X`UVr^V`?j4+{o5LR znmx-|@iTjq?q&p6BIQ!qi@yfc7^=5V^W7XWz9#B!Z_X+cTYZ2lVfL}JVh^qAz5Lp{ zl(sRhyy2d>>%IkX=BbCsNIldQ6_uRkG>F{^Zti9sIV-D1+QC5%3XilezoHZIEFQXz1>Np?zrYP@^PG=*$3Z{VM zspa&YXyMBmBhml9)P2)!Ua4{c5AGSLfAd^O*|suHTs(7$_uYA#`G;O|J42ViYbRo ziAU!=7Q;KcWBFS3Q#~BUoN`U086n{YeU)~0SPIfFkU+bxj#qpIgW$|nO%yDcYn&e) z>PuFySREgE_b20TzW8S`X8g#QefD!=uD%eu>cZ=^EmhTP@E1g;pFHNEsM6M5$P+)X z`0|!?lQZL?zfux?E`1u^4*e{5`ntwoN-&&@v1H!kI>fS9{UYyxg%>z_YpsNK7&;&n z4vPdtg}!k*37VUv7kb3kKHqXBFLd5?)xJ?QH%Uy3|AePohQloX!LtaYVb zM%_-moaF__i19;xF2H&n3SM9KvVE8b&&t9RCdcp8m6V6Nb3}%(yYyz)5eMuZb;6;U zCV{wAt{AwWzVk-{<=B;+6z*I)x*YH=eW z^E?sEh6Z4Tq%@aAp$yFVjK&1|@;1{y?7+Qa)Tp8H(_h>c%T}z5g^w?bZ~fp`aq{u| z$G+1h6a#V}X7aXc_1u969~k%CeQ&H>zB0PIdt&{%Rk3vWV!fps6`g8y`^vDcGt^{o zU#r#XJ+X528m<1@5Nq|@u%Sl>tjQ3LQ9w2wCitwV!&-pRfPIBARCjc?33t1;V(5r& zt)d?`q|1AruUh$d^sHGNZ5vj`i0-zSphHnPOpZ<@_mY(?z^%eNEPuNU>&R&Fl9h4w zjrYWS?HAwK)}g(M2gi}e%!;EAnJJ@Dk9qOxayU^I+ujkc(6L{wk%CuC2QfU!Jg>W( zSISCdw!uW~*!lqyW#)$Lz@6}Plv-^_hglN^({K$xx%$h$kpyt9WZ~$8BEB!l#4`$! z6je*S1R!4`n-_{N9NkFH^zF{*o5EL@>&gVdf=+l5em zBPPxdPTGHV{MkaXHf(^VTafcMLxxpb)E(7y!&3Wa1u;h565~6zP|EOkZ~u7w#i#x_ z#%SxT*Sz~|{|wN8?kid0YSZKrZc3H6HjN5gQ}bRz{Ua-A<9^+xH^v2Dx+Lzs;{o@* zJovJR@T9)05Gc;H7AM3Bk(-T$Myo+l<@=u9QD3N*)TU0$SpFX@R`^ zzf?)xrB3pBEl9y2`cxc*B`Kq`)TKgh|MI8XME`&$Kj|>iqTiB#ll~Q@8F06j{Qe-_QLmLfiswNuVWxXG{Vd zI=XJdx*Y!%s@T9@_ulPu=xC#0IiOXLF=!co=7_e8|H~Lw!%aXLkphd43`~t2{%!M5 zQpT}g0n@xC4bLTv|ib-zKbTE{05K zay0?j+ZXo!y#SV|e(j+mXi&}w=uh8kOuXi0$HlcbJrGxEbvo|HKf5g^j2jV0Yd_z8 zr;j%e#8>)E`e)9V9!r)ij(PJIcx#xBj&AL?vOc<4jlOPSY|wt>!#ca7vrC3?tt5`2 zT`_FLgv27c@W)|kK0H+TI`qkVu9##lx-r(QS{@tLua53c;pvK4w^}O*wP16cRwH9L zX&bEVUCIR3tH-0=Mg#a{RUb28R-$vb-?HVa;#apl7!N(Nm^rowFjFS)5y#7rK5mcU z(IaDi8(m;V)e>;KMDe)J*rrznYw zzI&B__SwhA4L`p%)~sF~U;X%ZV6i03{lZaM9a`1Q~33=SOb)&a$9 zwbh3WYHkSG92k+X}99sq~vHzmJ(OASsr!D2!NHt`hLCi<3tN#&4g!xj29<2rrG zaOxYLAA5}3!)Vv7UK<~I@2BIA>*vUj-f0TTs`5Zff6AZr=u*1=K@1;uN;FrB_-*vT zM~1{xa*_|P()_Ym4+~bPb?R)7L!URxUqcxZUI0@%Md1sp#a#Yv+VyMRL+;_KsieRB}*AGGBq5S^K=#0&F z>90&IudM$9?3;B;G6aofNX87==Rt-mn{+71wdh;_TJkTdVnGyj8DKXzk)p4)|Fhy- z;Teb1_q6oC)&6%t|2M$e%GR*+k~h7;bJ1^q>Icg1Irqh# z_dFJB*Rov!&~0)2;WOjNLuYz#^^~phD6jL25AH?fQn zr*kLdrG;hEP7ac}ft-9v#JKu$Dxm;E+pb2{FldzIbf<~uN}DVt&UoAc3M>hmss9H0 ze#EkF`bF&^`n}SZ#b3G14~+J)V`7X}7Vl2w?^BQ_E!mCgzn1?{8Ft4{85z-wQ?5t8n4{$35xwWS9J@A`jGi^7s+7#U-9Rk`Qw-{NiT_nxBP4Qo9MeJuwwWke`iw;TZv3P@;^3q9P43ESY;?W7$e}Ui|v!d%pM0Pk!IeW}drsocW6j zF{t;(+dlkiJ^Oj)x7@BMfnWUSnkN+NgfpM>gt%73z>xrljG*vu$J=ZN?2} z)BJ`ke9{PiJAJQGf9bJt?alYa^|wAKs=YBs2CI7?UZ8DX#>Z^!6V<7eoM1Fo(Ht>) zq(7B^?2*T0P}d=#+TUe^wsB#QFqi}Uw4A&{EATw&RQWnb=yP?->9WEWn2LpomP~0d zjB6Vf%LIcn`@h z|4W0prKEh$1Q)WHWSoh?fSf4kqIk&LXk)T+4Z;v3^-Z#zTH zWy|${^7K7pzhn1{+kX0MAN)8%hbu2zv(mU|irEP1FHy2aDBBxtO^}|1Ca_@Chm^j7 zc1XK)n*=mDG)%AI>2Hk0seD1RST8UC>7Ad5zxwohWAyk@F>Tfq4cbnRkALuUu|URl z4pqjvy%+lKM}^NQ=_3Wg3Rwu}t(l3WCn%?LO-JuTtYX-1i@Olss4oD93>^}uo^!nV z_+hcnAv5BhTkk79b;9Q)+&LlKN1w8R&IF*u4~IN~C#CXJQY~lVNQVbNlDEoVh7=FK z!c)snjN`Z}zE}N!o1PON_}6#DvyMB!sVkPQjK6sE$Kufk7sz{hfU}M zm7L|4AMmj``o<>u$O252fa`?v$&lWuFR-X@o>voQjf+V$^)krY(75v4$AO!j$t;A% z^T$JHmk-oDe{Q^bPAt=wWjtS=eew}8cF$3ISzQhQHy@Iu@#LCxylneY%VK_ap^MAc zEdNH?oT9?J<|GqIKy`#5QWgR?vY&}P3z4kO4%fJ2~7w||a z{T+>OkY0xW%7>Ev!JofIW4yj^$F`nYE9XFy0E=Q4>HtezdBVkkN9-5lyl`fqaoget z34H%c7ssMURcC6i8;kvk-t)EZd0BLAw?jw!WY02A#+GPI>I^n0Pa$mPVftGo4YE0C3KUYc@Rr-e@c zbz;Um!!1S+TiO$oYdgXCuI;1|Xh8MB*L<7M@9yr16SVyaE7Gs{)jjcu z4xwAOt|#vJ&0}%vuOEpc4w)MJD{bP0k={oa%-vmGF=g*5u}B8bl`B@rs4YXY3h3+r#TkaHoaYKFTL@@n86C)=#^yMzK3Aq9AB+ff z8y3B$({?Uv;z1oydB@$4#=5l|Y(S^LV@HpOBcC-r4%~OL57e_vjTr7ROdw|=V1>Ea z(uy;`nS&VidlKwZIx7QVN^kCLz_>{lE?8y3u z$ALt@XVHpS{sX<)mjSA6_~@AUj#Eqhi_sKY6{zI@^!0zBmEXF`1@{cJ|AAiqgEa`< z=iuq_;BV%}4ZplK&U)Rcd7`=)-;(-gCD3zUa!lNQ`JL*7HpVc0VY71m8uv%3|HvDR za+1HzV@3XH#LYIH%4i_xO+%To(DZdl^Rxm+YLx|{es1{g7wKg-%J{qB(IxT0SAQfv z@QHWD^aCcvj02~7KlP8j|9|5CyB<_OlrJ(9Iar(%;&f8Uqfuu&pi7f!HOruDQsvrA zpKg!x=_i>01*?P9-mbd%`Z)0{t(@*`k3D4Iw|q&1lFF8ta}0bh<|(Er(^DYk42kTg_ry=rA+W;6s~6zHj8k@`_Ve6A`;rQ{A8^3oxks5I4(rl za4!$FHH5v&0k3A#O>ap9Ic)^(j1fYrS%XZxUd`(M0zyBpNs_p=N8 z@x_>lF@?t;;svhq<-f)ZO6wbY$uAz^*DxMGFp{V-26r0ya17hZ2qeS0ZaV7N9q12! z_c4(h-1e3KpYPP1R#T7Nq5P@vd3`49|D&gD-I$QE&-cIbQ>KO1=h_AiKIXtUdiG(~ z%){?$jlGnIuuf21{>;0tUjIt`%U0H!1x zTyTbQI?XK|_eP#4p+8Z^lXG5hc)aBF!();T$HO4bYU^8dXxsTezA?Uf{8DAz$7#|}>j*4z=4bUM2JFD2)2ByP%r+3Pb(V>Ov?Skdk<`tnGor=?sm4w8# zbr8>XFFGJpMx1u-@xmK>_CX&k0|JHxwwUP>&LKm(W1Y5g!Qg-Cm2=_;m);z=-ubW( z6J^_&Q6q=O3)K0&{H$a3a$sVxoh*vMsy^h45#4*z3O8jVb}&4smN1}WjItp^cXwP4 zOP+)og1A1!PkMCCI^&Q-DlcV?sYrnO=ffG|$mR;;W*m6Z>-zwx|5_F^=1Wm9@%v2Z zU!}kFC$~lKn$(9L>PJZcev4*c~ z#LH&si-u73qwlgnztH)e^h=o&12Pa_6remO7+9Ks;Jms%=UQ2Az?9frerQorUO18! zSLs`vj%+GF^c9z|c|{(k>D-iC@%ll(!or@xL}!imLqF<-L*t*$`(R8dhVzUE#1Qg;gt5V(9EVNH%=t zNxee;!mKFjqv~v7PBAUll0bh6un^+k-v1fDeCnUl3biEAl0ZuWEeULm1kOD76s>GM zr;I;xbWorFS6}?A_|#v2$>Z9s!TnV8@cd^uQO9+R3+njO@wyCVjHEx0e}K&lW&EXa z1Yu&}xdHzQVu)dpLT{fM60-^sp|1wKPnei2`LUuWO zY0+=VKlLLYSf!t0F1*cLlm2Z5&UW7JqS!PD^Mzmh>E;Je#t|y6^3GEyn~Y((R9uE^ z$^sk@!z84u(@I2rWmuG9*DWw~cQ+^{-8poZDBYn5(jW~(cM6C!2m;dGFr*;e-QC?Y z%pBhLJKs6i{`vfU*1c=(wN^f+;S zgDzafp0_t%`x%^80wf=1<}sL*;-W0Y96avI=A>qwJMS6S^C!;z{GM*j!r2tb_4ZpU z*d-z;PbUHeKA62pRSKjm(?y6oqe`=VXtc_8x(&(gfzBcd% z10FWjw__NonRxW!ubuggC&iQkmJbI_=6Z;NB`TK3&q>ujjBkv`HORLUn2W zY)%8w&d8%O&VS44_puhZZ}|+p!{579*@(5jE52sO%q8}m6A9LK4RhTcGl|%%>pa=; z@S=ag;h6vXYXUxdeKehp$CS7+_|8zQUFONF0gA@{l49=W?|;A#OnAL|jGK6w(eF$f zjC$WU=4AGz^GkGK11E=i^hyz2{GigdzjI-YED?C?jh)Qf>9^Kquu>Q>oEEL8x}r{v zOVMe}eN;3z2X@M0j@7i|FFxE`mM7Y-;&33)rhdUSKN0zoeM>{t`TaRgKacvL3-Vix zxshr8xj=uAcX@bc2K10-&|&e%oDatJe4AfvekAmGT&R^N57*bX*yYD~w!*oG+9p2o zM{4Fnm(tlZ)NPVeL)CeHORc{!`WSG^2>5I&I5TpF)ieb%3! z3OVO2L%BPW+H<+K^K5bM1V!d64atBa7la^B9%b&_M8Dwiq)9rvmL40$n(-CZgp<(@ zHWZ2m6E&o)6a4 zb22#WmAk!Fg3Gx(|COt4JT*HnI&sWW?a&d}yhB*)y2|U_{+)o6S|R=9<518qRvhG` zmzH+rj6}$W{+Es`r#Dp6>z;g&kZZ8hY%*`YI9XpA+N{8YXrb+ zj(U${RNE!}@U)z;^Pj0JQzUk@q#|x~a$(zEB00bPPwdk^2lb1o>C0R*8mThz$k2a( zIrVPxg~dK*%yF8CeHZ$N40x_fE4P~JP2+Xm+NpiK(ycY&*wU|<^~7EW)2l`FbeNXU zB~I#b@juXBIGQdp(d-D}R|u6%<9|OTYGbQJk4(s~`e@r>5!%97kf`n$^gvUEpxw=S zxpIJre#<9yqO7bYwx=o~Pwc1k`CCHCTTm#w{&6%9DJ=8ut)&MEe5vOjw~&tNKl3*x zvItnZ11rdR8QJEw1G+7?5wP9~6Vgr&+QfJ&q5hx3;|Vf+?B|+$UZ!`tsmGfcX>jS^ z6J#9D{u>tqO7K(u>GgQmy~IEgZV@j}-D%EgP?xvpT|CRcf)v!zk*x4cJpwoWiQ|V) zh|H7S=LY}7B4{ho1ifrDWlJfGi=R7EV6Y8jBv^63h*1Wen0#hW)%#fRPZENEde>>| zV-_$Ga*<6%2koaj{+h?tDImfF+v>pkf-;l7<6Aj&F)cHeRha0ye*1#2;*T9}LZ0GS ztmQ!$aGhc9vzcseHk1+pk`v**OGcU51tfIfED+nq48`V+bb zZ-#YAr*>+;@6ugfJ{j7 z$#cVIBAh#zd(f{#yRg#tN^&v7)DU^-O_X^>EXC6z+ZiL9j=Dcc5{rLJnCND;W-p_<0FC;8S ztx_W6GnfYBq&JUhUns;)yq?Cc@<4YAblKzCo>}5iL#{i6=zGyOV0d2V1;T83={2zW z;o*Dwx(YWw;dkkv$=_Zm@9i){SPf+KT^Ig>=F)V#>oD6(gMv_gtE8_dlhR8E5v%%M zoHfEP9>n<{AnR)Q(<`HXuPWo3S?&kp*`i+OCI(njKQS%^1nlHmc2X4aFuwq7@10Ru zAqx8+hTL@2MQ|Cn$Flo@M-gl+ z{Ajv+gSUINz9SiR>Hs4_W@hH}C*@}yS02^I<@eSfyjNni5c{Y10NU14c>7ZC+J9g2 zw;ltx_QesMtxB{H$ffz^koF3dGsI!y-G^55ZhyrtaIs3`u(_su?-I*Q1 zfga@P`|UCbulmfc9p}ih{xf$ihO=gUhI@L?zb+&?m_ySW4!uQ22VHHR6x}a>F?$4u zoEtKS3CpWk`v$3EDoE*?Zi0XE$z*S$=UabTs!MxJvMb~?>X`oF`c3?;7w4Eqhj5z~ zzzNlHEQG}8o6FnA^70zQfOeye^_<$@*gzvy-&u0%x5`O@9&znfFLvlTYaX9#G*iRr zxYLZ|G)V>ucXF6zFnGe^HSwyX--Xy_->%8wi4+H4_^nP`0$}tf3DEcjprPZ~3HZ&E z@VL2?+POa_S#|#~>V0#YT*UVm%@3d^>n6*lE@(}?2^_BsPK$PK-=}yNS?`m%=Cc#( zIi#{vlk?Gg5h-o2d_wRM_ONmI60yRe)bY7`4fwwLMmIfe<@;Q@$(giXUKw!}8U&#~ zhjJ!P9PL#)i(8z5_-mtA_gy)LdLjZxqTcOLq4okfb8F{Z7PnSYtR}1=U<<8e#mNu1 zuI-r;vd=xogDSAOybbLHa)u8Z{RryB-qe(`b% znCyryj>0+`U!Jb^g%a`A=gtoBZ>T&+_bA6lUGlgY|B+9}SIqZ#4`Q*n+Xd`SlNf_| z)1uFxdj%~;^*PrSMRv+rmZ$P0L_#y6%i{N0YOpV_^zwvz-x77q!)ieSY_;mtcz{}` zSpjXvJAA+|bgm?AM-SJJSew2tzgCNi#l+qZD$(i}xlsdDr=gd~pw6lPqy!Io=NiD0UzbT2wMNhjGoIO!!HRQz^;@ZV`2 zU!rW8SzJkyKvGFC%el||XRx@EV-3o~qT|B)*MpbABOiRWOo7+WuTjHGDRNr$a@Ay1 zVCsIPL7vdZ$cH;jK9c8m_y+Q6=i*EaD4`bHFBCDc++umj!a+QZL*&{&jT zy|eB)Lu-B$bs~g@Lux>szdQSj6XjhqJZQojm+2~9Dg`DNyX1eSHRdFV>tzB0kM$`j z&6(XS!~ZO1{=x1l=cI%dZ{ZAcF|)0kIq9)jF<58seOaRcM>%f^PbYhn{Ysy$hFB0WrBrZqK5!ZHIjGRn(iy?AJu@Uc^eUd znkD2O-6>|*HkMV7?3dBJNLeAv9Tu7;eDv$nR|npvv&+QfZ69RH%x0nWVUJz-a?fCtmOF=a_gc36)?uHYJNEq?;;R8| zZiA_9T}mB>y_|x~+cZ%p%>x74bMEI-gj!zmJYc*+FO5e{{^xGxT$~GX9djCsg%aZ| z9$8n<{Jp3_c}RSV%5p0f1Q7ZrE!2AodmclHd_RVScLyp_Nb%$nH{yh9WbYc)z|U0T z$bJKPu2XE@T_3+hW{ZsfrKv4>RYAR|gE;vj)0vp<7=vxB6vmT{a^Dds+8$h7Gt&O0 zi|z+N?2v^^4Y-*U=O)I1*wl2H zHNHj28*_^nrJZLL)p<6$f_rA@t63mFy1<9cu@Xi9tUkJmB(Po(Aciox^oB{sjae(# z9V(eSn5Tez@J&}9eVFO3&*eee74w~nfm9LaAV7wcG>vT0a&;XgG>3NhmwL8n(~za6 z*bo+!HL?kh$#M6lu#kI)WY%l_XVulwPyWA#IP1`D+J$rJ2VJLaY*>d!_@Yt#_LOmT z;-`ZtB_~W3Kn5yht;^Q@#zv^;$d5rq0}HKpBonc+)vq>w7`T5oE2REUP$ilgqWKqLb zoC#AByq3bLnW$Ot5j3p$v-Hq?7&t?}uHBn&=iP!^m-B@C@w|4GlrA3oUL0B~m*F*% zsFr?X$#e-r#bKDuI5c&EdDppN#om5wa(Z36cj_di%2r`dk#bj3-~4H5%qT?g@s!pI zqY4dDT`csr@o408m|tu)l;S^I<4t~b08zyw)usW6Zp+pHffID(gqu_JIDXjl8xL?y*R^WqCN?nR%)%+!al-B6QCybh(_bd?sW6^F>9GBAh-z# z7mJOOGZ2$B(K!D}FRpXD$&;jzKrlFy;(Mo>6z0I_Aac`C`|OpO%-8tcy6B^bL)8iR z&yz5xffH5@<9LlypvpzAUVY-lYu(?YKDQLH3@@$%&&1x13Z{O9&%aFk4E3yEsXqDa zUNROe_v9*m_~<%cNcYefiW*7?bbwUbMLJfDOU^n$$2Ig4B0cUFtL*QuQODkRzv(tq zg3F50W){5g3je5a#@D*Hi?cc7k7dlGC&tDX<7N2~N-KuGUq4hWg+-HV9?*89mADjk zuwLg5dl8`Gb0c$j(XlVF`gDH?@T?cF1`V0{U+Y$wn1!Mx{(c35$6p3b)bBhyGVdE7 zn#EW_*oU1QPdg<wP_{J&|3GfzlbZfAr~XFyoc*5n%vYdM?agdTXY);Pmpi$n)8b40RO!2#er--&z z|D||oXm^*9%5sUh@sVNJK|167QK_4QV6BuXBuhpMAnV78$Egh*2tX!dvG2LTRWB-% z{Ug=4iOmvd;eoT-8OZv$I->V$iM>y`WtPg_!wGe@zaxawpZ)^7eRp-_&gHC_O_>_zt-&6b9~^rHzx!d&{+_tB)jl2!?`}7sZz|?tATGAuHF!0&n}9TfdP$x$SxW1;SO9SG{P6m|qZ?hYs-6&)@VXw^@BHqohK zbs2wqPY&1EZ1J^UM+z@LDwz-H@s7C^MV|Eu7|5Gx=6a~;YPw8XEd#9JAzCjNy#U+fL959W(XuggqLoh3yTZ)^a%WQV=T>3-jVt4TB=8baj zPKm$2CauQx4NxN5BD%wleY*Y5*!`mE#FvT5XRb5d+*gGCUkE7z&}iG6U!@yihly?< z4<5kWmcjkpU7bhN$0md_5LHtNyc!(u>q0N+6Epw=Db_9pKgKgQFM2PPT#j~fM;3K? zBaFp$$v=eN|39hf)3W&&H#+ZaB_(t3+fR+ULd%P=#E|&4fOO7>sVO{S0mO=CRHuQg z;Y_O6`}K{1CoQ+)>Sjt|Jfy*bP52@{YUX@M1S+%d8-b*wZuJBybg^*0w~Qg@ZfO7H zuqhDZ4+*3=ESV=2-*K$#K;Kt0iU1zBy6a-xMC4Q(!J_612TFQ}k8Fw*=40G{IUGls zB+x#Kp&kC*A5=d2$-1p71#L0+;XRzT8y7Hl*QY2ml+QL$%=wkw&@i2Cmu6XWaAL0= zF$(B)xv+c|PMTo3_?Y4R5Td>xX{MKeyNMBz`9=fz+9pvwI+~-8DV0r5+gJv^eZt4r zHc$=sy)+l}sjBp~WK6SvBiUvEv3?lB=;&;M-<5)JJADX~DOwY?d0g%3AYr|cCgPZTC1;mL#V$^pLA)&Tsg0q#ogVObpCDB+CtyuKO)1)gO<%xA5Fo&!$KQXsb*t}g%;-T#LM832Tie}4RB+%D6v=?rA#GVBre9$S+yvM1!z8pWHdktRU`G8p4U%d=|r@9t227z-jzi*pkXy+6v71C>3nCT zgTpwbQ7?}C(A-P*`QN&rxU==&AXA#nBO`pp_=rV@)360PqsR0+b2m8hX<8TMGiL+W zhSU^EBcSnhdI01Yy{{`=hi4VSSh6(=(H^~K-f?IHIillksy6k-9S#q74_@;e1D+a}y!6Ao_h_1sHNQF8 z6{c+>xMmW+(PjZDyf`sZykP>7@`VEbT8obV+A?HSLJd+Da)S3}OOHAtZl+)Z26Nq< zE_$15Yjo#IcWOJa)@RwJjdoD}qILSBGoB-$ITeGP(Tu>FAr{MVXyTyfJaLCH)e6}` z+C!yWx09$ry66XKU8X(emqs$ zhfR5Y;X(#lX2dDnM`zj*<8R>$8wAY`RX80z=Rq#@UP%c4`vtMcLek2Cpt0ZF_ZOk5 zpN{1;{H-&{p@fe3ykiS7i$B1u>SZUhCN1~*ccK;57$@{KKM)F~RfAD^gtxOb+zTh+ z6~N@MT0;T+{ZVRtA!Z9sBlNi44+JvQNfV{}7sw>C30Vh_d@{_H>`4bC90Ed40s=6; zdv@gz_-BHL$XqK@C;Anm*yIsDclWS|(|c(&kqH-6;%$JFTmB3Km#xUiPc0?kz{kGx zcU4*`UPs_7|IG~KMM?9Ag<|=&Y^d%{r2)L3?#uyjyWy^ofa-h5nsf6m;+0$~>a$>(Z~i`x5gF`vcl*&i0+QNQa(Nh2y;Anzrqll&j=< zNT9<;%eFt2*RGk~MuxFq!zNRX#-c0=9?fNUx1lyY^lK2n{GTFhn|+D=4XFAL=0}$8 z+LYe_BSAEo`EZU6mF#DHR~vRr*1)iO3~1J6t@d{Fg?6Z9_uwK*y8kllvVYHW^(fM) zgqCLZg4?jAm$vK0t{t6Ys=6KeISXhTd^ji^(hmr6Lt-D7vHh-H;VPYbOT!0<+P!YU z?0}j1qz2PoJ@S5KNuB|7C_cU02}^-Se=s$P@dy_Dl^};lYteqek4&G0y@TG0o+d&L zLD%}^j(zPKX{|x+30EP(w;zT??>Cv?jB-5NZ$Y?OxVF2WO+V#LvSMf z%Gm;0@qU+`Mi6j;b0)5Y_{0)e`*}fFzp{N{arh8#(6dK(sLHPPzc`_$BuAqnBYvQpJI1T;Ig-Zh(#^HUA^>=cW zf4$l&*>FtaNu!Tj(h_1Cii9BhzHi@eCs32?fkHBn6gT*QC9DGFC-;jr=gWndZ&JLZ z$1J#8U1232by3)o_6HEY(OTZX_$zz&yT$8w^O`ePE*yo-%k)dE|cV;k|mdl!>{(1T7pB>?A@gL;1dkVZZP~G|_(Wr`&m!w9ce3t-r7$C-s@;dsOi# zje9Dh)0y0^(#i-Z2<}iZk5-K|<%8xKfDT6|c@tSNnJ*`hO4liW(dA>HAO1RfP_Ah_ z#bLrMtp3#(OK%QnvzYso7nK+z0hv@2A}hy+-GjZ3u})V%7(L{ipG~H2$1fI}UJ>pt zfPfvI;!gu!r+1NWt+2`%PYiTFx$AR%Sb5j|QeCok7`N;HmQz4I8T$eJnPa${L0y1e z(WPUDdIbMY`g~|SGQLig?}rbaf*GuV#(@FQUNHS#$GFk$jULa26{z*tlge+1Rs1|I z(V$vJGECSFY$@ahE-+YIwU{X$uS0VV?0wrMFt9&vVlhI-{ek95`$LMz_3w8}!31QA z9QD>OY4QH|AcKS=5_L;xG#;Y7f?GXU0f<*ZO>;OWn5MVUm~uxu*_R-Chkqho6q#m` z=-NpkZ)PENv-b2@bINqTS*f*1*|i-P^J5z@drPQ>du_|DnIrS|NcbN7Jyd6>Ey#qL z8((3waeD5a*qe8cCk~^Z+mh9~_*N?*@)?T)rS0=jUy@atzsM*rz}n~l@yy}$JyXqf zGl8$dTbM#5UI-iFW?*DIhp#pH*E!gS2hAbR8b}qu*{PQlM^6jU;%1?Xqa%?~CJx)TOQ7Mrdh-RzB z`F_HZ1Ug;4nGDrjScI!pbF{d$uu zRcr>;3``kf9)5B)^?sb=`iZRXz~wod<%Of+V-t;?1-S6xT9l9S`}*c5rPN-bUx@MK zRPV5wpYHRg-uzA89JnXI%yU2d$bN?~u_t>yH_IsbA0j-TdiT zmEB?LIE_)!*Q2OBh49-w@z4iguRmfCn3C=LA;V;20Xa|KGYfmBDQVE#ydVjTvy)0!-LtQ_H+bTjgxINjZN93F|*%uF|F z&w29~?mcOm$7H*GVc|MDVdF-tv|%=fZ|&?<5*>8e`;wJP@bmd{XML)g6)qU>`za=z zdJ30Yt-w1|zxykF2dFhsP1*=%dFkJiA0Mf|DVw3ID!>k_=ioXh1%2^;qhAL)0iqlCDH9PCeYU)a_to(ih`z0U0!x(Y3xQ zF?Blc);FkaQ>9II@Vr%QY}~0WS$Dk&yPYBnZ#q@@5k6Q9=DFod)v3N3+_zAIcwn_$ z-vQ|xD|jcN4t!T24VzA%n)Th(-tj6#sS2YOi|FO_zjUl&XJ}r?S@FUt_;vi8?#_!uZ3t0HQD&*i*I$4reSjBR1viqQB%noy<7**tEU-{RS zEkOP@?MQz1kdSScka0prng3M#Tw)49l!&G%y2p^A&b$}PBfV{7lF@@fkF2y&{OBIu zT=web<9Fv)#P)^l`%E;T!xO99td_Dvbc_joGlW~!zCb)Y7#F286OViWfBfC>4--X} z&~BQyBD}YhQo&c|*xpClqtbE`uEnlFB6!aL2^wwz!a8ZfUAmhl*Oy3475}oBa@A%J zi1Fhfi_iN?6uN@5+krmQf%gT3m>6VSLr41QO5FR&h^k5gN1%hRuWJUO>2=>He2BQ& znjhl$Vx%)@7+1>Gypdxqu7mC-GdeRC_e$|@dl6P%UVfSlm*@)&gy}Y68pnUMx)bi} zof}#D_ySYPWM)DUEm}-SE`a2PBPpsWls3#%7z3~DD5#UE&AXCe|QY$9_zz~2s+H8)DhJCuM_5_NQ} z`E;Q~Ew!~hKi(O{pb=ut*^+LBPNoJMAH6ef82#KSPL?9>geM2v-Tbx}cq$3`Hlrlh zetTqfRx_afV3u>~h<%9NJ(%NJN)t{EHe z9a)=Od1(k!j;WMOi(ni_7&C=!0Kq|z!qv0d+hdYog`mCN1P3Ow-HY<0PCSAE1f~}v z(P@M_7r?8Joi^!{es{E4MA|NOx+(|eSw$k zYJoVs-Q?T_xyfkIH2m{dkb~t3W;{;3=b4tXY;rS5*aQ3Cw=&23KKVpe#pge{G0Olz zjpB+A2>iNhx~l&eUnR)%x7LED_=c)3*!aw@sKaF z4~1_2G`YupSe16r%Hn;q?=q6H|HF(MdK%ubEeW7q1nj*!3ayVtkunepaA+Wc;GnmqnKBW)>XiWOKh?TE$J3voY-3;`C-A z8SPhL{|l|fHo*AWG@miR_WD||>p1gL%5amSVF_--4B%d)KOLN<`jd5yp=uH5AI;Pf zg>CSePx%PR$kl1z>Ei^oJ*Rg`$-0x=ZUEp48w2wsDE*hBld;>q=3MJ5SaqV-TR(!{XGIf5)1jyjQUjfCrR|)pSP+GTgb2^ z6@7#7Fd>f6!ZvI=>ffQAt@;1%pB9zBZq#bp4WHuSBSgirtZi2C4ohyj<);wpSGp69 zxC5m6eFqyKR7&>d_B{VCX!Z(;Yz9Y?E}O-DmqqOzvBY~d#(fctc+Z1eokz}oZaj-V zhdAw8GS}S+@{y;z`a~5UJf#=Fj3q0&GHvfb^bPMhF=awr=vR^Z|AOZ8WOuGhDcMWu zP~hDKcp)py+aDJa$>d+(`E*STIZ`kvfYnblyOkz_wsj#-1K`FB^MK^L9wAUA(zDC` z&K2UHcRwe=^?9}e_i#SmsJKydrSW7S&YOa|SFua<<}X$>*U4wzVIc}AehQDuZ()^p zF{!ue8gE_-Y2MR`Xwyk}i(7fTEYnS`pmv!GQ^khJ>tj=Ie=rv-m@Jz(VWnSWpk+$D;Ov04h@^+ZQ1 z%o^DoI)ARF^8m5s$ti&2P^rwkt+ZBoDOJrUc&Q^Jc2mN+ z;U!UWsLdh`MAS5~g{7DJR;orjN9HdAWSC`R- zmFrje(5}v>;g1mK3T=3EUS6VeS?ZFSR@Y~65K||`{Q^H;N6ioZwa9>F8Y%c2PD2zP z=7ur$3c&vE1KhGWdvEV%unl*Kcs3+^k1tn3%TqOf(2bKmX({=U<;59xKPa>y^sbw# zx!K$gOv!pd-{{^jRltO{*cF**hm|}1-|V3R$gFopK3g63AnfTT%&E;Jw(TPv?xp`- z(%o@_NX>Fhc}~rMt$R$WJgUUY63@p#Xjst5PinZr13F{CCdk^d`3*)Ezm9k=y!Rc< z)uizpDn-sFgb|3S!?ZsoEKGCcXhjj_#aNoqqWnT$vtdsu6Hy^f)x+Y$f~9QUUiv2^ zV3%ZQhCGG!i!$whWW?L%anO3UP5a0(`|m|5tK_9JTVO#Cd{>3qcx@S4`BK~7Ue|;V z_kjCw+!c>-(Dr&(zyS$#UnhW9F_I76YC=BS;+~L;i~5vtao@so@Y(~V{ml640`23O zwTlFq(KowRsh=HXcJai;xr(O2=ajd`lN_nX0mL$k&RbC|AU8~=$fLuW->{_*KHLL- z3H^)k$7Aa)gtvt(X88veLCn0_-t|Z&6f~B9&3Q~l`mJ;<;0nYC^FfIrRXueOmFg~A zqCu_3;_~x(+9T+s1w`|#0&`_;*6Ys*0r*RvSUp04A zxI5|6_i(jY(6phsa*1U24Pgq@aAh)HRsQZz)O(6r7`_q5w{C4{$my@1vNjOjwFn9# zqT+M9P;d$3!3c(V1z5WXeKJ{s7`0XcR>pEv5ejTZ;^6KDU?O*ki9L3AHC@#DS?P-2 z{}=?ICx|oa_H&x`dT*_?gozcbHj5NGRM1J)#H2kNa*-Nol3jK2ljK z@Bt{8I9xpnQ>u1+*iSEc{4phc4m*gdh4ttc6KV0AU`qv~rYzCW@(cDPM7xk?YsIC7 zBF3fI=v*UCVu*Gsr>ct>qS4odHRoI&a9mUL zCo0QuOAsa9afkHk8mKVe(K3bB++{?D3hF zm>g(^)~{YAihoH7k26>})NYoW84&MuQmeFYtviC2IzrC#NLdSYlk0&urbw+k`D*rV zq=1IkO}U<7VZy7gQ4*l6u5J3NALV^56T>}N6h^GRTR+UWN5ij5?zXqP{^Ls$>KhMu zK}0`}OD$~3AQotut+DxiFi*@<=Z%Q`(@>sq^G9nnYSpvko2w`vFNx0-L;GlWg^dyWJJODCOT2~ZO9z9=S+3F3#p5(@W9M8>kaS97#3Wb zeQA0hGbI@BIEGBis&YYG`QZ+d)!D>&6Ee~&V-(+GIKG1zGtRC+zFq?JM315s;Q!OK z%Iz$6TTEZwpT8x%K#ldkj*#6?3TTUDYx$g+Lhih({u!c@!w>pAv#yuL=ba7m)ISI8 z<_3r#fEySH=427^qp_xE??&3($(NGrD5Q%G6{EcOZx%e=iCK)^`rLEBZ#|a5+HFad zywZB!AUwn4QL zlVi)T&{AS?vdt}+k*X9KXath==aPuWpej`WU&PN)v-24AMJX;HJrUn%yeRT7{4#P< z`Ax#GkI`y)=@`@i0i>4Y#GL@AJi~X-2lf&o+`m#}jUy30fINhzeEQcv2z(*d1~T9+ zd1(K82CEBtTi%U4MN zM)vSph5;%P+oo6X3fM-{bGjA$0*gy@gi=qqyJyJ(*tNOPxVWstlZ`H`>Ta%Fc->9HVFqk30B+45VOp0cm z>);=oF}R8l7iGobmJE?1%aeC|_Edn^(h}F&F%;0Ly9?+W!1d#monxZ{Les+#@EuTJ zW5*(h{~NLXC6V4{CUT$%te;+M`ghb5^fw~mEt1N)3#VR)Fp+%?Cyt?Dm7#U${l);U z)`{TgG+tc>bk>NKV$jYca+0-Ln#09E3L(CqvGntC~sF^bCoX z&!Y1r|B8854sxv2=2n5G84_ikbpP@{y|>NBP%Z1=;ttP;mZ5F;%6)&|`};p6Uqn!Q zC|)7?&kIkL(5Njp z)(`R_ipW^2Rbqmd zCi)(}tdSGS7NT4^S`O{Mq1sS>yVjj3j6;E=yyZLmti`_#K#?d?*b&=g;Z4nw7zm~f zmJ;Qv@^Vvu);e>O|ru)Uh~5n%`Z8(t=4Bz zH@Lw}B-Q`&JDWJF8`wJxWo(H{m`|gLXF-0$5Z2&AQT{|>f^b(QHVD=I`mM)zRJo2$ zyDVHvv!?wN7gm!uqn20Gy+M;<1^+YDoueP~NCx<0d5qymY2L~Xjz7CxF( zxlE)X*MvyG`)d(cYPTrpB9E?4bcQTQzWyv=mVD(Q>isfH&ZE(sra!D(ji8cHE_;*> zxI%~c6Y2X~vofmbV1^O*g$>IYUb`U5O}X|jaAhV3@!BnBk~jZb8+^mTrW2p#>LAAb z_HKJ~=wb&PtAO?QCMm-4ZuEtFDEC@N+8&zjwOVfj;#I|B1;femuRpm==3aixeUZVA z=q6xsqto7)8ea~G%i(v6%V|16=h$hUh*BTo>^ArBk9AjD_C)uAo?M>g>kQ3SRhWqV z3Q!2*PF!E$TDstY^aMse-v>-hZu>|cYuV36IjnrU(Pjh;hMiscs*0hEuX90tA z7)+r?7ve=4?A9^a>Yilr!4%Fp06)~Cv9iXC{7_f$FSqT$2eJZRBRON8(>P1(4T}LS zKD&d4rxrKz{64vFc{>`W&87BQV?JzG7Gi7WGwI>Le|hIOTLne4K*;8Kg&cS z9$ATF`(MHSQ$@Kmom@>)BTb*xLL>*x7?U8?QM|IGcw(4{<}DNi zZ5J9KBCE()(m-=ik8T(c=>ed9aUUxp;3ZyIf1cK;g4iIKIOV6C1i8u|73*ib>~r_WKBlK!p3&Nb_1HCqLDecI+d^Jdq2L z&NKQr4A7 zlFt8Y9z6wWR?Os1`|A^vq#NE?4W7+2*H5KeXPXB#^Rj4o8@pU>?f@MC9`_=?O=5wI z7|Lu)1k=A?h%B_X?^!T)#{q?5?()|_t8_%63OOaJ*{;I)kJ_MoyeCt zCYzGhdLa-7u3e|oo0?k4>^w#z;rP9(M5**Z@T;m2+y&}>S7Hs4KX7VNTFBMY*V`gg z$s5nxON}p}uG6)MRk_+kk^fQ-zuTjW+H7!L0DU~j6(apczVNzsvTo6gdxPhsFu=%5`Mlq^n zo3j^=D04)U4n_@_O_stEBkM|9b`ozPnw8i_DcR&l$M-)JiEnPdpx%Kg%sNH+SKI;PpV! zmtQH48(OC*epF=GIL&QEz4kTBZ|>LD;chyBW93QUNbCqnAK&xh20f>o`J0Z*7#^}K z3-lxe*pUuPwD;|K9vgv<)Kn)ClSHW7PZc-JT{>6!MA~b7Z}`^|JInEopZ(o6IIsX1V(~I; z%U-wWbfWJN>HoPI`{T9o(-PEqjoXuI;rEN5TVg3@WYYzWZny{ydmB+~H<*KpW`CCB zL?w6pr>&WJ6A$#K7A#4Qn}&W(70#;3@cQaU;i5IMt_eCozvQv~Pdmtr;~-AyZ4I?) zC&87)g&h~TCRP3lTj8qXW#H2B@{{Y zGAvd7ntq<&V!BHjwjBH0{XTmM6!c4@uJv&w;=>z@m!U_?fFb_HykIbMdJy@M#f9J| zM7sV5cgk5iCYH?);VQlG`DPg14^ZHXpI&o4zbB1d3C`NueUUqbynmjrf+NoUzxp4X zDMRIyR1ON(g&yr(FV5(2jc+gYSXDo?E!Mu;J4~E+&i{d%oVdJ{yNNhBKt`%TMLs*# zPK|Trl(RqPNa^X$ESHzqP8TW3`P_nVD5f?d;wf$9?#aJ|dR;VI>wEi^<@`llhg;Gc zYAszMPA~q6l)*<{M09!nl|9)rIIgI2uM-!=f@_(yiBN#AEqJ77hI%Rx{f?ZP5Onb| z^m8e=2+q0k`e5_U{E)cBmQ>RdbxTUSFN;JdAShRvq1bg47w413r`3U!Fxt?w6MjrT z2MK2`Wy)C>{HSPa8s>WbC+c~$5Ew5xOLgXz4qIxwKX(W~y>q!k^p}HdB!XZf90O9Z zc&3n_BqU^g1qu38Qw8sg>yf0Ecw8;eh^mqwz#h7_G&|-myjV|iMvht4CB8J?AG4W5 z?$m8d`;Lc@E@mu9zE0!2d`e0|&@Uy@XI|6RH!f(FytGa3gZEe+e_;Eul=Ur-h>6$sc|1M^aGu zSE%t~INHfRvZ-D&8vlQYI;*fYfUaBPR$Pl~aV->wAf;GwcXudI916kRwG?-XySuv< zcXxM)9KPSqGuOGv>}2-rwbnZr7^}2k|D>VQ{sMiADuPE>!Bfh_C?x*g+DkH&pvzbr zQ59I$GYx%J^Kqi;nlqF0dJ!J8x%>3$9LtS2_n~ai4D4}y@}s_V@Hc5{lmzx0-@0hp zeHsNrWDzWz00@Ly4|d{|*XZa}JK6A`@xw4XQiQC{hS_P@hB8M8eZ z916ALUCt?8$c300o651!8Z2wR8=3JDhZ?xIqoBQuf7QR#F~5>vHjrC8j>Mwd0H1IW zzs7(8rr#s!FR)gLd(7y~>K>9&_K-eHdmM(5MM$B9!kukZ1vRp;HA`WzY(TIfhdbTw zU}`u`oSAR7JLP$^kOb@G*@xa&qsQ|-ZB7;2@uiAHBm^3izF#e`Kt{+}Y4_O&M0N6J zKNUJUobK~hhMG=e)I)-Dx(^n5X%N0-XmKl~)sCVXssespdtTwb?p+_sgs2R!TP6#D z%QxyEq_dFQGbOp|&TB#n`WUQJj3v^Su z>1u{sNvQZAcE%bBuw*P*$0ZCsuYxJ{F1j}T9~z+2=L`Wl$@khOQbjK;8^X-Qla`qrgHj&Y94@>N+_4x3oJG$y)AE=`bg>NvJbCDD(l@)wRh zIZIQHom}l61e$`GdK#sxPR|u(2O3Q`&f0#i$h}V_s_PNCiFRoVEQd4weqVG=bL!!d zpUk0{tGI}j!(0SzuhWGPKE>M6DClh0NoTgbld+z|Z-yhwY{MlLPbJf$3Er*GRMxq~ zQ?8r1nPV(9;IbG*f7k!>dfJkB+V!cw%Q;%BV+Z96TJyTI##7D|z#lBL!l+FQkwlY5 zrmj8Q$FL&PpwahS?)G(`bk`G3C~W58oJSSD3gb(C0|qqwzrGfY7{j)YI9cA>$Q7WLN%iESwkirGq4S`8M#{ba)Z6{w}vrk zn&5upaB9NBr;!p7G_cEAI?1{CR0@=BqG)YVL4S6CUc_yt0^F#y@$JVRi5{lU zRtDl?A?MXoVY|6gpz`u+SxWL0$UL=;@tF-3CQHjFK1O2;!E0BuyI>iruVI1ohpl}T ztWh;Np$L5+t_?%k>0IUHqAFl|(2qX;E1*tz4jYfZ?=D)~sw3L04NZ5MHO#04mtZ!{ zT{hZg{RQteO|&<=8AxnxKk@%dzJ$h{LNNt@P-X}@bZy+e`Pd7Pr7wZ@IUZwJx{L?4 zb-HRV9QQ@rbtWw|9)U#AUXrvgx?E&AJjX=Uh5<`F;KuKm6g-dS!lz=iL~2C$;mof?h10-Vmlw5EQ#2YIGYeZ-s!vb^A#af!w-l17vRW`OflSQ!P7>gR3>$cd2Wv} zB)C9uV{PUzS@MejmOInKjMV(m%Wo}%uPmqnjk+>!W>Px47Vpn>m6{s-B?aLGJ{+xw z)m8!zn6-#u{se42)Je;qqMc&*3gn`u}|*Kncn zKaYyFeFKQ~7bnE?_S(a-a&f()t8pFN>6(#4sUzJ$-_9&PQ>8y*?vv#l)>sz?LavWD z(!VY5v??3Qjr^t#P0R6CQ}?$hW6$rtZTDY=8*%R-k_KI(=NET2-MlqRU*3G~%k5CpXv`Ay^f=SeI`dSVS?uBc zb)3cIzV%Ob4#-3pLB42}dokaM+*KXaIXNiXv-{jvk?uaOSG|fhfg0+5ZfkWB>Uc>d z1CBrF$@V>e-!8_?N~DQyz$;e5^Zk#43P%T_j`|h*E$`<|^z838(n*WM$XB*sik8m| zU?q}Jp1b+2Qa35viwJuUJXqFfzubG&y&kfCq`w5A? zSN}EalF>QHIBwc=`0*;%+kd&Y^L2TCeygdde90WN0V#y|{-|YIrOc=xWwjrkbf3P!f zp|cp<%j9Y?+m!zWqJ3$6i89fH1my4QBSW<*$8c|Srd2C858Xw6suol<6fa{6d1PXI zT+wO*Xr0MXUOpnRFKWSRE4pZ6?zdRA71FZ;wf`zoOdOV#303*_&?_IfTtPwR3E+8S>7uS1+#~AMi@NBzWMEFIEGY0vph0@?n}}eO zcfg&&)_{N3r#CoX-zm6j;T7~34RjbX*k_kF`NcnRc)gq9kHgj#i-c&HdsfqR&4d&6 z2g`(U%NsS39d>MFvuFEQD4hHsF!v1f1O^O#V`^hSibRHV4G;lS#Lr18rF&NX&7@?# z=m`L?Mfj^IpL2(cmN63d`29E#t$k0TqJRIk^w+NwbZ=5-L%j)xVRgzR&uM+RLitx> zYegbY5qzX;m3*1Q?FiC>E+|)k{OHrwg;+`+SGKqDu$5?T9B#-&(HEH)o127Ksvro~ zmC(Qxg{W$*Yea=)p@y-KaSBw*46EkzuR8`KC{@8VvGCVra+ae5nYeWRtH92yzj~^> zS3y+(6wz8)RL3Q)!l+*}9XQ+UGz&J6)zdCt+E$4Pf@J0m%69v@AON$~}L zgecH$N{lRZ<4(kzr3MA7h2bcg>YHE|Bw{*BB>thy!W6$npuP*LKe?)6RhXHC` z0d(l+2AsuAmN_8|dq?D5+IoGQA&Z+oW5x@D@Z{^dB2%w>ahPss<7@`n0MYLenC|Jf zjO=V|^}zM}QW4j)JJrr|Ny{X1c(>sX*vm=5 z`%Yw1t#*Ru5|!7vVjLt0`sVMH5Go9wJzD#=y@lKv!{u+LwDN-g*XvpG%+%WX2)+K3 zyw~HmN)Wl5@$|XOOS7K~ZoUB%tfHnf8IKdPHZElY=ifXkIW5yGP^#nXQC88un)bax zt?8df#MUrs?Y}$mC+;AVx3;C1+WpBmZ)|m`Kz$tYtcavoDri2A8G5AlU^kG!;~n`1 z8WE?e%b@UcEQ`qz!lSIIsE_MI)r;f-rN*kIfU^k;&EOoKA zv&4iuz{8dDkAreo?F>o?YRg$QN#@XS0}9~RbX64B0!S<+Cq89l$%O^4%ZX~c!|B(G zI>Q)^^9T25c5o#juL0^gUuwTWC9{HVOAkc`q^h&tT2wQs`M5uS_`SsH;7H*`*7fh- z@zRb>U`tT_BD`KD834utC5ecw;ce4T{)Rx|7xoTy^hDi`x`#!x^&m*v`$;NteKI>s zU?cm_OVyWMjA6fvo9!Yf)pBaca(&kX=E=hJW%g_FnbAxuJY|D0*PV!u+a}pr5W%%{ zu3>Tt=0kR)+v8@U)b=%GDW@j6$3dmWzsfOe3J}+f`SJ06s7K-J5jlCN2iE}^I}q2- z4mb{N>K-u)7Png2a9ov}xRJ@~K%>U`+Momk@9}fsP+3TA3IFiSsBZ%3KPVqF!Z@)c7$PsU^6{Ic%yJ47V7zkHr~3cH?2jJVJhk)wVx9s*2dX2O|(ZThrEybUwfKE=04c z{+6LuTPPSN4`}#(`2N)2QTj`!^=G4l3J&;q6~kz(f1=>84Q+5zT{0{RiCAGD7frHHureEOZdVf75<(6qF!oD> zQ@db2k(E*ycPEi4B5#?VN4wA1KuvtGzD=5OJZc`X;ia9C?}}lFWTwgM?%<+-%0&ql zDQcI~2pqI(w7PmQXX~})@ym8EEJsICRBdDaUhSn>JDekK<_T54;7+c~cJ(?d7Jf%r z;EAD{UC=eGMySSf_@Uzvz>I}tV^qXv1=q)G3jO?Ib7M24;;WD8&>F8vFRMLUz5cVe z8q7;vm(T)IU#kfITKP;<`7raFz;cu2Twg2WB)+X9d!}O&(S)?2AIeW!d3OV(O*kuv zzdg<%z)G<`gT5<~dP=wJUuuP+P0rAm%i^>DX8VZBbfswrB!JuXp1~ge4pi}k@U#eO zU2Lrz`(`2~B-uPBn1N&^n74KHS}!GAA@lKQ)RWtU#u~#UEAMUZ`aP@0Aws&EBLmN% z58Mff3{j(#S^<=T6T0CP?TXoJG&rWO$yT}(*D=A%kVPwHr7-#7ED3lbzw@^p%csZQ zy+$R-uaeTYCPUdr+jOWIeDDG38cM68WEwvmxA(+9EJXhKh@KfjR+bs61g%Kx)Lq74 zBRi5je1?Q6|E##XZ~7F$1Ko|6fw7*Eh_X=Y&t5Sov#bQGTlvUFjT%?qgT~M*50l|5 z@&Sh9@XEG8ducC+NEK!&fR?hor9-dko7!1G)iT?W4f20JWn@R*q>cDE@z(b#rzv(r zsHcUk;oaNb_oHK%up2u=47$$oR&YdNb_6>A&T^$(=G*k)T4ltYK;yYbIfSgR=FT+_ ze2zPAPY5J)J^UJ8oR1~E`VG+yw}DxTKN(ju7+airJVf>#(%E@Dp1y>Ci@Fur&7dsj z?Z1x-7!ueX)kcb@M`omAa|B|_Y&o((WTI$akOjZ?c7*wl&CA(v(wy<1#J|TP@)Q#@ z)@82yZ%Urm^|IVj;nP6|Bt!|IbVQvN3wh!u*1UCq_}e)Q&})$RJT^`ZU!`Ahf|l0n%FfKF#= z28z6nv&dicK}Dxeh58aUW%L)*RByax1-EdKI$n6IMG;1Sf}R;(8L2A9agD`#n-@@* zP(ZR7B*|z2lntYq??8pm7*1a@0{H+9ERJc!Vv+wh5}zk2JyW&|%WCL00F863R$qeh zvK}UtRIaJTelDPt0ETmQy};T_C&avi>= zc|?q>aqJ)M_~`S4+aPRV7JMp%#(GQCh1V!u(s_pIoXDUP4d9s0vS8^)yO3M9KG2Tu zk;p?RfXtrsWbjG4x{2+`YvXj|PC1TgB6b}-`!m2#DyyfH+>(wzXe9JkcVXo~K4t{1_TtIw&`0xRYM5YUkiu`FHNq;xB7UvurPLS09Ye>G z`)eP^{sd8sncb>+yF05rbhME&CYIjOmn2K1G!O8`N@brW$T6p{nOZ-Uy5$jkSJjO+ zLZv1a3#j)3YfSKI-4LDp!iK_i5bOT?E7v!(CDz_nY|xkmYAp!zKWV79rZR*syZ04j zWEH)xxr+Es#l8I@vVxcRP482(V;11?akI9e_+v5XTnWEJ2o)8rXNsM^zlTQfJls@8 z7@5B$WSH**_}tpw3(jAyA22 zs=*iQ9g7?;9E=3xji>ZCKulr--!EV^$O1buQ6K`dg`ig0Ov@e?M1DHhUidh>JBA7> zI3P84whdykO9uW<5(^`(eB)yJGXkP!!pMV%i?@Hv!|Z}{-Wcbx8YmSr7vGUu4S(rKS2p$7c#hxj>6g^h4QcT zLg9b&?B0oXoi_f813^m5OI^+{M;F~cTD0}h=S;&Nb68ncKGY59YAEp%OrWlk{Ls4| zfoYc~{sBxe;p(k=Fwm&OWf|Sl=aha7`^;G^44Bu7<`zMED?7R)vLNO}8g39O3<-mO zQJW%OCqW3PY4j{l2ia_WrDq|%HW@$URBX+yJ7}=-z)trx?>7>j>v+w5^{A-86DKV7-zt9e^4w_*#Tt&Zylh4$93;~Rw4c$f4Vj|g#ML@%- z_Xo52GuF~nC_@R3W15^6BApCAFN|dSA!G5F9&1N{_rz&)pv=FHdHA4CBSm)4waQDH zO!nqlcFL9+XIo8>uk#PEe+8Bok8+m1=|lHw!I)>*FK4fg=5Kc6-Gv@P<v#rZ$>eFd=#IF2-T4Gjx10kmcKmBHwViM5mU>dG z2_@#{;i?w(3{LsC_m^wA@G)(5Yq1L|=z3xNpCEbr{kWDc?K_xvhp2gX-F`U7>zMuw zcqY`;Tn)JwZr>Yfzc}gcGR7Dut&KCObt^67QWQzs=%B_v`b|z7&dq_lvV@6tanL3ZlByCgWQi%o%bT z${FIu5fI)fWc0)d1f@tx8|=rCIa>-+aS;X$7Zj|%)cXxkJ7;_869He~N9C@`iqf}H zKkg%kiDu1NNPY4w?X}qIBI$(TeJU*oU8&kbvil^k6U8}Zw~o*;q{SF(6*sRF)43p? z=u?;!rx{UC7VAKQ@;$9b1-kD$ZJKjGTv3C7D;Zkf?Nx^HadnBLwk(2WN<45tEDdLj z^kiqE(DO4^fOA$v-%m7TgPM2Qe{zRP^F3I&R9sd$pz<`4ta4Cv3PvJ zbZdo)iD2~|^syJq>-+qul7MwLuW?G-ITh76Ug2sDU>Gh=sx#pJqvjA_b9{~w5H}j6 z1HF^Jbl9+M`7DS+3rDT!g{nkM;6~0&-J(oAf^#KT5Y3H;K879Ay^xg8KF0pt9( zL`*Q>q)vVBe}OM_?z6_`@Fg6nB`=)>?cg zUX}5f@cOnLAh)kHI+F99w*j1B^{@Lm$k4<&pzBl3Q(nRO&RTW@eC&>U4AZ$QiI}9> zooRja6I8Jz$f2QcQ{x(fmBC$5#$Uf>mES69oy?yP+4R7ad9o)VQCN_l z?F;2D_UAcMh7sXlPfdK!@8w!Ch&P$jUv98S+#jfCy_Mh1?(;tnJl|{#yM_*pys8P3 zdl;G6o7s&-)v5l1TS@c{P9ST4z)IB+gNsBv_6E#nPe!e~pY3Vo?5#NE3hUPs58kc6 zb)US~p+%f^fX9=)i~TDy$E;A-0pxtnbQnJYLxT%-oe#t8hLRXTXc*s#M}HW2FIBBE z-+D-{0qEppug&lhmH8Rv3*@N&!j)``g~L;m(dvo<8NQJuFpLiIV;B`ORv!!amh3sp zF%rVuXxy2H3R|A-H|V1!Q^$e4Ou+{=LjuDIFRlODp5Y0^3Sm_J34ufKM(@*g&fc=Y z{VFo6$mzJ~rZWvY%C|!t-e29+-g>#%Q%(@s(1|b%{lr5My6~~glIYE!8ZHHC0Sok4 zR~Vulvtp%na0U29%Y!ObWd4Kvxjf({)3EgrlAF(=oBX?_kZo$G60uO6hv$QGao39r zIKEqSKu$?;H)MUEM47G-E9P@-@Kt>*IwDZ&ETVCe509XVmF-9BB0Ve9Y@{!FNA3 za977G4#xUb3(@kL}hEBQ&br$-T@bSWP6Dd0g