R/average_counts.R
count_within_many.RdThis is a wrapper around count_within() which supports counting
multiple phenotype pairs and tissue categories within a single field.
For each given tissue category, pair of
'from' phenotype and 'to' phenotype, and radius, it counts the number of
'from' cells
having a 'to' cell within radius microns.
count_within_many(
csd,
pairs,
radius,
category = NA,
phenotype_rules = NULL,
verbose = TRUE
)A cell seg data table.
A list of pairs of phenotypes. Each entry is a two-element vector. The result will contain values for each pair.
The radius or radii to search within.
Optional tissue categories to restrict both from and
to phenotypes.
(Optional) A named list.
Item names are phenotype names and must match entries in pairs.
Item values are selectors for select_rows().
If TRUE, display progress.
A tibble containing these columns:
slide_idSlide ID from the data, if available.
sourceSource field name.
fieldName of the individual field, if available.
categoryTissue category, if provided as a parameter, or "all".
fromFrom phenotype.
toTo phenotype.
radius, from_count, to_count,
from_with, within_meanResults from count_within for this data file and tissue category.
The category parameter may be a single category or a list of categories.
See the tutorial
Selecting cells within a cell segmentation table
for more on
the use of pairs and phenotype_rules.
Other distance functions:
compute_all_nearest_distance(),
count_touching_cells(),
count_within_batch(),
count_within(),
distance_matrix(),
find_nearest_distance(),
spatial_distribution_report(),
subset_distance_matrix()
csd <- sample_cell_seg_data
# Count tumor cells near macrophages, and tumor cells near CD8 separately,
# in tumor and stroma tissue categories separately.
pairs <- list(c('CK+', 'CD68+'),
c('CK+', 'CD8+'))
radius <- c(10, 25)
category <- list('Tumor', 'Stroma')
count_within_many(csd, pairs, radius, category)
#> Processing Set4_1-6plex_[16142,55840].im3
#> # A tibble: 8 x 10
#> slide_id source category from to radius from_count to_count from_with
#> <chr> <chr> <chr> <chr> <chr> <dbl> <int> <int> <int>
#> 1 Set4_1-6plex Set4_1~ Tumor CK+ CD68+ 10 2192 101 79
#> 2 Set4_1-6plex Set4_1~ Tumor CK+ CD68+ 25 2192 101 397
#> 3 Set4_1-6plex Set4_1~ Tumor CK+ CD8+ 10 2192 51 63
#> 4 Set4_1-6plex Set4_1~ Tumor CK+ CD8+ 25 2192 51 320
#> 5 Set4_1-6plex Set4_1~ Stroma CK+ CD68+ 10 65 316 6
#> 6 Set4_1-6plex Set4_1~ Stroma CK+ CD68+ 25 65 316 34
#> 7 Set4_1-6plex Set4_1~ Stroma CK+ CD8+ 10 65 177 4
#> 8 Set4_1-6plex Set4_1~ Stroma CK+ CD8+ 25 65 177 22
#> # ... with 1 more variable: within_mean <dbl>
# Count tumor cells near any T cell in all tissue categories.
# Use `phenotype_rules` to define the T cell phenotype
pairs <- c('CK+', 'T cell')
rules <- list(
'T cell'=c('CD8+', 'FoxP3+'))
count_within_many(csd, pairs, radius, phenotype_rules=rules)
#> Processing Set4_1-6plex_[16142,55840].im3
#> # A tibble: 2 x 10
#> slide_id source category from to radius from_count to_count from_with
#> <chr> <chr> <chr> <chr> <chr> <dbl> <int> <int> <int>
#> 1 Set4_1-6plex Set4_1~ all CK+ T ce~ 10 2257 456 150
#> 2 Set4_1-6plex Set4_1~ all CK+ T ce~ 25 2257 456 824
#> # ... with 1 more variable: within_mean <dbl>