Source code for stlearn.adds.add_image

from typing import Optional, Union
from anndata import AnnData
from matplotlib import pyplot as plt
from pathlib import Path
import os
from PIL import Image

Image.MAX_IMAGE_PIXELS = None


[docs]def image( adata: AnnData, imgpath: Union[Path, str], library_id: str, quality: str = "hires", scale: float = 1.0, visium: bool = False, spot_diameter_fullres: float = 50, copy: bool = False, ) -> Optional[AnnData]: """\ Adding image data to the Anndata object Parameters ---------- adata Annotated data matrix. imgpath Image path. library_id Identifier for the visium library. Can be modified when concatenating multiple adata objects. scale Set scale factor. quality Set quality that convert to stlearn to use. Store in anndata.obs['imagecol' & 'imagerow']. visium Is this anndata read from Visium platform or not. copy Return a copy instead of writing to adata. Returns ------- Depending on `copy`, returns or updates `adata` with the following fields. **tissue_img** : `adata.uns` field Array format of image, saving by Pillow package. """ if imgpath is not None and os.path.isfile(imgpath): try: img = plt.imread(imgpath, 0) if visium: adata.uns["spatial"][library_id]["images"][quality] = img else: adata.uns["spatial"] = {} adata.uns["spatial"][library_id] = {} adata.uns["spatial"][library_id]["images"] = {} adata.uns["spatial"][library_id]["images"][quality] = img adata.uns["spatial"][library_id]["use_quality"] = quality adata.uns["spatial"][library_id]["scalefactors"] = {} adata.uns["spatial"][library_id]["scalefactors"][ "tissue_" + quality + "_scalef" ] = scale adata.uns["spatial"][library_id]["scalefactors"][ "spot_diameter_fullres" ] = spot_diameter_fullres adata.obsm["spatial"] = adata.obs[["imagecol", "imagerow"]].values adata.obs[["imagecol", "imagerow"]] = adata.obsm["spatial"] * scale print("Added tissue image to the object!") return adata if copy else None except: raise ValueError( f"""\ {imgpath!r} does not end on a valid extension. """ ) else: raise ValueError( f"""\ {imgpath!r} does not end on a valid extension. """ ) return adata if copy else None