pycerr 2.0.0__py3-none-any.whl

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 (357) hide show
  1. cerr/__init__.py +0 -0
  2. cerr/_version.py +24 -0
  3. cerr/contour/__init__.py +0 -0
  4. cerr/contour/contour_processing.py +172 -0
  5. cerr/contour/rasterseg.py +498 -0
  6. cerr/dataclasses/__init__.py +0 -0
  7. cerr/dataclasses/beams.py +462 -0
  8. cerr/dataclasses/dcm_cerr_name_map.json +59 -0
  9. cerr/dataclasses/deform.py +228 -0
  10. cerr/dataclasses/dose.py +898 -0
  11. cerr/dataclasses/header.py +21 -0
  12. cerr/dataclasses/imrt.py +18 -0
  13. cerr/dataclasses/scan.py +1195 -0
  14. cerr/dataclasses/scan_info.py +236 -0
  15. cerr/dataclasses/structure.py +1630 -0
  16. cerr/datasets/__init__.py +112 -0
  17. cerr/datasets/convolutional_filter_settings/LoG_filter.json +20 -0
  18. cerr/datasets/convolutional_filter_settings/Rot_inv_laws_energy_filter.json +28 -0
  19. cerr/datasets/convolutional_filter_settings/gabor_filter.json +26 -0
  20. cerr/datasets/convolutional_filter_settings/mean_filter.json +19 -0
  21. cerr/datasets/radiomics_phantom_dicom/README_LICENSE.txt +11 -0
  22. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00000.dcm +0 -0
  23. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00001.dcm +0 -0
  24. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00002.dcm +0 -0
  25. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00003.dcm +0 -0
  26. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00004.dcm +0 -0
  27. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00005.dcm +0 -0
  28. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00006.dcm +0 -0
  29. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00007.dcm +0 -0
  30. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00008.dcm +0 -0
  31. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00009.dcm +0 -0
  32. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00010.dcm +0 -0
  33. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00011.dcm +0 -0
  34. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00012.dcm +0 -0
  35. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00013.dcm +0 -0
  36. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00014.dcm +0 -0
  37. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00015.dcm +0 -0
  38. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00016.dcm +0 -0
  39. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00017.dcm +0 -0
  40. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00018.dcm +0 -0
  41. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00019.dcm +0 -0
  42. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00020.dcm +0 -0
  43. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00021.dcm +0 -0
  44. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00022.dcm +0 -0
  45. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00023.dcm +0 -0
  46. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00024.dcm +0 -0
  47. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00025.dcm +0 -0
  48. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00026.dcm +0 -0
  49. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00027.dcm +0 -0
  50. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00028.dcm +0 -0
  51. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00029.dcm +0 -0
  52. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00030.dcm +0 -0
  53. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00031.dcm +0 -0
  54. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00032.dcm +0 -0
  55. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00033.dcm +0 -0
  56. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00034.dcm +0 -0
  57. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00035.dcm +0 -0
  58. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00036.dcm +0 -0
  59. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00037.dcm +0 -0
  60. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00038.dcm +0 -0
  61. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00039.dcm +0 -0
  62. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00040.dcm +0 -0
  63. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00041.dcm +0 -0
  64. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00042.dcm +0 -0
  65. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00043.dcm +0 -0
  66. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00044.dcm +0 -0
  67. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00045.dcm +0 -0
  68. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00046.dcm +0 -0
  69. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00047.dcm +0 -0
  70. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00048.dcm +0 -0
  71. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00049.dcm +0 -0
  72. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00050.dcm +0 -0
  73. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00051.dcm +0 -0
  74. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00052.dcm +0 -0
  75. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00053.dcm +0 -0
  76. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00054.dcm +0 -0
  77. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00055.dcm +0 -0
  78. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00056.dcm +0 -0
  79. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00057.dcm +0 -0
  80. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00058.dcm +0 -0
  81. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_IMG_00059.dcm +0 -0
  82. cerr/datasets/radiomics_phantom_dicom/pat_1/DCM_RS_00060.dcm +0 -0
  83. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00000.dcm +0 -0
  84. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00001.dcm +0 -0
  85. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00002.dcm +0 -0
  86. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00003.dcm +0 -0
  87. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00004.dcm +0 -0
  88. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00005.dcm +0 -0
  89. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00006.dcm +0 -0
  90. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00007.dcm +0 -0
  91. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00008.dcm +0 -0
  92. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00009.dcm +0 -0
  93. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00010.dcm +0 -0
  94. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00011.dcm +0 -0
  95. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00012.dcm +0 -0
  96. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00013.dcm +0 -0
  97. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00014.dcm +0 -0
  98. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00015.dcm +0 -0
  99. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00016.dcm +0 -0
  100. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00017.dcm +0 -0
  101. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00018.dcm +0 -0
  102. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00019.dcm +0 -0
  103. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00020.dcm +0 -0
  104. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00021.dcm +0 -0
  105. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00022.dcm +0 -0
  106. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00023.dcm +0 -0
  107. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00024.dcm +0 -0
  108. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00025.dcm +0 -0
  109. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00026.dcm +0 -0
  110. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00027.dcm +0 -0
  111. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00028.dcm +0 -0
  112. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00029.dcm +0 -0
  113. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00030.dcm +0 -0
  114. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00031.dcm +0 -0
  115. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00032.dcm +0 -0
  116. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00033.dcm +0 -0
  117. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00034.dcm +0 -0
  118. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00035.dcm +0 -0
  119. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00036.dcm +0 -0
  120. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00037.dcm +0 -0
  121. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00038.dcm +0 -0
  122. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00039.dcm +0 -0
  123. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_IMG_00040.dcm +0 -0
  124. cerr/datasets/radiomics_phantom_dicom/pat_2/DCM_RS_00041.dcm +0 -0
  125. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00000.dcm +0 -0
  126. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00001.dcm +0 -0
  127. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00002.dcm +0 -0
  128. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00003.dcm +0 -0
  129. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00004.dcm +0 -0
  130. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00005.dcm +0 -0
  131. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00006.dcm +0 -0
  132. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00007.dcm +0 -0
  133. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00008.dcm +0 -0
  134. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00009.dcm +0 -0
  135. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00010.dcm +0 -0
  136. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00011.dcm +0 -0
  137. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00012.dcm +0 -0
  138. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00013.dcm +0 -0
  139. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00014.dcm +0 -0
  140. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00015.dcm +0 -0
  141. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00016.dcm +0 -0
  142. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00017.dcm +0 -0
  143. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00018.dcm +0 -0
  144. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00019.dcm +0 -0
  145. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00020.dcm +0 -0
  146. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00021.dcm +0 -0
  147. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00022.dcm +0 -0
  148. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00023.dcm +0 -0
  149. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00024.dcm +0 -0
  150. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00025.dcm +0 -0
  151. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00026.dcm +0 -0
  152. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00027.dcm +0 -0
  153. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00028.dcm +0 -0
  154. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00029.dcm +0 -0
  155. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00030.dcm +0 -0
  156. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00031.dcm +0 -0
  157. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00032.dcm +0 -0
  158. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00033.dcm +0 -0
  159. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00034.dcm +0 -0
  160. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00035.dcm +0 -0
  161. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00036.dcm +0 -0
  162. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00037.dcm +0 -0
  163. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00038.dcm +0 -0
  164. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00039.dcm +0 -0
  165. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00040.dcm +0 -0
  166. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00041.dcm +0 -0
  167. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00042.dcm +0 -0
  168. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00043.dcm +0 -0
  169. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00044.dcm +0 -0
  170. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_IMG_00045.dcm +0 -0
  171. cerr/datasets/radiomics_phantom_dicom/pat_3/DCM_RS_00046.dcm +0 -0
  172. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00000.dcm +0 -0
  173. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00001.dcm +0 -0
  174. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00002.dcm +0 -0
  175. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00003.dcm +0 -0
  176. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00004.dcm +0 -0
  177. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00005.dcm +0 -0
  178. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00006.dcm +0 -0
  179. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00007.dcm +0 -0
  180. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00008.dcm +0 -0
  181. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00009.dcm +0 -0
  182. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00010.dcm +0 -0
  183. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00011.dcm +0 -0
  184. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00012.dcm +0 -0
  185. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00013.dcm +0 -0
  186. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00014.dcm +0 -0
  187. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00015.dcm +0 -0
  188. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00016.dcm +0 -0
  189. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00017.dcm +0 -0
  190. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00018.dcm +0 -0
  191. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00019.dcm +0 -0
  192. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00020.dcm +0 -0
  193. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00021.dcm +0 -0
  194. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00022.dcm +0 -0
  195. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00023.dcm +0 -0
  196. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00024.dcm +0 -0
  197. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00025.dcm +0 -0
  198. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00026.dcm +0 -0
  199. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00027.dcm +0 -0
  200. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00028.dcm +0 -0
  201. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00029.dcm +0 -0
  202. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00030.dcm +0 -0
  203. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00031.dcm +0 -0
  204. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00032.dcm +0 -0
  205. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00033.dcm +0 -0
  206. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00034.dcm +0 -0
  207. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00035.dcm +0 -0
  208. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00036.dcm +0 -0
  209. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00037.dcm +0 -0
  210. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00038.dcm +0 -0
  211. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00039.dcm +0 -0
  212. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00040.dcm +0 -0
  213. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00041.dcm +0 -0
  214. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00042.dcm +0 -0
  215. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00043.dcm +0 -0
  216. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00044.dcm +0 -0
  217. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00045.dcm +0 -0
  218. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00046.dcm +0 -0
  219. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00047.dcm +0 -0
  220. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00048.dcm +0 -0
  221. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00049.dcm +0 -0
  222. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00050.dcm +0 -0
  223. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00051.dcm +0 -0
  224. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00052.dcm +0 -0
  225. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00053.dcm +0 -0
  226. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00054.dcm +0 -0
  227. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_IMG_00055.dcm +0 -0
  228. cerr/datasets/radiomics_phantom_dicom/pat_4/DCM_RS_00056.dcm +0 -0
  229. cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_a1.json +73 -0
  230. cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_a2.json +74 -0
  231. cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_b1.json +80 -0
  232. cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_b2.json +79 -0
  233. cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_c1.json +91 -0
  234. cerr/datasets/radiomics_settings/ibsi_settings/ibsi1/ibsi1_id_c2.json +91 -0
  235. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1a1.json +20 -0
  236. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1a2.json +21 -0
  237. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1a3.json +21 -0
  238. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1a4.json +21 -0
  239. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1b1.json +21 -0
  240. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_1b2.json +21 -0
  241. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_2a.json +21 -0
  242. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_2b.json +21 -0
  243. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_2c.json +21 -0
  244. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3a1.json +22 -0
  245. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3a2.json +26 -0
  246. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3a3.json +29 -0
  247. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3b1.json +22 -0
  248. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3b2.json +26 -0
  249. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3b3.json +29 -0
  250. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3c1.json +22 -0
  251. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3c2.json +26 -0
  252. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_3c3.json +29 -0
  253. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_4a1.json +24 -0
  254. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_4a2.json +26 -0
  255. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_4b1.json +24 -0
  256. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_4b2.json +26 -0
  257. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_5a1.json +23 -0
  258. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_5a2.json +29 -0
  259. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_6a1.json +23 -0
  260. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_1/ibsi_phase2_1_id_6a2.json +30 -0
  261. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_1a.json +32 -0
  262. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_1b.json +38 -0
  263. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_2a.json +34 -0
  264. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_2b.json +42 -0
  265. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_3a.json +35 -0
  266. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_3b.json +41 -0
  267. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_4a.json +44 -0
  268. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_4b.json +49 -0
  269. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_5a.json +40 -0
  270. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_5b.json +49 -0
  271. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_6a.json +42 -0
  272. cerr/datasets/radiomics_settings/ibsi_settings/ibsi2_phase_2/ibsi_phase2_2_id_6b.json +49 -0
  273. cerr/datasets/radiomics_settings/original_settings.json +89 -0
  274. cerr/datasets/sample_ct/dosimetric_model_test_data/dose.nii +0 -0
  275. cerr/datasets/sample_ct/dosimetric_model_test_data/mask_(testStr1 U testStr3).nii +0 -0
  276. cerr/datasets/sample_ct/dosimetric_model_test_data/mask_testStr1.nii +0 -0
  277. cerr/datasets/sample_ct/dosimetric_model_test_data/mask_testStr2.nii +0 -0
  278. cerr/datasets/sample_ct/dosimetric_model_test_data/mask_testStr3.nii +0 -0
  279. cerr/datasets/sample_ct/dosimetric_model_test_data/scan.nii +0 -0
  280. cerr/dcm_export/__init__.py +0 -0
  281. cerr/dcm_export/iod_helper.py +151 -0
  282. cerr/dcm_export/reg_iod.py +478 -0
  283. cerr/dcm_export/rtstruct_iod.py +279 -0
  284. cerr/dvh.py +421 -0
  285. cerr/imrtp/README_IMRTP.md +181 -0
  286. cerr/imrtp/__init__.py +46 -0
  287. cerr/imrtp/dosecalc/QIBData/aahn_18b.dat +338 -0
  288. cerr/imrtp/dosecalc/QIBData/aahn_6b.dat +342 -0
  289. cerr/imrtp/dosecalc/QIBData/qib_tables.npz +0 -0
  290. cerr/imrtp/dosecalc/__init__.py +82 -0
  291. cerr/imrtp/dosecalc/influence.py +291 -0
  292. cerr/imrtp/dosecalc/montecarlo.py +117 -0
  293. cerr/imrtp/dosecalc/qib.py +329 -0
  294. cerr/imrtp/dosecalc/qib_data.py +108 -0
  295. cerr/imrtp/dosecalc/raytrace.py +277 -0
  296. cerr/imrtp/dosecalc/recalc.py +214 -0
  297. cerr/imrtp/dosecalc/rtplan.py +242 -0
  298. cerr/imrtp/imrtp.py +179 -0
  299. cerr/imrtp/imrtp_gui.py +1155 -0
  300. cerr/imrtp/imrtp_problem.py +407 -0
  301. cerr/mri_metrics/__init__.py +0 -0
  302. cerr/mri_metrics/dce_mri.py +961 -0
  303. cerr/multiViewHelper.py +443 -0
  304. cerr/plan_container.py +1331 -0
  305. cerr/radiomics/__init__.py +0 -0
  306. cerr/radiomics/first_order.py +144 -0
  307. cerr/radiomics/gray_level_cooccurence.py +340 -0
  308. cerr/radiomics/ibsi1.py +717 -0
  309. cerr/radiomics/neighbor_gray_level_dependence.py +201 -0
  310. cerr/radiomics/neighbor_gray_tone.py +170 -0
  311. cerr/radiomics/preprocess.py +774 -0
  312. cerr/radiomics/run_length.py +206 -0
  313. cerr/radiomics/shape.py +252 -0
  314. cerr/radiomics/size_zone.py +137 -0
  315. cerr/radiomics/texture_filters.py +1491 -0
  316. cerr/radiomics/texture_utils.py +291 -0
  317. cerr/radiomics/vector_elasticity.py +132 -0
  318. cerr/registration/__init__.py +0 -0
  319. cerr/registration/register.py +520 -0
  320. cerr/registration/settings/plastimatch_ct_ct_intra_pt_affine.txt +36 -0
  321. cerr/registration/settings/plastimatch_ct_ct_intra_pt_bsplines.txt +46 -0
  322. cerr/registration/settings/plastimatch_ct_ct_intra_pt_w_masks_affine.txt +38 -0
  323. cerr/registration/settings/plastimatch_ct_ct_intra_pt_w_masks_bsplines.txt +48 -0
  324. cerr/roe/__init__.py +1 -0
  325. cerr/roe/dosimetric_models.py +936 -0
  326. cerr/roe/model_parameters/Bronchial stenosis (cox).json +18 -0
  327. cerr/roe/model_parameters/Bronchial stenosis (logistic).json +17 -0
  328. cerr/roe/model_parameters/Bronchial toxicity (Grade 3+).json +31 -0
  329. cerr/roe/model_parameters/Bronchial toxicity (Grade 5).json +30 -0
  330. cerr/roe/model_parameters/Esophagitis (Huang).json +27 -0
  331. cerr/roe/model_parameters/Esophagitis (Jackson_cox).json +27 -0
  332. cerr/roe/model_parameters/Esophagitis (Jackson_logistic).json +27 -0
  333. cerr/roe/model_parameters/Esophagitis (Wijsman).json +35 -0
  334. cerr/roe/model_parameters/Pneumonitis (Appelt).json +58 -0
  335. cerr/roe/model_parameters/Rectal bleeding (grade 2+).json +20 -0
  336. cerr/roe/roe_gui.py +1370 -0
  337. cerr/scripts/demo_imrtp_gui.py +53 -0
  338. cerr/utils/__init__.py +0 -0
  339. cerr/utils/ai_pipeline.py +248 -0
  340. cerr/utils/custom_colormaps.py +262 -0
  341. cerr/utils/image_proc.py +477 -0
  342. cerr/utils/interp.py +218 -0
  343. cerr/utils/mask.py +746 -0
  344. cerr/utils/statistics.py +31 -0
  345. cerr/utils/uid.py +53 -0
  346. cerr/viewer/API_pycerr_gui.md +346 -0
  347. cerr/viewer/README_pycerr_gui.md +357 -0
  348. cerr/viewer/__init__.py +35 -0
  349. cerr/viewer/cerr_colormaps.py +4240 -0
  350. cerr/viewer/pycerr_gui.py +4701 -0
  351. cerr/viewer/pycerr_napari.py +1793 -0
  352. cerr/viewer/pycerr_nbviewer.py +683 -0
  353. pycerr-2.0.0.dist-info/METADATA +205 -0
  354. pycerr-2.0.0.dist-info/RECORD +357 -0
  355. pycerr-2.0.0.dist-info/WHEEL +5 -0
  356. pycerr-2.0.0.dist-info/licenses/LICENSE +674 -0
  357. pycerr-2.0.0.dist-info/top_level.txt +1 -0
cerr/__init__.py ADDED
File without changes
cerr/_version.py ADDED
@@ -0,0 +1,24 @@
1
+ # file generated by vcs-versioning
2
+ # don't change, don't track in version control
3
+ from __future__ import annotations
4
+
5
+ __all__ = [
6
+ "__version__",
7
+ "__version_tuple__",
8
+ "version",
9
+ "version_tuple",
10
+ "__commit_id__",
11
+ "commit_id",
12
+ ]
13
+
14
+ version: str
15
+ __version__: str
16
+ __version_tuple__: tuple[int | str, ...]
17
+ version_tuple: tuple[int | str, ...]
18
+ commit_id: str | None
19
+ __commit_id__: str | None
20
+
21
+ __version__ = version = '2.0.0'
22
+ __version_tuple__ = version_tuple = (2, 0, 0)
23
+
24
+ __commit_id__ = commit_id = None
File without changes
@@ -0,0 +1,172 @@
1
+ import numpy as np
2
+ from cerr import plan_container as pc
3
+ from cerr.utils import uid
4
+ import cerr.contour.rasterseg as rs
5
+ from shapelysmooth import chaikin_smooth
6
+ from shapelysmooth import catmull_rom_smooth
7
+ from shapelysmooth import taubin_smooth
8
+ import copy
9
+
10
+ '''
11
+ smooth_structure(planC, struct_num, replace_original = True, name_suffix = "", tol = 4, taubin_mu = 0.8, taubin_factor = 0.8, catmull_alpha = 1)
12
+ Description: Get structure object from planC/container. Apply 2D smoothing. Option: replace original structure (default=True), or insert new structure
13
+ Returns: updated planC
14
+ '''
15
+
16
+ def smoothStructure(planC, struct_idx, replace_original = True, name_suffix ="", tol = 4, taubin_mu = 0.8, taubin_factor = 0.8, catmull_alpha = 1):
17
+ """Apply 2-D contour smoothing to every segment of a structure in planC.
18
+
19
+ Deep-copies the structure at ``struct_idx``, applies piecewise smoothing to
20
+ each 2-D contour segment via :func:`smooth2DContour`, regenerates raster
21
+ segments, and either replaces the original structure in ``planC`` or appends
22
+ a new one depending on ``replace_original``.
23
+
24
+ Args:
25
+ planC (cerr.plan_container.PlanC): pyCERR plan container object.
26
+ struct_idx (int): Index of the structure to smooth in
27
+ ``planC.structure``.
28
+ replace_original (bool, optional): When ``True`` (default) the
29
+ smoothed structure overwrites the original entry. When ``False``
30
+ the smoothed structure is appended as a new entry.
31
+ name_suffix (str, optional): String appended to the structure name of
32
+ the smoothed copy. Defaults to ``""``.
33
+ tol (int, optional): Minimum gap (in vertices) between jagged regions
34
+ for them to be treated as separate segments. Defaults to ``4``.
35
+ taubin_mu (float, optional): Mu parameter for Taubin smoothing of
36
+ jagged regions. Defaults to ``0.8``.
37
+ taubin_factor (float, optional): Factor (lambda) for Taubin smoothing.
38
+ Defaults to ``0.8``.
39
+ catmull_alpha (float, optional): Alpha parameter for Catmull-Rom
40
+ interpolation of smooth regions. Defaults to ``1``.
41
+
42
+ Returns:
43
+ cerr.plan_container.PlanC: The updated plan container with the smoothed
44
+ structure in place (or appended).
45
+ """
46
+ struct_obj = copy.deepcopy(planC.structure[struct_idx])
47
+ for contour_orig in struct_obj.contour:
48
+ if contour_orig != []:
49
+ for seg in contour_orig.segments:
50
+ C = seg.points
51
+ z_coord = C[0][2]
52
+ X, tr = smooth2DContour(C, tol, taubin_mu, taubin_factor, catmull_alpha)
53
+ if X.shape[1] == 2:
54
+ Z = z_coord * np.ones((X.shape[0],1))
55
+ seg.points = np.hstack((X,Z))
56
+ struct_obj.strUID = uid.createUID("structure")
57
+ struct_obj.rasterSegments = rs.generateRastersegs(struct_obj, planC)
58
+ struct_obj.structureName = struct_obj.structureName + name_suffix
59
+ if not replace_original:
60
+ planC.structure.append(struct_obj)
61
+ else:
62
+ planC.structure[struct_idx] = struct_obj
63
+ return planC
64
+
65
+
66
+ '''
67
+ smooth_2D_contour(C, tol = 4, taubin_mu = 0.8, taubin_factor = 0.8, catmull_alpha = 1)
68
+
69
+ Description: Function will piecewise-smooth a closed contour C.
70
+ Returns: Smoothed Contour X, range indices of jagged regions in original contour, taubin_range
71
+ '''
72
+
73
+ def smooth2DContour(C, tol = 4, taubin_mu = 0.8, taubin_factor = 0.8, catmull_alpha = 1):
74
+ """Piecewise-smooth a closed 2-D contour in place.
75
+
76
+ Identifies "jagged" vertices — those where the cosine of the interior
77
+ angle (``dot(v1, v2) / (|v1| |v2|)``) is either very small (near-perpendicular
78
+ turns) or very close to 1 (near-collinear, i.e. micro-steps) — groups them
79
+ into contiguous jagged regions, and applies Taubin smoothing to each jagged
80
+ region while using Catmull-Rom interpolation on the smooth regions in
81
+ between. If no jagged vertices are detected the original 2-D coordinates
82
+ are returned unchanged.
83
+
84
+ Args:
85
+ C (np.ndarray): Contour vertex array of shape ``(N, 3)`` or ``(N, 2)``.
86
+ When 3 columns are present the third (z) column is stripped before
87
+ processing and not included in the output.
88
+ tol (int, optional): Maximum vertex-index gap allowed within a single
89
+ jagged region. Adjacent jagged vertices separated by more than
90
+ ``tol`` indices are split into separate regions. Defaults to ``4``.
91
+ taubin_mu (float, optional): Mu parameter for Taubin smoothing.
92
+ Defaults to ``0.8``.
93
+ taubin_factor (float, optional): Factor (lambda) parameter for Taubin
94
+ smoothing. Defaults to ``0.8``.
95
+ catmull_alpha (float, optional): Alpha parameter for Catmull-Rom
96
+ interpolation. Defaults to ``1``.
97
+
98
+ Returns:
99
+ tuple:
100
+ - **piecewise_segs** (np.ndarray): Smoothed contour vertices as an
101
+ array of shape ``(M, 2)`` containing only the x/y coordinates.
102
+ Returns the original ``(N, 2)`` array unchanged when no jagged
103
+ segments are found.
104
+ - **taubin_range** (list[list[int]] | list): List of ``[start, end]``
105
+ vertex-index pairs identifying each jagged region that was
106
+ Taubin-smoothed. Empty list when no jagged segments were found.
107
+ """
108
+ if C.shape[1] == 3:
109
+ Cxy = np.delete(C,2,1)
110
+ elif C.shape[2] == 2:
111
+ Cxy = C
112
+ N = C.shape[0]
113
+ C_sinT = np.ndarray(shape = (N-1,1))
114
+ C_jagg = []
115
+ for i in range(1,N-1):
116
+ x1 = C[i,:2] - C[i-1,:2]
117
+ x2 = C[i+1,:2] - C[i,:2]
118
+ sinT = np.dot(x1,x2) / (np.linalg.norm(x1) * np.linalg.norm(x2))
119
+ C_sinT[i-1,0] = sinT
120
+ if sinT < 0.005 or sinT > 0.995:
121
+ C_jagg.append(i)
122
+ range_lists = []
123
+ if C_jagg == []:
124
+ print('No jagged segments')
125
+ return Cxy, []
126
+
127
+ idx0 = C_jagg[0]
128
+ idxf = 0
129
+
130
+ for i in range(len(C_jagg)-1):
131
+ if np.absolute(C_jagg[i+1] - C_jagg[i]) > tol and np.absolute(C_jagg[i+1] - C_jagg[i]) != 0:
132
+ idxf = C_jagg[i]
133
+ if idxf != idx0:
134
+ range_lists.append([idx0,idxf])
135
+ idx0 = C_jagg[i+1]
136
+ if idxf < idx0:
137
+ idxf = C_jagg[-1]
138
+ range_lists.append([idx0,idxf])
139
+ taubin_range = range_lists
140
+
141
+ if taubin_range[0][0] > 0:
142
+ cf = taubin_range[0][0]
143
+ if taubin_range[-1][1] != N:
144
+ c0 = taubin_range[-1][1]
145
+ C1 = C[c0:N-1,0:2]
146
+ C2 = C[0:cf+1,0:2]
147
+ C_tmp = np.concatenate((C1,C2))
148
+ else:
149
+ C_tmp = C[0:cf,0:2]
150
+ geom = list(map(tuple,C_tmp))
151
+ C_catmull = np.asarray(catmull_rom_smooth(geom,alpha=catmull_alpha))
152
+ piecewise_segs = C_catmull
153
+ else:
154
+ piecewise_segs = C[0,0:2]
155
+
156
+ for x in range(len(taubin_range)):
157
+ t = taubin_range[x]
158
+ t0 = t[0]
159
+ tf = t[1]
160
+ if tf - t0 > 1:
161
+ geom = list(map(tuple, C[t0:tf+1,0:2]))
162
+ C_taubin = np.asarray(taubin_smooth(geom,mu = taubin_mu, factor = taubin_factor))
163
+ piecewise_segs = np.concatenate((piecewise_segs, C_taubin))
164
+ c0 = tf + 1
165
+ if x + 1 < len(taubin_range):
166
+ t2 = taubin_range[x+1]
167
+ cf = t2[0]
168
+ geom = list(map(tuple, C[c0:cf + 1,0:2]))
169
+ C_catmull = np.asarray(catmull_rom_smooth(geom,alpha=catmull_alpha))
170
+ piecewise_segs = np.concatenate((piecewise_segs, C_catmull))
171
+
172
+ return piecewise_segs, taubin_range