pycerr 2.2.2__tar.gz → 2.2.3__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.
- {pycerr-2.2.2 → pycerr-2.2.3}/CHANGELOG.md +11 -0
- {pycerr-2.2.2/pycerr.egg-info → pycerr-2.2.3}/PKG-INFO +1 -1
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/_version.py +3 -3
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/run_length.py +35 -59
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/size_zone.py +38 -27
- {pycerr-2.2.2 → pycerr-2.2.3/pycerr.egg-info}/PKG-INFO +1 -1
- {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/scm_version.json +2 -2
- {pycerr-2.2.2 → pycerr-2.2.3}/.github/workflows/_version_tmp.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/.github/workflows/publish.yml +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/.github/workflows/python-package.yml +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/.gitignore +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/.readthedocs.yaml +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/CLAUDE.md +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/LICENSE +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/MANIFEST.in +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/README.md +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/install_utils.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/post/CT_LungOAR_incrMRRN.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/post/MR_BrainMets_SMITplus.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/post/MR_Rectum_GTV_SMIT.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/prep/CT_LungOAR_incrMRRN.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/prep/MR_BrainMets_SMITplus.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/prep/MR_Rectum_GTV_SMIT.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/run_utils.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/contour/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/contour/contour_processing.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/contour/rasterseg.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/contour/structure_consensus.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/beams.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/dcm_cerr_name_map.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/deform.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/dose.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/header.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/imrt.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/scan.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/scan_info.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/structure.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/uromt.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/convolutional_filter_settings/LoG_filter.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/convolutional_filter_settings/Rot_inv_laws_energy_filter.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/convolutional_filter_settings/gabor_filter.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/convolutional_filter_settings/mean_filter.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/README_LICENSE.txt +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00000.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00001.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00002.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00003.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00004.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00005.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00006.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00007.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00008.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00009.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00010.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00011.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00012.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00013.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00014.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00015.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00016.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00017.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00018.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00019.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00020.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00021.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00022.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00023.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00024.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00025.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00026.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00027.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00028.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00029.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00030.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00031.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00032.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00033.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00034.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00035.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00036.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00037.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00038.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00039.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00040.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00041.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00042.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00043.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00044.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00045.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00046.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00047.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00048.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00049.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00050.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00051.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00052.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00053.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00054.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00055.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00056.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00057.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00058.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00059.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_RS_00060.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00000.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00001.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00002.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00003.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00004.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00005.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00006.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00007.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00008.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00009.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00010.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00011.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00012.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00013.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00014.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00015.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00016.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00017.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00018.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00019.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00020.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00021.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00022.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00023.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00024.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00025.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00026.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00027.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00028.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00029.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00030.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00031.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00032.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00033.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00034.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00035.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00036.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00037.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00038.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00039.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00040.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_RS_00041.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00000.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00001.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00002.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00003.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00004.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00005.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00006.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00007.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00008.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00009.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00010.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00011.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00012.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00013.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00014.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00015.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00016.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00017.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00018.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00019.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00020.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00021.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00022.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00023.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00024.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00025.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00026.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00027.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00028.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00029.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00030.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00031.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00032.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00033.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00034.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00035.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00036.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00037.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00038.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00039.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00040.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00041.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00042.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00043.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00044.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00045.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_RS_00046.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00000.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00001.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00002.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00003.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00004.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00005.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00006.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00007.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00008.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00009.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00010.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00011.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00012.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00013.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00014.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00015.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00016.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00017.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00018.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00019.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00020.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00021.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00022.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00023.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00024.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00025.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00026.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00027.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00028.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00029.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00030.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00031.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00032.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00033.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00034.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00035.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00036.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00037.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00038.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00039.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00040.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00041.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00042.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00043.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00044.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00045.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00046.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00047.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00048.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00049.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00050.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00051.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00052.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00053.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00054.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00055.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_RS_00056.dcm +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_a1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_a2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_b1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_b2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_c1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_c2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1a1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1a2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1a3.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1a4.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1b1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1b2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_2a.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_2b.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_2c.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3a1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3a2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3a3.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3b1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3b2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3b3.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3c1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3c2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3c3.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_4a1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_4a2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_4b1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_4b2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_5a1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_5a2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_6a1.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_6a2.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_1a.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_1b.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_2a.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_2b.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_3a.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_3b.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_4a.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_4b.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_5a.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_5b.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_6a.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_6b.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/original_settings.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/dose.nii +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/mask_(testStr1 U testStr3).nii +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/mask_testStr1.nii +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/mask_testStr2.nii +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/mask_testStr3.nii +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/scan.nii +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/iod_helper.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/reg_iod.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/rtdose_iod.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/rtplan_iod.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/rtstruct_iod.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/scan_iod.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dvh.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/gamma.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/README_IMRTP.md +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/QIBData/aahn_18b.dat +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/QIBData/aahn_6b.dat +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/QIBData/qib_tables.npz +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/influence.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/montecarlo.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/qib.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/qib_data.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/raytrace.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/recalc.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/rtplan.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/imrtp.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/imrtp_gui.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/imrtp_problem.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/lattice.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/portpy_bridge.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/pyradplan_bridge.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/mri_metrics/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/mri_metrics/dce_mri.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/multiViewHelper.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/plan_container.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/first_order.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/gray_level_cooccurence.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/ibsi1.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/neighbor_gray_level_dependence.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/neighbor_gray_tone.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/preprocess.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/shape.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/texture_filters.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/texture_utils.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/vector_elasticity.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/ants_reg.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/register.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/settings/plastimatch_ct_ct_intra_pt_affine.txt +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/settings/plastimatch_ct_ct_intra_pt_bsplines.txt +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/settings/plastimatch_ct_ct_intra_pt_w_masks_affine.txt +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/settings/plastimatch_ct_ct_intra_pt_w_masks_bsplines.txt +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/dosimetric_models.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Bronchial stenosis (cox).json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Bronchial stenosis (logistic).json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Bronchial toxicity (Grade 3+).json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Bronchial toxicity (Grade 5).json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Esophagitis (Huang).json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Esophagitis (Jackson_cox).json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Esophagitis (Jackson_logistic).json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Esophagitis (Wijsman).json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Pneumonitis (Appelt).json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Rectal bleeding (grade 2+).json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Xerostomia (grade 2+).json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/roe_gui.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/scripts/bench_uromt_overlay.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/scripts/demo_imrtp_gui.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/scripts/structure_consensus_example.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/scripts/uromt_matlab_compare.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/segmentation/models.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/MATLAB_COMPARISON.md +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/analyze.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/config.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/data.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/export.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/gpu.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/gpu_kernels.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/kernels.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/numerics.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/settings/dce_concentration_settings.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/settings/uromt_model_settings.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/solver.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/viz.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/ai_pipeline.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/custom_colormaps.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/image_proc.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/interp.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/mask.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/statistics.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/uid.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/API_pycerr_gui.md +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/README_pycerr_gui.md +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/cerr_colormaps.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/CERR_logo.icns +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/CERR_logo.ico +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/CERR_logo.png +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/__main__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/app.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/colorbars.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/common.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/dialogs.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/main_window.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/pyCERR_logo_HQ.png +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/slice_view.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/uromt_gui.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/volume3d.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_napari.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_nbviewer.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/Makefile +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.contour.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.dataclasses.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.datasets.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.dcm_export.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.imrtp.dosecalc.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.imrtp.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.mri_metrics.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.radiomics.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.registration.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.roe.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.utils.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.viewer.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/conf.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/index.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/make.bat +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/modules.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/requirements.txt +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/setup.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/docs/tests.rst +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/notebooks/urOMT_demo.ipynb +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/notebooks/urOMT_fast_settings.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/SOURCES.txt +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/dependency_links.txt +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/not-zip-safe +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/requires.txt +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/scm_file_list.json +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/top_level.txt +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/pyproject.toml +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/requirements.txt +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/setup.cfg +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/setup.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/README.md +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/__init__.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_ants_registration.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dcm_export_reg.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dcm_export_rtstruct.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dcm_reg_import.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dicom_import_robustness.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dicom_load.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dvh.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gamma.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_disprange_3d.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_dvf_overlay.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_fast_alpha.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_fused_dose.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_isodose_levels.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_plane_labels.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_upsample.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_h5_roundtrip.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_ibsi1_features.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_ibsi2_features.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_ibsi2_filters.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_imrtp.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_lattice.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_module_imports.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_nii_export_import.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_poly_fill.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_portpy_bridge.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_portpy_bridge_phase2.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_portpy_bridge_phase3.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_portpy_bridge_phase4.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_pyradplan_bridge.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_rasterization.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_roe_models.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_structure_json.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_uromt.py +0 -0
- {pycerr-2.2.2 → pycerr-2.2.3}/tools/sync-branches.sh +0 -0
|
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.2.3] - 2026-09-28
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **Faster GLRLM and GLSZM.** `calcRLM` walks all runs of every grey level
|
|
15
|
+
together along flat-index strides, visiting each voxel once per direction
|
|
16
|
+
instead of once per level. `calcSZM` labels the zones of all levels in a
|
|
17
|
+
single `skimage.measure.label` pass, and `szmToScalarFeatures` drops empty
|
|
18
|
+
zone-size columns before building its temporaries. Both matrices are
|
|
19
|
+
identical to 2.2.2; about 10x faster on the IBSI 1 phantom.
|
|
20
|
+
|
|
10
21
|
## [2.2.2] - 2026-09-28
|
|
11
22
|
|
|
12
23
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pycerr
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.3
|
|
4
4
|
Summary: A Computational Environment for Radiological Research
|
|
5
5
|
Author-email: "Aditya P. Apte" <aptea@mskcc.org>, Aditi Iyer <iyera@mskcc.org>, Eve LoCastro <locastre@mskcc.org>, "Joseph O. Deasy" <deasyj@mskcc.org>
|
|
6
6
|
Project-URL: Homepage, https://github.com/cerr/pyCERR
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '2.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (2, 2,
|
|
21
|
+
__version__ = version = '2.2.3'
|
|
22
|
+
__version_tuple__ = version_tuple = (2, 2, 3)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gc53f0b806'
|
|
@@ -27,74 +27,50 @@ def calcRLM(quantizedM, offsetsM, nL, rlmType=1):
|
|
|
27
27
|
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
numRowsPad, numColsPad, numSlcsPad = 1, 1, 1
|
|
37
|
-
q = np.pad(quantizedM, ((numRowsPad, numRowsPad), (numColsPad, numColsPad), (numSlcsPad, numSlcsPad)),
|
|
38
|
-
mode='constant', constant_values=0)
|
|
30
|
+
# Zero-pad so every step from a ROI voxel lands inside the array. 0 marks
|
|
31
|
+
# voxels outside the ROI, so runs always end in the padding.
|
|
32
|
+
maxRunLen = int(np.ceil((np.max(quantizedM.shape) + 2) * 2))
|
|
33
|
+
pad = max(2, int(np.max(np.abs(offsetsM))) + 1)
|
|
34
|
+
q = np.pad(quantizedM, pad, mode='constant', constant_values=0)
|
|
39
35
|
q[np.isnan(q)] = 0
|
|
40
36
|
q = q.astype(np.uint16)
|
|
37
|
+
flatV = q.ravel()
|
|
38
|
+
stridesV = np.array(q.strides) // q.itemsize
|
|
41
39
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
#maxRunLen = 1000
|
|
45
|
-
#print('Max Run Length = ' + str(maxRunLen))
|
|
40
|
+
# All ROI voxels (flat indices)
|
|
41
|
+
roiIndV = np.flatnonzero(flatV)
|
|
46
42
|
|
|
43
|
+
numOffsets = offsetsM.shape[0]
|
|
47
44
|
rlmM = np.zeros((nL, maxRunLen))
|
|
48
|
-
|
|
49
|
-
rlmOut = [np.zeros((nL, maxRunLen)) for i in range(numOffsets)]
|
|
50
|
-
|
|
51
|
-
siz = np.array(q.shape)
|
|
52
|
-
rowV = np.arange(siz[0],dtype = np.uint16)[:,None]
|
|
53
|
-
colV = np.arange(siz[1],dtype = np.uint16)[None,:]
|
|
54
|
-
|
|
55
|
-
rowIndM = np.repeat(rowV,siz[1], axis = 1)[:,:,None]
|
|
56
|
-
colIndM = np.repeat(colV,siz[0], axis = 0)[:,:,None]
|
|
57
|
-
rowIndM = np.repeat(rowIndM, siz[2], axis = 2)
|
|
58
|
-
colIndM = np.repeat(colIndM, siz[2], axis = 2)
|
|
59
|
-
slcIndM = np.zeros(siz,dtype = np.uint16)
|
|
60
|
-
for slc in range(siz[2]):
|
|
61
|
-
slcIndM[:,:,slc] = slc
|
|
62
|
-
|
|
63
|
-
|
|
45
|
+
rlmOut = []
|
|
64
46
|
for off in range(numOffsets):
|
|
65
47
|
if rlmType == 2:
|
|
66
|
-
rlmM =
|
|
67
|
-
|
|
68
|
-
offset
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
nextIndV[nextIndV >= siz[:,None]] = 0 # assign 0 as it will have value of 0
|
|
90
|
-
newConvergedV = stopM[nextIndV[0,:],nextIndV[1,:],nextIndV[2,:]]
|
|
91
|
-
numConverged = (~convergedV[newConvergedV]).sum()
|
|
92
|
-
convergedV[newConvergedV] = True
|
|
93
|
-
rlmM[level - 1, count-1] += numConverged
|
|
48
|
+
rlmM = np.zeros((nL, maxRunLen))
|
|
49
|
+
|
|
50
|
+
# A step along this offset is a fixed stride in the flattened array
|
|
51
|
+
step = int(np.dot(offsetsM[off], stridesV))
|
|
52
|
+
|
|
53
|
+
# Run starts: ROI voxels whose predecessor along -offset has a different level
|
|
54
|
+
startIndV = roiIndV[flatV[roiIndV - step] != flatV[roiIndV]]
|
|
55
|
+
levelV = flatV[startIndV].astype(np.int64)
|
|
56
|
+
|
|
57
|
+
# Advance all open runs together, one step at a time. A run ends at the
|
|
58
|
+
# first voxel with a different level; count it and drop it from the active set.
|
|
59
|
+
# Each voxel is visited once per offset, independent of the number of levels.
|
|
60
|
+
curIndV = startIndV.copy()
|
|
61
|
+
lenV = np.ones(len(startIndV), dtype=np.int64)
|
|
62
|
+
activeV = np.arange(len(startIndV))
|
|
63
|
+
while activeV.size:
|
|
64
|
+
nextIndV = curIndV[activeV] + step
|
|
65
|
+
continuesV = flatV[nextIndV] == levelV[activeV]
|
|
66
|
+
endedV = activeV[~continuesV]
|
|
67
|
+
np.add.at(rlmM, (levelV[endedV] - 1, lenV[endedV] - 1), 1)
|
|
68
|
+
activeV = activeV[continuesV]
|
|
69
|
+
curIndV[activeV] = nextIndV[continuesV]
|
|
70
|
+
lenV[activeV] += 1
|
|
94
71
|
|
|
95
72
|
if rlmType == 2:
|
|
96
|
-
|
|
97
|
-
rlmOut[off] = rlmM
|
|
73
|
+
rlmOut.append(rlmM)
|
|
98
74
|
|
|
99
75
|
if rlmType == 1:
|
|
100
76
|
rlmOut = rlmM
|
|
@@ -3,7 +3,7 @@ This module contains routines for claculation of Size Zone texture features
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
import numpy as np
|
|
6
|
-
from
|
|
6
|
+
from skimage.measure import label
|
|
7
7
|
|
|
8
8
|
def calcSZM(quantized3M, nL, szmType):
|
|
9
9
|
"""
|
|
@@ -24,35 +24,41 @@ def calcSZM(quantized3M, nL, szmType):
|
|
|
24
24
|
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
|
+
# Zones are connected regions of equal grey level. skimage's label connects
|
|
28
|
+
# neighbours with EQUAL values, so one pass labels the zones of every level
|
|
29
|
+
# (connectivity 3 = 26-connected in 3D, 2 = 8-connected in 2D). 0 is outside the ROI.
|
|
30
|
+
q = np.nan_to_num(np.asarray(quantized3M, dtype=float), nan=0).astype(np.int32)
|
|
31
|
+
|
|
27
32
|
if szmType == 1:
|
|
28
|
-
|
|
33
|
+
zoneSizeV, zoneLevelV = _zoneSizesAndLevels(q, connectivity=3)
|
|
29
34
|
else:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
for slc in range(sizeV[2]):
|
|
42
|
-
connSlcM, num_features = label(quantized3M[:,:,slc] == level, structure=s)
|
|
43
|
-
indNoZero = connSlcM > 0
|
|
44
|
-
connSlcM[indNoZero] += featOffset
|
|
45
|
-
connM[:,:,slc] = connSlcM
|
|
46
|
-
featOffset += num_features
|
|
47
|
-
regionSizV = np.bincount(connM[connM > 0])
|
|
48
|
-
if len(regionSizV) > 0:
|
|
49
|
-
maxSiz = max(maxSiz, max(regionSizV))
|
|
50
|
-
counts = np.bincount(regionSizV)[1:]
|
|
51
|
-
szmM[level - 1, :len(counts)] = counts
|
|
52
|
-
szmM = szmM[:, :maxSiz]
|
|
35
|
+
sizeL, levelL = [], []
|
|
36
|
+
for slc in range(q.shape[2]):
|
|
37
|
+
sizV, levV = _zoneSizesAndLevels(q[:, :, slc], connectivity=2)
|
|
38
|
+
sizeL.append(sizV)
|
|
39
|
+
levelL.append(levV)
|
|
40
|
+
zoneSizeV = np.concatenate(sizeL)
|
|
41
|
+
zoneLevelV = np.concatenate(levelL)
|
|
42
|
+
|
|
43
|
+
maxSiz = int(zoneSizeV.max()) if zoneSizeV.size else 0
|
|
44
|
+
szmM = np.zeros((nL, maxSiz), dtype=int)
|
|
45
|
+
np.add.at(szmM, (zoneLevelV - 1, zoneSizeV - 1), 1)
|
|
53
46
|
return szmM
|
|
54
47
|
|
|
55
48
|
|
|
49
|
+
def _zoneSizesAndLevels(q, connectivity):
|
|
50
|
+
"""Size and grey level of every zone (connected region of equal non-zero level) in q."""
|
|
51
|
+
labelM = label(q, background=0, connectivity=connectivity)
|
|
52
|
+
labelV = labelM.ravel()
|
|
53
|
+
zoneSizeV = np.bincount(labelV)[1:]
|
|
54
|
+
# Grey level of each zone, read from any one of its voxels
|
|
55
|
+
roiIndV = np.flatnonzero(labelV)
|
|
56
|
+
voxelOfZoneV = np.zeros(zoneSizeV.size + 1, dtype=np.int64)
|
|
57
|
+
voxelOfZoneV[labelV[roiIndV]] = roiIndV
|
|
58
|
+
zoneLevelV = q.ravel()[voxelOfZoneV[1:]].astype(np.int64)
|
|
59
|
+
return zoneSizeV, zoneLevelV
|
|
60
|
+
|
|
61
|
+
|
|
56
62
|
def szmToScalarFeatures(szmM, numVoxels):
|
|
57
63
|
"""
|
|
58
64
|
|
|
@@ -72,8 +78,13 @@ def szmToScalarFeatures(szmM, numVoxels):
|
|
|
72
78
|
|
|
73
79
|
featureS = {}
|
|
74
80
|
|
|
75
|
-
|
|
76
|
-
|
|
81
|
+
# Keep only zone sizes that occur. Empty columns add nothing to any feature,
|
|
82
|
+
# and a single large zone would otherwise make every (nL x maxSize) temporary
|
|
83
|
+
# below hundreds of MB.
|
|
84
|
+
sizeIndV = np.flatnonzero(np.sum(szmM, axis=0))
|
|
85
|
+
szmM = szmM[:, sizeIndV]
|
|
86
|
+
nL = szmM.shape[0]
|
|
87
|
+
lenV = (sizeIndV + 1).astype(np.uint64)
|
|
77
88
|
levV = np.arange(1, nL + 1, dtype = np.uint64)
|
|
78
89
|
lenV = lenV[None,:]
|
|
79
90
|
levV = levV[None,:]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pycerr
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.3
|
|
4
4
|
Summary: A Computational Environment for Radiological Research
|
|
5
5
|
Author-email: "Aditya P. Apte" <aptea@mskcc.org>, Aditi Iyer <iyera@mskcc.org>, Eve LoCastro <locastre@mskcc.org>, "Joseph O. Deasy" <deasyj@mskcc.org>
|
|
6
6
|
Project-URL: Homepage, https://github.com/cerr/pyCERR
|
|
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
|
|
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
|