diff --git a/extensions/chaeo/workflows.py b/extensions/chaeo/workflows.py index ce7714d74df1c39fd97c616911620e9be3c6ebfe..61b9c3c460487937814c54f41f499b2cf5956384 100644 --- a/extensions/chaeo/workflows.py +++ b/extensions/chaeo/workflows.py @@ -265,36 +265,31 @@ def infer_object_map_from_zstack( # send patches and mask stacks to object classifier result_acc, _ = object_classifier.infer(patches_acc, patch_masks_acc) - object_labels_map = np.copy(interm['label_map']) - assert object_labels_map.shape == interm['label_map'].shape - assert object_labels_map.dtype == interm['label_map'].dtype + labels_map = interm['label_map'] + output_map = np.zeros(labels_map.shape, dtype=labels_map.dtype) + assert labels_map.shape == interm['label_map'].shape + assert labels_map.dtype == interm['label_map'].dtype # assign labels to object map: + meta = [] for ii in range(0, len(zmask_meta)): - mi = zmask_meta[ii] - object_label_id = mi['info'].label - result_label_map = mask_largest_object(result_acc.iat(ii)) - assert result_label_map.ndim == 2 - unique_values = np.unique(result_label_map) - 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] - # object_labels_map[ii_mask] = np.unique( - # mask_largest_object( - # result_acc.iat(ii) - # ) - # )[1] - # patch = patches_acc.iat(ii) + object_id = zmask_meta[ii]['info'].label + result_patch = mask_largest_object(result_acc.iat(ii)) + object_class = np.unique(result_patch)[1] + output_map[labels_map == object_id] = object_class + meta.append({'object_id': ii, 'object_class': object_id}) write_accessor_data_to_file( - Path(output_folder_path) / 'obj_classes_' / (fstem + '.tif'), - object_labels_map + Path(output_folder_path) / ('obj_classes_' + (fstem + '.tif')), + InMemoryDataAccessor(output_map) ) ti.click('export_object_classes') - return ti + + return { + 'timer_results': ti.events, + 'dataframe': pd.DataFrame(meta), + 'interm': {}, + }