Methods for spatial attributes
Source:R/SpatialExperiment-rotate-mirror.R
SpatialExperiment-rotate-mirror.Rd
The SpatialExperiment
class provides methods to rotate and
mirror SpatialExperiment
objects and their
spatialCoords
.
Usage
# S4 method for class 'SpatialExperiment'
rotateCoords(x, sample_id = NULL, degrees = 90, warn = TRUE)
# S4 method for class 'SpatialExperiment'
mirrorCoords(x, sample_id = NULL, axis = c("h", "v"), warn = TRUE)
# S4 method for class 'SpatialExperiment'
rotateObject(x, sample_id = NULL, image_id = NULL, degrees = 90)
# S4 method for class 'SpatialExperiment'
mirrorObject(x, sample_id = NULL, image_id = NULL, axis = c("h", "v"))
Arguments
- x
A
SpatialExperiment
object.- sample_id
Logical value or character vector specifying sample identifier(s) for
scaleFactors
. Default =TRUE
(all samples).- degrees
single numeric in +/-[0,90,...,360] specifying how many degrees to rotate. A negative/positive value corresponds to counter-/clockwise rotation. Applicable for
rotateCoords
androtateObject
methods.- warn
Logical value indicating whether to print a warning about mismatches between coordinates and images, possible with the spatialCoords transformation methods
rotateCoords
andmirrorCoords
.- axis
character string specifying whether to mirror horizontally (
"h"
) or vertically ("v"
). Applicable formirrorCoords
andmirrorObject
methods.- image_id
Logical value or character vector specifying image identifier(s) for
scaleFactors
. Default =TRUE
(all images).
spatialCoords transformation methods
rotateCoords(x, sample_id, degrees, warn)
:Apply a rotation to the
spatialCoords
ofx
, potentially subsetted to samplesample_id
(or without subsetting ifsample_id
isNULL
), by the specified number ofdegrees
clockwise. Warn about mismatches with images ifwarn
.mirrorCoords(x, sample_id, axis, warn)
:Reflect the
spatialCoords
ofx
across either the horizontal or vertical axis, specified by supplying "h" or "v" to theaxis
argument, respectively. Subsetx
to just the samplesample_id
, if notNULL
. Warn about mismatches with images ifwarn
.
SpatialExperiment transformation wrapper methods
rotateObject(x, sample_id, image_id, degrees)
:Apply a rotation to the
spatialCoords
andimgData
ofx
, potentially subsetted to samplesample_id
(or without subsetting ifsample_id
isNULL
), by the specified number ofdegrees
clockwise. Wrapper aroundrotateCoords
androtateImg
.mirrorObject(x, sample_id, image_id, axis)
:Reflect the
spatialCoords
andimgData
ofx
across either the horizontal or vertical axis, specified by supplying "h" or "v" to theaxis
argument, respectively. Subsetx
to just the samplesample_id
, if notNULL
. Wrapper aroundmirrorCoords
andmirrorImg
.
Examples
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] "/tmp/RtmppdZi9A/temp_libpathcf263c794d1/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))
#> class: SpatialExperiment
#> dim: 50 99
#> metadata(0):
#> assays(1): counts
#> rownames(50): ENSMUSG00000051951 ENSMUSG00000089699 ...
#> ENSMUSG00000005886 ENSMUSG00000101476
#> rowData names(1): symbol
#> colnames(99): AAACAACGAATAGTTC-1 AAACAAGTATCTCCCA-1 ...
#> AAAGTCGACCCTCAGT-1 AAAGTGCCATCAATTA-1
#> colData names(4): in_tissue array_row array_col sample_id
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
#> spatialCoords names(2) : pxl_col_in_fullres pxl_row_in_fullres
#> imgData names(4): sample_id image_id data scaleFactor
#>
#> 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))
#> class: SpatialExperiment
#> dim: 50 99
#> metadata(0):
#> assays(1): counts
#> rownames(50): ENSMUSG00000051951 ENSMUSG00000089699 ...
#> ENSMUSG00000005886 ENSMUSG00000101476
#> rowData names(1): symbol
#> colnames(99): AAACAACGAATAGTTC-1 AAACAAGTATCTCCCA-1 ...
#> AAAGTCGACCCTCAGT-1 AAAGTGCCATCAATTA-1
#> colData names(4): in_tissue array_row array_col sample_id
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
#> spatialCoords names(2) : pxl_col_in_fullres pxl_row_in_fullres
#> imgData names(4): sample_id image_id data scaleFactor
#>
#> 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
# rotateCoords(), mirrorCoords(), rotateObject(), and mirrorObject() return a
# SpatialExperiment, potentially subsetted by sample.
# Subset to just "section1"; rotate coordinates 90 degrees clockwise followed
# by a reflection across the vertical axis
spe_coords <- rotateCoords(spe, sample_id = "section1", degrees = 90)
#> Warning: Invoking 'rotateCoords' or 'rotateImg' independently may result in mismatches between coordinates and images. Please use 'rotateObject' to ensure consistency.
spe_coords <- mirrorCoords(spe_coords, axis = "v")
#> Warning: Invoking 'mirrorCoords' or 'mirrorImg' independently may result in mismatches between coordinates and images. Please use 'mirrorObject' to ensure consistency.
# Subset to just "section2"; transform both the imgData() and spatialCoords()
# by a 180-degree rotation then reflection across the vertical axis
spe_wrapper <- rotateObject(spe, sample_id = "section2", degrees = 180)
spe_wrapper <- mirrorObject(spe_wrapper, axis = "v")