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.
- models.py +259 -0
- mosamatic2/__init__.py +0 -0
- mosamatic2/app.py +32 -0
- mosamatic2/cli.py +50 -0
- mosamatic2/commands/__init__.py +0 -0
- mosamatic2/commands/boadockerpipeline.py +48 -0
- mosamatic2/commands/calculatemaskstatistics.py +59 -0
- mosamatic2/commands/calculatescores.py +73 -0
- mosamatic2/commands/createdicomsummary.py +61 -0
- mosamatic2/commands/createpngsfromsegmentations.py +65 -0
- mosamatic2/commands/defaultdockerpipeline.py +84 -0
- mosamatic2/commands/defaultpipeline.py +70 -0
- mosamatic2/commands/dicom2nifti.py +55 -0
- mosamatic2/commands/liveranalysispipeline.py +61 -0
- mosamatic2/commands/rescaledicomimages.py +54 -0
- mosamatic2/commands/segmentmusclefatl3tensorflow.py +55 -0
- mosamatic2/commands/selectslicefromscans.py +66 -0
- mosamatic2/commands/totalsegmentator.py +77 -0
- mosamatic2/constants.py +27 -0
- mosamatic2/core/__init__.py +0 -0
- mosamatic2/core/data/__init__.py +5 -0
- mosamatic2/core/data/dicomimage.py +27 -0
- mosamatic2/core/data/dicomimageseries.py +26 -0
- mosamatic2/core/data/dixonseries.py +22 -0
- mosamatic2/core/data/filedata.py +26 -0
- mosamatic2/core/data/multidicomimage.py +30 -0
- mosamatic2/core/data/multiniftiimage.py +26 -0
- mosamatic2/core/data/multinumpyimage.py +26 -0
- mosamatic2/core/data/niftiimage.py +13 -0
- mosamatic2/core/data/numpyimage.py +13 -0
- mosamatic2/core/managers/__init__.py +0 -0
- mosamatic2/core/managers/logmanager.py +45 -0
- mosamatic2/core/managers/logmanagerlistener.py +3 -0
- mosamatic2/core/pipelines/__init__.py +4 -0
- mosamatic2/core/pipelines/boadockerpipeline/__init__.py +0 -0
- mosamatic2/core/pipelines/boadockerpipeline/boadockerpipeline.py +70 -0
- mosamatic2/core/pipelines/defaultdockerpipeline/__init__.py +0 -0
- mosamatic2/core/pipelines/defaultdockerpipeline/defaultdockerpipeline.py +28 -0
- mosamatic2/core/pipelines/defaultpipeline/__init__.py +0 -0
- mosamatic2/core/pipelines/defaultpipeline/defaultpipeline.py +90 -0
- mosamatic2/core/pipelines/liveranalysispipeline/__init__.py +0 -0
- mosamatic2/core/pipelines/liveranalysispipeline/liveranalysispipeline.py +48 -0
- mosamatic2/core/pipelines/pipeline.py +14 -0
- mosamatic2/core/singleton.py +9 -0
- mosamatic2/core/tasks/__init__.py +13 -0
- mosamatic2/core/tasks/applythresholdtosegmentationstask/__init__.py +0 -0
- mosamatic2/core/tasks/applythresholdtosegmentationstask/applythresholdtosegmentationstask.py +117 -0
- mosamatic2/core/tasks/calculatemaskstatisticstask/__init__.py +0 -0
- mosamatic2/core/tasks/calculatemaskstatisticstask/calculatemaskstatisticstask.py +104 -0
- mosamatic2/core/tasks/calculatescorestask/__init__.py +0 -0
- mosamatic2/core/tasks/calculatescorestask/calculatescorestask.py +152 -0
- mosamatic2/core/tasks/createdicomsummarytask/__init__.py +0 -0
- mosamatic2/core/tasks/createdicomsummarytask/createdicomsummarytask.py +88 -0
- mosamatic2/core/tasks/createpngsfromsegmentationstask/__init__.py +0 -0
- mosamatic2/core/tasks/createpngsfromsegmentationstask/createpngsfromsegmentationstask.py +101 -0
- mosamatic2/core/tasks/dicom2niftitask/__init__.py +0 -0
- mosamatic2/core/tasks/dicom2niftitask/dicom2niftitask.py +45 -0
- mosamatic2/core/tasks/rescaledicomimagestask/__init__.py +0 -0
- mosamatic2/core/tasks/rescaledicomimagestask/rescaledicomimagestask.py +64 -0
- mosamatic2/core/tasks/segmentationnifti2numpytask/__init__.py +0 -0
- mosamatic2/core/tasks/segmentationnifti2numpytask/segmentationnifti2numpytask.py +57 -0
- mosamatic2/core/tasks/segmentationnumpy2niftitask/__init__.py +0 -0
- mosamatic2/core/tasks/segmentationnumpy2niftitask/segmentationnumpy2niftitask.py +86 -0
- mosamatic2/core/tasks/segmentmusclefatl3tensorflowtask/__init__.py +0 -0
- mosamatic2/core/tasks/segmentmusclefatl3tensorflowtask/paramloader.py +39 -0
- mosamatic2/core/tasks/segmentmusclefatl3tensorflowtask/segmentmusclefatl3tensorflowtask.py +122 -0
- mosamatic2/core/tasks/segmentmusclefatt4pytorchtask/__init__.py +0 -0
- mosamatic2/core/tasks/segmentmusclefatt4pytorchtask/paramloader.py +39 -0
- mosamatic2/core/tasks/segmentmusclefatt4pytorchtask/segmentmusclefatt4pytorchtask.py +128 -0
- mosamatic2/core/tasks/selectslicefromscanstask/__init__.py +0 -0
- mosamatic2/core/tasks/selectslicefromscanstask/selectslicefromscanstask.py +249 -0
- mosamatic2/core/tasks/task.py +50 -0
- mosamatic2/core/tasks/totalsegmentatortask/__init__.py +0 -0
- mosamatic2/core/tasks/totalsegmentatortask/totalsegmentatortask.py +75 -0
- mosamatic2/core/utils.py +405 -0
- mosamatic2/server.py +146 -0
- mosamatic2/ui/__init__.py +0 -0
- mosamatic2/ui/mainwindow.py +426 -0
- mosamatic2/ui/resources/VERSION +1 -0
- mosamatic2/ui/resources/icons/mosamatic2.icns +0 -0
- mosamatic2/ui/resources/icons/mosamatic2.ico +0 -0
- mosamatic2/ui/resources/icons/spinner.gif +0 -0
- mosamatic2/ui/resources/images/body-composition.jpg +0 -0
- mosamatic2/ui/settings.py +62 -0
- mosamatic2/ui/utils.py +36 -0
- mosamatic2/ui/widgets/__init__.py +0 -0
- mosamatic2/ui/widgets/dialogs/__init__.py +0 -0
- mosamatic2/ui/widgets/dialogs/dialog.py +16 -0
- mosamatic2/ui/widgets/dialogs/helpdialog.py +9 -0
- mosamatic2/ui/widgets/panels/__init__.py +0 -0
- mosamatic2/ui/widgets/panels/defaultpanel.py +31 -0
- mosamatic2/ui/widgets/panels/logpanel.py +65 -0
- mosamatic2/ui/widgets/panels/mainpanel.py +82 -0
- mosamatic2/ui/widgets/panels/pipelines/__init__.py +0 -0
- mosamatic2/ui/widgets/panels/pipelines/boadockerpipelinepanel.py +195 -0
- mosamatic2/ui/widgets/panels/pipelines/defaultdockerpipelinepanel.py +314 -0
- mosamatic2/ui/widgets/panels/pipelines/defaultpipelinepanel.py +302 -0
- mosamatic2/ui/widgets/panels/pipelines/liveranalysispipelinepanel.py +187 -0
- mosamatic2/ui/widgets/panels/pipelines/pipelinepanel.py +6 -0
- mosamatic2/ui/widgets/panels/settingspanel.py +16 -0
- mosamatic2/ui/widgets/panels/stackedpanel.py +22 -0
- mosamatic2/ui/widgets/panels/tasks/__init__.py +0 -0
- mosamatic2/ui/widgets/panels/tasks/applythresholdtosegmentationstaskpanel.py +271 -0
- mosamatic2/ui/widgets/panels/tasks/calculatemaskstatisticstaskpanel.py +215 -0
- mosamatic2/ui/widgets/panels/tasks/calculatescorestaskpanel.py +238 -0
- mosamatic2/ui/widgets/panels/tasks/createdicomsummarytaskpanel.py +206 -0
- mosamatic2/ui/widgets/panels/tasks/createpngsfromsegmentationstaskpanel.py +247 -0
- mosamatic2/ui/widgets/panels/tasks/dicom2niftitaskpanel.py +183 -0
- mosamatic2/ui/widgets/panels/tasks/rescaledicomimagestaskpanel.py +184 -0
- mosamatic2/ui/widgets/panels/tasks/segmentationnifti2numpytaskpanel.py +192 -0
- mosamatic2/ui/widgets/panels/tasks/segmentationnumpy2niftitaskpanel.py +213 -0
- mosamatic2/ui/widgets/panels/tasks/segmentmusclefatl3tensorflowtaskpanel.py +216 -0
- mosamatic2/ui/widgets/panels/tasks/segmentmusclefatt4pytorchtaskpanel.py +217 -0
- mosamatic2/ui/widgets/panels/tasks/selectslicefromscanstaskpanel.py +193 -0
- mosamatic2/ui/widgets/panels/tasks/taskpanel.py +6 -0
- mosamatic2/ui/widgets/panels/tasks/totalsegmentatortaskpanel.py +195 -0
- mosamatic2/ui/widgets/panels/visualizations/__init__.py +0 -0
- mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/__init__.py +0 -0
- mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/liversegmentpicker.py +96 -0
- mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/liversegmentviewer.py +130 -0
- mosamatic2/ui/widgets/panels/visualizations/liversegmentvisualization/liversegmentvisualization.py +120 -0
- mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/__init__.py +0 -0
- mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/sliceselectionviewer.py +61 -0
- mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/sliceselectionvisualization.py +133 -0
- mosamatic2/ui/widgets/panels/visualizations/sliceselectionvisualization/slicetile.py +63 -0
- mosamatic2/ui/widgets/panels/visualizations/slicevisualization/__init__.py +0 -0
- mosamatic2/ui/widgets/panels/visualizations/slicevisualization/custominteractorstyle.py +80 -0
- mosamatic2/ui/widgets/panels/visualizations/slicevisualization/sliceviewer.py +116 -0
- mosamatic2/ui/widgets/panels/visualizations/slicevisualization/slicevisualization.py +141 -0
- mosamatic2/ui/widgets/panels/visualizations/visualization.py +6 -0
- mosamatic2/ui/widgets/splashscreen.py +101 -0
- mosamatic2/ui/worker.py +29 -0
- mosamatic2-2.0.24.dist-info/METADATA +43 -0
- mosamatic2-2.0.24.dist-info/RECORD +136 -0
- mosamatic2-2.0.24.dist-info/WHEEL +4 -0
- 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,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())
|
mosamatic2/ui/worker.py
ADDED
|
@@ -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,,
|