Skip to content

Commit 158afcb

Browse files
Update measurement tests
1 parent 359b3e3 commit 158afcb

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

flamingo_tools/measurements.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,11 @@ def intensity_measures(seg_id):
8989
return measures
9090

9191
seg_ids = table.label_id.values
92+
assert len(seg_ids) > 0, "The segmentation table is empty."
9293
n_threads = mp.cpu_count() if n_threads is None else n_threads
9394
with futures.ThreadPoolExecutor(n_threads) as pool:
9495
measures = list(tqdm(
95-
pool.map(intensity_measures, seg_ids),
96-
total=len(seg_ids), desc="Compute intensity measures"
96+
pool.map(intensity_measures, seg_ids), total=len(seg_ids), desc="Compute intensity measures"
9797
))
9898

9999
# Create the result table and save it.

test/test_measurements.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
import imageio.v3 as imageio
66
import pandas as pd
7+
import numpy as np
8+
from skimage.measure import regionprops_table
79

810

911
class TestMeasurements(unittest.TestCase):
@@ -41,6 +43,18 @@ def test_compute_object_measures(self):
4143
expected_shape = (n_objects, len(expected_columns))
4244
self.assertEqual(table.shape, expected_shape)
4345

46+
image = imageio.imread(self.image_path)
47+
segmentation = imageio.imread(self.seg_path)
48+
properties = ("label", "intensity_mean", "intensity_std", "intensity_min", "intensity_max")
49+
expected_measures = regionprops_table(segmentation, intensity_image=image, properties=properties)
50+
expected_measures = pd.DataFrame(expected_measures)
51+
52+
for (col, col_exp) in [
53+
("label_id", "label"), ("mean", "intensity_mean"), ("stdev", "intensity_std"),
54+
("min", "intensity_min"), ("max", "intensity_max"),
55+
]:
56+
self.assertTrue(np.allclose(table[col].values, expected_measures[col_exp].values))
57+
4458

4559
if __name__ == "__main__":
4660
unittest.main()

0 commit comments

Comments
 (0)