Bases: QTabWidget
A widget offering to select a layer from napari or a path from disk.
Source code in src/careamics_napari/widgets/predict_data_widget.py
| class PredictDataWidget(QTabWidget):
"""A widget offering to select a layer from napari or a path from disk."""
def __init__(self) -> None:
"""Initialize the widget."""
super().__init__()
# QTabs
layer_tab = QWidget()
disk_tab = QWidget()
# add tabs
_tab_idx = 0
if _has_napari and napari.current_viewer() is not None:
# tab for selecting data from napari layers
self.addTab(layer_tab, "From layers")
self.setTabToolTip(_tab_idx, "Use images from napari layers")
# add tab contents
self._set_layer_tab(layer_tab)
_tab_idx += 1
# tab for selecting data from disk
self.addTab(disk_tab, "From disk")
self.setTabToolTip(_tab_idx, "Use patches saved on the disk")
self._set_disk_tab(disk_tab)
def get_data_sources(self) -> str | np.ndarray | None:
"""Get the selected data sources."""
if (
self.img_pred.value is None # type: ignore
and len(self.pred_images_folder.get_folder()) == 0
):
# no prediction data has been selected
return None
if self.currentIndex() == 0:
# data is expected from napari layers
pred_data = self.img_pred.value.data # type: ignore
else:
# data is expected from disk
pred_data = self.pred_images_folder.get_folder()
return pred_data
def _set_layer_tab(
self,
layer_tab: QWidget,
) -> None:
"""Set up the layer tab.
Parameters
----------
layer_tab : QWidget
The layer tab.
"""
form = QFormLayout()
form.setFormAlignment(Qt.AlignLeft | Qt.AlignTop) # type: ignore
form.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow) # type: ignore
form.setContentsMargins(12, 12, 0, 0)
self.img_pred = layer_choice()
self.img_pred.native.setToolTip("Select the prediction layer.")
form.addRow("Predict", self.img_pred.native)
vbox = QVBoxLayout()
vbox.addLayout(form)
layer_tab.setLayout(vbox)
def _set_disk_tab(self, disk_tab: QWidget) -> None:
"""Set up the disk tab.
Parameters
----------
disk_tab : QWidget
The disk tab.
"""
form = QFormLayout()
form.setFormAlignment(Qt.AlignLeft | Qt.AlignTop) # type: ignore
form.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow) # type: ignore
form.setContentsMargins(12, 12, 0, 0)
self.pred_images_folder = FolderWidget("Choose")
self.pred_images_folder.setToolTip("Select a folder containing images.")
form.addRow("Predict", self.pred_images_folder)
vbox = QVBoxLayout()
vbox.addLayout(form)
disk_tab.setLayout(vbox)
|
Initialize the widget.
Source code in src/careamics_napari/widgets/predict_data_widget.py
| def __init__(self) -> None:
"""Initialize the widget."""
super().__init__()
# QTabs
layer_tab = QWidget()
disk_tab = QWidget()
# add tabs
_tab_idx = 0
if _has_napari and napari.current_viewer() is not None:
# tab for selecting data from napari layers
self.addTab(layer_tab, "From layers")
self.setTabToolTip(_tab_idx, "Use images from napari layers")
# add tab contents
self._set_layer_tab(layer_tab)
_tab_idx += 1
# tab for selecting data from disk
self.addTab(disk_tab, "From disk")
self.setTabToolTip(_tab_idx, "Use patches saved on the disk")
self._set_disk_tab(disk_tab)
|
Get the selected data sources.
Source code in src/careamics_napari/widgets/predict_data_widget.py
| def get_data_sources(self) -> str | np.ndarray | None:
"""Get the selected data sources."""
if (
self.img_pred.value is None # type: ignore
and len(self.pred_images_folder.get_folder()) == 0
):
# no prediction data has been selected
return None
if self.currentIndex() == 0:
# data is expected from napari layers
pred_data = self.img_pred.value.data # type: ignore
else:
# data is expected from disk
pred_data = self.pred_images_folder.get_folder()
return pred_data
|