+++ /dev/null
-# Copyright 2000 by Andrew Dalke.
-# All rights reserved.
-# This code is part of the Biopython distribution and governed by its
-# license. Please see the LICENSE file that should have been included
-# as part of this package.
-
-"""Miscellaneous functions for dealing with sequences (obsolete?)."""
-
-import Seq
-import Alphabet
-
-from PropertyManager import default_manager
-
-def translate(seq, id = None):
- """Translate a sequence (DEPRECATED)."""
- import warnings
- warnings.warn("Bio.utils.translate() has been deprecated, and we" \
- +" intend to remove it in a future release of Biopython."\
- +" Please use the translate method or function in Bio.Seq"\
- +" instead, as described in the Tutorial.",
- DeprecationWarning)
- if id is None:
- s = "translator"
- else:
- s = "translator.id.%d" % id
- translator = default_manager.resolve(seq.alphabet, s)
- return translator.translate(seq)
-
-def translate_to_stop(seq, id = None):
- """Translate a sequence up to the first in frame stop codon (DEPRECATED)."""
- import warnings
- warnings.warn("Bio.utils.translate_to_stop() has been deprecated, and we" \
- +" intend to remove it in a future release of Biopython."\
- +" Please use the translate method or function in Bio.Seq"\
- +" instead, as described in the Tutorial.",
- DeprecationWarning)
- if id is None:
- s = "translator"
- else:
- s = "translator.id.%d" % id
- translator = default_manager.resolve(seq.alphabet, s)
- return translator.translate_to_stop(seq)
-
-def back_translate(seq, id = None):
- """Back-translate a sequence (DEPRECATED)."""
- import warnings
- warnings.warn("Bio.utils.back_translate() has been deprecated, and we" \
- +" intend to remove it in a future release of Biopython."\
- +" If you use it, please tell us on the mailing list.",
- DeprecationWarning)
- if id is None:
- s = "translator"
- else:
- s = "translator.id.%d" % id
- translator = default_manager.resolve(seq.alphabet, s)
- return translator.back_translate(seq)
-
-
-def transcribe(seq):
- """Transcribe a sequence (DEPRECATED)."""
- import warnings
- warnings.warn("Bio.utils.transcribe() has been deprecated, and we" \
- +" intend to remove it in a future release of Biopython."\
- +" Please use the transcribe method or function in"\
- +" Bio.Seq instead, as described in the Tutorial.",
- DeprecationWarning)
- transcriber = default_manager.resolve(seq.alphabet, "transcriber")
- return transcriber.transcribe(seq)
-
-def back_transcribe(seq):
- """Back-transcribe a sequence (DEPRECATED)."""
- import warnings
- warnings.warn("Bio.utils.back_transcribe() has been deprecated, and we" \
- +" intend to remove it in a future release of Biopython."\
- +" Please use the back_transcribe method or function in"\
- +" Bio.Seq instead, as described in the Tutorial.",
- DeprecationWarning)
- transcriber = default_manager.resolve(seq.alphabet, "transcriber")
- return transcriber.back_transcribe(seq)
-
-def ungap(seq):
- """given a sequence with gap encoding, return the ungapped sequence"""
- #TODO - Fix this? It currently assumes the outmost AlphabetEncoder
- #is for the gap. Consider HasStopCodon(Gapped(Protein())) as a test case.
- gap = seq.gap_char
- letters = []
- for c in seq.data:
- if c != gap:
- letters.append(c)
- return Seq.Seq("".join(letters), seq.alphabet.alphabet)
-
-def verify_alphabet(seq):
- letters = {}
- for c in seq.alphabet.letters:
- letters[c] = 1
- try:
- for c in seq.data:
- letters[c]
- except KeyError:
- return 0
- return 1
-
-def count_monomers(seq):
- dict = {}
-# bugfix: string.count(s,c) raises an AttributeError. Iddo Friedberg 16 Mar. 04
-# s = buffer(seq.data) # works for strings and array.arrays
- for c in seq.alphabet.letters:
- dict[c] = seq.data.count(c)
- return dict
-
-def percent_monomers(seq):
- dict2 = {}
- seq_len = len(seq)
- dict = count_monomers(seq)
- for m in dict:
- dict2[m] = dict[m] * 100. / seq_len
- return dict2
-
-def sum(seq, table, zero = 0.0):
- total = zero
- for c in getattr(seq, "data", seq):
- total = total + table[c]
- return total
-
-# For ranged addition
-def sum_2ple(seq, table, zero = (0.0, 0.0)):
- x, y = zero
- data = getattr(seq, "data", seq)
- for c in data:
- x2, y2 = table[c]
- x = x + x2
- y = y + y2
- return (x, y)
-
-def total_weight(seq, weight_table = None):
- if weight_table is None:
- weight_table = default_manager.resolve(seq.alphabet, "weight_table")
- return sum(seq, weight_table)
-
-def total_weight_range(seq, weight_table = None):
- if weight_table is None:
- weight_table = default_manager.resolve(seq.alphabet, "weight_range_table")
- return sum_2ple(seq, weight_table)
-
-def reduce_sequence(seq, reduction_table,new_alphabet=None):
- """ given an amino-acid sequence, return it in reduced alphabet form based
- on the letter-translation table passed. Some "standard" tables are in
- Alphabet.Reduced.
- seq: a Seq.Seq type sequence
- reduction_table: a dictionary whose keys are the "from" alphabet, and values
- are the "to" alphabet"""
- if new_alphabet is None:
- new_alphabet = Alphabet.single_letter_alphabet
- new_alphabet.letters = ''
- for letter in reduction_table:
- new_alphabet.letters += letter
- new_alphabet.size = len(new_alphabet.letters)
- new_seq = Seq.Seq('',new_alphabet)
- for letter in seq:
- new_seq += reduction_table[letter]
- return new_seq
-
-