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.

Parameters:
  • adata (anndata.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 of Voronoi polygons with optional class/color annotation.

Return type:

geopandas.GeoDataFrame

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())