mosamatic2 2.0.24__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 (136) hide show
  1. models.py +259 -0
  2. mosamatic2/__init__.py +0 -0
  3. mosamatic2/app.py +32 -0
  4. mosamatic2/cli.py +50 -0
  5. mosamatic2/commands/__init__.py +0 -0
  6. mosamatic2/commands/boadockerpipeline.py +48 -0
  7. mosamatic2/commands/calculatemaskstatistics.py +59 -0
  8. mosamatic2/commands/calculatescores.py +73 -0
  9. mosamatic2/commands/createdicomsummary.py +61 -0
  10. mosamatic2/commands/createpngsfromsegmentations.py +65 -0
  11. mosamatic2/commands/defaultdockerpipeline.py +84 -0
  12. mosamatic2/commands/defaultpipeline.py +70 -0
  13. mosamatic2/commands/dicom2nifti.py +55 -0
  14. mosamatic2/commands/liveranalysispipeline.py +61 -0
  15. mosamatic2/commands/rescaledicomimages.py +54 -0
  16. mosamatic2/commands/segmentmusclefatl3tensorflow.py +55 -0
  17. mosamatic2/commands/selectslicefromscans.py +66 -0
  18. mosamatic2/commands/totalsegmentator.py +77 -0
  19. mosamatic2/constants.py +27 -0
  20. mosamatic2/core/__init__.py +0 -0
  21. mosamatic2/core/data/__init__.py +5 -0
  22. mosamatic2/core/data/dicomimage.py +27 -0
  23. mosamatic2/core/data/dicomimageseries.py +26 -0
  24. mosamatic2/core/data/dixonseries.py +22 -0
  25. mosamatic2/core/data/filedata.py +26 -0
  26. mosamatic2/core/data/multidicomimage.py +30 -0
  27. mosamatic2/core/data/multiniftiimage.py +26 -0
  28. mosamatic2/core/data/multinumpyimage.py +26 -0
  29. mosamatic2/core/data/niftiimage.py +13 -0
  30. mosamatic2/core/data/numpyimage.py +13 -0
  31. mosamatic2/core/managers/__init__.py +0 -0
  32. mosamatic2/core/managers/logmanager.py +45 -0
  33. mosamatic2/core/managers/logmanagerlistener.py +3 -0
  34. mosamatic2/core/pipelines/__init__.py +4 -0
  35. mosamatic2/core/pipelines/boadockerpipeline/__init__.py +0 -0
  36. mosamatic2/core/pipelines/boadockerpipeline/boadockerpipeline.py +70 -0
  37. mosamatic2/core/pipelines/defaultdockerpipeline/__init__.py +0 -0
  38. mosamatic2/core/pipelines/defaultdockerpipeline/defaultdockerpipeline.py +28 -0
  39. mosamatic2/core/pipelines/defaultpipeline/__init__.py +0 -0
  40. mosamatic2/core/pipelines/defaultpipeline/defaultpipeline.py +90 -0
  41. mosamatic2/core/pipelines/liveranalysispipeline/__init__.py +0 -0
  42. mosamatic2/core/pipelines/liveranalysispipeline/liveranalysispipeline.py +48 -0
  43. mosamatic2/core/pipelines/pipeline.py +14 -0
  44. mosamatic2/core/singleton.py +9 -0
  45. mosamatic2/core/tasks/__init__.py +13 -0
  46. mosamatic2/core/tasks/applythresholdtosegmentationstask/__init__.py +0 -0
  47. mosamatic2/core/tasks/applythresholdtosegmentationstask/applythresholdtosegmentationstask.py +117 -0
  48. mosamatic2/core/tasks/calculatemaskstatisticstask/__init__.py +0 -0
  49. mosamatic2/core/tasks/calculatemaskstatisticstask/calculatemaskstatisticstask.py +104 -0
  50. mosamatic2/core/tasks/calculatescorestask/__init__.py +0 -0
  51. mosamatic2/core/tasks/calculatescorestask/calculatescorestask.py +152 -0
  52. mosamatic2/core/tasks/createdicomsummarytask/__init__.py +0 -0
  53. mosamatic2/core/tasks/createdicomsummarytask/createdicomsummarytask.py +88 -0
  54. mosamatic2/core/tasks/createpngsfromsegmentationstask/__init__.py +0 -0
  55. mosamatic2/core/tasks/createpngsfromsegmentationstask/createpngsfromsegmentationstask.py +101 -0
  56. mosamatic2/core/tasks/dicom2niftitask/__init__.py +0 -0
  57. mosamatic2/core/tasks/dicom2niftitask/dicom2niftitask.py +45 -0
  58. mosamatic2/core/tasks/rescaledicomimagestask/__init__.py +0 -0
  59. mosamatic2/core/tasks/rescaledicomimagestask/rescaledicomimagestask.py +64 -0
  60. mosamatic2/core/tasks/segmentationnifti2numpytask/__init__.py +0 -0
  61. mosamatic2/core/tasks/segmentationnifti2numpytask/segmentationnifti2numpytask.py +57 -0
  62. mosamatic2/core/tasks/segmentationnumpy2niftitask/__init__.py +0 -0
  63. mosamatic2/core/tasks/segmentationnumpy2niftitask/segmentationnumpy2niftitask.py +86 -0
  64. mosamatic2/core/tasks/segmentmusclefatl3tensorflowtask/__init__.py +0 -0
  65. mosamatic2/core/tasks/segmentmusclefatl3tensorflowtask/paramloader.py +39 -0
  66. mosamatic2/core/tasks/segmentmusclefatl3tensorflowtask/segmentmusclefatl3tensorflowtask.py +122 -0
  67. mosamatic2/core/tasks/segmentmusclefatt4pytorchtask/__init__.py +0 -0
  68. mosamatic2/core/tasks/segmentmusclefatt4pytorchtask/paramloader.py +39 -0
  69. mosamatic2/core/tasks/segmentmusclefatt4pytorchtask/segmentmusclefatt4pytorchtask.py +128 -0
  70. mosamatic2/core/tasks/selectslicefromscanstask/__init__.py +0 -0
  71. mosamatic2/core/tasks/selectslicefromscanstask/selectslicefromscanstask.py +249 -0
  72. mosamatic2/core/tasks/task.py +50 -0
  73. mosamatic2/core/tasks/totalsegmentatortask/__init__.py +0 -0
  74. mosamatic2/core/tasks/totalsegmentatortask/totalsegmentatortask.py +75 -0
  75. mosamatic2/core/utils.py +405 -0
  76. mosamatic2/server.py +146 -0
  77. mosamatic2/ui/__init__.py +0 -0
  78. mosamatic2/ui/mainwindow.py +426 -0
  79. mosamatic2/ui/resources/VERSION +1 -0
  80. mosamatic2/ui/resources/icons/mosamatic2.icns +0 -0
  81. mosamatic2/ui/resources/icons/mosamatic2.ico +0 -0
  82. mosamatic2/ui/resources/icons/spinner.gif +0 -0
  83. mosamatic2/ui/resources/images/body-composition.jpg +0 -0
  84. mosamatic2/ui/settings.py +62 -0
  85. mosamatic2/ui/utils.py +36 -0
  86. mosamatic2/ui/widgets/__init__.py +0 -0
  87. mosamatic2/ui/widgets/dialogs/__init__.py +0 -0
  88. mosamatic2/ui/widgets/dialogs/dialog.py +16 -0
  89. mosamatic2/ui/widgets/dialogs/helpdialog.py +9 -0
  90. mosamatic2/ui/widgets/panels/__init__.py +0 -0
  91. mosamatic2/ui/widgets/panels/defaultpanel.py +31 -0
  92. mosamatic2/ui/widgets/panels/logpanel.py +65 -0
  93. mosamatic2/ui/widgets/panels/mainpanel.py +82 -0
  94. mosamatic2/ui/widgets/panels/pipelines/__init__.py +0 -0
  95. mosamatic2/ui/widgets/panels/pipelines/boadockerpipelinepanel.py +195 -0
  96. mosamatic2/ui/widgets/panels/pipelines/defaultdockerpipelinepanel.py +314 -0
  97. mosamatic2/ui/widgets/panels/pipelines/defaultpipelinepanel.py +302 -0
  98. mosamatic2/ui/widgets/panels/pipelines/liveranalysispipelinepanel.py +187 -0
  99. mosamatic2/ui/widgets/panels/pipelines/pipelinepanel.py +6 -0
  100. mosamatic2/ui/widgets/panels/settingspanel.py +16 -0
  101. mosamatic2/ui/widgets/panels/stackedpanel.py +22 -0
  102. mosamatic2/ui/widgets/panels/tasks/__init__.py +0 -0
  103. mosamatic2/ui/widgets/panels/tasks/applythresholdtosegmentationstaskpanel.py +271 -0
  104. mosamatic2/ui/widgets/panels/tasks/calculatemaskstatisticstaskpanel.py +215 -0
  105. mosamatic2/ui/widgets/panels/tasks/calculatescorestaskpanel.py +238 -0
  106. mosamatic2/ui/widgets/panels/tasks/createdicomsummarytaskpanel.py +206 -0
  107. mosamatic2/ui/widgets/panels/tasks/createpngsfromsegmentationstaskpanel.py +247 -0
  108. mosamatic2/ui/widgets/panels/tasks/dicom2niftitaskpanel.py +183 -0
  109. mosamatic2/ui/widgets/panels/tasks/rescaledicomimagestaskpanel.py +184 -0
  110. mosamatic2/ui/widgets/panels/tasks/segmentationnifti2numpytaskpanel.py +192 -0
  111. mosamatic2/ui/widgets/panels/tasks/segmentationnumpy2niftitaskpanel.py +213 -0
  112. mosamatic2/ui/widgets/panels/tasks/segmentmusclefatl3tensorflowtaskpanel.py +216 -0
  113. mosamatic2/ui/widgets/panels/tasks/segmentmusclefatt4pytorchtaskpanel.py +217 -0
  114. mosamatic2/ui/widgets/panels/tasks/selectslicefromscanstaskpanel.py +193 -0
  115. mosamatic2/ui/widgets/panels/tasks/taskpanel.py +6 -0
  116. mosamatic2/ui/widgets/panels/tasks/totalsegmentatortaskpanel.py +195 -0
  117. mosamatic2/ui/widgets/panels/visualizations/__init__.py +0 -0
  118. mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/__init__.py +0 -0
  119. mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/liversegmentpicker.py +96 -0
  120. mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/liversegmentviewer.py +130 -0
  121. mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/liversegmentvisualization.py +120 -0
  122. mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/__init__.py +0 -0
  123. mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/sliceselectionviewer.py +61 -0
  124. mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/sliceselectionvisualization.py +133 -0
  125. mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/slicetile.py +63 -0
  126. mosamatic2/ui/widgets/panels/visualizations/slicevisualization/__init__.py +0 -0
  127. mosamatic2/ui/widgets/panels/visualizations/slicevisualization/custominteractorstyle.py +80 -0
  128. mosamatic2/ui/widgets/panels/visualizations/slicevisualization/sliceviewer.py +116 -0
  129. mosamatic2/ui/widgets/panels/visualizations/slicevisualization/slicevisualization.py +141 -0
  130. mosamatic2/ui/widgets/panels/visualizations/visualization.py +6 -0
  131. mosamatic2/ui/widgets/splashscreen.py +101 -0
  132. mosamatic2/ui/worker.py +29 -0
  133. mosamatic2-2.0.24.dist-info/METADATA +43 -0
  134. mosamatic2-2.0.24.dist-info/RECORD +136 -0
  135. mosamatic2-2.0.24.dist-info/WHEEL +4 -0
  136. mosamatic2-2.0.24.dist-info/entry_points.txt +5 -0
@@ -0,0 +1,141 @@
1
+ from PySide6.QtWidgets import (
2
+ QLineEdit,
3
+ QLabel,
4
+ QSpinBox,
5
+ QHBoxLayout,
6
+ QVBoxLayout,
7
+ QFormLayout,
8
+ QPushButton,
9
+ QFileDialog,
10
+ )
11
+ from mosamatic2.ui.widgets.panels.visualizations.visualization import Visualization
12
+ from mosamatic2.ui.widgets.panels.visualizations.slicevisualization.sliceviewer import SliceViewer
13
+ from mosamatic2.core.managers.logmanager import LogManager
14
+ from mosamatic2.ui.settings import Settings
15
+ from mosamatic2.ui.utils import is_macos
16
+
17
+ LOG = LogManager()
18
+ PANEL_TITLE = 'SliceVisualization'
19
+ PANEL_NAME = 'slicevisualization'
20
+
21
+
22
+ class SliceVisualization(Visualization):
23
+ def __init__(self):
24
+ super(SliceVisualization, self).__init__()
25
+ self.set_title(PANEL_TITLE)
26
+ self._image_line_edit = None
27
+ self._image_select_button = None
28
+ self._image_dir_select_button = None
29
+ self._color_window_spinbox = None
30
+ self._color_level_spinbox = None
31
+ self._color_window_and_level_reset_button = None
32
+ self._load_image_button = None
33
+ self._slice_viewer = None
34
+ self._form_layout = None
35
+ self._settings = None
36
+ self.init_layout()
37
+
38
+ def image_line_edit(self):
39
+ if not self._image_line_edit:
40
+ self._image_line_edit = QLineEdit(self.settings().get(f'{PANEL_NAME}/image'))
41
+ return self._image_line_edit
42
+
43
+ def image_select_button(self):
44
+ if not self._image_select_button:
45
+ self._image_select_button = QPushButton('Select file')
46
+ self._image_select_button.clicked.connect(self.handle_image_select_button)
47
+ return self._image_select_button
48
+
49
+ def image_dir_select_button(self):
50
+ if not self._image_dir_select_button:
51
+ self._image_dir_select_button = QPushButton('Select directory')
52
+ self._image_dir_select_button.clicked.connect(self.handle_image_dir_select_button)
53
+ return self._image_dir_select_button
54
+
55
+ def color_window_spinbox(self):
56
+ if not self._color_window_spinbox:
57
+ self._color_window_spinbox = QSpinBox(self, minimum=0, maximum=1024, value=400)
58
+ return self._color_window_spinbox
59
+
60
+ def color_level_spinbox(self):
61
+ if not self._color_level_spinbox:
62
+ self._color_level_spinbox = QSpinBox(self, minimum=0, maximum=100, value=40)
63
+ return self._color_level_spinbox
64
+
65
+ def color_window_and_level_reset_button(self):
66
+ if not self._color_window_and_level_reset_button:
67
+ self._color_window_and_level_reset_button = QPushButton('Reset')
68
+ self._color_window_and_level_reset_button.clicked.connect(self.handle_color_window_and_level_reset_button)
69
+ return self._color_window_and_level_reset_button
70
+
71
+ def load_image_button(self):
72
+ if not self._load_image_button:
73
+ self._load_image_button = QPushButton('Load')
74
+ self._load_image_button.clicked.connect(self.handle_load_image_button)
75
+ return self._load_image_button
76
+
77
+ def slice_viewer(self):
78
+ if not self._slice_viewer:
79
+ self._slice_viewer = SliceViewer(
80
+ color_window=self.color_window_spinbox().value(),
81
+ color_level=self.color_level_spinbox().value(),
82
+ )
83
+ return self._slice_viewer
84
+
85
+ def form_layout(self):
86
+ if not self._form_layout:
87
+ self._form_layout = QFormLayout()
88
+ if is_macos():
89
+ self._form_layout.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow)
90
+ return self._form_layout
91
+
92
+ def settings(self):
93
+ if not self._settings:
94
+ self._settings = Settings()
95
+ return self._settings
96
+
97
+ def init_layout(self):
98
+ image_layout = QHBoxLayout()
99
+ image_layout.addWidget(self.image_line_edit())
100
+ image_layout.addWidget(self.image_select_button())
101
+ image_layout.addWidget(self.image_dir_select_button())
102
+ color_window_and_level_layout = QHBoxLayout()
103
+ color_window_and_level_layout.addWidget(QLabel('Color window'))
104
+ color_window_and_level_layout.addWidget(self.color_window_spinbox())
105
+ color_window_and_level_layout.addWidget(QLabel('Color level'))
106
+ color_window_and_level_layout.addWidget(self.color_level_spinbox())
107
+ color_window_and_level_layout.addWidget(self.color_window_and_level_reset_button())
108
+ self.form_layout().addRow('NIFTI file or DICOM directory', image_layout)
109
+ self.form_layout().addRow('', color_window_and_level_layout)
110
+ layout = QVBoxLayout()
111
+ layout.addLayout(self.form_layout())
112
+ layout.addWidget(self.load_image_button())
113
+ layout.addWidget(self.slice_viewer())
114
+ self.setLayout(layout)
115
+ self.setObjectName(PANEL_NAME)
116
+
117
+ def handle_image_select_button(self):
118
+ last_directory = self.settings().get('last_directory')
119
+ file_path, _ = QFileDialog.getOpenFileName(dir=last_directory)
120
+ if file_path:
121
+ self.image_line_edit().setText(file_path)
122
+ self.settings().set('last_directory', file_path)
123
+
124
+ def handle_image_dir_select_button(self):
125
+ last_directory = self.settings().get('last_directory')
126
+ dir_path = QFileDialog.getExistingDirectory(dir=last_directory)
127
+ if dir_path:
128
+ self.image_line_edit().setText(dir_path)
129
+ self.settings().set('last_directory', dir_path)
130
+
131
+ def handle_color_window_and_level_reset_button(self):
132
+ self.slice_viewer().set_color_window(self.color_window_spinbox().value())
133
+ self.slice_viewer().set_color_level(self.color_level_spinbox().value())
134
+
135
+ def handle_load_image_button(self):
136
+ self.slice_viewer().set_nifti_file_or_dicom_dir(self.image_line_edit().text())
137
+ # self.slice_viewer().set_view_orientation('axial')
138
+ self.slice_viewer().load_image()
139
+
140
+ def save_inputs_and_parameters(self):
141
+ self.settings().set(f'{PANEL_NAME}/image', self.image_line_edit().text())
@@ -0,0 +1,6 @@
1
+ from mosamatic2.ui.widgets.panels.defaultpanel import DefaultPanel
2
+
3
+
4
+ class Visualization(DefaultPanel):
5
+ def __init__(self):
6
+ super(Visualization, self).__init__()
@@ -0,0 +1,101 @@
1
+ import os
2
+ import mosamatic2.constants as constants
3
+ from PySide6.QtWidgets import (
4
+ QWidget,
5
+ QVBoxLayout,
6
+ QPushButton,
7
+ QLabel,
8
+ )
9
+ from PySide6.QtCore import Qt
10
+ from PySide6.QtGui import QPixmap
11
+ from mosamatic2.ui.mainwindow import MainWindow
12
+ from mosamatic2.ui.utils import resource_path, set_opacity, version
13
+
14
+
15
+ class SplashScreen(QWidget):
16
+ def __init__(self):
17
+ super(SplashScreen, self).__init__()
18
+ self._main = None
19
+ self._background_label = None
20
+ self._background_pixmap = None
21
+ self._title_label = None
22
+ self._sub_text_label = None
23
+ self._start_app_button = None
24
+ self._donate_button = None
25
+ self._close_button = None
26
+ self.init_layout()
27
+
28
+ def main(self):
29
+ if not self._main:
30
+ self._main = MainWindow()
31
+ return self._main
32
+
33
+ def background_label(self):
34
+ if not self._background_label:
35
+ self._background_label = QLabel(self)
36
+ self._background_label.setPixmap(self.background_pixmap())
37
+ self._background_label.setGeometry(0, 0, self.width(), self.height())
38
+ self._background_label.lower()
39
+ return self._background_label
40
+
41
+ def background_pixmap(self):
42
+ if not self._background_pixmap:
43
+ self._background_pixmap = QPixmap(resource_path(os.path.join(
44
+ constants.MOSAMATIC2_IMAGES_DIR_PATH, constants.MOSAMATIC2_BACKGROUND_IMAGE_FILE_NAME,
45
+ ))).scaled(self.size(), Qt.IgnoreAspectRatio, Qt.SmoothTransformation)
46
+ self._background_pixmap = set_opacity(self._background_pixmap, constants.MOSAMATIC2_BACKGROUND_IMAGE_OPACITY)
47
+ return self._background_pixmap
48
+
49
+ def title_label(self):
50
+ if not self._title_label:
51
+ self._title_label = QLabel(f'{constants.MOSAMATIC2_SPLASH_SCREEN_TITLE} {version()}')
52
+ self._title_label.setStyleSheet(constants.MOSAMATIC2_SPLASH_SCREEN_TITLE_STYLESHEET)
53
+ self._title_label.setAlignment(Qt.AlignCenter)
54
+ return self._title_label
55
+
56
+ def sub_text_label(self):
57
+ if not self._sub_text_label:
58
+ message = constants.MOSAMATIC2_SPLASH_SCREEN_SUB_TEXT
59
+ self._sub_text_label = QLabel(message)
60
+ self._sub_text_label.setStyleSheet(constants.MOSAMATIC2_SPLASH_SCREEN_SUB_TEXT_STYLE_SHEET)
61
+ self._sub_text_label.setAlignment(Qt.AlignCenter)
62
+ return self._sub_text_label
63
+
64
+ def start_app_button(self):
65
+ if not self._start_app_button:
66
+ self._start_app_button = QPushButton(constants.MOSAMATIC2_SPLASH_SCREEN_START_BUTTON_TEXT)
67
+ self._start_app_button.clicked.connect(self.handle_start_app_button)
68
+ return self._start_app_button
69
+
70
+ def close_button(self):
71
+ if not self._close_button:
72
+ self._close_button = QPushButton(constants.MOSAMATIC2_SPLASH_SCREEN_QUIT_BUTTON_TEXT)
73
+ self._close_button.clicked.connect(self.handle_close_button)
74
+ return self._close_button
75
+
76
+ # LAYOUT
77
+
78
+ def init_layout(self):
79
+ layout = QVBoxLayout()
80
+ layout.addWidget(self.title_label())
81
+ layout.addWidget(self.sub_text_label())
82
+ layout.addWidget(self.start_app_button())
83
+ layout.addWidget(self.close_button())
84
+ self.setLayout(layout)
85
+ self.setFixedSize(constants.MOSAMATIC2_SPLASH_SCREEN_W, constants.MOSAMATIC2_SPLASH_SCREEN_H)
86
+ self.setWindowFlags(Qt.FramelessWindowHint)
87
+
88
+ # EVENT HANDLERS
89
+
90
+ def handle_start_app_button(self):
91
+ self.close()
92
+ self.main().show()
93
+
94
+ def handle_close_button(self):
95
+ self.close()
96
+
97
+ def resizeEvent(self, event):
98
+ super().resizeEvent(event)
99
+ scaled = self.background_pixmap().scaled(self.size(), Qt.KeepAspectRatioByExpanding, Qt.SmoothTransformation)
100
+ self.background_label().setPixmap(scaled)
101
+ self.background_label().setGeometry(0, 0, self.width(), self.height())
@@ -0,0 +1,29 @@
1
+ import traceback
2
+ from PySide6.QtCore import (
3
+ QObject,
4
+ Signal,
5
+ )
6
+ from mosamatic2.core.managers.logmanager import LogManager
7
+
8
+ LOG = LogManager()
9
+
10
+
11
+ class Worker(QObject):
12
+ progress = Signal(int)
13
+ status = Signal(str)
14
+ finished = Signal()
15
+
16
+ def __init__(self, task):
17
+ super(Worker, self).__init__()
18
+ self._task = task
19
+
20
+ def run(self):
21
+ try:
22
+ self.status.emit('started')
23
+ self._task.run()
24
+ self.status.emit('done')
25
+ self.finished.emit()
26
+ except Exception as e:
27
+ self.status.emit('failed')
28
+ LOG.error(traceback.format_exc())
29
+ self.finished.emit()
@@ -0,0 +1,43 @@
1
+ Metadata-Version: 2.3
2
+ Name: mosamatic2
3
+ Version: 2.0.24
4
+ Summary:
5
+ Author: Ralph Brecheisen
6
+ Author-email: r.brecheisen@maastrichtuniversity.nl
7
+ Requires-Python: >=3.11,<3.12
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Requires-Dist: antspyx (>=0.5.4)
11
+ Requires-Dist: dicom2nifti (>=2.6.2)
12
+ Requires-Dist: docker (>=7.1.0)
13
+ Requires-Dist: flask (>=3.1.2)
14
+ Requires-Dist: moosez (>=3.0.29)
15
+ Requires-Dist: nibabel (>=5.3.2)
16
+ Requires-Dist: numpy (>=1.26.4)
17
+ Requires-Dist: openpyxl (>=3.1.5)
18
+ Requires-Dist: pandas (>=2.3.2)
19
+ Requires-Dist: pendulum (>=3.1.0)
20
+ Requires-Dist: pillow (>=11.3.0)
21
+ Requires-Dist: pydicom (>=3.0.1)
22
+ Requires-Dist: pyqtgraph (>=0.13.7)
23
+ Requires-Dist: pyside6-essentials (>=6.9)
24
+ Requires-Dist: python-gdcm (>=3.0.26)
25
+ Requires-Dist: scipy (>=1.15.3)
26
+ Requires-Dist: simpleitk (>=2.5.2)
27
+ Requires-Dist: slicer (>=0.0.8)
28
+ Requires-Dist: tensorboard (==2.15.2)
29
+ Requires-Dist: tensorboard-data-server (==0.7.2)
30
+ Requires-Dist: tensorflow (==2.15.*) ; platform_system == "Linux"
31
+ Requires-Dist: tensorflow-intel (==2.15.0) ; platform_system == "Windows"
32
+ Requires-Dist: tensorflow-io-gcs-filesystem (==0.31.0) ; platform_system == "Windows"
33
+ Requires-Dist: tensorflow-io-gcs-filesystem (>=0.31.0) ; platform_system == "Darwin" and platform_machine == "arm64"
34
+ Requires-Dist: tensorflow-macos (==2.15.0) ; platform_system == "Darwin" and platform_machine == "arm64"
35
+ Requires-Dist: torch (==2.5.1)
36
+ Requires-Dist: torchsummary
37
+ Requires-Dist: torchvision (>=0.20.1)
38
+ Requires-Dist: totalsegmentator (>=2.11.0)
39
+ Requires-Dist: vtk (>=9.5.1)
40
+ Requires-Dist: webdavclient3 (>=3.14.6)
41
+ Description-Content-Type: text/markdown
42
+
43
+
@@ -0,0 +1,136 @@
1
+ models.py,sha256=Kx6oWKt7IpTTxrhBDrX61X-ZX12J7yPkJFuhVDsDHoQ,8807
2
+ mosamatic2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ mosamatic2/app.py,sha256=RIUa5tvMYFcmEII4xZPLZZdx9dXWqBvwkxkl_R97Jkw,860
4
+ mosamatic2/cli.py,sha256=pZIcsNPBYF1VLiQvo6CNv6_W-lw7toon1Mi0R9Huobw,1878
5
+ mosamatic2/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ mosamatic2/commands/boadockerpipeline.py,sha256=-k9rQlhixfcqGUy29SsKYVXxZFri6DcnWaV6utJ6mhI,1344
7
+ mosamatic2/commands/calculatemaskstatistics.py,sha256=cCQkLhSczD0sk2wTmfwWF0A3ARkUPqqgrDoz8sT3kDw,1498
8
+ mosamatic2/commands/calculatescores.py,sha256=Lb8Q8L2yq7Tt6VBJ6_lltRuldrev_pac6fcgF-xzZyE,1984
9
+ mosamatic2/commands/createdicomsummary.py,sha256=qbVgWGIJPBL8vTBcAxfThloQ_q15OfQy5ohMprzZL4E,1955
10
+ mosamatic2/commands/createpngsfromsegmentations.py,sha256=uUAQJVTqOkBCfENzi21RBNYvf6_nuesx1MeR3j_-7dM,1682
11
+ mosamatic2/commands/defaultdockerpipeline.py,sha256=oPi4UuZ0Xne0_fsAyzRyvhCgNV9KDH3nTyZJJlT3LpI,2368
12
+ mosamatic2/commands/defaultpipeline.py,sha256=-kQRSXbEDimAdy_kT1qMxRlZWUoXdu3PkWf70PCIS5Y,1734
13
+ mosamatic2/commands/dicom2nifti.py,sha256=uzI3-QT8_HtwXKkX5kRJzMKssM5dvJGUjZ1Z-XkwLYc,1366
14
+ mosamatic2/commands/liveranalysispipeline.py,sha256=CiTTTIEpOAHwx7p919WH8XsEflEKyV6rgfgeG6XjIDs,1831
15
+ mosamatic2/commands/rescaledicomimages.py,sha256=25QdCzB5s0sRwkTb3o5zco2bIwy6LttNf7i97kGBDYQ,1280
16
+ mosamatic2/commands/segmentmusclefatl3tensorflow.py,sha256=CdScmA_EQicaN4GY5bBUOYwfhDPqy9om2sxY3WrtmM0,1424
17
+ mosamatic2/commands/selectslicefromscans.py,sha256=9WlqoPsg7tUkOMQWzE8qwzKTw1bYsBLqZKQbCZk1gbM,1779
18
+ mosamatic2/commands/totalsegmentator.py,sha256=VY3OWPmnQzqkWPjKj_HIcQu2kJoiwVAh2HveFC1Z6uE,2245
19
+ mosamatic2/constants.py,sha256=MVYMwO-x2jQSN37o3zNkRseVQ1nYRA3mLv3v_Q0Mlds,1284
20
+ mosamatic2/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ mosamatic2/core/data/__init__.py,sha256=j9iGqUTJlGF0N0gPrzzpe_Dhv0Bj9c6FdQ1g7U-_j2g,298
22
+ mosamatic2/core/data/dicomimage.py,sha256=e4n-xw5FP_bmvjgPUSg_wPDkByYscaEm3TWAzjd935Y,786
23
+ mosamatic2/core/data/dicomimageseries.py,sha256=OZkNi15crL8nEA-PGYsM0k9NMi2mMHRvDRePr_-czvA,849
24
+ mosamatic2/core/data/dixonseries.py,sha256=kq9fy65MSM2XwiScqp7b3rQ09JmpyGwbG6ldZsuPRrM,516
25
+ mosamatic2/core/data/filedata.py,sha256=hCnpizGqOpxzIADJkDS2_NSmKVLL1u49TYjSJE5UXQo,515
26
+ mosamatic2/core/data/multidicomimage.py,sha256=cdd0H4Dq49h7NLKBx51_h_HZVnH7-reu48PY8m6tXwU,1034
27
+ mosamatic2/core/data/multiniftiimage.py,sha256=zkHRPzKE-fyP9MtlheJyo_OoqpFXmYMxwguZXP-9bdw,753
28
+ mosamatic2/core/data/multinumpyimage.py,sha256=bISFxDHJ2aFuutCLpwQoiuPkMfVQf_Uc0WslZ4ruJ3o,753
29
+ mosamatic2/core/data/niftiimage.py,sha256=s4WGADwnzlSgHx80isM58J6cHdhKXF2e3zuGvJzew-M,347
30
+ mosamatic2/core/data/numpyimage.py,sha256=bnG6WVGSRxNdzIlb2DNj5u6Gv4BAYscIj2BuyjkDjEc,359
31
+ mosamatic2/core/managers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
+ mosamatic2/core/managers/logmanager.py,sha256=NEaXvhl0aILjBbK710GaWanVuuNvB51HpHhE5rgYvng,1391
33
+ mosamatic2/core/managers/logmanagerlistener.py,sha256=Gaig07yjBnyQq9I8sN85olTEeDCDyCFQnEJdwzvmgvc,99
34
+ mosamatic2/core/pipelines/__init__.py,sha256=l2YJ5bc2PdscGYJGWUL1UvA-LeVvnckNDaMlxMvzdCc,388
35
+ mosamatic2/core/pipelines/boadockerpipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
+ mosamatic2/core/pipelines/boadockerpipeline/boadockerpipeline.py,sha256=KFZk_L_0KaTdUqHjqGW8MysbCIOKlUKWP8S-T9xyvis,2939
37
+ mosamatic2/core/pipelines/defaultdockerpipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ mosamatic2/core/pipelines/defaultdockerpipeline/defaultdockerpipeline.py,sha256=FlofeJE_eDHydoo-j_zBiorZXc9wg0a4YKpEesZYqgo,1164
39
+ mosamatic2/core/pipelines/defaultpipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
+ mosamatic2/core/pipelines/defaultpipeline/defaultpipeline.py,sha256=krDYIhUz5pDOMQD71x5F-iIBzW4rZqpPmAeCEcifO5I,3379
41
+ mosamatic2/core/pipelines/liveranalysispipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ mosamatic2/core/pipelines/liveranalysispipeline/liveranalysispipeline.py,sha256=OcIYJGI5eSZjNpnv5CBAz7cungCmgyT7aPmx7-_eGDc,1604
43
+ mosamatic2/core/pipelines/pipeline.py,sha256=mRxKXLKwgKDpc8R9mCI6gDKGJ2lKVxRQ__Sf0Mfn_Qc,384
44
+ mosamatic2/core/singleton.py,sha256=FV0k_LlOCmFhlWN6gf1c2x7YXWyd8-7DsIMvOKrI6NY,224
45
+ mosamatic2/core/tasks/__init__.py,sha256=4EbKSH79vxmIuPH1RdYguOqkTYPNYmfUVKaZfi6RrwU,1476
46
+ mosamatic2/core/tasks/applythresholdtosegmentationstask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ mosamatic2/core/tasks/applythresholdtosegmentationstask/applythresholdtosegmentationstask.py,sha256=hkKSV4fGxgK6CHvz2t2keL19BxE4x3259orMGcm0OMc,4952
48
+ mosamatic2/core/tasks/calculatemaskstatisticstask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ mosamatic2/core/tasks/calculatemaskstatisticstask/calculatemaskstatisticstask.py,sha256=wqth5vgwPOVR7l0QOkhEFW5-pIn6VyPgcJZhIoXYzZk,4350
50
+ mosamatic2/core/tasks/calculatescorestask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
+ mosamatic2/core/tasks/calculatescorestask/calculatescorestask.py,sha256=lkDw80Ify1p7v-EaF3BnsX9QPLqmqu9dd42WFBJ9_pY,6823
52
+ mosamatic2/core/tasks/createdicomsummarytask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
+ mosamatic2/core/tasks/createdicomsummarytask/createdicomsummarytask.py,sha256=4Qxmuqxm9NxlKYFIZOGcDmxCD4vDtAG2dekVYVwquqQ,4134
54
+ mosamatic2/core/tasks/createpngsfromsegmentationstask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ mosamatic2/core/tasks/createpngsfromsegmentationstask/createpngsfromsegmentationstask.py,sha256=6h8xkRvHvKbi36fhMi1LJglcDBY-i12fDIAuI3OCkxY,4201
56
+ mosamatic2/core/tasks/dicom2niftitask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ mosamatic2/core/tasks/dicom2niftitask/dicom2niftitask.py,sha256=9CEh4fNPReOrgkZezrmRTpApSyDpbAC-u5BGYRjDMdI,1619
58
+ mosamatic2/core/tasks/rescaledicomimagestask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
+ mosamatic2/core/tasks/rescaledicomimagestask/rescaledicomimagestask.py,sha256=vGSpMJoXFtE-IHGxTEO9DMkerMJcfG5r9tXgtvkxm6Y,3053
60
+ mosamatic2/core/tasks/segmentationnifti2numpytask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
+ mosamatic2/core/tasks/segmentationnifti2numpytask/segmentationnifti2numpytask.py,sha256=RTwZn0jzX2Iezxy7igSDxhTnMaF6ovQZPuwjEsg53Nk,2171
62
+ mosamatic2/core/tasks/segmentationnumpy2niftitask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
+ mosamatic2/core/tasks/segmentationnumpy2niftitask/segmentationnumpy2niftitask.py,sha256=dKBT1PZSe-HWhLfveMora-_NaWEIc27CE8agvpdKadk,3415
64
+ mosamatic2/core/tasks/segmentmusclefatl3tensorflowtask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
+ mosamatic2/core/tasks/segmentmusclefatl3tensorflowtask/paramloader.py,sha256=VxTCOYK_1VRAG83P-ulm0LPvqXI-0iT5BCr0Rdr7MWg,900
66
+ mosamatic2/core/tasks/segmentmusclefatl3tensorflowtask/segmentmusclefatl3tensorflowtask.py,sha256=IEE-31eLmq7Y47YL5pT3QUdf9ET8Ju-Z3OxniraZUbA,5245
67
+ mosamatic2/core/tasks/segmentmusclefatt4pytorchtask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
+ mosamatic2/core/tasks/segmentmusclefatt4pytorchtask/paramloader.py,sha256=VxTCOYK_1VRAG83P-ulm0LPvqXI-0iT5BCr0Rdr7MWg,900
69
+ mosamatic2/core/tasks/segmentmusclefatt4pytorchtask/segmentmusclefatt4pytorchtask.py,sha256=qgzDpqiIQ8H2NHkdn5x4PwuYkXvhun8kewIjtBpcYeM,5408
70
+ mosamatic2/core/tasks/selectslicefromscanstask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
+ mosamatic2/core/tasks/selectslicefromscanstask/selectslicefromscanstask.py,sha256=OPq9IkfRm4Wm8VugeKavPw-0DOOefFoNU8e3eYaEJwo,11399
72
+ mosamatic2/core/tasks/task.py,sha256=APPnid6dpSGkPuDqU1vm2RIMR5vkpvbP1CPHUMjympg,1691
73
+ mosamatic2/core/tasks/totalsegmentatortask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
+ mosamatic2/core/tasks/totalsegmentatortask/totalsegmentatortask.py,sha256=_phgEp-lPhsim53jdTyfzJzUF0EMcF-I-llQ3J9CyN4,3331
75
+ mosamatic2/core/utils.py,sha256=7na7KD22oUhTXvNto31M_LUfpdyrdZjqfLz9MGQ5_v0,13636
76
+ mosamatic2/server.py,sha256=-cZ9BPsZUXoINKqwhCHN8c59mlvzzDXzTVxsYt9au70,4644
77
+ mosamatic2/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
+ mosamatic2/ui/mainwindow.py,sha256=Z9X-I54WFsvqjKdBALNXFVR-FVvRYrF4tU0c9TyRdsQ,24365
79
+ mosamatic2/ui/resources/icons/mosamatic2.icns,sha256=OfhC-diJTIgaNMOezxKKilGsY7mRkaGdU5dGr0MOjIA,2994125
80
+ mosamatic2/ui/resources/icons/mosamatic2.ico,sha256=ySD3RYluHK3pgS0Eas7eKrVk_AskdLQ4qs_IT-wNhq4,12229
81
+ mosamatic2/ui/resources/icons/spinner.gif,sha256=rvaac6GUZauHSPFSOLWr0RmLfjmtZih2Q8knQ2WP3Po,16240
82
+ mosamatic2/ui/resources/images/body-composition.jpg,sha256=KD-BudbXwThB4lJOZZN-ad5-TZRaaZ5cKTH0Ar1TOZs,21227
83
+ mosamatic2/ui/resources/VERSION,sha256=D-wq_HVNc_40wS4TVvo2AeiSWy6ZyM38JieZYY9vPDw,9
84
+ mosamatic2/ui/settings.py,sha256=YEVHYJIfNsqMO3v1pjzgh7Pih9GGoUX7S9s8S-sBNUk,2121
85
+ mosamatic2/ui/utils.py,sha256=6bbPIrh4RJ_yhQKNZrgPbL4XeUEogjIjbk_e5c3QS5g,853
86
+ mosamatic2/ui/widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
+ mosamatic2/ui/widgets/dialogs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
+ mosamatic2/ui/widgets/dialogs/dialog.py,sha256=whp1xSDVW2t85eh0xvyx1WofEmEQLRbflDPlynwBhJo,354
89
+ mosamatic2/ui/widgets/dialogs/helpdialog.py,sha256=WTm8w2IE1iGfOKILSs6567co6YGAf9r9mTC9SqmFlto,169
90
+ mosamatic2/ui/widgets/panels/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ mosamatic2/ui/widgets/panels/defaultpanel.py,sha256=Ry32Xv6ibxm6NdZ7eBOCcisWNcmn7PQUT2JLT5n5zhE,923
92
+ mosamatic2/ui/widgets/panels/logpanel.py,sha256=ogswJ6_ryb6u7JeVnOsh2Ez8KWg6jtCFZwij8s87xO4,1861
93
+ mosamatic2/ui/widgets/panels/mainpanel.py,sha256=KqI8dA7GpLFd2unqVRTBkNxdnh6AWGpVPwQuaEg8PmI,2431
94
+ mosamatic2/ui/widgets/panels/pipelines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
+ mosamatic2/ui/widgets/panels/pipelines/boadockerpipelinepanel.py,sha256=f1VKob6SRi8dO2m1HF4JXwV_EkrzYWgTdkIOILDD5y4,8406
96
+ mosamatic2/ui/widgets/panels/pipelines/defaultdockerpipelinepanel.py,sha256=e_RlanrLIJtwwjNnuQ8xP4GR6V8TlohIszuo40eibB0,14503
97
+ mosamatic2/ui/widgets/panels/pipelines/defaultpipelinepanel.py,sha256=vBHi6f1NJkmES5f4YDlYzEv8UkXP7jxuJTnKjzk_4qs,13839
98
+ mosamatic2/ui/widgets/panels/pipelines/liveranalysispipelinepanel.py,sha256=-bUv52mNWsrdWU0OBiOMfokOIgDnj8DWGzh47oRjvZ0,7778
99
+ mosamatic2/ui/widgets/panels/pipelines/pipelinepanel.py,sha256=SlkKme8Wv2Bvp2Alen98mFjv3F5eZCwJylj294gd5uU,178
100
+ mosamatic2/ui/widgets/panels/settingspanel.py,sha256=C0oV-4AB6zbrQjUcDQeHIiJg8RMuAIiyCiGHDNV3RKM,412
101
+ mosamatic2/ui/widgets/panels/stackedpanel.py,sha256=dK1YWuHUzxRhVb5gP0Lu9rAiW4XagjcHmGF__5Lpufk,657
102
+ mosamatic2/ui/widgets/panels/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
+ mosamatic2/ui/widgets/panels/tasks/applythresholdtosegmentationstaskpanel.py,sha256=T174rDLkbjxYWJqIgC6qUFAzP3A7sm80eE0V0ObBsqE,12367
104
+ mosamatic2/ui/widgets/panels/tasks/calculatemaskstatisticstaskpanel.py,sha256=o6cXLgzopOgT27DZb5DVdhGnRIABNGkTDu5yiIImJOg,9149
105
+ mosamatic2/ui/widgets/panels/tasks/calculatescorestaskpanel.py,sha256=KVL6GK9mKWzSNGuXNteyNzq4rcCVz48gJYQ1bV2PdWk,10389
106
+ mosamatic2/ui/widgets/panels/tasks/createdicomsummarytaskpanel.py,sha256=moLbD17QnBISDOT5RPG6wR_6WevqTyQkpLeZMZjuxtM,8533
107
+ mosamatic2/ui/widgets/panels/tasks/createpngsfromsegmentationstaskpanel.py,sha256=vBppzcRusdAqiXTa1B1J4oLoX84vUR-zf2DDwoTUvuw,11084
108
+ mosamatic2/ui/widgets/panels/tasks/dicom2niftitaskpanel.py,sha256=6gtaMCZMAbLGv0pOHd4fHBFOluIptFfGOA-vGvrYKGI,7450
109
+ mosamatic2/ui/widgets/panels/tasks/rescaledicomimagestaskpanel.py,sha256=ds7JxynpMeNvqfHKtg1LQR23rb3_Y7xoDLbZ2wl-TMw,7597
110
+ mosamatic2/ui/widgets/panels/tasks/segmentationnifti2numpytaskpanel.py,sha256=JYRBA3-HeRqlPEanOUoUhgN5CgcCd6HH23MGyX_ZvP0,8229
111
+ mosamatic2/ui/widgets/panels/tasks/segmentationnumpy2niftitaskpanel.py,sha256=z1NClYDBKKFf98T7xDh4v78JbFGTSlRCfcSOr_jNoZ0,9314
112
+ mosamatic2/ui/widgets/panels/tasks/segmentmusclefatl3tensorflowtaskpanel.py,sha256=QCEZs9lqaE-XAJuyyrfZVnFkNRyjMw6Cfa-6qP9WaV8,9630
113
+ mosamatic2/ui/widgets/panels/tasks/segmentmusclefatt4pytorchtaskpanel.py,sha256=kcFz5agGyd1YVjK2Jq4s8iNScPmSMnZpyySjPLxG8ws,9629
114
+ mosamatic2/ui/widgets/panels/tasks/selectslicefromscanstaskpanel.py,sha256=meKltgxPReZ9HioSop6jW_2CFm18URBy3LX11U8tbtc,8059
115
+ mosamatic2/ui/widgets/panels/tasks/taskpanel.py,sha256=t8lIx1P8sS1Fa-aNm6eEha6297pJQNbBRizkobBexz8,170
116
+ mosamatic2/ui/widgets/panels/tasks/totalsegmentatortaskpanel.py,sha256=6jXjHSlnyaWiei5LF08cR8vnEc5-OtbMpAlqpxPQZ-0,8169
117
+ mosamatic2/ui/widgets/panels/visualizations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
+ mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
+ mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/liversegmentpicker.py,sha256=eIhR9dHVA-a9pV1AbdAuNzNyFRaUwEWczfdpiXdItis,3196
120
+ mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/liversegmentviewer.py,sha256=Hdi7jQ88bNcCA0dsHoR9tPf-cJWhOLtbpLLe-731tkc,5692
121
+ mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/liversegmentvisualization.py,sha256=zUWowpSSt77Ko36nlyrm10RK5glt-dhJ0VAip3Cpbhs,5522
122
+ mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
123
+ mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/sliceselectionviewer.py,sha256=x5zXXizmWWu3ehCG9qEpDiRm1Pfk5xq02UxR9XMj19E,2431
124
+ mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/sliceselectionvisualization.py,sha256=j4UrCshjKVQIrDpaugHntUtQTNFyF_MP8PucBbVUksw,5744
125
+ mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/slicetile.py,sha256=W1_H9XAMf5To1r1vLNDyu8LTyV-oVE9yqxJ5Ci2-Uts,1940
126
+ mosamatic2/ui/widgets/panels/visualizations/slicevisualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
+ mosamatic2/ui/widgets/panels/visualizations/slicevisualization/custominteractorstyle.py,sha256=AylbJRq85Y2qpMqQi_nfUwcO-cKEhhzfMBzHx8kJ4pY,3275
128
+ mosamatic2/ui/widgets/panels/visualizations/slicevisualization/sliceviewer.py,sha256=T2BKe_k6vAQ2GFT5c-8uncddLKmkyOPCPo_FXl7G7w8,5307
129
+ mosamatic2/ui/widgets/panels/visualizations/slicevisualization/slicevisualization.py,sha256=YVFK1C7dv2NhlXQLIFn_a2_oZW5ubyiXq0q6XNJ8ol8,6086
130
+ mosamatic2/ui/widgets/panels/visualizations/visualization.py,sha256=JvqTJi7cCGYK1-wrN2oURdCOBoPS2clVUyYglhkoVJg,178
131
+ mosamatic2/ui/widgets/splashscreen.py,sha256=MS-OczOWfwwEQNQd-JWe9_Mh57css0cSQgbu973rwQo,4056
132
+ mosamatic2/ui/worker.py,sha256=v7e3gq7MUudgpB1BJW-P7j5wurzu6-HG5m7I6WHgJp0,699
133
+ mosamatic2-2.0.24.dist-info/entry_points.txt,sha256=MCUpKkgbej1clgp8EqlLQGs0BIKwGPcBPiVWLfGz9Gw,126
134
+ mosamatic2-2.0.24.dist-info/METADATA,sha256=vrKw826L-NBO_T2ph5BkHXaRdDckxzPOObouUvqT044,1668
135
+ mosamatic2-2.0.24.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
136
+ mosamatic2-2.0.24.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: poetry-core 2.1.3
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,5 @@
1
+ [console_scripts]
2
+ mosamatic2=mosamatic2.app:main
3
+ mosamatic2-cli=mosamatic2.cli:main
4
+ mosamatic2-server=mosamatic2.server:main
5
+