XString and a GRanges objectR/AllGenerics.R, R/Modstrings-separate.R
    separate.RdWith combineIntoModstrings and separate the construction and
deconstruction of ModString Objects from an interacive session avoiding
problematic encoding issues. In addition, modification information can be
transfered from/to tabular data with these functions.
combineIntoModstrings expects seqnames(gr) or names(gr)
to match the available names(x). Only information with strand
information * and + are used.
separate when used with a GRanges/GRangesList object
will return an object of the same type, but with modifications seperated. For
example an element with mod = "m1Am" will be returned as two elements
with mod = c("Am","m1A"). The reverse operation is available via
combineModifications().
removeIncompatibleModifications filters incompatible modification from
a GRanges or GRangesList. incompatibleModifications()
returns the logical vector used for this operation.
separate(x, nc.type = "short")
combineIntoModstrings(
  x,
  gr,
  with.qualities = FALSE,
  quality.type = "Phred",
  stop.on.error = TRUE,
  verbose = FALSE,
  ...
)
combineModifications(gr, ...)
incompatibleModifications(gr, x, ...)
removeIncompatibleModifications(gr, x, ...)
# S4 method for class 'ModString'
separate(x, nc.type = c("short", "nc"))
# S4 method for class 'ModStringSet'
separate(x, nc.type = c("short", "nc"))
# S4 method for class 'GRanges'
separate(x)
# S4 method for class 'GRangesList'
separate(x)
# S4 method for class 'XString,GRanges'
combineIntoModstrings(
  x,
  gr,
  with.qualities = FALSE,
  quality.type = "Phred",
  stop.on.error = TRUE,
  verbose = FALSE,
  ...
)
# S4 method for class 'XStringSet,GRangesList'
combineIntoModstrings(
  x,
  gr,
  with.qualities = FALSE,
  quality.type = "Phred",
  stop.on.error = TRUE,
  verbose = FALSE,
  ...
)
# S4 method for class 'XStringSet,GRanges'
combineIntoModstrings(
  x,
  gr,
  with.qualities = FALSE,
  quality.type = "Phred",
  stop.on.error = TRUE,
  verbose = FALSE,
  ...
)
# S4 method for class 'GRanges'
combineModifications(gr)
# S4 method for class 'GRangesList'
combineModifications(gr)
# S4 method for class 'GRanges,XString'
incompatibleModifications(gr, x)
# S4 method for class 'GRanges,XStringSet'
incompatibleModifications(gr, x)
# S4 method for class 'GRangesList,XStringSet'
incompatibleModifications(gr, x)
# S4 method for class 'GRanges,XString'
removeIncompatibleModifications(gr, x)
# S4 method for class 'GRanges,XStringSet'
removeIncompatibleModifications(gr, x)
# S4 method for class 'GRangesList,XStringSet'
removeIncompatibleModifications(gr, x)For separate: a ModString/ModStringSet or
GRanges/GRangesListobject
For combineIntoModstrings: a XString and a XStringSet
object.
the type of nomenclature to be used. Either "short" or "nc".
"Short" for m3C would be "m3C", "nc" for m3C would be "3C". (
default = "short")
a GRanges object
TRUE or FALSE (default): Should the
values from a score column of the GRanges object stored? If
set with.qualities = TRUE, combineIntoModstrings will try to
construct a QualityScaledModStringSet object.
the type of QualityXStringSet used, if
with.qualities = TRUE. Must be on of the following values:
"Phred","Solexa","Illumina".
For combineIntoModstrings: TRUE(default)
or FALSE: Should an error be raised upon encounter of incompatible
positions?
For combineIntoModstrings: TRUE or FALSE
(default): Should verbose information reported on the positions filled with
modifications? This settings is passed onto modifyNucleotides.
default.quality: for combineIntoModstrings: the
default.quality default value for non-modified positions. (default:
default.quality = 0L)
for separate a GRanges object and for
combineIntoModstrings a ModString* object or a
QualityScaledModStringSet, if with.qualities = TRUE.
library(GenomicRanges)
# ModDNAString
seq <- ModDNAString(paste(alphabet(ModDNAString()), collapse = ""))
seq
#> 55-letter ModDNAString object
#> seq: ACGTN-+.pδO]DJeg`bU∝πI763218∉⊆⊇Rαmh×f4νX'κo()ηa⇓⇑"√/≡ζ~
gr <- separate(seq)
gr
#> GRanges object with 47 ranges and 1 metadata column:
#>        seqnames    ranges strand |         mod
#>           <Rle> <IRanges>  <Rle> | <character>
#>    [1]        1         9      + |         5pT
#>    [2]        1        10      + |         3mT
#>    [3]        1        11      + |       O4meT
#>    [4]        1        12      + |         1mT
#>    [5]        1        13      + |         dhT
#>    ...      ...       ...    ... .         ...
#>   [43]        1        51      + |        6haA
#>   [44]        1        52      + |         2mA
#>   [45]        1        53      + |      2a6haA
#>   [46]        1        54      + |       6,6mA
#>   [47]        1        55      + |       6ncmA
#>   -------
#>   seqinfo: 1 sequence from an unspecified genome; no seqlengths
seq2 <- combineIntoModstrings(as(seq,"DNAString"),gr)
seq2
#> 55-letter ModDNAString object
#> seq: ACGTN-+.pδO]DJeg`bU∝πI763218∉⊆⊇Rαmh×f4νX'κo()ηa⇓⇑"√/≡ζ~
seq == seq2
#> [1] TRUE
# ModRNAString
seq <- ModRNAString(paste(alphabet(ModRNAString()), collapse = ""))
seq
#> 153-letter ModRNAString object
#> seq: ACGUN-+.œεξα"KO]±Γ}/£ÿ≠≈*∞[ω∏%2:B#≤Z...Ϩ≡Ϫ√ΘE=6¿(eDς9⊄«⊆I⊇8y∑WPQšÎ÷H<;ÜVυY€
gr <- separate(seq)
gr
#> GRanges object with 145 ranges and 1 metadata column:
#>         seqnames    ranges strand |         mod
#>            <Rle> <IRanges>  <Rle> | <character>
#>     [1]        1         9      + |        m1Am
#>     [2]        1        10      + |        m1Gm
#>     [3]        1        11      + |        m1Im
#>     [4]        1        12      + |     m1acp3Y
#>     [5]        1        13      + |         m1A
#>     ...      ...       ...    ... .         ...
#>   [141]        1       149      + |          xU
#>   [142]        1       150      + |       cmo5U
#>   [143]        1       151      + |      mcmo5U
#>   [144]        1       152      + |          yW
#>   [145]        1       153      + |         imG
#>   -------
#>   seqinfo: 1 sequence from an unspecified genome; no seqlengths
# Separating RNA modifications
gr <- gr[1]
separate(gr)
#> GRanges object with 2 ranges and 1 metadata column:
#>       seqnames    ranges strand |         mod
#>          <Rle> <IRanges>  <Rle> | <character>
#>   [1]        1         9      + |          Am
#>   [2]        1         9      + |         m1A
#>   -------
#>   seqinfo: 1 sequence from an unspecified genome; no seqlengths
# ... and combine them again (both operations work only on a subset of
# modifications)
combineModifications(separate(gr))
#> GRanges object with 1 range and 1 metadata column:
#>       seqnames    ranges strand |         mod
#>          <Rle> <IRanges>  <Rle> | <character>
#>   [1]        1         9      + |        m1Am
#>   -------
#>   seqinfo: 1 sequence from an unspecified genome; no seqlengths
# handling incompatible modifications
seq <- RNAString("AGCU")
gr <- GRanges(c("chr1:1:+","chr1:2:+"),mod="m1A")
incompatibleModifications(gr,seq)
#> [1] FALSE  TRUE
#
removeIncompatibleModifications(gr,seq)
#> GRanges object with 1 range and 1 metadata column:
#>       seqnames    ranges strand |         mod
#>          <Rle> <IRanges>  <Rle> | <character>
#>   [1]     chr1         1      + |         m1A
#>   -------
#>   seqinfo: 1 sequence from an unspecified genome; no seqlengths