Skip to content

Commit 582f163

Browse files
committed
refactor(centroids): drop redundant str() cast, dedup obsm-vs-points test assertion
- _resolve_annotating_table returns annotators[0] directly (get_element_annotators already yields set[str]; the str() wrap was noise). - extract _assert_obsm_matches_points test helper to remove two near-identical written-obsm vs element-Points comparison blocks.
1 parent efbb469 commit 582f163

2 files changed

Lines changed: 12 additions & 11 deletions

File tree

src/spatialdata/_core/centroids.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ def _resolve_annotating_table(sdata: SpatialData, element_name: str, table_name:
243243
f"Element {element_name!r} is annotated by multiple tables ({', '.join(annotators)}); "
244244
f"pass `table_name=` to choose one."
245245
)
246-
return str(annotators[0])
246+
return annotators[0]
247247

248248

249249
def _write_centroids_into_table(

tests/core/test_centroids.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,15 @@
1616
RNG = default_rng(42)
1717

1818

19+
def _assert_obsm_matches_points(table: AnnData, pts: pd.DataFrame) -> None:
20+
# written obsm["spatial"] must match the element-level Points centroids on shared (non-background) ids.
21+
inst = table.obs["instance_id"].to_numpy()
22+
written = pd.DataFrame(table.obsm["spatial"], index=inst, columns=["x", "y"])
23+
common = pts.index.intersection(written.index[inst != 0])
24+
assert len(common) > 0
25+
assert np.allclose(written.loc[common].to_numpy(), pts.loc[common][["x", "y"]].to_numpy())
26+
27+
1928
def _get_affine() -> Affine:
2029
theta: float = math.pi / 18
2130
k = 10.0
@@ -228,10 +237,7 @@ def test_get_centroids_sdata_persist_into_table(full_sdata):
228237

229238
# coordinates must match the element-level Points (global transform is the identity here)
230239
pts = get_centroids(full_sdata["labels2d"], coordinate_system="global").compute()
231-
written = pd.DataFrame(table.obsm["spatial"], index=inst, columns=["x", "y"])
232-
common = pts.index.intersection(written.index[inst != 0])
233-
assert len(common) > 0
234-
assert np.allclose(written.loc[common].to_numpy(), pts.loc[common][["x", "y"]].to_numpy())
240+
_assert_obsm_matches_points(table, pts)
235241

236242
# area must equal the pixel counts of the corresponding labels
237243
ids, counts = np.unique(np.asarray(full_sdata["labels2d"].data), return_counts=True)
@@ -247,13 +253,8 @@ def test_get_centroids_sdata_persist_fastpath_matches_transform(full_sdata):
247253
set_transformation(full_sdata["labels2d"], affine, "aligned")
248254
get_centroids(full_sdata, "labels2d", coordinate_system="aligned", persist_as="adata")
249255

250-
table = full_sdata["table"]
251-
inst = table.obs["instance_id"].to_numpy()
252-
written = pd.DataFrame(table.obsm["spatial"], index=inst, columns=["x", "y"])
253256
pts = get_centroids(full_sdata["labels2d"], coordinate_system="aligned").compute()
254-
common = pts.index.intersection(written.index[inst != 0])
255-
assert len(common) > 0
256-
assert np.allclose(written.loc[common].to_numpy(), pts.loc[common][["x", "y"]].to_numpy())
257+
_assert_obsm_matches_points(full_sdata["table"], pts)
257258

258259

259260
def test_get_centroids_sdata_persist_intrinsic_matches_identity(full_sdata):

0 commit comments

Comments
 (0)