trimLRPatterns          package:Biostrings          R Documentation

Trim Flanking Patterns from Sequences

Description:

     The 'trimLRPatterns' function trims left and/or right flanking
     patterns from sequences.

Usage:

       trimLRPatterns(Lpattern = "", Rpattern = "", subject,
                      max.Lmismatch = 0, max.Rmismatch = 0,
                      with.Lindels = FALSE, with.Rindels = FALSE,
                      Lfixed = TRUE, Rfixed = TRUE, ranges = FALSE)

Arguments:

Lpattern: The left pattern. 

Rpattern: The right pattern. 

 subject: An XString object, XStringSet object, or character vector
          containing the target sequence(s). 

max.Lmismatch: Either an integer vector of length 'nLp =
          nchar(Lpattern)' representing an absolute number of
          mismatches (or edit distance if 'with.Lindels' is 'TRUE') or
          a single numeric value in the interval '[0, 1)' representing
          a mismatch rate when aligning terminal substrings (suffixes)
          of 'Lpattern' with the beginning (prefix) of 'subject'
          following the conventions set by  'neditStartingAt',
          'isMatchingStartingAt', etc.

          When 'max.Lmismatch' is '0L' or a numeric value in the
          interval '[0, 1)', it is taken as a "rate" and is converted
          to 'as.integer(1:nLp * max.Lmismatch)', analogous to agrep
          (which, however, employs 'ceiling').

          Otherwise, 'max.Lmismatch' is treated as an integer vector
          where negative numbers are used to prevent trimming at the
          'i'-th location. When an input integer vector is shorter than
          'nLp', it is augmented with enough '-1's at the beginning to
          bring its length up to 'nLp'. Elements of 'max.Lmismatch'
          beyond the first 'nLp' are ignored.

          Once the integer vector is constructed using the rules given
          above, when 'with.Lindels' is 'FALSE', 'max.Lmismatch[i]' is
          the number of acceptable mismatches (errors) between the
          suffix 'substring(Lpattern, nLp - i + 1, nLp)' of 'Lpattern'
          and the first 'i' letters of 'subject'. When 'with.Lindels'
          is 'TRUE', 'max.Lmismatch[i]' represents the allowed "edit
          distance" between that suffix of 'Lpattern' and 'subject',
          starting at position '1' of 'subject' (as in 'matchPattern'
          and 'isMatchingStartingAt').

          For a given element 's' of the 'subject', the initial segment
          (prefix) 'substring(s, 1, j)' of 's' is trimmed if 'j' is the
          largest 'i' for which there is an acceptable match, if any. 

max.Rmismatch: Same as 'max.Lmismatch' but with 'Rpattern', along with
          'with.Rindels' (below), and its initial segments (prefixes)
          'substring(Rpattern, 1, i)'.

          For a given element 's' of the subject, with 'nS = nchar(s)',
          the terminal segment (suffix) 'substring(s, nS - j + 1, nS)'
          of 's' is trimmed if 'j' is the largest 'i' for which there
          is an acceptable match, if any. 

with.Lindels: If 'TRUE', indels are allowed in the alignments of the
          suffixes of 'Lpattern' with the subject, at its beginning.
          See the 'with.indels' arguments of the 'matchPattern' and
          'neditStartingAt' functions for detailed information. 

with.Rindels: Same as 'with.Lindels' but for alignments of the prefixes
          of 'Rpattern' with the subject, at its end. See the
          'with.indels' arguments of the 'matchPattern' and
          'neditEndingAt' functions for detailed information. 

Lfixed, Rfixed: Whether IUPAC extended letters in the left or right
          pattern should be interpreted as ambiguities (see
          '?`lowlevel-matching`' for the details). 

  ranges: If 'TRUE', then return the ranges to use to trim 'subject'.
          If 'FALSE', then returned the trimmed 'subject'. 

Value:

     A new XString object, XStringSet object, or character vector with
     the "longest" flanking matches removed, as described above.

Author(s):

     P. Aboyoun and H. Jaffee

See Also:

     'matchPattern', 'matchLRPatterns', lowlevel-matching,
     XString-class, XStringSet-class

Examples:

       Lpattern <- "TTCTGCTTG"
       Rpattern <- "GATCGGAAG"
       subject <- DNAString("TTCTGCTTGACGTGATCGGA")
       subjectSet <- DNAStringSet(c("TGCTTGACGGCAGATCGG", "TTCTGCTTGGATCGGAAG"))

       ## Only allow for perfect matches on the flanks
       trimLRPatterns(Lpattern = Lpattern, subject = subject)
       trimLRPatterns(Rpattern = Rpattern, subject = subject)
       trimLRPatterns(Lpattern = Lpattern, Rpattern = Rpattern, subject = subjectSet)

       ## Allow for perfect matches on the flanking overlaps
       trimLRPatterns(Lpattern = Lpattern, Rpattern = Rpattern, subject = subjectSet,
                      max.Lmismatch = 0, max.Rmismatch = 0)

       ## Allow for mismatches on the flanks
       trimLRPatterns(Lpattern = Lpattern, Rpattern = Rpattern, subject = subject,
                      max.Lmismatch = 0.2, max.Rmismatch = 0.2)
       maxMismatches <- as.integer(0.2 * 1:9)
       maxMismatches
       trimLRPatterns(Lpattern = Lpattern, Rpattern = Rpattern, subject = subjectSet,
                      max.Lmismatch = maxMismatches, max.Rmismatch = maxMismatches)

       ## Produce ranges that can be an input into other functions
       trimLRPatterns(Lpattern = Lpattern, Rpattern = Rpattern, subject = subjectSet,
                      max.Lmismatch = 0, max.Rmismatch = 0, ranges = TRUE)
       trimLRPatterns(Lpattern = Lpattern, Rpattern = Rpattern, subject = subject,
                      max.Lmismatch = 0.2, max.Rmismatch = 0.2, ranges = TRUE)

