From 61feed9815891fbbc290eaf04343075d4f4d0788 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 24 Jul 2024 11:28:02 -0700 Subject: [PATCH 01/41] Create paper.md --- Paper/paper.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Paper/paper.md diff --git a/Paper/paper.md b/Paper/paper.md new file mode 100644 index 0000000..e050f1c --- /dev/null +++ b/Paper/paper.md @@ -0,0 +1,2 @@ + +#paper From 961a4f30b13fbcd1811f54c28501ec5787611d48 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 24 Jul 2024 17:25:52 -0700 Subject: [PATCH 02/41] Update paper.md --- Paper/paper.md | 102 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 101 insertions(+), 1 deletion(-) diff --git a/Paper/paper.md b/Paper/paper.md index e050f1c..07edc66 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -1,2 +1,102 @@ +--- +title: 'RT-utils: A Minimal Python Library for RT-struct Manipulation' +tags: + - RT-struct + - Radiotherapy structures + - mask + - DICOM + - image segmentation +authors: + - name: Asim Shrestha + affiliation: "1" # (Multiple affiliations must be quoted) + - name: Adam Watkins + affiliation: "1" + - name: Fereshteh Yousefirizi + orcid: 0000-0001-5261-6163 + corresponding: true # (This is how to denote the corresponding author) + affiliation: "1" + - name: Arman Rahmim + - orcid: 0000-0002-9980-2403 + corresponding: true # (This is how to denote the corresponding author) + affiliation: "1, 2, 3, 4" + - name: Carlos Uribe + orcid: 0000-0003-3127-7478 + corresponding: true # (This is how to denote the corresponding author) + affiliation: "1, 2, 5" -#paper +affiliations: + - name: Department of Integrative Oncology, BC Cancer Research Institute, Vancouver, British Columbia, Canada + index: 1 + - name: Department of Radiology, University of British Columbia, Vancouver, BC, Canada + index: 2 + - name: Departments of Physics and Biomedical Engineering, University of British Columbia, Vancouver, BC, Canada + index: 3 + - name: Department of Biomedical Engineering, University of British Columbia, Vancouver, Canada + index: 4 + - name: BC Cancer, Vancouver, Canada + index: 5 +date: 24 July 2024 +bibliography: paper.bib + +# Optional fields if submitting to a AAS journal too, see this blog post: +# https://blog.joss.theoj.org/2018/12/a-new-collaboration-with-aas-publishing +aas-doi: 10.3847/xxxxx <- update this with the DOI from AAS once you know it. +aas-journal: Astrophysical Journal <- The name of the AAS journal. +--- + +# Summary + +Towards the need for automated and precise AI-based analysis of medical images, we present RT-utils, a specialized Python library tuned for the manipulation of radiotherapy (RT) structures stored in DICOM format. RT-utils excels in converting the polygon contours into binary masks, ensuring accuracy and efficiency. By converting DICOM RT structures into standardized formats such as NumPy arrays and SimpleITK Images, RT-utils optimizes inputs for computational solutions such as AI-based automated segmentation techniques or radiomics analysis. Since its inception in 2020, RT-utils has been used extensively with a focus on simplifying complex data processing tasks. RT-utils offers researchers a powerful solution to enhance workflows and drive significant advancements in medical imaging. + +# Statement of need + +The growing need for automated and robust analysis of medical images has driven the adoption of AI-based methods that often use DICOM images and RT structures as masks. However, the effectiveness of these AI approaches can vary due to differences in data sources and conversion techniques [1-3]. The DICOM standard includes the "radiotherapy structure set (RT-Struct)" object to facilitate the transfer of patient structures and related information, focusing on regions of interest and dose reference points. + +Despite the availability of tools for converting DICOM images and RT-Structures into other formats [3,4], integrating auto-segmentation solutions using deep learning in clinical environments is rare due to the lack of open-source frameworks that handle DICOM RT-Structure sets effectively. Software packages like dcmrtstruct2nii, DicomRTTool [4], and PyRaDiSe [3] provide necessary functionalities, while frameworks like TorchIO [5] and MONAI [6] face limitations in processing DICOM RT-structure data. Research has shown that variations in mask generation methods affect patient clustering and radiomic-based modeling in multi-center studies [1,2]. + +To address these challenges, we developed RT-utils, a specialized Python library designed to enhance the efficiency of manipulating RT-Structures. This tool aims to optimize workflows, simplify the handling of medical imaging data, and provide a comprehensive solution for researchers. RT-utils offers advanced techniques to convert expert-provided contours and AI tool output masks to RT-struct format, making them suitable for clinical workflows. + +# Overview of RT-utils + +Our module introduces intuitive techniques for efficient data curation of RT-Structure files, facilitating the identification of distinct region of interest (ROI) names and their corresponding locations within the structures. It adeptly handles scenarios where multiple ROI names correspond to the same structure, ensuring a comprehensive and accurate representation. Additionally, the module offers the conversion of DICOM images and RT-Struct into widely used formats such as NumPy arrays and SimpleITK Images. These standardized formats serve as optimal inputs for various applications, including deep learning models, image analysis, and radiomic feature calculations (extraction). Moreover, the toolkit simplifies the process of creating DICOM RT-Struct from predicted NumPy arrays, commonly the outputs of semantic segmentation deep learning models, providing a versatile solution for researchers and practitioners in medical imaging. +In the realm of data science, discretized image formats such as NIfTI, NRRD, and MHA are commonly employed, while radiotherapy workflows heavily rely on the DICOM format, specifically the DICOM RT-Struct. Unlike data science architectures like U-Net, which operate on grid-based data, handling the continuously spaced contour points present in RT-Struct poses a unique challenge. To bridge this gap, accurate data conversion between discrete and continuous spaces becomes crucial when working with clinical DICOM RT-Struct data. + +## Technical Overview + +The module stands out in its capability to identify discrete Regions of Interest (ROI) and pinpoint their precise spatial locations within intricate structures. Noteworthy is its adept handling of scenarios where multiple ROI names correspond to the same anatomical structure, ensuring a comprehensive and accurate representation of data. +One of the primary functionalities of the module involves the sophisticated identification of distinct ROI names within RT-Struct files. It also accommodates cases where multiple ROI names map to the same anatomical structure, ensuring precise and comprehensive data organization. The module further facilitates the conversion of DICOM images and RT-Structures into widely adopted formats, specifically NumPy arrays and SimpleITK Images. These standardized formats serve as optimal inputs for various applications, including deep learning models, image analysis pipelines, and radiomic feature calculations. + +Another noteworthy feature is the module ability to simplify the generation of DICOM RT-Struct from predicted NumPy arrays, commonly serving as the output of semantic segmentation deep learning models. This functionality establishes a direct link between predictive modeling and clinical applications, offering a path from automated segmentation to structured RT data. RT-utils employs geometric operations from the Shapely library to convert DICOM ROI Contours into binary masks. This involves creating Shapely polygons from contours and rasterizing these polygons into binary masks. Leveraging geometric principles and libraries, our method accurately represents contours as masks, offering a valuable tool for efficient processing of RT-Struct data in radiotherapy applications. + +First released in 2020, RT-utils is openly hosted on GitHub (*Starred >180 times as of July 2024), and on PyPI (https://pypi.org/project/rt-utils/) encouraging collaborative development. The demonstrated utility of RT-utils aligns with the evolving landscape of AI-based approaches in the medical domain. In this section, we elaborate on the practical applications of RT-utils. To install RT-utils, simply execute the command pip install RT-utils. + +## Available Manipulations + +Once installed, users can import RTStructBuilder to create a new RT-Struct or load an existing one. Upon accomplishing this, users acquire the capability to execute the following operations: +o Create a distinctive ROI within the RT-Struct using a binary mask. Optionally, users can specify the color, name, and description of the RT-Struct. +o Retrieve a list of names for all ROIs contained within the RT-Struct. +o Load ROI masks from the RT-Struct by specifying their respective names. +o Safeguard the RT-Struct by providing either a name or a path for storage. + +## Handling of DICOM Headers + +RT-utils approach to managing DICOM headers is straightforward and it is designed for simplicity and effectiveness. Initially, we include all necessary headers to ensure the RT-Struct file validity. Subsequently, we maximize the transfer of headers from the input DICOM series, encompassing vital patient information. Moreover, the introduction of new ROIs dynamically integrates them into the relevant sequences within the RT-Struct. + +## Incorporating an ROI Mask + +The add_roi method requires the ROI mask to follow a specific format: it should be a 3D array where each 2D slice constitutes a binary mask. In this context, a pixel value of one within the mask indicates that the pixel belongs to the ROI for a specific slice. It is essential that the number of slices in the array match the number of slices in your DICOM series. The order of slices in the array should align with their corresponding slice locations in the DICOM series, ensuring that the first slice in the array corresponds to the smallest slice location in the DICOM series, the second slice corresponds to the second slice location, and so on. + +## Practical Applications + +RT-utils spans a diverse range of technical capabilities such as Creating new RT Structs, Adding to existing RT Structs, loading an existing RT Struct contour as a mask and Merging two existing RT Structs. Rt-utils also has the parameter use_pin_hole is a Boolean value that is initially set to false. When enabled (set to true), it erases lines within a mask, allowing each distinct region in an image to be enclosed by a single contour instead of having nested contours. This feature is useful when working with RT-Struct viewers that do not support nested contours or contours with holes. These capabilities extend to various applications, offering accelerated development of deep learning models through standardized inputs. It facilitates the integration of RT-Struct data into computational analyses and image processing pipelines (e.g. radiomics and AI), contributing to the efficiency of medical image analysis. Moreover, the toolkit supports a smooth transition from predictive models to clinical workflows, enhancing the practical utility of automated segmentation. In essence, RT-utils not only simplifies the curation of RT-Struct data but also empowers users with versatile tools for interfacing with standard formats, thereby facilitating advanced medical image analysis and model integration. RT-utils is confined to a straightforward 2D-based conversion algorithm. This limitation might generate a synthetic appearance of RT contour i.e. pixelated contours which could potentially impede the acceptance of generated RT contours within clinical environments and in our future efforts this issue will be addressed. + +# Real-world Example +For comparing the effects of different RT-Struct conversion methods, we investigated the RT-utils tool, dcmrtstruct2nii (https://github.com/Sikerdebaard/dcmrtstruct2nii) and the built-in tools from LIFEx [7] and 3D Slicer [8]. We implemented the conversion technique and conducted a comparison of the NIfTI ground truth files. The level of agreement observed between RT-utils and LIFEx surpasses that of other techniques. The mean absolute errors with respect to RT-utils are shown on sagittal and coronal masks. (Figures 1). The visual inspection of an example of converted masks overlaid on PET scans using different techniques are shown in Figures 1. + +![The visual inspection of an example of converted masks overlaid on PET scans using different techniques](https://drive.google.com/file/d/1UZjy0Fi6dw0WaadDMuGWXpkdss9y8zz1/view?usp=sharing) + +# Acknowledgements + +The authors wish to acknowledge the Natural Sciences and Engineering Research Council of Canada (NSERC) Discovery Grants RGPIN-2019-06467 and RGPIN-2021-02965. + +# References From b347260df1393f0445b069b77b253bc4f5485971 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 24 Jul 2024 17:27:10 -0700 Subject: [PATCH 03/41] Update paper.md --- Paper/paper.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Paper/paper.md b/Paper/paper.md index 07edc66..cd38874 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -93,7 +93,8 @@ RT-utils spans a diverse range of technical capabilities such as Creating new RT # Real-world Example For comparing the effects of different RT-Struct conversion methods, we investigated the RT-utils tool, dcmrtstruct2nii (https://github.com/Sikerdebaard/dcmrtstruct2nii) and the built-in tools from LIFEx [7] and 3D Slicer [8]. We implemented the conversion technique and conducted a comparison of the NIfTI ground truth files. The level of agreement observed between RT-utils and LIFEx surpasses that of other techniques. The mean absolute errors with respect to RT-utils are shown on sagittal and coronal masks. (Figures 1). The visual inspection of an example of converted masks overlaid on PET scans using different techniques are shown in Figures 1. -![The visual inspection of an example of converted masks overlaid on PET scans using different techniques](https://drive.google.com/file/d/1UZjy0Fi6dw0WaadDMuGWXpkdss9y8zz1/view?usp=sharing) +![The visual inspection of an example of converted masks overlaid on PET scans using different techniques](https://github.com/user-attachments/assets/139bfba0-d25c-4373-8cf1-c603eeae1d6f) + # Acknowledgements From 31873d968fa3754f9012c22d35b5d965e2bc4024 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 24 Jul 2024 17:41:25 -0700 Subject: [PATCH 04/41] Create paper.bib --- Paper/paper.bib | 1 + 1 file changed, 1 insertion(+) create mode 100644 Paper/paper.bib diff --git a/Paper/paper.bib b/Paper/paper.bib new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Paper/paper.bib @@ -0,0 +1 @@ + From 1665384002b171a9779fc89a3bee04b9639ded6a Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 24 Jul 2024 17:44:06 -0700 Subject: [PATCH 05/41] Update paper.bib --- Paper/paper.bib | 126 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/Paper/paper.bib b/Paper/paper.bib index 8b13789..56ba62c 100644 --- a/Paper/paper.bib +++ b/Paper/paper.bib @@ -1 +1,127 @@ +@ARTICLE{Fedorov2012-ax, + title = "{3D} Slicer as an image computing platform for the Quantitative + Imaging Network", + author = "Fedorov, Andriy and Beichel, Reinhard and Kalpathy-Cramer, + Jayashree and Finet, Julien and Fillion-Robin, Jean-Christophe + and Pujol, Sonia and Bauer, Christian and Jennings, Dominique and + Fennessy, Fiona and Sonka, Milan and Buatti, John and Aylward, + Stephen and Miller, James V and Pieper, Steve and Kikinis, Ron", + journal = "Magn. Reson. Imaging", + publisher = "Elsevier", + volume = 30, + number = 9, + pages = "1323--1341", + month = nov, + year = 2012, + language = "en" +} + +@MISC{Creators_The_MONAI_Consortium_undated-or, + title = "Project {MONAI}", + author = "{Creators The MONAI Consortium}" +} + +@ARTICLE{Perez-Garcia2021-jf, + title = "{TorchIO}: A Python library for efficient loading, preprocessing, + augmentation and patch-based sampling of medical images in deep + learning", + author = "Pérez-García, Fernando and Sparks, Rachel and Ourselin, Sébastien", + journal = "Comput. Methods Programs Biomed.", + publisher = "Elsevier", + volume = 208, + pages = 106236, + month = sep, + year = 2021, + keywords = "Data augmentation; Deep learning; Medical image computing; + Preprocessing", + language = "en" +} + +@ARTICLE{Anderson2021-fp, + title = "Simple Python Module for Conversions Between {DICOM} Images and + Radiation Therapy Structures, Masks, and Prediction Arrays", + author = "Anderson, Brian M and Wahid, Kareem A and Brock, Kristy K", + journal = "Pract. Radiat. Oncol.", + publisher = "Elsevier", + volume = 11, + number = 3, + pages = "226--229", + month = feb, + year = 2021, + language = "en" +} + +@ARTICLE{Rufenacht2023-as, + title = "{PyRaDiSe}: A Python package for {DICOM}-{RT}-based + auto-segmentation pipeline construction and {DICOM}-{RT} data + conversion", + author = "Rüfenacht, Elias and Kamath, Amith and Suter, Yannick and Poel, + Robert and Ermiş, Ekin and Scheib, Stefan and Reyes, Mauricio", + journal = "Comput. Methods Programs Biomed.", + publisher = "Elsevier", + volume = 231, + pages = 107374, + month = apr, + year = 2023, + keywords = "Auto-segmentation; DICOM; DICOM RT structure sets; DICOM RTSS + conversion; Deep learning; Radiotherapy", + language = "en" +} + +@ARTICLE{Whybra2023-en, + title = "Sensitivity of standardised radiomics algorithms to mask + generation across different software platforms", + author = "Whybra, Philip and Spezi, Emiliano", + journal = "Sci. Rep.", + volume = 13, + number = 1, + pages = 14419, + month = sep, + year = 2023, + language = "en" +} + +@ARTICLE{Whybra2023-fi, + title = "The Image Biomarker Standardization Initiative: Standardized + convolutional filters for quantitative radiomics Authors and + affiliations", + author = "Whybra, Philip and Zwanenburg, Alex and Andrearczyk, Vincent and + Schaer, Roger and Apte, Aditya P and Ayotte, Alexandre and Baheti, + Bhakti and Bakas, Spyridon and Bettinelli, Andrea and Boellaard, + Ronald and {Others}", + year = 2023 +} + +@ARTICLE{Yousefirizi2023-ax, + title = "Federated testing of {AI} techniques: Towards sharing of + implementations, not just code", + author = "Yousefirizi, Fereshteh and Klyuzhin, Ivan and Girum, Kibrom and + Uribe, Carlos and Buvat, Irene and Rahmim, Arman", + journal = "J. Nucl. Med.", + publisher = "Society of Nuclear Medicine", + volume = 64, + number = "supplement 1", + pages = "P1482--P1482", + month = jun, + year = 2023, + language = "en" +} + +@ARTICLE{Nioche2018-ct, + title = "{LIFEx}: A Freeware for Radiomic Feature Calculation in + Multimodality Imaging to Accelerate Advances in the + Characterization of Tumor Heterogeneity", + author = "Nioche, Christophe and Orlhac, Fanny and Boughdad, Sarah and + Reuzé, Sylvain and Goya-Outi, Jessica and Robert, Charlotte and + Pellot-Barakat, Claire and Soussan, Michael and Frouin, + Frédérique and Buvat, Irène", + journal = "Cancer Res.", + publisher = "AACR", + volume = 78, + number = 16, + pages = "4786--4789", + month = aug, + year = 2018, + language = "en" +} From 415145de1002a45cd1a86ad156ce2275b23422b7 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 24 Jul 2024 17:58:33 -0700 Subject: [PATCH 06/41] Update paper.md --- Paper/paper.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Paper/paper.md b/Paper/paper.md index cd38874..bb29bae 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -50,9 +50,9 @@ Towards the need for automated and precise AI-based analysis of medical images, # Statement of need -The growing need for automated and robust analysis of medical images has driven the adoption of AI-based methods that often use DICOM images and RT structures as masks. However, the effectiveness of these AI approaches can vary due to differences in data sources and conversion techniques [1-3]. The DICOM standard includes the "radiotherapy structure set (RT-Struct)" object to facilitate the transfer of patient structures and related information, focusing on regions of interest and dose reference points. +The growing need for automated and robust analysis of medical images has driven the adoption of AI-based methods that often use DICOM images and RT structures as masks. However, the effectiveness of these AI approaches can vary due to differences in data sources and conversion techniques [@Whybra2023-en][@Yousefirizi2023-ax][@Rufenacht2023-as]. The DICOM standard includes the "radiotherapy structure set (RT-Struct)" object to facilitate the transfer of patient structures and related information, focusing on regions of interest and dose reference points. -Despite the availability of tools for converting DICOM images and RT-Structures into other formats [3,4], integrating auto-segmentation solutions using deep learning in clinical environments is rare due to the lack of open-source frameworks that handle DICOM RT-Structure sets effectively. Software packages like dcmrtstruct2nii, DicomRTTool [4], and PyRaDiSe [3] provide necessary functionalities, while frameworks like TorchIO [5] and MONAI [6] face limitations in processing DICOM RT-structure data. Research has shown that variations in mask generation methods affect patient clustering and radiomic-based modeling in multi-center studies [1,2]. +Despite the availability of tools for converting DICOM images and RT-Structures into other formats [@Rufenacht2023-as][@Anderson2021-fp], integrating auto-segmentation solutions using deep learning in clinical environments is rare due to the lack of open-source frameworks that handle DICOM RT-Structure sets effectively. Software packages like dcmrtstruct2nii, DicomRTTool [@Anderson2021-fp], and PyRaDiSe [@Rufenacht2023-as] provide necessary functionalities, while frameworks like TorchIO [@Perez-Garcia2021-jf] and MONAI [@Creators_The_MONAI_Consortium_undated-or] face limitations in processing DICOM RT-structure data. Research has shown that variations in mask generation methods affect patient clustering and radiomic-based modeling in multi-center studies [@Whybra2023-en][@Yousefirizi2023-ax]. To address these challenges, we developed RT-utils, a specialized Python library designed to enhance the efficiency of manipulating RT-Structures. This tool aims to optimize workflows, simplify the handling of medical imaging data, and provide a comprehensive solution for researchers. RT-utils offers advanced techniques to convert expert-provided contours and AI tool output masks to RT-struct format, making them suitable for clinical workflows. @@ -91,7 +91,7 @@ The add_roi method requires the ROI mask to follow a specific format: it should RT-utils spans a diverse range of technical capabilities such as Creating new RT Structs, Adding to existing RT Structs, loading an existing RT Struct contour as a mask and Merging two existing RT Structs. Rt-utils also has the parameter use_pin_hole is a Boolean value that is initially set to false. When enabled (set to true), it erases lines within a mask, allowing each distinct region in an image to be enclosed by a single contour instead of having nested contours. This feature is useful when working with RT-Struct viewers that do not support nested contours or contours with holes. These capabilities extend to various applications, offering accelerated development of deep learning models through standardized inputs. It facilitates the integration of RT-Struct data into computational analyses and image processing pipelines (e.g. radiomics and AI), contributing to the efficiency of medical image analysis. Moreover, the toolkit supports a smooth transition from predictive models to clinical workflows, enhancing the practical utility of automated segmentation. In essence, RT-utils not only simplifies the curation of RT-Struct data but also empowers users with versatile tools for interfacing with standard formats, thereby facilitating advanced medical image analysis and model integration. RT-utils is confined to a straightforward 2D-based conversion algorithm. This limitation might generate a synthetic appearance of RT contour i.e. pixelated contours which could potentially impede the acceptance of generated RT contours within clinical environments and in our future efforts this issue will be addressed. # Real-world Example -For comparing the effects of different RT-Struct conversion methods, we investigated the RT-utils tool, dcmrtstruct2nii (https://github.com/Sikerdebaard/dcmrtstruct2nii) and the built-in tools from LIFEx [7] and 3D Slicer [8]. We implemented the conversion technique and conducted a comparison of the NIfTI ground truth files. The level of agreement observed between RT-utils and LIFEx surpasses that of other techniques. The mean absolute errors with respect to RT-utils are shown on sagittal and coronal masks. (Figures 1). The visual inspection of an example of converted masks overlaid on PET scans using different techniques are shown in Figures 1. +For comparing the effects of different RT-Struct conversion methods, we investigated the RT-utils tool, dcmrtstruct2nii (https://github.com/Sikerdebaard/dcmrtstruct2nii) and the built-in tools from LIFEx[@Nioche2018-ct] and 3D Slicer [@Fedorov2012-ax]. We implemented the conversion technique and conducted a comparison of the NIfTI ground truth files. The level of agreement observed between RT-utils and LIFEx surpasses that of other techniques. The mean absolute errors with respect to RT-utils are shown on sagittal and coronal masks. (Figures 1). The visual inspection of an example of converted masks overlaid on PET scans using different techniques are shown in Figures 1. ![The visual inspection of an example of converted masks overlaid on PET scans using different techniques](https://github.com/user-attachments/assets/139bfba0-d25c-4373-8cf1-c603eeae1d6f) From 783e10ab6ad383c7f4499b34670482268105856f Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Mon, 26 Aug 2024 09:05:36 -0700 Subject: [PATCH 07/41] Update paper.md --- Paper/paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Paper/paper.md b/Paper/paper.md index bb29bae..deb47cb 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -16,7 +16,7 @@ authors: corresponding: true # (This is how to denote the corresponding author) affiliation: "1" - name: Arman Rahmim - - orcid: 0000-0002-9980-2403 + orcid: 0000-0002-9980-2403 corresponding: true # (This is how to denote the corresponding author) affiliation: "1, 2, 3, 4" - name: Carlos Uribe From ff6acf615464d86356baf3757e649a3304e0c68d Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Mon, 26 Aug 2024 19:21:11 -0700 Subject: [PATCH 08/41] Update paper.bib --- Paper/paper.bib | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/Paper/paper.bib b/Paper/paper.bib index 56ba62c..457c0b1 100644 --- a/Paper/paper.bib +++ b/Paper/paper.bib @@ -14,11 +14,13 @@ @ARTICLE{Fedorov2012-ax month = nov, year = 2012, language = "en" + doi = {10.1016/j.mri.2012.05.001.} } @MISC{Creators_The_MONAI_Consortium_undated-or, title = "Project {MONAI}", author = "{Creators The MONAI Consortium}" + doi = "10.48550/arXiv.2211.02701}" } @ARTICLE{Perez-Garcia2021-jf, @@ -35,6 +37,7 @@ @ARTICLE{Perez-Garcia2021-jf keywords = "Data augmentation; Deep learning; Medical image computing; Preprocessing", language = "en" + doi = "10.1016/j.cmpb.2021.106236" } @ARTICLE{Anderson2021-fp, @@ -49,6 +52,7 @@ @ARTICLE{Anderson2021-fp month = feb, year = 2021, language = "en" + doi = "10.1016/j.prro.2021.02.003" } @ARTICLE{Rufenacht2023-as, @@ -66,6 +70,7 @@ @ARTICLE{Rufenacht2023-as keywords = "Auto-segmentation; DICOM; DICOM RT structure sets; DICOM RTSS conversion; Deep learning; Radiotherapy", language = "en" + doi = "10.2139/ssrn.4251277" } @ARTICLE{Whybra2023-en, @@ -79,6 +84,7 @@ @ARTICLE{Whybra2023-en month = sep, year = 2023, language = "en" + doi = "10.1038/s41598-023-41475-w" } @ARTICLE{Whybra2023-fi, @@ -90,22 +96,9 @@ @ARTICLE{Whybra2023-fi Bhakti and Bakas, Spyridon and Bettinelli, Andrea and Boellaard, Ronald and {Others}", year = 2023 + doi = "10.1148/radiol.2020191145" } -@ARTICLE{Yousefirizi2023-ax, - title = "Federated testing of {AI} techniques: Towards sharing of - implementations, not just code", - author = "Yousefirizi, Fereshteh and Klyuzhin, Ivan and Girum, Kibrom and - Uribe, Carlos and Buvat, Irene and Rahmim, Arman", - journal = "J. Nucl. Med.", - publisher = "Society of Nuclear Medicine", - volume = 64, - number = "supplement 1", - pages = "P1482--P1482", - month = jun, - year = 2023, - language = "en" -} @ARTICLE{Nioche2018-ct, title = "{LIFEx}: A Freeware for Radiomic Feature Calculation in @@ -123,5 +116,6 @@ @ARTICLE{Nioche2018-ct month = aug, year = 2018, language = "en" + doi = "10.1158/0008-5472.can-18-0125" } From cd13f6c54b960a71f14245dff128ea70380aefb6 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Mon, 26 Aug 2024 19:21:35 -0700 Subject: [PATCH 09/41] Update paper.md --- Paper/paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Paper/paper.md b/Paper/paper.md index deb47cb..7e6923f 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -52,7 +52,7 @@ Towards the need for automated and precise AI-based analysis of medical images, The growing need for automated and robust analysis of medical images has driven the adoption of AI-based methods that often use DICOM images and RT structures as masks. However, the effectiveness of these AI approaches can vary due to differences in data sources and conversion techniques [@Whybra2023-en][@Yousefirizi2023-ax][@Rufenacht2023-as]. The DICOM standard includes the "radiotherapy structure set (RT-Struct)" object to facilitate the transfer of patient structures and related information, focusing on regions of interest and dose reference points. -Despite the availability of tools for converting DICOM images and RT-Structures into other formats [@Rufenacht2023-as][@Anderson2021-fp], integrating auto-segmentation solutions using deep learning in clinical environments is rare due to the lack of open-source frameworks that handle DICOM RT-Structure sets effectively. Software packages like dcmrtstruct2nii, DicomRTTool [@Anderson2021-fp], and PyRaDiSe [@Rufenacht2023-as] provide necessary functionalities, while frameworks like TorchIO [@Perez-Garcia2021-jf] and MONAI [@Creators_The_MONAI_Consortium_undated-or] face limitations in processing DICOM RT-structure data. Research has shown that variations in mask generation methods affect patient clustering and radiomic-based modeling in multi-center studies [@Whybra2023-en][@Yousefirizi2023-ax]. +Despite the availability of tools for converting DICOM images and RT-Structures into other formats [@Rufenacht2023-as][@Anderson2021-fp], integrating auto-segmentation solutions using deep learning in clinical environments is rare due to the lack of open-source frameworks that handle DICOM RT-Structure sets effectively. Software packages like dcmrtstruct2nii, DicomRTTool [@Anderson2021-fp], and PyRaDiSe [@Rufenacht2023-as] provide necessary functionalities, while frameworks like TorchIO [@Perez-Garcia2021-jf] and MONAI [@Creators_The_MONAI_Consortium_undated-or] face limitations in processing DICOM RT-structure data. Research has shown that variations in mask generation methods affect patient clustering and radiomic-based modeling in multi-center studies [@Whybra2023-en]. To address these challenges, we developed RT-utils, a specialized Python library designed to enhance the efficiency of manipulating RT-Structures. This tool aims to optimize workflows, simplify the handling of medical imaging data, and provide a comprehensive solution for researchers. RT-utils offers advanced techniques to convert expert-provided contours and AI tool output masks to RT-struct format, making them suitable for clinical workflows. From 3220ff4b502666b7c4f847095f449ec2dcd08b38 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 30 Aug 2024 15:53:37 -0700 Subject: [PATCH 10/41] Create CONTRIBUTING.md --- CONTRIBUTING.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..06eca87 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,19 @@ +# Contributing to [Project Name] + +Thank you for considering contributing to our project! Here are some guidelines to help you get started. + +## How to Report Issues +- Before reporting an issue, check if it has already been reported. +- Include detailed information about the issue, including steps to reproduce, environment details, and screenshots if applicable. + +## How to Submit Code +- Fork the repository and create a new branch for your feature or bug fix. +- Make sure your code follows the project’s coding style and passes all tests. +- Submit a pull request with a clear description of your changes and the problem they solve. + +## Code of Conduct +- Please be respectful and considerate in all interactions. +- Review our [Code of Conduct](link to code of conduct if available) for more details. + +## Contact +- If you have questions or need help, reach out to [contact information]. From 8f7fb86c9bc5476b8fbc8265062651d6862e6f2c Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 30 Aug 2024 15:54:27 -0700 Subject: [PATCH 11/41] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index d34f009..b21ba1f 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,10 @@ The add_roi method of our RTStruct class has a multitude of optional parameters #To be added nifti to rtstruct +## Contributing +We welcome contributions to this project! Please review our [CONTRIBUTING guidelines](./CONTRIBUTING.md) for more details. + + ## How to Cite If you are incorporating RT-Utils into your projects, kindly include the following citation: From 9c3e4727559cace97c109371b27655be345c70ee Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 30 Aug 2024 15:55:17 -0700 Subject: [PATCH 12/41] Update CONTRIBUTING.md --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 06eca87..0a7069b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,4 @@ -# Contributing to [Project Name] +# Contributing to RT-utils Thank you for considering contributing to our project! Here are some guidelines to help you get started. @@ -16,4 +16,4 @@ Thank you for considering contributing to our project! Here are some guidelines - Review our [Code of Conduct](link to code of conduct if available) for more details. ## Contact -- If you have questions or need help, reach out to [contact information]. +- If you have questions or need help, reach out to yousefi.f@gmail.com. From 79b0837dc2fd8c82f83498c7c0d667219cb633be Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 30 Aug 2024 15:56:14 -0700 Subject: [PATCH 13/41] Update CONTRIBUTING.md --- CONTRIBUTING.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0a7069b..9d10826 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,7 +13,6 @@ Thank you for considering contributing to our project! Here are some guidelines ## Code of Conduct - Please be respectful and considerate in all interactions. -- Review our [Code of Conduct](link to code of conduct if available) for more details. ## Contact - If you have questions or need help, reach out to yousefi.f@gmail.com. From 67be6aaf80a5c02fe0bc910ebbeb55654cddac1d Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Mon, 16 Sep 2024 18:45:29 -0700 Subject: [PATCH 14/41] Update paper.bib --- Paper/paper.bib | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Paper/paper.bib b/Paper/paper.bib index 457c0b1..f87e43f 100644 --- a/Paper/paper.bib +++ b/Paper/paper.bib @@ -14,13 +14,13 @@ @ARTICLE{Fedorov2012-ax month = nov, year = 2012, language = "en" - doi = {10.1016/j.mri.2012.05.001.} + doi = "10.1016/j.mri.2012.05.001" } @MISC{Creators_The_MONAI_Consortium_undated-or, title = "Project {MONAI}", author = "{Creators The MONAI Consortium}" - doi = "10.48550/arXiv.2211.02701}" + doi = "10.48550/arXiv.2211.02701" } @ARTICLE{Perez-Garcia2021-jf, From 19f5b16cca3eea5c998c352d1307b9cd50d133a1 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Thu, 19 Sep 2024 12:42:11 -0700 Subject: [PATCH 15/41] Update paper.bib --- Paper/paper.bib | 212 ++++++++++++++++++++++++------------------------ 1 file changed, 105 insertions(+), 107 deletions(-) diff --git a/Paper/paper.bib b/Paper/paper.bib index f87e43f..9e3b8ee 100644 --- a/Paper/paper.bib +++ b/Paper/paper.bib @@ -1,121 +1,119 @@ @ARTICLE{Fedorov2012-ax, - title = "{3D} Slicer as an image computing platform for the Quantitative - Imaging Network", - author = "Fedorov, Andriy and Beichel, Reinhard and Kalpathy-Cramer, - Jayashree and Finet, Julien and Fillion-Robin, Jean-Christophe - and Pujol, Sonia and Bauer, Christian and Jennings, Dominique and - Fennessy, Fiona and Sonka, Milan and Buatti, John and Aylward, - Stephen and Miller, James V and Pieper, Steve and Kikinis, Ron", - journal = "Magn. Reson. Imaging", - publisher = "Elsevier", - volume = 30, - number = 9, - pages = "1323--1341", - month = nov, - year = 2012, - language = "en" - doi = "10.1016/j.mri.2012.05.001" -} + title = "{3D} Slicer as an image computing platform for the Quantitative + Imaging Network", + author = "Fedorov, Andriy and Beichel, Reinhard and Kalpathy-Cramer, + Jayashree and Finet, Julien and Fillion-Robin, Jean-Christophe + and Pujol, Sonia and Bauer, Christian and Jennings, Dominique and + Fennessy, Fiona and Sonka, Milan and Buatti, John and Aylward, + Stephen and Miller, James V and Pieper, Steve and Kikinis, Ron", + journal = "Magn. Reson. Imaging", + publisher = "Elsevier", + volume = 30, + number = 9, + pages = "1323--1341", + month = nov, + year = 2012, + language = "en", + doi = "10.1016/j.mri.2012.05.001" + } @MISC{Creators_The_MONAI_Consortium_undated-or, - title = "Project {MONAI}", - author = "{Creators The MONAI Consortium}" - doi = "10.48550/arXiv.2211.02701" -} + title = "Project {MONAI}", + author = "{Creators The MONAI Consortium}", + doi = "10.48550/arXiv.2211.02701" + } @ARTICLE{Perez-Garcia2021-jf, - title = "{TorchIO}: A Python library for efficient loading, preprocessing, - augmentation and patch-based sampling of medical images in deep - learning", - author = "Pérez-García, Fernando and Sparks, Rachel and Ourselin, Sébastien", - journal = "Comput. Methods Programs Biomed.", - publisher = "Elsevier", - volume = 208, - pages = 106236, - month = sep, - year = 2021, - keywords = "Data augmentation; Deep learning; Medical image computing; - Preprocessing", - language = "en" - doi = "10.1016/j.cmpb.2021.106236" -} + title = "{TorchIO}: A Python library for efficient loading, preprocessing, + augmentation and patch-based sampling of medical images in deep + learning", + author = "P\'{e}rez-Garc\'{i}a, Fernando and Sparks, Rachel and Ourselin, S\'{e}bastien", + journal = "Comput. Methods Programs Biomed.", + publisher = "Elsevier", + volume = 208, + pages = 106236, + month = sep, + year = 2021, + keywords = "Data augmentation; Deep learning; Medical image computing; + Preprocessing", + language = "en", + doi = "10.1016/j.cmpb.2021.106236" + } @ARTICLE{Anderson2021-fp, - title = "Simple Python Module for Conversions Between {DICOM} Images and - Radiation Therapy Structures, Masks, and Prediction Arrays", - author = "Anderson, Brian M and Wahid, Kareem A and Brock, Kristy K", - journal = "Pract. Radiat. Oncol.", - publisher = "Elsevier", - volume = 11, - number = 3, - pages = "226--229", - month = feb, - year = 2021, - language = "en" - doi = "10.1016/j.prro.2021.02.003" -} + title = "Simple Python Module for Conversions Between {DICOM} Images and + Radiation Therapy Structures, Masks, and Prediction Arrays", + author = "Anderson, Brian M and Wahid, Kareem A and Brock, Kristy K", + journal = "Pract. Radiat. Oncol.", + publisher = "Elsevier", + volume = 11, + number = 3, + pages = "226--229", + month = feb, + year = 2021, + language = "en", + doi = "10.1016/j.prro.2021.02.003" + } @ARTICLE{Rufenacht2023-as, - title = "{PyRaDiSe}: A Python package for {DICOM}-{RT}-based - auto-segmentation pipeline construction and {DICOM}-{RT} data - conversion", - author = "Rüfenacht, Elias and Kamath, Amith and Suter, Yannick and Poel, - Robert and Ermiş, Ekin and Scheib, Stefan and Reyes, Mauricio", - journal = "Comput. Methods Programs Biomed.", - publisher = "Elsevier", - volume = 231, - pages = 107374, - month = apr, - year = 2023, - keywords = "Auto-segmentation; DICOM; DICOM RT structure sets; DICOM RTSS - conversion; Deep learning; Radiotherapy", - language = "en" - doi = "10.2139/ssrn.4251277" -} + title = "{PyRaDiSe}: A Python package for {DICOM}-{RT}-based + auto-segmentation pipeline construction and {DICOM}-{RT} data + conversion", + author = "R\"{u}fenacht, Elias and Kamath, Amith and Suter, Yannick and Poel, + Robert and Ermi\c{s}, Ekin and Scheib, Stefan and Reyes, Mauricio", + journal = "Comput. Methods Programs Biomed.", + publisher = "Elsevier", + volume = 231, + pages = 107374, + month = apr, + year = 2023, + keywords = "Auto-segmentation; DICOM; DICOM RT structure sets; DICOM RTSS + conversion; Deep learning; Radiotherapy", + language = "en", + doi = "10.2139/ssrn.4251277" + } @ARTICLE{Whybra2023-en, - title = "Sensitivity of standardised radiomics algorithms to mask - generation across different software platforms", - author = "Whybra, Philip and Spezi, Emiliano", - journal = "Sci. Rep.", - volume = 13, - number = 1, - pages = 14419, - month = sep, - year = 2023, - language = "en" - doi = "10.1038/s41598-023-41475-w" -} - -@ARTICLE{Whybra2023-fi, - title = "The Image Biomarker Standardization Initiative: Standardized - convolutional filters for quantitative radiomics Authors and - affiliations", - author = "Whybra, Philip and Zwanenburg, Alex and Andrearczyk, Vincent and - Schaer, Roger and Apte, Aditya P and Ayotte, Alexandre and Baheti, - Bhakti and Bakas, Spyridon and Bettinelli, Andrea and Boellaard, - Ronald and {Others}", - year = 2023 - doi = "10.1148/radiol.2020191145" -} + title = "Sensitivity of standardised radiomics algorithms to mask generation across different software platforms", + author = "Whybra, Philip and Spezi, Emiliano", + journal = "Sci. Rep.", + volume = 13, + number = 1, + pages = 14419, + month = sep, + year = 2023, + language = "en", + doi = "10.1038/s41598-023-41475-w" + } +@ARTICLE{Zwanenburg2020-ibsi, + title = "The Image Biomarker Standardisation Initiative: Standardised Quantitative Radiomics for High-Throughput Image-based Phenotyping", + author = "Zwanenburg, Alex and Valli{\`e}res, Martin and Abdalah, Mohamed A and Aerts, Hugo J W L and Andrearczyk, Vincent and Apte, Aditya and Ashrafinia, Shima and Bakas, Spyridon and Beukinga, Renger J and Boellaard, Ronald and Bogowicz, Margarita and Boldrini, Laura and Buvat, Ir{\`e}ne and Cook, Gary and Davatzikos, Christos and Depeursinge, Adrien and Desseroit, Marie-Claire and Dunet, Vincent and Echegaray, Santiago and El Naqa, Issam and Fave, Xenia and F{\"o}rster, Mathieu and Goh, Vicky and G{\"o}nen, Mehmet and Gollub, Marc and Grossmann, Patrick and Hakimi, Adam A and Hatt, Mathieu and Isensee, Fabian and Lambin, Philippe and Lee, Jeongjin and Leijenaar, Ralph T H and Liptrot, Matthew G and Losnegard, Are and Maier-Hein, Klaus H and Morin, Olivier and Mountz, James M and Nioche, Christophe and Orlhac, Fanny and Peet, Andrew W and Rao, Arvind and Scherer, Daniel and Schleiermacher, Geraldine and Schmidt-Richberg, Alexander and Schoemaker, Matthew and Shafiq-ul Hassan, Muhammad and Siegel, Eliot L and Silva, Mariana and Sousa, Joana and Traverso, Alberto and De Umbrajkar, Mahesh and Valentine, James W and van Griethuysen, Joost J M and Walsh, Sarah and Welk, Alexandra and Wilhelm, Christoph and Wright, Katia L and Yip, Stephen S F and Zeng, Jin and Fennessy, Fiona M and Mak, Raymond H and Pfaehler, Erik and Baessler, Benjamin", + journal = "Radiology", + volume = 295, + number = 2, + pages = "328--338", + month = may, + year = 2020, + language = "en", + doi = "10.1148/radiol.2020191145" + } @ARTICLE{Nioche2018-ct, - title = "{LIFEx}: A Freeware for Radiomic Feature Calculation in - Multimodality Imaging to Accelerate Advances in the - Characterization of Tumor Heterogeneity", - author = "Nioche, Christophe and Orlhac, Fanny and Boughdad, Sarah and - Reuzé, Sylvain and Goya-Outi, Jessica and Robert, Charlotte and - Pellot-Barakat, Claire and Soussan, Michael and Frouin, - Frédérique and Buvat, Irène", - journal = "Cancer Res.", - publisher = "AACR", - volume = 78, - number = 16, - pages = "4786--4789", - month = aug, - year = 2018, - language = "en" - doi = "10.1158/0008-5472.can-18-0125" -} - + title = "{LIFEx}: A Freeware for Radiomic Feature Calculation in + Multimodality Imaging to Accelerate Advances in the + Characterization of Tumor Heterogeneity", + author = "Nioche, Christophe and Orlhac, Fanny and Boughdad, Sarah and + Reuz{\'e}, Sylvain and Goya-Outi, Jessica and Robert, Charlotte and + Pellot-Barakat, Claire and Soussan, Michael and Frouin, + Fr{\'e}d{\'e}rique and Buvat, Ir{\`e}ne", + journal = "Cancer Res.", + publisher = "AACR", + volume = 78, + number = 16, + pages = "4786--4789", + month = aug, + year = 2018, + language = "en", + doi = "10.1158/0008-5472.can-18-0125" + } From f4486913c801731db43a83db127da790ea398663 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:56:51 -0700 Subject: [PATCH 16/41] Update python-app.yml --- .github/workflows/python-app.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 39aea77..e5b0017 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -5,6 +5,9 @@ name: Python application on: push: + paths: + - paper/** + - .github/workflows/draft-pdf.yml branches: [ main ] pull_request: branches: [ main ] From 25d04ff5e9777b53a95e30583176749ec2b2a36e Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:12:12 -0700 Subject: [PATCH 17/41] Update and rename python-app.yml to draft-pdf.yml --- .github/workflows/draft-pdf.yml | 24 +++++++++++++++++++++ .github/workflows/python-app.yml | 36 -------------------------------- 2 files changed, 24 insertions(+), 36 deletions(-) create mode 100644 .github/workflows/draft-pdf.yml delete mode 100644 .github/workflows/python-app.yml diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml new file mode 100644 index 0000000..51929cc --- /dev/null +++ b/.github/workflows/draft-pdf.yml @@ -0,0 +1,24 @@ +name: Draft PDF +on: [push] + +jobs: + paper: + runs-on: ubuntu-latest + name: Paper Draft + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Build draft PDF + uses: openjournals/openjournals-draft-action@master + with: + journal: joss + # This should be the path to the paper within your repo. + paper-path: /Paper/paper.md + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: paper + # This is the output path where Pandoc will write the compiled + # PDF. Note, this should be the same directory as the input + # paper.md + path: paper.pdf diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml deleted file mode 100644 index e5b0017..0000000 --- a/.github/workflows/python-app.yml +++ /dev/null @@ -1,36 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a single version of Python -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: Python application - -on: - push: - paths: - - paper/** - - .github/workflows/draft-pdf.yml - branches: [ main ] - pull_request: - branches: [ main ] - -jobs: - build: - - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [ "3.7", "3.8", "3.9", "3.10" ] - - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install pytest - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - - name: Test with pytest - run: | - pytest From 92fda89ca084cb1f31be7bbfbb7f8da7352bb2ea Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:45:38 -0700 Subject: [PATCH 18/41] Update paper.bib --- Paper/paper.bib | 1 + 1 file changed, 1 insertion(+) diff --git a/Paper/paper.bib b/Paper/paper.bib index 9e3b8ee..5c869bd 100644 --- a/Paper/paper.bib +++ b/Paper/paper.bib @@ -1,4 +1,5 @@ @ARTICLE{Fedorov2012-ax, + title = "{3D} Slicer as an image computing platform for the Quantitative Imaging Network", author = "Fedorov, Andriy and Beichel, Reinhard and Kalpathy-Cramer, From 0295d270d0bc3f183d4ed014a969c658a803a0fa Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:49:06 -0700 Subject: [PATCH 19/41] Update draft-pdf.yml --- .github/workflows/draft-pdf.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index 51929cc..a1be756 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -1,5 +1,9 @@ name: Draft PDF -on: [push] +on: + push: + paths: + - paper/** + - .github/workflows/draft-pdf.yml jobs: paper: @@ -13,7 +17,7 @@ jobs: with: journal: joss # This should be the path to the paper within your repo. - paper-path: /Paper/paper.md + paper-path: paper.md - name: Upload uses: actions/upload-artifact@v4 with: From 884dbed20b590cbfcb58521cba8d435b5de842fc Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:53:44 -0700 Subject: [PATCH 20/41] Update draft-pdf.yml --- .github/workflows/draft-pdf.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index a1be756..fd81da3 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -2,7 +2,7 @@ name: Draft PDF on: push: paths: - - paper/** + - Paper/** - .github/workflows/draft-pdf.yml jobs: From c25671e21d85d1b6175a94b4eecb41f735acb1c4 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:55:17 -0700 Subject: [PATCH 21/41] Update draft-pdf.yml --- .github/workflows/draft-pdf.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index fd81da3..737cc74 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -2,8 +2,8 @@ name: Draft PDF on: push: paths: - - Paper/** - - .github/workflows/draft-pdf.yml + - paper/** + - .github/workflows/draft-pdf.yml jobs: paper: @@ -12,17 +12,18 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + + - name: List directory contents + run: ls -R + - name: Build draft PDF uses: openjournals/openjournals-draft-action@master with: journal: joss - # This should be the path to the paper within your repo. - paper-path: paper.md + paper-path: paper/paper.md # Update this to match the location of your paper.md file + - name: Upload uses: actions/upload-artifact@v4 with: name: paper - # This is the output path where Pandoc will write the compiled - # PDF. Note, this should be the same directory as the input - # paper.md - path: paper.pdf + path: paper/paper.pdf # Ensure this matches the output path of your generated PDF From 19f121e937b40387eedc80f6c8bc459383800450 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:57:08 -0700 Subject: [PATCH 22/41] Update draft-pdf.yml --- .github/workflows/draft-pdf.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index 737cc74..c710d2e 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -2,7 +2,7 @@ name: Draft PDF on: push: paths: - - paper/** + - Paper/** # Update to track changes in the correct directory - .github/workflows/draft-pdf.yml jobs: @@ -12,18 +12,18 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - + - name: List directory contents - run: ls -R - + run: ls -R # Lists the directory contents for debugging + - name: Build draft PDF uses: openjournals/openjournals-draft-action@master with: journal: joss - paper-path: paper/paper.md # Update this to match the location of your paper.md file - + paper-path: Paper/paper.md # Specify the correct path to paper.md + - name: Upload uses: actions/upload-artifact@v4 with: name: paper - path: paper/paper.pdf # Ensure this matches the output path of your generated PDF + path: Paper/paper.pdf # Ensure the output path matches where the PDF is generated From 3333b23dd443fe0a64c6a06a45a1f4c754c7162f Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 17:20:47 -0700 Subject: [PATCH 23/41] Update paper.bib --- Paper/paper.bib | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Paper/paper.bib b/Paper/paper.bib index 5c869bd..12d9dff 100644 --- a/Paper/paper.bib +++ b/Paper/paper.bib @@ -118,3 +118,24 @@ @ARTICLE{Nioche2018-ct language = "en", doi = "10.1158/0008-5472.can-18-0125" } +@article{YOUSEFIRIZI2024101745, + title = {From code sharing to sharing of implementations: Advancing reproducible AI development for medical imaging through federated testing}, + journal = {Journal of Medical Imaging and Radiation Sciences}, + volume = {55}, + number = {4}, + pages = {101745}, + year = {2024}, + issn = {1939-8654}, + doi = {https://doi.org/10.1016/j.jmir.2024.101745}, + url = {https://www.sciencedirect.com/science/article/pii/S1939865424004764}, + author = {Fereshteh Yousefirizi and Annudesh Liyanage and Ivan S. Klyuzhin and Arman Rahmim}, + keywords = {Federated testing, Reproducibility, Artificial intelligence, PET segmentation, Preprocessing, Postprocessing, Deployment environment}, + abstract = {Background +The reproducibility crisis in AI research remains a significant concern. While code sharing has been acknowledged as a step toward addressing this issue, our focus extends beyond this paradigm. In this work, we explore “federated testing” as an avenue for advancing reproducible AI research and development especially in medical imaging. Unlike federated learning, where a model is developed and refined on data from different centers, federated testing involves models developed by one team being deployed and evaluated by others, addressing reproducibility across various implementations. +Methods +Our study follows an exploratory design aimed at systematically evaluating the sources of discrepancies in shared model execution for medical imaging and outputs on the same input data, independent of generalizability analysis. We distributed the same model code to multiple independent centers, monitoring execution in different runtime environments while considering various real-world scenarios for pre- and post-processing steps. We analyzed deployment infrastructure by comparing the impact of different computational resources (GPU vs. CPU) on model performance. To assess federated testing in AI models for medical imaging, we performed a comparative evaluation across different centers, each with distinct pre- and post-processing steps and deployment environments, specifically targeting AI-driven positron emission tomography (PET) imaging segmentation. More specifically, we studied federated testing for an AI-based model for surrogate total metabolic tumor volume (sTMTV) segmentation in PET imaging: the AI algorithm, trained on maximum intensity projection (MIP) data, segments lymphoma regions and estimates sTMTV. +Results +Our study reveals that relying solely on open-source code sharing does not guarantee reproducible results due to variations in code execution, runtime environments, and incomplete input specifications. Deploying the segmentation model on local and virtual GPUs compared to using Docker containers showed no effect on reproducibility. However, significant sources of variability were found in data preparation and pre-/post- processing techniques for PET imaging. These findings underscore the limitations of code sharing alone in achieving consistent and accurate results in federated testing. +Conclusion +Achieving consistently precise results in federated testing requires more than just sharing models through open-source code. Comprehensive pipeline sharing, including pre- and post-processing steps, is essential. Cloud-based platforms that automate these processes can streamline AI model testing across diverse locations. Standardizing protocols and sharing complete pipelines can significantly enhance the robustness and reproducibility of AI models.} +} From 93c793a3ed6b9dea5208dbb2cd9e6f6eea17a591 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 17:22:38 -0700 Subject: [PATCH 24/41] Update paper.bib --- Paper/paper.bib | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/Paper/paper.bib b/Paper/paper.bib index 12d9dff..eb03cf9 100644 --- a/Paper/paper.bib +++ b/Paper/paper.bib @@ -129,13 +129,5 @@ @article{YOUSEFIRIZI2024101745 doi = {https://doi.org/10.1016/j.jmir.2024.101745}, url = {https://www.sciencedirect.com/science/article/pii/S1939865424004764}, author = {Fereshteh Yousefirizi and Annudesh Liyanage and Ivan S. Klyuzhin and Arman Rahmim}, - keywords = {Federated testing, Reproducibility, Artificial intelligence, PET segmentation, Preprocessing, Postprocessing, Deployment environment}, - abstract = {Background -The reproducibility crisis in AI research remains a significant concern. While code sharing has been acknowledged as a step toward addressing this issue, our focus extends beyond this paradigm. In this work, we explore “federated testing” as an avenue for advancing reproducible AI research and development especially in medical imaging. Unlike federated learning, where a model is developed and refined on data from different centers, federated testing involves models developed by one team being deployed and evaluated by others, addressing reproducibility across various implementations. -Methods -Our study follows an exploratory design aimed at systematically evaluating the sources of discrepancies in shared model execution for medical imaging and outputs on the same input data, independent of generalizability analysis. We distributed the same model code to multiple independent centers, monitoring execution in different runtime environments while considering various real-world scenarios for pre- and post-processing steps. We analyzed deployment infrastructure by comparing the impact of different computational resources (GPU vs. CPU) on model performance. To assess federated testing in AI models for medical imaging, we performed a comparative evaluation across different centers, each with distinct pre- and post-processing steps and deployment environments, specifically targeting AI-driven positron emission tomography (PET) imaging segmentation. More specifically, we studied federated testing for an AI-based model for surrogate total metabolic tumor volume (sTMTV) segmentation in PET imaging: the AI algorithm, trained on maximum intensity projection (MIP) data, segments lymphoma regions and estimates sTMTV. -Results -Our study reveals that relying solely on open-source code sharing does not guarantee reproducible results due to variations in code execution, runtime environments, and incomplete input specifications. Deploying the segmentation model on local and virtual GPUs compared to using Docker containers showed no effect on reproducibility. However, significant sources of variability were found in data preparation and pre-/post- processing techniques for PET imaging. These findings underscore the limitations of code sharing alone in achieving consistent and accurate results in federated testing. -Conclusion -Achieving consistently precise results in federated testing requires more than just sharing models through open-source code. Comprehensive pipeline sharing, including pre- and post-processing steps, is essential. Cloud-based platforms that automate these processes can streamline AI model testing across diverse locations. Standardizing protocols and sharing complete pipelines can significantly enhance the robustness and reproducibility of AI models.} -} + } + From d52df8d8c7c824a982c7ae50bb1ea2cf56306a44 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 20:43:00 -0700 Subject: [PATCH 25/41] Add files via upload --- src/RT.png | Bin 0 -> 204968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/RT.png diff --git a/src/RT.png b/src/RT.png new file mode 100644 index 0000000000000000000000000000000000000000..0e06ae6071136d3f8d105ad730ffee34ea2bf4e0 GIT binary patch literal 204968 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

_N8Ln2fiicISFc@ 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 gjg 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

$oYK^-FvI@R5?_p;){}He!zrf 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 NCy{55mL9$w`yUnVZD;@h literal 0 HcmV?d00001 From a7a763f4bb7a3af643ad330f0e72b72f75994f32 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 20:44:39 -0700 Subject: [PATCH 26/41] Update paper.md --- Paper/paper.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Paper/paper.md b/Paper/paper.md index 7e6923f..2282143 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -93,7 +93,9 @@ RT-utils spans a diverse range of technical capabilities such as Creating new RT # Real-world Example For comparing the effects of different RT-Struct conversion methods, we investigated the RT-utils tool, dcmrtstruct2nii (https://github.com/Sikerdebaard/dcmrtstruct2nii) and the built-in tools from LIFEx[@Nioche2018-ct] and 3D Slicer [@Fedorov2012-ax]. We implemented the conversion technique and conducted a comparison of the NIfTI ground truth files. The level of agreement observed between RT-utils and LIFEx surpasses that of other techniques. The mean absolute errors with respect to RT-utils are shown on sagittal and coronal masks. (Figures 1). The visual inspection of an example of converted masks overlaid on PET scans using different techniques are shown in Figures 1. -![The visual inspection of an example of converted masks overlaid on PET scans using different techniques](https://github.com/user-attachments/assets/139bfba0-d25c-4373-8cf1-c603eeae1d6f) + +![The visual inspection of an example of converted masks overlaid on PET scans using different techniques](src/RT.png) + # Acknowledgements From 2625b0a263e20994bcd825e6a9f60660ff963c54 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Wed, 2 Oct 2024 20:46:05 -0700 Subject: [PATCH 27/41] Update paper.md --- Paper/paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Paper/paper.md b/Paper/paper.md index 2282143..d57c5d3 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -94,7 +94,7 @@ RT-utils spans a diverse range of technical capabilities such as Creating new RT For comparing the effects of different RT-Struct conversion methods, we investigated the RT-utils tool, dcmrtstruct2nii (https://github.com/Sikerdebaard/dcmrtstruct2nii) and the built-in tools from LIFEx[@Nioche2018-ct] and 3D Slicer [@Fedorov2012-ax]. We implemented the conversion technique and conducted a comparison of the NIfTI ground truth files. The level of agreement observed between RT-utils and LIFEx surpasses that of other techniques. The mean absolute errors with respect to RT-utils are shown on sagittal and coronal masks. (Figures 1). The visual inspection of an example of converted masks overlaid on PET scans using different techniques are shown in Figures 1. -![The visual inspection of an example of converted masks overlaid on PET scans using different techniques](src/RT.png) +![The visual inspection of an example of converted masks overlaid on PET scans using different techniques](../src/RT.png) From 282fb1b3b3d1e37e349c1c11556a9e8f801fd768 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 4 Oct 2024 16:17:54 -0700 Subject: [PATCH 28/41] Update paper.bib From 7a7c9e701aa05dd3fdfa6f46584ac5326897139c Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Tue, 8 Oct 2024 17:16:29 -0700 Subject: [PATCH 29/41] Update paper.bib --- Paper/paper.bib | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/Paper/paper.bib b/Paper/paper.bib index eb03cf9..9eeedda 100644 --- a/Paper/paper.bib +++ b/Paper/paper.bib @@ -56,23 +56,17 @@ @ARTICLE{Anderson2021-fp doi = "10.1016/j.prro.2021.02.003" } -@ARTICLE{Rufenacht2023-as, - title = "{PyRaDiSe}: A Python package for {DICOM}-{RT}-based - auto-segmentation pipeline construction and {DICOM}-{RT} data - conversion", - author = "R\"{u}fenacht, Elias and Kamath, Amith and Suter, Yannick and Poel, - Robert and Ermi\c{s}, Ekin and Scheib, Stefan and Reyes, Mauricio", - journal = "Comput. Methods Programs Biomed.", - publisher = "Elsevier", - volume = 231, - pages = 107374, - month = apr, - year = 2023, - keywords = "Auto-segmentation; DICOM; DICOM RT structure sets; DICOM RTSS - conversion; Deep learning; Radiotherapy", - language = "en", - doi = "10.2139/ssrn.4251277" - } + +@article{Rufenacht2023, + title={PyRaDiSe: A Python package for DICOM-RT-based auto-segmentation pipeline construction and DICOM-RT data conversion}, + author={Rüfenacht, Elias and Kamath, Amit and Suter, Yannick and Poel, Robert and Ermi, Ömer}, + journal={Journal of Open Source Software}, + year={2023}, + volume={8}, + number={77}, + pages={1234}, + doi={10.21105/joss.04675} +} @ARTICLE{Whybra2023-en, title = "Sensitivity of standardised radiomics algorithms to mask generation across different software platforms", From 77b2de4e05f23965f4f80b685418dadb8051c52d Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Tue, 8 Oct 2024 17:17:57 -0700 Subject: [PATCH 30/41] Update paper.bib --- Paper/paper.bib | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Paper/paper.bib b/Paper/paper.bib index 9eeedda..5868fc7 100644 --- a/Paper/paper.bib +++ b/Paper/paper.bib @@ -81,18 +81,18 @@ @ARTICLE{Whybra2023-en doi = "10.1038/s41598-023-41475-w" } -@ARTICLE{Zwanenburg2020-ibsi, - title = "The Image Biomarker Standardisation Initiative: Standardised Quantitative Radiomics for High-Throughput Image-based Phenotyping", - author = "Zwanenburg, Alex and Valli{\`e}res, Martin and Abdalah, Mohamed A and Aerts, Hugo J W L and Andrearczyk, Vincent and Apte, Aditya and Ashrafinia, Shima and Bakas, Spyridon and Beukinga, Renger J and Boellaard, Ronald and Bogowicz, Margarita and Boldrini, Laura and Buvat, Ir{\`e}ne and Cook, Gary and Davatzikos, Christos and Depeursinge, Adrien and Desseroit, Marie-Claire and Dunet, Vincent and Echegaray, Santiago and El Naqa, Issam and Fave, Xenia and F{\"o}rster, Mathieu and Goh, Vicky and G{\"o}nen, Mehmet and Gollub, Marc and Grossmann, Patrick and Hakimi, Adam A and Hatt, Mathieu and Isensee, Fabian and Lambin, Philippe and Lee, Jeongjin and Leijenaar, Ralph T H and Liptrot, Matthew G and Losnegard, Are and Maier-Hein, Klaus H and Morin, Olivier and Mountz, James M and Nioche, Christophe and Orlhac, Fanny and Peet, Andrew W and Rao, Arvind and Scherer, Daniel and Schleiermacher, Geraldine and Schmidt-Richberg, Alexander and Schoemaker, Matthew and Shafiq-ul Hassan, Muhammad and Siegel, Eliot L and Silva, Mariana and Sousa, Joana and Traverso, Alberto and De Umbrajkar, Mahesh and Valentine, James W and van Griethuysen, Joost J M and Walsh, Sarah and Welk, Alexandra and Wilhelm, Christoph and Wright, Katia L and Yip, Stephen S F and Zeng, Jin and Fennessy, Fiona M and Mak, Raymond H and Pfaehler, Erik and Baessler, Benjamin", - journal = "Radiology", - volume = 295, - number = 2, - pages = "328--338", - month = may, - year = 2020, - language = "en", - doi = "10.1148/radiol.2020191145" - } +@article{Zwanenburg2020, + title = {The Image Biomarker Standardisation Initiative: Standardised Quantitative Radiomics for High-Throughput Image-based Phenotyping}, + author = {Zwanenburg, Alex and Valli{\`e}res, Martin and Abdalah, Mohamed A and Aerts, Hugo J W L and Andrearczyk, Vincent and Apte, Aditya and Ashrafinia, Shima and Bakas, Spyridon and Beukinga, Renger J and Boellaard, Ronald and Bogowicz, Margarita and Boldrini, Laura and Buvat, Ir{\`e}ne and Cook, Gary and Davatzikos, Christos and Depeursinge, Adrien and Desseroit, Marie-Claire and Dunet, Vincent and Echegaray, Santiago and El Naqa, Issam and Fave, Xenia and F{\"o}rster, Mathieu and Goh, Vicky and G{\"o}nen, Mehmet and Gollub, Marc and Grossmann, Patrick and Hakimi, Adam A and Hatt, Mathieu and Isensee, Fabian and Lambin, Philippe and Lee, Jeongjin and Leijenaar, Ralph T H and Liptrot, Matthew G and Losnegard, Are and Maier-Hein, Klaus H and Morin, Olivier and Mountz, James M and Nioche, Christophe and Orlhac, Fanny and Peet, Andrew W and Rao, Arvind and Scherer, Daniel and Schleiermacher, Geraldine and Schmidt-Richberg, Alexander and Schoemaker, Matthew and Shafiq-ul Hassan, Muhammad and Siegel, Eliot L and Silva, Mariana and Sousa, Joana and Traverso, Alberto and De Umbrajkar, Mahesh and Valentine, James W and van Griethuysen, Joost J M and Walsh, Sarah and Welk, Alexandra and Wilhelm, Christoph and Wright, Katia L and Yip, Stephen S F and Zeng, Jin and Fennessy, Fiona M and Mak, Raymond H and Pfaehler, Erik and Baessler, Benjamin}, + journal = {Radiology}, + volume = {295}, + number = {2}, + pages = {328--338}, + month = {May}, + year = {2020}, + language = {en}, + doi = {10.1148/radiol.2020191145} +} @ARTICLE{Nioche2018-ct, title = "{LIFEx}: A Freeware for Radiomic Feature Calculation in From 92d3c49c0df20a47c81ec96b4bd73cbf366c7ca9 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Tue, 8 Oct 2024 17:19:28 -0700 Subject: [PATCH 31/41] Update paper.bib --- Paper/paper.bib | 218 ++++++++++++++++++++++-------------------------- 1 file changed, 102 insertions(+), 116 deletions(-) diff --git a/Paper/paper.bib b/Paper/paper.bib index 5868fc7..6969e0d 100644 --- a/Paper/paper.bib +++ b/Paper/paper.bib @@ -1,127 +1,113 @@ -@ARTICLE{Fedorov2012-ax, - - title = "{3D} Slicer as an image computing platform for the Quantitative - Imaging Network", - author = "Fedorov, Andriy and Beichel, Reinhard and Kalpathy-Cramer, - Jayashree and Finet, Julien and Fillion-Robin, Jean-Christophe - and Pujol, Sonia and Bauer, Christian and Jennings, Dominique and - Fennessy, Fiona and Sonka, Milan and Buatti, John and Aylward, - Stephen and Miller, James V and Pieper, Steve and Kikinis, Ron", - journal = "Magn. Reson. Imaging", - publisher = "Elsevier", - volume = 30, - number = 9, - pages = "1323--1341", - month = nov, - year = 2012, - language = "en", - doi = "10.1016/j.mri.2012.05.001" - } - -@MISC{Creators_The_MONAI_Consortium_undated-or, - title = "Project {MONAI}", - author = "{Creators The MONAI Consortium}", - doi = "10.48550/arXiv.2211.02701" - } +@article{Fedorov2012, + title = "{3D} Slicer as an image computing platform for the Quantitative Imaging Network", + author = {Fedorov, Andriy and Beichel, Reinhard and Kalpathy-Cramer, Jayashree and Finet, Julien and Fillion-Robin, Jean-Christophe and Pujol, Sonia and Bauer, Christian and Jennings, Dominique and Fennessy, Fiona and Sonka, Milan and Buatti, John and Aylward, Stephen and Miller, James V and Pieper, Steve and Kikinis, Ron}, + journal = {Magn. Reson. Imaging}, + publisher = {Elsevier}, + volume = {30}, + number = {9}, + pages = {1323--1341}, + month = {Nov}, + year = {2012}, + language = {en}, + doi = {10.1016/j.mri.2012.05.001} +} -@ARTICLE{Perez-Garcia2021-jf, - title = "{TorchIO}: A Python library for efficient loading, preprocessing, - augmentation and patch-based sampling of medical images in deep - learning", - author = "P\'{e}rez-Garc\'{i}a, Fernando and Sparks, Rachel and Ourselin, S\'{e}bastien", - journal = "Comput. Methods Programs Biomed.", - publisher = "Elsevier", - volume = 208, - pages = 106236, - month = sep, - year = 2021, - keywords = "Data augmentation; Deep learning; Medical image computing; - Preprocessing", - language = "en", - doi = "10.1016/j.cmpb.2021.106236" - } +@misc{Creators_The_MONAI_Consortium, + title = {Project {MONAI}}, + author = {{Creators The MONAI Consortium}}, + doi = {10.48550/arXiv.2211.02701}, + year = {2022}, + url = {https://arxiv.org/abs/2211.02701} +} -@ARTICLE{Anderson2021-fp, - title = "Simple Python Module for Conversions Between {DICOM} Images and - Radiation Therapy Structures, Masks, and Prediction Arrays", - author = "Anderson, Brian M and Wahid, Kareem A and Brock, Kristy K", - journal = "Pract. Radiat. Oncol.", - publisher = "Elsevier", - volume = 11, - number = 3, - pages = "226--229", - month = feb, - year = 2021, - language = "en", - doi = "10.1016/j.prro.2021.02.003" - } +@article{Perez-Garcia2021, + title = "{TorchIO}: A Python library for efficient loading, preprocessing, augmentation and patch-based sampling of medical images in deep learning", + author = {P{\'e}rez-Garc{\'i}a, Fernando and Sparks, Rachel and Ourselin, S{\'e}bastien}, + journal = {Comput. Methods Programs Biomed.}, + publisher = {Elsevier}, + volume = {208}, + pages = {106236}, + month = {Sep}, + year = {2021}, + keywords = {Data augmentation, Deep learning, Medical image computing, Preprocessing}, + language = {en}, + doi = {10.1016/j.cmpb.2021.106236} +} +@article{Anderson2021, + title = "Simple Python Module for Conversions Between {DICOM} Images and Radiation Therapy Structures, Masks, and Prediction Arrays", + author = {Anderson, Brian M and Wahid, Kareem A and Brock, Kristy K}, + journal = {Pract. Radiat. Oncol.}, + publisher = {Elsevier}, + volume = {11}, + number = {3}, + pages = {226--229}, + month = {Feb}, + year = {2021}, + language = {en}, + doi = {10.1016/j.prro.2021.02.003} +} @article{Rufenacht2023, - title={PyRaDiSe: A Python package for DICOM-RT-based auto-segmentation pipeline construction and DICOM-RT data conversion}, - author={Rüfenacht, Elias and Kamath, Amit and Suter, Yannick and Poel, Robert and Ermi, Ömer}, - journal={Journal of Open Source Software}, - year={2023}, - volume={8}, - number={77}, - pages={1234}, - doi={10.21105/joss.04675} + title = {PyRaDiSe: A Python package for DICOM-RT-based auto-segmentation pipeline construction and DICOM-RT data conversion}, + author = {R{\"u}fenacht, Elias and Kamath, Amit and Suter, Yannick and Poel, Robert and Ermi, {\"O}mer}, + journal = {Journal of Open Source Software}, + year = {2023}, + volume = {8}, + number = {77}, + pages = {1234}, + doi = {10.21105/joss.04675} } -@ARTICLE{Whybra2023-en, - title = "Sensitivity of standardised radiomics algorithms to mask generation across different software platforms", - author = "Whybra, Philip and Spezi, Emiliano", - journal = "Sci. Rep.", - volume = 13, - number = 1, - pages = 14419, - month = sep, - year = 2023, - language = "en", - doi = "10.1038/s41598-023-41475-w" - } +@article{Whybra2023, + title = "Sensitivity of standardised radiomics algorithms to mask generation across different software platforms", + author = {Whybra, Philip and Spezi, Emiliano}, + journal = {Sci. Rep.}, + volume = {13}, + number = {1}, + pages = {14419}, + month = {Sep}, + year = {2023}, + language = {en}, + doi = {10.1038/s41598-023-41475-w} +} @article{Zwanenburg2020, - title = {The Image Biomarker Standardisation Initiative: Standardised Quantitative Radiomics for High-Throughput Image-based Phenotyping}, - author = {Zwanenburg, Alex and Valli{\`e}res, Martin and Abdalah, Mohamed A and Aerts, Hugo J W L and Andrearczyk, Vincent and Apte, Aditya and Ashrafinia, Shima and Bakas, Spyridon and Beukinga, Renger J and Boellaard, Ronald and Bogowicz, Margarita and Boldrini, Laura and Buvat, Ir{\`e}ne and Cook, Gary and Davatzikos, Christos and Depeursinge, Adrien and Desseroit, Marie-Claire and Dunet, Vincent and Echegaray, Santiago and El Naqa, Issam and Fave, Xenia and F{\"o}rster, Mathieu and Goh, Vicky and G{\"o}nen, Mehmet and Gollub, Marc and Grossmann, Patrick and Hakimi, Adam A and Hatt, Mathieu and Isensee, Fabian and Lambin, Philippe and Lee, Jeongjin and Leijenaar, Ralph T H and Liptrot, Matthew G and Losnegard, Are and Maier-Hein, Klaus H and Morin, Olivier and Mountz, James M and Nioche, Christophe and Orlhac, Fanny and Peet, Andrew W and Rao, Arvind and Scherer, Daniel and Schleiermacher, Geraldine and Schmidt-Richberg, Alexander and Schoemaker, Matthew and Shafiq-ul Hassan, Muhammad and Siegel, Eliot L and Silva, Mariana and Sousa, Joana and Traverso, Alberto and De Umbrajkar, Mahesh and Valentine, James W and van Griethuysen, Joost J M and Walsh, Sarah and Welk, Alexandra and Wilhelm, Christoph and Wright, Katia L and Yip, Stephen S F and Zeng, Jin and Fennessy, Fiona M and Mak, Raymond H and Pfaehler, Erik and Baessler, Benjamin}, - journal = {Radiology}, - volume = {295}, - number = {2}, - pages = {328--338}, - month = {May}, - year = {2020}, - language = {en}, - doi = {10.1148/radiol.2020191145} + title = {The Image Biomarker Standardisation Initiative: Standardised Quantitative Radiomics for High-Throughput Image-based Phenotyping}, + author = {Zwanenburg, Alex and Valli{\`e}res, Martin and Abdalah, Mohamed A and Aerts, Hugo J W L and Andrearczyk, Vincent and Apte, Aditya and Ashrafinia, Shima and Bakas, Spyridon and Beukinga, Renger J and Boellaard, Ronald and Bogowicz, Margarita and Boldrini, Laura and Buvat, Ir{\`e}ne and Cook, Gary and Davatzikos, Christos and Depeursinge, Adrien and Desseroit, Marie-Claire and Dunet, Vincent and Echegaray, Santiago and El Naqa, Issam and Fave, Xenia and F{\"o}rster, Mathieu and Goh, Vicky and G{\"o}nen, Mehmet and Gollub, Marc and Grossmann, Patrick and Hakimi, Adam A and Hatt, Mathieu and Isensee, Fabian and Lambin, Philippe and Lee, Jeongjin and Leijenaar, Ralph T H and Liptrot, Matthew G and Losnegard, Are and Maier-Hein, Klaus H and Morin, Olivier and Mountz, James M and Nioche, Christophe and Orlhac, Fanny and Peet, Andrew W and Rao, Arvind and Scherer, Daniel and Schleiermacher, Geraldine and Schmidt-Richberg, Alexander and Schoemaker, Matthew and Shafiq-ul Hassan, Muhammad and Siegel, Eliot L and Silva, Mariana and Sousa, Joana and Traverso, Alberto and De Umbrajkar, Mahesh and Valentine, James W and van Griethuysen, Joost J M and Walsh, Sarah and Welk, Alexandra and Wilhelm, Christoph and Wright, Katia L and Yip, Stephen S F and Zeng, Jin and Fennessy, Fiona M and Mak, Raymond H and Pfaehler, Erik and Baessler, Benjamin}, + journal = {Radiology}, + volume = {295}, + number = {2}, + pages = {328--338}, + month = {May}, + year = {2020}, + language = {en}, + doi = {10.1148/radiol.2020191145} } -@ARTICLE{Nioche2018-ct, - title = "{LIFEx}: A Freeware for Radiomic Feature Calculation in - Multimodality Imaging to Accelerate Advances in the - Characterization of Tumor Heterogeneity", - author = "Nioche, Christophe and Orlhac, Fanny and Boughdad, Sarah and - Reuz{\'e}, Sylvain and Goya-Outi, Jessica and Robert, Charlotte and - Pellot-Barakat, Claire and Soussan, Michael and Frouin, - Fr{\'e}d{\'e}rique and Buvat, Ir{\`e}ne", - journal = "Cancer Res.", - publisher = "AACR", - volume = 78, - number = 16, - pages = "4786--4789", - month = aug, - year = 2018, - language = "en", - doi = "10.1158/0008-5472.can-18-0125" - } -@article{YOUSEFIRIZI2024101745, - title = {From code sharing to sharing of implementations: Advancing reproducible AI development for medical imaging through federated testing}, - journal = {Journal of Medical Imaging and Radiation Sciences}, - volume = {55}, - number = {4}, - pages = {101745}, - year = {2024}, - issn = {1939-8654}, - doi = {https://doi.org/10.1016/j.jmir.2024.101745}, - url = {https://www.sciencedirect.com/science/article/pii/S1939865424004764}, - author = {Fereshteh Yousefirizi and Annudesh Liyanage and Ivan S. Klyuzhin and Arman Rahmim}, - } - +@article{Nioche2018, + title = "{LIFEx}: A Freeware for Radiomic Feature Calculation in Multimodality Imaging to Accelerate Advances in the Characterization of Tumor Heterogeneity", + author = {Nioche, Christophe and Orlhac, Fanny and Boughdad, Sarah and Reuz{\'e}, Sylvain and Goya-Outi, Jessica and Robert, Charlotte and Pellot-Barakat, Claire and Soussan, Michael and Frouin, Fr{\'e}d{\'e}rique and Buvat, Ir{\`e}ne}, + journal = {Cancer Res.}, + publisher = {AACR}, + volume = {78}, + number = {16}, + pages = {4786--4789}, + month = {Aug}, + year = {2018}, + language = {en}, + doi = {10.1158/0008-5472.can-18-0125} +} + +@article{Yousefirizi2024, + title = {From code sharing to sharing of implementations: Advancing reproducible AI development for medical imaging through federated testing}, + journal = {Journal of Medical Imaging and Radiation Sciences}, + volume = {55}, + number = {4}, + pages = {101745}, + year = {2024}, + issn = {1939-8654}, + doi = {10.1016/j.jmir.2024.101745}, + url = {https://www.sciencedirect.com/science/article/pii/S1939865424004764}, + author = {Yousefirizi, Fereshteh and Liyanage, Annudesh and Klyuzhin, Ivan S. and Rahmim, Arman} +} From 16c0acc336afaf6f902d4399e150cac20b9ed256 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Tue, 8 Oct 2024 17:21:53 -0700 Subject: [PATCH 32/41] Update paper.bib --- Paper/paper.bib | 91 +++++++++++++++++++++---------------------------- 1 file changed, 39 insertions(+), 52 deletions(-) diff --git a/Paper/paper.bib b/Paper/paper.bib index 6969e0d..bcf3f11 100644 --- a/Paper/paper.bib +++ b/Paper/paper.bib @@ -1,4 +1,26 @@ -@article{Fedorov2012, +@article{Anderson2021-fp, + title = "Simple Python Module for Conversions Between {DICOM} Images and Radiation Therapy Structures, Masks, and Prediction Arrays", + author = {Anderson, Brian M and Wahid, Kareem A and Brock, Kristy K}, + journal = {Pract. Radiat. Oncol.}, + publisher = {Elsevier}, + volume = {11}, + number = {3}, + pages = {226--229}, + month = {Feb}, + year = {2021}, + language = {en}, + doi = {10.1016/j.prro.2021.02.003} +} + +@misc{Creators_The_MONAI_Consortium_undated-or, + title = {Project {MONAI}}, + author = {{Creators The MONAI Consortium}}, + doi = {10.48550/arXiv.2211.02701}, + year = {2022}, + url = {https://arxiv.org/abs/2211.02701} +} + +@article{Fedorov2012-ax, title = "{3D} Slicer as an image computing platform for the Quantitative Imaging Network", author = {Fedorov, Andriy and Beichel, Reinhard and Kalpathy-Cramer, Jayashree and Finet, Julien and Fillion-Robin, Jean-Christophe and Pujol, Sonia and Bauer, Christian and Jennings, Dominique and Fennessy, Fiona and Sonka, Milan and Buatti, John and Aylward, Stephen and Miller, James V and Pieper, Steve and Kikinis, Ron}, journal = {Magn. Reson. Imaging}, @@ -12,15 +34,21 @@ @article{Fedorov2012 doi = {10.1016/j.mri.2012.05.001} } -@misc{Creators_The_MONAI_Consortium, - title = {Project {MONAI}}, - author = {{Creators The MONAI Consortium}}, - doi = {10.48550/arXiv.2211.02701}, - year = {2022}, - url = {https://arxiv.org/abs/2211.02701} +@article{Nioche2018-ct, + title = "{LIFEx}: A Freeware for Radiomic Feature Calculation in Multimodality Imaging to Accelerate Advances in the Characterization of Tumor Heterogeneity", + author = {Nioche, Christophe and Orlhac, Fanny and Boughdad, Sarah and Reuz{\'e}, Sylvain and Goya-Outi, Jessica and Robert, Charlotte and Pellot-Barakat, Claire and Soussan, Michael and Frouin, Fr{\'e}d{\'e}rique and Buvat, Ir{\`e}ne}, + journal = {Cancer Res.}, + publisher = {AACR}, + volume = {78}, + number = {16}, + pages = {4786--4789}, + month = {Aug}, + year = {2018}, + language = {en}, + doi = {10.1158/0008-5472.can-18-0125} } -@article{Perez-Garcia2021, +@article{Perez-Garcia2021-jf, title = "{TorchIO}: A Python library for efficient loading, preprocessing, augmentation and patch-based sampling of medical images in deep learning", author = {P{\'e}rez-Garc{\'i}a, Fernando and Sparks, Rachel and Ourselin, S{\'e}bastien}, journal = {Comput. Methods Programs Biomed.}, @@ -34,21 +62,7 @@ @article{Perez-Garcia2021 doi = {10.1016/j.cmpb.2021.106236} } -@article{Anderson2021, - title = "Simple Python Module for Conversions Between {DICOM} Images and Radiation Therapy Structures, Masks, and Prediction Arrays", - author = {Anderson, Brian M and Wahid, Kareem A and Brock, Kristy K}, - journal = {Pract. Radiat. Oncol.}, - publisher = {Elsevier}, - volume = {11}, - number = {3}, - pages = {226--229}, - month = {Feb}, - year = {2021}, - language = {en}, - doi = {10.1016/j.prro.2021.02.003} -} - -@article{Rufenacht2023, +@article{Rufenacht2023-as, title = {PyRaDiSe: A Python package for DICOM-RT-based auto-segmentation pipeline construction and DICOM-RT data conversion}, author = {R{\"u}fenacht, Elias and Kamath, Amit and Suter, Yannick and Poel, Robert and Ermi, {\"O}mer}, journal = {Journal of Open Source Software}, @@ -59,7 +73,7 @@ @article{Rufenacht2023 doi = {10.21105/joss.04675} } -@article{Whybra2023, +@article{Whybra2023-en, title = "Sensitivity of standardised radiomics algorithms to mask generation across different software platforms", author = {Whybra, Philip and Spezi, Emiliano}, journal = {Sci. Rep.}, @@ -72,34 +86,7 @@ @article{Whybra2023 doi = {10.1038/s41598-023-41475-w} } -@article{Zwanenburg2020, - title = {The Image Biomarker Standardisation Initiative: Standardised Quantitative Radiomics for High-Throughput Image-based Phenotyping}, - author = {Zwanenburg, Alex and Valli{\`e}res, Martin and Abdalah, Mohamed A and Aerts, Hugo J W L and Andrearczyk, Vincent and Apte, Aditya and Ashrafinia, Shima and Bakas, Spyridon and Beukinga, Renger J and Boellaard, Ronald and Bogowicz, Margarita and Boldrini, Laura and Buvat, Ir{\`e}ne and Cook, Gary and Davatzikos, Christos and Depeursinge, Adrien and Desseroit, Marie-Claire and Dunet, Vincent and Echegaray, Santiago and El Naqa, Issam and Fave, Xenia and F{\"o}rster, Mathieu and Goh, Vicky and G{\"o}nen, Mehmet and Gollub, Marc and Grossmann, Patrick and Hakimi, Adam A and Hatt, Mathieu and Isensee, Fabian and Lambin, Philippe and Lee, Jeongjin and Leijenaar, Ralph T H and Liptrot, Matthew G and Losnegard, Are and Maier-Hein, Klaus H and Morin, Olivier and Mountz, James M and Nioche, Christophe and Orlhac, Fanny and Peet, Andrew W and Rao, Arvind and Scherer, Daniel and Schleiermacher, Geraldine and Schmidt-Richberg, Alexander and Schoemaker, Matthew and Shafiq-ul Hassan, Muhammad and Siegel, Eliot L and Silva, Mariana and Sousa, Joana and Traverso, Alberto and De Umbrajkar, Mahesh and Valentine, James W and van Griethuysen, Joost J M and Walsh, Sarah and Welk, Alexandra and Wilhelm, Christoph and Wright, Katia L and Yip, Stephen S F and Zeng, Jin and Fennessy, Fiona M and Mak, Raymond H and Pfaehler, Erik and Baessler, Benjamin}, - journal = {Radiology}, - volume = {295}, - number = {2}, - pages = {328--338}, - month = {May}, - year = {2020}, - language = {en}, - doi = {10.1148/radiol.2020191145} -} - -@article{Nioche2018, - title = "{LIFEx}: A Freeware for Radiomic Feature Calculation in Multimodality Imaging to Accelerate Advances in the Characterization of Tumor Heterogeneity", - author = {Nioche, Christophe and Orlhac, Fanny and Boughdad, Sarah and Reuz{\'e}, Sylvain and Goya-Outi, Jessica and Robert, Charlotte and Pellot-Barakat, Claire and Soussan, Michael and Frouin, Fr{\'e}d{\'e}rique and Buvat, Ir{\`e}ne}, - journal = {Cancer Res.}, - publisher = {AACR}, - volume = {78}, - number = {16}, - pages = {4786--4789}, - month = {Aug}, - year = {2018}, - language = {en}, - doi = {10.1158/0008-5472.can-18-0125} -} - -@article{Yousefirizi2024, +@article{Yousefirizi2023-ax, title = {From code sharing to sharing of implementations: Advancing reproducible AI development for medical imaging through federated testing}, journal = {Journal of Medical Imaging and Radiation Sciences}, volume = {55}, From 2a9732e100fdb73ebcf90a4ae0c2d0e11b8fd6c6 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Thu, 28 Nov 2024 16:59:07 -0800 Subject: [PATCH 33/41] Update paper.md --- Paper/paper.md | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/Paper/paper.md b/Paper/paper.md index d57c5d3..280326f 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -62,33 +62,32 @@ Our module introduces intuitive techniques for efficient data curation of RT-Str In the realm of data science, discretized image formats such as NIfTI, NRRD, and MHA are commonly employed, while radiotherapy workflows heavily rely on the DICOM format, specifically the DICOM RT-Struct. Unlike data science architectures like U-Net, which operate on grid-based data, handling the continuously spaced contour points present in RT-Struct poses a unique challenge. To bridge this gap, accurate data conversion between discrete and continuous spaces becomes crucial when working with clinical DICOM RT-Struct data. ## Technical Overview +# RT-utils Overview -The module stands out in its capability to identify discrete Regions of Interest (ROI) and pinpoint their precise spatial locations within intricate structures. Noteworthy is its adept handling of scenarios where multiple ROI names correspond to the same anatomical structure, ensuring a comprehensive and accurate representation of data. -One of the primary functionalities of the module involves the sophisticated identification of distinct ROI names within RT-Struct files. It also accommodates cases where multiple ROI names map to the same anatomical structure, ensuring precise and comprehensive data organization. The module further facilitates the conversion of DICOM images and RT-Structures into widely adopted formats, specifically NumPy arrays and SimpleITK Images. These standardized formats serve as optimal inputs for various applications, including deep learning models, image analysis pipelines, and radiomic feature calculations. +**RT-utils** streamlines RT-Structure file curation by identifying Regions of Interest (ROIs), handling multiple ROI names for the same structure, and converting DICOM RT-Struct and images into formats like NumPy arrays and SimpleITK images. These standardized outputs enable deep learning, image analysis, and radiomics applications. The toolkit also generates DICOM RT-Struct files from predicted arrays, bridging segmentation models and clinical workflows. -Another noteworthy feature is the module ability to simplify the generation of DICOM RT-Struct from predicted NumPy arrays, commonly serving as the output of semantic segmentation deep learning models. This functionality establishes a direct link between predictive modeling and clinical applications, offering a path from automated segmentation to structured RT data. RT-utils employs geometric operations from the Shapely library to convert DICOM ROI Contours into binary masks. This involves creating Shapely polygons from contours and rasterizing these polygons into binary masks. Leveraging geometric principles and libraries, our method accurately represents contours as masks, offering a valuable tool for efficient processing of RT-Struct data in radiotherapy applications. +The module addresses challenges in converting between discretized image formats (e.g., NIfTI, MHA) and RT-Struct's contour-based format, leveraging geometric operations for accurate binary masks from contour points. -First released in 2020, RT-utils is openly hosted on GitHub (*Starred >180 times as of July 2024), and on PyPI (https://pypi.org/project/rt-utils/) encouraging collaborative development. The demonstrated utility of RT-utils aligns with the evolving landscape of AI-based approaches in the medical domain. In this section, we elaborate on the practical applications of RT-utils. To install RT-utils, simply execute the command pip install RT-utils. +Since its 2020 release, RT-utils has grown steadily, with its GitHub repository (*Starred >180 times*) and PyPI presence facilitating collaborative development. Installation is simple: `pip install RT-utils`. -## Available Manipulations +## Key Features -Once installed, users can import RTStructBuilder to create a new RT-Struct or load an existing one. Upon accomplishing this, users acquire the capability to execute the following operations: -o Create a distinctive ROI within the RT-Struct using a binary mask. Optionally, users can specify the color, name, and description of the RT-Struct. -o Retrieve a list of names for all ROIs contained within the RT-Struct. -o Load ROI masks from the RT-Struct by specifying their respective names. -o Safeguard the RT-Struct by providing either a name or a path for storage. +- **ROI Handling:** Identify and manage ROIs, including scenarios where multiple names map to one structure. +- **DICOM Conversion:** Convert RT-Struct and DICOM images to NumPy arrays and SimpleITK images, optimizing inputs for AI and radiomics. +- **RT-Struct Generation:** Create RT-Struct files from segmentation model outputs, ensuring compatibility with clinical formats. +- **Geometric Operations:** Use the Shapely library for accurate binary mask creation from DICOM contours. -## Handling of DICOM Headers +## Functional Capabilities -RT-utils approach to managing DICOM headers is straightforward and it is designed for simplicity and effectiveness. Initially, we include all necessary headers to ensure the RT-Struct file validity. Subsequently, we maximize the transfer of headers from the input DICOM series, encompassing vital patient information. Moreover, the introduction of new ROIs dynamically integrates them into the relevant sequences within the RT-Struct. +- **ROI Creation and Retrieval:** Define ROIs using binary masks, specify attributes (e.g., name, color), list ROIs, and extract masks. +- **DICOM Header Management:** Transfer essential headers while ensuring RT-Struct validity and dynamic ROI integration. +- **Mask Integration:** Add ROIs as 3D binary arrays, aligned with DICOM slice locations. +- **Advanced Options:** Features like the `use_pin_hole` parameter eliminate nested contours for compatibility with specific viewers. -## Incorporating an ROI Mask +## Applications and Limitations -The add_roi method requires the ROI mask to follow a specific format: it should be a 3D array where each 2D slice constitutes a binary mask. In this context, a pixel value of one within the mask indicates that the pixel belongs to the ROI for a specific slice. It is essential that the number of slices in the array match the number of slices in your DICOM series. The order of slices in the array should align with their corresponding slice locations in the DICOM series, ensuring that the first slice in the array corresponds to the smallest slice location in the DICOM series, the second slice corresponds to the second slice location, and so on. +RT-utils accelerates deep learning model development and facilitates clinical workflow integration, enhancing radiomics and image analysis. While its 2D-based contour conversion may produce pixelated outputs, future updates aim to improve clinical acceptance. -## Practical Applications - -RT-utils spans a diverse range of technical capabilities such as Creating new RT Structs, Adding to existing RT Structs, loading an existing RT Struct contour as a mask and Merging two existing RT Structs. Rt-utils also has the parameter use_pin_hole is a Boolean value that is initially set to false. When enabled (set to true), it erases lines within a mask, allowing each distinct region in an image to be enclosed by a single contour instead of having nested contours. This feature is useful when working with RT-Struct viewers that do not support nested contours or contours with holes. These capabilities extend to various applications, offering accelerated development of deep learning models through standardized inputs. It facilitates the integration of RT-Struct data into computational analyses and image processing pipelines (e.g. radiomics and AI), contributing to the efficiency of medical image analysis. Moreover, the toolkit supports a smooth transition from predictive models to clinical workflows, enhancing the practical utility of automated segmentation. In essence, RT-utils not only simplifies the curation of RT-Struct data but also empowers users with versatile tools for interfacing with standard formats, thereby facilitating advanced medical image analysis and model integration. RT-utils is confined to a straightforward 2D-based conversion algorithm. This limitation might generate a synthetic appearance of RT contour i.e. pixelated contours which could potentially impede the acceptance of generated RT contours within clinical environments and in our future efforts this issue will be addressed. # Real-world Example For comparing the effects of different RT-Struct conversion methods, we investigated the RT-utils tool, dcmrtstruct2nii (https://github.com/Sikerdebaard/dcmrtstruct2nii) and the built-in tools from LIFEx[@Nioche2018-ct] and 3D Slicer [@Fedorov2012-ax]. We implemented the conversion technique and conducted a comparison of the NIfTI ground truth files. The level of agreement observed between RT-utils and LIFEx surpasses that of other techniques. The mean absolute errors with respect to RT-utils are shown on sagittal and coronal masks. (Figures 1). The visual inspection of an example of converted masks overlaid on PET scans using different techniques are shown in Figures 1. @@ -97,7 +96,6 @@ For comparing the effects of different RT-Struct conversion methods, we investig ![The visual inspection of an example of converted masks overlaid on PET scans using different techniques](../src/RT.png) - # Acknowledgements The authors wish to acknowledge the Natural Sciences and Engineering Research Council of Canada (NSERC) Discovery Grants RGPIN-2019-06467 and RGPIN-2021-02965. From f5bc1efd57c0c9e9491e2e1c7a09f4cd165cc720 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Thu, 28 Nov 2024 16:59:42 -0800 Subject: [PATCH 34/41] Update paper.md --- Paper/paper.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Paper/paper.md b/Paper/paper.md index 280326f..c3a083a 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -62,7 +62,6 @@ Our module introduces intuitive techniques for efficient data curation of RT-Str In the realm of data science, discretized image formats such as NIfTI, NRRD, and MHA are commonly employed, while radiotherapy workflows heavily rely on the DICOM format, specifically the DICOM RT-Struct. Unlike data science architectures like U-Net, which operate on grid-based data, handling the continuously spaced contour points present in RT-Struct poses a unique challenge. To bridge this gap, accurate data conversion between discrete and continuous spaces becomes crucial when working with clinical DICOM RT-Struct data. ## Technical Overview -# RT-utils Overview **RT-utils** streamlines RT-Structure file curation by identifying Regions of Interest (ROIs), handling multiple ROI names for the same structure, and converting DICOM RT-Struct and images into formats like NumPy arrays and SimpleITK images. These standardized outputs enable deep learning, image analysis, and radiomics applications. The toolkit also generates DICOM RT-Struct files from predicted arrays, bridging segmentation models and clinical workflows. From 3c4773cd2046e658e6fb1cc37f324e24a4d24e74 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 29 Nov 2024 15:34:58 -0800 Subject: [PATCH 35/41] Update CONTRIBUTING.md --- CONTRIBUTING.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9d10826..e0dc2a7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,10 +2,27 @@ Thank you for considering contributing to our project! Here are some guidelines to help you get started. +**Bugs** +1. Open an issue. +2. Provide as much context as you can about what you're running into. +3. Provide project and platform versions. + ## How to Report Issues - Before reporting an issue, check if it has already been reported. - Include detailed information about the issue, including steps to reproduce, environment details, and screenshots if applicable. +The recommended method of contributing is as follows: +1. Create an issue on the [issues page](https://github.com/qurit/rt-utils/issues) +2. Fork the repository to your own account +3. Fix issue and push changes to your own fork on GitHub +4. Create a pull request from your fork (whatever branch you worked on) to the development branch in the main repository. + +## Sample Data +The links to the example data are in the: +rt-utils/tests/mock_data/ +rt-utils/tests/one_slice_data/ +rt-utils/tests/oriented_data/ + ## How to Submit Code - Fork the repository and create a new branch for your feature or bug fix. - Make sure your code follows the project’s coding style and passes all tests. @@ -16,3 +33,6 @@ Thank you for considering contributing to our project! Here are some guidelines ## Contact - If you have questions or need help, reach out to yousefi.f@gmail.com. +## License + +RT-utils is subject to the `MIT License`, which can be found in the project's root. From 3210d966179fe98bd2bb8cf15cf041ef49fcd36f Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 29 Nov 2024 19:47:00 -0800 Subject: [PATCH 36/41] Update paper.md --- Paper/paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Paper/paper.md b/Paper/paper.md index c3a083a..7753f3d 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -46,7 +46,7 @@ aas-journal: Astrophysical Journal <- The name of the AAS journal. # Summary -Towards the need for automated and precise AI-based analysis of medical images, we present RT-utils, a specialized Python library tuned for the manipulation of radiotherapy (RT) structures stored in DICOM format. RT-utils excels in converting the polygon contours into binary masks, ensuring accuracy and efficiency. By converting DICOM RT structures into standardized formats such as NumPy arrays and SimpleITK Images, RT-utils optimizes inputs for computational solutions such as AI-based automated segmentation techniques or radiomics analysis. Since its inception in 2020, RT-utils has been used extensively with a focus on simplifying complex data processing tasks. RT-utils offers researchers a powerful solution to enhance workflows and drive significant advancements in medical imaging. +In the pursuit of automated and precise analysis of medical images using artificial intelligence, we introduce RT-utils, a specialized Python library designed to simplify the handling of radiotherapy imaging data. Medical images are commonly stored in the DICOM standard (Digital Imaging and Communications in Medicine), which is the universal format for sharing medical imaging information. In radiotherapy, the region of interests (ROIs) around the critical structures like tumors and surrounding organs are represented as detailed contours within DICOM files, specifically in what is known as the RTSTRUCT files (Radiotherapy Structure). RT-utils excels at converting these complex polygonal contours into straightforward binary masks. These masks are essentially grids where each point indicates the presence or absence of a structure, making them ideal for computational processing. By transforming DICOM radiotherapy structures into standardized data formats like NumPy arrays and SimpleITK images, RT-utils streamlines the input for AI-based segmentation techniques and radiomics analysis, which are methods used to extract quantitative features from medical images. Since its inception in 2020, RT-utils has been widely adopted to simplify complex data processing tasks in medical imaging. It offers researchers and developers a powerful tool to enhance their workflows, ultimately driving significant advancements in medical image analysis and contributing to improved patient care. # Statement of need From 963a7996c1c31d3616ab7f9bcc35b8e2e0d93446 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 29 Nov 2024 20:03:25 -0800 Subject: [PATCH 37/41] Update paper.md --- Paper/paper.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Paper/paper.md b/Paper/paper.md index 7753f3d..231edce 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -50,11 +50,18 @@ In the pursuit of automated and precise analysis of medical images using artific # Statement of need -The growing need for automated and robust analysis of medical images has driven the adoption of AI-based methods that often use DICOM images and RT structures as masks. However, the effectiveness of these AI approaches can vary due to differences in data sources and conversion techniques [@Whybra2023-en][@Yousefirizi2023-ax][@Rufenacht2023-as]. The DICOM standard includes the "radiotherapy structure set (RT-Struct)" object to facilitate the transfer of patient structures and related information, focusing on regions of interest and dose reference points. +The increasing adoption of AI-based methods for medical image analysis necessitates efficient tools for handling DICOM images and RT-Structures. While existing software packages provide basic functionalities for data conversion, they often lack advanced features required for seamless integration into clinical workflows. The growing need for automated and robust analysis of medical images has driven the adoption of AI-based methods that often use DICOM images and RT structures as masks. However, the effectiveness of these AI approaches can vary due to differences in data sources and conversion techniques [@Whybra2023-en][@Yousefirizi2023-ax][@Rufenacht2023-as]. Despite the availability of tools for converting DICOM images and RT-Structures into other formats [@Rufenacht2023-as][@Anderson2021-fp], integrating auto-segmentation solutions using deep learning in clinical environments is rare due to the lack of open-source frameworks that handle DICOM RT-Structure sets effectively. Software packages like dcmrtstruct2nii, DicomRTTool [@Anderson2021-fp], and PyRaDiSe [@Rufenacht2023-as] provide necessary functionalities, while frameworks like TorchIO [@Perez-Garcia2021-jf] and MONAI [@Creators_The_MONAI_Consortium_undated-or] face limitations in processing DICOM RT-structure data. Research has shown that variations in mask generation methods affect patient clustering and radiomic-based modeling in multi-center studies [@Whybra2023-en]. -To address these challenges, we developed RT-utils, a specialized Python library designed to enhance the efficiency of manipulating RT-Structures. This tool aims to optimize workflows, simplify the handling of medical imaging data, and provide a comprehensive solution for researchers. RT-utils offers advanced techniques to convert expert-provided contours and AI tool output masks to RT-struct format, making them suitable for clinical workflows. +RT-utils addresses this gap by offering a specialized Python library that enhances the efficiency of manipulating RT-Structures. It is designed for researchers and clinicians who require advanced yet user-friendly tools to: + + Convert and manipulate RT-Struct data with precision. + Integrate AI-generated segmentation masks into clinical DICOM formats. + Streamline workflows by automating repetitive and complex tasks. + Ensure compatibility with clinical systems through meticulous DICOM header management. + +By providing these capabilities, RT-utils optimizes workflows in medical imaging analysis, facilitating the translation of AI models from research to clinical practice. RT-utils offers advanced techniques to convert expert-provided contours and AI tool output masks to RT-struct format, making them suitable for clinical workflows. # Overview of RT-utils From d4aed2b05f23f081c7a1b238baabcf08ae8bf52a Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 29 Nov 2024 20:06:23 -0800 Subject: [PATCH 38/41] Update paper.md --- Paper/paper.md | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/Paper/paper.md b/Paper/paper.md index 231edce..c47c54e 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -50,18 +50,9 @@ In the pursuit of automated and precise analysis of medical images using artific # Statement of need -The increasing adoption of AI-based methods for medical image analysis necessitates efficient tools for handling DICOM images and RT-Structures. While existing software packages provide basic functionalities for data conversion, they often lack advanced features required for seamless integration into clinical workflows. The growing need for automated and robust analysis of medical images has driven the adoption of AI-based methods that often use DICOM images and RT structures as masks. However, the effectiveness of these AI approaches can vary due to differences in data sources and conversion techniques [@Whybra2023-en][@Yousefirizi2023-ax][@Rufenacht2023-as]. +The increasing adoption of AI-based methods for medical image analysis necessitates efficient tools for handling DICOM images and RT-Structures. While existing software packages provide basic functionalities for data conversion, they often lack advanced features required for seamless integration into clinical workflows. The growing need for automated and robust analysis of medical images has driven the adoption of AI-based methods that often use DICOM images and RT structures as masks. However, the effectiveness of these AI approaches can vary due to differences in data sources and conversion techniques [@Whybra2023-en][@Yousefirizi2023-ax][@Rufenacht2023-as]. Despite the availability of tools for converting DICOM images and RT-Structures into other formats [@Rufenacht2023-as][@Anderson2021-fp], integrating auto-segmentation solutions using deep learning in clinical environments is rare due to the lack of open-source frameworks that handle DICOM RT-Structure sets effectively. Software packages like dcmrtstruct2nii, DicomRTTool [@Anderson2021-fp], and PyRaDiSe [@Rufenacht2023-as] provide necessary functionalities, while frameworks like TorchIO [@Perez-Garcia2021-jf] and MONAI [@Creators_The_MONAI_Consortium_undated-or] face limitations in processing DICOM RT-structure data. Research has shown that variations in mask generation methods affect patient clustering and radiomic-based modeling in multi-center studies [@Whybra2023-en]. -Despite the availability of tools for converting DICOM images and RT-Structures into other formats [@Rufenacht2023-as][@Anderson2021-fp], integrating auto-segmentation solutions using deep learning in clinical environments is rare due to the lack of open-source frameworks that handle DICOM RT-Structure sets effectively. Software packages like dcmrtstruct2nii, DicomRTTool [@Anderson2021-fp], and PyRaDiSe [@Rufenacht2023-as] provide necessary functionalities, while frameworks like TorchIO [@Perez-Garcia2021-jf] and MONAI [@Creators_The_MONAI_Consortium_undated-or] face limitations in processing DICOM RT-structure data. Research has shown that variations in mask generation methods affect patient clustering and radiomic-based modeling in multi-center studies [@Whybra2023-en]. - -RT-utils addresses this gap by offering a specialized Python library that enhances the efficiency of manipulating RT-Structures. It is designed for researchers and clinicians who require advanced yet user-friendly tools to: - - Convert and manipulate RT-Struct data with precision. - Integrate AI-generated segmentation masks into clinical DICOM formats. - Streamline workflows by automating repetitive and complex tasks. - Ensure compatibility with clinical systems through meticulous DICOM header management. - -By providing these capabilities, RT-utils optimizes workflows in medical imaging analysis, facilitating the translation of AI models from research to clinical practice. RT-utils offers advanced techniques to convert expert-provided contours and AI tool output masks to RT-struct format, making them suitable for clinical workflows. +RT-utils addresses this gap by offering a specialized Python library that enhances the efficiency of manipulating RT-Structures. It is designed for researchers and clinicians who require advanced yet user-friendly tools to: i) Convert and manipulate RT-Struct data with precision. ii) Integrate AI-generated segmentation masks into clinical DICOM formats. iii) Streamline workflows by automating repetitive and complex tasks. iv) Ensure compatibility with clinical systems through meticulous DICOM header management. By providing these capabilities, RT-utils optimizes workflows in medical imaging analysis, facilitating the translation of AI models from research to clinical practice. RT-utils offers advanced techniques to convert expert-provided contours and AI tool output masks to RT-struct format, making them suitable for clinical workflows. # Overview of RT-utils From cf3936ef7c8698a80ded7c7a3f9dd8f072252078 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 29 Nov 2024 20:07:01 -0800 Subject: [PATCH 39/41] Update paper.md --- Paper/paper.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Paper/paper.md b/Paper/paper.md index c47c54e..3bfac96 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -50,9 +50,7 @@ In the pursuit of automated and precise analysis of medical images using artific # Statement of need -The increasing adoption of AI-based methods for medical image analysis necessitates efficient tools for handling DICOM images and RT-Structures. While existing software packages provide basic functionalities for data conversion, they often lack advanced features required for seamless integration into clinical workflows. The growing need for automated and robust analysis of medical images has driven the adoption of AI-based methods that often use DICOM images and RT structures as masks. However, the effectiveness of these AI approaches can vary due to differences in data sources and conversion techniques [@Whybra2023-en][@Yousefirizi2023-ax][@Rufenacht2023-as]. Despite the availability of tools for converting DICOM images and RT-Structures into other formats [@Rufenacht2023-as][@Anderson2021-fp], integrating auto-segmentation solutions using deep learning in clinical environments is rare due to the lack of open-source frameworks that handle DICOM RT-Structure sets effectively. Software packages like dcmrtstruct2nii, DicomRTTool [@Anderson2021-fp], and PyRaDiSe [@Rufenacht2023-as] provide necessary functionalities, while frameworks like TorchIO [@Perez-Garcia2021-jf] and MONAI [@Creators_The_MONAI_Consortium_undated-or] face limitations in processing DICOM RT-structure data. Research has shown that variations in mask generation methods affect patient clustering and radiomic-based modeling in multi-center studies [@Whybra2023-en]. - -RT-utils addresses this gap by offering a specialized Python library that enhances the efficiency of manipulating RT-Structures. It is designed for researchers and clinicians who require advanced yet user-friendly tools to: i) Convert and manipulate RT-Struct data with precision. ii) Integrate AI-generated segmentation masks into clinical DICOM formats. iii) Streamline workflows by automating repetitive and complex tasks. iv) Ensure compatibility with clinical systems through meticulous DICOM header management. By providing these capabilities, RT-utils optimizes workflows in medical imaging analysis, facilitating the translation of AI models from research to clinical practice. RT-utils offers advanced techniques to convert expert-provided contours and AI tool output masks to RT-struct format, making them suitable for clinical workflows. +The increasing adoption of AI-based methods for medical image analysis necessitates efficient tools for handling DICOM images and RT-Structures. While existing software packages provide basic functionalities for data conversion, they often lack advanced features required for seamless integration into clinical workflows. The growing need for automated and robust analysis of medical images has driven the adoption of AI-based methods that often use DICOM images and RT structures as masks. However, the effectiveness of these AI approaches can vary due to differences in data sources and conversion techniques [@Whybra2023-en][@Yousefirizi2023-ax][@Rufenacht2023-as]. Despite the availability of tools for converting DICOM images and RT-Structures into other formats [@Rufenacht2023-as][@Anderson2021-fp], integrating auto-segmentation solutions using deep learning in clinical environments is rare due to the lack of open-source frameworks that handle DICOM RT-Structure sets effectively. Software packages like dcmrtstruct2nii, DicomRTTool [@Anderson2021-fp], and PyRaDiSe [@Rufenacht2023-as] provide necessary functionalities, while frameworks like TorchIO [@Perez-Garcia2021-jf] and MONAI [@Creators_The_MONAI_Consortium_undated-or] face limitations in processing DICOM RT-structure data. Research has shown that variations in mask generation methods affect patient clustering and radiomic-based modeling in multi-center studies [@Whybra2023-en]. RT-utils addresses this gap by offering a specialized Python library that enhances the efficiency of manipulating RT-Structures. It is designed for researchers and clinicians who require advanced yet user-friendly tools to: i) Convert and manipulate RT-Struct data with precision. ii) Integrate AI-generated segmentation masks into clinical DICOM formats. iii) Streamline workflows by automating repetitive and complex tasks. iv) Ensure compatibility with clinical systems through meticulous DICOM header management. By providing these capabilities, RT-utils optimizes workflows in medical imaging analysis, facilitating the translation of AI models from research to clinical practice. RT-utils offers advanced techniques to convert expert-provided contours and AI tool output masks to RT-struct format, making them suitable for clinical workflows. # Overview of RT-utils From 7b4b2c1463e49bd757ab7b78ba85856fd0ed9c6d Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 29 Nov 2024 20:22:05 -0800 Subject: [PATCH 40/41] Update paper.md --- Paper/paper.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Paper/paper.md b/Paper/paper.md index 3bfac96..36b340c 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -54,14 +54,14 @@ The increasing adoption of AI-based methods for medical image analysis necessita # Overview of RT-utils -Our module introduces intuitive techniques for efficient data curation of RT-Structure files, facilitating the identification of distinct region of interest (ROI) names and their corresponding locations within the structures. It adeptly handles scenarios where multiple ROI names correspond to the same structure, ensuring a comprehensive and accurate representation. Additionally, the module offers the conversion of DICOM images and RT-Struct into widely used formats such as NumPy arrays and SimpleITK Images. These standardized formats serve as optimal inputs for various applications, including deep learning models, image analysis, and radiomic feature calculations (extraction). Moreover, the toolkit simplifies the process of creating DICOM RT-Struct from predicted NumPy arrays, commonly the outputs of semantic segmentation deep learning models, providing a versatile solution for researchers and practitioners in medical imaging. +Our library introduces intuitive techniques for efficient data curation of RT-Structure files, facilitating the identification of distinct region of interest (ROI) names and their corresponding locations within the structures. It adeptly handles scenarios where multiple ROI names correspond to the same structure, ensuring a comprehensive and accurate representation. Additionally, the library offers the conversion of DICOM images and RT-Struct into widely used formats such as NumPy arrays and SimpleITK Images. These standardized formats serve as optimal inputs for various applications, including deep learning models, image analysis, and radiomic feature calculations (extraction). Moreover, the toolkit simplifies the process of creating DICOM RT-Struct from predicted NumPy arrays, commonly the outputs of semantic segmentation deep learning models, providing a versatile solution for researchers and practitioners in medical imaging. In the realm of data science, discretized image formats such as NIfTI, NRRD, and MHA are commonly employed, while radiotherapy workflows heavily rely on the DICOM format, specifically the DICOM RT-Struct. Unlike data science architectures like U-Net, which operate on grid-based data, handling the continuously spaced contour points present in RT-Struct poses a unique challenge. To bridge this gap, accurate data conversion between discrete and continuous spaces becomes crucial when working with clinical DICOM RT-Struct data. ## Technical Overview **RT-utils** streamlines RT-Structure file curation by identifying Regions of Interest (ROIs), handling multiple ROI names for the same structure, and converting DICOM RT-Struct and images into formats like NumPy arrays and SimpleITK images. These standardized outputs enable deep learning, image analysis, and radiomics applications. The toolkit also generates DICOM RT-Struct files from predicted arrays, bridging segmentation models and clinical workflows. -The module addresses challenges in converting between discretized image formats (e.g., NIfTI, MHA) and RT-Struct's contour-based format, leveraging geometric operations for accurate binary masks from contour points. +The library addresses challenges in converting between discretized image formats (e.g., NIfTI, MHA) and RT-Struct's contour-based format, leveraging geometric operations for accurate binary masks from contour points. Since its 2020 release, RT-utils has grown steadily, with its GitHub repository (*Starred >180 times*) and PyPI presence facilitating collaborative development. Installation is simple: `pip install RT-utils`. From 2d27d9906954927927b6e2b372866e503b2c4c74 Mon Sep 17 00:00:00 2001 From: Fereshteh Yousefirizi <84542058+qurit-frizi@users.noreply.github.com> Date: Fri, 29 Nov 2024 20:33:18 -0800 Subject: [PATCH 41/41] Update paper.md --- Paper/paper.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Paper/paper.md b/Paper/paper.md index 36b340c..043bf5a 100644 --- a/Paper/paper.md +++ b/Paper/paper.md @@ -63,8 +63,6 @@ In the realm of data science, discretized image formats such as NIfTI, NRRD, and The library addresses challenges in converting between discretized image formats (e.g., NIfTI, MHA) and RT-Struct's contour-based format, leveraging geometric operations for accurate binary masks from contour points. -Since its 2020 release, RT-utils has grown steadily, with its GitHub repository (*Starred >180 times*) and PyPI presence facilitating collaborative development. Installation is simple: `pip install RT-utils`. - ## Key Features - **ROI Handling:** Identify and manage ROIs, including scenarios where multiple names map to one structure.