# scanpy.metrics.gearys_c¶

scanpy.metrics.gearys_c(adata, *, vals=None, use_graph=None, layer=None, obsm=None, obsp=None, use_raw=False)
scanpy.metrics.gearys_c(g, vals)

Calculate Geary’s C, as used by VISION.

Geary’s C is a measure of autocorrelation for some measure on a graph. This can be to whether measures are correlated between neighboring cells. Lower values indicate greater correlation.

$C = \frac{ (N - 1)\sum_{i,j} w_{i,j} (x_i - x_j)^2 }{ 2W \sum_i (x_i - \bar{x})^2 }$
Parameters
adata : AnnDataAnnData

vals : (default: None)

Values to calculate Geary’s C for. If this is two dimensional, should be of shape (n_features, n_cells). Otherwise should be of shape (n_cells,). This matrix can be selected from elements of the anndata object by using key word arguments: layer, obsm, obsp, or use_raw.

use_graph : (default: None)

Key to use for graph in anndata object. If not provided, default neighbors connectivities will be used instead.

layer : (default: None)

Key for adata.layers to choose vals.

obsm : (default: None)

Key for adata.obsm to choose vals.

obsp : (default: None)

Key for adata.obsp to choose vals.

use_raw : boolbool (default: False)

Whether to use adata.raw.X for vals.

This function can also be called on the graph and values directly. In this case the signature looks like:

Parameters
g

The graph

vals

The values

Return type
Returns

If vals is two dimensional, returns a 1 dimensional ndarray array. Returns a scalar if vals is 1d.

Examples

Calculate Gearys C for each components of a dimensionality reduction:

import scanpy as sc, numpy as np

pbmc = sc.datasets.pbmc68k_processed()
pc_c = sc.metrics.gearys_c(pbmc, obsm="X_pca")


It’s equivalent to call the function directly on the underlying arrays:

alt = sc.metrics.gearys_c(pbmc.obsp["connectivities"], pbmc.obsm["X_pca"].T)
np.testing.assert_array_equal(pc_c, alt)