File: sequence.py

package info (click to toggle)
python-pbcore 1.6.5%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 19,168 kB
  • sloc: python: 25,497; xml: 2,846; makefile: 251; sh: 24
file content (34 lines) | stat: -rw-r--r-- 986 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# sequence.py: module of basic sequence methods
# Authors: Brett Bowman, David Alexander

from __future__ import absolute_import

__all__ = [ "complement",
            "reverseComplement"]

from string import maketrans
import re

DNA_COMPLEMENT = maketrans('agcturyswkmbdhvnAGCTURYSWKMBDHV-N',
                           'tcgannnnnnnnnnnnTCGANNNNNNNNNNN-N')

def reverse( sequence ):
    """Return the reverse of any sequence
    """
    return sequence[::-1]

def complement( sequence ):
    """
    Return the complement of a sequence
    """
    if re.search('[^agcturyswkmbdhvnAGCTURYSWKMBDHVN-]', sequence):
        raise ValueError("Sequence contains invalid DNA characters - "
                         "only standard IUPAC nucleotide codes allowed")
    return sequence.translate( DNA_COMPLEMENT )

def reverseComplement( sequence ):
    """
    Return the reverse-complement of a sequence
    NOTE: This only currently supports DNA
    """
    return complement(sequence)[::-1]