X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=binaries%2Fsrc%2Fglobplot%2Fbiopython-1.50%2FBio%2Futils.py;fp=binaries%2Fsrc%2Fglobplot%2Fbiopython-1.50%2FBio%2Futils.py;h=bf0d31766347f661189a7c37c08eafa97b9dd0cd;hb=119df1cedad3d4760e6fd458713da2488eff79cc;hp=0000000000000000000000000000000000000000;hpb=d3806a66f002b93f6dc03447b6628f943a3ba90c;p=jabaws.git diff --git a/binaries/src/globplot/biopython-1.50/Bio/utils.py b/binaries/src/globplot/biopython-1.50/Bio/utils.py new file mode 100644 index 0000000..bf0d317 --- /dev/null +++ b/binaries/src/globplot/biopython-1.50/Bio/utils.py @@ -0,0 +1,163 @@ +# 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 + +