From 22f9ea288d90133d0cc0ea3fc5660b0886434aa5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 15:14:55 +0000 Subject: [PATCH 1/2] Add centroid x,y coords and cell area to Nimbus final results Agent-Logs-Url: https://github.com/angelolab/Nimbus-Inference/sessions/f3ab28ef-2cf0-434e-8819-eea7f2cbeae6 Co-authored-by: JLrumberger <22618181+JLrumberger@users.noreply.github.com> --- src/nimbus_inference/utils.py | 5 ++++- tests/test_utils.py | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/nimbus_inference/utils.py b/src/nimbus_inference/utils.py index 3dd808f..72967de 100644 --- a/src/nimbus_inference/utils.py +++ b/src/nimbus_inference/utils.py @@ -551,7 +551,7 @@ def segment_mean(instance_mask, prediction): """ props_df = regionprops_table( label_image=instance_mask.astype(np.int32), intensity_image=prediction, - properties=['label' , 'centroid', 'intensity_mean'] + properties=['label' , 'centroid', 'area', 'intensity_mean'] ) return props_df @@ -663,6 +663,9 @@ def predict_fovs( if df_fov.empty: df_fov["label"] = df["label"] df_fov["fov"] = os.path.basename(fov_path) + df_fov["centroid_x"] = df["centroid-1"] + df_fov["centroid_y"] = df["centroid-0"] + df_fov["area"] = df["area"] df_fov[channel_name] = df["intensity_mean"] if save_predictions: os.makedirs(out_fov_path, exist_ok=True) diff --git a/tests/test_utils.py b/tests/test_utils.py index 1d80cc3..12ed72a 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -300,7 +300,7 @@ def segmentation_naming_convention(fov_path): assert len(cell_table) == 15 # check if we get the correct columns (fov, label, CD4, CD56) assert np.alltrue( - set(cell_table.columns) == set(["fov", "label", "CD4", "CD56"]) + set(cell_table.columns) == set(["fov", "label", "centroid_x", "centroid_y", "area", "CD4", "CD56"]) ) # check if predictions don't get written to output_dir assert not os.path.exists(os.path.join(output_dir, "fov_0", "CD4.tiff")) @@ -332,7 +332,7 @@ def segmentation_naming_convention(fov_path): assert len(cell_table) == 15 # check if we get the correct columns (fov, label, CD4, CD56) assert np.alltrue( - set(cell_table.columns) == set(["fov", "label", "CD4", "CD56"]) + set(cell_table.columns) == set(["fov", "label", "centroid_x", "centroid_y", "area", "CD4", "CD56"]) ) From ece5dfcd6c956802dc604beb6c772101aceace25 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 15:15:58 +0000 Subject: [PATCH 2/2] Add clarifying comments for centroid axis mapping Agent-Logs-Url: https://github.com/angelolab/Nimbus-Inference/sessions/f3ab28ef-2cf0-434e-8819-eea7f2cbeae6 Co-authored-by: JLrumberger <22618181+JLrumberger@users.noreply.github.com> --- src/nimbus_inference/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nimbus_inference/utils.py b/src/nimbus_inference/utils.py index 72967de..33c55d6 100644 --- a/src/nimbus_inference/utils.py +++ b/src/nimbus_inference/utils.py @@ -663,8 +663,8 @@ def predict_fovs( if df_fov.empty: df_fov["label"] = df["label"] df_fov["fov"] = os.path.basename(fov_path) - df_fov["centroid_x"] = df["centroid-1"] - df_fov["centroid_y"] = df["centroid-0"] + df_fov["centroid_x"] = df["centroid-1"] # column dimension + df_fov["centroid_y"] = df["centroid-0"] # row dimension df_fov["area"] = df["area"] df_fov[channel_name] = df["intensity_mean"] if save_predictions: