melage 0.0.65__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 (501) hide show
  1. melage/__init__.py +16 -0
  2. melage/cli.py +4 -0
  3. melage/graphics/GLGraphicsItem.py +286 -0
  4. melage/graphics/GLViewWidget.py +595 -0
  5. melage/graphics/Transform3D.py +55 -0
  6. melage/graphics/__init__.py +8 -0
  7. melage/graphics/functions.py +101 -0
  8. melage/graphics/items/GLAxisItem.py +149 -0
  9. melage/graphics/items/GLGridItem.py +178 -0
  10. melage/graphics/items/GLPolygonItem.py +77 -0
  11. melage/graphics/items/GLScatterPlotItem.py +135 -0
  12. melage/graphics/items/GLVolumeItem.py +280 -0
  13. melage/graphics/items/GLVolumeItem_b.py +237 -0
  14. melage/graphics/items/__init__.py +0 -0
  15. melage/graphics/shaders.py +202 -0
  16. melage/main.py +270 -0
  17. melage/requirements22.txt +25 -0
  18. melage/requirements_old.txt +28 -0
  19. melage/resource/0circle.png +0 -0
  20. melage/resource/0circle_faded.png +0 -0
  21. melage/resource/3d.png +0 -0
  22. melage/resource/3d.psd +0 -0
  23. melage/resource/3dFaded.png +0 -0
  24. melage/resource/Eraser.png +0 -0
  25. melage/resource/EraserFaded.png +0 -0
  26. melage/resource/EraserX.png +0 -0
  27. melage/resource/EraserXFaded.png +0 -0
  28. melage/resource/Eraser_icon.svg +79 -0
  29. melage/resource/Hand.png +0 -0
  30. melage/resource/HandIcons_0.png +0 -0
  31. melage/resource/Hand_IX.png +0 -0
  32. melage/resource/Hand_IXFaded.png +0 -0
  33. melage/resource/Handsqueezed.png +0 -0
  34. melage/resource/Handwriting (copy).png +0 -0
  35. melage/resource/Handwriting.png +0 -0
  36. melage/resource/HandwritingMinus.png +0 -0
  37. melage/resource/HandwritingMinusX.png +0 -0
  38. melage/resource/HandwritingPlus.png +0 -0
  39. melage/resource/HandwritingPlusX.png +0 -0
  40. melage/resource/Move_icon.svg +8 -0
  41. melage/resource/PngItem_2422924.png +0 -0
  42. melage/resource/about.png +0 -0
  43. melage/resource/about_logo.png +0 -0
  44. melage/resource/about_logo0.png +0 -0
  45. melage/resource/action_check.png +0 -0
  46. melage/resource/action_check_OFF.png +0 -0
  47. melage/resource/arrow).png +0 -0
  48. melage/resource/arrow.png +0 -0
  49. melage/resource/arrowFaded.png +0 -0
  50. melage/resource/arrow_org.png +0 -0
  51. melage/resource/arrow_org.png.png +0 -0
  52. melage/resource/arrows.png +0 -0
  53. melage/resource/authors.mp4 +0 -0
  54. melage/resource/box.png +0 -0
  55. melage/resource/check-image-icon-0.jpg +0 -0
  56. melage/resource/circle.png +0 -0
  57. melage/resource/circle_faded.png +0 -0
  58. melage/resource/circle_or.png +0 -0
  59. melage/resource/close.png +0 -0
  60. melage/resource/close_bg.png +0 -0
  61. melage/resource/color/Simple.txt +18 -0
  62. melage/resource/color/Tissue.txt +24 -0
  63. melage/resource/color/Tissue12.txt +27 -0
  64. melage/resource/color/albert_LUT.txt +102 -0
  65. melage/resource/color/mcrib_LUT.txt +102 -0
  66. melage/resource/color/pediatric1.txt +29 -0
  67. melage/resource/color/pediatric1_old.txt +27 -0
  68. melage/resource/color/pediatric2.txt +87 -0
  69. melage/resource/color/pediatric3.txt +29 -0
  70. melage/resource/color/pediatrics (copy).csv +103 -0
  71. melage/resource/color/tissue_seg.txt +4 -0
  72. melage/resource/contour.png +0 -0
  73. melage/resource/contour.svg +2 -0
  74. melage/resource/contourFaded.png +0 -0
  75. melage/resource/contourX.png +0 -0
  76. melage/resource/contourXFaded.png +0 -0
  77. melage/resource/dti.png +0 -0
  78. melage/resource/dti0.png +0 -0
  79. melage/resource/dti222.png +0 -0
  80. melage/resource/dti_or.png +0 -0
  81. melage/resource/eco.png +0 -0
  82. melage/resource/eco22.png +0 -0
  83. melage/resource/eco_old.png +0 -0
  84. melage/resource/eco_or.png +0 -0
  85. melage/resource/eco_or2.png +0 -0
  86. melage/resource/eco_seg.png +0 -0
  87. melage/resource/eco_seg_old.png +0 -0
  88. melage/resource/export.png +0 -0
  89. melage/resource/hand-grab-icon-10.jpg +0 -0
  90. melage/resource/hand-grab-icon-25.jpg +0 -0
  91. melage/resource/info.png +0 -0
  92. melage/resource/line.png +0 -0
  93. melage/resource/linefaded.png +0 -0
  94. melage/resource/load.png +0 -0
  95. melage/resource/main.ico +0 -0
  96. melage/resource/manual_images/3D_rightc.png +0 -0
  97. melage/resource/manual_images/3D_rightc_goto.png +0 -0
  98. melage/resource/manual_images/3D_rightc_paint.png +0 -0
  99. melage/resource/manual_images/3D_rightc_paint_draw1.png +0 -0
  100. melage/resource/manual_images/3D_rightc_paint_draw2.png +0 -0
  101. melage/resource/manual_images/3D_rightc_paint_render.png +0 -0
  102. melage/resource/manual_images/3D_rightc_paint_render2.png +0 -0
  103. melage/resource/manual_images/3D_rightc_paint_render3.png +0 -0
  104. melage/resource/manual_images/3D_rightc_paint_render4.png +0 -0
  105. melage/resource/manual_images/3D_rightc_paint_render5.png +0 -0
  106. melage/resource/manual_images/3D_rightc_paint_render6.png +0 -0
  107. melage/resource/manual_images/3D_rightc_seg.png +0 -0
  108. melage/resource/manual_images/exit_toolbar.png +0 -0
  109. melage/resource/manual_images/load_image_file.png +0 -0
  110. melage/resource/manual_images/load_image_file_openp.png +0 -0
  111. melage/resource/manual_images/main_page.png +0 -0
  112. melage/resource/manual_images/menu_file.png +0 -0
  113. melage/resource/manual_images/menu_file_export.png +0 -0
  114. melage/resource/manual_images/menu_file_import.png +0 -0
  115. melage/resource/manual_images/menu_file_settings.png +0 -0
  116. melage/resource/manual_images/menu_file_ss.png +0 -0
  117. melage/resource/manual_images/open_save_load.png +0 -0
  118. melage/resource/manual_images/panning_toolbar.png +0 -0
  119. melage/resource/manual_images/segmentation_toolbar.png +0 -0
  120. melage/resource/manual_images/tab_mri.png +0 -0
  121. melage/resource/manual_images/tab_us.png +0 -0
  122. melage/resource/manual_images/tabs.png +0 -0
  123. melage/resource/manual_images/toolbar_tools.png +0 -0
  124. melage/resource/manual_images/tools_basic.png +0 -0
  125. melage/resource/manual_images/tools_bet.png +0 -0
  126. melage/resource/manual_images/tools_cs.png +0 -0
  127. melage/resource/manual_images/tools_deepbet.png +0 -0
  128. melage/resource/manual_images/tools_imageinfo.png +0 -0
  129. melage/resource/manual_images/tools_maskO.png +0 -0
  130. melage/resource/manual_images/tools_masking.png +0 -0
  131. melage/resource/manual_images/tools_n4b.png +0 -0
  132. melage/resource/manual_images/tools_resize.png +0 -0
  133. melage/resource/manual_images/tools_ruler.png +0 -0
  134. melage/resource/manual_images/tools_seg.png +0 -0
  135. melage/resource/manual_images/tools_threshold.png +0 -0
  136. melage/resource/manual_images/tools_tools.png +0 -0
  137. melage/resource/manual_images/widget_color.png +0 -0
  138. melage/resource/manual_images/widget_color_add.png +0 -0
  139. melage/resource/manual_images/widget_color_add2.png +0 -0
  140. melage/resource/manual_images/widget_color_additional.png +0 -0
  141. melage/resource/manual_images/widget_images.png +0 -0
  142. melage/resource/manual_images/widget_images2.png +0 -0
  143. melage/resource/manual_images/widget_images3.png +0 -0
  144. melage/resource/manual_images/widget_marker.png +0 -0
  145. melage/resource/manual_images/widget_mri.png +0 -0
  146. melage/resource/manual_images/widget_mri2.png +0 -0
  147. melage/resource/manual_images/widget_segintensity.png +0 -0
  148. melage/resource/manual_images/widget_tab_mutualview.png +0 -0
  149. melage/resource/manual_images/widget_tab_mutualview2.png +0 -0
  150. melage/resource/manual_images/widget_table.png +0 -0
  151. melage/resource/manual_images/widget_table2.png +0 -0
  152. melage/resource/manual_images/widget_us.png +0 -0
  153. melage/resource/melage_top.ico +0 -0
  154. melage/resource/melage_top.png +0 -0
  155. melage/resource/melage_top0.png +0 -0
  156. melage/resource/melage_top1.png +0 -0
  157. melage/resource/melage_top4.png +0 -0
  158. melage/resource/mri (copy).png +0 -0
  159. melage/resource/mri.png +0 -0
  160. melage/resource/mri0.png +0 -0
  161. melage/resource/mri000.png +0 -0
  162. melage/resource/mri22.png +0 -0
  163. melage/resource/mri_big.png +0 -0
  164. melage/resource/mri_old.png +0 -0
  165. melage/resource/mri_seg.png +0 -0
  166. melage/resource/mri_seg_old.png +0 -0
  167. melage/resource/new.png +0 -0
  168. melage/resource/open.png +0 -0
  169. melage/resource/open2.png +0 -0
  170. melage/resource/pan.png +0 -0
  171. melage/resource/pencil.png +0 -0
  172. melage/resource/pencilFaded.png +0 -0
  173. melage/resource/points.png +0 -0
  174. melage/resource/pointsFaded.png +0 -0
  175. melage/resource/rotate.png +0 -0
  176. melage/resource/ruler.png +0 -0
  177. melage/resource/rulerFaded.png +0 -0
  178. melage/resource/s.png +0 -0
  179. melage/resource/s.psd +0 -0
  180. melage/resource/save.png +0 -0
  181. melage/resource/saveas.png +0 -0
  182. melage/resource/seg_mri.png +0 -0
  183. melage/resource/seg_mri2.png +0 -0
  184. melage/resource/settings.png +0 -0
  185. melage/resource/synch.png +0 -0
  186. melage/resource/synchFaded.png +0 -0
  187. melage/resource/theme/rc/.keep +1 -0
  188. melage/resource/theme/rc/arrow_down.png +0 -0
  189. melage/resource/theme/rc/arrow_down@2x.png +0 -0
  190. melage/resource/theme/rc/arrow_down_disabled.png +0 -0
  191. melage/resource/theme/rc/arrow_down_disabled@2x.png +0 -0
  192. melage/resource/theme/rc/arrow_down_focus.png +0 -0
  193. melage/resource/theme/rc/arrow_down_focus@2x.png +0 -0
  194. melage/resource/theme/rc/arrow_down_pressed.png +0 -0
  195. melage/resource/theme/rc/arrow_down_pressed@2x.png +0 -0
  196. melage/resource/theme/rc/arrow_left.png +0 -0
  197. melage/resource/theme/rc/arrow_left@2x.png +0 -0
  198. melage/resource/theme/rc/arrow_left_disabled.png +0 -0
  199. melage/resource/theme/rc/arrow_left_disabled@2x.png +0 -0
  200. melage/resource/theme/rc/arrow_left_focus.png +0 -0
  201. melage/resource/theme/rc/arrow_left_focus@2x.png +0 -0
  202. melage/resource/theme/rc/arrow_left_pressed.png +0 -0
  203. melage/resource/theme/rc/arrow_left_pressed@2x.png +0 -0
  204. melage/resource/theme/rc/arrow_right.png +0 -0
  205. melage/resource/theme/rc/arrow_right@2x.png +0 -0
  206. melage/resource/theme/rc/arrow_right_disabled.png +0 -0
  207. melage/resource/theme/rc/arrow_right_disabled@2x.png +0 -0
  208. melage/resource/theme/rc/arrow_right_focus.png +0 -0
  209. melage/resource/theme/rc/arrow_right_focus@2x.png +0 -0
  210. melage/resource/theme/rc/arrow_right_pressed.png +0 -0
  211. melage/resource/theme/rc/arrow_right_pressed@2x.png +0 -0
  212. melage/resource/theme/rc/arrow_up.png +0 -0
  213. melage/resource/theme/rc/arrow_up@2x.png +0 -0
  214. melage/resource/theme/rc/arrow_up_disabled.png +0 -0
  215. melage/resource/theme/rc/arrow_up_disabled@2x.png +0 -0
  216. melage/resource/theme/rc/arrow_up_focus.png +0 -0
  217. melage/resource/theme/rc/arrow_up_focus@2x.png +0 -0
  218. melage/resource/theme/rc/arrow_up_pressed.png +0 -0
  219. melage/resource/theme/rc/arrow_up_pressed@2x.png +0 -0
  220. melage/resource/theme/rc/base_icon.png +0 -0
  221. melage/resource/theme/rc/base_icon@2x.png +0 -0
  222. melage/resource/theme/rc/base_icon_disabled.png +0 -0
  223. melage/resource/theme/rc/base_icon_disabled@2x.png +0 -0
  224. melage/resource/theme/rc/base_icon_focus.png +0 -0
  225. melage/resource/theme/rc/base_icon_focus@2x.png +0 -0
  226. melage/resource/theme/rc/base_icon_pressed.png +0 -0
  227. melage/resource/theme/rc/base_icon_pressed@2x.png +0 -0
  228. melage/resource/theme/rc/branch_closed.png +0 -0
  229. melage/resource/theme/rc/branch_closed@2x.png +0 -0
  230. melage/resource/theme/rc/branch_closed_disabled.png +0 -0
  231. melage/resource/theme/rc/branch_closed_disabled@2x.png +0 -0
  232. melage/resource/theme/rc/branch_closed_focus.png +0 -0
  233. melage/resource/theme/rc/branch_closed_focus@2x.png +0 -0
  234. melage/resource/theme/rc/branch_closed_pressed.png +0 -0
  235. melage/resource/theme/rc/branch_closed_pressed@2x.png +0 -0
  236. melage/resource/theme/rc/branch_end.png +0 -0
  237. melage/resource/theme/rc/branch_end@2x.png +0 -0
  238. melage/resource/theme/rc/branch_end_disabled.png +0 -0
  239. melage/resource/theme/rc/branch_end_disabled@2x.png +0 -0
  240. melage/resource/theme/rc/branch_end_focus.png +0 -0
  241. melage/resource/theme/rc/branch_end_focus@2x.png +0 -0
  242. melage/resource/theme/rc/branch_end_pressed.png +0 -0
  243. melage/resource/theme/rc/branch_end_pressed@2x.png +0 -0
  244. melage/resource/theme/rc/branch_line.png +0 -0
  245. melage/resource/theme/rc/branch_line@2x.png +0 -0
  246. melage/resource/theme/rc/branch_line_disabled.png +0 -0
  247. melage/resource/theme/rc/branch_line_disabled@2x.png +0 -0
  248. melage/resource/theme/rc/branch_line_focus.png +0 -0
  249. melage/resource/theme/rc/branch_line_focus@2x.png +0 -0
  250. melage/resource/theme/rc/branch_line_pressed.png +0 -0
  251. melage/resource/theme/rc/branch_line_pressed@2x.png +0 -0
  252. melage/resource/theme/rc/branch_more.png +0 -0
  253. melage/resource/theme/rc/branch_more@2x.png +0 -0
  254. melage/resource/theme/rc/branch_more_disabled.png +0 -0
  255. melage/resource/theme/rc/branch_more_disabled@2x.png +0 -0
  256. melage/resource/theme/rc/branch_more_focus.png +0 -0
  257. melage/resource/theme/rc/branch_more_focus@2x.png +0 -0
  258. melage/resource/theme/rc/branch_more_pressed.png +0 -0
  259. melage/resource/theme/rc/branch_more_pressed@2x.png +0 -0
  260. melage/resource/theme/rc/branch_open.png +0 -0
  261. melage/resource/theme/rc/branch_open@2x.png +0 -0
  262. melage/resource/theme/rc/branch_open_disabled.png +0 -0
  263. melage/resource/theme/rc/branch_open_disabled@2x.png +0 -0
  264. melage/resource/theme/rc/branch_open_focus.png +0 -0
  265. melage/resource/theme/rc/branch_open_focus@2x.png +0 -0
  266. melage/resource/theme/rc/branch_open_pressed.png +0 -0
  267. melage/resource/theme/rc/branch_open_pressed@2x.png +0 -0
  268. melage/resource/theme/rc/checkbox_checked.png +0 -0
  269. melage/resource/theme/rc/checkbox_checked0.png +0 -0
  270. melage/resource/theme/rc/checkbox_checked@2x.png +0 -0
  271. melage/resource/theme/rc/checkbox_checked@2x0.png +0 -0
  272. melage/resource/theme/rc/checkbox_checked@2x000.png.png +0 -0
  273. melage/resource/theme/rc/checkbox_checked_disabled.png +0 -0
  274. melage/resource/theme/rc/checkbox_checked_disabled0.png +0 -0
  275. melage/resource/theme/rc/checkbox_checked_disabled@2x.png +0 -0
  276. melage/resource/theme/rc/checkbox_checked_disabled@2x0.png +0 -0
  277. melage/resource/theme/rc/checkbox_checked_focus.png +0 -0
  278. melage/resource/theme/rc/checkbox_checked_focus0.png +0 -0
  279. melage/resource/theme/rc/checkbox_checked_focus@2x.png +0 -0
  280. melage/resource/theme/rc/checkbox_checked_focus@2x0.png +0 -0
  281. melage/resource/theme/rc/checkbox_checked_pressed.png +0 -0
  282. melage/resource/theme/rc/checkbox_checked_pressed0.png +0 -0
  283. melage/resource/theme/rc/checkbox_checked_pressed@2x.png +0 -0
  284. melage/resource/theme/rc/checkbox_checked_pressed@2x0.png +0 -0
  285. melage/resource/theme/rc/checkbox_indeterminate.png +0 -0
  286. melage/resource/theme/rc/checkbox_indeterminate@2x.png +0 -0
  287. melage/resource/theme/rc/checkbox_indeterminate_disabled.png +0 -0
  288. melage/resource/theme/rc/checkbox_indeterminate_disabled@2x.png +0 -0
  289. melage/resource/theme/rc/checkbox_indeterminate_focus.png +0 -0
  290. melage/resource/theme/rc/checkbox_indeterminate_focus@2x.png +0 -0
  291. melage/resource/theme/rc/checkbox_indeterminate_pressed.png +0 -0
  292. melage/resource/theme/rc/checkbox_indeterminate_pressed@2x.png +0 -0
  293. melage/resource/theme/rc/checkbox_unchecked.png +0 -0
  294. melage/resource/theme/rc/checkbox_unchecked0.png +0 -0
  295. melage/resource/theme/rc/checkbox_unchecked00.png +0 -0
  296. melage/resource/theme/rc/checkbox_unchecked@2x.png +0 -0
  297. melage/resource/theme/rc/checkbox_unchecked@2x0.png +0 -0
  298. melage/resource/theme/rc/checkbox_unchecked@2x00.png +0 -0
  299. melage/resource/theme/rc/checkbox_unchecked_disabled.png +0 -0
  300. melage/resource/theme/rc/checkbox_unchecked_disabled0.png +0 -0
  301. melage/resource/theme/rc/checkbox_unchecked_disabled00.png +0 -0
  302. melage/resource/theme/rc/checkbox_unchecked_disabled@2x.png +0 -0
  303. melage/resource/theme/rc/checkbox_unchecked_disabled@2x0.png +0 -0
  304. melage/resource/theme/rc/checkbox_unchecked_disabled@2x00.png +0 -0
  305. melage/resource/theme/rc/checkbox_unchecked_focus.png +0 -0
  306. melage/resource/theme/rc/checkbox_unchecked_focus0.png +0 -0
  307. melage/resource/theme/rc/checkbox_unchecked_focus00.png +0 -0
  308. melage/resource/theme/rc/checkbox_unchecked_focus@2x.png +0 -0
  309. melage/resource/theme/rc/checkbox_unchecked_focus@2x0.png +0 -0
  310. melage/resource/theme/rc/checkbox_unchecked_focus@2x00.png +0 -0
  311. melage/resource/theme/rc/checkbox_unchecked_pressed.png +0 -0
  312. melage/resource/theme/rc/checkbox_unchecked_pressed0.png +0 -0
  313. melage/resource/theme/rc/checkbox_unchecked_pressed00.png +0 -0
  314. melage/resource/theme/rc/checkbox_unchecked_pressed@2x.png +0 -0
  315. melage/resource/theme/rc/checkbox_unchecked_pressed@2x0.png +0 -0
  316. melage/resource/theme/rc/checkbox_unchecked_pressed@2x00.png +0 -0
  317. melage/resource/theme/rc/line_horizontal.png +0 -0
  318. melage/resource/theme/rc/line_horizontal@2x.png +0 -0
  319. melage/resource/theme/rc/line_horizontal_disabled.png +0 -0
  320. melage/resource/theme/rc/line_horizontal_disabled@2x.png +0 -0
  321. melage/resource/theme/rc/line_horizontal_focus.png +0 -0
  322. melage/resource/theme/rc/line_horizontal_focus@2x.png +0 -0
  323. melage/resource/theme/rc/line_horizontal_pressed.png +0 -0
  324. melage/resource/theme/rc/line_horizontal_pressed@2x.png +0 -0
  325. melage/resource/theme/rc/line_vertical.png +0 -0
  326. melage/resource/theme/rc/line_vertical@2x.png +0 -0
  327. melage/resource/theme/rc/line_vertical_disabled.png +0 -0
  328. melage/resource/theme/rc/line_vertical_disabled@2x.png +0 -0
  329. melage/resource/theme/rc/line_vertical_focus.png +0 -0
  330. melage/resource/theme/rc/line_vertical_focus@2x.png +0 -0
  331. melage/resource/theme/rc/line_vertical_pressed.png +0 -0
  332. melage/resource/theme/rc/line_vertical_pressed@2x.png +0 -0
  333. melage/resource/theme/rc/radio_checked.png +0 -0
  334. melage/resource/theme/rc/radio_checked@2x.png +0 -0
  335. melage/resource/theme/rc/radio_checked_disabled.png +0 -0
  336. melage/resource/theme/rc/radio_checked_disabled@2x.png +0 -0
  337. melage/resource/theme/rc/radio_checked_focus.png +0 -0
  338. melage/resource/theme/rc/radio_checked_focus@2x.png +0 -0
  339. melage/resource/theme/rc/radio_checked_pressed.png +0 -0
  340. melage/resource/theme/rc/radio_checked_pressed@2x.png +0 -0
  341. melage/resource/theme/rc/radio_unchecked.png +0 -0
  342. melage/resource/theme/rc/radio_unchecked@2x.png +0 -0
  343. melage/resource/theme/rc/radio_unchecked_disabled.png +0 -0
  344. melage/resource/theme/rc/radio_unchecked_disabled@2x.png +0 -0
  345. melage/resource/theme/rc/radio_unchecked_focus.png +0 -0
  346. melage/resource/theme/rc/radio_unchecked_focus@2x.png +0 -0
  347. melage/resource/theme/rc/radio_unchecked_pressed.png +0 -0
  348. melage/resource/theme/rc/radio_unchecked_pressed@2x.png +0 -0
  349. melage/resource/theme/rc/toolbar_move_horizontal.png +0 -0
  350. melage/resource/theme/rc/toolbar_move_horizontal@2x.png +0 -0
  351. melage/resource/theme/rc/toolbar_move_horizontal_disabled.png +0 -0
  352. melage/resource/theme/rc/toolbar_move_horizontal_disabled@2x.png +0 -0
  353. melage/resource/theme/rc/toolbar_move_horizontal_focus.png +0 -0
  354. melage/resource/theme/rc/toolbar_move_horizontal_focus@2x.png +0 -0
  355. melage/resource/theme/rc/toolbar_move_horizontal_pressed.png +0 -0
  356. melage/resource/theme/rc/toolbar_move_horizontal_pressed@2x.png +0 -0
  357. melage/resource/theme/rc/toolbar_move_vertical.png +0 -0
  358. melage/resource/theme/rc/toolbar_move_vertical@2x.png +0 -0
  359. melage/resource/theme/rc/toolbar_move_vertical_disabled.png +0 -0
  360. melage/resource/theme/rc/toolbar_move_vertical_disabled@2x.png +0 -0
  361. melage/resource/theme/rc/toolbar_move_vertical_focus.png +0 -0
  362. melage/resource/theme/rc/toolbar_move_vertical_focus@2x.png +0 -0
  363. melage/resource/theme/rc/toolbar_move_vertical_pressed.png +0 -0
  364. melage/resource/theme/rc/toolbar_move_vertical_pressed@2x.png +0 -0
  365. melage/resource/theme/rc/toolbar_separator_horizontal.png +0 -0
  366. melage/resource/theme/rc/toolbar_separator_horizontal@2x.png +0 -0
  367. melage/resource/theme/rc/toolbar_separator_horizontal_disabled.png +0 -0
  368. melage/resource/theme/rc/toolbar_separator_horizontal_disabled@2x.png +0 -0
  369. melage/resource/theme/rc/toolbar_separator_horizontal_focus.png +0 -0
  370. melage/resource/theme/rc/toolbar_separator_horizontal_focus@2x.png +0 -0
  371. melage/resource/theme/rc/toolbar_separator_horizontal_pressed.png +0 -0
  372. melage/resource/theme/rc/toolbar_separator_horizontal_pressed@2x.png +0 -0
  373. melage/resource/theme/rc/toolbar_separator_vertical.png +0 -0
  374. melage/resource/theme/rc/toolbar_separator_vertical@2x.png +0 -0
  375. melage/resource/theme/rc/toolbar_separator_vertical_disabled.png +0 -0
  376. melage/resource/theme/rc/toolbar_separator_vertical_disabled@2x.png +0 -0
  377. melage/resource/theme/rc/toolbar_separator_vertical_focus.png +0 -0
  378. melage/resource/theme/rc/toolbar_separator_vertical_focus@2x.png +0 -0
  379. melage/resource/theme/rc/toolbar_separator_vertical_pressed.png +0 -0
  380. melage/resource/theme/rc/toolbar_separator_vertical_pressed@2x.png +0 -0
  381. melage/resource/theme/rc/transparent.png +0 -0
  382. melage/resource/theme/rc/transparent@2x.png +0 -0
  383. melage/resource/theme/rc/transparent_disabled.png +0 -0
  384. melage/resource/theme/rc/transparent_disabled@2x.png +0 -0
  385. melage/resource/theme/rc/transparent_focus.png +0 -0
  386. melage/resource/theme/rc/transparent_focus@2x.png +0 -0
  387. melage/resource/theme/rc/transparent_pressed.png +0 -0
  388. melage/resource/theme/rc/transparent_pressed@2x.png +0 -0
  389. melage/resource/theme/rc/window_close.png +0 -0
  390. melage/resource/theme/rc/window_close@2x.png +0 -0
  391. melage/resource/theme/rc/window_close_disabled.png +0 -0
  392. melage/resource/theme/rc/window_close_disabled@2x.png +0 -0
  393. melage/resource/theme/rc/window_close_focus.png +0 -0
  394. melage/resource/theme/rc/window_close_focus@2x.png +0 -0
  395. melage/resource/theme/rc/window_close_pressed.png +0 -0
  396. melage/resource/theme/rc/window_close_pressed@2x.png +0 -0
  397. melage/resource/theme/rc/window_grip.png +0 -0
  398. melage/resource/theme/rc/window_grip@2x.png +0 -0
  399. melage/resource/theme/rc/window_grip_disabled.png +0 -0
  400. melage/resource/theme/rc/window_grip_disabled@2x.png +0 -0
  401. melage/resource/theme/rc/window_grip_focus.png +0 -0
  402. melage/resource/theme/rc/window_grip_focus@2x.png +0 -0
  403. melage/resource/theme/rc/window_grip_pressed.png +0 -0
  404. melage/resource/theme/rc/window_grip_pressed@2x.png +0 -0
  405. melage/resource/theme/rc/window_minimize.png +0 -0
  406. melage/resource/theme/rc/window_minimize@2x.png +0 -0
  407. melage/resource/theme/rc/window_minimize_disabled.png +0 -0
  408. melage/resource/theme/rc/window_minimize_disabled@2x.png +0 -0
  409. melage/resource/theme/rc/window_minimize_focus.png +0 -0
  410. melage/resource/theme/rc/window_minimize_focus@2x.png +0 -0
  411. melage/resource/theme/rc/window_minimize_pressed.png +0 -0
  412. melage/resource/theme/rc/window_minimize_pressed@2x.png +0 -0
  413. melage/resource/theme/rc/window_undock.png +0 -0
  414. melage/resource/theme/rc/window_undock@2x.png +0 -0
  415. melage/resource/theme/rc/window_undock_disabled.png +0 -0
  416. melage/resource/theme/rc/window_undock_disabled@2x.png +0 -0
  417. melage/resource/theme/rc/window_undock_focus.png +0 -0
  418. melage/resource/theme/rc/window_undock_focus@2x.png +0 -0
  419. melage/resource/theme/rc/window_undock_pressed.png +0 -0
  420. melage/resource/theme/rc/window_undock_pressed@2x.png +0 -0
  421. melage/resource/theme/style.qss +2223 -0
  422. melage/resource/tract.png +0 -0
  423. melage/resource/view1.png +0 -0
  424. melage/resource/view1_eco.png +0 -0
  425. melage/resource/view1_mri.png +0 -0
  426. melage/resource/view1_seg.png +0 -0
  427. melage/resource/view2.png +0 -0
  428. melage/resource/view2_seg.png +0 -0
  429. melage/resource/w.png +0 -0
  430. melage/resource/zoom_in.png +0 -0
  431. melage/resource/zoom_inFaded.png +0 -0
  432. melage/resource/zoom_out.png +0 -0
  433. melage/resource/zoom_outFaded.png +0 -0
  434. melage/some_notes.txt +3 -0
  435. melage/utils/DispalyIm.py +2788 -0
  436. melage/utils/GMM.py +720 -0
  437. melage/utils/Shaders_120.py +257 -0
  438. melage/utils/Shaders_330.py +314 -0
  439. melage/utils/Shaders_bu.py +314 -0
  440. melage/utils/__init__0.py +7 -0
  441. melage/utils/brain_extraction_helper.py +234 -0
  442. melage/utils/custom_QScrollBar.py +61 -0
  443. melage/utils/glScientific.py +1554 -0
  444. melage/utils/glScientific_bc.py +1585 -0
  445. melage/utils/readData.py +1061 -0
  446. melage/utils/registration.py +512 -0
  447. melage/utils/source_folder.py +18 -0
  448. melage/utils/utils.py +3808 -0
  449. melage/version.txt +1 -0
  450. melage/widgets/ApplyMask.py +212 -0
  451. melage/widgets/ChangeSystem.py +152 -0
  452. melage/widgets/DeepLModels/InfantSegment/Unet.py +464 -0
  453. melage/widgets/DeepLModels/NPP/dataset/mri_dataset_affine.py +149 -0
  454. melage/widgets/DeepLModels/NPP/models/checkpoints/npp_v1.pth.py +0 -0
  455. melage/widgets/DeepLModels/NPP/models/losses.py +146 -0
  456. melage/widgets/DeepLModels/NPP/models/model.py +272 -0
  457. melage/widgets/DeepLModels/NPP/models/utils.py +303 -0
  458. melage/widgets/DeepLModels/NPP/npp.py +116 -0
  459. melage/widgets/DeepLModels/NPP/requirements.txt +8 -0
  460. melage/widgets/DeepLModels/NPP/train/train.py +116 -0
  461. melage/widgets/DeepLModels/Unet3DAtt.py +657 -0
  462. melage/widgets/DeepLModels/Unet3D_basic.py +648 -0
  463. melage/widgets/DeepLModels/new_unet.py +652 -0
  464. melage/widgets/DeepLModels/new_unet_old.py +639 -0
  465. melage/widgets/DeepLModels/new_unet_old2.py +658 -0
  466. melage/widgets/HistImage.py +153 -0
  467. melage/widgets/ImageThresholding.py +222 -0
  468. melage/widgets/MaskOperations.py +147 -0
  469. melage/widgets/N4Dialog.py +241 -0
  470. melage/widgets/Segmentation/FCM.py +1553 -0
  471. melage/widgets/Segmentation/__init__.py +588 -0
  472. melage/widgets/Segmentation/utils.py +417 -0
  473. melage/widgets/SemiAutoSeg.py +666 -0
  474. melage/widgets/Synthstrip.py +141 -0
  475. melage/widgets/__init__0.py +5 -0
  476. melage/widgets/about.py +246 -0
  477. melage/widgets/activation.py +437 -0
  478. melage/widgets/activator.py +147 -0
  479. melage/widgets/be_dl.py +409 -0
  480. melage/widgets/be_dl_unet3d.py +441 -0
  481. melage/widgets/brain_extraction.py +855 -0
  482. melage/widgets/brain_extraction_dl.py +887 -0
  483. melage/widgets/brain_extraction_dl_bu.py +869 -0
  484. melage/widgets/colorwidget.py +100 -0
  485. melage/widgets/dockWidgets.py +2005 -0
  486. melage/widgets/enhanceImWidget.py +109 -0
  487. melage/widgets/fileDialog_widget.py +275 -0
  488. melage/widgets/iminfo.py +346 -0
  489. melage/widgets/mainwindow_widget.py +6775 -0
  490. melage/widgets/melageAbout.py +123 -0
  491. melage/widgets/openglWidgets.py +556 -0
  492. melage/widgets/registrationWidget.py +342 -0
  493. melage/widgets/repeat_widget.py +74 -0
  494. melage/widgets/screenshot_widget.py +138 -0
  495. melage/widgets/settings_widget.py +77 -0
  496. melage/widgets/tranformationWidget.py +275 -0
  497. melage-0.0.65.dist-info/METADATA +742 -0
  498. melage-0.0.65.dist-info/RECORD +501 -0
  499. melage-0.0.65.dist-info/WHEEL +5 -0
  500. melage-0.0.65.dist-info/entry_points.txt +2 -0
  501. melage-0.0.65.dist-info/top_level.txt +1 -0
@@ -0,0 +1,202 @@
1
+ try:
2
+ from OpenGL import NullFunctionError
3
+ except ImportError:
4
+ from OpenGL.error import NullFunctionError
5
+ from OpenGL.GL import *
6
+ from OpenGL.GL import shaders
7
+ import re
8
+
9
+ ## For centralizing and managing vertex/fragment shader programs.
10
+
11
+ def initShaders():
12
+ global Shaders
13
+ Shaders = [
14
+ ShaderProgram(None, []),
15
+ ShaderProgram('pointSprite', [ ## allows specifying point size using normal.x
16
+ ## See:
17
+ ##
18
+ ## http://stackoverflow.com/questions/9609423/applying-part-of-a-texture-sprite-sheet-texture-map-to-a-point-sprite-in-ios
19
+ ## http://stackoverflow.com/questions/3497068/textured-points-in-opengl-es-2-0
20
+ ##
21
+ ##
22
+ VertexShader("""
23
+ void main() {
24
+ gl_FrontColor=gl_Color;
25
+ gl_PointSize = gl_Normal.x;
26
+ gl_Position = ftransform();
27
+ }
28
+ """),
29
+ ]),
30
+ ]
31
+
32
+
33
+ CompiledShaderPrograms = {}
34
+
35
+ def getShaderProgram(name):
36
+ return ShaderProgram.names[name]
37
+
38
+ class Shader(object):
39
+ def __init__(self, shaderType, code):
40
+ self.shaderType = shaderType
41
+ self.code = code
42
+ self.compiled = None
43
+
44
+ def shader(self):
45
+ if self.compiled is None:
46
+ try:
47
+ self.compiled = shaders.compileShader(self.code, self.shaderType)
48
+ except NullFunctionError:
49
+ raise Exception("This OpenGL implementation does not support shader programs; many OpenGL features in pyqtgraph will not work.")
50
+ except RuntimeError as exc:
51
+ ## Format compile errors a bit more nicely
52
+ if len(exc.args) == 3:
53
+ err, code, typ = exc.args
54
+ if not err.startswith('Shader compile failure'):
55
+ raise
56
+ code = code[0].decode('utf_8').split('\n')
57
+ err, c, msgs = err.partition(':')
58
+ err = err + '\n'
59
+ msgs = re.sub('b\'','',msgs)
60
+ msgs = re.sub('\'$','',msgs)
61
+ msgs = re.sub('\\\\n','\n',msgs)
62
+ msgs = msgs.split('\n')
63
+ errNums = [()] * len(code)
64
+ for i, msg in enumerate(msgs):
65
+ msg = msg.strip()
66
+ if msg == '':
67
+ continue
68
+ m = re.match(r'(\d+\:)?\d+\((\d+)\)', msg)
69
+ if m is not None:
70
+ line = int(m.groups()[1])
71
+ errNums[line-1] = errNums[line-1] + (str(i+1),)
72
+ #code[line-1] = '%d\t%s' % (i+1, code[line-1])
73
+ err = err + "%d %s\n" % (i+1, msg)
74
+ errNums = [','.join(n) for n in errNums]
75
+ maxlen = max(map(len, errNums))
76
+ code = [errNums[i] + " "*(maxlen-len(errNums[i])) + line for i, line in enumerate(code)]
77
+ err = err + '\n'.join(code)
78
+ raise Exception(err)
79
+ else:
80
+ raise
81
+ return self.compiled
82
+
83
+ class VertexShader(Shader):
84
+ def __init__(self, code):
85
+ Shader.__init__(self, GL_VERTEX_SHADER, code)
86
+
87
+ class FragmentShader(Shader):
88
+ def __init__(self, code):
89
+ Shader.__init__(self, GL_FRAGMENT_SHADER, code)
90
+
91
+
92
+
93
+
94
+ class ShaderProgram(object):
95
+ names = {}
96
+
97
+ def __init__(self, name, shaders, uniforms=None):
98
+ self.name = name
99
+ ShaderProgram.names[name] = self
100
+ self.shaders = shaders
101
+ self.prog = None
102
+ self.blockData = {}
103
+ self.uniformData = {}
104
+
105
+ ## parse extra options from the shader definition
106
+ if uniforms is not None:
107
+ for k,v in uniforms.items():
108
+ self[k] = v
109
+
110
+ def setBlockData(self, blockName, data):
111
+ if data is None:
112
+ del self.blockData[blockName]
113
+ else:
114
+ self.blockData[blockName] = data
115
+
116
+ def setUniformData(self, uniformName, data):
117
+ if data is None:
118
+ del self.uniformData[uniformName]
119
+ else:
120
+ self.uniformData[uniformName] = data
121
+
122
+ def __setitem__(self, item, val):
123
+ self.setUniformData(item, val)
124
+
125
+ def __delitem__(self, item):
126
+ self.setUniformData(item, None)
127
+
128
+ def program(self):
129
+ if self.prog is None:
130
+ try:
131
+ compiled = [s.shader() for s in self.shaders] ## compile all shaders
132
+ self.prog = shaders.compileProgram(*compiled) ## compile program
133
+ except:
134
+ self.prog = -1
135
+ raise
136
+ return self.prog
137
+
138
+ def __enter__(self):
139
+ if len(self.shaders) > 0 and self.program() != -1:
140
+ glUseProgram(self.program())
141
+
142
+ try:
143
+ ## load uniform values into program
144
+ for uniformName, data in self.uniformData.items():
145
+ loc = self.uniform(uniformName)
146
+ if loc == -1:
147
+ raise Exception('Could not find uniform variable "%s"' % uniformName)
148
+ if type(data)==int:
149
+ glUniform1i(loc, data)
150
+ else:
151
+ glUniform1fv(loc, len(data), data)
152
+
153
+ ### bind buffer data to program blocks
154
+ #if len(self.blockData) > 0:
155
+ #bindPoint = 1
156
+ #for blockName, data in self.blockData.items():
157
+ ### Program should have a uniform block declared:
158
+ ###
159
+ ### layout (std140) uniform blockName {
160
+ ### vec4 diffuse;
161
+ ### };
162
+
163
+ ### pick any-old binding point. (there are a limited number of these per-program
164
+ #bindPoint = 1
165
+
166
+ ### get the block index for a uniform variable in the shader
167
+ #blockIndex = glGetUniformBlockIndex(self.program(), blockName)
168
+
169
+ ### give the shader block a binding point
170
+ #glUniformBlockBinding(self.program(), blockIndex, bindPoint)
171
+
172
+ ### create a buffer
173
+ #buf = glGenBuffers(1)
174
+ #glBindBuffer(GL_UNIFORM_BUFFER, buf)
175
+ #glBufferData(GL_UNIFORM_BUFFER, size, data, GL_DYNAMIC_DRAW)
176
+ ### also possible to use glBufferSubData to fill parts of the buffer
177
+
178
+ ### bind buffer to the same binding point
179
+ #glBindBufferBase(GL_UNIFORM_BUFFER, bindPoint, buf)
180
+ except:
181
+ glUseProgram(0)
182
+ raise
183
+
184
+
185
+
186
+ def __exit__(self, *args):
187
+ if len(self.shaders) > 0:
188
+ glUseProgram(0)
189
+
190
+ def uniform(self, name):
191
+ """Return the location integer for a uniform variable in this program"""
192
+ return glGetUniformLocation(self.program(), name.encode('utf_8'))
193
+
194
+ #def uniformBlockInfo(self, blockName):
195
+ #blockIndex = glGetUniformBlockIndex(self.program(), blockName)
196
+ #count = glGetActiveUniformBlockiv(self.program(), blockIndex, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS)
197
+ #indices = []
198
+ #for i in range(count):
199
+ #indices.append(glGetActiveUniformBlockiv(self.program(), blockIndex, GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES))
200
+
201
+
202
+ initShaders()
melage/main.py ADDED
@@ -0,0 +1,270 @@
1
+ # This Python file uses the following encoding: utf-8
2
+ import sys
3
+
4
+ import os
5
+ sys.path.append('.')
6
+ sys.path.append("../")
7
+ #print(sys.path)
8
+ from PyQt5 import QtWidgets, QtCore, QtGui
9
+ #from PyQt5.QtWidgets import QWidget
10
+ from melage.widgets.mainwindow_widget import Ui_Main
11
+ from melage.widgets.activation import activation_dialog
12
+
13
+ from melage.utils.source_folder import source_folder, desktop
14
+
15
+ ## verifyClass
16
+ class verifyClass(QtCore.QObject):
17
+ sig = QtCore.pyqtSignal(int)
18
+ def __init__(self):
19
+ super().__init__()
20
+
21
+ def verify_func(self):
22
+ ## your verification code
23
+ self.sig.emit(1) ## mean the verification is okay, do it if verification success
24
+
25
+
26
+
27
+ class MainWindow(QtWidgets.QMainWindow, Ui_Main):
28
+ def __init__(self, *args, app = None, **kwargs):
29
+
30
+
31
+
32
+ super(MainWindow, self).__init__(*args, **kwargs)
33
+ QtWidgets.QWidget.__init__(self)
34
+ self.app = app
35
+ self.setupUi(self)
36
+ if os.path.isdir(desktop):
37
+ self.source_dir = desktop
38
+ #self.settings.setPath(self.settings.IniFormat, self.settings.UserScope, '.')
39
+
40
+ self.setWindowIcon(QtGui.QIcon(source_folder+'/main.ico'))
41
+ self._key_picke = b'PPQ0ByoMsieWGv6bMEyJ9rSYXQDoa5D4ldAkwaNNpw0='
42
+
43
+ if not self.settings.value("geometry") == None:
44
+ self.restoreGeometry(self.settings.value("geometry"))
45
+ #QtCore.QTimer.singleShot(5000, self.showChildWindow)
46
+
47
+ self._openUSEnabled = True
48
+ ######################### Load connect ################################
49
+ self.actionLoad.triggered.connect(self.loadChanges)
50
+ key_needed = False
51
+ if key_needed:
52
+
53
+
54
+ self.setEnabled(False)
55
+ self.activation_dialog = activation_dialog(self,source_folder)
56
+ self.activation_dialog.correct_key.connect(self.EnableAll)
57
+ verifyInstance = verifyClass()
58
+ verifyInstance.sig.connect(self.verify_func)
59
+ thread = QtCore.QThread()
60
+ self._v_thread = (thread, verifyInstance)
61
+ verifyInstance.moveToThread(thread)
62
+ thread.started.connect(verifyInstance.verify_func)
63
+ thread.start()
64
+ else:
65
+ self.setEnabled(True)
66
+
67
+
68
+
69
+
70
+ def verify_func(self, i):
71
+ if i == 1:
72
+ if self.activation_dialog.verify():
73
+ self.EnableAll(self.activation_dialog.options)
74
+ else:
75
+ self.activation_dialog.exec_()
76
+
77
+
78
+ ## enable your buttons
79
+
80
+ def EnableAll(self, options):
81
+ if options=='FULL':
82
+ #self.menuExport.setEnabled(False)
83
+ #self.menuPreprocess.setEnabled(False)
84
+ #self.actionCircles.setEnabled(False)
85
+
86
+ '''
87
+
88
+ self.actionPoints.setEnabled(False)
89
+ self.menuSeg.setEnabled(False)
90
+
91
+ self.actionsaveModified.setVisible(False)
92
+ self.actionconvert.setVisible(False)
93
+ self.menuCalc.setEnabled(False)
94
+ '''
95
+ self._openUSEnabled = True
96
+ self.setEnabled(True)
97
+ self.menuSeg.setEnabled(False)
98
+ self.menuCalc.setEnabled(False)
99
+
100
+ self.menuRegistration.setEnabled(False)
101
+
102
+ def saveChanges(self):
103
+ from melage.utils.utils import getAttributeWidget
104
+ try:
105
+ import cPickle as pickle
106
+ except ModuleNotFoundError:
107
+ import pickle
108
+ from collections import defaultdict
109
+ from PyQt5.QtCore import QSettings
110
+ from time import gmtime, strftime
111
+ self.settings.sync()
112
+ dic = defaultdict(list)
113
+
114
+
115
+ """
116
+
117
+ if filePath == None:
118
+ basefile = ''
119
+ if hasattr(self, 'readImECO'):
120
+ basefile =self.readImECO.basefile
121
+ if basefile == '':
122
+ if hasattr(self, 'readImMRI'):
123
+ basefile = self.readImMRI.basefile
124
+ else:
125
+ basefile = filePath[0]
126
+
127
+ if basefile[-3:] == '.bn':
128
+ basefile = basefile[:-3]
129
+
130
+ self._basefileSave = basefile
131
+ """
132
+ self.settings = QSettings(self._basefileSave+ '.ini', self.settings.IniFormat)
133
+
134
+ self.progressBarSaving.setValue(10)
135
+ self.settings.setValue("geometry", self.saveGeometry())
136
+ self.settings.setValue("windowState", self.saveState())
137
+ self.progressBarSaving.setValue(20)
138
+
139
+
140
+ name = 'openGLWidget_'
141
+ widgets_num = [0, 1, 2, 3, 4, 5, 10, 11,13,23]
142
+ for i in widgets_num:
143
+ nameWidget = name+str(i+1)
144
+ if hasattr(self, name+str(i+1)):
145
+ widget =getattr(self, name+str(i+1))
146
+ dic = getAttributeWidget(widget, nameWidget, dic)
147
+ self.progressBarSaving.setValue(40)
148
+ names = ['readImECO', 'readImMRI']
149
+ for name in names:
150
+ if hasattr(self, name):
151
+ readD = getattr(self, name)
152
+ #dic[name] = {}
153
+ dic = getAttributeWidget(readD, name, dic)
154
+ table_items = []
155
+ rows = self.table_widget_measure.rowCount()
156
+ cols = self.table_widget_measure.columnCount()
157
+ for row in range(rows):
158
+ txts = []
159
+ for col in range(cols):
160
+ if hasattr(self.table_widget_measure.item(row, col),'text'):
161
+ txt = self.table_widget_measure.item(row, col).text()
162
+ txts.append(txt)
163
+ table_items.append(txts)
164
+ dic['measurements'] = table_items
165
+
166
+
167
+ self.progressBarSaving.setValue(60)
168
+ dic = getAttributeWidget(self, 'main', dic)
169
+ self.progressBarSaving.setValue(80)
170
+
171
+ dic['versionInfo'] = defaultdict(list)
172
+ dic['versionInfo']['__version__'] = 'Neobrain_1.0.6'
173
+ dic['versionInfo']['dataTime'] = strftime("%Y_%m_%d_%H%M%S", gmtime())
174
+
175
+
176
+ # with open(self._basefileSave+'.bn', 'w+') as f:
177
+ # f.write('0\n')
178
+
179
+ self.progressBarSaving.setValue(90)
180
+
181
+
182
+ #fp = gzip.open('primes.data', 'wb')
183
+ from cryptography.fernet import Fernet
184
+ with open(self._basefileSave+'.bn', 'wb') as output:
185
+ pickle.dump(dic, output, pickle.HIGHEST_PROTOCOL)
186
+
187
+ f = Fernet(self._key_picke)
188
+ with open(self._basefileSave+'.bn', 'rb') as file:
189
+ # read all file data
190
+ file_data = file.read()
191
+ encrypted_data = f.encrypt(file_data)
192
+ with open(self._basefileSave+'.bn', 'wb') as file:
193
+ file.write(encrypted_data)
194
+ self.progressBarSaving.setValue(100)
195
+
196
+ def createPopupMenu(self): # overriding create popup menu
197
+ menu = super().createPopupMenu()
198
+ for action in menu.actions():
199
+ if action.text()=='Progress Bar':
200
+ menu.removeAction(action)
201
+ return menu
202
+
203
+ def closeEvent(self, event: QtGui.QCloseEvent) -> None:
204
+ from PyQt5.QtCore import QEvent
205
+ if event.type() == QEvent.Close: # on closing the window
206
+ if self._basefileSave == '':
207
+ event.accept()
208
+ else:
209
+ MessageBox = QtWidgets.QMessageBox(self)
210
+ MessageBox.setDefaultButton(QtWidgets.QMessageBox.Yes)
211
+
212
+ MessageBox.setStandardButtons(QtWidgets.QMessageBox.No | QtWidgets.QMessageBox.Yes|QtWidgets.QMessageBox.Cancel)
213
+ reply = MessageBox.question(self, 'Close','Do you want to save the changes before closing?',QtWidgets.QMessageBox.No | QtWidgets.QMessageBox.Yes|QtWidgets.QMessageBox.Cancel)
214
+ if reply == QtWidgets.QMessageBox.Yes:
215
+ print('saving the changes ...')
216
+ self.saveChanges()
217
+ event.accept()
218
+ elif reply == QtWidgets.QMessageBox.No:
219
+ event.accept()
220
+ elif reply == QtWidgets.QMessageBox.Cancel:
221
+ event.ignore()
222
+
223
+ #def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None:
224
+
225
+ #self.saveChanges()
226
+
227
+
228
+
229
+
230
+
231
+
232
+ def main():
233
+ app = QtWidgets.QApplication(sys.argv)
234
+ """
235
+
236
+ # Set the default surface format for the application
237
+ fmt = QtGui.QSurfaceFormat()
238
+ fmt.setVersion(2, 0) # Set the desired OpenGL version
239
+ fmt.setProfile(QtGui.QSurfaceFormat.CoreProfile) # Set the desired profile
240
+ QtGui.QSurfaceFormat.setDefaultFormat(fmt)
241
+ """
242
+ root = os.path.dirname(os.path.abspath(__file__))
243
+ QtCore.QDir.addSearchPath('resource', os.path.join(root, 'resource'))
244
+ QtCore.QDir.addSearchPath('theme', os.path.join(root, 'resource/theme'))
245
+ QtCore.QDir.addSearchPath('rc', os.path.join(root, 'resource/theme/rc'))
246
+ QtCore.QDir.addSearchPath('color', os.path.join(root, 'resource/color'))
247
+ file = QtCore.QFile("theme:style.qss")
248
+ file.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text)
249
+ stream = QtCore.QTextStream(file)
250
+ app.setStyle(QtWidgets.QStyleFactory.create("Fusion"))
251
+
252
+
253
+ app.setStyleSheet(stream.readAll())
254
+ window = MainWindow(app=app)
255
+ window.show()
256
+ #sys.excepthook = excepthook
257
+ ret = app.exec_()
258
+ #print("Exit")
259
+ #sys.exit(ret)
260
+ #sys.exc_info()
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+ if __name__ == "__main__":
269
+ main()
270
+
@@ -0,0 +1,25 @@
1
+ matplotlib==3.4.3
2
+ nibabel==4.0.2
3
+ numba==0.56.4
4
+ numpy==1.23.5
5
+ opencv_python_headless==4.5.5.64
6
+ pickle5==0.0.11
7
+ pickle-mixin==1.0.2
8
+ Pillow==8.1.1 #strict
9
+ pydicom==2.3.1
10
+ pyFFTW==0.13.0
11
+ PyOpenGL==3.1.6
12
+ PyQt5==5.15.2
13
+ qtwidgets==0.18
14
+ scikit-image==0.19.3
15
+ scikit-learn==1.1.2
16
+ scipy==1.9.2
17
+ SimpleITK==2.2.0
18
+ vtk==9.2.2
19
+ dominate==2.8.0
20
+ rdp==0.8
21
+ Shapely==1.8.4
22
+ cryptography==38.0.2
23
+ trimesh==3.17.0
24
+ torch==1.12.1
25
+ einops==0.6.1
@@ -0,0 +1,28 @@
1
+ scikit-image==0.15.0
2
+ matplotlib==3.3.3
3
+ nibabel==3.2.2
4
+ numba==0.50.1
5
+ opencv_python_headless==4.6.0.66
6
+ pickle-mixin==1.0.2
7
+ Pickle5
8
+ Pillow==8.4.0
9
+ pydicom==2.3.1
10
+ pyFFTW==0.12.00
11
+ PyOpenGL==3.1.6
12
+ PyQt5==5.12.1
13
+ PyQt5_sip==4.19.19
14
+ qtwidgets==0.18
15
+ scikit-learn==0.24.2
16
+ scipy==1.5.4
17
+ SimpleITK==2.1.1
18
+ vtk==9.2.2
19
+ dataclasses==0.6
20
+ Shapely==1.7.1
21
+ dominate==2.6.0
22
+ rdp==0.8
23
+ numpy>=1.19.5
24
+ cryptography==38.0.2
25
+ trimesh==3.17.0
26
+ setuptools>=58.1.0
27
+ torch==1.12.1
28
+ eniops==0.6.1
Binary file
Binary file
melage/resource/3d.png ADDED
Binary file
melage/resource/3d.psd ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,79 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
4
+ xmlns:cc="http://creativecommons.org/ns#"
5
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
+ xmlns:svg="http://www.w3.org/2000/svg"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
9
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10
+ version="1.1"
11
+ width="206.611"
12
+ height="206.611"
13
+ viewBox="638.932 206.758 226.611 216.611"
14
+ id="svg22"
15
+ sodipodi:docname="Eraser_icon.svg"
16
+ inkscape:version="0.92.3 (2405546, 2018-03-11)">
17
+ <metadata
18
+ id="metadata28">
19
+ <rdf:RDF>
20
+ <cc:Work
21
+ rdf:about="">
22
+ <dc:format>image/svg+xml</dc:format>
23
+ <dc:type
24
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
25
+ </cc:Work>
26
+ </rdf:RDF>
27
+ </metadata>
28
+ <defs
29
+ id="defs26" />
30
+ <sodipodi:namedview
31
+ pagecolor="#ffffff"
32
+ bordercolor="#666666"
33
+ borderopacity="1"
34
+ objecttolerance="10"
35
+ gridtolerance="10"
36
+ guidetolerance="10"
37
+ inkscape:pageopacity="0"
38
+ inkscape:pageshadow="2"
39
+ inkscape:window-width="1853"
40
+ inkscape:window-height="1025"
41
+ id="namedview24"
42
+ showgrid="false"
43
+ inkscape:lockguides="false"
44
+ inkscape:zoom="3.2307516"
45
+ inkscape:cx="50.268033"
46
+ inkscape:cy="64.06653"
47
+ inkscape:window-x="67"
48
+ inkscape:window-y="27"
49
+ inkscape:window-maximized="1"
50
+ inkscape:current-layer="svg22" />
51
+ <path
52
+ d="m 703.511,400.086 24.006,-24.006 v 0 l 0.905,-0.906 v 0 c 0.906,0.906 2.265,0.906 2.718,0.453 0.906,-0.905 0.453,-1.812 -0.453,-2.718 L 680.864,322.18 c -0.905,-0.906 -2.265,-0.906 -2.718,-0.453 -0.905,0.906 -0.453,1.812 0.453,2.718 v 0 l -1.358,1.358 v 0 l -24.912,24.912 c -4.529,4.529 -4.529,11.776 0,16.306 l 33.518,33.518 c 1.359,1.358 3.171,2.265 5.436,3.17 0.64296,0.28326 0.92622,0.30447 1.358,0.453 6.44418,1.43751 10.87,-4.076 10.87,-4.076 z m -48.465,-35.782 c -2.718,-2.718 -2.718,-7.247 0,-9.965 l 22.194,-22.194 43.935,43.936 -22.193,22.194 c -1.359,1.358 -2.718,1.812 -4.53,1.812 h -1.358 c -1.812,0 -3.171,-0.906 -4.529,-1.812 z"
53
+ id="path2"
54
+ style="fill:#ff2a2a"
55
+ inkscape:connector-curvature="0"
56
+ sodipodi:nodetypes="cccccccccccccsccccccscccsscc" />
57
+ <path
58
+ d="M854.792,245.181c-0.905-0.906-2.265-0.906-3.17,0l-79.265,79.717L761.94,314.48l77-77.906 c0.453-0.453,0.453-1.812,0-2.265c-0.453-0.453-1.812-0.453-2.265,0l-77.453,77.453l-18.117-18.118l74.282-74.282 c0.453-0.453,0.453-1.812,0-2.265s-1.812-0.453-2.265,0l-74.282,74.735l-10.871-10.87l58.883-58.429 c0.905-0.906,0.905-2.265,0-3.171c-0.906-0.906-2.265-0.906-3.171,0l-58.43,58.429l-1.812,1.812l50.276,50.276l1.813-1.812 l79.717-79.717C855.699,247.445,855.699,246.086,854.792,245.181z"
59
+ id="path8" />
60
+ <path
61
+ d="M744.729,358.415l12.682-12.682l0,0c0.905,0.905,2.265,0.905,2.718,0.452c0.905-0.905,0.453-1.812-0.453-2.717 l-50.276-50.276c-0.905-0.906-2.265-0.906-2.718-0.453c-0.905,0.905-0.453,1.812,0.453,2.718l0,0l-12.683,12.682L744.729,358.415z M743.37,342.109c0.906-0.905,2.265-0.905,3.623,0c0.906,0.906,0.906,2.265,0,3.624c-0.905,0.905-2.264,0.905-3.623,0 C742.464,344.827,742.464,343.016,743.37,342.109z M725.251,324.445c0.906-0.906,2.266-0.906,3.624,0 c0.906,0.905,0.906,2.265,0,3.623c-0.906,0.906-2.265,0.906-3.624,0C724.346,326.71,724.346,325.351,725.251,324.445z M707.587,306.327c0.906-0.905,2.265-0.905,3.171,0c0.905,0.906,0.905,2.265,0,3.171c-0.906,0.906-2.265,0.906-3.171,0 C706.681,309.045,706.681,307.233,707.587,306.327z"
62
+ id="path10" />
63
+ <path
64
+ d="M732.046,371.551l3.17-3.171l0,0c0.906,0.906,2.265,0.906,2.718,0.453c0.906-0.906,0.453-1.812-0.453-2.718 l-50.275-50.729c-0.906-0.905-2.265-0.905-2.718-0.452c-0.453,0.452-0.453,1.812,0.453,2.717l0,0l-3.171,3.171L732.046,371.551z"
65
+ id="path12" />
66
+ <path
67
+ d="M738.387,364.757l3.171-3.171l0,0c0.906,0.906,2.265,0.906,2.718,0.453c0.905-0.906,0.453-1.812-0.453-2.718 l-50.276-50.276c-0.906-0.906-2.265-0.906-2.718-0.453c-0.906,0.906-0.453,1.813,0.453,2.718l0,0l-3.171,3.171L738.387,364.757z"
68
+ id="path14" />
69
+ <path
70
+ d="M760.582,342.563l3.17-3.171l0,0c0.906,0.906,2.266,0.906,2.718,0.453c0.906-0.905,0.453-1.812-0.452-2.718 l-49.824-50.276c-0.905-0.905-2.265-0.905-2.718-0.452c-0.905,0.905-0.452,1.812,0.453,2.717l0,0l-3.17,3.171L760.582,342.563z"
71
+ id="path16" />
72
+ <path
73
+ d="M766.922,336.222l3.171-3.171l0,0c0.906,0.906,2.265,0.906,2.718,0.453c0.905-0.906,0.453-1.812-0.453-2.718 l-49.823-50.276c-0.906-0.906-2.265-0.906-2.718-0.453c-0.906,0.906-0.453,1.813,0.453,2.718l0,0l-3.171,3.171L766.922,336.222z"
74
+ id="path18" />
75
+ <path
76
+ d="M659.576,361.133c-0.906-0.905-0.906-2.718,0-3.623l5.889-5.889c0.452-0.453,0.452-1.358,0-1.812 c-0.453-0.453-1.359-0.453-1.813,0l-5.888,5.889c-1.812,1.812-1.812,4.981,0,6.794l6.341,6.341c0.453,0.453,1.359,0.453,1.812,0 c0.453-0.453,0.453-1.358,0-1.812L659.576,361.133z"
77
+ id="path20"
78
+ style="fill:#ff0000" />
79
+ </svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 96 96" enable-background="new 0 0 96 96" xml:space="preserve">
5
+ <g>
6
+ <path d="M73,48.4l-10.4-9.6v4.8H52.4V33.4h4.8L47.6,23l-8.9,10.4h4.8v10.2H33.4v-4.8L23,48.4l10.4,8.9v-4.8h10.2v10.2h-4.8L47.6,73 l9.6-10.4h-4.8V52.4h10.2v4.8L73,48.4z"/>
7
+ </g>
8
+ </svg>
Binary file
Binary file
Binary file
Binary file
Binary file