diff --git a/model_server/base/roiset.py b/model_server/base/roiset.py index 5e4a1eb21f40ccb77dcbdf51240f0aac66dbcbfd..9ff9e3e1055a10d8f9e1e8163a36858a0db5a168 100644 --- a/model_server/base/roiset.py +++ b/model_server/base/roiset.py @@ -687,7 +687,7 @@ class RoiSet(object): def get_object_identities_overlay_map( self, white_channel, - transparency: float = 0.0 + transparency: float = 0.5 ) -> InMemoryDataAccessor: # TODO: just make resample_to_8bit accessor method mono = self.acc_raw.get_mono(channel=white_channel).apply(resample_to_8bit, preserve_dtype=False).data_yxz @@ -707,8 +707,10 @@ class RoiSet(object): assert id_map_yxcz.shape[3] == mono.shape[2] assert id_map_yxcz.dtype == mono.dtype - combined = np.stack([mono, mono, mono], axis=2) + id_map_yxcz - return InMemoryDataAccessor(combined) + combined = np.stack([mono, mono, mono], axis=2) + transparency * id_map_yxcz + combined_8bit = np.clip(combined, 0, 255).round().astype('uint8') + assert combined_8bit.max() <= 255 + return InMemoryDataAccessor(combined_8bit) def get_serializable_dataframe(self) -> pd.DataFrame: return self._df.drop(['expanded_slice', 'slice', 'relative_slice', 'binary_mask'], axis=1) diff --git a/tests/base/test_roiset.py b/tests/base/test_roiset.py index ea86a41d71ef531dd4fc286bd776d7522810441f..8edb3d0dec6fe36e9eaae0876796ee7cd32cbf8e 100644 --- a/tests/base/test_roiset.py +++ b/tests/base/test_roiset.py @@ -371,7 +371,7 @@ class TestRoiSetMultichannelProducts(BaseTestRoiSetMonoProducts, unittest.TestCa def test_multichannel_to_label_ids_overlay(self): where = output_path / 'multichannel' / 'multichannel_label_ids_overlay' - acc_out = self.roiset.get_object_identities_overlay_map(white_channel=3) + acc_out = self.roiset.get_object_identities_overlay_map(white_channel=3, transparency=1.0) self.assertEqual(acc_out.chroma, 3) acc_out.write(where / 'overlay.tif') @@ -381,6 +381,7 @@ class TestRoiSetMultichannelProducts(BaseTestRoiSetMonoProducts, unittest.TestCa [3, 2, 0, 1], [0, 1, 2, 3], ) + # TODO: move composite writing option to accessor.write imwrite(where / 'overlay_rgb.tif', zcyx, metadata={'axes': 'ZCYX', 'mode': 'composite'}, imagej=True) def test_multichannel_annotated_zstack(self):