diff --git a/extensions/chaeo/accessors.py b/extensions/chaeo/accessors.py index 47f33a1912ef2de6cf1835c6e84ce705cec91611..5d2987faabe5d341b9c23193d0ce32b2f4fa56d0 100644 --- a/extensions/chaeo/accessors.py +++ b/extensions/chaeo/accessors.py @@ -16,8 +16,8 @@ class MonoPatchStack(InMemoryDataAccessor): assert data.ndim == 3 self._data = np.expand_dims(data, 2) elif isinstance(data, list): # list of YX patches - nda = np.array(data) - assert nda.squeeze().ndim == 3 + nda = np.array(data).squeeze() + assert nda.ndim == 3 self._data = np.expand_dims( np.moveaxis( nda, diff --git a/extensions/chaeo/process.py b/extensions/chaeo/process.py index 368f254b00d318db0d88e44ec83836e85029b349..9b736c23c1421ab72aeefcb61f14e11278144ce6 100644 --- a/extensions/chaeo/process.py +++ b/extensions/chaeo/process.py @@ -16,6 +16,12 @@ def mask_largest_object( """ binary = img > 0 ob_id = label(binary) + # separate problem for mask and object maps + + # import skimage + # from pathlib import Path + # where = Path('c:/Users/rhodes/projects/proj0011-plankton-seg/tmp') + # skimage.io.imsave(where / 'raw.png', img) num_obj = len(np.unique(ob_id)) - 1 if num_obj > max_allowed: raise TooManyObjectError(f'Found {num_obj} objects in frame') diff --git a/extensions/chaeo/workflows.py b/extensions/chaeo/workflows.py index e988b84c6c60655faaf5bd0aa2e4be42cf3d99ae..ce7714d74df1c39fd97c616911620e9be3c6ebfe 100644 --- a/extensions/chaeo/workflows.py +++ b/extensions/chaeo/workflows.py @@ -273,14 +273,21 @@ def infer_object_map_from_zstack( for ii in range(0, len(zmask_meta)): mi = zmask_meta[ii] object_label_id = mi['info'].label - result_label_map = result_acc.iat(ii) + result_label_map = mask_largest_object(result_acc.iat(ii)) assert result_label_map.ndim == 2 unique_values = np.unique(result_label_map) - assert len(unique_values) == 2 + if not len(unique_values) == 2: + mask_largest_object(result_label_map) + raise Exception() assert unique_values[0] == 0 ii_mask = object_labels_map == object_label_id object_labels_map[ii_mask] = unique_values[1] - patch = patches_acc.iat(ii) + # object_labels_map[ii_mask] = np.unique( + # mask_largest_object( + # result_acc.iat(ii) + # ) + # )[1] + # patch = patches_acc.iat(ii) write_accessor_data_to_file( Path(output_folder_path) / 'obj_classes_' / (fstem + '.tif'),