Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / disembl / biopython-1.50 / Bio / utils.py
diff --git a/website/archive/binaries/mac/src/disembl/biopython-1.50/Bio/utils.py b/website/archive/binaries/mac/src/disembl/biopython-1.50/Bio/utils.py
new file mode 100644 (file)
index 0000000..bf0d317
--- /dev/null
@@ -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
+
+