Gate cells based on their X and Y coordinates. By default, this function launches an interactive scatter plot with image data overlaid. Colour, shape, size and alpha can be defined as constant values, or can be controlled by the values of a specified column.
If previously drawn gates are supplied to the programmatic_gates
argument, cells will be gated
programmatically. This feature allows the reproduction of previously drawn interactive gates.
Programmatic gating is based on the package gatepoints by Wajid Jawaid.
gate(
spe,
image_index = 1,
colour = NULL,
shape = NULL,
alpha = 1,
size = 2,
hide_points = FALSE,
programmatic_gates = NULL
)
A SpatialExperiment object.
The image to display if multiple are stored within the provided SpatialExperiment object.
A single colour string compatible with ggplot2. Or, a vector representing the point colour.
A single ggplot2 shape numeric ranging from 0 to 127. Or, a vector representing the point shape, coercible to a factor of 6 or less levels.
A single ggplot2 alpha numeric ranging from 0 to 1.
A single ggplot2 size numeric ranging from 0 to 20.
A logical. If TRUE, points are hidden during interactive gating. This can greatly improve performance with large SpatialExperiment objects.
A data.frame
of the gate brush data, as saved in
tidygate_env$gates
. The column x
records X coordinates, the column y
records Y coordinates
and the column .gate
records the gate number. When this argument is supplied, gates will be
drawn programmatically.
A vector of strings, of the gates each X and Y coordinate pair is within. If gates are
drawn interactively, they are temporarily saved to tidygate_env$gates
.
example(read10xVisium)
#>
#> rd10xV> dir <- system.file(
#> rd10xV+ file.path("extdata", "10xVisium"),
#> rd10xV+ package = "SpatialExperiment")
#>
#> rd10xV> sample_ids <- c("section1", "section2")
#>
#> rd10xV> samples <- file.path(dir, sample_ids, "outs")
#>
#> rd10xV> list.files(samples[1])
#> [1] "raw_feature_bc_matrix" "spatial"
#>
#> rd10xV> list.files(file.path(samples[1], "spatial"))
#> [1] "scalefactors_json.json" "tissue_lowres_image.png"
#> [3] "tissue_positions_list.csv"
#>
#> rd10xV> file.path(samples[1], "raw_feature_bc_matrix")
#> [1] "/__w/_temp/Library/SpatialExperiment/extdata/10xVisium/section1/outs/raw_feature_bc_matrix"
#>
#> rd10xV> (spe <- read10xVisium(samples, sample_ids,
#> rd10xV+ type = "sparse", data = "raw",
#> rd10xV+ images = "lowres", load = FALSE))
#> # A SpatialExperiment-tibble abstraction: 99 × 7
#> # Features = 50 | Cells = 99 | Assays = counts
#> .cell in_tissue array_row array_col sample_id pxl_col_in_fullres
#> <chr> <lgl> <int> <int> <chr> <int>
#> 1 AAACAACGAATAGTTC-1 FALSE 0 16 section1 2312
#> 2 AAACAAGTATCTCCCA-1 TRUE 50 102 section1 8230
#> 3 AAACAATCTACTAGCA-1 TRUE 3 43 section1 4170
#> 4 AAACACCAATAACTGC-1 TRUE 59 19 section1 2519
#> 5 AAACAGAGCGACTCCT-1 TRUE 14 94 section1 7679
#> 6 AAACAGCTTTCAGAAG-1 FALSE 43 9 section1 1831
#> 7 AAACAGGGTCTATATT-1 FALSE 47 13 section1 2106
#> 8 AAACAGTGTTCCTGGG-1 FALSE 73 43 section1 4170
#> 9 AAACATGGTGAGAGGA-1 FALSE 62 0 section1 1212
#> 10 AAACATTTCCCGGATT-1 FALSE 61 97 section1 7886
#> # ℹ 89 more rows
#> # ℹ 1 more variable: pxl_row_in_fullres <int>
#>
#> rd10xV> # base directory 'outs/' from Space Ranger can also be omitted
#> rd10xV> samples2 <- file.path(dir, sample_ids)
#>
#> rd10xV> (spe2 <- read10xVisium(samples2, sample_ids,
#> rd10xV+ type = "sparse", data = "raw",
#> rd10xV+ images = "lowres", load = FALSE))
#> # A SpatialExperiment-tibble abstraction: 99 × 7
#> # Features = 50 | Cells = 99 | Assays = counts
#> .cell in_tissue array_row array_col sample_id pxl_col_in_fullres
#> <chr> <lgl> <int> <int> <chr> <int>
#> 1 AAACAACGAATAGTTC-1 FALSE 0 16 section1 2312
#> 2 AAACAAGTATCTCCCA-1 TRUE 50 102 section1 8230
#> 3 AAACAATCTACTAGCA-1 TRUE 3 43 section1 4170
#> 4 AAACACCAATAACTGC-1 TRUE 59 19 section1 2519
#> 5 AAACAGAGCGACTCCT-1 TRUE 14 94 section1 7679
#> 6 AAACAGCTTTCAGAAG-1 FALSE 43 9 section1 1831
#> 7 AAACAGGGTCTATATT-1 FALSE 47 13 section1 2106
#> 8 AAACAGTGTTCCTGGG-1 FALSE 73 43 section1 4170
#> 9 AAACATGGTGAGAGGA-1 FALSE 62 0 section1 1212
#> 10 AAACATTTCCCGGATT-1 FALSE 61 97 section1 7886
#> # ℹ 89 more rows
#> # ℹ 1 more variable: pxl_row_in_fullres <int>
#>
#> rd10xV> # tabulate number of spots mapped to tissue
#> rd10xV> cd <- colData(spe)
#>
#> rd10xV> table(
#> rd10xV+ in_tissue = cd$in_tissue,
#> rd10xV+ sample_id = cd$sample_id)
#> sample_id
#> in_tissue section1 section2
#> FALSE 28 27
#> TRUE 22 22
#>
#> rd10xV> # view available images
#> rd10xV> imgData(spe)
#> DataFrame with 2 rows and 4 columns
#> sample_id image_id data scaleFactor
#> <character> <character> <list> <numeric>
#> 1 section1 lowres #### 0.0510334
#> 2 section2 lowres #### 0.0510334
data(demo_brush_data, package = "tidySpatialExperiment")
# Gate points interactively
if(interactive()) {
spe |>
gate(colour = "blue", shape = "in_tissue")
}
# Gate points programmatically
spe |>
gate(programmatic_gates = demo_brush_data)
#> # A SpatialExperiment-tibble abstraction: 99 × 8
#> # Features = 50 | Cells = 99 | Assays = counts
#> .cell in_tissue array_row array_col sample_id .gated pxl_col_in_fullres
#> <chr> <lgl> <int> <int> <chr> <chr> <int>
#> 1 AAACAACGAA… FALSE 0 16 section1 NA 2312
#> 2 AAACAAGTAT… TRUE 50 102 section1 NA 8230
#> 3 AAACAATCTA… TRUE 3 43 section1 NA 4170
#> 4 AAACACCAAT… TRUE 59 19 section1 NA 2519
#> 5 AAACAGAGCG… TRUE 14 94 section1 NA 7679
#> 6 AAACAGCTTT… FALSE 43 9 section1 NA 1831
#> 7 AAACAGGGTC… FALSE 47 13 section1 NA 2106
#> 8 AAACAGTGTT… FALSE 73 43 section1 NA 4170
#> 9 AAACATGGTG… FALSE 62 0 section1 NA 1212
#> 10 AAACATTTCC… FALSE 61 97 section1 NA 7886
#> # ℹ 89 more rows
#> # ℹ 1 more variable: pxl_row_in_fullres <int>