z-rad 24.9.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- z_rad-24.9.1/LICENSE +21 -0
- z_rad-24.9.1/PKG-INFO +141 -0
- z_rad-24.9.1/README.md +118 -0
- z_rad-24.9.1/pyproject.toml +37 -0
- z_rad-24.9.1/zrad/__init__.py +1 -0
- z_rad-24.9.1/zrad/gui/__init__.py +0 -0
- z_rad-24.9.1/zrad/gui/_base_tab.py +420 -0
- z_rad-24.9.1/zrad/gui/filt_tab.py +698 -0
- z_rad-24.9.1/zrad/gui/prep_tab.py +473 -0
- z_rad-24.9.1/zrad/gui/rad_tab.py +654 -0
- z_rad-24.9.1/zrad/gui/toolbox_gui.py +180 -0
- z_rad-24.9.1/zrad/logic/__init__.py +2 -0
- z_rad-24.9.1/zrad/logic/exceptions.py +13 -0
- z_rad-24.9.1/zrad/logic/filtering.py +82 -0
- z_rad-24.9.1/zrad/logic/filtering_definitions.py +518 -0
- z_rad-24.9.1/zrad/logic/image.py +476 -0
- z_rad-24.9.1/zrad/logic/preprocessing.py +119 -0
- z_rad-24.9.1/zrad/logic/radiomics.py +724 -0
- z_rad-24.9.1/zrad/logic/radiomics_definitions.py +2409 -0
- z_rad-24.9.1/zrad/logic/toolbox_logic.py +182 -0
z_rad-24.9.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Z-Rad developers
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
z_rad-24.9.1/PKG-INFO
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: z-rad
|
|
3
|
+
Version: 24.9.1
|
|
4
|
+
Summary: Z-Rad is a radiomic feature extraction software with GUI and API.
|
|
5
|
+
Author: Radiomics Team of Radiation Oncology Department at University Hospital Zurich
|
|
6
|
+
Author-email: zrad@usz.ch
|
|
7
|
+
Requires-Python: >=3.12,<4.0
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
10
|
+
Requires-Dist: joblib (>=1.4.2,<2.0.0)
|
|
11
|
+
Requires-Dist: numpy (>=2.1.1,<3.0.0)
|
|
12
|
+
Requires-Dist: opencv-python-headless (>=4.10.0.84,<5.0.0.0)
|
|
13
|
+
Requires-Dist: openpyxl (>=3.1.5,<4.0.0)
|
|
14
|
+
Requires-Dist: pandas (>=2.2.2,<3.0.0)
|
|
15
|
+
Requires-Dist: pydicom (>=3.0.0,<4.0.0)
|
|
16
|
+
Requires-Dist: pyqt5 (>=5.15.11,<6.0.0)
|
|
17
|
+
Requires-Dist: pywavelets (>=1.7.0,<2.0.0)
|
|
18
|
+
Requires-Dist: scikit-image (>=0.24.0,<0.25.0)
|
|
19
|
+
Requires-Dist: scikit-learn (>=1.5.2,<2.0.0)
|
|
20
|
+
Requires-Dist: scipy (>=1.14.1,<2.0.0)
|
|
21
|
+
Requires-Dist: simpleitk (>=2.4.0,<3.0.0)
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
|
|
24
|
+
# Z-RAD
|
|
25
|
+
|
|
26
|
+
<img src="https://raw.githubusercontent.com/radiomics-usz/z-rad/master/doc/logos/ZRadLogo.jpg" width="600" alt="Z-Rad logo"/>
|
|
27
|
+
|
|
28
|
+
Radiomics is the high-throughput extraction of quantitative features from medical images,
|
|
29
|
+
revolutionizing personalized medicine and enhancing clinical decision-making.
|
|
30
|
+
Despite its potential, radiomics faces several challenges, including the need for programming skills
|
|
31
|
+
and lack of standardization.
|
|
32
|
+
|
|
33
|
+
**Z-Rad (Zurich Radiomics)**, developed by the Radiation Oncology Department at the University Hospital Zurich,
|
|
34
|
+
addresses these issues by offering a user-friendly, IBSI-compliant, and open-source solution for radiomics analysis.
|
|
35
|
+
|
|
36
|
+
## Z-Rad Features
|
|
37
|
+
|
|
38
|
+
### User-Friendly Interface
|
|
39
|
+
- **Graphical User Interface (GUI)**: Designed for medical professionals with no programming skills.
|
|
40
|
+
- **Application Programming Interface (API)**: Allows researchers to customize, automate, and extend Z-Rad functionalities using Python.
|
|
41
|
+
|
|
42
|
+
### Compatibility
|
|
43
|
+
- **Medical Data Formats**: Supports CT, PET, and MR imaging modalities in both DICOM and NIfTI formats.
|
|
44
|
+
- **Operating Systems**: Windows, macOS, and Linux.
|
|
45
|
+
|
|
46
|
+
### Standard Compliance
|
|
47
|
+
- **IBSI Compliance**: Adheres to [IBSI I](https://arxiv.org/abs/1612.07003) and [IBSI II](https://arxiv.org/abs/2006.05470) standards for reproducible and comparable radiomics features.
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## Software Architecture and Design
|
|
51
|
+
|
|
52
|
+
### Backend
|
|
53
|
+
- **Programming Language**: Python.
|
|
54
|
+
- **Dependencies**:
|
|
55
|
+
- Joblib
|
|
56
|
+
- NumPy
|
|
57
|
+
- OpenCV
|
|
58
|
+
- OpenPyXL
|
|
59
|
+
- Pandas
|
|
60
|
+
- PyDicom
|
|
61
|
+
- PyQt5
|
|
62
|
+
- PyWavelets
|
|
63
|
+
- Scikit-image
|
|
64
|
+
- Scikit-learn
|
|
65
|
+
- SciPy
|
|
66
|
+
- SimpleITK
|
|
67
|
+
|
|
68
|
+
### Radiomics Extraction Pathways
|
|
69
|
+
<img src="https://raw.githubusercontent.com/radiomics-usz/z-rad/master/doc/images/ZRadExtractionPathways.png" width="600" alt="Z-Rad Pathways"/>
|
|
70
|
+
|
|
71
|
+
## Graphical User Interface (GUI) and Application Programming Interface (API)
|
|
72
|
+
|
|
73
|
+
Both GUI and API are structured into three primary classes: **Resampling**, **Filtering**, and **Radiomics**:
|
|
74
|
+
|
|
75
|
+
### Resampling
|
|
76
|
+
Z-Rad supports image resampling alone, alongside regions of interest (ROI) masks, or converting DICOM files to NIfTI
|
|
77
|
+
images and masks without resampling. Resampling can be performed in 3D or 2D (axial slice-wise), with nearest
|
|
78
|
+
neighbors, linear, B-spline, and Gaussian strategies.
|
|
79
|
+
|
|
80
|
+
### Filtering
|
|
81
|
+
This tab requires users to define the desired filter settings.
|
|
82
|
+
The current version of Z-Rad supports mean, Laplace of Gaussian, Laws kernels,
|
|
83
|
+
and wavelet (Daubechies 2, Daubechies 3, first-order Coiflet, and Haar) filters.
|
|
84
|
+
|
|
85
|
+
### Radiomics Feature Extraction
|
|
86
|
+
Parameters for radiomics feature extraction include the intensity re-segmentation
|
|
87
|
+
(e.g., HU for CT or SUV for PET within ROIs) and intensity outlier filtering,
|
|
88
|
+
discretisation strategies, and a variety of radiomics feature aggregation methods covering 2D, 2.5D, and 3D options.
|
|
89
|
+
Radiomic features include shape, intensity, grey level co-occurrence matrix (GLCM),
|
|
90
|
+
grey level run length matrix (GLRLM), grey level distance zone matrix (GLDZM),
|
|
91
|
+
neighbouring gray tone difference matrix (NGTDM),
|
|
92
|
+
and neighbouring gray level dependance matrix (NGLDM) features families.
|
|
93
|
+
|
|
94
|
+
## Error and Warning Handling
|
|
95
|
+
|
|
96
|
+
- **GUI**: Uses warning pop-up messages for immediate feedback.
|
|
97
|
+
- **API**: Records processes in log files for comprehensive documentation.
|
|
98
|
+
|
|
99
|
+
## Installation and Get Started
|
|
100
|
+
|
|
101
|
+
### Windows executable file:
|
|
102
|
+
The simplest way to run Z-Rad on Windows is to start the `main.exe` attached to every Z-Rad release.
|
|
103
|
+
|
|
104
|
+
An executable can be also generated from the source files by running
|
|
105
|
+
```sh
|
|
106
|
+
python generate_executable.py
|
|
107
|
+
```
|
|
108
|
+
Creating an executable requires [PyInstaller](https://pyinstaller.readthedocs.io).
|
|
109
|
+
The executable is going to be saved in *dist/* directory.
|
|
110
|
+
|
|
111
|
+
### Windows, Linux, and macOS
|
|
112
|
+
For users familiar with Python programming langauage, we recommend:
|
|
113
|
+
|
|
114
|
+
1. Download the Z-Rad repository
|
|
115
|
+
2. Open the terminal and navigate to the project directory
|
|
116
|
+
3. Install requirements by typing in the terminal:
|
|
117
|
+
|
|
118
|
+
```sh
|
|
119
|
+
pip install -r requirements.txt
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
4. Run the `main.py` file:
|
|
123
|
+
|
|
124
|
+
```sh
|
|
125
|
+
python main.py
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### API
|
|
129
|
+
```sh
|
|
130
|
+
pip install z-rad
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## License
|
|
134
|
+
|
|
135
|
+
Z-Rad is an open-source project licensed under the MIT License.
|
|
136
|
+
|
|
137
|
+
## Contact
|
|
138
|
+
|
|
139
|
+
For any questions or feedback, please contact us at [zrad@usz.ch](mailto:zrad@usz.ch).
|
|
140
|
+
|
|
141
|
+
---
|
z_rad-24.9.1/README.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Z-RAD
|
|
2
|
+
|
|
3
|
+
<img src="https://raw.githubusercontent.com/radiomics-usz/z-rad/master/doc/logos/ZRadLogo.jpg" width="600" alt="Z-Rad logo"/>
|
|
4
|
+
|
|
5
|
+
Radiomics is the high-throughput extraction of quantitative features from medical images,
|
|
6
|
+
revolutionizing personalized medicine and enhancing clinical decision-making.
|
|
7
|
+
Despite its potential, radiomics faces several challenges, including the need for programming skills
|
|
8
|
+
and lack of standardization.
|
|
9
|
+
|
|
10
|
+
**Z-Rad (Zurich Radiomics)**, developed by the Radiation Oncology Department at the University Hospital Zurich,
|
|
11
|
+
addresses these issues by offering a user-friendly, IBSI-compliant, and open-source solution for radiomics analysis.
|
|
12
|
+
|
|
13
|
+
## Z-Rad Features
|
|
14
|
+
|
|
15
|
+
### User-Friendly Interface
|
|
16
|
+
- **Graphical User Interface (GUI)**: Designed for medical professionals with no programming skills.
|
|
17
|
+
- **Application Programming Interface (API)**: Allows researchers to customize, automate, and extend Z-Rad functionalities using Python.
|
|
18
|
+
|
|
19
|
+
### Compatibility
|
|
20
|
+
- **Medical Data Formats**: Supports CT, PET, and MR imaging modalities in both DICOM and NIfTI formats.
|
|
21
|
+
- **Operating Systems**: Windows, macOS, and Linux.
|
|
22
|
+
|
|
23
|
+
### Standard Compliance
|
|
24
|
+
- **IBSI Compliance**: Adheres to [IBSI I](https://arxiv.org/abs/1612.07003) and [IBSI II](https://arxiv.org/abs/2006.05470) standards for reproducible and comparable radiomics features.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## Software Architecture and Design
|
|
28
|
+
|
|
29
|
+
### Backend
|
|
30
|
+
- **Programming Language**: Python.
|
|
31
|
+
- **Dependencies**:
|
|
32
|
+
- Joblib
|
|
33
|
+
- NumPy
|
|
34
|
+
- OpenCV
|
|
35
|
+
- OpenPyXL
|
|
36
|
+
- Pandas
|
|
37
|
+
- PyDicom
|
|
38
|
+
- PyQt5
|
|
39
|
+
- PyWavelets
|
|
40
|
+
- Scikit-image
|
|
41
|
+
- Scikit-learn
|
|
42
|
+
- SciPy
|
|
43
|
+
- SimpleITK
|
|
44
|
+
|
|
45
|
+
### Radiomics Extraction Pathways
|
|
46
|
+
<img src="https://raw.githubusercontent.com/radiomics-usz/z-rad/master/doc/images/ZRadExtractionPathways.png" width="600" alt="Z-Rad Pathways"/>
|
|
47
|
+
|
|
48
|
+
## Graphical User Interface (GUI) and Application Programming Interface (API)
|
|
49
|
+
|
|
50
|
+
Both GUI and API are structured into three primary classes: **Resampling**, **Filtering**, and **Radiomics**:
|
|
51
|
+
|
|
52
|
+
### Resampling
|
|
53
|
+
Z-Rad supports image resampling alone, alongside regions of interest (ROI) masks, or converting DICOM files to NIfTI
|
|
54
|
+
images and masks without resampling. Resampling can be performed in 3D or 2D (axial slice-wise), with nearest
|
|
55
|
+
neighbors, linear, B-spline, and Gaussian strategies.
|
|
56
|
+
|
|
57
|
+
### Filtering
|
|
58
|
+
This tab requires users to define the desired filter settings.
|
|
59
|
+
The current version of Z-Rad supports mean, Laplace of Gaussian, Laws kernels,
|
|
60
|
+
and wavelet (Daubechies 2, Daubechies 3, first-order Coiflet, and Haar) filters.
|
|
61
|
+
|
|
62
|
+
### Radiomics Feature Extraction
|
|
63
|
+
Parameters for radiomics feature extraction include the intensity re-segmentation
|
|
64
|
+
(e.g., HU for CT or SUV for PET within ROIs) and intensity outlier filtering,
|
|
65
|
+
discretisation strategies, and a variety of radiomics feature aggregation methods covering 2D, 2.5D, and 3D options.
|
|
66
|
+
Radiomic features include shape, intensity, grey level co-occurrence matrix (GLCM),
|
|
67
|
+
grey level run length matrix (GLRLM), grey level distance zone matrix (GLDZM),
|
|
68
|
+
neighbouring gray tone difference matrix (NGTDM),
|
|
69
|
+
and neighbouring gray level dependance matrix (NGLDM) features families.
|
|
70
|
+
|
|
71
|
+
## Error and Warning Handling
|
|
72
|
+
|
|
73
|
+
- **GUI**: Uses warning pop-up messages for immediate feedback.
|
|
74
|
+
- **API**: Records processes in log files for comprehensive documentation.
|
|
75
|
+
|
|
76
|
+
## Installation and Get Started
|
|
77
|
+
|
|
78
|
+
### Windows executable file:
|
|
79
|
+
The simplest way to run Z-Rad on Windows is to start the `main.exe` attached to every Z-Rad release.
|
|
80
|
+
|
|
81
|
+
An executable can be also generated from the source files by running
|
|
82
|
+
```sh
|
|
83
|
+
python generate_executable.py
|
|
84
|
+
```
|
|
85
|
+
Creating an executable requires [PyInstaller](https://pyinstaller.readthedocs.io).
|
|
86
|
+
The executable is going to be saved in *dist/* directory.
|
|
87
|
+
|
|
88
|
+
### Windows, Linux, and macOS
|
|
89
|
+
For users familiar with Python programming langauage, we recommend:
|
|
90
|
+
|
|
91
|
+
1. Download the Z-Rad repository
|
|
92
|
+
2. Open the terminal and navigate to the project directory
|
|
93
|
+
3. Install requirements by typing in the terminal:
|
|
94
|
+
|
|
95
|
+
```sh
|
|
96
|
+
pip install -r requirements.txt
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
4. Run the `main.py` file:
|
|
100
|
+
|
|
101
|
+
```sh
|
|
102
|
+
python main.py
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### API
|
|
106
|
+
```sh
|
|
107
|
+
pip install z-rad
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## License
|
|
111
|
+
|
|
112
|
+
Z-Rad is an open-source project licensed under the MIT License.
|
|
113
|
+
|
|
114
|
+
## Contact
|
|
115
|
+
|
|
116
|
+
For any questions or feedback, please contact us at [zrad@usz.ch](mailto:zrad@usz.ch).
|
|
117
|
+
|
|
118
|
+
---
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
[tool.poetry]
|
|
2
|
+
name = "z-rad"
|
|
3
|
+
version = "24.9.1"
|
|
4
|
+
description = "Z-Rad is a radiomic feature extraction software with GUI and API."
|
|
5
|
+
authors = ["Radiomics Team of Radiation Oncology Department at University Hospital Zurich <zrad@usz.ch>"]
|
|
6
|
+
readme = "README.md"
|
|
7
|
+
|
|
8
|
+
packages = [
|
|
9
|
+
{ include = "zrad" }
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
[tool.poetry.dependencies]
|
|
13
|
+
python = "^3.12"
|
|
14
|
+
pydicom = "^3.0.0"
|
|
15
|
+
pyqt5 = "^5.15.11"
|
|
16
|
+
numpy = "^2.1.1"
|
|
17
|
+
pandas = "^2.2.2"
|
|
18
|
+
simpleitk = "^2.4.0"
|
|
19
|
+
scipy = "^1.14.1"
|
|
20
|
+
pywavelets = "^1.7.0"
|
|
21
|
+
openpyxl = "^3.1.5"
|
|
22
|
+
scikit-image = "^0.24.0"
|
|
23
|
+
scikit-learn = "^1.5.2"
|
|
24
|
+
opencv-python-headless = "^4.10.0.84"
|
|
25
|
+
joblib = "^1.4.2"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
[build-system]
|
|
29
|
+
requires = ["poetry-core", "poetry-dynamic-versioning"]
|
|
30
|
+
build-backend = "poetry_dynamic_versioning.backend"
|
|
31
|
+
|
|
32
|
+
[tool.poetry-dynamic-versioning]
|
|
33
|
+
enable = false
|
|
34
|
+
|
|
35
|
+
[tool.poetry-dynamic-versioning.from-file]
|
|
36
|
+
source = "zrad/__init__.py"
|
|
37
|
+
pattern = "^__version__ = [\"'](?P<version>.+?)[\"']$"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "24.9.1"
|
|
File without changes
|