Source code for goatpy.he_image

import warnings
import sopa
import pandas as pd
import numpy as np
import scanpy as sc
import geopandas as gpd

from anndata import AnnData
from spatialdata import SpatialData
from spatialdata.models import Image2DModel, ShapesModel
from spatialdata.transformations import Identity
from shapely.affinity import scale as shapely_scale

from PIL import Image
from PIL.ExifTags import TAGS


[docs] def he_spatialdata(he_image_path, backend = 'openslide'): try: sdata = sopa.io.wsi(he_image_path, backend=backend) # Rename the image key to 'he_image' old_key = list(sdata.images.keys())[0] sdata["he_image"] = sdata.images[old_key] del sdata[old_key] print("Successfully loaded with sopa.io.wsi") return sdata except Exception as e: warnings.warn(f"sopa.io.wsi failed! Try running `pip install {backend}`. Falling back to PIL method. ") # Fallback method he_img = Image.open(he_image_path) img = np.array(he_img) image_cyx = np.transpose(img, (2, 0, 1)) img_model = Image2DModel.parse( image_cyx, dims=("c", "y", "x"), transformations={"global": Identity()}, ) sdata = SpatialData( images={"he_image": img_model}, ) return sdata
[docs] def add_annotations(sdata, geojson_path, name = "Annotations"): gdf = gpd.read_file(geojson_path) gdf["colour"] = gdf["classification"].apply(lambda x: x["color"]) gdf["classification"] = pd.Categorical(gdf["classification"].apply(lambda x: x["name"])) shapes = ShapesModel.parse(gdf) sdata.shapes[name] = shapes return(sdata)