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.
Files changed (485) hide show
  1. {pycerr-2.2.2 → pycerr-2.2.3}/CHANGELOG.md +11 -0
  2. {pycerr-2.2.2/pycerr.egg-info → pycerr-2.2.3}/PKG-INFO +1 -1
  3. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/_version.py +3 -3
  4. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/run_length.py +35 -59
  5. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/size_zone.py +38 -27
  6. {pycerr-2.2.2 → pycerr-2.2.3/pycerr.egg-info}/PKG-INFO +1 -1
  7. {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/scm_version.json +2 -2
  8. {pycerr-2.2.2 → pycerr-2.2.3}/.github/workflows/_version_tmp.py +0 -0
  9. {pycerr-2.2.2 → pycerr-2.2.3}/.github/workflows/publish.yml +0 -0
  10. {pycerr-2.2.2 → pycerr-2.2.3}/.github/workflows/python-package.yml +0 -0
  11. {pycerr-2.2.2 → pycerr-2.2.3}/.gitignore +0 -0
  12. {pycerr-2.2.2 → pycerr-2.2.3}/.readthedocs.yaml +0 -0
  13. {pycerr-2.2.2 → pycerr-2.2.3}/CLAUDE.md +0 -0
  14. {pycerr-2.2.2 → pycerr-2.2.3}/LICENSE +0 -0
  15. {pycerr-2.2.2 → pycerr-2.2.3}/MANIFEST.in +0 -0
  16. {pycerr-2.2.2 → pycerr-2.2.3}/README.md +0 -0
  17. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/__init__.py +0 -0
  18. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/__init__.py +0 -0
  19. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/install_utils.py +0 -0
  20. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/post/CT_LungOAR_incrMRRN.py +0 -0
  21. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/post/MR_BrainMets_SMITplus.py +0 -0
  22. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/post/MR_Rectum_GTV_SMIT.py +0 -0
  23. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/prep/CT_LungOAR_incrMRRN.py +0 -0
  24. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/prep/MR_BrainMets_SMITplus.py +0 -0
  25. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/prep/MR_Rectum_GTV_SMIT.py +0 -0
  26. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/ai_models/run_utils.py +0 -0
  27. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/contour/__init__.py +0 -0
  28. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/contour/contour_processing.py +0 -0
  29. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/contour/rasterseg.py +0 -0
  30. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/contour/structure_consensus.py +0 -0
  31. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/__init__.py +0 -0
  32. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/beams.py +0 -0
  33. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/dcm_cerr_name_map.json +0 -0
  34. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/deform.py +0 -0
  35. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/dose.py +0 -0
  36. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/header.py +0 -0
  37. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/imrt.py +0 -0
  38. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/scan.py +0 -0
  39. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/scan_info.py +0 -0
  40. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/structure.py +0 -0
  41. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dataclasses/uromt.py +0 -0
  42. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/__init__.py +0 -0
  43. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/convolutional_filter_settings/LoG_filter.json +0 -0
  44. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/convolutional_filter_settings/Rot_inv_laws_energy_filter.json +0 -0
  45. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/convolutional_filter_settings/gabor_filter.json +0 -0
  46. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/convolutional_filter_settings/mean_filter.json +0 -0
  47. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/README_LICENSE.txt +0 -0
  48. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00000.dcm +0 -0
  49. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00001.dcm +0 -0
  50. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00002.dcm +0 -0
  51. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00003.dcm +0 -0
  52. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00004.dcm +0 -0
  53. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00005.dcm +0 -0
  54. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00006.dcm +0 -0
  55. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00007.dcm +0 -0
  56. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00008.dcm +0 -0
  57. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00009.dcm +0 -0
  58. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00010.dcm +0 -0
  59. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00011.dcm +0 -0
  60. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00012.dcm +0 -0
  61. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00013.dcm +0 -0
  62. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00014.dcm +0 -0
  63. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00015.dcm +0 -0
  64. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00016.dcm +0 -0
  65. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00017.dcm +0 -0
  66. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00018.dcm +0 -0
  67. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00019.dcm +0 -0
  68. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00020.dcm +0 -0
  69. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00021.dcm +0 -0
  70. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00022.dcm +0 -0
  71. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00023.dcm +0 -0
  72. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00024.dcm +0 -0
  73. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00025.dcm +0 -0
  74. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00026.dcm +0 -0
  75. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00027.dcm +0 -0
  76. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00028.dcm +0 -0
  77. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00029.dcm +0 -0
  78. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00030.dcm +0 -0
  79. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00031.dcm +0 -0
  80. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00032.dcm +0 -0
  81. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00033.dcm +0 -0
  82. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00034.dcm +0 -0
  83. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00035.dcm +0 -0
  84. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00036.dcm +0 -0
  85. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00037.dcm +0 -0
  86. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00038.dcm +0 -0
  87. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00039.dcm +0 -0
  88. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00040.dcm +0 -0
  89. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00041.dcm +0 -0
  90. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00042.dcm +0 -0
  91. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00043.dcm +0 -0
  92. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00044.dcm +0 -0
  93. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00045.dcm +0 -0
  94. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00046.dcm +0 -0
  95. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00047.dcm +0 -0
  96. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00048.dcm +0 -0
  97. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00049.dcm +0 -0
  98. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00050.dcm +0 -0
  99. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00051.dcm +0 -0
  100. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00052.dcm +0 -0
  101. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00053.dcm +0 -0
  102. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00054.dcm +0 -0
  103. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00055.dcm +0 -0
  104. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00056.dcm +0 -0
  105. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00057.dcm +0 -0
  106. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00058.dcm +0 -0
  107. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00059.dcm +0 -0
  108. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_RS_00060.dcm +0 -0
  109. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00000.dcm +0 -0
  110. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00001.dcm +0 -0
  111. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00002.dcm +0 -0
  112. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00003.dcm +0 -0
  113. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00004.dcm +0 -0
  114. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00005.dcm +0 -0
  115. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00006.dcm +0 -0
  116. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00007.dcm +0 -0
  117. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00008.dcm +0 -0
  118. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00009.dcm +0 -0
  119. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00010.dcm +0 -0
  120. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00011.dcm +0 -0
  121. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00012.dcm +0 -0
  122. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00013.dcm +0 -0
  123. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00014.dcm +0 -0
  124. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00015.dcm +0 -0
  125. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00016.dcm +0 -0
  126. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00017.dcm +0 -0
  127. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00018.dcm +0 -0
  128. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00019.dcm +0 -0
  129. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00020.dcm +0 -0
  130. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00021.dcm +0 -0
  131. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00022.dcm +0 -0
  132. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00023.dcm +0 -0
  133. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00024.dcm +0 -0
  134. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00025.dcm +0 -0
  135. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00026.dcm +0 -0
  136. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00027.dcm +0 -0
  137. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00028.dcm +0 -0
  138. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00029.dcm +0 -0
  139. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00030.dcm +0 -0
  140. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00031.dcm +0 -0
  141. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00032.dcm +0 -0
  142. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00033.dcm +0 -0
  143. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00034.dcm +0 -0
  144. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00035.dcm +0 -0
  145. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00036.dcm +0 -0
  146. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00037.dcm +0 -0
  147. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00038.dcm +0 -0
  148. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00039.dcm +0 -0
  149. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00040.dcm +0 -0
  150. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_RS_00041.dcm +0 -0
  151. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00000.dcm +0 -0
  152. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00001.dcm +0 -0
  153. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00002.dcm +0 -0
  154. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00003.dcm +0 -0
  155. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00004.dcm +0 -0
  156. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00005.dcm +0 -0
  157. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00006.dcm +0 -0
  158. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00007.dcm +0 -0
  159. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00008.dcm +0 -0
  160. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00009.dcm +0 -0
  161. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00010.dcm +0 -0
  162. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00011.dcm +0 -0
  163. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00012.dcm +0 -0
  164. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00013.dcm +0 -0
  165. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00014.dcm +0 -0
  166. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00015.dcm +0 -0
  167. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00016.dcm +0 -0
  168. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00017.dcm +0 -0
  169. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00018.dcm +0 -0
  170. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00019.dcm +0 -0
  171. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00020.dcm +0 -0
  172. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00021.dcm +0 -0
  173. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00022.dcm +0 -0
  174. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00023.dcm +0 -0
  175. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00024.dcm +0 -0
  176. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00025.dcm +0 -0
  177. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00026.dcm +0 -0
  178. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00027.dcm +0 -0
  179. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00028.dcm +0 -0
  180. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00029.dcm +0 -0
  181. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00030.dcm +0 -0
  182. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00031.dcm +0 -0
  183. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00032.dcm +0 -0
  184. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00033.dcm +0 -0
  185. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00034.dcm +0 -0
  186. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00035.dcm +0 -0
  187. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00036.dcm +0 -0
  188. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00037.dcm +0 -0
  189. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00038.dcm +0 -0
  190. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00039.dcm +0 -0
  191. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00040.dcm +0 -0
  192. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00041.dcm +0 -0
  193. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00042.dcm +0 -0
  194. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00043.dcm +0 -0
  195. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00044.dcm +0 -0
  196. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00045.dcm +0 -0
  197. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_RS_00046.dcm +0 -0
  198. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00000.dcm +0 -0
  199. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00001.dcm +0 -0
  200. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00002.dcm +0 -0
  201. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00003.dcm +0 -0
  202. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00004.dcm +0 -0
  203. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00005.dcm +0 -0
  204. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00006.dcm +0 -0
  205. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00007.dcm +0 -0
  206. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00008.dcm +0 -0
  207. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00009.dcm +0 -0
  208. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00010.dcm +0 -0
  209. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00011.dcm +0 -0
  210. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00012.dcm +0 -0
  211. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00013.dcm +0 -0
  212. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00014.dcm +0 -0
  213. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00015.dcm +0 -0
  214. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00016.dcm +0 -0
  215. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00017.dcm +0 -0
  216. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00018.dcm +0 -0
  217. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00019.dcm +0 -0
  218. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00020.dcm +0 -0
  219. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00021.dcm +0 -0
  220. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00022.dcm +0 -0
  221. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00023.dcm +0 -0
  222. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00024.dcm +0 -0
  223. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00025.dcm +0 -0
  224. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00026.dcm +0 -0
  225. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00027.dcm +0 -0
  226. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00028.dcm +0 -0
  227. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00029.dcm +0 -0
  228. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00030.dcm +0 -0
  229. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00031.dcm +0 -0
  230. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00032.dcm +0 -0
  231. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00033.dcm +0 -0
  232. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00034.dcm +0 -0
  233. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00035.dcm +0 -0
  234. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00036.dcm +0 -0
  235. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00037.dcm +0 -0
  236. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00038.dcm +0 -0
  237. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00039.dcm +0 -0
  238. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00040.dcm +0 -0
  239. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00041.dcm +0 -0
  240. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00042.dcm +0 -0
  241. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00043.dcm +0 -0
  242. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00044.dcm +0 -0
  243. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00045.dcm +0 -0
  244. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00046.dcm +0 -0
  245. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00047.dcm +0 -0
  246. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00048.dcm +0 -0
  247. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00049.dcm +0 -0
  248. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00050.dcm +0 -0
  249. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00051.dcm +0 -0
  250. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00052.dcm +0 -0
  251. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00053.dcm +0 -0
  252. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00054.dcm +0 -0
  253. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00055.dcm +0 -0
  254. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_RS_00056.dcm +0 -0
  255. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_a1.json +0 -0
  256. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_a2.json +0 -0
  257. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_b1.json +0 -0
  258. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_b2.json +0 -0
  259. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_c1.json +0 -0
  260. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_c2.json +0 -0
  261. {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
  262. {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
  263. {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
  264. {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
  265. {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
  266. {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
  267. {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
  268. {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
  269. {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
  270. {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
  271. {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
  272. {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
  273. {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
  274. {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
  275. {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
  276. {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
  277. {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
  278. {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
  279. {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
  280. {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
  281. {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
  282. {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
  283. {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
  284. {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
  285. {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
  286. {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
  287. {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
  288. {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
  289. {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
  290. {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
  291. {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
  292. {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
  293. {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
  294. {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
  295. {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
  296. {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
  297. {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
  298. {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
  299. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/radiomics_settings/original_settings.json +0 -0
  300. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/dose.nii +0 -0
  301. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/mask_(testStr1 U testStr3).nii +0 -0
  302. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/mask_testStr1.nii +0 -0
  303. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/mask_testStr2.nii +0 -0
  304. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/mask_testStr3.nii +0 -0
  305. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/datasets/sample_ct/dosimetric_model_test_data/scan.nii +0 -0
  306. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/__init__.py +0 -0
  307. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/iod_helper.py +0 -0
  308. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/reg_iod.py +0 -0
  309. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/rtdose_iod.py +0 -0
  310. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/rtplan_iod.py +0 -0
  311. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/rtstruct_iod.py +0 -0
  312. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dcm_export/scan_iod.py +0 -0
  313. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/dvh.py +0 -0
  314. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/gamma.py +0 -0
  315. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/README_IMRTP.md +0 -0
  316. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/__init__.py +0 -0
  317. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/QIBData/aahn_18b.dat +0 -0
  318. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/QIBData/aahn_6b.dat +0 -0
  319. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/QIBData/qib_tables.npz +0 -0
  320. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/__init__.py +0 -0
  321. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/influence.py +0 -0
  322. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/montecarlo.py +0 -0
  323. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/qib.py +0 -0
  324. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/qib_data.py +0 -0
  325. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/raytrace.py +0 -0
  326. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/recalc.py +0 -0
  327. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/dosecalc/rtplan.py +0 -0
  328. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/imrtp.py +0 -0
  329. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/imrtp_gui.py +0 -0
  330. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/imrtp_problem.py +0 -0
  331. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/lattice.py +0 -0
  332. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/portpy_bridge.py +0 -0
  333. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/imrtp/pyradplan_bridge.py +0 -0
  334. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/mri_metrics/__init__.py +0 -0
  335. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/mri_metrics/dce_mri.py +0 -0
  336. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/multiViewHelper.py +0 -0
  337. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/plan_container.py +0 -0
  338. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/__init__.py +0 -0
  339. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/first_order.py +0 -0
  340. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/gray_level_cooccurence.py +0 -0
  341. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/ibsi1.py +0 -0
  342. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/neighbor_gray_level_dependence.py +0 -0
  343. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/neighbor_gray_tone.py +0 -0
  344. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/preprocess.py +0 -0
  345. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/shape.py +0 -0
  346. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/texture_filters.py +0 -0
  347. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/texture_utils.py +0 -0
  348. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/radiomics/vector_elasticity.py +0 -0
  349. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/__init__.py +0 -0
  350. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/ants_reg.py +0 -0
  351. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/register.py +0 -0
  352. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/settings/plastimatch_ct_ct_intra_pt_affine.txt +0 -0
  353. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/settings/plastimatch_ct_ct_intra_pt_bsplines.txt +0 -0
  354. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/settings/plastimatch_ct_ct_intra_pt_w_masks_affine.txt +0 -0
  355. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/registration/settings/plastimatch_ct_ct_intra_pt_w_masks_bsplines.txt +0 -0
  356. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/__init__.py +0 -0
  357. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/dosimetric_models.py +0 -0
  358. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Bronchial stenosis (cox).json +0 -0
  359. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Bronchial stenosis (logistic).json +0 -0
  360. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Bronchial toxicity (Grade 3+).json +0 -0
  361. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Bronchial toxicity (Grade 5).json +0 -0
  362. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Esophagitis (Huang).json +0 -0
  363. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Esophagitis (Jackson_cox).json +0 -0
  364. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Esophagitis (Jackson_logistic).json +0 -0
  365. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Esophagitis (Wijsman).json +0 -0
  366. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Pneumonitis (Appelt).json +0 -0
  367. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Rectal bleeding (grade 2+).json +0 -0
  368. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/model_parameters/Xerostomia (grade 2+).json +0 -0
  369. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/roe/roe_gui.py +0 -0
  370. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/scripts/bench_uromt_overlay.py +0 -0
  371. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/scripts/demo_imrtp_gui.py +0 -0
  372. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/scripts/structure_consensus_example.py +0 -0
  373. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/scripts/uromt_matlab_compare.py +0 -0
  374. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/segmentation/models.py +0 -0
  375. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/MATLAB_COMPARISON.md +0 -0
  376. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/__init__.py +0 -0
  377. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/analyze.py +0 -0
  378. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/config.py +0 -0
  379. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/data.py +0 -0
  380. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/export.py +0 -0
  381. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/gpu.py +0 -0
  382. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/gpu_kernels.py +0 -0
  383. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/kernels.py +0 -0
  384. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/numerics.py +0 -0
  385. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/settings/dce_concentration_settings.json +0 -0
  386. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/settings/uromt_model_settings.json +0 -0
  387. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/solver.py +0 -0
  388. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/uromt/viz.py +0 -0
  389. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/__init__.py +0 -0
  390. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/ai_pipeline.py +0 -0
  391. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/custom_colormaps.py +0 -0
  392. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/image_proc.py +0 -0
  393. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/interp.py +0 -0
  394. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/mask.py +0 -0
  395. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/statistics.py +0 -0
  396. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/utils/uid.py +0 -0
  397. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/API_pycerr_gui.md +0 -0
  398. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/README_pycerr_gui.md +0 -0
  399. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/__init__.py +0 -0
  400. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/cerr_colormaps.py +0 -0
  401. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/CERR_logo.icns +0 -0
  402. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/CERR_logo.ico +0 -0
  403. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/CERR_logo.png +0 -0
  404. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/__init__.py +0 -0
  405. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/__main__.py +0 -0
  406. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/app.py +0 -0
  407. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/colorbars.py +0 -0
  408. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/common.py +0 -0
  409. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/dialogs.py +0 -0
  410. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/main_window.py +0 -0
  411. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/pyCERR_logo_HQ.png +0 -0
  412. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/slice_view.py +0 -0
  413. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/uromt_gui.py +0 -0
  414. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_gui/volume3d.py +0 -0
  415. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_napari.py +0 -0
  416. {pycerr-2.2.2 → pycerr-2.2.3}/cerr/viewer/pycerr_nbviewer.py +0 -0
  417. {pycerr-2.2.2 → pycerr-2.2.3}/docs/Makefile +0 -0
  418. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.contour.rst +0 -0
  419. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.dataclasses.rst +0 -0
  420. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.datasets.rst +0 -0
  421. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.dcm_export.rst +0 -0
  422. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.imrtp.dosecalc.rst +0 -0
  423. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.imrtp.rst +0 -0
  424. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.mri_metrics.rst +0 -0
  425. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.radiomics.rst +0 -0
  426. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.registration.rst +0 -0
  427. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.roe.rst +0 -0
  428. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.rst +0 -0
  429. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.utils.rst +0 -0
  430. {pycerr-2.2.2 → pycerr-2.2.3}/docs/cerr.viewer.rst +0 -0
  431. {pycerr-2.2.2 → pycerr-2.2.3}/docs/conf.py +0 -0
  432. {pycerr-2.2.2 → pycerr-2.2.3}/docs/index.rst +0 -0
  433. {pycerr-2.2.2 → pycerr-2.2.3}/docs/make.bat +0 -0
  434. {pycerr-2.2.2 → pycerr-2.2.3}/docs/modules.rst +0 -0
  435. {pycerr-2.2.2 → pycerr-2.2.3}/docs/requirements.txt +0 -0
  436. {pycerr-2.2.2 → pycerr-2.2.3}/docs/setup.rst +0 -0
  437. {pycerr-2.2.2 → pycerr-2.2.3}/docs/tests.rst +0 -0
  438. {pycerr-2.2.2 → pycerr-2.2.3}/notebooks/urOMT_demo.ipynb +0 -0
  439. {pycerr-2.2.2 → pycerr-2.2.3}/notebooks/urOMT_fast_settings.json +0 -0
  440. {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/SOURCES.txt +0 -0
  441. {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/dependency_links.txt +0 -0
  442. {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/not-zip-safe +0 -0
  443. {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/requires.txt +0 -0
  444. {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/scm_file_list.json +0 -0
  445. {pycerr-2.2.2 → pycerr-2.2.3}/pycerr.egg-info/top_level.txt +0 -0
  446. {pycerr-2.2.2 → pycerr-2.2.3}/pyproject.toml +0 -0
  447. {pycerr-2.2.2 → pycerr-2.2.3}/requirements.txt +0 -0
  448. {pycerr-2.2.2 → pycerr-2.2.3}/setup.cfg +0 -0
  449. {pycerr-2.2.2 → pycerr-2.2.3}/setup.py +0 -0
  450. {pycerr-2.2.2 → pycerr-2.2.3}/tests/README.md +0 -0
  451. {pycerr-2.2.2 → pycerr-2.2.3}/tests/__init__.py +0 -0
  452. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_ants_registration.py +0 -0
  453. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dcm_export_reg.py +0 -0
  454. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dcm_export_rtstruct.py +0 -0
  455. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dcm_reg_import.py +0 -0
  456. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dicom_import_robustness.py +0 -0
  457. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dicom_load.py +0 -0
  458. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_dvh.py +0 -0
  459. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gamma.py +0 -0
  460. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_disprange_3d.py +0 -0
  461. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_dvf_overlay.py +0 -0
  462. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_fast_alpha.py +0 -0
  463. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_fused_dose.py +0 -0
  464. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_isodose_levels.py +0 -0
  465. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_plane_labels.py +0 -0
  466. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_gui_upsample.py +0 -0
  467. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_h5_roundtrip.py +0 -0
  468. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_ibsi1_features.py +0 -0
  469. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_ibsi2_features.py +0 -0
  470. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_ibsi2_filters.py +0 -0
  471. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_imrtp.py +0 -0
  472. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_lattice.py +0 -0
  473. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_module_imports.py +0 -0
  474. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_nii_export_import.py +0 -0
  475. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_poly_fill.py +0 -0
  476. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_portpy_bridge.py +0 -0
  477. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_portpy_bridge_phase2.py +0 -0
  478. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_portpy_bridge_phase3.py +0 -0
  479. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_portpy_bridge_phase4.py +0 -0
  480. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_pyradplan_bridge.py +0 -0
  481. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_rasterization.py +0 -0
  482. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_roe_models.py +0 -0
  483. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_structure_json.py +0 -0
  484. {pycerr-2.2.2 → pycerr-2.2.3}/tests/test_uromt.py +0 -0
  485. {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.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.2'
22
- __version_tuple__ = version_tuple = (2, 2, 2)
21
+ __version__ = version = '2.2.3'
22
+ __version_tuple__ = version_tuple = (2, 2, 3)
23
23
 
24
- __commit_id__ = commit_id = 'gf85644a5a'
24
+ __commit_id__ = commit_id = 'gc53f0b806'
@@ -27,74 +27,50 @@ def calcRLM(quantizedM, offsetsM, nL, rlmType=1):
27
27
 
28
28
  """
29
29
 
30
- if rlmType != 1:
31
- rlmOut = []
32
-
33
- pad_width = [(1, 1)] * quantizedM.ndim
34
- quantizedM = np.pad(quantizedM, pad_width, mode='constant', constant_values=0)
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
- numOffsets = offsetsM.shape[0]
43
- maxRunLen = int(np.ceil(np.max(quantizedM.shape)*2))
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
- if rlmType == 2:
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 = rlmOut[off]
67
-
68
- offset = offsetsM[off]
69
- rolled_q = np.roll(q, offset, axis=(0, 1, 2))
70
- for level in range(1, nL + 1):
71
- #t = time.time()
72
- prevM = (q == level).astype(int)
73
- # diffM = prevM - np.roll(prevM, offset, axis=(0, 1, 2))
74
- diffM = prevM - (rolled_q == level).astype(int)
75
- startM = diffM == 1
76
- #startIndV = np.where(startM)
77
- #convergedV = np.full(len(startIndV[0]),False,dtype=bool)
78
- rowStartV = rowIndM[startM]
79
- colStartV = colIndM[startM]
80
- slcStartV = slcIndM[startM]
81
- startIndV = (rowStartV, colStartV, slcStartV)
82
- stopM = diffM == -1
83
- convergedV = np.full(len(rowStartV),False,dtype=bool)
84
- count = 0
85
- while not np.all(convergedV):
86
- count += 1
87
- nextIndV = startIndV + count * offset[:,None]
88
- nextIndV[nextIndV < 0] = 0
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
- #rlmOut.append(rlmM)
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 scipy.ndimage import label
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
- s = np.ones((3,3,3))
33
+ zoneSizeV, zoneLevelV = _zoneSizesAndLevels(q, connectivity=3)
29
34
  else:
30
- s = np.ones((3,3))
31
-
32
- sizeV = quantized3M.shape
33
- szmM = np.zeros((nL, quantized3M.size), dtype=int)
34
- maxSiz = 0
35
- for level in range(1, nL+1):
36
- if szmType == 1:
37
- connM, num_features = label(quantized3M == level, structure=s)
38
- else:
39
- connM = np.zeros(sizeV, dtype=int)
40
- featOffset = 0
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
- nL, maxLength = szmM.shape
76
- lenV = np.arange(1, maxLength + 1, dtype = np.uint64)
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.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
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "2.2.2",
2
+ "tag": "2.2.3",
3
3
  "distance": 0,
4
- "node": "gf85644a5ac131d6d64abcc0b4153e55632377685",
4
+ "node": "gc53f0b806910d6e5ea6db88e4bd22ec4d7a6d7ad",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-09-28"
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