Package Bio :: Package Alphabet :: Module IUPAC
[hide private]
[frames] | no frames]

Source Code for Module Bio.Alphabet.IUPAC

  1  # Copyright 2000-2001 by Andrew Dalke. 
  2  # Revisions copyright 2008 by Peter Cock. 
  3  # All rights reserved. 
  4  # This code is part of the Biopython distribution and governed by its 
  5  # license.  Please see the LICENSE file that should have been included 
  6  # as part of this package. 
  7   
  8  """Standard nucleotide and protein alphabets defined by IUPAC.""" 
  9   
 10  from Bio import Alphabet 
 11  from Bio.Data import IUPACData 
 12   
 13  ##################### Protein 
 14   
 15  # From the IUPAC definition at: 
 16  #   http://www.chem.qmw.ac.uk/iupac/AminoAcid/A2021.html#AA21 
 17   
 18  # If you use X for selenocysteines, then you'll need a new alphabet. 
19 -class ExtendedIUPACProtein(Alphabet.ProteinAlphabet):
20 """Extended IUPAC protein single letter alphabet including X etc. 21 22 In addition to the standard 20 single letter protein codes, this includes: 23 24 B = "Asx"; Aspartic acid (R) or Asparagine (N) 25 X = "Xxx"; Unknown or 'other' amino acid 26 Z = "Glx"; Glutamic acid (E) or Glutamine (Q) 27 J = "Xle"; Leucine (L) or Isoleucine (I), used in mass-spec (NMR) 28 U = "Sec"; Selenocysteine 29 O = "Pyl"; Pyrrolysine 30 """ 31 letters = IUPACData.extended_protein_letters
32 33 extended_protein = ExtendedIUPACProtein() 34
35 -class IUPACProtein(ExtendedIUPACProtein):
36 """IUPAC protein single letter alphabet of the 20 standard amino acids.""" 37 letters = IUPACData.protein_letters
38 39 protein = IUPACProtein() 40 41 ##################### DNA 42 43 # The next two are the IUPAC definitions, from: 44 # http://www.chem.qmw.ac.uk/iubmb/misc/naseq.html
45 -class IUPACAmbiguousDNA(Alphabet.DNAAlphabet):
46 letters = IUPACData.ambiguous_dna_letters
47 48 ambiguous_dna = IUPACAmbiguousDNA() 49
50 -class IUPACUnambiguousDNA(IUPACAmbiguousDNA):
51 letters = IUPACData.unambiguous_dna_letters
52 53 unambiguous_dna = IUPACUnambiguousDNA() 54 55 56 # Also from the URL, but not part of the standard
57 -class ExtendedIUPACDNA(Alphabet.DNAAlphabet):
58 letters = IUPACData.extended_dna_letters
59 # B == 5-bromouridine 60 # D == 5,6-dihydrouridine 61 # S == thiouridine 62 # W == wyosine 63 64 extended_dna = ExtendedIUPACDNA() 65 66 ##################### RNA 67
68 -class IUPACAmbiguousRNA(Alphabet.RNAAlphabet):
69 letters = IUPACData.ambiguous_rna_letters
70 71 ambiguous_rna = IUPACAmbiguousRNA() 72
73 -class IUPACUnambiguousRNA(IUPACAmbiguousRNA):
74 letters = IUPACData.unambiguous_rna_letters
75 76 unambiguous_rna = IUPACUnambiguousRNA() 77 78 # are there extended forms? 79 #class ExtendedIUPACRNA(Alphabet.RNAAlphabet): 80 # letters = extended_rna_letters 81 # # B == 5-bromouridine 82 # # D == 5,6-dihydrouridine 83 # # S == thiouridine 84 # # W == wyosine 85 86 87 # We need to load the property resolution information, but we need to 88 # wait until after the systems have been loaded. (There's a nasty loop 89 # where, eg, translation objects need an alphabet, which need to be 90 # assocated with translators.) 91 92 from Bio.PropertyManager import default_manager 93
94 -def _bootstrap(manager, klass, property):
95 assert manager is default_manager 96 del default_manager.class_resolver[IUPACProtein] 97 del default_manager.class_resolver[ExtendedIUPACProtein] 98 del default_manager.class_resolver[IUPACAmbiguousDNA] 99 del default_manager.class_resolver[IUPACUnambiguousDNA] 100 del default_manager.class_resolver[ExtendedIUPACDNA] 101 del default_manager.class_resolver[IUPACAmbiguousRNA] 102 del default_manager.class_resolver[IUPACUnambiguousRNA] 103 104 from Bio.Encodings import IUPACEncoding 105 106 return manager.resolve_class(klass, property)
107 108 default_manager.class_resolver[IUPACProtein] = _bootstrap 109 default_manager.class_resolver[ExtendedIUPACProtein] = _bootstrap 110 default_manager.class_resolver[IUPACAmbiguousDNA] = _bootstrap 111 default_manager.class_resolver[IUPACUnambiguousDNA] = _bootstrap 112 default_manager.class_resolver[ExtendedIUPACDNA] = _bootstrap 113 default_manager.class_resolver[IUPACAmbiguousRNA] = _bootstrap 114 default_manager.class_resolver[IUPACUnambiguousRNA] = _bootstrap 115