GenomicRanges (version 1.24.1)

strand-utils: Strand utilities

Description

A bunch of useful strand and invertStrand methods.

Usage

"strand"(x) "strand"(x) "strand"(x) "strand"(x) "strand"(x) "strand"(x) "strand"(x) "strand"(x) "strand"(x) <- value
"invertStrand"(x) "invertStrand"(x) "invertStrand"(x) "invertStrand"(x) "invertStrand"(x) "invertStrand"(x)

Arguments

x
The object from which to obtain a strand factor, strand factor Rle, or strand factor RleList object. Can be missing. See Details and Value sections below for more information.
value
Replacement value for the strand.

Value

All the strand and invertStrand methods documented here return an object that is parallel to input object x when x is a character, factor, integer, logical, Rle, or RleList object.For the strand methods:
  • If x is missing, returns an empty factor with the "standard strand levels" i.e. +, -, and *.
  • If x is a character vector or factor, it is coerced to a factor with the levels listed above. NA values in x are not accepted.
  • If x is an integer vector, it is coerced to a factor with the levels listed above. 1, -1, and NA values in x are mapped to the +, -, and * levels respectively.
  • If x is a logical vector, it is coerced to a factor with the levels listed above. FALSE, TRUE, and NA values in x are mapped to the +, -, and * levels respectively.
  • If x is a character-, factor-, integer-, or logical-Rle, it is transformed with runValue(x) <- strand(runValue(x)) and returned.
  • If x is an RleList object, each list element in x is transformed by calling strand() on it and the resulting RleList object is returned. More precisely the returned object is endoapply(x, strand). Note that in addition to being parallel to x, this object also has the same shape as x (i.e. its list elements have the same lengths as in x).
  • If x inherits from DataTable, the "strand" column is passed thru strand() and returned. If x has no "strand" column, this return value is populated with *s.
Each invertStrand method returns the same object as its corresponding strand method but with "+" and "-" switched.

Details

All the strand and invertStrand methods documented here return either a strand factor, strand factor Rle, or strand factor RleList object. These are factor, factor-Rle, or factor-RleList objects containing the "standard strand levels" (i.e. +, -, and *) and no NAs.

See Also

strand

Examples

Run this code
strand()

x1 <- c("-", "*", "*", "+", "-", "*")
x2 <- factor(c("-", "-", "+", "-"))
x3 <- c(-1L, NA, NA, 1L, -1L, NA)
x4 <- c(TRUE, NA, NA, FALSE, TRUE, NA)

strand(x1)
invertStrand(x1)
strand(x2)
invertStrand(x2)
strand(x3)
invertStrand(x3)
strand(x4)
invertStrand(x4)

strand(Rle(x1))
invertStrand(Rle(x1))
strand(Rle(x2))
invertStrand(Rle(x2))
strand(Rle(x3))
invertStrand(Rle(x3))
strand(Rle(x4))
invertStrand(Rle(x4))

x5 <- RleList(x1, character(0), as.character(x2))
strand(x5)
invertStrand(x5)

strand(DataFrame(score=2:-3))
strand(DataFrame(score=2:-3, strand=x3))
strand(DataFrame(score=2:-3, strand=Rle(x3)))

## Sanity checks:
target <- strand(x1)
stopifnot(identical(target, strand(x3)))
stopifnot(identical(target, strand(x4)))

stopifnot(identical(Rle(strand(x1)), strand(Rle(x1))))
stopifnot(identical(Rle(strand(x2)), strand(Rle(x2))))
stopifnot(identical(Rle(strand(x3)), strand(Rle(x3))))
stopifnot(identical(Rle(strand(x4)), strand(Rle(x4))))

Run the code above in your browser using DataLab