monkeybread.calc.cell_neighbors

monkeybread.calc.cell_neighbors(adata, groupby, group1, group2, basis='X_spatial', radius=None)

Calculate cell neighbors.

For each cell within a given group of cells, calculate all neighbors that are members of a second group of cells (e.g., for all T cells, calculate all neighbors that are B cells).

The output takes the form of a dictionary mapping from cells in group1 to cells in group2 that are neighbors. Note, if a cell is present in both group1 and group2, the mapping will be reflexive - the cell may both appear in the keys and the values.

Parameters:
  • adata (AnnData) – Annotated data matrix.

  • groupby (str) – A categorical column in adata.obs to classify groups.

  • group1 (Union[str, List[str]]) – Either one group or a list of groups from adata.obs[groupby].

  • group2 (Union[str, List[str]]) – Either one group or a list of groups from adata.obs[groupby].

  • basis (Optional[str] (default: 'X_spatial')) – Coordinates in adata.obsm[{basis}] to use. Defaults to spatial.

  • radius (Optional[float] (default: None)) – The radius in which cells are considered touching. If not provided, will be calculated using half of the average radius of group1 + half of the average radius of group2. This requires width and height columns to be present in adata.obs.

Return type:

Dict[str, Set[str]]

Returns:

: A mapping from cell ids in group1 to sets of cell ids in group2 that are its neighbors (i.e., within radius distance).