opendvp.io.adata_to_qupath#
- adata_to_qupath(adata, geodataframe, adataobs_on='CellID', gdf_on='CellID', gdf_index=False, classify_by=None, color_dict=None, simplify_value=1.0, save_as_detection=True)#
Export a GeoDataFrame with QuPath-compatible annotations, using AnnData for classification and color mapping.
This function matches shapes in a GeoDataFrame to metadata in an AnnData object. Assigns class labels and colors for QuPath visualization, and optionally simplifies geometries.
- Parameters:
adata (anndata.AnnData) – AnnData object containing cell metadata (e.g., cell types, phenotypes).
geodataframe (geopandas.GeoDataFrame) – GeoDataFrame containing shapes (detections or annotations) to be exported.
adataobs_on (str, default "CellID") – Column in adata.obs to match with geodataframe.
gdf_on (str or None, default "CellID") – Column in geodataframe to match with adata.obs. If None and gdf_index is True, uses the index.
gdf_index (bool, default False) – If True, uses the geodataframe index for matching instead of a column.
classify_by (str or None, optional) – Column in adata.obs to use for classifying detections (e.g., cell type or phenotype).
color_dict (dict or None, optional) – Dictionary mapping class/category names to RGB color lists (e.g., {‘Tcell’: [255, 0, 0]}). If not provided, a default color cycle will be generated. Hexcodes colors are acceptable as well.
simplify_value (float, default 1.0) – Tolerance for geometry simplification. Set to None to disable simplification.
save_as_detection (bool, default True) – If True, sets ‘objectType’ to ‘detection’ for QuPath.
- Returns:
The resulting GeoDataFrame with QuPath-compatible columns.
- Return type:
- Raises:
ValueError – If input types are incorrect, required columns are missing, or no matches are found between adata and geodataframe.
Examples
>>> import anndata as ad >>> import geopandas as gpd >>> from opendvp.io.adata_to_qupath import adata_to_qupath >>> # Create example AnnData >>> import pandas as pd >>> obs = pd.DataFrame({"CellID": [1, 2, 3], "celltype": ["A", "B", "A"]}) >>> adata = ad.AnnData(obs=obs) >>> # Create example GeoDataFrame >>> from shapely.geometry import Point >>> gdf = gpd.GeoDataFrame({"CellID": [1, 2, 3]}, geometry=[Point(0, 0), Point(1, 1), Point(2, 2)]) >>> # Export with classification >>> result = adata_to_qupath( ... adata=adata, ... geodataframe=gdf, ... adataobs_on="CellID", ... gdf_on="CellID", ... classify_by="celltype", ... color_dict={"A": [255, 0, 0], "B": [0, 255, 0]}, ... simplify_value=0.5, ... save_as_detection=True, ... ) >>> print(result.head())