Launch binder

Crop images with ImageContainer

This example shows how crop images from squidpy.im.ImageContainer.

Specifically, it shows how to use:

See also

See ImageContainer object for general usage of squidpy.im.ImageContainer.

import squidpy as sq

import matplotlib.pyplot as plt

Let’s load the fluorescence Visium image.

img = sq.datasets.visium_fluo_image_crop()

Extracting single crops: Crops need to be sized and located. We distinguish crops located based on a corner coordinate of the crop and crops located based on the center coordinate of the crop. You can specify the crop coordinates in pixels (as int) or in percentage of total image size (as float). In addition, you can specify a scaling factor for the crop.

crop_corner = img.crop_corner(1000, 1000, size=800)

crop_center = img.crop_center(1400, 1400, radius=400)

fig, axes = plt.subplots(1, 2)
crop_corner.show(ax=axes[0])
crop_center.show(ax=axes[1])
image, image

The result of the cropping functions is another ImageContainer.

crop_corner
ImageContainer object with 1 layer:

image: y (800), x (800), z (1), channels (3)



You can subset the associated adata to the cropped image using squidpy.im.ImageContainer.subset():

adata = sq.datasets.visium_fluo_adata_crop()
adata

Out:

AnnData object with n_obs × n_vars = 704 × 16562
    obs: 'in_tissue', 'array_row', 'array_col', 'n_genes_by_counts', 'log1p_n_genes_by_counts', 'total_counts', 'log1p_total_counts', 'pct_counts_in_top_50_genes', 'pct_counts_in_top_100_genes', 'pct_counts_in_top_200_genes', 'pct_counts_in_top_500_genes', 'total_counts_MT', 'log1p_total_counts_MT', 'pct_counts_MT', 'n_counts', 'leiden', 'cluster'
    var: 'gene_ids', 'feature_types', 'genome', 'MT', 'n_cells_by_counts', 'mean_counts', 'log1p_mean_counts', 'pct_dropout_by_counts', 'total_counts', 'log1p_total_counts', 'n_cells', 'highly_variable', 'highly_variable_rank', 'means', 'variances', 'variances_norm'
    uns: 'cluster_colors', 'hvg', 'leiden', 'leiden_colors', 'neighbors', 'pca', 'spatial', 'umap'
    obsm: 'X_pca', 'X_umap', 'spatial'
    varm: 'PCs'
    obsp: 'connectivities', 'distances'

Note the number of observations in adata before and after subsetting.

adata_crop = crop_corner.subset(adata)
adata_crop

Out:

AnnData object with n_obs × n_vars = 7 × 16562
    obs: 'in_tissue', 'array_row', 'array_col', 'n_genes_by_counts', 'log1p_n_genes_by_counts', 'total_counts', 'log1p_total_counts', 'pct_counts_in_top_50_genes', 'pct_counts_in_top_100_genes', 'pct_counts_in_top_200_genes', 'pct_counts_in_top_500_genes', 'total_counts_MT', 'log1p_total_counts_MT', 'pct_counts_MT', 'n_counts', 'leiden', 'cluster'
    var: 'gene_ids', 'feature_types', 'genome', 'MT', 'n_cells_by_counts', 'mean_counts', 'log1p_mean_counts', 'pct_dropout_by_counts', 'total_counts', 'log1p_total_counts', 'n_cells', 'highly_variable', 'highly_variable_rank', 'means', 'variances', 'variances_norm'
    uns: 'cluster_colors', 'hvg', 'leiden', 'leiden_colors', 'neighbors', 'pca', 'spatial', 'umap'
    obsm: 'X_pca', 'X_umap', 'spatial'
    varm: 'PCs'
    obsp: 'connectivities', 'distances'

Visualize the result in Napari:

crop_corner.interactive(adata_crop)

Total running time of the script: ( 0 minutes 15.381 seconds)

Estimated memory usage: 200 MB