diff --git a/src/nimbus_inference/utils.py b/src/nimbus_inference/utils.py index 3dd808f..33c55d6 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"] # 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: 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"]) )