Skip to content

Commit 32f9b4f

Browse files
committed
Better dimension handling
NOTE : Layer orientation can be hard to determine, anisotropy ends up being wrong due to this depending on whether layer is loaded image or "original" from previous inference
1 parent 61e3bcf commit 32f9b4f

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

napari_cellseg3d/model_workers.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,17 @@ def load_folder(self):
344344

345345
def load_layer(self):
346346

347-
volume = np.array(self.layer.data, dtype=np.int16)
347+
data = np.squeeze(self.layer.data)
348+
349+
volume = np.array(data, dtype=np.int16)
350+
351+
volume_dims = len(volume.shape)
352+
if volume_dims != 3:
353+
raise ValueError(
354+
f"Data array is not 3-dimensional but {volume_dims}-dimensional,"
355+
f" please check for extra channel/batch dimensions"
356+
)
357+
348358
volume = np.swapaxes(
349359
volume, 0, 2
350360
) # for anisotropy to be monai-like, i.e. zyx
@@ -537,7 +547,7 @@ def inference_on_layer(self, image, model, post_process_transforms):
537547

538548
# print(inputs.shape)
539549
image = image.type(torch.FloatTensor)
540-
out = self.model_output(image,model, post_process_transforms)
550+
out = self.model_output(image, model, post_process_transforms)
541551
out = self.aniso_transform(out)
542552
# if self.transforms["zoom"][0]:
543553
# zoom = self.transforms["zoom"][1]
@@ -596,9 +606,9 @@ def inference_on_layer(self, image, model, post_process_transforms):
596606
result = {
597607
"image_id": 0,
598608
"original": None,
599-
"instance_labels": np.swapaxes(instance_labels, 0,2),
609+
"instance_labels": np.swapaxes(instance_labels, 0, 2),
600610
"object stats": data_dict,
601-
"result": np.swapaxes(out, 0,2),
611+
"result": np.swapaxes(out, 0, 2),
602612
"model_name": self.model_dict["name"],
603613
}
604614
return result

0 commit comments

Comments
 (0)