Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / globplot / biopython-1.50 / Bio / Alphabet / IUPAC.py
diff --git a/website/archive/binaries/mac/src/globplot/biopython-1.50/Bio/Alphabet/IUPAC.py b/website/archive/binaries/mac/src/globplot/biopython-1.50/Bio/Alphabet/IUPAC.py
new file mode 100644 (file)
index 0000000..bf5a1e7
--- /dev/null
@@ -0,0 +1,127 @@
+# Copyright 2000-2001 by Andrew Dalke.
+# Revisions copyright 2008 by Peter Cock.
+# 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.
+
+"""Standard nucleotide and protein alphabets defined by IUPAC."""
+
+from Bio import Alphabet
+from Bio.Data import IUPACData
+
+##################### Protein
+
+# From the IUPAC definition at:
+#   http://www.chem.qmw.ac.uk/iupac/AminoAcid/A2021.html#AA21
+
+assert IUPACData.extended_protein_letters == IUPACData.extended_protein_letters.upper()
+class ExtendedIUPACProtein(Alphabet.ProteinAlphabet):
+    """Extended uppercase IUPAC protein single letter alphabet including X etc.
+
+    In addition to the standard 20 single letter protein codes, this includes:
+    
+    B = "Asx";  Aspartic acid (R) or Asparagine (N)
+    X = "Xxx";  Unknown or 'other' amino acid
+    Z = "Glx";  Glutamic acid (E) or Glutamine (Q)
+    J = "Xle";  Leucine (L) or Isoleucine (I), used in mass-spec (NMR)
+    U = "Sec";  Selenocysteine
+    O = "Pyl";  Pyrrolysine
+
+    This alphabet is not intended to be used with X for Selenocysteine
+    (an ad-hoc standard prior to the IUPAC adoption of U instead).
+    """
+    letters = IUPACData.extended_protein_letters
+
+extended_protein = ExtendedIUPACProtein()
+
+assert IUPACData.protein_letters == IUPACData.protein_letters.upper()
+class IUPACProtein(ExtendedIUPACProtein):
+    """Uppercase IUPAC protein single letter alphabet of the 20 standard amino acids."""
+    letters = IUPACData.protein_letters
+
+protein = IUPACProtein()
+
+##################### DNA
+
+# The next two are the IUPAC definitions, from:
+#   http://www.chem.qmw.ac.uk/iubmb/misc/naseq.html
+class IUPACAmbiguousDNA(Alphabet.DNAAlphabet):
+    """Uppercase IUPAC ambiguous DNA."""
+    letters = IUPACData.ambiguous_dna_letters
+
+ambiguous_dna = IUPACAmbiguousDNA()
+
+class IUPACUnambiguousDNA(IUPACAmbiguousDNA):
+    """Uppercase IUPAC unambiguous DNA (letters GATC only)."""
+    letters = IUPACData.unambiguous_dna_letters
+
+unambiguous_dna = IUPACUnambiguousDNA()
+
+
+# Also from the URL, but not part of the standard
+class ExtendedIUPACDNA(Alphabet.DNAAlphabet):
+    """Extended IUPAC DNA alphabet.
+
+    In addition to the standard letter codes GATC, this includes:
+
+    B = 5-bromouridine
+    D = 5,6-dihydrouridine
+    S = thiouridine
+    W = wyosine
+    """
+    letters = IUPACData.extended_dna_letters
+
+extended_dna = ExtendedIUPACDNA()
+
+##################### RNA
+
+class IUPACAmbiguousRNA(Alphabet.RNAAlphabet):
+    """Uppercase IUPAC ambiguous RNA."""
+    letters = IUPACData.ambiguous_rna_letters
+
+ambiguous_rna = IUPACAmbiguousRNA()
+
+class IUPACUnambiguousRNA(IUPACAmbiguousRNA):
+    """Uppercase IUPAC unambiguous RNA (letters GAUC only)."""
+    letters = IUPACData.unambiguous_rna_letters
+
+unambiguous_rna = IUPACUnambiguousRNA()
+
+# are there extended forms?
+#class ExtendedIUPACRNA(Alphabet.RNAAlphabet):
+#    letters = extended_rna_letters
+#    #   B == 5-bromouridine
+#    #   D == 5,6-dihydrouridine
+#    #   S == thiouridine
+#    #   W == wyosine
+
+
+# We need to load the property resolution information, but we need to
+# wait until after the systems have been loaded. (There's a nasty loop
+# where, eg, translation objects need an alphabet, which need to be
+# assocated with translators.)
+
+from Bio.PropertyManager import default_manager
+
+def _bootstrap(manager, klass, property):
+    assert manager is default_manager
+    del default_manager.class_resolver[IUPACProtein]
+    del default_manager.class_resolver[ExtendedIUPACProtein]
+    del default_manager.class_resolver[IUPACAmbiguousDNA]
+    del default_manager.class_resolver[IUPACUnambiguousDNA]
+    del default_manager.class_resolver[ExtendedIUPACDNA]
+    del default_manager.class_resolver[IUPACAmbiguousRNA]
+    del default_manager.class_resolver[IUPACUnambiguousRNA]
+
+    from Bio.Encodings import IUPACEncoding
+
+    return manager.resolve_class(klass, property)
+
+default_manager.class_resolver[IUPACProtein] = _bootstrap
+default_manager.class_resolver[ExtendedIUPACProtein] = _bootstrap
+default_manager.class_resolver[IUPACAmbiguousDNA] = _bootstrap
+default_manager.class_resolver[IUPACUnambiguousDNA] = _bootstrap
+default_manager.class_resolver[ExtendedIUPACDNA] = _bootstrap
+default_manager.class_resolver[IUPACAmbiguousRNA] = _bootstrap
+default_manager.class_resolver[IUPACUnambiguousRNA] = _bootstrap