countInteractions {imcRtools} | R Documentation

## Summarizes cell-cell interactions within grouping levels (e.g. images)

### Description

Function to calculate the average number of neighbors B that a cell of type A has using different approaches.

### Usage

    countInteractions(
      object,
      group_by,
      label,
      colPairName,
      method = c("classic", "histocat", "patch"),
      patch_size = NULL
    )

### Arguments

`object` | a `SingleCellExperiment` or `SpatialExperiment` object .
`group_by` | a single character indicating the `colData(object)` entry by which interactions are grouped. This is usually the image ID or patient ID.
`label` | single character specifying the `colData(object)` entry which stores the cell labels. These can be cell-types labels or other metadata.
`colPairName` | single character indicating the `colPair(object)` entry containing cell-cell interactions in form of an edge list.
`method` | which cell-cell interaction counting method to use (see details)
`patch_size` | if `method = "patch"`, a single numeric specifying the minimum number of neighbors of the same type to be considered a patch (see details)

### Value

a DataFrame containing one row per `group_by` entry and unique `label` entry combination (`from_label`, `to_label`). The `ct` entry stores the interaction count as described in the details. `NA` is returned if a certain label is not present in this grouping level.

### Counting and summarizing cell-cell interactions

In principle, the `countInteractions` function counts the number of edges (interactions) between each set of unique entries in `colData(object)[[label]]`. Simplified, it counts for each cell of type A the number of neighbors of type B. This count is averaged within each unique entry `colData(object)[[group_by]]` in three different ways:

1. `method = "classic"`: The count is divided by the total number of cells of type A. The final count can be interpreted as "How many neighbors of type B does a cell of type A have on average?"

2. `method = "histocat"`: The count is divided by the number of cells of type A that have at least one neighbor of type B. The final count can be interpreted as "How many many neighbors of type B has a cell of type A on average, given it has at least one neighbor of type B?"

3. `method = "patch"`: For each cell, the count is binarized to 0 (less than `patch_size` neighbors of type B) or 1 (more or equal to `patch_size` neighbors of type B). The binarized counts are averaged across all cells of type A. The final count can be interpreted as "What fraction of cells of type A have at least a given number of neighbors of type B?"

### Author(s)

Vito Zanotelli

Jana Fischer

adapted by Nils Eling (nils.eling@dqbm.uzh.ch)

### References

Schulz, D. et al., Simultaneous Multiplexed Imaging of mRNA and Proteins with Subcellular Resolution in Breast Cancer Tissue Samples by Mass Cytometry., Cell Systems 2018 6(1):25-36.e5

Shapiro, D. et al., histoCAT: analysis of cell phenotypes and interactions in multiplex image cytometry data, Nature Methods 2017 14, p. 873–876

### See Also

`testInteractions` for testing cell-cell interactions per grouping level.

### Examples

    library(cytomapper)
    data(pancreasSCE)

    pancreasSCE <- buildSpatialGraph(pancreasSCE, img_id = "ImageNb",
                                      type = "knn", k = 3)

    # Classic style calculation
    (out <- countInteractions(pancreasSCE,
                                    group_by = "ImageNb",
                                    label = "CellType",
                                    method = "classic",
                                    colPairName = "knn_interaction_graph"))

    # Histocat style calculation
    (out <- countInteractions(pancreasSCE,
                                    group_by = "ImageNb",
                                    label = "CellType",
                                    method = "histocat",
                                    colPairName = "knn_interaction_graph"))

    # Patch style calculation
    (out <- countInteractions(pancreasSCE,
                                    group_by = "ImageNb",
                                    label = "CellType",
                                    method = "patch",
                                    patch_size = 3,
                                    colPairName = "knn_interaction_graph"))

[Package imcRtools version 1.0.2 Index]