From 3be7e5953ce944ede92e899e67136bb3be649d3a Mon Sep 17 00:00:00 2001
From: Christopher Rhodes <christopher.rhodes@embl.de>
Date: Mon, 30 Oct 2023 17:22:51 +0100
Subject: [PATCH] Batch workflow now running without errors and creating
 meaningful output data

---
 extensions/chaeo/workflows.py | 41 +++++++++++++++--------------------
 1 file changed, 18 insertions(+), 23 deletions(-)

diff --git a/extensions/chaeo/workflows.py b/extensions/chaeo/workflows.py
index ce7714d7..61b9c3c4 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': {},
+    }
 
 
 
-- 
GitLab