Skip to content

Commit

Permalink
Implement get_transform_from_* methods
Browse files Browse the repository at this point in the history
  • Loading branch information
jp-dark committed Oct 22, 2024
1 parent 4e6bd02 commit 6b4a527
Showing 1 changed file with 35 additions and 3 deletions.
38 changes: 35 additions & 3 deletions apis/python/src/tiledbsoma/_scene.py
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,10 @@ def get_transform_from_geometry_dataframe(
Lifecycle: experimental
"""
raise NotImplementedError()
transform = self.get_transform_to_geometry_dataframe(
key, subcollection=subcollection
)
return transform.inverse_transform()

def get_transform_from_multiscale_image(
self,
Expand All @@ -556,7 +559,33 @@ def get_transform_from_multiscale_image(
Lifecycle: experimental
"""
raise NotImplementedError()
if level is None:
transform = self.get_transform_to_multiscale_image(
key, subcollection=subcollection
)
return transform.inverse_transform()
coll = self._open_subcollection(subcollection)
try:
transform_json = coll.metadata[f"soma_scene_registry_{key}"]
except KeyError:
raise KeyError(
f"No coordinate space registry for '{key}' in collection "
f"'{subcollection}'"
)
base_transform = transform_from_json(transform_json)
try:
image: MultiscaleImage = coll[key] # type: ignore[assignment]
except KeyError as ke:
raise KeyError(
f"No MultiscaleImage named '{key}' in '{subcollection}'."
) from ke
if not isinstance(image, MultiscaleImage):
raise TypeError(
f"Item at '{key}' in '{subcollection}' has an unexpected type "
f"{type(image)!r}."
)
level_transform = image.get_transform_from_level(level)
return base_transform.inverse_transform() @ level_transform

def get_transform_from_point_cloud_dataframe(
self, key: str, *, subcollection: str = "obsl"
Expand All @@ -574,7 +603,10 @@ def get_transform_from_point_cloud_dataframe(
Lifecycle: experimental
"""
raise NotImplementedError()
transform = self.get_transform_to_point_cloud_dataframe(
key, subcollection=subcollection
)
return transform.inverse_transform()

def get_transform_to_geometry_dataframe(
self, key: str, *, subcollection: Union[str, Sequence[str]] = "obsl"
Expand Down

0 comments on commit 6b4a527

Please sign in to comment.