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 inspatialdata.SpatialData.tableswhere the table is stored. Required whenadatais aspatialdata.SpatialDataobject and ignored otherwise.connectivity_key (
str) – Key inanndata.AnnData.obspwhere 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 inanndata.AnnData.var_names. If None, it’s computedanndata.AnnData.var['highly_variable'], if present. Otherwise, it’s computed for all genes.if
attr = 'obs', it corresponds to a list of columns inanndata.AnnData.obs. If None, use all numerical columns.if
attr = 'obsm', it corresponds to indices inanndata.AnnData.obsm['{layer}']. If None, all indices are used.
mode (
Union[SpatialAutocorr,Literal['moran','geary']]) –Mode of score calculation:
’moran’ - Moran’s I autocorrelation.
’geary’ - Geary’s C autocorrelation.
transformation (
bool) – If True, weights inanndata.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. Seestatsmodels.stats.multitest.multipletests()for valid options.use_raw (
bool) – Whether to accessanndata.AnnData.raw. Only used whenattr = 'X'.layer (
str|None) – Depending onattr: Layer inanndata.AnnData.layersto use. If None, useanndata.AnnData.X.attr (
Literal['obs','X','obsm']) – Which attribute ofAnnDatato access. Seegenesparameter for more information.copy (
bool) – IfTrue, return the result, otherwise save it to theadataobject.n_jobs (
int|None) – Number of parallel jobs to use. Forbackend="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_THREADSbefore running the program.backend (
str) – Parallelization backend to use. Seejoblib.Parallelfor available options.show_progress_bar (
bool) – Whether to show the progress bar or not.
- Return type:
- Returns:
If
copy = True, returns apandas.DataFramewith 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
adatawith the following key:anndata.AnnData.uns['moranI']- the above mentioned dataframe, ifmode = 'moran'.anndata.AnnData.uns['gearyC']- the above mentioned dataframe, ifmode = 'geary'.