squidpy.gr.spatial_autocorr

squidpy.gr.spatial_autocorr(adata, connectivity_key='spatial_connectivities', genes=None, mode='moran', transformation=True, n_perms=None, two_tailed=False, corr_method='fdr_bh', attr='X', layer=None, seed=None, use_raw=False, copy=False, n_jobs=None, backend='loky', show_progress_bar=True, *, table_key=None)[source]

Calculate Global Autocorrelation Statistic (Moran’s I or Geary’s C).

See [Rey and Anselin, 2010] for reference.

Changed in version 1.8.2: The analytic (normality-assumption) variance for Geary’s C was corrected; previously the Moran’s I variance was reused for mode = 'geary'. As a result, 'var_norm' and 'pval_norm' for Geary’s C differ from earlier versions. Permutation-based p-values ('pval_sim', 'pval_z_sim') are unaffected. See #1183.

Parameters:
  • adata (AnnData | SpatialData) – Annotated data object.

  • table_key (str | None) – Key in spatialdata.SpatialData.tables where the table is stored. Required when adata is a spatialdata.SpatialData object and ignored otherwise.

  • connectivity_key (str) – Key in anndata.AnnData.obsp where spatial connectivities are stored. Default is: anndata.AnnData.obsp ['spatial_connectivities'].

  • genes (str | int | Sequence[str] | Sequence[int] | None) –

    Depending on the attr:

    • if attr = 'X', it corresponds to genes stored in anndata.AnnData.var_names. If None, it’s computed anndata.AnnData.var ['highly_variable'], if present. Otherwise, it’s computed for all genes.

    • if attr = 'obs', it corresponds to a list of columns in anndata.AnnData.obs. If None, use all numerical columns.

    • if attr = 'obsm', it corresponds to indices in anndata.AnnData.obsm ['{layer}']. If None, all indices are used.

  • mode (Union[SpatialAutocorr, Literal['moran', 'geary']]) –

    Mode of score calculation:

  • transformation (bool) – If True, weights in anndata.AnnData.obsp ['spatial_connectivities'] are row-normalized, advised for analytic p-value calculation.

  • n_perms (int | None) – Number of permutations for the permutation test. If None, only p-values under normality assumption are computed.

  • two_tailed (bool) – If True, p-values are two-tailed, otherwise they are one-tailed.

  • corr_method (str | None) – Correction method for multiple testing. See statsmodels.stats.multitest.multipletests() for valid options.

  • use_raw (bool) – Whether to access anndata.AnnData.raw. Only used when attr = 'X'.

  • layer (str | None) – Depending on attr: Layer in anndata.AnnData.layers to use. If None, use anndata.AnnData.X.

  • attr (Literal['obs', 'X', 'obsm']) – Which attribute of AnnData to access. See genes parameter for more information.

  • seed (int | None) – Random seed for reproducibility.

  • copy (bool) – If True, return the result, otherwise save it to the adata object.

  • n_jobs (int | None) – Number of parallel jobs to use. For backend="loky", the number of cores used by numba for each job spawned by the backend will be set to 1 in order to overcome the oversubscription issue in case you run numba in your function to parallelize. To set the absolute maximum number of threads in numba for your python program, set the environment variable: NUMBA_NUM_THREADS before running the program.

  • backend (str) – Parallelization backend to use. See joblib.Parallel for available options.

  • show_progress_bar (bool) – Whether to show the progress bar or not.

Return type:

DataFrame | None

Returns:

If copy = True, returns a pandas.DataFrame with the following keys:

  • ’I’ or ‘C’ - Moran’s I or Geary’s C statistic.

  • ’pval_norm’ - p-value under normality assumption.

  • ’var_norm’ - variance of ‘score’ under normality assumption.

  • ’{p_val}_{corr_method}’ - the corrected p-values if corr_method != None .

If n_perms != None, additionally returns the following columns:

  • ’pval_z_sim’ - p-value based on standard normal approximation from permutations.

  • ’pval_sim’ - p-value based on permutations.

  • ’var_sim’ - variance of ‘score’ from permutations.

Otherwise, modifies the adata with the following key: