Methods for spatial attributes
Source:R/SpatialExperiment-rotate-mirror.R
SpatialExperiment-rotate-mirror.RdThe 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
SpatialExperimentobject.- 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
rotateCoordsandrotateObjectmethods.- warn
Logical value indicating whether to print a warning about mismatches between coordinates and images, possible with the spatialCoords transformation methods
rotateCoordsandmirrorCoords.- axis
character string specifying whether to mirror horizontally (
"h") or vertically ("v"). Applicable formirrorCoordsandmirrorObjectmethods.- 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
spatialCoordsofx, potentially subsetted to samplesample_id(or without subsetting ifsample_idisNULL), by the specified number ofdegreesclockwise. Warn about mismatches with images ifwarn.mirrorCoords(x, sample_id, axis, warn):Reflect the
spatialCoordsofxacross either the horizontal or vertical axis, specified by supplying "h" or "v" to theaxisargument, respectively. Subsetxto 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
spatialCoordsandimgDataofx, potentially subsetted to samplesample_id(or without subsetting ifsample_idisNULL), by the specified number ofdegreesclockwise. Wrapper aroundrotateCoordsandrotateImg.mirrorObject(x, sample_id, image_id, axis):Reflect the
spatialCoordsandimgDataofxacross either the horizontal or vertical axis, specified by supplying "h" or "v" to theaxisargument, respectively. Subsetxto just the samplesample_id, if notNULL. Wrapper aroundmirrorCoordsandmirrorImg.
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")