Skip to content

Commit

Permalink
Drop z dimension from saved rois (#228)
Browse files Browse the repository at this point in the history
  • Loading branch information
LucaMarconato authored Mar 30, 2024
1 parent 58c95f2 commit 2afcb32
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/napari_spatialdata/_constants/config.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
POLYGON_THRESHOLD = 100
POINT_THRESHOLD = 100000
N_CIRCLES_WARNING_THRESHOLD = 100000
N_CIRCLES_WARNING_THRESHOLD = 250000
N_SHAPES_WARNING_THRESHOLD = 10000
17 changes: 10 additions & 7 deletions src/napari_spatialdata/_viewer.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
_get_unique_label_values_as_index,
_left_join_spatialelement_table,
)
from spatialdata.models import PointsModel, ShapesModel
from spatialdata.models import PointsModel, ShapesModel, force_2d
from spatialdata.transformations import Affine, Identity
from spatialdata.transformations._utils import scale_radii

Expand All @@ -35,7 +35,6 @@

if TYPE_CHECKING:
import numpy.typing as npt
from dask.dataframe.core import DataFrame as DaskDataFrame
from napari.layers import Layer
from napari.utils.events import Event, EventedList
from spatialdata import SpatialData
Expand Down Expand Up @@ -182,24 +181,28 @@ def save_to_sdata(self, layers: list[Layer]) -> None:
raise ValueError("Cannot export a points element with no points")
transformed_data = np.array([selected.data_to_world(xy) for xy in selected.data])
swap_data = np.fliplr(transformed_data)
model = PointsModel.parse(swap_data, transformations=transformation)
sdata.points[selected.name] = model
# ignore z axis if present
if swap_data.shape[1] == 3:
swap_data = swap_data[:, :2]
parsed = PointsModel.parse(swap_data, transformations=transformation)
sdata.points[selected.name] = parsed
if type(selected) == Shapes:
if len(selected.data) == 0:
raise ValueError("Cannot export a shapes element with no shapes")
polygons: list[Polygon] = [
Polygon(i) for i in _transform_coordinates(selected.data, f=lambda x: x[::-1])
]
gdf = GeoDataFrame({"geometry": polygons})
model = ShapesModel.parse(gdf, transformations=transformation)
sdata.shapes[selected.name] = model
force_2d(gdf)
parsed = ShapesModel.parse(gdf, transformations=transformation)
sdata.shapes[selected.name] = parsed
swap_data = None
if type(selected) == Image or type(selected) == Labels:
raise NotImplementedError

self.layer_names.add(selected.name)
self._layer_event_caches[selected.name] = []
self._update_metadata(selected, model, swap_data)
self._update_metadata(selected, parsed, swap_data)
selected.events.data.connect(self._update_cache_indices)
selected.events.name.connect(self._validate_name)
self.layer_saved.emit(coordinate_system)
Expand Down

0 comments on commit 2afcb32

Please sign in to comment.