mediml 0.9.9__tar.gz → 0.9.10__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.
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/__init__.py +1 -1
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/wrangling/DataManager.py +40 -13
- {mediml-0.9.9 → mediml-0.9.10}/PKG-INFO +11 -10
- {mediml-0.9.9 → mediml-0.9.10}/README.md +6 -6
- {mediml-0.9.9 → mediml-0.9.10}/pyproject.toml +1 -1
- mediml-0.9.9/setup.py +0 -67
- {mediml-0.9.9 → mediml-0.9.10}/LICENSE.md +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/MEDscan.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/BatchExtractor.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/BatchExtractorTexturalFilters.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/__init__.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/diagnostics.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/get_oriented_bound_box.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/glcm.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/gldzm.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/glrlm.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/glszm.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/int_vol_hist.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/intensity_histogram.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/local_intensity.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/morph.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/ngldm.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/ngtdm.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/stats.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/biomarkers/utils.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/filters/TexturalFilter.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/filters/__init__.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/filters/apply_filter.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/filters/gabor.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/filters/laws.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/filters/log.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/filters/mean.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/filters/textural_filters_kernels.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/filters/utils.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/filters/wavelet.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/learning/DataCleaner.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/learning/DesignExperiment.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/learning/FSR.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/learning/Normalization.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/learning/RadiomicsLearner.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/learning/Results.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/learning/Stats.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/learning/__init__.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/learning/cleaning_utils.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/learning/ml_utils.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/processing/__init__.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/processing/compute_suv_map.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/processing/discretisation.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/processing/interpolation.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/processing/resegmentation.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/processing/segmentation.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/__init__.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/batch_patients.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/create_radiomics_table.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/data_frame_export.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/find_process_names.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/get_file_paths.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/get_full_rad_names.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/get_institutions_from_ids.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/get_patient_id_from_scan_name.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/get_patient_names.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/get_radiomic_names.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/get_scan_name_from_rad_name.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/image_reader_SITK.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/image_volume_obj.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/imref.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/initialize_features_names.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/inpolygon.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/interp3.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/json_utils.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/mode.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/parse_contour_string.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/save_MEDscan.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/strfind.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/textureTools.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/texture_features_names.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/utils/write_radiomics_csv.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/wrangling/ProcessDICOM.py +0 -0
- {mediml-0.9.9 → mediml-0.9.10}/MEDiml/wrangling/__init__.py +0 -0
|
@@ -14,7 +14,7 @@ stream_handler.setLevel(logging.WARNING)
|
|
|
14
14
|
logging.getLogger(__name__).addHandler(stream_handler)
|
|
15
15
|
|
|
16
16
|
__author__ = "MEDomicsLab consortium"
|
|
17
|
-
__version__ = "0.9.
|
|
17
|
+
__version__ = "0.9.10"
|
|
18
18
|
__copyright__ = "Copyright (C) MEDomicsLab consortium"
|
|
19
19
|
__license__ = "GNU General Public License 3.0"
|
|
20
20
|
__maintainer__ = "MAHDI AIT LHAJ LOUTFI"
|
|
@@ -432,17 +432,7 @@ class DataManager(object):
|
|
|
432
432
|
Returns:
|
|
433
433
|
MEDscan: Returns a MEDscan instance with updated roi attributes.
|
|
434
434
|
"""
|
|
435
|
-
|
|
436
|
-
roi_index = 0
|
|
437
|
-
|
|
438
|
-
if not path_roi_data:
|
|
439
|
-
if not self.paths._path_to_niftis:
|
|
440
|
-
raise ValueError("The path to the niftis is not defined")
|
|
441
|
-
else:
|
|
442
|
-
path_roi_data = self.paths._path_to_niftis
|
|
443
|
-
|
|
444
|
-
for file in path_roi_data.glob('*.nii.gz'):
|
|
445
|
-
_id = image_file.name.split("(")[0] # id is PatientID__ImagingScanName
|
|
435
|
+
def load_mask(_id, file, medscan):
|
|
446
436
|
# Load the patient's ROI nifti files:
|
|
447
437
|
if file.name.startswith(_id) and 'ROI' in file.name.split("."):
|
|
448
438
|
roi = nib.load(file)
|
|
@@ -452,8 +442,27 @@ class DataManager(object):
|
|
|
452
442
|
name_set = file.name[file.name.find("_") + 2 : file.name.find("(")]
|
|
453
443
|
medscan.data.ROI.update_indexes(key=roi_index, indexes=np.nonzero(roi_data.flatten()))
|
|
454
444
|
medscan.data.ROI.update_name_set(key=roi_index, name_set=name_set)
|
|
455
|
-
medscan.data.ROI.update_roi_name(key=roi_index, roi_name=roi_name)
|
|
445
|
+
medscan.data.ROI.update_roi_name(key=roi_index, roi_name=roi_name)
|
|
446
|
+
else:
|
|
447
|
+
raise ValueError(f"The ROI file for patient ID: {_id} "
|
|
448
|
+
f"was not found in the given path: {file} or was not correctly named.")
|
|
449
|
+
|
|
450
|
+
image_file = Path(image_file)
|
|
451
|
+
roi_index = 0
|
|
452
|
+
if not path_roi_data:
|
|
453
|
+
if not self.paths._path_to_niftis:
|
|
454
|
+
raise ValueError("The path to the niftis is not defined")
|
|
455
|
+
else:
|
|
456
|
+
path_roi_data = self.paths._path_to_niftis
|
|
457
|
+
|
|
458
|
+
for file in self.__nifti.stack_path_roi:
|
|
459
|
+
_id = image_file.name.split("(")[0] if ("(") in image_file.name else image_file.name # id is PatientID__ImagingScanName
|
|
460
|
+
load_mask(_id, file, medscan)
|
|
456
461
|
roi_index += 1
|
|
462
|
+
else:
|
|
463
|
+
_id = image_file.name.split("(")[0] if ("(") in image_file.name else image_file.name # id is PatientID__ImagingScanName
|
|
464
|
+
load_mask(_id, path_roi_data, medscan)
|
|
465
|
+
|
|
457
466
|
return medscan
|
|
458
467
|
|
|
459
468
|
def __associate_spatialRef(self, nifti_file: Union[Path, str], medscan: MEDscan) -> MEDscan:
|
|
@@ -567,7 +576,7 @@ class DataManager(object):
|
|
|
567
576
|
medscan = MEDscan()
|
|
568
577
|
medscan.patientID = os.path.basename(file).split("_")[0]
|
|
569
578
|
medscan.type = os.path.basename(file).split(".")[-3]
|
|
570
|
-
medscan.series_description = file.name[file.name.find('__') + 2: file.name.find('(')]
|
|
579
|
+
medscan.series_description = file.name[file.name.find('__') + 2: file.name.find('(')] if '__' in file.name else ""
|
|
571
580
|
medscan.format = "nifti"
|
|
572
581
|
medscan.data.set_orientation(orientation="Axial")
|
|
573
582
|
medscan.data.set_patient_position(patient_position="HFS")
|
|
@@ -625,6 +634,24 @@ class DataManager(object):
|
|
|
625
634
|
if list_instances:
|
|
626
635
|
return list_instances
|
|
627
636
|
|
|
637
|
+
def process_one_nifti(self, path_image: Union[Path, str], path_mask: Union[Path, str]) -> MEDscan:
|
|
638
|
+
"""Processes one NIfTI file to create a MEDscan class instance.
|
|
639
|
+
|
|
640
|
+
Args:
|
|
641
|
+
nifti_file (Union[Path, str]): Path to the NIfTI file.
|
|
642
|
+
path_data (Union[Path, str]): Path to the data.
|
|
643
|
+
|
|
644
|
+
Returns:
|
|
645
|
+
MEDscan: MEDscan class instance.
|
|
646
|
+
"""
|
|
647
|
+
medscan = self.__process_one_nifti(path_image, path_mask)
|
|
648
|
+
|
|
649
|
+
# SAVE MEDscan INSTANCE
|
|
650
|
+
if self.save and self.paths._path_save:
|
|
651
|
+
save_MEDscan(medscan, self.paths._path_save)
|
|
652
|
+
|
|
653
|
+
return medscan
|
|
654
|
+
|
|
628
655
|
def update_from_csv(self, path_csv: Union[str, Path] = None) -> None:
|
|
629
656
|
"""Updates the class from a given CSV and summarizes the processed scans again according to it.
|
|
630
657
|
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: mediml
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.10
|
|
4
4
|
Summary: MEDiml is a Python package for processing and extracting features from medical images
|
|
5
|
-
Home-page: https://mediml.app/
|
|
6
5
|
License: GPL-3.0
|
|
6
|
+
License-File: LICENSE.md
|
|
7
7
|
Keywords: python,ibsi,medical-imaging,cancer-imaging-research,radiomics,medical-image-analysis,features-extraction,radiomics-extraction,radiomics-features,radiomics-analysis
|
|
8
8
|
Author: MEDomics Consortium
|
|
9
9
|
Author-email: medomics.info@gmail.com
|
|
10
10
|
Requires-Python: >=3.8.0,<=3.10
|
|
11
11
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.8
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
16
|
Requires-Dist: Pillow
|
|
17
17
|
Requires-Dist: PyWavelets
|
|
18
18
|
Requires-Dist: SimpleITK
|
|
@@ -47,6 +47,7 @@ Requires-Dist: wget
|
|
|
47
47
|
Requires-Dist: xgboost
|
|
48
48
|
Project-URL: Bug Tracker, https://github.com/MEDomicsLab/MEDiml/issues
|
|
49
49
|
Project-URL: Documentation, https://mediml.readthedocs.io/
|
|
50
|
+
Project-URL: Homepage, https://mediml.app/
|
|
50
51
|
Project-URL: Repository, https://github.com/MEDomicsLab/MEDiml/
|
|
51
52
|
Description-Content-Type: text/markdown
|
|
52
53
|
|
|
@@ -59,7 +60,7 @@ Description-Content-Type: text/markdown
|
|
|
59
60
|
[](https://github.com/MEDomicsLab/MEDiml/actions/workflows/python-app.yml)
|
|
60
61
|
[](https://mediml.readthedocs.io/en/latest/?badge=latest)
|
|
61
62
|
[](LICENSE)
|
|
62
|
-
[](https://colab.research.google.com/github/
|
|
63
|
+
[](https://colab.research.google.com/github/MEDomicsLab/MEDiml/blob/main/notebooks/tutorial/DataManager-Tutorial.ipynb)
|
|
63
64
|
|
|
64
65
|
</div>
|
|
65
66
|
|
|
@@ -79,7 +80,7 @@ Description-Content-Type: text/markdown
|
|
|
79
80
|
## 1. Introduction
|
|
80
81
|
MEDiml is an open-source Python package that can be used for processing multi-modal medical images (MRI, CT or PET) and for extracting their radiomic features. This package is meant to facilitate the processing of medical images and the subsequent computation of all types of radiomic features while maintaining the reproducibility of analyses. This package has been standardized with the [IBSI](https://theibsi.github.io/) norms.
|
|
81
82
|
|
|
82
|
-

|
|
83
84
|
|
|
84
85
|
|
|
85
86
|
## 2. Installation
|
|
@@ -159,14 +160,14 @@ The image biomarker standardization initiative ([IBSI](https://theibsi.github.io
|
|
|
159
160
|
- ### IBSI Chapter 1
|
|
160
161
|
[The IBSI chapter 1](https://theibsi.github.io/ibsi1/) is dedicated to the standardization of commonly used radiomic features. It was initiated in September 2016 and reached completion in March 2020. We have created two [jupyter notebooks](https://github.com/MEDomicsLab/MEDiml/tree/main/notebooks/ibsi) for each phase of the chapter and made them available for the users to run the IBSI tests for themselves. The tests can also be explored in interactive Colab notebooks that are directly accessible here:
|
|
161
162
|
|
|
162
|
-
- **Phase 1**: [](https://colab.research.google.com/github/
|
|
163
|
-
- **Phase 2**: [](https://colab.research.google.com/github/
|
|
163
|
+
- **Phase 1**: [](https://colab.research.google.com/github/MEDomicsLab/MEDiml/blob/main/notebooks/ibsi/ibsi1p1.ipynb)
|
|
164
|
+
- **Phase 2**: [](https://colab.research.google.com/github/MEDomicsLab/MEDiml/blob/main/notebooks/ibsi/ibsi1p2.ipynb)
|
|
164
165
|
|
|
165
166
|
- ### IBSI Chapter 2
|
|
166
167
|
[The IBSI chapter 2](https://theibsi.github.io/ibsi2/) was launched in June 2020 and reached completion in February 2024. It is dedicated to the standardization of commonly used imaging filters in radiomic studies. We have created two [jupyter notebooks](https://github.com/MEDomicsLab/MEDiml/tree/main/notebooks/ibsi) for each phase of the chapter and made them available for the users to run the IBSI tests for themselves and validate image filtering and image biomarker calculations from filter response maps. The tests can also be explored in interactive Colab notebooks that are directly accessible here:
|
|
167
168
|
|
|
168
|
-
- **Phase 1**: [](https://colab.research.google.com/github/
|
|
169
|
-
- **Phase 2**: [](https://colab.research.google.com/github/
|
|
169
|
+
- **Phase 1**: [](https://colab.research.google.com/github/MEDomicsLab/MEDiml/blob/main/notebooks/ibsi/ibsi2p1.ipynb)
|
|
170
|
+
- **Phase 2**: [](https://colab.research.google.com/github/MEDomicsLab/MEDiml/blob/main/notebooks/ibsi/ibsi2p2.ipynb)
|
|
170
171
|
|
|
171
172
|
Our team at *UdeS* (a.k.a. Université de Sherbrooke) has already submitted the benchmarked values to the [IBSI uploading website](https://ibsi.radiomics.hevs.ch/).
|
|
172
173
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](https://github.com/MEDomicsLab/MEDiml/actions/workflows/python-app.yml)
|
|
8
8
|
[](https://mediml.readthedocs.io/en/latest/?badge=latest)
|
|
9
9
|
[](LICENSE)
|
|
10
|
-
[](https://colab.research.google.com/github/
|
|
10
|
+
[](https://colab.research.google.com/github/MEDomicsLab/MEDiml/blob/main/notebooks/tutorial/DataManager-Tutorial.ipynb)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
## 1. Introduction
|
|
28
28
|
MEDiml is an open-source Python package that can be used for processing multi-modal medical images (MRI, CT or PET) and for extracting their radiomic features. This package is meant to facilitate the processing of medical images and the subsequent computation of all types of radiomic features while maintaining the reproducibility of analyses. This package has been standardized with the [IBSI](https://theibsi.github.io/) norms.
|
|
29
29
|
|
|
30
|
-

|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
## 2. Installation
|
|
@@ -107,14 +107,14 @@ The image biomarker standardization initiative ([IBSI](https://theibsi.github.io
|
|
|
107
107
|
- ### IBSI Chapter 1
|
|
108
108
|
[The IBSI chapter 1](https://theibsi.github.io/ibsi1/) is dedicated to the standardization of commonly used radiomic features. It was initiated in September 2016 and reached completion in March 2020. We have created two [jupyter notebooks](https://github.com/MEDomicsLab/MEDiml/tree/main/notebooks/ibsi) for each phase of the chapter and made them available for the users to run the IBSI tests for themselves. The tests can also be explored in interactive Colab notebooks that are directly accessible here:
|
|
109
109
|
|
|
110
|
-
- **Phase 1**: [](https://colab.research.google.com/github/
|
|
111
|
-
- **Phase 2**: [](https://colab.research.google.com/github/
|
|
110
|
+
- **Phase 1**: [](https://colab.research.google.com/github/MEDomicsLab/MEDiml/blob/main/notebooks/ibsi/ibsi1p1.ipynb)
|
|
111
|
+
- **Phase 2**: [](https://colab.research.google.com/github/MEDomicsLab/MEDiml/blob/main/notebooks/ibsi/ibsi1p2.ipynb)
|
|
112
112
|
|
|
113
113
|
- ### IBSI Chapter 2
|
|
114
114
|
[The IBSI chapter 2](https://theibsi.github.io/ibsi2/) was launched in June 2020 and reached completion in February 2024. It is dedicated to the standardization of commonly used imaging filters in radiomic studies. We have created two [jupyter notebooks](https://github.com/MEDomicsLab/MEDiml/tree/main/notebooks/ibsi) for each phase of the chapter and made them available for the users to run the IBSI tests for themselves and validate image filtering and image biomarker calculations from filter response maps. The tests can also be explored in interactive Colab notebooks that are directly accessible here:
|
|
115
115
|
|
|
116
|
-
- **Phase 1**: [](https://colab.research.google.com/github/
|
|
117
|
-
- **Phase 2**: [](https://colab.research.google.com/github/
|
|
116
|
+
- **Phase 1**: [](https://colab.research.google.com/github/MEDomicsLab/MEDiml/blob/main/notebooks/ibsi/ibsi2p1.ipynb)
|
|
117
|
+
- **Phase 2**: [](https://colab.research.google.com/github/MEDomicsLab/MEDiml/blob/main/notebooks/ibsi/ibsi2p2.ipynb)
|
|
118
118
|
|
|
119
119
|
Our team at *UdeS* (a.k.a. Université de Sherbrooke) has already submitted the benchmarked values to the [IBSI uploading website](https://ibsi.radiomics.hevs.ch/).
|
|
120
120
|
|
mediml-0.9.9/setup.py
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
from setuptools import setup
|
|
3
|
-
|
|
4
|
-
packages = \
|
|
5
|
-
['mediml',
|
|
6
|
-
'mediml.biomarkers',
|
|
7
|
-
'mediml.filters',
|
|
8
|
-
'mediml.learning',
|
|
9
|
-
'mediml.processing',
|
|
10
|
-
'mediml.utils',
|
|
11
|
-
'mediml.wrangling']
|
|
12
|
-
|
|
13
|
-
package_data = \
|
|
14
|
-
{'': ['*']}
|
|
15
|
-
|
|
16
|
-
install_requires = \
|
|
17
|
-
['Pillow',
|
|
18
|
-
'PyWavelets',
|
|
19
|
-
'SimpleITK',
|
|
20
|
-
'Sphinx',
|
|
21
|
-
'ipykernel',
|
|
22
|
-
'ipywidgets',
|
|
23
|
-
'isort',
|
|
24
|
-
'jupyter',
|
|
25
|
-
'matplotlib',
|
|
26
|
-
'networkx',
|
|
27
|
-
'neuroCombat',
|
|
28
|
-
'nibabel',
|
|
29
|
-
'nilearn',
|
|
30
|
-
'numpy',
|
|
31
|
-
'numpyencoder',
|
|
32
|
-
'pandas<2.0.0',
|
|
33
|
-
'protobuf',
|
|
34
|
-
'pycaret',
|
|
35
|
-
'pydicom',
|
|
36
|
-
'ray[default]',
|
|
37
|
-
'scikit_image',
|
|
38
|
-
'scikit_learn',
|
|
39
|
-
'scipy',
|
|
40
|
-
'seaborn',
|
|
41
|
-
'setuptools',
|
|
42
|
-
'sphinx-carousel==1.2.0',
|
|
43
|
-
'sphinx-jsonschema==1.19.1',
|
|
44
|
-
'sphinx-rtd-dark-mode==1.2.4',
|
|
45
|
-
'tabulate',
|
|
46
|
-
'tqdm',
|
|
47
|
-
'wget',
|
|
48
|
-
'xgboost']
|
|
49
|
-
|
|
50
|
-
setup_kwargs = {
|
|
51
|
-
'name': 'mediml',
|
|
52
|
-
'version': '0.9.9',
|
|
53
|
-
'description': 'MEDiml is a Python package for processing and extracting features from medical images',
|
|
54
|
-
'long_description': '<div align="center">\n\n<img src="https://github.com/MEDomicsLab/MEDiml/blob/main/docs/figures/MEDimlLogo150.png?raw=true" style="width:150px;"/>\n\n[](https://www.python.org/downloads/release/python-380/)\n[](https://pypi.org/project/medimage-pkg/)\n[](https://github.com/MEDomicsLab/MEDiml/actions/workflows/python-app.yml)\n[](https://mediml.readthedocs.io/en/latest/?badge=latest)\n[](LICENSE)\n[](https://colab.research.google.com/github/MahdiAll99/MEDimage/blob/main/notebooks/tutorial/DataManager-Tutorial.ipynb)\n\n</div>\n\n## Table of Contents\n * [1. Introduction](#1-introduction)\n * [2. Installation](#2-installation)\n * [3. Generating the documentation locally](#3-generating-the-documentation-locally)\n * [4. A simple example](#4-a-simple-example)\n * [5. Tutorials](#5-tutorials)\n * [6. IBSI Standardization](#6-ibsi-standardization)\n * [IBSI Chapter 1](#ibsi-chapter-1)\n * [IBSI Chapter 2](#ibsi-chapter-2)\n * [7. Acknowledgement](#7-acknowledgement)\n * [8. Authors](#8-authors)\n * [9. Statement](#9-statement)\n\n## 1. Introduction\nMEDiml is an open-source Python package that can be used for processing multi-modal medical images (MRI, CT or PET) and for extracting their radiomic features. This package is meant to facilitate the processing of medical images and the subsequent computation of all types of radiomic features while maintaining the reproducibility of analyses. This package has been standardized with the [IBSI](https://theibsi.github.io/) norms.\n\n\n\n\n## 2. Installation\n\n### Python installation\nThe MEDiml package requires *Python 3.8* or more. If you don\'t have it installed on your machine, follow the instructions [here](https://github.com/MEDomicsLab/MEDiml/blob/main/python.md) to install it.\n\n### Package installation\nYou can easily install the ``MEDiml`` package from PyPI using:\n```\npip install MEDiml\n```\n\nFor more installation options (Conda, Poetry...) check out the [installation documentation](https://mediml.readthedocs.io/en/latest/Installation.html).\n\n## 3. Generating the documentation locally\nThe [documentation](https://mediml.readthedocs.io/en/latest/) of the MEDiml package was created using Sphinx. However, you can generate and host it locally by compiling the documentation source code using :\n\n```\ncd docs\nmake clean\nmake html\n```\n\nThen open it locally using:\n\n```\ncd _build/html\npython -m http.server\n```\n\n## 4. A simple example\n```python\nimport os\nimport pickle\n\nimport MEDiml\n\n# Load MEDiml DataManager\ndm = MEDiml.DataManager(path_dicoms=os.getcwd())\n\n# Process the DICOM files and retrieve the MEDiml object\nmed_obj = dm.process_all_dicoms()[0]\n\n# Extract ROI mask from the object\nvol_obj_init, roi_obj_init = MEDiml.processing.get_roi_from_indexes(\n med_obj,\n name_roi=\'{ED}+{ET}+{NET}\',\n box_string=\'full\')\n\n# Extract features from the imaging data\nlocal_intensity = MEDiml.biomarkers.local_intensity.extract_all(\n img_obj=vol_obj_init.data,\n roi_obj=roi_obj_init.data,\n res=[1, 1, 1]\n )\n\n# Update radiomics results class\nmed_obj.update_radiomics(loc_int_features=local_intensity)\n\n# Saving radiomics results\nmed_obj.save_radiomics(\n scan_file_name=\'STS-UdS-001__T1.MRscan.npy\',\n path_save=os.getcwd(),\n roi_type=\'GrossTumorVolume\',\n roi_type_label=\'GTV\',\n )\n```\n\n## 5. Tutorials\n\nWe have created many [tutorial notebooks](https://github.com/MEDomicsLab/MEDiml/tree/main/notebooks) to assist you in learning how to use the different parts of the package. More details can be found in the [documentation](https://mediml.readthedocs.io/en/latest/tutorials.html).\n\n## 6. IBSI Standardization\nThe image biomarker standardization initiative ([IBSI](https://theibsi.github.io)) is an independent international collaboration that aims to standardize the extraction of image biomarkers from acquired imaging. The IBSI therefore seeks to provide image biomarker nomenclature and definitions, benchmark datasets, and benchmark values to verify image processing and image biomarker calculations, as well as reporting guidelines, for high-throughput image analysis. We participate in this collaboration with our package to make sure it respects international nomenclatures and definitions. The participation was separated into two chapters:\n\n - ### IBSI Chapter 1\n [The IBSI chapter 1](https://theibsi.github.io/ibsi1/) is dedicated to the standardization of commonly used radiomic features. It was initiated in September 2016 and reached completion in March 2020. We have created two [jupyter notebooks](https://github.com/MEDomicsLab/MEDiml/tree/main/notebooks/ibsi) for each phase of the chapter and made them available for the users to run the IBSI tests for themselves. The tests can also be explored in interactive Colab notebooks that are directly accessible here:\n \n - **Phase 1**: [](https://colab.research.google.com/github/MahdiAll99/MEDimage/blob/main/notebooks/ibsi/ibsi1p1.ipynb)\n - **Phase 2**: [](https://colab.research.google.com/github/MahdiAll99/MEDimage/blob/main/notebooks/ibsi/ibsi1p2.ipynb)\n\n - ### IBSI Chapter 2\n [The IBSI chapter 2](https://theibsi.github.io/ibsi2/) was launched in June 2020 and reached completion in February 2024. It is dedicated to the standardization of commonly used imaging filters in radiomic studies. We have created two [jupyter notebooks](https://github.com/MEDomicsLab/MEDiml/tree/main/notebooks/ibsi) for each phase of the chapter and made them available for the users to run the IBSI tests for themselves and validate image filtering and image biomarker calculations from filter response maps. The tests can also be explored in interactive Colab notebooks that are directly accessible here: \n \n - **Phase 1**: [](https://colab.research.google.com/github/MahdiAll99/MEDimage/blob/main/notebooks/ibsi/ibsi2p1.ipynb)\n - **Phase 2**: [](https://colab.research.google.com/github/MahdiAll99/MEDimage/blob/main/notebooks/ibsi/ibsi2p2.ipynb)\n\n Our team at *UdeS* (a.k.a. Université de Sherbrooke) has already submitted the benchmarked values to the [IBSI uploading website](https://ibsi.radiomics.hevs.ch/).\n\n---\n**Miscellaneous**\n\nYou can avoid the next steps (Jupyter installation and environment setup) if you installed the package using Conda or Poetry according to the documentation.\n\n---\n\nYou can view and run the tests locally by installing the [Jupyter Notebook](https://jupyter.org/) application on your machine:\n```\npython -m pip install jupyter\n```\nThen add the installed `MEDiml` environment to the Jupyter Notebook kernels using:\n\n```\npython -m ipykernel install --user --name=MEDiml\n```\n\nThen access the IBSI tests folder using:\n\n```\ncd notebooks/ibsi/\n```\n\nFinally, launch Jupyter Notebook to navigate through the IBSI notebooks using:\n\n```\njupyter notebook\n```\n\n## 7. Acknowledgement\nMEDiml is an open-source package developed at the [MEDomicsLab](https://www.medomicslab.com/en/) laboratory with the collaboration of the international consortium [MEDomics](https://www.medomics.ai/). We welcome any contribution and feedback. Furthermore, we wish that this package could serve the growing radiomics research community by providing a flexible as well as [IBSI](https://theibsi.github.io/) standardized tool to reimplement existing methods and develop new ones.\n\n## 8. Authors\n* [MEDomicsLab](https://www.medomicslab.com/en/): Research laboratory at Université de Sherbrooke & McGill University.\n* [MEDomics](https://github.com/medomics/): MEDomics consortium.\n\n## 9. Statement\n\nThis package is part of https://github.com/medomics, a package providing research utility tools for developing precision medicine applications.\n\n```\nCopyright (C) 2024 MEDomics consortium\n\nGPL3 LICENSE SYNOPSIS\n\nHere\'s what the license entails:\n\n1. Anyone can copy, modify and distribute this software.\n2. You have to include the license and copyright notice with each and every distribution.\n3. You can use this software privately.\n4. You can use this software for commercial purposes.\n5. If you dare build your business solely from this code, you risk open-sourcing the whole code base.\n6. If you modify it, you have to indicate changes made to the code.\n7. Any modifications of this code base MUST be distributed with the same license, GPLv3.\n8. This software is provided without warranty.\n9. The software author or license can not be held liable for any damages inflicted by the software.\n```\n\nMore information on about the [LICENSE can be found here](https://github.com/MEDomicsLab/MEDiml/blob/main/LICENSE.md)\n',
|
|
55
|
-
'author': 'MEDomics Consortium',
|
|
56
|
-
'author_email': 'medomics.info@gmail.com',
|
|
57
|
-
'maintainer': None,
|
|
58
|
-
'maintainer_email': None,
|
|
59
|
-
'url': 'https://mediml.app/',
|
|
60
|
-
'packages': packages,
|
|
61
|
-
'package_data': package_data,
|
|
62
|
-
'install_requires': install_requires,
|
|
63
|
-
'python_requires': '>=3.8.0,<=3.10',
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
setup(**setup_kwargs)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|