Biostrings (version 2.34.1)

findPalindromes: Searching a sequence for palindromes or complemented palindromes

Description

The findPalindromes and findComplementedPalindromes functions can be used to find palindromic or complemented palindromic regions in a sequence.

palindromeArmLength, palindromeLeftArm, palindromeRightArm, complementedPalindromeArmLength, complementedPalindromeLeftArm and complementedPalindromeRightArm are utility functions for operating on palindromic or complemented palindromic sequences.

Usage

findPalindromes(subject, min.armlength=4, max.looplength=1, min.looplength=0, max.mismatch=0) palindromeArmLength(x, max.mismatch=0, ...) palindromeLeftArm(x, max.mismatch=0, ...) palindromeRightArm(x, max.mismatch=0, ...)
findComplementedPalindromes(subject, min.armlength=4, max.looplength=1, min.looplength=0, max.mismatch=0) complementedPalindromeArmLength(x, max.mismatch=0, ...) complementedPalindromeLeftArm(x, max.mismatch=0, ...) complementedPalindromeRightArm(x, max.mismatch=0, ...)

Arguments

subject
An XString object containing the subject string, or an XStringViews object.
min.armlength
An integer giving the minimum length of the arms of the palindromes (or complemented palindromes) to search for.
max.looplength
An integer giving the maximum length of "the loop" (i.e the sequence separating the 2 arms) of the palindromes (or complemented palindromes) to search for. Note that by default (max.looplength=1), findPalindromes will search for strict palindromes (or complemented palindromes) only.
min.looplength
An integer giving the minimum length of "the loop" of the palindromes (or complemented palindromes) to search for.
max.mismatch
The maximum number of mismatching letters allowed between the 2 arms of the palindromes (or complemented palindromes) to search for.
x
An XString object containing a 2-arm palindrome or complemented palindrome, or an XStringViews object containing a set of 2-arm palindromes or complemented palindromes.
...
Additional arguments to be passed to or from methods.

Value

findPalindromes and findComplementedPalindromes return an XStringViews object containing all palindromes (or complemented palindromes) found in subject (one view per palindromic substring found).palindromeArmLength and complementedPalindromeArmLength return the arm length (integer) of the 2-arm palindrome (or complemented palindrome) x. It will raise an error if x has no arms. Note that any sequence could be considered a 2-arm palindrome if we were OK with arms of length 0 but we are not: x must have arms of length greater or equal to 1 in order to be considered a 2-arm palindrome. The same apply to 2-arm complemented palindromes. When applied to an XStringViews object x, palindromeArmLength and complementedPalindromeArmLength behave in a vectorized fashion by returning an integer vector of the same length as x.palindromeLeftArm and complementedPalindromeLeftArm return an object of the same class as the original object x and containing the left arm of x.palindromeRightArm does the same as palindromeLeftArm but on the right arm of x.Like palindromeArmLength, both palindromeLeftArm and palindromeRightArm will raise an error if x has no arms. Also, when applied to an XStringViews object x, both behave in a vectorized fashion by returning an XStringViews object of the same length as x.

Details

The findPalindromes function finds palindromic substrings in a subject string. The palindromes that can be searched for are either strict palindromes or 2-arm palindromes (the former being a particular case of the latter) i.e. palindromes where the 2 arms are separated by an arbitrary sequence called "the loop".

Use the findComplementedPalindromes function to find complemented palindromic substrings in a DNAString subject (in a complemented palindrome the 2 arms are reverse-complementary sequences).

See Also

maskMotif, matchPattern, matchLRPatterns, matchProbePair, XStringViews-class, DNAString-class

Examples

Run this code
x0 <- BString("abbbaabbcbbaccacabbbccbcaabbabacca")
pals <- findPalindromes(x0, min.armlength=3, max.looplength=5)
pals
palindromeArmLength(pals)
palindromeLeftArm(pals)
palindromeRightArm(pals)

## Whitespaces matter:
x1 <- BString("Delia saw I was aileD")
palindromeArmLength(x1)
palindromeLeftArm(x1)
palindromeRightArm(x1)

x2 <- BString("was it a car or a cat I saw")
palindromeArmLength(x2)
palindromeLeftArm(x2)
palindromeRightArm(x2)

## Note that complemented palindromes (like palindromes) can be nested:
x3 <- DNAString("ACGTTNAACGTCCAAAATTTTCCACGTTNAACGT")
findComplementedPalindromes(x3, max.looplength=19)

## A real use case
library(BSgenome.Dmelanogaster.UCSC.dm3)
chrX <- Dmelanogaster$chrX
chrX_pals <- findComplementedPalindromes(chrX, min.armlength=40,
                                               max.looplength=80)
chrX_pals
complementedPalindromeArmLength(chrX_pals)  # 251 70 262

Run the code above in your browser using DataLab