opendvp.io.adata_to_voronoi

opendvp.io.adata_to_voronoi#

adata_to_voronoi(adata, x_y=('X_centroid', 'Y_centroid'), classify_by=None, color_dict=None, voronoi_area_quantile=0.98, merge_adjacent_shapes=False, save_as_detection=True)#

Generate a GeoDataFrame of Voronoi polygons from AnnData centroids.

This function computes Voronoi polygons from centroid coordinates in AnnData.obs Optionally annotates them with class labels and colors for QuPath, and returns a GeoDataFrame.

Return type:

GeoDataFrame | None

Parameters:#

adata: AnnData

AnnData object with cell metadata and centroid coordinates.

x_y: tuple, default (“X_centroid”, “Y_centroid”)

Tuple of column names in adata.obs for X and Y coordinates.

classify_by: str or None, optional

Column in adata.obs to use for classifying detections (e.g., cell type).

color_dict: dict or None, optional

Dictionary mapping class/category names to RGB color lists.

voronoi_area_quantile: float or None, default 0.98

Area quantile threshold for filtering large Voronoi polygons.

merge_adjacent_shapes: bool, default False

If True, merges adjacent polygons of the same class.

save_as_detection: bool, default True

If True, sets ‘objectType’ to ‘detection’ for QuPath.

Returns:#

GeoDataFrame:

GeoDataFrame of Voronoi polygons with optional class/color annotation.

Raises:#

ValueError:

If required columns are missing or input types are incorrect.

Examples:#

>>> import anndata as ad
>>> import pandas as pd
>>> import numpy as np
>>> from opendvp.io.adata_to_voronoi import adata_to_voronoi
>>> obs = pd.DataFrame(
...     {"X_centroid": np.random.rand(5), "Y_centroid": np.random.rand(5), "celltype": ["A", "B", "A", "B", "A"]}
... )
>>> adata = ad.AnnData(obs=obs)
>>> gdf = adata_to_voronoi(adata, classify_by="celltype")
>>> print(gdf.head())