-
Notifications
You must be signed in to change notification settings - Fork 17
Closed
Description
Rasterizing a labels layer during plotting, can result in removal of small labels, resulting in inconsitenties.
Minimal example to reproduce the issue
import numpy as np
import pandas as pd
from spatialdata.datasets import blobs
from spatialdata.models import TableModel
import spatialdata_plot
RNG = np.random.default_rng(seed=42)
labels_name = "blobs_labels"
sdata_blobs = blobs()
from spatialdata.models import Labels2DModel
import dask.array as da
labels = sdata_blobs[ "blobs_labels" ].data.compute()
# make label 1 small
mask = ( labels == 1 )
labels[ mask ] = 0
labels[ 200, 200 ] = 1
sdata_blobs[ "blobs_labels" ] = Labels2DModel.parse(labels )
If we now do
sdata_blobs.pl.render_labels( "blobs_labels", color="channel_0_sum", table_name="table" ).pl.show()
we get:
which is correct. However, if we do:
arr=da.tile( sdata_blobs[ "blobs_labels" ], ( 4,4 ) )
sdata_blobs[ "blobs_labels_large" ] = Labels2DModel.parse(arr)
adata=sdata_blobs[ "table" ]
adata.obs[ "region" ] = "blobs_labels_large"
adata.uns.pop(TableModel.ATTRS_KEY)
adata = spatialdata.models.TableModel.parse(
adata,
region_key="region",
region="blobs_labels_large",
instance_key="instance_id",
)
sdata_blobs.pl.render_labels( "blobs_labels_large", color="channel_0_sum", table_name="table" ).pl.show()
we get:
while we expect:
Metadata
Metadata
Assignees
Labels
No labels