Skip to content

Commit a765860

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 837c206 commit a765860

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
@@ -244,7 +244,17 @@ def load_folder(self):
244244

245245
def load_layer(self):
246246

247-
volume = np.array(self.layer.data, dtype=np.int16)
247+
data = np.squeeze(self.layer.data)
248+
249+
volume = np.array(data, dtype=np.int16)
250+
251+
volume_dims = len(volume.shape)
252+
if volume_dims != 3:
253+
raise ValueError(
254+
f"Data array is not 3-dimensional but {volume_dims}-dimensional,"
255+
f" please check for extra channel/batch dimensions"
256+
)
257+
248258
volume = np.swapaxes(
249259
volume, 0, 2
250260
) # for anisotropy to be monai-like, i.e. zyx
@@ -437,7 +447,7 @@ def inference_on_layer(self, image, model, post_process_transforms):
437447

438448
# print(inputs.shape)
439449
image = image.type(torch.FloatTensor)
440-
out = self.model_output(image,model, post_process_transforms)
450+
out = self.model_output(image, model, post_process_transforms)
441451
out = self.aniso_transform(out)
442452
# if self.transforms["zoom"][0]:
443453
# zoom = self.transforms["zoom"][1]
@@ -496,9 +506,9 @@ def inference_on_layer(self, image, model, post_process_transforms):
496506
result = {
497507
"image_id": 0,
498508
"original": None,
499-
"instance_labels": np.swapaxes(instance_labels, 0,2),
509+
"instance_labels": np.swapaxes(instance_labels, 0, 2),
500510
"object stats": data_dict,
501-
"result": np.swapaxes(out, 0,2),
511+
"result": np.swapaxes(out, 0, 2),
502512
"model_name": self.model_dict["name"],
503513
}
504514
return result

0 commit comments

Comments
 (0)