Skip to content

Commit

Permalink
Merge pull request #43 from TimMonko/scene_extract
Browse files Browse the repository at this point in the history
Update _utilities_container.py to add scene extraction
  • Loading branch information
TimMonko authored Jun 12, 2024
2 parents 283ec39 + 5f86966 commit e40c165
Showing 1 changed file with 48 additions and 1 deletion.
49 changes: 48 additions & 1 deletion src/napari_ndev/_utilities_container.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ def __init__(
self._image_save_dims = None
self._label_save_dims = None
self._p_sizes = None

##############################
# Widgets
##############################
Expand Down Expand Up @@ -156,6 +157,11 @@ def __init__(
label="Dimension Order",
tooltip="Sanity check for available dimensions.",
)

self._scenes = Label(
label="Number of Scenes",
)

self._channel_names = LineEdit(
label="Channel Name(s)",
tooltip="Enter channel names as a list. If left blank or the "
Expand Down Expand Up @@ -184,6 +190,16 @@ def current_layers(_):
choices=current_layers, nullable=False, label="Images"
) # use no value and allow user to deselect layers

self._scenes_to_extract = LineEdit(
label="Scenes to Extract",
tooltip="Enter the scenes to extract as a list. If left blank "
"then all scenes will be extracted.",
)
self._extract_scenes = PushButton(
label="Extract Scenes",
tooltip="Extract scenes from a single selected file.",
)

self._concatenate_image_files = CheckBox(
label="Concatenate Files",
tooltip="Concatenate files in the selected directory. Removes "
Expand Down Expand Up @@ -219,18 +235,21 @@ def current_layers(_):
# Container Widget Order
self.extend(
[
self._save_directory,
self._files,
self._open_image_button,
self._dim_order,
self._scenes,
self._channel_names,
self._physical_pixel_sizes_z,
self._physical_pixel_sizes_y,
self._physical_pixel_sizes_x,
self._image_layer,
self._metadata_from_selected_layer,
self._scenes_to_extract,
self._extract_scenes,
self._concatenate_image_files,
self._concatenate_image_layers,
self._save_directory,
self._save_name,
self._save_image_button,
self._labels_layer,
Expand All @@ -249,6 +268,7 @@ def current_layers(_):
self.update_metadata_from_layer
)

self._extract_scenes.clicked.connect(self.save_scenes_ome_tiff)
self._save_image_button.clicked.connect(self.save_ome_tiff)
self._save_labels_button.clicked.connect(self.save_labels)
self._save_shapes_button.clicked.connect(self.save_shapes_as_labels)
Expand All @@ -268,6 +288,7 @@ def update_metadata_from_file(self):
img = AICSImage(self._files.value[0])
self._img = img
self._update_metadata(img)
self._scenes.value = len(img.scenes)
self._save_name.value = str(self._files.value[0].stem + ".tif")

def update_metadata_from_layer(self):
Expand Down Expand Up @@ -370,6 +391,32 @@ def _common_save_logic(
)
return

def save_scenes_ome_tiff(self) -> None:
img = AICSImage(self._files.value[0])
scenes = self._scenes_to_extract.value
scenes_list = ast.literal_eval(scenes) if scenes else None
save_directory = self._save_directory.value / "Images"
save_directory.mkdir(parents=False, exist_ok=True)
for scene in scenes_list:
img.set_scene(scene)

img_save_name = (f'{self._save_name.value.split(".")[0]}'
f'_scene_{img.current_scene}.ome.tiff')
img_save_loc = save_directory / img_save_name

# get channel names from widget if truthy
cnames = self._channel_names.value
channel_names = ast.literal_eval(cnames) if cnames else None

self._common_save_logic(
data=img.data,
uri=img_save_loc,
dim_order="TCZYX",
channel_names=channel_names,
layer=f"Scene: {img.current_scene}",
)
return

def save_ome_tiff(self) -> None:
self._img_data = self.concatenate_images(
self._concatenate_image_files.value,
Expand Down

0 comments on commit e40c165

Please sign in to comment.