Skip to content

Commit 3907d68

Browse files
committed
add spatial key in obsm
1 parent f66f522 commit 3907d68

File tree

4 files changed

+15
-9
lines changed

4 files changed

+15
-9
lines changed

src/spatialdata_io/readers/mcmicro.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,14 @@ def mcmicro(
5656
raise ValueError("Dataset id is not consistent with sample name.")
5757

5858
images = {}
59-
images[dataset_id] = _get_images(
59+
images[f"{dataset_id}_image"] = _get_images(
6060
path,
6161
dataset_id,
6262
imread_kwargs,
6363
image_models_kwargs,
6464
)
6565
labels = {}
66-
labels[dataset_id] = _get_labels(
66+
labels[f"{dataset_id}_cells"] = _get_labels(
6767
path,
6868
dataset_id,
6969
"cell",
@@ -126,5 +126,8 @@ def _get_table(
126126
obsm={"spatial": table[coords].to_numpy()},
127127
dtype=np.float_,
128128
)
129+
adata.obs["region"] = f"{sample}_cells"
129130

130-
return TableModel.parse(adata, region=f"/labels/{sample}", instance_key=McmicroKeys.INSTANCE_KEY.value)
131+
return TableModel.parse(
132+
adata, region=f"{sample}_cells", region_key="region", instance_key=McmicroKeys.INSTANCE_KEY.value
133+
)

src/spatialdata_io/readers/steinbock.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ def steinbock(
6161
"They will be ignored."
6262
)
6363
for sample in samples:
64-
images[sample] = _get_images(
64+
images[f"{sample}_image"] = _get_images(
6565
path,
6666
sample,
6767
imread_kwargs,
6868
image_models_kwargs,
6969
)
70-
labels[sample] = _get_labels(
70+
labels[f"{sample}_labels"] = _get_labels(
7171
path,
7272
sample,
7373
labels_kind,
@@ -78,10 +78,11 @@ def steinbock(
7878
adata = ad.read(path / SteinbockKeys.CELLS_FILE)
7979
idx = adata.obs.index.str.split(" ").map(lambda x: int(x[1]))
8080
regions = adata.obs.image.str.replace(".tiff", "", regex=False)
81-
regions = regions.apply(lambda x: f"/labels/{x}")
81+
regions = regions.apply(lambda x: f"{x}_labels")
8282
adata.obs["cell_id"] = idx
8383
adata.obs["region"] = regions
84-
if len({f"/labels/{s}" for s in samples}.difference(set(regions.unique()))):
84+
adata.obsm["spatial"] = adata.obs[["centroid-0", "centroid-1"]].to_numpy()
85+
if len({f"{s}_labels" for s in samples}.difference(set(regions.unique()))):
8586
raise ValueError("Samples in table and images are inconsistent, please check.")
8687
table = TableModel.parse(adata, region=regions.unique().tolist(), region_key="region", instance_key="cell_id")
8788

@@ -95,7 +96,7 @@ def _get_images(
9596
image_models_kwargs: Mapping[str, Any] = MappingProxyType({}),
9697
) -> Union[SpatialImage, MultiscaleSpatialImage]:
9798
image = imread(path / SteinbockKeys.IMAGES_DIR / f"{sample}{SteinbockKeys.IMAGE_SUFFIX}", **imread_kwargs)
98-
return Image2DModel.parse(image, transformations={sample: Identity()}, **image_models_kwargs)
99+
return Image2DModel.parse(data=image, transformations={sample: Identity()}, **image_models_kwargs)
99100

100101

101102
def _get_labels(
@@ -106,4 +107,4 @@ def _get_labels(
106107
image_models_kwargs: Mapping[str, Any] = MappingProxyType({}),
107108
) -> Union[SpatialImage, MultiscaleSpatialImage]:
108109
image = imread(path / labels_kind / f"{sample}{SteinbockKeys.LABEL_SUFFIX}", **imread_kwargs).squeeze()
109-
return Labels2DModel.parse(image, transformations={sample: Identity()}, **image_models_kwargs)
110+
return Labels2DModel.parse(data=image, transformations={sample: Identity()}, **image_models_kwargs)

src/spatialdata_io/readers/visium.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ def visium(
9595

9696
adata.obs = pd.merge(adata.obs, coords, how="left", left_index=True, right_index=True)
9797
coords = adata.obs[[VisiumKeys.SPOTS_X, VisiumKeys.SPOTS_Y]].values
98+
adata.obsm["spatial"] = coords
9899
adata.obs.drop(columns=[VisiumKeys.SPOTS_X, VisiumKeys.SPOTS_Y], inplace=True)
99100
adata.obs["spot_id"] = np.arange(len(adata))
100101
adata.var_names_make_unique()

src/spatialdata_io/readers/xenium.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ def _get_tables_and_circles(
182182
metadata = pd.read_parquet(path / XeniumKeys.CELL_METADATA_FILE)
183183
np.testing.assert_array_equal(metadata.cell_id.astype(str).values, adata.obs_names.values)
184184
circ = metadata[[XeniumKeys.CELL_X, XeniumKeys.CELL_Y]].to_numpy()
185+
adata.obsm["spatial"] = circ
185186
metadata.drop([XeniumKeys.CELL_X, XeniumKeys.CELL_Y], axis=1, inplace=True)
186187
adata.obs = metadata
187188
adata.obs["region"] = specs["region"]

0 commit comments

Comments
 (0)