melage 0.0.68__py3-none-any.whl → 1.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 (1017) hide show
  1. assets/copyright.png +0 -0
  2. assets/resource/color/FreeSurferColorLUT.txt +2006 -0
  3. assets/resource/color/LUT_30.txt +31 -0
  4. assets/resource/color/SynthSeg.txt +34 -0
  5. resource/color/Simple.txt → assets/resource/color/lut_prostate.txt +20 -18
  6. assets/resource/horizontalview.png +0 -0
  7. assets/resource/theme/create_ticks.py +85 -0
  8. assets/resource/theme/rc/checkbox_checked.png +0 -0
  9. assets/resource/theme/rc/checkbox_checked@2x.png +0 -0
  10. assets/resource/theme/rc/checkbox_checked_disabled.png +0 -0
  11. assets/resource/theme/rc/checkbox_checked_disabled@2x.png +0 -0
  12. assets/resource/theme/rc/checkbox_checked_focus.png +0 -0
  13. assets/resource/theme/rc/checkbox_checked_focus@2x.png +0 -0
  14. assets/resource/theme/rc/checkbox_checked_pressed.png +0 -0
  15. assets/resource/theme/rc/checkbox_checked_pressed@2x.png +0 -0
  16. assets/resource/theme/rc/checkbox_indeterminate.png +0 -0
  17. assets/resource/theme/rc/checkbox_indeterminate@2x.png +0 -0
  18. assets/resource/theme/rc/checkbox_indeterminate_disabled.png +0 -0
  19. assets/resource/theme/rc/checkbox_indeterminate_disabled@2x.png +0 -0
  20. assets/resource/theme/rc/checkbox_indeterminate_focus.png +0 -0
  21. assets/resource/theme/rc/checkbox_indeterminate_focus@2x.png +0 -0
  22. assets/resource/theme/rc/checkbox_indeterminate_pressed.png +0 -0
  23. assets/resource/theme/rc/checkbox_indeterminate_pressed@2x.png +0 -0
  24. assets/resource/theme/rc/checkbox_unchecked.png +0 -0
  25. assets/resource/theme/rc/checkbox_unchecked@2x.png +0 -0
  26. assets/resource/theme/rc/checkbox_unchecked_disabled.png +0 -0
  27. assets/resource/theme/rc/checkbox_unchecked_disabled@2x.png +0 -0
  28. assets/resource/theme/rc/checkbox_unchecked_focus.png +0 -0
  29. assets/resource/theme/rc/checkbox_unchecked_focus@2x.png +0 -0
  30. assets/resource/theme/rc/checkbox_unchecked_pressed.png +0 -0
  31. assets/resource/theme/rc/checkbox_unchecked_pressed@2x.png +0 -0
  32. assets/resource/verticalview.png +0 -0
  33. assets/resource/zoom_in.png +0 -0
  34. assets/resource/zoom_neutral (copy).png +0 -0
  35. assets/resource/zoom_neutral.png +0 -0
  36. assets/resource/zoom_out.png +0 -0
  37. data/MNI/mni_icbm152_t1_tal_nlin_sym_09a.nii +0 -0
  38. data/MNI/mni_icbm152_t1_tal_nlin_sym_09a_masked.nii.gz +0 -0
  39. data/MNI/mni_icbm152_t1_tal_nlin_sym_09a_seg.nii.gz +0 -0
  40. melage/__init__.py +1 -1
  41. melage/config/__init__.py +100 -0
  42. melage/core/Registration/registration.py +54 -0
  43. melage/{utils/readData.py → core/io.py} +12 -4
  44. melage/{widgets/melageAbout.py → dialogs/AboutDialog.py} +1 -1
  45. melage/dialogs/MaskOperationsDialog.py +146 -0
  46. melage/dialogs/MaskingDialog.py +139 -0
  47. melage/dialogs/RegistrationDialog.py +311 -0
  48. melage/{widgets/ImageThresholding.py → dialogs/ThresholdingDialog.py} +2 -2
  49. melage/dialogs/TransformationDialog.py +275 -0
  50. melage/dialogs/__init__.py +9 -0
  51. melage/dialogs/dynamic_gui.py +327 -0
  52. melage/{widgets/fileDialog_widget.py → dialogs/helpers/FileDialog.py} +226 -1
  53. melage/dialogs/helpers/__init__.py +5 -0
  54. melage/main.py +13 -13
  55. melage/{widgets/mainwindow_widget.py → mainwindow_widget.py} +1434 -1408
  56. melage/plugins/N4_bias/N4.py +115 -0
  57. melage/plugins/N4_bias/N4_schema.py +40 -0
  58. melage/plugins/N4_bias/main/utils.py +46 -0
  59. melage/plugins/__init__.py +2 -0
  60. melage/plugins/bet/bet.py +176 -0
  61. melage/plugins/bet/bet_schema.py +73 -0
  62. melage/{widgets/brain_extraction.py → plugins/bet/main/BET.py} +51 -316
  63. melage/plugins/change_coord/change_coord.py +197 -0
  64. melage/plugins/change_coord/change_coord_schema.py +31 -0
  65. melage/plugins/change_coord/main/utils.py +15 -0
  66. melage/{widgets/Segmentation → plugins/esfcm/main}/FCM.py +3 -5
  67. melage/plugins/esfcm/main/test.py +57 -0
  68. melage/{widgets/Segmentation → plugins/esfcm/main}/utils.py +20 -0
  69. melage/plugins/esfcm/tissue_segmentation.py +124 -0
  70. melage/plugins/esfcm/tissue_segmentation_schema.py +33 -0
  71. melage/plugins/masking_operation/mo.py +115 -0
  72. melage/plugins/masking_operation/mo_schema.py +33 -0
  73. melage/plugins/mga_net/MGA_Net.py +145 -0
  74. melage/plugins/mga_net/MGA_Net_schema.py +29 -0
  75. melage/plugins/mga_net/main/figures/Network.txt +1 -0
  76. melage/{widgets/DeepLModels/new_unet.py → plugins/mga_net/main/model/mga_net.py} +3 -3
  77. melage/plugins/mga_net/main/model/utils.py +258 -0
  78. melage/plugins/mga_net/main/test_mgaNet.py +134 -0
  79. melage/plugins/resize/resize.py +136 -0
  80. melage/plugins/resize/resize_schema.py +41 -0
  81. melage/plugins/ui_helpers.py +144 -0
  82. melage/plugins/warpseg/WarpSeg.py +195 -0
  83. melage/plugins/warpseg/WarpSeg_schema.py +41 -0
  84. melage/plugins/warpseg/__init__.py +2 -0
  85. melage/plugins/warpseg/warpseg_main/data_reader/DDSet.py +303 -0
  86. melage/plugins/warpseg/warpseg_main/data_reader/DDSetSeg.py +279 -0
  87. melage/plugins/warpseg/warpseg_main/data_reader/__init__.py +60 -0
  88. melage/plugins/warpseg/warpseg_main/data_reader/baseData.py +18 -0
  89. melage/plugins/warpseg/warpseg_main/data_reader/utils.py +267 -0
  90. melage/plugins/warpseg/warpseg_main/dist_utils.py +18 -0
  91. melage/plugins/warpseg/warpseg_main/requirements.txt +10 -0
  92. melage/plugins/warpseg/warpseg_main/test.py +272 -0
  93. melage/plugins/warpseg/warpseg_main/train.py +432 -0
  94. melage/plugins/warpseg/warpseg_main/train_reg.py +373 -0
  95. melage/plugins/warpseg/warpseg_main/verify_post_process.py +73 -0
  96. melage/plugins/warpseg/warpseg_main/voxelmorph/__init__.py +45 -0
  97. melage/plugins/warpseg/warpseg_main/voxelmorph/py/__init__.py +1 -0
  98. melage/plugins/warpseg/warpseg_main/voxelmorph/py/utils.py +99 -0
  99. melage/{widgets/Synthstrip.py → plugins/warpseg/warpseg_main/voxelmorph/torch/Unet.py} +71 -51
  100. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/__init__.py +4 -0
  101. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/layers.py +97 -0
  102. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/losses.py +462 -0
  103. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/modelio.py +77 -0
  104. melage/{widgets/DeepLModels/InfantSegment/Unet.py → plugins/warpseg/warpseg_main/voxelmorph/torch/multi_stage_net.py} +76 -52
  105. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/networks.py +308 -0
  106. melage/plugins/warpseg/warpseg_main/voxelmorph/torch/utils.py +470 -0
  107. melage/{utils/DispalyIm.py → rendering/DisplayIm.py} +67 -79
  108. melage/{utils → rendering}/glScientific.py +1 -1
  109. melage/utils/__init__.py +1 -0
  110. melage/utils/utils.py +343 -196
  111. melage/widgets/{dockWidgets.py → DockWidgets.py} +123 -55
  112. melage/widgets/SettingsWidget.py +98 -0
  113. melage/widgets/__init__.py +49 -0
  114. melage/widgets/openglWidgets.py +344 -156
  115. melage/widgets/openglWidgets_bu.py +645 -0
  116. melage/widgets/plugin_manager.py +62 -0
  117. melage-1.0.0.dist-info/METADATA +953 -0
  118. melage-1.0.0.dist-info/RECORD +571 -0
  119. melage-1.0.0.dist-info/entry_points.txt +2 -0
  120. melage-1.0.0.dist-info/top_level.txt +4 -0
  121. melage/requirements22.txt +0 -25
  122. melage/requirements_old.txt +0 -28
  123. melage/resource/theme/rc/checkbox_checked.png +0 -0
  124. melage/resource/theme/rc/checkbox_checked@2x.png +0 -0
  125. melage/resource/theme/rc/checkbox_checked@2x0.png +0 -0
  126. melage/resource/theme/rc/checkbox_checked@2x000.png.png +0 -0
  127. melage/resource/theme/rc/checkbox_checked_disabled.png +0 -0
  128. melage/resource/theme/rc/checkbox_checked_disabled0.png +0 -0
  129. melage/resource/theme/rc/checkbox_checked_disabled@2x.png +0 -0
  130. melage/resource/theme/rc/checkbox_checked_disabled@2x0.png +0 -0
  131. melage/resource/theme/rc/checkbox_checked_focus.png +0 -0
  132. melage/resource/theme/rc/checkbox_checked_focus0.png +0 -0
  133. melage/resource/theme/rc/checkbox_checked_focus@2x.png +0 -0
  134. melage/resource/theme/rc/checkbox_checked_focus@2x0.png +0 -0
  135. melage/resource/theme/rc/checkbox_checked_pressed.png +0 -0
  136. melage/resource/theme/rc/checkbox_checked_pressed0.png +0 -0
  137. melage/resource/theme/rc/checkbox_checked_pressed@2x.png +0 -0
  138. melage/resource/theme/rc/checkbox_checked_pressed@2x0.png +0 -0
  139. melage/resource/theme/rc/checkbox_indeterminate.png +0 -0
  140. melage/resource/theme/rc/checkbox_indeterminate@2x.png +0 -0
  141. melage/resource/theme/rc/checkbox_indeterminate_disabled.png +0 -0
  142. melage/resource/theme/rc/checkbox_indeterminate_disabled@2x.png +0 -0
  143. melage/resource/theme/rc/checkbox_indeterminate_focus.png +0 -0
  144. melage/resource/theme/rc/checkbox_indeterminate_focus@2x.png +0 -0
  145. melage/resource/theme/rc/checkbox_indeterminate_pressed.png +0 -0
  146. melage/resource/theme/rc/checkbox_indeterminate_pressed@2x.png +0 -0
  147. melage/resource/theme/rc/checkbox_unchecked.png +0 -0
  148. melage/resource/theme/rc/checkbox_unchecked0.png +0 -0
  149. melage/resource/theme/rc/checkbox_unchecked00.png +0 -0
  150. melage/resource/theme/rc/checkbox_unchecked@2x.png +0 -0
  151. melage/resource/theme/rc/checkbox_unchecked@2x0.png +0 -0
  152. melage/resource/theme/rc/checkbox_unchecked@2x00.png +0 -0
  153. melage/resource/theme/rc/checkbox_unchecked_disabled.png +0 -0
  154. melage/resource/theme/rc/checkbox_unchecked_disabled0.png +0 -0
  155. melage/resource/theme/rc/checkbox_unchecked_disabled00.png +0 -0
  156. melage/resource/theme/rc/checkbox_unchecked_disabled@2x.png +0 -0
  157. melage/resource/theme/rc/checkbox_unchecked_disabled@2x0.png +0 -0
  158. melage/resource/theme/rc/checkbox_unchecked_disabled@2x00.png +0 -0
  159. melage/resource/theme/rc/checkbox_unchecked_focus.png +0 -0
  160. melage/resource/theme/rc/checkbox_unchecked_focus0.png +0 -0
  161. melage/resource/theme/rc/checkbox_unchecked_focus00.png +0 -0
  162. melage/resource/theme/rc/checkbox_unchecked_focus@2x.png +0 -0
  163. melage/resource/theme/rc/checkbox_unchecked_focus@2x0.png +0 -0
  164. melage/resource/theme/rc/checkbox_unchecked_focus@2x00.png +0 -0
  165. melage/resource/theme/rc/checkbox_unchecked_pressed.png +0 -0
  166. melage/resource/theme/rc/checkbox_unchecked_pressed0.png +0 -0
  167. melage/resource/theme/rc/checkbox_unchecked_pressed00.png +0 -0
  168. melage/resource/theme/rc/checkbox_unchecked_pressed@2x.png +0 -0
  169. melage/resource/theme/rc/checkbox_unchecked_pressed@2x0.png +0 -0
  170. melage/resource/theme/rc/checkbox_unchecked_pressed@2x00.png +0 -0
  171. melage/some_notes.txt +0 -3
  172. melage/utils/GMM.py +0 -720
  173. melage/utils/Shaders_bu.py +0 -314
  174. melage/utils/__init__0.py +0 -7
  175. melage/utils/glScientific_bc.py +0 -1585
  176. melage/utils/registration.py +0 -512
  177. melage/utils/source_folder.py +0 -18
  178. melage/version.txt +0 -1
  179. melage/widgets/ApplyMask.py +0 -212
  180. melage/widgets/ChangeSystem.py +0 -152
  181. melage/widgets/DeepLModels/NPP/dataset/mri_dataset_affine.py +0 -149
  182. melage/widgets/DeepLModels/NPP/models/checkpoints/npp_v1.pth.py +0 -0
  183. melage/widgets/DeepLModels/NPP/models/losses.py +0 -146
  184. melage/widgets/DeepLModels/NPP/models/model.py +0 -272
  185. melage/widgets/DeepLModels/NPP/models/utils.py +0 -303
  186. melage/widgets/DeepLModels/NPP/npp.py +0 -116
  187. melage/widgets/DeepLModels/NPP/requirements.txt +0 -8
  188. melage/widgets/DeepLModels/NPP/train/train.py +0 -116
  189. melage/widgets/DeepLModels/Unet3DAtt.py +0 -657
  190. melage/widgets/DeepLModels/Unet3D_basic.py +0 -648
  191. melage/widgets/DeepLModels/new_unet_old.py +0 -639
  192. melage/widgets/DeepLModels/new_unet_old2.py +0 -658
  193. melage/widgets/MaskOperations.py +0 -147
  194. melage/widgets/N4Dialog.py +0 -241
  195. melage/widgets/Segmentation/__init__.py +0 -588
  196. melage/widgets/SemiAutoSeg.py +0 -666
  197. melage/widgets/__init__0.py +0 -5
  198. melage/widgets/about.py +0 -246
  199. melage/widgets/activator.py +0 -147
  200. melage/widgets/be_dl.py +0 -409
  201. melage/widgets/be_dl_unet3d.py +0 -441
  202. melage/widgets/brain_extraction_dl.py +0 -887
  203. melage/widgets/brain_extraction_dl_bu.py +0 -869
  204. melage/widgets/registrationWidget.py +0 -342
  205. melage/widgets/settings_widget.py +0 -77
  206. melage/widgets/tranformationWidget.py +0 -275
  207. melage-0.0.68.dist-info/METADATA +0 -740
  208. melage-0.0.68.dist-info/RECORD +0 -916
  209. melage-0.0.68.dist-info/entry_points.txt +0 -2
  210. melage-0.0.68.dist-info/top_level.txt +0 -2
  211. resource/0circle.png +0 -0
  212. resource/0circle_faded.png +0 -0
  213. resource/3d.png +0 -0
  214. resource/3d.psd +0 -0
  215. resource/3dFaded.png +0 -0
  216. resource/Eraser.png +0 -0
  217. resource/EraserFaded.png +0 -0
  218. resource/EraserX.png +0 -0
  219. resource/EraserXFaded.png +0 -0
  220. resource/Eraser_icon.svg +0 -79
  221. resource/Hand.png +0 -0
  222. resource/HandIcons_0.png +0 -0
  223. resource/Hand_IX.png +0 -0
  224. resource/Hand_IXFaded.png +0 -0
  225. resource/Handsqueezed.png +0 -0
  226. resource/Handwriting (copy).png +0 -0
  227. resource/Handwriting.png +0 -0
  228. resource/HandwritingMinus.png +0 -0
  229. resource/HandwritingMinusX.png +0 -0
  230. resource/HandwritingPlus.png +0 -0
  231. resource/HandwritingPlusX.png +0 -0
  232. resource/Move_icon.svg +0 -8
  233. resource/PngItem_2422924.png +0 -0
  234. resource/about.png +0 -0
  235. resource/about_logo.png +0 -0
  236. resource/about_logo0.png +0 -0
  237. resource/action_check.png +0 -0
  238. resource/action_check_OFF.png +0 -0
  239. resource/arrow).png +0 -0
  240. resource/arrow.png +0 -0
  241. resource/arrowFaded.png +0 -0
  242. resource/arrow_org.png +0 -0
  243. resource/arrow_org.png.png +0 -0
  244. resource/arrows.png +0 -0
  245. resource/authors.mp4 +0 -0
  246. resource/box.png +0 -0
  247. resource/check-image-icon-0.jpg +0 -0
  248. resource/circle.png +0 -0
  249. resource/circle_faded.png +0 -0
  250. resource/circle_or.png +0 -0
  251. resource/close.png +0 -0
  252. resource/close_bg.png +0 -0
  253. resource/color/Tissue.txt +0 -24
  254. resource/color/Tissue12.txt +0 -27
  255. resource/color/albert_LUT.txt +0 -102
  256. resource/color/mcrib_LUT.txt +0 -102
  257. resource/color/pediatric1.txt +0 -29
  258. resource/color/pediatric1_old.txt +0 -27
  259. resource/color/pediatric2.txt +0 -87
  260. resource/color/pediatric3.txt +0 -29
  261. resource/color/pediatrics (copy).csv +0 -103
  262. resource/color/tissue_seg.txt +0 -4
  263. resource/contour.png +0 -0
  264. resource/contour.svg +0 -2
  265. resource/contourFaded.png +0 -0
  266. resource/contourX.png +0 -0
  267. resource/contourXFaded.png +0 -0
  268. resource/dti.png +0 -0
  269. resource/dti0.png +0 -0
  270. resource/dti222.png +0 -0
  271. resource/dti_or.png +0 -0
  272. resource/eco.png +0 -0
  273. resource/eco22.png +0 -0
  274. resource/eco_old.png +0 -0
  275. resource/eco_or.png +0 -0
  276. resource/eco_or2.png +0 -0
  277. resource/eco_seg.png +0 -0
  278. resource/eco_seg_old.png +0 -0
  279. resource/export.png +0 -0
  280. resource/hand-grab-icon-10.jpg +0 -0
  281. resource/hand-grab-icon-25.jpg +0 -0
  282. resource/info.png +0 -0
  283. resource/line.png +0 -0
  284. resource/linefaded.png +0 -0
  285. resource/load.png +0 -0
  286. resource/melage_top.ico +0 -0
  287. resource/melage_top.png +0 -0
  288. resource/melage_top0.png +0 -0
  289. resource/melage_top1.png +0 -0
  290. resource/melage_top4.png +0 -0
  291. resource/mri (copy).png +0 -0
  292. resource/mri.png +0 -0
  293. resource/mri0.png +0 -0
  294. resource/mri000.png +0 -0
  295. resource/mri22.png +0 -0
  296. resource/mri_big.png +0 -0
  297. resource/mri_old.png +0 -0
  298. resource/mri_seg.png +0 -0
  299. resource/mri_seg_old.png +0 -0
  300. resource/new.png +0 -0
  301. resource/open.png +0 -0
  302. resource/open2.png +0 -0
  303. resource/pan.png +0 -0
  304. resource/pencil.png +0 -0
  305. resource/pencilFaded.png +0 -0
  306. resource/points.png +0 -0
  307. resource/pointsFaded.png +0 -0
  308. resource/rotate.png +0 -0
  309. resource/ruler.png +0 -0
  310. resource/rulerFaded.png +0 -0
  311. resource/s.png +0 -0
  312. resource/s.psd +0 -0
  313. resource/save.png +0 -0
  314. resource/saveas.png +0 -0
  315. resource/seg_mri.png +0 -0
  316. resource/seg_mri2.png +0 -0
  317. resource/settings.png +0 -0
  318. resource/synch.png +0 -0
  319. resource/synchFaded.png +0 -0
  320. resource/theme/rc/.keep +0 -1
  321. resource/theme/rc/arrow_down.png +0 -0
  322. resource/theme/rc/arrow_down@2x.png +0 -0
  323. resource/theme/rc/arrow_down_disabled.png +0 -0
  324. resource/theme/rc/arrow_down_disabled@2x.png +0 -0
  325. resource/theme/rc/arrow_down_focus.png +0 -0
  326. resource/theme/rc/arrow_down_focus@2x.png +0 -0
  327. resource/theme/rc/arrow_down_pressed.png +0 -0
  328. resource/theme/rc/arrow_down_pressed@2x.png +0 -0
  329. resource/theme/rc/arrow_left.png +0 -0
  330. resource/theme/rc/arrow_left@2x.png +0 -0
  331. resource/theme/rc/arrow_left_disabled.png +0 -0
  332. resource/theme/rc/arrow_left_disabled@2x.png +0 -0
  333. resource/theme/rc/arrow_left_focus.png +0 -0
  334. resource/theme/rc/arrow_left_focus@2x.png +0 -0
  335. resource/theme/rc/arrow_left_pressed.png +0 -0
  336. resource/theme/rc/arrow_left_pressed@2x.png +0 -0
  337. resource/theme/rc/arrow_right.png +0 -0
  338. resource/theme/rc/arrow_right@2x.png +0 -0
  339. resource/theme/rc/arrow_right_disabled.png +0 -0
  340. resource/theme/rc/arrow_right_disabled@2x.png +0 -0
  341. resource/theme/rc/arrow_right_focus.png +0 -0
  342. resource/theme/rc/arrow_right_focus@2x.png +0 -0
  343. resource/theme/rc/arrow_right_pressed.png +0 -0
  344. resource/theme/rc/arrow_right_pressed@2x.png +0 -0
  345. resource/theme/rc/arrow_up.png +0 -0
  346. resource/theme/rc/arrow_up@2x.png +0 -0
  347. resource/theme/rc/arrow_up_disabled.png +0 -0
  348. resource/theme/rc/arrow_up_disabled@2x.png +0 -0
  349. resource/theme/rc/arrow_up_focus.png +0 -0
  350. resource/theme/rc/arrow_up_focus@2x.png +0 -0
  351. resource/theme/rc/arrow_up_pressed.png +0 -0
  352. resource/theme/rc/arrow_up_pressed@2x.png +0 -0
  353. resource/theme/rc/base_icon.png +0 -0
  354. resource/theme/rc/base_icon@2x.png +0 -0
  355. resource/theme/rc/base_icon_disabled.png +0 -0
  356. resource/theme/rc/base_icon_disabled@2x.png +0 -0
  357. resource/theme/rc/base_icon_focus.png +0 -0
  358. resource/theme/rc/base_icon_focus@2x.png +0 -0
  359. resource/theme/rc/base_icon_pressed.png +0 -0
  360. resource/theme/rc/base_icon_pressed@2x.png +0 -0
  361. resource/theme/rc/branch_closed.png +0 -0
  362. resource/theme/rc/branch_closed@2x.png +0 -0
  363. resource/theme/rc/branch_closed_disabled.png +0 -0
  364. resource/theme/rc/branch_closed_disabled@2x.png +0 -0
  365. resource/theme/rc/branch_closed_focus.png +0 -0
  366. resource/theme/rc/branch_closed_focus@2x.png +0 -0
  367. resource/theme/rc/branch_closed_pressed.png +0 -0
  368. resource/theme/rc/branch_closed_pressed@2x.png +0 -0
  369. resource/theme/rc/branch_end.png +0 -0
  370. resource/theme/rc/branch_end@2x.png +0 -0
  371. resource/theme/rc/branch_end_disabled.png +0 -0
  372. resource/theme/rc/branch_end_disabled@2x.png +0 -0
  373. resource/theme/rc/branch_end_focus.png +0 -0
  374. resource/theme/rc/branch_end_focus@2x.png +0 -0
  375. resource/theme/rc/branch_end_pressed.png +0 -0
  376. resource/theme/rc/branch_end_pressed@2x.png +0 -0
  377. resource/theme/rc/branch_line.png +0 -0
  378. resource/theme/rc/branch_line@2x.png +0 -0
  379. resource/theme/rc/branch_line_disabled.png +0 -0
  380. resource/theme/rc/branch_line_disabled@2x.png +0 -0
  381. resource/theme/rc/branch_line_focus.png +0 -0
  382. resource/theme/rc/branch_line_focus@2x.png +0 -0
  383. resource/theme/rc/branch_line_pressed.png +0 -0
  384. resource/theme/rc/branch_line_pressed@2x.png +0 -0
  385. resource/theme/rc/branch_more.png +0 -0
  386. resource/theme/rc/branch_more@2x.png +0 -0
  387. resource/theme/rc/branch_more_disabled.png +0 -0
  388. resource/theme/rc/branch_more_disabled@2x.png +0 -0
  389. resource/theme/rc/branch_more_focus.png +0 -0
  390. resource/theme/rc/branch_more_focus@2x.png +0 -0
  391. resource/theme/rc/branch_more_pressed.png +0 -0
  392. resource/theme/rc/branch_more_pressed@2x.png +0 -0
  393. resource/theme/rc/branch_open.png +0 -0
  394. resource/theme/rc/branch_open@2x.png +0 -0
  395. resource/theme/rc/branch_open_disabled.png +0 -0
  396. resource/theme/rc/branch_open_disabled@2x.png +0 -0
  397. resource/theme/rc/branch_open_focus.png +0 -0
  398. resource/theme/rc/branch_open_focus@2x.png +0 -0
  399. resource/theme/rc/branch_open_pressed.png +0 -0
  400. resource/theme/rc/branch_open_pressed@2x.png +0 -0
  401. resource/theme/rc/checkbox_checked.png +0 -0
  402. resource/theme/rc/checkbox_checked0.png +0 -0
  403. resource/theme/rc/checkbox_checked@2x.png +0 -0
  404. resource/theme/rc/checkbox_checked@2x0.png +0 -0
  405. resource/theme/rc/checkbox_checked@2x000.png.png +0 -0
  406. resource/theme/rc/checkbox_checked_disabled.png +0 -0
  407. resource/theme/rc/checkbox_checked_disabled0.png +0 -0
  408. resource/theme/rc/checkbox_checked_disabled@2x.png +0 -0
  409. resource/theme/rc/checkbox_checked_disabled@2x0.png +0 -0
  410. resource/theme/rc/checkbox_checked_focus.png +0 -0
  411. resource/theme/rc/checkbox_checked_focus0.png +0 -0
  412. resource/theme/rc/checkbox_checked_focus@2x.png +0 -0
  413. resource/theme/rc/checkbox_checked_focus@2x0.png +0 -0
  414. resource/theme/rc/checkbox_checked_pressed.png +0 -0
  415. resource/theme/rc/checkbox_checked_pressed0.png +0 -0
  416. resource/theme/rc/checkbox_checked_pressed@2x.png +0 -0
  417. resource/theme/rc/checkbox_checked_pressed@2x0.png +0 -0
  418. resource/theme/rc/checkbox_indeterminate.png +0 -0
  419. resource/theme/rc/checkbox_indeterminate@2x.png +0 -0
  420. resource/theme/rc/checkbox_indeterminate_disabled.png +0 -0
  421. resource/theme/rc/checkbox_indeterminate_disabled@2x.png +0 -0
  422. resource/theme/rc/checkbox_indeterminate_focus.png +0 -0
  423. resource/theme/rc/checkbox_indeterminate_focus@2x.png +0 -0
  424. resource/theme/rc/checkbox_indeterminate_pressed.png +0 -0
  425. resource/theme/rc/checkbox_indeterminate_pressed@2x.png +0 -0
  426. resource/theme/rc/checkbox_unchecked.png +0 -0
  427. resource/theme/rc/checkbox_unchecked0.png +0 -0
  428. resource/theme/rc/checkbox_unchecked00.png +0 -0
  429. resource/theme/rc/checkbox_unchecked@2x.png +0 -0
  430. resource/theme/rc/checkbox_unchecked@2x0.png +0 -0
  431. resource/theme/rc/checkbox_unchecked@2x00.png +0 -0
  432. resource/theme/rc/checkbox_unchecked_disabled.png +0 -0
  433. resource/theme/rc/checkbox_unchecked_disabled0.png +0 -0
  434. resource/theme/rc/checkbox_unchecked_disabled00.png +0 -0
  435. resource/theme/rc/checkbox_unchecked_disabled@2x.png +0 -0
  436. resource/theme/rc/checkbox_unchecked_disabled@2x0.png +0 -0
  437. resource/theme/rc/checkbox_unchecked_disabled@2x00.png +0 -0
  438. resource/theme/rc/checkbox_unchecked_focus.png +0 -0
  439. resource/theme/rc/checkbox_unchecked_focus0.png +0 -0
  440. resource/theme/rc/checkbox_unchecked_focus00.png +0 -0
  441. resource/theme/rc/checkbox_unchecked_focus@2x.png +0 -0
  442. resource/theme/rc/checkbox_unchecked_focus@2x0.png +0 -0
  443. resource/theme/rc/checkbox_unchecked_focus@2x00.png +0 -0
  444. resource/theme/rc/checkbox_unchecked_pressed.png +0 -0
  445. resource/theme/rc/checkbox_unchecked_pressed0.png +0 -0
  446. resource/theme/rc/checkbox_unchecked_pressed00.png +0 -0
  447. resource/theme/rc/checkbox_unchecked_pressed@2x.png +0 -0
  448. resource/theme/rc/checkbox_unchecked_pressed@2x0.png +0 -0
  449. resource/theme/rc/checkbox_unchecked_pressed@2x00.png +0 -0
  450. resource/theme/rc/line_horizontal.png +0 -0
  451. resource/theme/rc/line_horizontal@2x.png +0 -0
  452. resource/theme/rc/line_horizontal_disabled.png +0 -0
  453. resource/theme/rc/line_horizontal_disabled@2x.png +0 -0
  454. resource/theme/rc/line_horizontal_focus.png +0 -0
  455. resource/theme/rc/line_horizontal_focus@2x.png +0 -0
  456. resource/theme/rc/line_horizontal_pressed.png +0 -0
  457. resource/theme/rc/line_horizontal_pressed@2x.png +0 -0
  458. resource/theme/rc/line_vertical.png +0 -0
  459. resource/theme/rc/line_vertical@2x.png +0 -0
  460. resource/theme/rc/line_vertical_disabled.png +0 -0
  461. resource/theme/rc/line_vertical_disabled@2x.png +0 -0
  462. resource/theme/rc/line_vertical_focus.png +0 -0
  463. resource/theme/rc/line_vertical_focus@2x.png +0 -0
  464. resource/theme/rc/line_vertical_pressed.png +0 -0
  465. resource/theme/rc/line_vertical_pressed@2x.png +0 -0
  466. resource/theme/rc/radio_checked.png +0 -0
  467. resource/theme/rc/radio_checked@2x.png +0 -0
  468. resource/theme/rc/radio_checked_disabled.png +0 -0
  469. resource/theme/rc/radio_checked_disabled@2x.png +0 -0
  470. resource/theme/rc/radio_checked_focus.png +0 -0
  471. resource/theme/rc/radio_checked_focus@2x.png +0 -0
  472. resource/theme/rc/radio_checked_pressed.png +0 -0
  473. resource/theme/rc/radio_checked_pressed@2x.png +0 -0
  474. resource/theme/rc/radio_unchecked.png +0 -0
  475. resource/theme/rc/radio_unchecked@2x.png +0 -0
  476. resource/theme/rc/radio_unchecked_disabled.png +0 -0
  477. resource/theme/rc/radio_unchecked_disabled@2x.png +0 -0
  478. resource/theme/rc/radio_unchecked_focus.png +0 -0
  479. resource/theme/rc/radio_unchecked_focus@2x.png +0 -0
  480. resource/theme/rc/radio_unchecked_pressed.png +0 -0
  481. resource/theme/rc/radio_unchecked_pressed@2x.png +0 -0
  482. resource/theme/rc/toolbar_move_horizontal.png +0 -0
  483. resource/theme/rc/toolbar_move_horizontal@2x.png +0 -0
  484. resource/theme/rc/toolbar_move_horizontal_disabled.png +0 -0
  485. resource/theme/rc/toolbar_move_horizontal_disabled@2x.png +0 -0
  486. resource/theme/rc/toolbar_move_horizontal_focus.png +0 -0
  487. resource/theme/rc/toolbar_move_horizontal_focus@2x.png +0 -0
  488. resource/theme/rc/toolbar_move_horizontal_pressed.png +0 -0
  489. resource/theme/rc/toolbar_move_horizontal_pressed@2x.png +0 -0
  490. resource/theme/rc/toolbar_move_vertical.png +0 -0
  491. resource/theme/rc/toolbar_move_vertical@2x.png +0 -0
  492. resource/theme/rc/toolbar_move_vertical_disabled.png +0 -0
  493. resource/theme/rc/toolbar_move_vertical_disabled@2x.png +0 -0
  494. resource/theme/rc/toolbar_move_vertical_focus.png +0 -0
  495. resource/theme/rc/toolbar_move_vertical_focus@2x.png +0 -0
  496. resource/theme/rc/toolbar_move_vertical_pressed.png +0 -0
  497. resource/theme/rc/toolbar_move_vertical_pressed@2x.png +0 -0
  498. resource/theme/rc/toolbar_separator_horizontal.png +0 -0
  499. resource/theme/rc/toolbar_separator_horizontal@2x.png +0 -0
  500. resource/theme/rc/toolbar_separator_horizontal_disabled.png +0 -0
  501. resource/theme/rc/toolbar_separator_horizontal_disabled@2x.png +0 -0
  502. resource/theme/rc/toolbar_separator_horizontal_focus.png +0 -0
  503. resource/theme/rc/toolbar_separator_horizontal_focus@2x.png +0 -0
  504. resource/theme/rc/toolbar_separator_horizontal_pressed.png +0 -0
  505. resource/theme/rc/toolbar_separator_horizontal_pressed@2x.png +0 -0
  506. resource/theme/rc/toolbar_separator_vertical.png +0 -0
  507. resource/theme/rc/toolbar_separator_vertical@2x.png +0 -0
  508. resource/theme/rc/toolbar_separator_vertical_disabled.png +0 -0
  509. resource/theme/rc/toolbar_separator_vertical_disabled@2x.png +0 -0
  510. resource/theme/rc/toolbar_separator_vertical_focus.png +0 -0
  511. resource/theme/rc/toolbar_separator_vertical_focus@2x.png +0 -0
  512. resource/theme/rc/toolbar_separator_vertical_pressed.png +0 -0
  513. resource/theme/rc/toolbar_separator_vertical_pressed@2x.png +0 -0
  514. resource/theme/rc/transparent.png +0 -0
  515. resource/theme/rc/transparent@2x.png +0 -0
  516. resource/theme/rc/transparent_disabled.png +0 -0
  517. resource/theme/rc/transparent_disabled@2x.png +0 -0
  518. resource/theme/rc/transparent_focus.png +0 -0
  519. resource/theme/rc/transparent_focus@2x.png +0 -0
  520. resource/theme/rc/transparent_pressed.png +0 -0
  521. resource/theme/rc/transparent_pressed@2x.png +0 -0
  522. resource/theme/rc/window_close.png +0 -0
  523. resource/theme/rc/window_close@2x.png +0 -0
  524. resource/theme/rc/window_close_disabled.png +0 -0
  525. resource/theme/rc/window_close_disabled@2x.png +0 -0
  526. resource/theme/rc/window_close_focus.png +0 -0
  527. resource/theme/rc/window_close_focus@2x.png +0 -0
  528. resource/theme/rc/window_close_pressed.png +0 -0
  529. resource/theme/rc/window_close_pressed@2x.png +0 -0
  530. resource/theme/rc/window_grip.png +0 -0
  531. resource/theme/rc/window_grip@2x.png +0 -0
  532. resource/theme/rc/window_grip_disabled.png +0 -0
  533. resource/theme/rc/window_grip_disabled@2x.png +0 -0
  534. resource/theme/rc/window_grip_focus.png +0 -0
  535. resource/theme/rc/window_grip_focus@2x.png +0 -0
  536. resource/theme/rc/window_grip_pressed.png +0 -0
  537. resource/theme/rc/window_grip_pressed@2x.png +0 -0
  538. resource/theme/rc/window_minimize.png +0 -0
  539. resource/theme/rc/window_minimize@2x.png +0 -0
  540. resource/theme/rc/window_minimize_disabled.png +0 -0
  541. resource/theme/rc/window_minimize_disabled@2x.png +0 -0
  542. resource/theme/rc/window_minimize_focus.png +0 -0
  543. resource/theme/rc/window_minimize_focus@2x.png +0 -0
  544. resource/theme/rc/window_minimize_pressed.png +0 -0
  545. resource/theme/rc/window_minimize_pressed@2x.png +0 -0
  546. resource/theme/rc/window_undock.png +0 -0
  547. resource/theme/rc/window_undock@2x.png +0 -0
  548. resource/theme/rc/window_undock_disabled.png +0 -0
  549. resource/theme/rc/window_undock_disabled@2x.png +0 -0
  550. resource/theme/rc/window_undock_focus.png +0 -0
  551. resource/theme/rc/window_undock_focus@2x.png +0 -0
  552. resource/theme/rc/window_undock_pressed.png +0 -0
  553. resource/theme/rc/window_undock_pressed@2x.png +0 -0
  554. resource/theme/style.qss +0 -2223
  555. resource/tract.png +0 -0
  556. resource/view1.png +0 -0
  557. resource/view1_eco.png +0 -0
  558. resource/view1_mri.png +0 -0
  559. resource/view1_seg.png +0 -0
  560. resource/view2.png +0 -0
  561. resource/view2_seg.png +0 -0
  562. resource/w.png +0 -0
  563. resource/zoom_in.png +0 -0
  564. resource/zoom_inFaded.png +0 -0
  565. resource/zoom_out.png +0 -0
  566. resource/zoom_outFaded.png +0 -0
  567. {melage/resource → assets}/main.ico +0 -0
  568. {melage → assets}/resource/0circle.png +0 -0
  569. {melage → assets}/resource/0circle_faded.png +0 -0
  570. {melage → assets}/resource/3d.png +0 -0
  571. {melage → assets}/resource/3d.psd +0 -0
  572. {melage → assets}/resource/3dFaded.png +0 -0
  573. {melage → assets}/resource/Eraser.png +0 -0
  574. {melage → assets}/resource/EraserFaded.png +0 -0
  575. {melage → assets}/resource/EraserX.png +0 -0
  576. {melage → assets}/resource/EraserXFaded.png +0 -0
  577. {melage → assets}/resource/Eraser_icon.svg +0 -0
  578. {melage → assets}/resource/Hand.png +0 -0
  579. {melage → assets}/resource/HandIcons_0.png +0 -0
  580. {melage → assets}/resource/Hand_IX.png +0 -0
  581. {melage → assets}/resource/Hand_IXFaded.png +0 -0
  582. {melage → assets}/resource/Handsqueezed.png +0 -0
  583. {melage → assets}/resource/Handwriting (copy).png +0 -0
  584. {melage → assets}/resource/Handwriting.png +0 -0
  585. {melage → assets}/resource/HandwritingMinus.png +0 -0
  586. {melage → assets}/resource/HandwritingMinusX.png +0 -0
  587. {melage → assets}/resource/HandwritingPlus.png +0 -0
  588. {melage → assets}/resource/HandwritingPlusX.png +0 -0
  589. {melage → assets}/resource/Move_icon.svg +0 -0
  590. {melage → assets}/resource/PngItem_2422924.png +0 -0
  591. {melage → assets}/resource/about.png +0 -0
  592. {melage → assets}/resource/about_logo.png +0 -0
  593. {melage → assets}/resource/about_logo0.png +0 -0
  594. {melage → assets}/resource/action_check.png +0 -0
  595. {melage → assets}/resource/action_check_OFF.png +0 -0
  596. {melage → assets}/resource/arrow).png +0 -0
  597. {melage → assets}/resource/arrow.png +0 -0
  598. {melage → assets}/resource/arrowFaded.png +0 -0
  599. {melage → assets}/resource/arrow_org.png +0 -0
  600. {melage → assets}/resource/arrow_org.png.png +0 -0
  601. {melage → assets}/resource/arrows.png +0 -0
  602. {melage → assets}/resource/authors.mp4 +0 -0
  603. {melage → assets}/resource/box.png +0 -0
  604. {melage → assets}/resource/check-image-icon-0.jpg +0 -0
  605. {melage → assets}/resource/circle.png +0 -0
  606. {melage → assets}/resource/circle_faded.png +0 -0
  607. {melage → assets}/resource/circle_or.png +0 -0
  608. {melage → assets}/resource/close.png +0 -0
  609. {melage → assets}/resource/close_bg.png +0 -0
  610. {melage → assets}/resource/color/Simple.txt +0 -0
  611. {melage → assets}/resource/color/Tissue.txt +0 -0
  612. {melage → assets}/resource/color/Tissue12.txt +0 -0
  613. {melage → assets}/resource/color/albert_LUT.txt +0 -0
  614. {melage → assets}/resource/color/mcrib_LUT.txt +0 -0
  615. {melage → assets}/resource/color/pediatric1.txt +0 -0
  616. {melage → assets}/resource/color/pediatric1_old.txt +0 -0
  617. {melage → assets}/resource/color/pediatric2.txt +0 -0
  618. {melage → assets}/resource/color/pediatric3.txt +0 -0
  619. {melage → assets}/resource/color/pediatrics (copy).csv +0 -0
  620. {melage → assets}/resource/color/tissue_seg.txt +0 -0
  621. {melage → assets}/resource/contour.png +0 -0
  622. {melage → assets}/resource/contour.svg +0 -0
  623. {melage → assets}/resource/contourFaded.png +0 -0
  624. {melage → assets}/resource/contourX.png +0 -0
  625. {melage → assets}/resource/contourXFaded.png +0 -0
  626. {melage → assets}/resource/dti.png +0 -0
  627. {melage → assets}/resource/dti0.png +0 -0
  628. {melage → assets}/resource/dti222.png +0 -0
  629. {melage → assets}/resource/dti_or.png +0 -0
  630. {melage → assets}/resource/eco.png +0 -0
  631. {melage → assets}/resource/eco22.png +0 -0
  632. {melage → assets}/resource/eco_old.png +0 -0
  633. {melage → assets}/resource/eco_or.png +0 -0
  634. {melage → assets}/resource/eco_or2.png +0 -0
  635. {melage → assets}/resource/eco_seg.png +0 -0
  636. {melage → assets}/resource/eco_seg_old.png +0 -0
  637. {melage → assets}/resource/export.png +0 -0
  638. {melage → assets}/resource/hand-grab-icon-10.jpg +0 -0
  639. {melage → assets}/resource/hand-grab-icon-25.jpg +0 -0
  640. {melage → assets}/resource/info.png +0 -0
  641. {melage → assets}/resource/line.png +0 -0
  642. {melage → assets}/resource/linefaded.png +0 -0
  643. {melage → assets}/resource/load.png +0 -0
  644. {resource → assets/resource}/main.ico +0 -0
  645. {melage → assets}/resource/manual_images/3D_rightc.png +0 -0
  646. {melage → assets}/resource/manual_images/3D_rightc_goto.png +0 -0
  647. {melage → assets}/resource/manual_images/3D_rightc_paint.png +0 -0
  648. {melage → assets}/resource/manual_images/3D_rightc_paint_draw1.png +0 -0
  649. {melage → assets}/resource/manual_images/3D_rightc_paint_draw2.png +0 -0
  650. {melage → assets}/resource/manual_images/3D_rightc_paint_render.png +0 -0
  651. {melage → assets}/resource/manual_images/3D_rightc_paint_render2.png +0 -0
  652. {melage → assets}/resource/manual_images/3D_rightc_paint_render3.png +0 -0
  653. {melage → assets}/resource/manual_images/3D_rightc_paint_render4.png +0 -0
  654. {melage → assets}/resource/manual_images/3D_rightc_paint_render5.png +0 -0
  655. {melage → assets}/resource/manual_images/3D_rightc_paint_render6.png +0 -0
  656. {melage → assets}/resource/manual_images/3D_rightc_seg.png +0 -0
  657. {melage → assets}/resource/manual_images/exit_toolbar.png +0 -0
  658. {melage → assets}/resource/manual_images/load_image_file.png +0 -0
  659. {melage → assets}/resource/manual_images/load_image_file_openp.png +0 -0
  660. {melage → assets}/resource/manual_images/main_page.png +0 -0
  661. {melage → assets}/resource/manual_images/menu_file.png +0 -0
  662. {melage → assets}/resource/manual_images/menu_file_export.png +0 -0
  663. {melage → assets}/resource/manual_images/menu_file_import.png +0 -0
  664. {melage → assets}/resource/manual_images/menu_file_settings.png +0 -0
  665. {melage → assets}/resource/manual_images/menu_file_ss.png +0 -0
  666. {melage → assets}/resource/manual_images/open_save_load.png +0 -0
  667. {melage → assets}/resource/manual_images/panning_toolbar.png +0 -0
  668. {melage → assets}/resource/manual_images/segmentation_toolbar.png +0 -0
  669. {melage → assets}/resource/manual_images/tab_mri.png +0 -0
  670. {melage → assets}/resource/manual_images/tab_us.png +0 -0
  671. {melage → assets}/resource/manual_images/tabs.png +0 -0
  672. {melage → assets}/resource/manual_images/toolbar_tools.png +0 -0
  673. {melage → assets}/resource/manual_images/tools_basic.png +0 -0
  674. {melage → assets}/resource/manual_images/tools_bet.png +0 -0
  675. {melage → assets}/resource/manual_images/tools_cs.png +0 -0
  676. {melage → assets}/resource/manual_images/tools_deepbet.png +0 -0
  677. {melage → assets}/resource/manual_images/tools_imageinfo.png +0 -0
  678. {melage → assets}/resource/manual_images/tools_maskO.png +0 -0
  679. {melage → assets}/resource/manual_images/tools_masking.png +0 -0
  680. {melage → assets}/resource/manual_images/tools_n4b.png +0 -0
  681. {melage → assets}/resource/manual_images/tools_resize.png +0 -0
  682. {melage → assets}/resource/manual_images/tools_ruler.png +0 -0
  683. {melage → assets}/resource/manual_images/tools_seg.png +0 -0
  684. {melage → assets}/resource/manual_images/tools_threshold.png +0 -0
  685. {melage → assets}/resource/manual_images/tools_tools.png +0 -0
  686. {melage → assets}/resource/manual_images/widget_color.png +0 -0
  687. {melage → assets}/resource/manual_images/widget_color_add.png +0 -0
  688. {melage → assets}/resource/manual_images/widget_color_add2.png +0 -0
  689. {melage → assets}/resource/manual_images/widget_color_additional.png +0 -0
  690. {melage → assets}/resource/manual_images/widget_images.png +0 -0
  691. {melage → assets}/resource/manual_images/widget_images2.png +0 -0
  692. {melage → assets}/resource/manual_images/widget_images3.png +0 -0
  693. {melage → assets}/resource/manual_images/widget_marker.png +0 -0
  694. {melage → assets}/resource/manual_images/widget_mri.png +0 -0
  695. {melage → assets}/resource/manual_images/widget_mri2.png +0 -0
  696. {melage → assets}/resource/manual_images/widget_segintensity.png +0 -0
  697. {melage → assets}/resource/manual_images/widget_tab_mutualview.png +0 -0
  698. {melage → assets}/resource/manual_images/widget_tab_mutualview2.png +0 -0
  699. {melage → assets}/resource/manual_images/widget_table.png +0 -0
  700. {melage → assets}/resource/manual_images/widget_table2.png +0 -0
  701. {melage → assets}/resource/manual_images/widget_us.png +0 -0
  702. {melage → assets}/resource/melage_top.ico +0 -0
  703. {melage → assets}/resource/melage_top.png +0 -0
  704. {melage → assets}/resource/melage_top0.png +0 -0
  705. {melage → assets}/resource/melage_top1.png +0 -0
  706. {melage → assets}/resource/melage_top4.png +0 -0
  707. {melage → assets}/resource/mri (copy).png +0 -0
  708. {melage → assets}/resource/mri.png +0 -0
  709. {melage → assets}/resource/mri0.png +0 -0
  710. {melage → assets}/resource/mri000.png +0 -0
  711. {melage → assets}/resource/mri22.png +0 -0
  712. {melage → assets}/resource/mri_big.png +0 -0
  713. {melage → assets}/resource/mri_old.png +0 -0
  714. {melage → assets}/resource/mri_seg.png +0 -0
  715. {melage → assets}/resource/mri_seg_old.png +0 -0
  716. {melage → assets}/resource/new.png +0 -0
  717. {melage → assets}/resource/open.png +0 -0
  718. {melage → assets}/resource/open2.png +0 -0
  719. {melage → assets}/resource/pan.png +0 -0
  720. {melage → assets}/resource/pencil.png +0 -0
  721. {melage → assets}/resource/pencilFaded.png +0 -0
  722. {melage → assets}/resource/points.png +0 -0
  723. {melage → assets}/resource/pointsFaded.png +0 -0
  724. {melage → assets}/resource/rotate.png +0 -0
  725. {melage → assets}/resource/ruler.png +0 -0
  726. {melage → assets}/resource/rulerFaded.png +0 -0
  727. {melage → assets}/resource/s.png +0 -0
  728. {melage → assets}/resource/s.psd +0 -0
  729. {melage → assets}/resource/save.png +0 -0
  730. {melage → assets}/resource/saveas.png +0 -0
  731. {melage → assets}/resource/seg_mri.png +0 -0
  732. {melage → assets}/resource/seg_mri2.png +0 -0
  733. {melage → assets}/resource/settings.png +0 -0
  734. {melage → assets}/resource/synch.png +0 -0
  735. {melage → assets}/resource/synchFaded.png +0 -0
  736. {melage → assets}/resource/theme/rc/.keep +0 -0
  737. {melage → assets}/resource/theme/rc/arrow_down.png +0 -0
  738. {melage → assets}/resource/theme/rc/arrow_down@2x.png +0 -0
  739. {melage → assets}/resource/theme/rc/arrow_down_disabled.png +0 -0
  740. {melage → assets}/resource/theme/rc/arrow_down_disabled@2x.png +0 -0
  741. {melage → assets}/resource/theme/rc/arrow_down_focus.png +0 -0
  742. {melage → assets}/resource/theme/rc/arrow_down_focus@2x.png +0 -0
  743. {melage → assets}/resource/theme/rc/arrow_down_pressed.png +0 -0
  744. {melage → assets}/resource/theme/rc/arrow_down_pressed@2x.png +0 -0
  745. {melage → assets}/resource/theme/rc/arrow_left.png +0 -0
  746. {melage → assets}/resource/theme/rc/arrow_left@2x.png +0 -0
  747. {melage → assets}/resource/theme/rc/arrow_left_disabled.png +0 -0
  748. {melage → assets}/resource/theme/rc/arrow_left_disabled@2x.png +0 -0
  749. {melage → assets}/resource/theme/rc/arrow_left_focus.png +0 -0
  750. {melage → assets}/resource/theme/rc/arrow_left_focus@2x.png +0 -0
  751. {melage → assets}/resource/theme/rc/arrow_left_pressed.png +0 -0
  752. {melage → assets}/resource/theme/rc/arrow_left_pressed@2x.png +0 -0
  753. {melage → assets}/resource/theme/rc/arrow_right.png +0 -0
  754. {melage → assets}/resource/theme/rc/arrow_right@2x.png +0 -0
  755. {melage → assets}/resource/theme/rc/arrow_right_disabled.png +0 -0
  756. {melage → assets}/resource/theme/rc/arrow_right_disabled@2x.png +0 -0
  757. {melage → assets}/resource/theme/rc/arrow_right_focus.png +0 -0
  758. {melage → assets}/resource/theme/rc/arrow_right_focus@2x.png +0 -0
  759. {melage → assets}/resource/theme/rc/arrow_right_pressed.png +0 -0
  760. {melage → assets}/resource/theme/rc/arrow_right_pressed@2x.png +0 -0
  761. {melage → assets}/resource/theme/rc/arrow_up.png +0 -0
  762. {melage → assets}/resource/theme/rc/arrow_up@2x.png +0 -0
  763. {melage → assets}/resource/theme/rc/arrow_up_disabled.png +0 -0
  764. {melage → assets}/resource/theme/rc/arrow_up_disabled@2x.png +0 -0
  765. {melage → assets}/resource/theme/rc/arrow_up_focus.png +0 -0
  766. {melage → assets}/resource/theme/rc/arrow_up_focus@2x.png +0 -0
  767. {melage → assets}/resource/theme/rc/arrow_up_pressed.png +0 -0
  768. {melage → assets}/resource/theme/rc/arrow_up_pressed@2x.png +0 -0
  769. {melage → assets}/resource/theme/rc/base_icon.png +0 -0
  770. {melage → assets}/resource/theme/rc/base_icon@2x.png +0 -0
  771. {melage → assets}/resource/theme/rc/base_icon_disabled.png +0 -0
  772. {melage → assets}/resource/theme/rc/base_icon_disabled@2x.png +0 -0
  773. {melage → assets}/resource/theme/rc/base_icon_focus.png +0 -0
  774. {melage → assets}/resource/theme/rc/base_icon_focus@2x.png +0 -0
  775. {melage → assets}/resource/theme/rc/base_icon_pressed.png +0 -0
  776. {melage → assets}/resource/theme/rc/base_icon_pressed@2x.png +0 -0
  777. {melage → assets}/resource/theme/rc/branch_closed.png +0 -0
  778. {melage → assets}/resource/theme/rc/branch_closed@2x.png +0 -0
  779. {melage → assets}/resource/theme/rc/branch_closed_disabled.png +0 -0
  780. {melage → assets}/resource/theme/rc/branch_closed_disabled@2x.png +0 -0
  781. {melage → assets}/resource/theme/rc/branch_closed_focus.png +0 -0
  782. {melage → assets}/resource/theme/rc/branch_closed_focus@2x.png +0 -0
  783. {melage → assets}/resource/theme/rc/branch_closed_pressed.png +0 -0
  784. {melage → assets}/resource/theme/rc/branch_closed_pressed@2x.png +0 -0
  785. {melage → assets}/resource/theme/rc/branch_end.png +0 -0
  786. {melage → assets}/resource/theme/rc/branch_end@2x.png +0 -0
  787. {melage → assets}/resource/theme/rc/branch_end_disabled.png +0 -0
  788. {melage → assets}/resource/theme/rc/branch_end_disabled@2x.png +0 -0
  789. {melage → assets}/resource/theme/rc/branch_end_focus.png +0 -0
  790. {melage → assets}/resource/theme/rc/branch_end_focus@2x.png +0 -0
  791. {melage → assets}/resource/theme/rc/branch_end_pressed.png +0 -0
  792. {melage → assets}/resource/theme/rc/branch_end_pressed@2x.png +0 -0
  793. {melage → assets}/resource/theme/rc/branch_line.png +0 -0
  794. {melage → assets}/resource/theme/rc/branch_line@2x.png +0 -0
  795. {melage → assets}/resource/theme/rc/branch_line_disabled.png +0 -0
  796. {melage → assets}/resource/theme/rc/branch_line_disabled@2x.png +0 -0
  797. {melage → assets}/resource/theme/rc/branch_line_focus.png +0 -0
  798. {melage → assets}/resource/theme/rc/branch_line_focus@2x.png +0 -0
  799. {melage → assets}/resource/theme/rc/branch_line_pressed.png +0 -0
  800. {melage → assets}/resource/theme/rc/branch_line_pressed@2x.png +0 -0
  801. {melage → assets}/resource/theme/rc/branch_more.png +0 -0
  802. {melage → assets}/resource/theme/rc/branch_more@2x.png +0 -0
  803. {melage → assets}/resource/theme/rc/branch_more_disabled.png +0 -0
  804. {melage → assets}/resource/theme/rc/branch_more_disabled@2x.png +0 -0
  805. {melage → assets}/resource/theme/rc/branch_more_focus.png +0 -0
  806. {melage → assets}/resource/theme/rc/branch_more_focus@2x.png +0 -0
  807. {melage → assets}/resource/theme/rc/branch_more_pressed.png +0 -0
  808. {melage → assets}/resource/theme/rc/branch_more_pressed@2x.png +0 -0
  809. {melage → assets}/resource/theme/rc/branch_open.png +0 -0
  810. {melage → assets}/resource/theme/rc/branch_open@2x.png +0 -0
  811. {melage → assets}/resource/theme/rc/branch_open_disabled.png +0 -0
  812. {melage → assets}/resource/theme/rc/branch_open_disabled@2x.png +0 -0
  813. {melage → assets}/resource/theme/rc/branch_open_focus.png +0 -0
  814. {melage → assets}/resource/theme/rc/branch_open_focus@2x.png +0 -0
  815. {melage → assets}/resource/theme/rc/branch_open_pressed.png +0 -0
  816. {melage → assets}/resource/theme/rc/branch_open_pressed@2x.png +0 -0
  817. {melage → assets}/resource/theme/rc/checkbox_checked0.png +0 -0
  818. {melage → assets}/resource/theme/rc/line_horizontal.png +0 -0
  819. {melage → assets}/resource/theme/rc/line_horizontal@2x.png +0 -0
  820. {melage → assets}/resource/theme/rc/line_horizontal_disabled.png +0 -0
  821. {melage → assets}/resource/theme/rc/line_horizontal_disabled@2x.png +0 -0
  822. {melage → assets}/resource/theme/rc/line_horizontal_focus.png +0 -0
  823. {melage → assets}/resource/theme/rc/line_horizontal_focus@2x.png +0 -0
  824. {melage → assets}/resource/theme/rc/line_horizontal_pressed.png +0 -0
  825. {melage → assets}/resource/theme/rc/line_horizontal_pressed@2x.png +0 -0
  826. {melage → assets}/resource/theme/rc/line_vertical.png +0 -0
  827. {melage → assets}/resource/theme/rc/line_vertical@2x.png +0 -0
  828. {melage → assets}/resource/theme/rc/line_vertical_disabled.png +0 -0
  829. {melage → assets}/resource/theme/rc/line_vertical_disabled@2x.png +0 -0
  830. {melage → assets}/resource/theme/rc/line_vertical_focus.png +0 -0
  831. {melage → assets}/resource/theme/rc/line_vertical_focus@2x.png +0 -0
  832. {melage → assets}/resource/theme/rc/line_vertical_pressed.png +0 -0
  833. {melage → assets}/resource/theme/rc/line_vertical_pressed@2x.png +0 -0
  834. {melage → assets}/resource/theme/rc/radio_checked.png +0 -0
  835. {melage → assets}/resource/theme/rc/radio_checked@2x.png +0 -0
  836. {melage → assets}/resource/theme/rc/radio_checked_disabled.png +0 -0
  837. {melage → assets}/resource/theme/rc/radio_checked_disabled@2x.png +0 -0
  838. {melage → assets}/resource/theme/rc/radio_checked_focus.png +0 -0
  839. {melage → assets}/resource/theme/rc/radio_checked_focus@2x.png +0 -0
  840. {melage → assets}/resource/theme/rc/radio_checked_pressed.png +0 -0
  841. {melage → assets}/resource/theme/rc/radio_checked_pressed@2x.png +0 -0
  842. {melage → assets}/resource/theme/rc/radio_unchecked.png +0 -0
  843. {melage → assets}/resource/theme/rc/radio_unchecked@2x.png +0 -0
  844. {melage → assets}/resource/theme/rc/radio_unchecked_disabled.png +0 -0
  845. {melage → assets}/resource/theme/rc/radio_unchecked_disabled@2x.png +0 -0
  846. {melage → assets}/resource/theme/rc/radio_unchecked_focus.png +0 -0
  847. {melage → assets}/resource/theme/rc/radio_unchecked_focus@2x.png +0 -0
  848. {melage → assets}/resource/theme/rc/radio_unchecked_pressed.png +0 -0
  849. {melage → assets}/resource/theme/rc/radio_unchecked_pressed@2x.png +0 -0
  850. {melage → assets}/resource/theme/rc/toolbar_move_horizontal.png +0 -0
  851. {melage → assets}/resource/theme/rc/toolbar_move_horizontal@2x.png +0 -0
  852. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_disabled.png +0 -0
  853. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_disabled@2x.png +0 -0
  854. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_focus.png +0 -0
  855. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_focus@2x.png +0 -0
  856. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_pressed.png +0 -0
  857. {melage → assets}/resource/theme/rc/toolbar_move_horizontal_pressed@2x.png +0 -0
  858. {melage → assets}/resource/theme/rc/toolbar_move_vertical.png +0 -0
  859. {melage → assets}/resource/theme/rc/toolbar_move_vertical@2x.png +0 -0
  860. {melage → assets}/resource/theme/rc/toolbar_move_vertical_disabled.png +0 -0
  861. {melage → assets}/resource/theme/rc/toolbar_move_vertical_disabled@2x.png +0 -0
  862. {melage → assets}/resource/theme/rc/toolbar_move_vertical_focus.png +0 -0
  863. {melage → assets}/resource/theme/rc/toolbar_move_vertical_focus@2x.png +0 -0
  864. {melage → assets}/resource/theme/rc/toolbar_move_vertical_pressed.png +0 -0
  865. {melage → assets}/resource/theme/rc/toolbar_move_vertical_pressed@2x.png +0 -0
  866. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal.png +0 -0
  867. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal@2x.png +0 -0
  868. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_disabled.png +0 -0
  869. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_disabled@2x.png +0 -0
  870. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_focus.png +0 -0
  871. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_focus@2x.png +0 -0
  872. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_pressed.png +0 -0
  873. {melage → assets}/resource/theme/rc/toolbar_separator_horizontal_pressed@2x.png +0 -0
  874. {melage → assets}/resource/theme/rc/toolbar_separator_vertical.png +0 -0
  875. {melage → assets}/resource/theme/rc/toolbar_separator_vertical@2x.png +0 -0
  876. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_disabled.png +0 -0
  877. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_disabled@2x.png +0 -0
  878. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_focus.png +0 -0
  879. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_focus@2x.png +0 -0
  880. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_pressed.png +0 -0
  881. {melage → assets}/resource/theme/rc/toolbar_separator_vertical_pressed@2x.png +0 -0
  882. {melage → assets}/resource/theme/rc/transparent.png +0 -0
  883. {melage → assets}/resource/theme/rc/transparent@2x.png +0 -0
  884. {melage → assets}/resource/theme/rc/transparent_disabled.png +0 -0
  885. {melage → assets}/resource/theme/rc/transparent_disabled@2x.png +0 -0
  886. {melage → assets}/resource/theme/rc/transparent_focus.png +0 -0
  887. {melage → assets}/resource/theme/rc/transparent_focus@2x.png +0 -0
  888. {melage → assets}/resource/theme/rc/transparent_pressed.png +0 -0
  889. {melage → assets}/resource/theme/rc/transparent_pressed@2x.png +0 -0
  890. {melage → assets}/resource/theme/rc/window_close.png +0 -0
  891. {melage → assets}/resource/theme/rc/window_close@2x.png +0 -0
  892. {melage → assets}/resource/theme/rc/window_close_disabled.png +0 -0
  893. {melage → assets}/resource/theme/rc/window_close_disabled@2x.png +0 -0
  894. {melage → assets}/resource/theme/rc/window_close_focus.png +0 -0
  895. {melage → assets}/resource/theme/rc/window_close_focus@2x.png +0 -0
  896. {melage → assets}/resource/theme/rc/window_close_pressed.png +0 -0
  897. {melage → assets}/resource/theme/rc/window_close_pressed@2x.png +0 -0
  898. {melage → assets}/resource/theme/rc/window_grip.png +0 -0
  899. {melage → assets}/resource/theme/rc/window_grip@2x.png +0 -0
  900. {melage → assets}/resource/theme/rc/window_grip_disabled.png +0 -0
  901. {melage → assets}/resource/theme/rc/window_grip_disabled@2x.png +0 -0
  902. {melage → assets}/resource/theme/rc/window_grip_focus.png +0 -0
  903. {melage → assets}/resource/theme/rc/window_grip_focus@2x.png +0 -0
  904. {melage → assets}/resource/theme/rc/window_grip_pressed.png +0 -0
  905. {melage → assets}/resource/theme/rc/window_grip_pressed@2x.png +0 -0
  906. {melage → assets}/resource/theme/rc/window_minimize.png +0 -0
  907. {melage → assets}/resource/theme/rc/window_minimize@2x.png +0 -0
  908. {melage → assets}/resource/theme/rc/window_minimize_disabled.png +0 -0
  909. {melage → assets}/resource/theme/rc/window_minimize_disabled@2x.png +0 -0
  910. {melage → assets}/resource/theme/rc/window_minimize_focus.png +0 -0
  911. {melage → assets}/resource/theme/rc/window_minimize_focus@2x.png +0 -0
  912. {melage → assets}/resource/theme/rc/window_minimize_pressed.png +0 -0
  913. {melage → assets}/resource/theme/rc/window_minimize_pressed@2x.png +0 -0
  914. {melage → assets}/resource/theme/rc/window_undock.png +0 -0
  915. {melage → assets}/resource/theme/rc/window_undock@2x.png +0 -0
  916. {melage → assets}/resource/theme/rc/window_undock_disabled.png +0 -0
  917. {melage → assets}/resource/theme/rc/window_undock_disabled@2x.png +0 -0
  918. {melage → assets}/resource/theme/rc/window_undock_focus.png +0 -0
  919. {melage → assets}/resource/theme/rc/window_undock_focus@2x.png +0 -0
  920. {melage → assets}/resource/theme/rc/window_undock_pressed.png +0 -0
  921. {melage → assets}/resource/theme/rc/window_undock_pressed@2x.png +0 -0
  922. {melage → assets}/resource/theme/style.qss +0 -0
  923. {melage → assets}/resource/tract.png +0 -0
  924. {melage → assets}/resource/view1.png +0 -0
  925. {melage → assets}/resource/view1_eco.png +0 -0
  926. {melage → assets}/resource/view1_mri.png +0 -0
  927. {melage → assets}/resource/view1_seg.png +0 -0
  928. {melage → assets}/resource/view2.png +0 -0
  929. {melage → assets}/resource/view2_seg.png +0 -0
  930. {melage → assets}/resource/w.png +0 -0
  931. {melage → assets}/resource/zoom_inFaded.png +0 -0
  932. /melage/resource/zoom_in.png → /assets/resource/zoom_in_old.png +0 -0
  933. {melage → assets}/resource/zoom_outFaded.png +0 -0
  934. /melage/resource/zoom_out.png → /assets/resource/zoom_out_old.png +0 -0
  935. {resource → docs}/manual_images/3D_rightc.png +0 -0
  936. {resource → docs}/manual_images/3D_rightc_goto.png +0 -0
  937. {resource → docs}/manual_images/3D_rightc_paint.png +0 -0
  938. {resource → docs}/manual_images/3D_rightc_paint_draw1.png +0 -0
  939. {resource → docs}/manual_images/3D_rightc_paint_draw2.png +0 -0
  940. {resource → docs}/manual_images/3D_rightc_paint_render.png +0 -0
  941. {resource → docs}/manual_images/3D_rightc_paint_render2.png +0 -0
  942. {resource → docs}/manual_images/3D_rightc_paint_render3.png +0 -0
  943. {resource → docs}/manual_images/3D_rightc_paint_render4.png +0 -0
  944. {resource → docs}/manual_images/3D_rightc_paint_render5.png +0 -0
  945. {resource → docs}/manual_images/3D_rightc_paint_render6.png +0 -0
  946. {resource → docs}/manual_images/3D_rightc_seg.png +0 -0
  947. {resource → docs}/manual_images/exit_toolbar.png +0 -0
  948. {resource → docs}/manual_images/load_image_file.png +0 -0
  949. {resource → docs}/manual_images/load_image_file_openp.png +0 -0
  950. {resource → docs}/manual_images/main_page.png +0 -0
  951. {resource → docs}/manual_images/menu_file.png +0 -0
  952. {resource → docs}/manual_images/menu_file_export.png +0 -0
  953. {resource → docs}/manual_images/menu_file_import.png +0 -0
  954. {resource → docs}/manual_images/menu_file_settings.png +0 -0
  955. {resource → docs}/manual_images/menu_file_ss.png +0 -0
  956. {resource → docs}/manual_images/open_save_load.png +0 -0
  957. {resource → docs}/manual_images/panning_toolbar.png +0 -0
  958. {resource → docs}/manual_images/segmentation_toolbar.png +0 -0
  959. {resource → docs}/manual_images/tab_mri.png +0 -0
  960. {resource → docs}/manual_images/tab_us.png +0 -0
  961. {resource → docs}/manual_images/tabs.png +0 -0
  962. {resource → docs}/manual_images/toolbar_tools.png +0 -0
  963. {resource → docs}/manual_images/tools_basic.png +0 -0
  964. {resource → docs}/manual_images/tools_bet.png +0 -0
  965. {resource → docs}/manual_images/tools_cs.png +0 -0
  966. {resource → docs}/manual_images/tools_deepbet.png +0 -0
  967. {resource → docs}/manual_images/tools_imageinfo.png +0 -0
  968. {resource → docs}/manual_images/tools_maskO.png +0 -0
  969. {resource → docs}/manual_images/tools_masking.png +0 -0
  970. {resource → docs}/manual_images/tools_n4b.png +0 -0
  971. {resource → docs}/manual_images/tools_resize.png +0 -0
  972. {resource → docs}/manual_images/tools_ruler.png +0 -0
  973. {resource → docs}/manual_images/tools_seg.png +0 -0
  974. {resource → docs}/manual_images/tools_threshold.png +0 -0
  975. {resource → docs}/manual_images/tools_tools.png +0 -0
  976. {resource → docs}/manual_images/widget_color.png +0 -0
  977. {resource → docs}/manual_images/widget_color_add.png +0 -0
  978. {resource → docs}/manual_images/widget_color_add2.png +0 -0
  979. {resource → docs}/manual_images/widget_color_additional.png +0 -0
  980. {resource → docs}/manual_images/widget_images.png +0 -0
  981. {resource → docs}/manual_images/widget_images2.png +0 -0
  982. {resource → docs}/manual_images/widget_images3.png +0 -0
  983. {resource → docs}/manual_images/widget_marker.png +0 -0
  984. {resource → docs}/manual_images/widget_mri.png +0 -0
  985. {resource → docs}/manual_images/widget_mri2.png +0 -0
  986. {resource → docs}/manual_images/widget_segintensity.png +0 -0
  987. {resource → docs}/manual_images/widget_tab_mutualview.png +0 -0
  988. {resource → docs}/manual_images/widget_tab_mutualview2.png +0 -0
  989. {resource → docs}/manual_images/widget_table.png +0 -0
  990. {resource → docs}/manual_images/widget_table2.png +0 -0
  991. {resource → docs}/manual_images/widget_us.png +0 -0
  992. /melage/{widgets/activation.py → dialogs/ActivationDialog.py} +0 -0
  993. /melage/{widgets/HistImage.py → dialogs/HistogramDialog.py} +0 -0
  994. /melage/{widgets/iminfo.py → dialogs/ImInfoDialog.py} +0 -0
  995. /melage/{widgets/colorwidget.py → dialogs/helpers/ColorDialog.py} +0 -0
  996. /melage/{utils/custom_QScrollBar.py → dialogs/helpers/CustomScrollbar.py} +0 -0
  997. /melage/{widgets/repeat_widget.py → dialogs/helpers/RepeatDialog.py} +0 -0
  998. /melage/{widgets/screenshot_widget.py → dialogs/helpers/ScreenshotDialog.py} +0 -0
  999. /melage/{cli.py → melage.py} +0 -0
  1000. /melage/{utils/brain_extraction_helper.py → plugins/bet/main/utils.py} +0 -0
  1001. /melage/{graphics → rendering}/GLGraphicsItem.py +0 -0
  1002. /melage/{graphics → rendering}/GLViewWidget.py +0 -0
  1003. /melage/{graphics → rendering}/Transform3D.py +0 -0
  1004. /melage/{graphics → rendering}/__init__.py +0 -0
  1005. /melage/{graphics → rendering}/functions.py +0 -0
  1006. /melage/{utils → rendering/helpers}/Shaders_120.py +0 -0
  1007. /melage/{utils → rendering/helpers}/Shaders_330.py +0 -0
  1008. /melage/{graphics → rendering}/items/GLAxisItem.py +0 -0
  1009. /melage/{graphics → rendering}/items/GLGridItem.py +0 -0
  1010. /melage/{graphics → rendering}/items/GLPolygonItem.py +0 -0
  1011. /melage/{graphics → rendering}/items/GLScatterPlotItem.py +0 -0
  1012. /melage/{graphics → rendering}/items/GLVolumeItem.py +0 -0
  1013. /melage/{graphics → rendering}/items/GLVolumeItem_b.py +0 -0
  1014. /melage/{graphics → rendering}/items/__init__.py +0 -0
  1015. /melage/{graphics → rendering}/shaders.py +0 -0
  1016. /melage/widgets/{enhanceImWidget.py → EnhanceImageWidget.py} +0 -0
  1017. {melage-0.0.68.dist-info → melage-1.0.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,197 @@
1
+ import numpy as np
2
+ from PyQt5.QtWidgets import QMessageBox
3
+ from melage.widgets import MelagePlugin
4
+ from melage.dialogs.dynamic_gui import DynamicDialog
5
+ from .change_coord_schema import get_schema
6
+ from PyQt5.QtCore import Qt
7
+ from PyQt5.QtCore import pyqtSignal
8
+ from .main.utils import changeCoordSystem
9
+ # --- THE LOGIC CLASS ---
10
+ class ChangeCoordLogic(DynamicDialog):
11
+ """
12
+ This class handles the BRAIN of the WarpSeg tool.
13
+ The LOOKS are handled automatically by DynamicDialog + Schema.
14
+ """
15
+ completed = pyqtSignal(object)
16
+ AXIS_GROUPS = [
17
+ {'R', 'L'},
18
+ {'A', 'P'},
19
+ {'S', 'I'}
20
+ ]
21
+ ALL_OPTIONS = ['R', 'L', 'A', 'P', 'S', 'I']
22
+
23
+ def __init__(self, data_context,parent=None):
24
+ # 1. Initialize DynamicDialog with the Schema
25
+ # This single line builds the entire window!
26
+
27
+ super().__init__(parent)
28
+ self.create_main_ui(schema=get_schema(), default_items=False)
29
+ self.setAttribute(Qt.WA_DeleteOnClose)
30
+ self.data_context = data_context
31
+
32
+ # 2. AUTOMATICALLY WIDGET BINDING
33
+ # Iterate over all widgets created by the schema and bind them to 'self'.
34
+ for widget_id, widget_obj in self.widgets.items():
35
+ setattr(self, widget_id, widget_obj)
36
+
37
+ # 3. GENERAL PURPOSE SIGNAL CONNECTION (Auto-Connect)
38
+ # Instead of a hardcoded dictionary, we iterate through every widget from the schema
39
+ # and look for a matching method in this class named: on_<ID>_<Signal>
40
+ # This works for ANY schema changes automatically.
41
+ supported_signals = [
42
+ "clicked", "toggled", "currentIndexChanged",
43
+ "textChanged", "valueChanged"
44
+ ]
45
+
46
+ for widget_id, widget_obj in self.widgets.items():
47
+ for signal_name in supported_signals:
48
+ # 1. Check if the widget has this signal (e.g., Button has 'clicked')
49
+ if hasattr(widget_obj, signal_name):
50
+ # 2. Check if WE have a handler method (e.g., 'on_btn_apply_clicked')
51
+ handler_name = f"on_{widget_id}_{signal_name}"
52
+ if hasattr(self, handler_name):
53
+ # 3. Connect them!
54
+ signal = getattr(widget_obj, signal_name)
55
+ handler = getattr(self, handler_name)
56
+ # Disconnect first to be safe (idempotent), then connect
57
+ try:
58
+ signal.disconnect(handler)
59
+ except TypeError:
60
+ pass
61
+ signal.connect(handler)
62
+ # print(f"Auto-connected: {widget_id}.{signal_name} -> {handler_name}")
63
+ self.update_2nd_combo()
64
+
65
+ @property
66
+ def ui_schema(self):
67
+ # We call the function to get the dictionary
68
+ return get_schema()
69
+
70
+ def get_axis_group(self, letter):
71
+ """Helper: Returns the set containing the letter (e.g., 'R' -> {'R', 'L'})"""
72
+ for group in self.AXIS_GROUPS:
73
+ if letter in group:
74
+ return group
75
+ return set()
76
+
77
+ def update_2nd_combo(self):
78
+ """
79
+ Filters Combo 2 based on Combo 1 selection.
80
+ """
81
+ selection_1 = self.combo_1st.currentText()
82
+ forbidden_group = self.get_axis_group(selection_1)
83
+
84
+ # Calculate allowed options for 2nd box
85
+ # Logic: All Options MINUS the axis used in box 1
86
+ allowed = [opt for opt in self.ALL_OPTIONS if opt not in forbidden_group]
87
+
88
+ # Repopulate 2nd Combo
89
+ self._repopulate_combo(self.combo_2nd, allowed)
90
+
91
+ # Force update of 3rd combo because 2nd changed
92
+ self.update_3rd_combo()
93
+
94
+ def update_3rd_combo(self):
95
+ """
96
+ Filters Combo 3 based on Combo 1 AND Combo 2 selection.
97
+ """
98
+ selection_1 = self.combo_1st.currentText()
99
+ selection_2 = self.combo_2nd.currentText()
100
+
101
+ group_1 = self.get_axis_group(selection_1)
102
+ group_2 = self.get_axis_group(selection_2)
103
+
104
+ # Calculate allowed options for 3rd box
105
+ # Logic: All Options MINUS axis 1 MINUS axis 2
106
+ allowed = [
107
+ opt for opt in self.ALL_OPTIONS
108
+ if opt not in group_1 and opt not in group_2
109
+ ]
110
+
111
+ # Repopulate 3rd Combo
112
+ self._repopulate_combo(self.combo_3rd, allowed)
113
+
114
+ def _repopulate_combo(self, combo_widget, allowed_options):
115
+ """
116
+ Safely updates items while trying to preserve the current selection.
117
+ """
118
+ current_val = combo_widget.currentText()
119
+
120
+ # Block signals to prevent infinite recursion loops during update
121
+ combo_widget.blockSignals(True)
122
+ combo_widget.clear()
123
+ combo_widget.addItems(allowed_options)
124
+
125
+ # Try to restore previous selection, otherwise pick index 0
126
+ index = combo_widget.findText(current_val)
127
+ if index >= 0:
128
+ combo_widget.setCurrentIndex(index)
129
+ else:
130
+ combo_widget.setCurrentIndex(0)
131
+
132
+ combo_widget.blockSignals(False)
133
+
134
+ # Renamed from 'run_process' to match the schema ID 'btn_apply'
135
+ def on_btn_apply_clicked(self):
136
+ view = self.combo_view.currentText()
137
+ data_view = self.data_context[view]
138
+ if data_view is None:
139
+ QMessageBox.information(self, "Error", "No image data available for the selected view.")
140
+ return
141
+
142
+ try:
143
+ """The main execution function."""
144
+ self.progress_bar.setValue(10)
145
+
146
+ data = data_view.get_fdata().copy()
147
+ if len(data.shape)<=1:
148
+ raise ValueError("Input image must be at least 2D NIfTI.")
149
+
150
+ el_1 = self.combo_1st.currentText()
151
+ el_2 = self.combo_2nd.currentText()
152
+ el_3 = self.combo_3rd.currentText()
153
+ target = f"{el_1}{el_2}{el_3}"
154
+ used_axes = [self.get_axis_group(x) for x in [el_1, el_2, el_3]]
155
+ unique_axes = set(tuple(s) for s in used_axes)
156
+
157
+ if len(unique_axes) != 3:
158
+ raise ValueError(f"Invalid orientation {target}. Axes must be orthogonal.")
159
+ if np.unique([el_1, el_2, el_3]).shape[0]!=3:
160
+ QMessageBox.information(self, "INVALID COORDINATION SYSTEM", f"{target} is not a valid coorrdiantion system")
161
+ self.progress_bar.setValue(0)
162
+ return
163
+ im = changeCoordSystem(im=data_view, target=target)
164
+ result_package = {
165
+ "image": im.get_fdata(),
166
+ "affine": im.affine,
167
+ "label": np.zeros_like(im.get_fdata()),
168
+ "view": view
169
+ }
170
+ self.completed.emit(result_package)
171
+ self.progress_bar.setValue(100)
172
+ #QMessageBox.information(self, "Done", "Segmentation Complete")
173
+
174
+ except Exception as e:
175
+ QMessageBox.information(self, "Error", f"{e}")
176
+ self.progress_bar.setValue(0)
177
+
178
+ def on_context_action(self, text, widget):
179
+ """Handle the Right-Click Context Menu defined in schema"""
180
+ if text == "Reset Adult Options":
181
+ # Access radio button directly by ID
182
+ self.radio_adult_whole.setChecked(True)
183
+ print("Options reset.")
184
+
185
+
186
+ # --- THE PLUGIN WRAPPER ---
187
+ class ChangeCoordPlugin(MelagePlugin):
188
+ @property
189
+ def name(self) -> str: return "Change Coord Sys."
190
+
191
+ @property
192
+ def category(self) -> str: return "Basic"
193
+
194
+
195
+ def get_widget(self, data_context =None,parent=None):
196
+ logic = ChangeCoordLogic(data_context, parent)
197
+ return logic
@@ -0,0 +1,31 @@
1
+
2
+ from ..ui_helpers import Label, Combo, Check, Radio, Group, Button, Progress, HBox, FilePicker, SpinBox, Reference
3
+
4
+ # The simplified schema using helper functions.
5
+ # The main layout defaults to 'vbox', so items stack automatically.
6
+ def get_schema():
7
+ UI_SCHEMA = {
8
+ "title": "Enhanced spatial Fuzzy C-Means algorithm ...",
9
+ "min_width": 500,
10
+ "layout": "vbox",
11
+ "items": [
12
+ #Label(id="lbl_model_info", text="Model Info: Ready for Ifant brain segmentation"),
13
+ Reference(
14
+ "<b>Jafrasteh et al. (2024)</b>. <i>'Enhanced Spatial Fuzzy C-Means...'</i>. "
15
+ '<a href="https://link.springer.com/article/10.1007/s12021-024-09661-x">(paper)</a>'
16
+
17
+ ),
18
+ Group(id="group_mode", layout="hbox", title="Destination",children=[
19
+ Combo(id="combo_1st", label="", options=["R", "L", "P", "A", "I", "S"], default="R", function_name="update_2nd_combo"),
20
+ Combo(id="combo_2nd", label="", options=["R", "L", "P", "A", "I", "S"], default="A", function_name="update_3rd_combo"),
21
+ Combo(id="combo_3rd", label="", options=["R", "L", "P", "A", "I", "S"], default="S"),
22
+ ]),
23
+
24
+ HBox([
25
+ Progress(id="progress_bar"),
26
+ Button(id="btn_apply", text="Apply", default=True)
27
+ ])
28
+
29
+ ]
30
+ }
31
+ return UI_SCHEMA
@@ -0,0 +1,15 @@
1
+ from melage.utils.utils import convert_to_ras
2
+ import nibabel as nib
3
+ def changeCoordSystem(im, target):
4
+ """
5
+ Changing coordinate system of image
6
+ :param target:
7
+ :return:
8
+ """
9
+ previous_affine = im.affine
10
+ previous_header = im.header
11
+ transform, source_system = convert_to_ras(im.affine, target=target)
12
+ if source_system == target:
13
+ return im
14
+ im = im.as_reoriented(transform)
15
+ return nib.Nifti1Image(im.get_fdata(),affine=previous_affine, header=previous_header)
@@ -1,8 +1,6 @@
1
1
  import numpy as np
2
2
 
3
- from melage.widgets.Segmentation.utils import BiasCorrection
4
- from melage.widgets.Segmentation.utils import create_window_3D, ssim3D
5
- from melage.widgets.Segmentation.utils import LargestCC, \
3
+ from .utils import BiasCorrection, create_window_3D, ssim3D, LargestCC, \
6
4
  update_according_to_neighbours_conv, neighborhood_conv, axis_based_convolution, adjust_common_structures, \
7
5
  compute_sdf, rescale_between_a_b
8
6
  from sklearn.preprocessing import PolynomialFeatures
@@ -311,11 +309,11 @@ class esFCM(FCM):
311
309
  if fast_method:
312
310
  if self._is2D:
313
311
  cost_ssim, ssim_map = ssim(s1.squeeze() / s1.max(), s2.squeeze() / s2.max(), full=True,
314
- win_size=11)
312
+ win_size=11, data_range=1)
315
313
  ssim_map = np.expand_dims(ssim_map, np.where(self._imdim)[0][0])
316
314
  else:
317
315
  cost_ssim, ssim_map = ssim(s1 / s1.max(), s2 / s2.max(), full=True,
318
- win_size=11)
316
+ win_size=11, data_range=1)
319
317
  else: # faster
320
318
  ssim_map = ssim3D(s1 / s1.max(), s2 / s2.max(), self.window,
321
319
  self.window.shape[-1], 1, contrast=False)
@@ -0,0 +1,57 @@
1
+ from .FCM import esFCM, FCM, FCM_pure
2
+ from .utils import remove_zero
3
+ import numpy as np
4
+ def get_inference(model_name, progressBar, im, affine, num_tissues, post_correction, max_iter):
5
+ if affine is None:
6
+ affine = np.eye(4) # put identity if affine is None
7
+ use_ssim = True
8
+ padding = 0
9
+ image_range = 1000
10
+ tissue_labels = None
11
+ fuzziness = 3
12
+ constraint = False
13
+ InitMethod = 'otsu'
14
+ if num_tissues > 3 and not constraint:
15
+ post_correction = False
16
+ InitMethod = "kmeans"
17
+
18
+ epsilon = 5e-3
19
+ shape_init = im.shape
20
+ image_used, pad_zero = remove_zero(im, 0)
21
+ if model_name.lower() == 'esfcm':
22
+
23
+ model = esFCM(image_used, affine,
24
+ image_range, num_tissues, fuzziness,
25
+ epsilon=epsilon, max_iter=max_iter,
26
+ padding=padding,
27
+ tissuelabels=tissue_labels,
28
+ mask=image_used > 0, use_ssim=use_ssim)
29
+ try:
30
+ model.initialize_fcm(initialization_method=InitMethod)
31
+ except:
32
+ model.initialize_fcm(initialization_method='kmeans')
33
+
34
+ model.fit(progressBar)
35
+ seg1 = model.predict(use_softmax=True).astype('int')
36
+ seg_init2 = np.zeros(shape_init)
37
+ seg_init2[pad_zero[0][0]:pad_zero[0][1] + 1, pad_zero[1][0]:pad_zero[1][1] + 1,
38
+ pad_zero[2][0]:pad_zero[2][1] + 1] = seg1
39
+ return seg_init2
40
+
41
+ elif model_name.lower() == 'fcm':
42
+ from melage.core.Segmentation.FCM import FCM_pure as FCM
43
+
44
+ model = FCM(image_used, affine, None,
45
+ image_range, num_tissues, fuzziness,
46
+ epsilon=epsilon, max_iter=max_iter,
47
+ padding=padding, constraint=False, post_correction=post_correction, mask=image_used > 0)
48
+ try:
49
+ model.initialize_fcm(initialization_method=InitMethod)
50
+ except:
51
+ model.initialize_fcm(initialization_method='kmeans')
52
+ model.fit(progressBar)
53
+ seg1 = model.predict(use_softmax=True).astype('int')
54
+ seg_init2 = np.zeros(shape_init)
55
+ seg_init2[pad_zero[0][0]:pad_zero[0][1] + 1, pad_zero[1][0]:pad_zero[1][1] + 1,
56
+ pad_zero[2][0]:pad_zero[2][1] + 1] = seg1
57
+ return seg_init2
@@ -12,6 +12,26 @@ from scipy.ndimage import binary_fill_holes
12
12
  from scipy.ndimage import distance_transform_edt as edistance
13
13
  from scipy.ndimage import distance_transform_cdt as chdistance
14
14
 
15
+ def remove_zero(f_data, value=0):
16
+ """
17
+ Remove non segmented areas from image
18
+ :param f_data:
19
+ :param value:
20
+ :return:
21
+ """
22
+
23
+ xs, ys, zs = np.where(f_data > value) # find zero values
24
+ tol = 4
25
+
26
+ min_max = []
27
+ for x in [xs, ys, zs]:
28
+ minx = min(x) - tol if min(x) - tol > 1 else min(x)
29
+ maxx = max(x) + tol if max(x) + tol < f_data.shape[0] - 1 else max(x)
30
+ min_max.append([minx, maxx])
31
+ f_data = f_data[min_max[0][0]:min_max[0][1] + 1, min_max[1][0]:min_max[1][1] + 1, min_max[2][0]:min_max[2][1] + 1]
32
+
33
+ return f_data, min_max
34
+
15
35
  def compute_sdf(segmentation, distance_use='edt', bounded=True):
16
36
  """BY B
17
37
  compute the signed distance map of binary mask
@@ -0,0 +1,124 @@
1
+ from PyQt5.QtWidgets import QMessageBox
2
+ from melage.widgets import MelagePlugin
3
+ from melage.dialogs.dynamic_gui import DynamicDialog
4
+ from .tissue_segmentation_schema import get_schema
5
+ from PyQt5 import QtWidgets
6
+ from .main.test import get_inference
7
+ import torch
8
+ from PyQt5.QtCore import Qt
9
+ from melage.config import settings
10
+ import os
11
+ from PyQt5.QtCore import pyqtSignal
12
+ # --- THE LOGIC CLASS ---
13
+ class esFCMLogic(DynamicDialog):
14
+ """
15
+ This class handles the BRAIN of the WarpSeg tool.
16
+ The LOOKS are handled automatically by DynamicDialog + Schema.
17
+ """
18
+ completed = pyqtSignal(object)
19
+ def __init__(self, data_context,parent=None):
20
+ # 1. Initialize DynamicDialog with the Schema
21
+ # This single line builds the entire window!
22
+
23
+ super().__init__(parent)
24
+ self.create_main_ui(schema=get_schema(), default_items=False)
25
+ self.setAttribute(Qt.WA_DeleteOnClose)
26
+ self.data_context = data_context
27
+
28
+ # 2. AUTOMATICALLY WIDGET BINDING
29
+ # Iterate over all widgets created by the schema and bind them to 'self'.
30
+ for widget_id, widget_obj in self.widgets.items():
31
+ setattr(self, widget_id, widget_obj)
32
+
33
+ # 3. GENERAL PURPOSE SIGNAL CONNECTION (Auto-Connect)
34
+ # Instead of a hardcoded dictionary, we iterate through every widget from the schema
35
+ # and look for a matching method in this class named: on_<ID>_<Signal>
36
+ # This works for ANY schema changes automatically.
37
+ supported_signals = [
38
+ "clicked", "toggled", "currentIndexChanged",
39
+ "textChanged", "valueChanged"
40
+ ]
41
+
42
+ for widget_id, widget_obj in self.widgets.items():
43
+ for signal_name in supported_signals:
44
+ # 1. Check if the widget has this signal (e.g., Button has 'clicked')
45
+ if hasattr(widget_obj, signal_name):
46
+ # 2. Check if WE have a handler method (e.g., 'on_btn_apply_clicked')
47
+ handler_name = f"on_{widget_id}_{signal_name}"
48
+ if hasattr(self, handler_name):
49
+ # 3. Connect them!
50
+ signal = getattr(widget_obj, signal_name)
51
+ handler = getattr(self, handler_name)
52
+ # Disconnect first to be safe (idempotent), then connect
53
+ try:
54
+ signal.disconnect(handler)
55
+ except TypeError:
56
+ pass
57
+ signal.connect(handler)
58
+ # print(f"Auto-connected: {widget_id}.{signal_name} -> {handler_name}")
59
+
60
+
61
+ @property
62
+ def ui_schema(self):
63
+ # We call the function to get the dictionary
64
+ return get_schema()
65
+
66
+
67
+
68
+
69
+ # Renamed from 'run_process' to match the schema ID 'btn_apply'
70
+ def on_btn_apply_clicked(self):
71
+ view = self.combo_view.currentText()
72
+ data_view = self.data_context[view]
73
+ if data_view is None:
74
+ QMessageBox.information(self, "Error", "No image data available for the selected view.")
75
+ return
76
+
77
+ try:
78
+ """The main execution function."""
79
+ self.progress_bar.setValue(10)
80
+
81
+ data = data_view.get_fdata().copy()
82
+ if len(data.shape)<=1:
83
+ raise ValueError("Input image must be at least 2D NIfTI.")
84
+
85
+ model_name = self.combo_method.currentText()
86
+ num_tissues = int(self.spin_num_classes.value())
87
+ max_iter = int(self.spin_max_iter.value())
88
+ seg = get_inference(model_name, self.progress_bar, data, affine=None, num_tissues=num_tissues,
89
+ post_correction=True, max_iter=max_iter)
90
+ seg = seg.astype('int')
91
+ result_package = {
92
+ "image": None,
93
+ "label": seg,
94
+ "view": view
95
+ }
96
+ self.completed.emit(result_package)
97
+ self.progress_bar.setValue(100)
98
+ #QMessageBox.information(self, "Done", "Segmentation Complete")
99
+
100
+ except Exception as e:
101
+ QMessageBox.information(self, "Error", f"{e}")
102
+ self.progress_bar.setValue(0)
103
+
104
+ def on_context_action(self, text, widget):
105
+ """Handle the Right-Click Context Menu defined in schema"""
106
+ if text == "Reset Adult Options":
107
+ # Access radio button directly by ID
108
+ self.radio_adult_whole.setChecked(True)
109
+ print("Options reset.")
110
+
111
+
112
+ # --- THE PLUGIN WRAPPER ---
113
+ class WarpSegPlugin(MelagePlugin):
114
+ @property
115
+ def name(self) -> str: return "FCM"
116
+
117
+ @property
118
+ def category(self) -> str: return "UnSupervised Segmentation"
119
+
120
+
121
+ def get_widget(self, data_context =None,parent=None):
122
+ logic = esFCMLogic(data_context, parent)
123
+
124
+ return logic
@@ -0,0 +1,33 @@
1
+
2
+ from ..ui_helpers import Label, Combo, Check, Radio, Group, Button, Progress, HBox, FilePicker, SpinBox, Reference
3
+
4
+ # The simplified schema using helper functions.
5
+ # The main layout defaults to 'vbox', so items stack automatically.
6
+ def get_schema():
7
+ UI_SCHEMA = {
8
+ "title": "Enhanced spatial Fuzzy C-Means algorithm ...",
9
+ "min_width": 500,
10
+ "layout": "vbox",
11
+ "items": [
12
+ #Label(id="lbl_model_info", text="Model Info: Ready for Ifant brain segmentation"),
13
+ Reference(
14
+ "<b>Jafrasteh et al. (2024)</b>. <i>'Enhanced Spatial Fuzzy C-Means...'</i>. "
15
+ '<a href="https://link.springer.com/article/10.1007/s12021-024-09661-x">(paper)</a>'
16
+
17
+ ),
18
+ Combo(id="combo_method", label="Select Method:", options=["esFCM", "FCM"]),
19
+ Group(id="group_mode", layout="hbox", children=[
20
+ SpinBox(id="spin_num_classes", label="Number of classes:", value=3, min_val=2, max_val=50,
21
+ step=1, decimals=0),
22
+ SpinBox(id="spin_max_iter", label="Max No of Iter:", value=50, min_val=2, max_val=500,
23
+ step=1, decimals=0),
24
+ ]),
25
+
26
+ HBox([
27
+ Progress(id="progress_bar"),
28
+ Button(id="btn_apply", text="Apply", default=True)
29
+ ])
30
+
31
+ ]
32
+ }
33
+ return UI_SCHEMA
@@ -0,0 +1,115 @@
1
+ import numpy as np
2
+ from PyQt5.QtWidgets import QMessageBox
3
+ from melage.widgets import MelagePlugin
4
+ from melage.dialogs.dynamic_gui import DynamicDialog
5
+ from .mo_schema import get_schema
6
+ from PyQt5.QtCore import Qt
7
+ from PyQt5.QtCore import pyqtSignal
8
+ import SimpleITK as sitk
9
+
10
+
11
+
12
+ #from .main.utils import changeCoordSystem
13
+ # --- THE LOGIC CLASS ---
14
+ class MainLogic(DynamicDialog):
15
+ """
16
+ This class handles the BRAIN of the WarpSeg tool.
17
+ The LOOKS are handled automatically by DynamicDialog + Schema.
18
+ """
19
+ completed = pyqtSignal(object)
20
+
21
+
22
+ def __init__(self, data_context,parent=None):
23
+ # 1. Initialize DynamicDialog with the Schema
24
+ # This single line builds the entire window!
25
+
26
+ super().__init__(parent)
27
+ self.create_main_ui(schema=get_schema(), default_items=False)
28
+ self.setAttribute(Qt.WA_DeleteOnClose)
29
+ self.data_context = data_context
30
+
31
+ # 2. AUTOMATICALLY WIDGET BINDING
32
+ # Iterate over all widgets created by the schema and bind them to 'self'.
33
+ for widget_id, widget_obj in self.widgets.items():
34
+ setattr(self, widget_id, widget_obj)
35
+
36
+ # 3. GENERAL PURPOSE SIGNAL CONNECTION (Auto-Connect)
37
+ # Instead of a hardcoded dictionary, we iterate through every widget from the schema
38
+ # and look for a matching method in this class named: on_<ID>_<Signal>
39
+ # This works for ANY schema changes automatically.
40
+ supported_signals = [
41
+ "clicked", "toggled", "currentIndexChanged",
42
+ "textChanged", "valueChanged"
43
+ ]
44
+
45
+ for widget_id, widget_obj in self.widgets.items():
46
+ for signal_name in supported_signals:
47
+ # 1. Check if the widget has this signal (e.g., Button has 'clicked')
48
+ if hasattr(widget_obj, signal_name):
49
+ # 2. Check if WE have a handler method (e.g., 'on_btn_apply_clicked')
50
+ handler_name = f"on_{widget_id}_{signal_name}"
51
+ if hasattr(self, handler_name):
52
+ # 3. Connect them!
53
+ signal = getattr(widget_obj, signal_name)
54
+ handler = getattr(self, handler_name)
55
+ # Disconnect first to be safe (idempotent), then connect
56
+ try:
57
+ signal.disconnect(handler)
58
+ except TypeError:
59
+ pass
60
+ signal.connect(handler)
61
+ # print(f"Auto-connected: {widget_id}.{signal_name} -> {handler_name}")
62
+
63
+
64
+ @property
65
+ def ui_schema(self):
66
+ # We call the function to get the dictionary
67
+ return get_schema()
68
+
69
+
70
+ # Renamed from 'run_process' to match the schema ID 'btn_apply'
71
+ def on_btn_apply_clicked(self):
72
+ view = self.combo_view.currentText()
73
+ data_view = self.data_context[view]
74
+ if data_view is None:
75
+ QMessageBox.information(self, "Error", "No image data available for the selected view.")
76
+ return
77
+
78
+ try:
79
+ """The main execution function."""
80
+ self.progress_bar.setValue(0)
81
+ max_iters = int(self.iteration.value())
82
+ numberFittingLevels = int((self.fit_lvl.value()))
83
+ shrinkFactor = int((self.shrink_fct.value()))
84
+ status_otsu = self.check_otsu.isChecked()
85
+ im = N4_bias_correction(data_view, use_otsu=status_otsu, shrinkFactor=shrinkFactor,
86
+ numberFittingLevels=numberFittingLevels, max_iter=max_iters)
87
+ result_package = {
88
+ "image": im.get_fdata(),
89
+ "affine": im.affine,
90
+ "label": np.zeros_like(im.get_fdata()),
91
+ "view": view
92
+ }
93
+ self.completed.emit(result_package)
94
+ self.progress_bar.setValue(100)
95
+ #QMessageBox.information(self, "Done", "Segmentation Complete")
96
+
97
+ except Exception as e:
98
+ QMessageBox.information(self, "Error", f"{e}")
99
+ self.progress_bar.setValue(0)
100
+
101
+
102
+
103
+
104
+ # --- THE PLUGIN WRAPPER ---
105
+ class AuxPlugin(MelagePlugin):
106
+ @property
107
+ def name(self) -> str: return "Masking Operation"
108
+
109
+ @property
110
+ def category(self) -> str: return "Basic"
111
+
112
+
113
+ def get_widget(self, data_context =None,parent=None):
114
+ logic = MainLogic(data_context, parent)
115
+ return logic
@@ -0,0 +1,33 @@
1
+
2
+ from ..ui_helpers import Label, Combo, Check, Radio, Group, Button, Progress, HBox, FilePicker, SpinBox, Reference
3
+
4
+ # The simplified schema using helper functions.
5
+ # The main layout defaults to 'vbox', so items stack automatically.
6
+ def get_schema():
7
+
8
+
9
+ UI_SCHEMA = {
10
+ "title": "N4 Bias Field Correction",
11
+ "min_width": 310,
12
+ "layout": "vbox",
13
+ "items": [
14
+
15
+
16
+
17
+ Group(id="group_mode", layout="hbox", title="Operation",children=[
18
+ Combo(id="combo_1", label="Label 1", options=[],),
19
+ Combo(id="combo_operation", label="", options=["/", "*", "-", "+"], default="+"),
20
+ Combo(id="combo_2", label="Label 2", options=[]),
21
+ ]),
22
+
23
+
24
+
25
+
26
+ # --- Bottom Row: Progress + Apply ---
27
+ HBox(children=[
28
+ Progress(id="progress_bar"),
29
+ Button(id="btn_apply", text="Apply", default=True)
30
+ ])
31
+ ]
32
+ }
33
+ return UI_SCHEMA