Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/rev/73f9779491ef
Дата изменения: Unknown
Дата индексирования: Mon Oct 1 23:53:31 2012
Кодировка: UTF-8
allpy: 73f9779491ef

allpy

changeset 191:73f9779491ef

Renamed lib to allpy Previously, every import looked like "from allpy.lib import ...", which was ridiculous. Consequences: 1. Uses of the package look like "from allpy import" 2. When testing the package locally, you have to add `pwd` to PYTHONPATH, not `pwd`/.. (this is a good thing (tm)) 3. It is now possible to make a proper Debian package The change renames directory & fixes all imports referencing allpy.lib The results are untested since there were no working tests before the change.
author Daniil Alexeyevsky <me.dendik@gmail.com>
date Thu, 18 Nov 2010 19:38:05 +0300
parents 08494fb2c47a
children 50633fcbbdc4 a7eed9c3ab8f
files __init__.py allpy/__init__.py allpy/alignment.py allpy/allpy_data/AAdict.py allpy/allpy_data/__init__.py allpy/allpy_data/amino_acids.py allpy/allpy_data/blossum62.py allpy/allpy_pdb.py allpy/block.py allpy/config.py allpy/fasta.py allpy/graph.py allpy/markup.py allpy/monomer.py allpy/sequence.py geometrical_core/geometrical_core.py lib/__init__.py lib/alignment.py lib/allpy_data/AAdict.py lib/allpy_data/__init__.py lib/allpy_data/amino_acids.py lib/allpy_data/blossum62.py lib/allpy_pdb.py lib/block.py lib/config.py lib/fasta.py lib/graph.py lib/markup.py lib/monomer.py lib/sequence.py repeats/repeats.py sec_str/sec_str.py test/test.py
diffstat 30 files changed, 2383 insertions(+), 2383 deletions(-) [+]
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/allpy/alignment.py	Thu Nov 18 19:38:05 2010 +0300
     1.3 @@ -0,0 +1,240 @@
     1.4 +#!/usr/bin/python
     1.5 +
     1.6 +"""
     1.7 +    "I will not use abbrev."
     1.8 +    "I will always finish what I st"    
     1.9 +                                            - Bart Simpson
    1.10 +
    1.11 +"""
    1.12 +
    1.13 +import sequence
    1.14 +from monomer import AminoAcidType
    1.15 +import allpy_data
    1.16 +from tempfile import NamedTemporaryFile
    1.17 +import os
    1.18 +import block
    1.19 +from fasta import save_fasta
    1.20 +
    1.21 +class Alignment(object):
    1.22 +    """ Alignment
    1.23 +    
    1.24 +    Mandatory data:
    1.25 +    *   body -- dict 
    1.26 +        {<Sequence object>:[<Monomer object>,None,<Monomer object>]}
    1.27 +        keys are the Sequence objects, values are the lists, which
    1.28 +        contain monomers of those sequences or None for gaps in the
    1.29 +        corresponding sequence of
    1.30 +        alignment
    1.31 +    
    1.32 +    """
    1.33 +    # _sequences -- list of Sequence objects. Sequences don't contain gaps
    1.34 +    #  - see sequence.py module
    1.35 +
    1.36 +    def __init__(self, *args):
    1.37 +        """overloaded constructor
    1.38 +
    1.39 +        Alignment() -> new empty Alignment
    1.40 +        Alignment(sequences, body) -> new Alignment with sequences and
    1.41 +            body initialized from arguments
    1.42 +        Alignment(fasta_file) -> new Alignment, read body and sequences
    1.43 +             from fasta file 
    1.44 +
    1.45 +        """
    1.46 +        if len(args)>1:#overloaded constructor
    1.47 +            self.sequences=args[0]
    1.48 +            self.body=args[1]
    1.49 +        elif len(args)==0:
    1.50 +            self.sequences=[]
    1.51 +            self.body={}
    1.52 +        else:
    1.53 +            self.sequences, self.body = Alignment.from_fasta(args[0])
    1.54 +
    1.55 +    def length(self):
    1.56 +        """ Returns width, ie length of each sequence with gaps """
    1.57 +        return max([len(line) for line in self.body.values()])
    1.58 +
    1.59 +    def height(self):
    1.60 +        """ The number of sequences in alignment (it's thickness). """
    1.61 +        return len(self.body)
    1.62 +
    1.63 +    def identity(self):
    1.64 +        """ Calculate the identity of alignment positions for colouring.
    1.65 +
    1.66 +        For every (row, column) in alignment the percentage of the exactly
    1.67 +        same residue in the same column in the alignment is calculated.
    1.68 +        The data structure is just like the Alignment.body, but istead of 
    1.69 +        monomers it contains float percentages.
    1.70 +        """
    1.71 +        # Oh, God, that's awful! Absolutely not understandable.
    1.72 +        # First, calculate percentages of amino acids in every column
    1.73 +        contribution = 1.0 / len(self.sequences)
    1.74 +        all_columns = []
    1.75 +        for position in range(len(self)):
    1.76 +            column_percentage = {}
    1.77 +            for seq in self.body:
    1.78 +                if self.body[seq][position] is not None:
    1.79 +                    aa = self.body[seq][position].code
    1.80 +                else:
    1.81 +                    aa = None
    1.82 +                if aa in allpy_data.amino_acids:
    1.83 +                    if aa in column_percentage.keys():
    1.84 +                        column_percentage[aa] += contribution
    1.85 +                    else:
    1.86 +                        column_percentage[aa] = contribution
    1.87 +            all_columns.append(column_percentage)
    1.88 +        # Second, map these percentages onto the alignment
    1.89 +        self.identity_percentages = {}
    1.90 +        for seq in self.sequences:
    1.91 +            self.identity_percentages[seq] = []
    1.92 +        for seq in self.identity_percentages:
    1.93 +            line = self.identity_percentages[seq]
    1.94 +            for position in range(len(self)):
    1.95 +                if self.body[seq][position] is not None:
    1.96 +                    aa = self.body[seq][position].code
    1.97 +                else:
    1.98 +                    aa = None
    1.99 +                line.append(all_columns[position].get(aa))
   1.100 +        return self.identity_percentages
   1.101 +
   1.102 +    @staticmethod
   1.103 +    def from_fasta(file, monomer_kind=AminoAcidType):
   1.104 +        """ Import data from fasta file
   1.105 +        
   1.106 +        monomer_kind is class, inherited from MonomerType
   1.107 +        
   1.108 +        >>> import alignment
   1.109 +        >>> sequences,body=alignment.Alignment.from_fasta(open("test.fasta"))       
   1.110 +        """
   1.111 +        import re
   1.112 +
   1.113 +        sequences = []
   1.114 +        body = {}
   1.115 +
   1.116 +        raw_sequences = file.read().split(">")
   1.117 +        if len(raw_sequences) <= 1:
   1.118 +            raise Exception("Wrong format of fasta-file %s" % file.name)
   1.119 +        
   1.120 +        raw_sequences = raw_sequences[1:] #ignore everything before the first >
   1.121 +        for raw in raw_sequences:
   1.122 +            parsed_raw_sequence = raw.split("\n")
   1.123 +            parsed_raw_sequence = [s.strip() for s in parsed_raw_sequence]
   1.124 +            name_and_description = parsed_raw_sequence[0]
   1.125 +            name_and_description = name_and_description.split(" ",1)
   1.126 +            if len(name_and_description) == 2:
   1.127 +                name, description = name_and_description
   1.128 +            elif len(name_and_description) == 1: 
   1.129 +                #if there is description
   1.130 +                name = name_and_description[0]
   1.131 +                description = ''
   1.132 +            else:
   1.133 +                raise Exception("Wrong name of sequence %(name)$ fasta-file %(file)s" % \
   1.134 +                {'name': name, 'file': file.name})
   1.135 +            
   1.136 +            if len(parsed_raw_sequence) <= 1:
   1.137 +                raise Exception("Wrong format of sequence %(name)$ fasta-file %(file)s" % \
   1.138 +                {'name': name, 'file': file.name})
   1.139 +            string = ""
   1.140 +            for piece in parsed_raw_sequence[1:]:
   1.141 +                piece_without_whitespace_chars = re.sub("\s", "", piece)
   1.142 +                string += piece_without_whitespace_chars
   1.143 +            monomers = [] #convert into Monomer objects
   1.144 +            body_list = [] #create the respective list in body dict
   1.145 +            for current_monomer in string:
   1.146 +                if current_monomer not in ["-", ".", "~"]:
   1.147 +                    monomers.append(monomer_kind.from_code1(current_monomer).instance())
   1.148 +                    body_list.append(monomers[-1])
   1.149 +                else:
   1.150 +                    body_list.append(None)
   1.151 +            s = sequence.Sequence(monomers, name, description)
   1.152 +            sequences.append(s)
   1.153 +            body[s] = body_list
   1.154 +        return sequences, body
   1.155 +    
   1.156 +    
   1.157 +    @staticmethod
   1.158 +    def from_sequences(*sequences):
   1.159 +        """  Constructs new alignment from sequences
   1.160 +        
   1.161 +        Add None's to right end to make equal lengthes of alignment sequences 
   1.162 +        """
   1.163 +        alignment = Alignment()
   1.164 +        alignment.sequences = sequences
   1.165 +        max_length = max(len(sequence) for sequence in sequences)
   1.166 +        for sequence in sequences:
   1.167 +            gaps_count = max_length - len(sequence)
   1.168 +            alignment.body[sequence] = sequence.monomers + [None] * gaps_count
   1.169 +        return alignment
   1.170 +    
   1.171 +    def save_fasta(self, out_file, long_line=70, gap='-'):
   1.172 +        """ Saves alignment to given file
   1.173 +        
   1.174 +        Splits long lines to substrings of length=long_line
   1.175 +        To prevent this, set long_line=None 
   1.176 +        """
   1.177 +        block.Block(self).save_fasta(out_file, long_line=long_line, gap=gap)
   1.178 +        
   1.179 +    def muscle_align(self):
   1.180 +        """ Simple align ths alignment using sequences (muscle)
   1.181 +        
   1.182 +        uses old Monomers and Sequences objects
   1.183 +        """
   1.184 +        tmp_file = NamedTemporaryFile(delete=False)
   1.185 +        self.save_fasta(tmp_file)
   1.186 +        tmp_file.close()
   1.187 +        os.system("muscle -in %(tmp)s -out %(tmp)s" % {'tmp': tmp_file.name})
   1.188 +        sequences, body = Alignment.from_fasta(open(tmp_file.name))
   1.189 +        for sequence in self.sequences:
   1.190 +            try:
   1.191 +                new_sequence = [i for i in sequences if sequence==i][0]
   1.192 +            except:
   1.193 +                raise Exception("Align: Cann't find sequence %s in muscle output" % \
   1.194 +                sequence.name)
   1.195 +            old_monomers = iter(sequence.monomers)
   1.196 +            self.body[sequence] = []
   1.197 +            for monomer in body[new_sequence]:
   1.198 +                if not monomer:
   1.199 +                    self.body[sequence].append(monomer)
   1.200 +                else:
   1.201 +                    old_monomer = old_monomers.next()
   1.202 +                    if monomer != old_monomer:
   1.203 +                        raise Exception("Align: alignment errors")
   1.204 +                    self.body[sequence].append(old_monomer)
   1.205 +        os.unlink(tmp_file.name)
   1.206 +        
   1.207 +        
   1.208 +    def column(self, sequence=None, sequences=None, original=None):
   1.209 +        """ returns list of columns of alignment
   1.210 +        
   1.211 +        sequence or sequences:
   1.212 +            if sequence is given, then column is (original_monomer, monomer)
   1.213 +            if sequences is given, then column is (original_monomer, {sequence: monomer}) 
   1.214 +            if both of them are given, it is an error
   1.215 +        original (Sequence type):
   1.216 +            if given, this filters only columns represented by original sequence
   1.217 +        """
   1.218 +        if sequence and sequences:
   1.219 +            raise Exception("Wrong usage. read help")
   1.220 +        indexes = dict([(v, k) for( k, v) in enumerate(self.sequences)])
   1.221 +        alignment = self.body.items()
   1.222 +        alignment.sort(key=lambda i: indexes[i[0]])
   1.223 +        alignment = [monomers for seq, monomers in alignment]
   1.224 +        for column in zip(*alignment):
   1.225 +            if not original or column[indexes[original]]:
   1.226 +                if sequence:
   1.227 +                    yield (column[indexes[original]], column[indexes[sequence]])
   1.228 +                else:
   1.229 +                    yield (column[indexes[original]], 
   1.230 +                    dict([(s, column[indexes[s]]) for s in sequences]))
   1.231 +    
   1.232 +    
   1.233 +    def secstr(self, sequence, pdb_chain, gap='-'):
   1.234 +        """ Returns string representing secondary structure """
   1.235 +        return ''.join([
   1.236 +        (sequence.pdb_secstr[pdb_chain][m] if sequence.secstr_has(pdb_chain, m) else gap) 
   1.237 +        for m in self.body[sequence]])
   1.238 +    
   1.239 +    def save_secstr(self, out_file, sequence, pdb_chain, 
   1.240 +    name, description='', gap='-', long_line=70):
   1.241 +        """ Save secondary structure and name in fasta format """
   1.242 +        save_fasta(out_file, self.secstr(sequence, pdb_chain, gap), name, description, long_line)
   1.243 +    
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/allpy/allpy_data/AAdict.py	Thu Nov 18 19:38:05 2010 +0300
     2.3 @@ -0,0 +1,1200 @@
     2.4 +
     2.5 +"""
     2.6 +Dict:
     2.7 +	key: 3-letter code from PDB
     2.8 +	value: (1-letter code, type, is_modified, None)
     2.9 +		type:
    2.10 +			p - protein
    2.11 +			d - dna
    2.12 +			r - rna
    2.13 +		is_modified: "M" or None
    2.14 +        None
    2.15 +        name
    2.16 +"""
    2.17 +
    2.18 +AAdict = {
    2.19 +"CPI": ('x', 'p', None, None, '6-CARBOXYPIPERIDINE'),
    2.20 +"AGM": ('r', 'p', 'M', None, '5-METHYL-ARGININE'),
    2.21 +"G25": ('g', 'r', 'M', None, '"GUANOSINE-5\'-MONOPHOSPHATE"'),
    2.22 +"CPN": ('c', 'd', 'M', None, '2-AMINOETHYLGLYCINE-CARBONYLMETHYLENE-CYTOSINE'),
    2.23 +"MA6": ('a', 'r', 'M', None, '"6N-DIMETHYLADENOSINE-5\'-MONOPHOSHATE"'),
    2.24 +"NYS": ('c', 'p', 'M', None, 'S-{5-[(1R)-2-AMINO-1-HYDROXYETHYL]-2,3-DIHYDROXYPHENYL}-L-CYSTEINE'),
    2.25 +"CPC": ('x', 'p', None, None, '"2-METHYL-1-METHYLAMINO-CYCLOPROPANE'),
    2.26 +"8FG": ('g', 'd', 'M', None, '"N-(5\'-PHOSPHO-2\'-DEOXYGUANOSIN-8-YL)-2-ACETYLAMINOFLUORENE"'),
    2.27 +"SIC": ('x', 'p', None, None, '"(2R)-2-[(3S)-3-AMINO-2,5-DIOXOPYRROLIDIN-1-YL]-3-SULFANYLPROPANOIC'),
    2.28 +"PQ1": ('n', 'r', None, None, '"PHOSPHORIC'),
    2.29 +"PAS": ('d', 'p', 'M', None, '"2-AMINO-4-OXO-4-PHOSPHONOOXY-BUTYRIC'),
    2.30 +"EOV": ('x', 'p', None, None, '(3S,6S,9S,12R,15S,18S,21S,24S,30S,33S)-30-ethyl-33-[(1R,2R,4E)-1-hydroxy-2-methylhex-4-en-1-yl]-1,4,7,10,12,15,19,25,28-nonamethyl-3,21-bis(1-methylethyl)-6,9,18,24-tetrakis(2-methylpropyl)-1,4,7,10,13,16,19,22,25,28,31-undecaazacyclotritriacontane-2,5,8,11,14,17,20,23,26,29,32-undecone'),
    2.31 +"B2I": ('i', 'p', 'M', None, '"ISOLEUCINE'),
    2.32 +"NYM": ('n', 'd', None, None, "3'-DEOXY-3'-AMINOTHYMIDINE MONOPHOSPHATE"),
    2.33 +"URD": ('u', 'r', 'M', None, '1-((2R,3R,4S,5R)-TETRAHYDRO-3,4-DIHYDROXY-5-(HYDROXYMETHYL)FURAN-2-YL)PYRIDINE-2,4(1H,3H)-DIONE'),
    2.34 +"NYC": ('x', 'p', None, None, '"[(4E)-2-[(1R,2S)-1-AMINO-2-HYDROXYPROPYL]-4-(1H-INDOL-3-YLMETHYLENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
    2.35 +"AGT": ('x', 'p', None, None, 'S-{(S)-AMINO[(4-AMINOBUTYL)AMINO]METHYL}-L-CYSTEINE'),
    2.36 +"NYG": ('x', 'p', None, None, '"[(4Z)-2-[(1S)-1,3-DIAMINO-3-OXOPROPYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
    2.37 +"CPV": ('x', 'p', None, None, '"5-AMINO-6-CYCLOHEXYL-4-HYDROXY-2-ISOPROPYL-HEXANOIC'),
    2.38 +"TAV": ('d', 'p', 'M', None, '"N-METHYL-N-{2-[(2-NAPHTHYLSULFONYL)AMINO]-5-[(2-NAPHTHYLSULFONYL)OXY]BENZOYL}-L-ASPARTIC'),
    2.39 +"S4G": ('g', 'd', 'M', None, "2'-deoxy-4'-thioguanosine 5'-(dihydrogen phosphate)"),
    2.40 +"MA7": ('a', 'd', 'M', None, '"1N-METHYLADENOSINE-5\'-MONOPHOSPHATE"'),
    2.41 +"S4C": ('c', 'r', 'M', None, '"4\'-THIO-4\'-DEOXY-CYTOSINE-5\'-MONOPHOSPHATE"'),
    2.42 +"UAR": ('u', 'r', 'M', None, "URACIL ARABINOSE-5'-PHOSPHATE"),
    2.43 +"SPT": ('t', 'd', 'M', None, "5'-THIO-THYMIDINE PHOSPHONIC ACID"),
    2.44 +"S4U": ('u', 'r', 'M', None, '"4-THIOURIDINE-5\'-PHOSPHATE"'),
    2.45 +"TAF": ('t', 'd', 'M', None, "2'-DEOXY-2'-FLUORO-ARABINO-FURANOSYL THYMINE-5'-PHOSPHATE"),
    2.46 +"5NC": ('c', 'd', 'M', None, '"5-AZA-CYTIDINE-5\'MONOPHOSPHATE"'),
    2.47 +"CSF": ('c', 'r', 'M', None, "CYTIDINE-5'-MONOPHOSPHATE-3-FLUORO-N-ACETYL-NEURAMINIC ACID"),
    2.48 +"0CS": ('a', 'p', 'M', None, '3-[(S)-HYDROPEROXYSULFINYL]-L-ALANINE'),
    2.49 +"B2V": ('v', 'p', 'M', None, '"VALINE'),
    2.50 +"TAL": ('n', 'r', None, None, '9-(6-DEOXY-ALPHA-L-TALOFURANOSYL)-6-METHYLPURINE'),
    2.51 +"SCY": ('c', 'p', 'M', None, 'S-ACETYL-CYSTEINE'),
    2.52 +"KYQ": ('k', 'p', 'M', None, '(E)-N~6~-(1-CARBOXY-2-HYDROXYETHYLIDENE)-L-LYSINE'),
    2.53 +"CS8": ('n', 'r', None, None, '"3-THIAOCTANOYL-COENZYME'),
    2.54 +"TA4": ('x', 'p', None, None, '"(S)-2-[4-(AMINOMETHYL)-1H-1,2,3-TRIAZOL-1-YL]-4-METHYLPENTANOIC'),
    2.55 +"ALN": ('a', 'p', 'M', None, 'NAPHTHALEN-2-YL-3-ALANINE'),
    2.56 +"GS": ('g', 'd', 'M', None, '"GUANOSINE-5\'-THIO-MONOPHOSPHATE"'),
    2.57 +"2FE": ('n', 'd', None, None, '"2\'-FLUORO-2\'-DEOXY-1,N6-ETHENOADENINE"'),
    2.58 +"VAL": ('V', 'p', None, None, 'VALINE'),
    2.59 +"7DA": ('a', 'd', 'M', None, '"7-DEAZA-2\'-DEOXYADENOSINE-5\'-MONOPHOSPHATE"'),
    2.60 +"XPC": ('x', 'p', None, None, '"(3S,4R)-4-AMINOPYRROLIDINE-3-CARBOXYLIC'),
    2.61 +"VAF": ('v', 'p', 'M', None, 'METHYLVALINE'),
    2.62 +"VAD": ('v', 'p', 'M', None, 'DEAMINOHYDROXYVALINE'),
    2.63 +"BGM": ('g', 'd', 'M', None, '"8-BROMO-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
    2.64 +"P": ('g', 'd', 'M', None, "2'-DEOXY-N1,N2-PROPANO GUANOSINE MONOPHOSPHATE"),
    2.65 +"LHU": ('u', 'r', 'M', None, '"L-URIDINE-5\'-MONOPHOSPHATE"'),
    2.66 +"T48": ('t', 'd', 'M', None, "6'-ALPHA-HYDROXY CARBOCYCLIC THYMIDINE 5'-MONOPHOSPHATE"),
    2.67 +"2GT": ('t', 'd', 'M', None, "2'-O-PROPARGYL THYMIDINE-5'-MONOPHOSPHATE"),
    2.68 +"HMF": ('a', 'p', 'M', None, '"2-AMINO-4-PHENYL-BUTYRIC'),
    2.69 +"BNN": ('a', 'p', 'M', None, 'ACETYL-P-AMIDINOPHENYLALANINE'),
    2.70 +"AHB": ('n', 'p', 'M', None, 'BETA-HYDROXYASPARAGINE'),
    2.71 +"NPH": ('c', 'p', 'M', None, 'CYSTEINE-METHYLENE-CARBAMOYL-1,10-PHENANTHROLINE'),
    2.72 +"SIB": ('c', 'p', 'M', None, '"(2S)-2-AMINO-4-({[(2S,3S,4R,5R)-3,4-DIHYDROXY-5-(6-OXO-1,6-DIHYDRO-9H-PURIN-9-YL)TETRAHYDROFURAN-2-YL]METHYL}THIO)BUTANOIC'),
    2.73 +"SNN": ('n', 'p', 'M', None, 'L-3-AMINOSUCCINIMIDE'),
    2.74 +"AHH": ('x', 'p', None, None, '"AMINO-HYDROXYHEPTANOIC'),
    2.75 +"JW5": ('n', 'r', None, None, "6-(HYDROXYMETHYL)URIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
    2.76 +"PBB": ('c', 'p', 'M', None, 'S-(4-BROMOBENZYL)CYSTEINE'),
    2.77 +"PTR": ('y', 'p', 'M', None, 'O-PHOSPHOTYROSINE'),
    2.78 +"MAA": ('a', 'p', 'M', None, 'N-METHYLALANINE'),
    2.79 +"AHS": ('x', 'p', None, None, '"(3-AMINO-4-CYCLOHEXYL-2-HYDROXY-BUTYL)-ISOBUTYL-CARBAMIC'),
    2.80 +"AHP": ('a', 'p', 'M', None, '"2-AMINO-HEPTANOIC'),
    2.81 +"MAD": ('a', 'r', 'M', None, '"6-HYDRO-1-METHYLADENOSINE-5\'-MONOPHOSPHATE"'),
    2.82 +"AHT": ('x', 'p', None, None, '4-(2,5-DIAMINO-5-HYDROXY-PENTYL)-PHENOL'),
    2.83 +"XYG": ('x', 'p', None, None, '"[(4Z)-2-[(1Z)-ETHANIMIDOYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
    2.84 +"MAI": ('r', 'p', 'M', None, 'DEOXO-METHYLARGININE'),
    2.85 +"CP1": ('c', 'd', 'M', None, '2-(METHYLAMINO)-ETHYLGLYCINE-CARBONYLMETHYLENE-CYTOSINE'),
    2.86 +"G2L": ('g', 'r', 'M', None, '"3\'-O-METHYOXYETHYL-GUANOSINE-5\'-MONOPHOSPHATE"'),
    2.87 +"FFD": ('n', 'd', None, None, '(1R)-1,4-ANHYDRO-2-DEOXY-1-(3-FLUOROPHENYL)-5-O-PHOSPHONO-D-ERYTHRO-PENTITOL'),
    2.88 +"CML": ('c', 'p', 'M', None, '"(2S)-2-{[(2R)-2-AMINO-2-CARBOXYETHYL]SULFANYL}BUTANEDIOIC'),
    2.89 +"CMH": ('c', 'p', 'M', None, 'S-(METHYLMERCURY)-L-CYSTEINE'),
    2.90 +"ZDU": ('n', 'd', None, None, '"5-(3-AMINOPROPYL)-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
    2.91 +"PCS": ('f', 'p', 'M', None, 'PHENYLALANYLMETHYLCHLORIDE'),
    2.92 +"CME": ('c', 'p', 'M', None, 'S,S-(2-HYDROXYETHYL)THIOCYSTEINE'),
    2.93 +"CSO": ('c', 'p', 'M', None, 'S-HYDROXYCYSTEINE'),
    2.94 +"193": ('x', 'p', None, None, '"(2S)-4-(BETA-ALANYLAMINO)-2-AMINOBUTANOIC'),
    2.95 +"1TY": ('y', 'p', 'M', None, '3-{(3E)-4-HYDROXY-6-OXO-3-[(2-PHENYLETHYL)IMINO]CYCLOHEXA-1,4-DIEN-1-YL}ALANINE'),
    2.96 +"CB2": ('c', 'd', 'M', None, '"PHOSPHORIC'),
    2.97 +"CS3": ('c', 'p', 'M', None, 'S-[3-OXO-3-(2-THIENYL)PROPYL]-L-CYSTEINE'),
    2.98 +"64T": ('t', 'd', 'M', None, '"5-HYDROXY-THYMIDINE-5\'-MONOPHOSPHATE"'),
    2.99 +"4AC": ('n', 'r', None, None, '"N(4)-ACETYLCYTIDINE-5\'-MONOPHOSPHATE"'),
   2.100 +"B3X": ('n', 'p', 'M', None, '"(3S)-3,5-DIAMINO-5-OXOPENTANOIC'),
   2.101 +"TST": ('x', 'p', None, None, '"4-METHYL-2-{[4-(TOLUENE-4-SULFONYL)-THIOMORPHOLINE-3-CARBONYL]-AMINO}-PENTANOIC'),
   2.102 +"CMT": ('c', 'p', 'M', None, 'O-METHYLCYSTEINE'),
   2.103 +"CMR": ('c', 'd', 'M', None, '"2\'-DEOXY-CYTIDINE-5\'-RP-MONOMETHYLPHOSPHONATE"'),
   2.104 +"CSH": ('x', 'p', None, None, '"[2-(2-HYDROXY-1-METHYL-ETHYL)-4-(1H-IMIDAZOL-4-YLMETHYL)-5-OXO-IMIDAZOLIDIN-1-YL]-ACETIC'),
   2.105 +"VLM": ('x', 'p', None, None, 'VALINYLAMINE'),
   2.106 +"G": ('G', 'r', None, None, '"GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.107 +"C4S": ('c', 'd', 'M', None, "2'-deoxy-4'-thiocytidine 5'-(dihydrogen phosphate)"),
   2.108 +"U2L": ('u', 'r', 'M', None, "5-METHYL-3'-O-METHOXYETHYL URIDINE-5'-MONOPHOSPHATE"),
   2.109 +"LSO": ('x', 'p', None, None, '(Z)-N~6~-(3-CARBOXY-1-{[(4-CARBOXY-2-OXOBUTYL)SULFONYL]METHYL}PROPYLIDENE)-L-LYSINE'),
   2.110 +"U2N": ('n', 'd', None, None, "2'-AMINO-2'-DEOXYURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
   2.111 +"PLE": ('l', 'p', 'M', None, '"LEUCINE'),
   2.112 +"SIN": ('x', 'p', None, None, '"SUCCINIC'),
   2.113 +"M2L": ('k', 'p', 'M', None, '"(2R)-2-AMINO-3-(2-DIMETHYLAMINOETHYLSULFANYL)PROPANOIC'),
   2.114 +"I58": ('k', 'p', 'M', None, '4R-FLUORO-N6-ETHANIMIDOYL-L-LYSINE'),
   2.115 +"U2P": ('u', 'r', 'M', None, '"PHOSPHORIC'),
   2.116 +"B2A": ('a', 'p', 'M', None, '"ALANINE'),
   2.117 +"TTM": ('t', 'd', 'M', None, '"N3-ETHYL-THYMIDINE-5\'-MONOPHOSPHATE"'),
   2.118 +"CSD": ('c', 'p', 'M', None, '3-SULFINOALANINE'),
   2.119 +"M2G": ('g', 'r', 'M', None, '"N2-DIMETHYLGUANOSINE-5\'-MONOPHOSPHATE"'),
   2.120 +"ASX": ('x', 'p', None, None, '"ASP/ASN'),
   2.121 +"AFF": ('n', 'd', None, None, '2-ACETYLAMINOFLUORENE-3-YL'),
   2.122 +"TTD": ('t', 'd', 'M', None, '"CIS-SYN'),
   2.123 +"AET": ('a', 'r', 'M', None, '"N-[N-(9-B-D-RIBOFURANOSYLPURIN-6-YL)METHYLCARBAMOYL]THREONINE-5\'-MONOPHOSPHATE"'),
   2.124 +"C45": ('c', 'd', 'M', None, '"N4-METHOXY-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.125 +"C46": ('c', 'd', 'M', None, '"6H,8H-3,4-DIHYDROPYRIMIDO[4,5-C][1,2]OXAZIN-7-0NE(CYTIDINE)-5\'-MONOPHOSPHATE"'),
   2.126 +"FTR": ('w', 'p', 'M', None, 'FLUOROTRYPTOPHANE'),
   2.127 +"BLY": ('k', 'p', 'M', None, '"LYSINE'),
   2.128 +"C42": ('c', 'd', 'M', None, '"3\'-AMINO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.129 +"C2S": ('c', 'd', 'M', None, '"CYTIDINE-5\'-DITHIOPHOSPHORATE"'),
   2.130 +"FTY": ('y', 'p', 'M', None, 'DEOXY-DIFLUOROMETHELENE-PHOSPHOTYROSINE'),
   2.131 +"CSA": ('c', 'p', 'M', None, 'S-ACETONYLCYSTEINE'),
   2.132 +"I5C": ('c', 'd', 'M', None, '"5-IODO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.133 +"ALY": ('k', 'p', 'M', None, 'N(6)-ACETYLLYSINE'),
   2.134 +"P1L": ('c', 'p', 'M', None, 'S-PALMITOYL-L-CYSTEINE'),
   2.135 +"C49": ('c', 'd', 'M', None, '"4-THIO,5-FLUORO,5-METHYL-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.136 +"DSP": ('d', 'p', 'M', None, '"D-ASPARTIC'),
   2.137 +"AFA": ('n', 'p', 'M', None, 'N-[7-METHYL-OCT-2,4-DIENOYL]ASPARAGINE'),
   2.138 +"P1P": ('n', 'r', None, None, '3-{[OXIDO(OXO)PHOSPHINO]OXY}PROPAN-1-OLATE'),
   2.139 +"U25": ('u', 'r', 'M', None, '"URIDINE-5\'-MONOPHOSPHATE"'),
   2.140 +"CHS": ('x', 'p', None, None, '"4-AMINO-5-CYCLOHEXYL-3-HYDROXY-PENTANOIC'),
   2.141 +"BLE": ('l', 'p', 'M', None, '"LEUCINE'),
   2.142 +"DSG": ('n', 'p', 'M', None, 'D-ASPARAGINE'),
   2.143 +"DSE": ('s', 'p', 'M', None, 'N-METHYL-D-SERINE'),
   2.144 +"S4A": ('a', 'd', 'M', None, "2'-deoxy-4'-thioadenosine 5'-(dihydrogen phosphate)"),
   2.145 +"DLS": ('k', 'p', 'M', None, 'DI-ACETYL-LYSINE'),
   2.146 +"4SU": ('u', 'r', 'M', None, '"4-THIOURIDINE-5\'-MONOPHOSPHATE"'),
   2.147 +"MA": ('a', 'p', 'M', None, '"METHYL'),
   2.148 +"TRX": ('w', 'p', 'M', None, '6-HYDROXYTRYPTOPHAN'),
   2.149 +"DC": ('C', 'd', None, None, '"2\'-DEOXYCYTIDINE-5\'-MONOPHOSPHATE"'),
   2.150 +"HLU": ('l', 'p', 'M', None, 'BETA-HYDROXYLEUCINE'),
   2.151 +"HSE": ('s', 'p', 'M', None, 'L-HOMOSERINE'),
   2.152 +"A5M": ('c', 'r', 'M', None, '"2\'-AMINE-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.153 +"ALS": ('a', 'p', 'M', None, '"2-AMINO-3-OXO-4-SULFO-BUTYRIC'),
   2.154 +"CBR": ('c', 'd', 'M', None, '"5-BROMO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.155 +"SHC": ('c', 'p', 'M', None, 'S-HEXYLCYSTEINE'),
   2.156 +"B2F": ('f', 'p', 'M', None, '"PHENYLALANINE'),
   2.157 +"QUO": ('g', 'r', 'M', None, '"2-AMINO-7-DEAZA-(2\'\',3\'\'-DIHYDROXY-CYCLOPENTYLAMINO)-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.158 +"X4A": ('n', 'd', None, None, '"[(2R,3S,5S)-2,3,5-TRIHYDROXYTETRAHYDROFURAN-2-YL]METHYL'),
   2.159 +"BE2": ('x', 'p', None, None, '"2-AMINOBENZOIC'),
   2.160 +"CM0": ('n', 'r', None, None, "5-(CARBOXYMETHOXY) URIDINE-5'-MONOPHOSPHATE"),
   2.161 +"GLH": ('q', 'p', 'M', None, 'N-5-CYCLOHEXYL-N-5-[(CYCLOHEXYLAMINO)CARBONYL]GLUTAMINE'),
   2.162 +"DOH": ('d', 'p', 'M', None, '"BETA-HYDROXY'),
   2.163 +"DON": ('l', 'p', 'M', None, '6-DIAZENYL-5-OXO-L-NORLEUCINE'),
   2.164 +"GLM": ('x', 'p', None, None, '1-AMINO-PROPAN-2-ONE'),
   2.165 +"GLN": ('Q', 'p', None, None, 'GLUTAMINE'),
   2.166 +"T4S": ('t', 'd', 'M', None, '1-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-4-HYDROSELENO-5-METHYLPYRIMIDIN-2(1H)-ONE'),
   2.167 +"DOC": ('c', 'd', 'M', None, '"2\',3\'-DIDEOXYCYTIDINE-5\'-MONOPHOSPHATE"'),
   2.168 +"T3P": ('t', 'd', 'M', None, '"THYMIDINE-3\'-PHOSPHATE"'),
   2.169 +"DOA": ('x', 'p', None, None, '"12-AMINO-DODECANOIC'),
   2.170 +"TOX": ('w', 'p', 'M', None, '2-AMINO-3-(1-HYDROPEROXY-1H-INDOL-3-YL)PROPAN-1-OL'),
   2.171 +"SMP": ('a', 'd', 'M', None, '"2\'-DEOXY-ADENOSINE-5\'-SP-MONOMETHYLPHOSPHONATE"'),
   2.172 +"GLX": ('x', 'p', None, None, '"GLU/GLN'),
   2.173 +"GLY": ('G', 'p', None, None, 'GLYCINE'),
   2.174 +"GLZ": ('g', 'p', 'M', None, 'AMINO-ACETALDEHYDE'),
   2.175 +"CTG": ('t', 'd', 'M', None, '"(5R,6S)-5,6-DIHYDRO-5,6-DIHYDROXYTHYMIDINE-5\'-MONOPHOSPHATE"'),
   2.176 +"T38": ('n', 'r', None, None, "2'-O-ETHOXYMETHYLENE THYMIDINE 5'-MONOPHOSPHATE"),
   2.177 +"AKL": ('d', 'p', 'M', None, '"3-AMINO-5-CHLORO-4-OXOPENTANOIC'),
   2.178 +"T36": ('t', 'd', 'M', None, "SPLIT LINKAGE THYMIDINE 5'-MONOPHOSPHATE"),
   2.179 +"T37": ('t', 'd', 'M', None, "3'-AMINO-2'DEOXYTHYMIDINE 5'-MONOPHOSPHATE"),
   2.180 +"4TA": ('n', 'r', None, None, '"P1-(5\'-ADENOSYL)P4-(5\'-(2\'-DEOXY-THYMIDYL))TETRAPHOSPHATE"'),
   2.181 +"CTH": ('t', 'p', 'M', None, '4-CHLOROTHREONINE'),
   2.182 +"GLU": ('E', 'p', None, None, '"GLUTAMIC'),
   2.183 +"RCY": ('c', 'p', 'M', None, '"S-[(3S,3\'R)-1\'-HYDROXY-2\',2\',5\',5\'-TETRAMETHYL-2,5-DIOXO-1,3\'-BIPYRROLIDIN-3-YL]-L-CYSTEINE"'),
   2.184 +"MDH": ('x', 'p', None, None, 'N-METHYLDEHYDROBUTYRINE'),
   2.185 +"MDO": ('x', 'p', None, None, '"{2-[(1S)-1-AMINOETHYL]-5-HYDROXY-4-METHYL-1H-IMIDAZOL-1-YL}ACETIC'),
   2.186 +"8OG": ('g', 'd', 'M', None, '"8-OXO-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.187 +"HCS": ('x', 'p', None, None, '"2-AMINO-4-MERCAPTO-BUTYRIC'),
   2.188 +"UD5": ('u', 'r', 'M', None, '5-FLUOROURIDINE'),
   2.189 +"O2C": ('n', 'd', None, None, '"3\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.190 +"5FU": ('u', 'r', 'M', None, '"5-FLUORO-URIDINE-5\'-MONOPHOSPHATE"'),
   2.191 +"SDG": ('g', 'd', 'M', None, '2-AMINO-9-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-9H-PURINE-6-SELENOL'),
   2.192 +"MDR": ('n', 'd', None, None, '9-(2-DEOXY-BETA-D-RIBOFURANOSYL)-6-METHYLPURINE'),
   2.193 +"BSE": ('s', 'p', 'M', None, 'BETA-3-SERINE'),
   2.194 +"4IN": ('x', 'p', None, None, '4-AMINO-L-TRYPTOPHAN'),
   2.195 +"FCL": ('f', 'p', 'M', None, '3-CHLORO-L-PHENYLALANINE'),
   2.196 +"1SC": ('c', 'r', 'M', None, '"5\'-O-THIOPHOSPHONOCYTIDINE"'),
   2.197 +"R7A": ('c', 'p', 'M', None, '3-S-[(4-BROMO-2,2,5,5-TETRAMETHYL-1-OXO-2,5-DIHYDRO-1H-PYRROL-3-YL)METHYL]SULFANYL-L-CYSTEINE'),
   2.198 +"6IA": ('a', 'r', 'M', None, '"N6-ISOPENTENYL-ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.199 +"XTS": ('g', 'r', 'M', None, '9-[(2R,3R,4S,5R)-3,4-DIHYDROXY-5-(HYDROXYMETHYL)OXOLAN-2-YL]-3H-PURINE-2,6-DIONE'),
   2.200 +"DFT": ('n', 'd', None, None, '"1-[2-DEOXYRIBOFURANOSYL]-2,4-DIFLUORO-5-METHYL-BENZENE-5\'MONOPHOSPHATE"'),
   2.201 +"FMU": ('n', 'r', None, None, '"5-FLUORO-5-METHYLURIDINE-5\'-MONOPHOSPHATE"'),
   2.202 +"XTY": ('n', 'd', None, None, '(1R)-1,4-ANHYDRO-2-DEOXY-1-(6-METHYL-2,4-DIOXO-1,2,3,4-TETRAHYDROQUINAZOLIN-8-YL)-5-O-PHOSPHONO-D-ERYTHRO-PENTITOL'),
   2.203 +"MVA": ('v', 'p', 'M', None, 'N-METHYLVALINE'),
   2.204 +"LTA": ('x', 'p', None, None, '"4,8-DIAMINO-3-HYDROXY-OCTANOIC'),
   2.205 +"01W": ('x', 'p', None, None, '(2S)-2-AMMONIO-4-[(2,4-DINITROPHENYL)AMINO]BUTANOATE'),
   2.206 +"DFI": ('x', 'p', None, None, '2,2-DIFLUOROSTATINE'),
   2.207 +"YG": ('g', 'r', 'M', None, 'WYBUTOSINE'),
   2.208 +"FMG": ('g', 'd', 'M', None, '2-AMINO-9-(2-DEOXY-2-FLUORO-5-O-PHOSPHONO-BETA-D-ARABINOFURANOSYL)-7-METHYL-6-OXO-6,9-DIHYDRO-1H-PURIN-7-IUM'),
   2.209 +"DFG": ('g', 'd', 'M', None, "2'-DEOXY-L-RIBO-FURANOSYL GUANINE-5'-MONOPHOSPHATE"),
   2.210 +"XTL": ('t', 'd', 'M', None, '"[(1S,4R,6R)-6-HYDROXY-4-(THYMIN-9-YL)CYCLOHEX-2-EN-1-YL]METHYL'),
   2.211 +"DFC": ('c', 'd', 'M', None, "2'-DEOXY-L-RIBO-FURANOSYL CYTOSINE-5'-MONOPHOSPHATE"),
   2.212 +"XTH": ('t', 'd', 'M', None, '1-(2,3-DIDEOXY-6-O-PHOSPHONO-BETA-D-ERYTHRO-HEXOPYRANOSYL)-5-METHYLPYRIMIDINE-2,4(1H,3H)-DIONE'),
   2.213 +"NTY": ('y', 'p', 'M', None, '"BETA'),
   2.214 +"EDC": ('g', 'd', 'M', None, '"N3,N4-ETHENO-2\'-DEOXYCYTIDINE-5\'-MONOPHOSPHATE"'),
   2.215 +"T49": ('t', 'd', 'M', None, "S4'-2'DEOXYTHYMIDINE 5'-MONOPHOSPHATE"),
   2.216 +"EDA": ('a', 'd', 'M', None, '"3-[2-DEOXY-RIBOFURANOSYL]-3H-1,3,4,5A,8-PENTAAZA-AS-INDACENE-5\'-MONOPHOSPHATE"'),
   2.217 +"O12": ('x', 'p', None, None, 'N~5~-DODECANOYL-L-ORNITHINE'),
   2.218 +"MMT": ('t', 'd', 'M', None, '"5\'-O-(DIMETHYLAMINO)-THYMIDINE"'),
   2.219 +"T41": ('n', 'r', None, None, "1-(2-O-METHYL-BETA-D-ARABINOFURANOSYL)THYMIDINE 5'-MONOPHOSPHATE"),
   2.220 +"LMS": ('n', 'r', None, None, '"[(2R,3S,4R,5R)-5-(6-AMINO-9H-PURIN-9-YL)-3,4-DIHYDROXYTETRAHYDRO-2-FURANYL]METHYL'),
   2.221 +"0AP": ('c', 'd', 'M', None, "2'-deoxycytidine 3',5'-bis(dihydrogen phosphate)"),
   2.222 +"ORQ": ('r', 'p', 'M', None, 'N~5~-ACETYL-L-ORNITHINE'),
   2.223 +"ORN": ('a', 'p', 'M', None, 'ORNITHINE'),
   2.224 +"ALM": ('a', 'p', 'M', None, '1-METHYL-ALANINAL'),
   2.225 +"VB1": ('k', 'p', 'M', None, 'N^6^-[(1R)-2-{[(1S)-1-CARBOXYPROPYL]AMINO}-2-OXO-1-(SULFANYLMETHYL)ETHYL]-6-OXO-L-LYSINE'),
   2.226 +"PUY": ('n', 'r', None, None, 'PUROMYCIN'),
   2.227 +"SBD": ('s', 'p', 'M', None, '"D-NAPHTHYL-1-ACETAMIDO'),
   2.228 +"LPS": ('s', 'p', 'M', None, 'O-{HYDROXY[((2R)-2-HYDROXY-3-{[(1S)-1-HYDROXYPENTADECYL]OXY}PROPYL)OXY]PHOSPHORYL}-L-SERINE'),
   2.229 +"SC": ('c', 'd', 'M', None, '"2-DEOXY-CYTIDINE-5\'-THIOPHOSPHORATE"'),
   2.230 +"ALT": ('a', 'p', 'M', None, 'THIOALANINE'),
   2.231 +"GL3": ('g', 'p', 'M', None, 'THIOGLYCIN'),
   2.232 +"LME": ('e', 'p', 'M', None, '"(3R)-3-METHYL-L-GLUTAMIC'),
   2.233 +"SBL": ('s', 'p', 'M', None, '"L-NAPHTHYL-1-ACETAMIDO'),
   2.234 +"ALQ": ('x', 'p', None, None, '"2-METHYL-PROPIONIC'),
   2.235 +"CAB": ('a', 'p', 'M', None, '4-CARBOXY-4-AMINOBUTANAL'),
   2.236 +"GPL": ('k', 'p', 'M', None, "LYSINE GUANOSINE-5'-MONOPHOSPHATE"),
   2.237 +"CAY": ('c', 'p', 'M', None, 'CARBOXYMETHYLENECYSTEINE'),
   2.238 +"DPR": ('p', 'p', 'M', None, 'D-PROLINE'),
   2.239 +"DPQ": ('y', 'p', 'M', None, '"(S)-2-AMINO-3-(4-HYDROXY-3-OXOCYCLOHEXA-1,4-DIENYL)PROPANOIC'),
   2.240 +"DPP": ('a', 'p', 'M', None, '"DIAMMINOPROPANOIC'),
   2.241 +"CAS": ('c', 'p', 'M', None, 'S-(DIMETHYLARSENIC)CYSTEINE'),
   2.242 +"NC1": ('s', 'p', 'M', None, '"NITROCEFIN'),
   2.243 +"IYR": ('y', 'p', 'M', None, '3-IODO-TYROSINE'),
   2.244 +"CAV": ('x', 'p', None, None, '"5-AMINO-6-CYCLOHEXYL-3,4-DIHYDROXY-2-ISOPROPYL-HEXANOIC'),
   2.245 +"DPY": ('n', 'd', None, None, "2-DEOXYRIBOFURANOSYL-PYRIDINE-2,6-DICARBOXYLIC ACID-5'-MONOPHOSPHATE"),
   2.246 +"5AA": ('a', 'd', 'M', None, '"N6-DIMETHYL-3\'-AMINO-ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.247 +"DPB": ('t', 'd', 'M', None, '"(S)-1-[2\'-DEOXY-3\',5\'-O-(1-PHOSPHONO)BENZYLIDENE-B-D-THREO-PENTOFURANOSYL]THYMINE"'),
   2.248 +"CAL": ('x', 'p', None, None, '"5-AMINO-6-CYCLOHEXYL-4-HYDROXY-2-ISOBUTYL-HEXANOIC'),
   2.249 +"DPN": ('f', 'p', 'M', None, 'D-PHENYLALANINE'),
   2.250 +"BAL": ('a', 'p', 'M', None, 'BETA-ALANINE'),
   2.251 +"DPL": ('p', 'p', 'M', None, '4-OXOPROLINE'),
   2.252 +"CAF": ('c', 'p', 'M', None, 'S-DIMETHYLARSINOYL-CYSTEINE'),
   2.253 +"DPH": ('f', 'p', 'M', None, 'DEAMINO-METHYL-PHENYLALANINE'),
   2.254 +"HIP": ('h', 'p', 'M', None, 'ND1-PHOSPHONOHISTIDINE'),
   2.255 +"LG": ('g', 'r', 'M', None, '"L-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.256 +"LA2": ('k', 'p', 'M', None, 'N~6~-[(6R)-6,8-DISULFANYLOCTANOYL]-L-LYSINE'),
   2.257 +"KOR": ('m', 'p', 'M', None, 'L-HOMOCYSTEINE-S-N-S-L-CYSTEINE'),
   2.258 +"LC": ('c', 'r', 'M', None, '"L-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.259 +"D4M": ('t', 'd', 'M', None, '"[(5R)-5-(5-METHYL-2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)-2,5-DIHYDROFURAN-2-YL]METHYL'),
   2.260 +"5MD": ('n', 'd', None, None, '"5-METHYL-2\'-DEOXYPSEUDOURIDINE"'),
   2.261 +"PGN": ('g', 'd', 'M', None, '"2\'-DEOXYGUANOSINE-3\',5\'-DIPHOSPHATE"'),
   2.262 +"NHL": ('e', 'p', 'M', None, '"(4S)-4-(2-NAPHTHYLMETHYL)-D-GLUTAMIC'),
   2.263 +"PGL": ('x', 'p', None, None, '"AMINOMETHYLENEPHOSPHINIC'),
   2.264 +"TA3": ('t', 'd', 'M', None, '(4S,5R)-3-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-5-METHYL-1,3-DIAZABICYCLO[2.2.0]HEXAN-2-ONE'),
   2.265 +"XCP": ('x', 'p', None, None, '"(1S,2S)-2-AMINOCYCLOPENTANECARBOXYLIC'),
   2.266 +"DYS": ('c', 'p', 'M', None, 'S-[5-(2-AMINOETHYL)-2,3-DIHYDROXYPHENYL]-L-CYSTEINE'),
   2.267 +"HIA": ('h', 'p', 'M', None, '"L-HISTIDINE'),
   2.268 +"HIC": ('h', 'p', 'M', None, '4-METHYL-HISTIDINE'),
   2.269 +"PGP": ('g', 'r', 'M', None, '"GUANOSINE-3\',5\'-DIPHOSPHATE"'),
   2.270 +"AB7": ('x', 'p', None, None, '"ALPHA-AMINOBUTYRIC'),
   2.271 +"IIL": ('i', 'p', 'M', None, 'ISO-ISOLEUCINE'),
   2.272 +"DYG": ('x', 'p', None, None, '"(3S)-3-AMINO-3-[(4Z)-1-(CARBOXYMETHYL)-4-[(4-HYDROXYPHENYL)METHYLIDENE]-5-OXO-IMIDAZOL-2-YL]PROPANOIC'),
   2.273 +"PGY": ('g', 'p', 'M', None, 'PHENYLGLYCINE'),
   2.274 +"A": ('A', 'r', None, None, '"ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.275 +"23F": ('f', 'p', 'M', None, '"(2Z)-2-AMINO-3-PHENYLACRYLIC'),
   2.276 +"143": ('c', 'p', 'M', None, 'S-2,3-DIHYDRO-5-GLYCIN-2-YL-ISOXAZOL-3-YL-CYSTEINE'),
   2.277 +"HIQ": ('h', 'p', 'M', None, '1-[1,2-DIHYDROXY-1-(HYDROXYMETHYL)ETHYL]-L-HISTIDINE'),
   2.278 +"THR": ('T', 'p', None, None, 'THREONINE'),
   2.279 +"PG7": ('g', 'd', 'M', None, '"((2R,3R,5R)-5-(2-AMINO-6-HYDROXY-9H-PURIN-9-YL)-3-HYDROXY-TETRAHYDROFURAN-2-YL)METHYL'),
   2.280 +"ABR": ('a', 'd', 'M', None, '"(R)-(N-PHENYL-2-HYDROXY-ETHYL)-2\'-DEOXY-ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.281 +"HIS": ('H', 'p', None, None, 'HISTIDINE'),
   2.282 +"ABT": ('n', 'd', None, None, "3'-AZIDO-3'-DEOXY-THYMIDINE-5'-ALPHA BORANO TRIPHOSPHATE"),
   2.283 +"PG1": ('s', 'p', 'M', None, '"PENICILLIN'),
   2.284 +"2LU": ('l', 'p', 'M', None, '"2-AMINO-4-METHYL-PENTANYL'),
   2.285 +"NZH": ('h', 'p', 'M', None, '(2S)-2-AMINO-3-[1-(1H-TETRAAZOL-5-YL)-1H-IMIDAZOL-4-YL]PROPANAL'),
   2.286 +"P5P": ('a', 'r', 'M', None, "PURINE RIBOSIDE-5'-MONOPHOSPHATE"),
   2.287 +"STY": ('y', 'p', 'M', None, '"TYROSINE-O-SULPHONIC'),
   2.288 +"PG9": ('g', 'p', 'M', None, 'D-PHENYLGLYCINE'),
   2.289 +"NCX": ('n', 'd', None, None, '1-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-5-NITRO-1H-INDOLE-3-CARBOXAMIDE'),
   2.290 +"NCY": ('x', 'p', None, None, 'N-METHYLCYSTEINE'),
   2.291 +"CFL": ('c', 'd', 'M', None, '4-AMINO-1-(2-DEOXY-2-FLUORO-5-O-PHOSPHONO-BETA-D-ARABINOFURANOSYL)PYRIMIDIN-2(1H)-ONE'),
   2.292 +"3MD": ('d', 'p', 'M', None, '"2S,3S-3-METHYLASPARTIC'),
   2.293 +"1AP": ('a', 'd', 'M', None, '"2,6-DIAMINOPURINE'),
   2.294 +"TFE": ('t', 'd', 'M', None, "2'-O-[2-(TRIFLUORO)ETHYL] THYMIDINE-5'-MONOPHOSPHATE"),
   2.295 +"D3T": ('t', 'd', 'M', None, '"2\',3\'-DIDEOXY-THYMIDINE-5\'-TRIPHOSPHATE"'),
   2.296 +"TFA": ('x', 'p', None, None, '"TRIFLUOROACETYL'),
   2.297 +"BHD": ('d', 'p', 'M', None, '"BETA-HYDROXYASPARTIC'),
   2.298 +"ONL": ('x', 'p', None, None, '5-OXO-L-NORLEUCINE'),
   2.299 +"CFY": ('x', 'p', None, None, '"[(2S)-2-{(2R)-2-[(1S)-1-AMINO-2-PHENYLETHYL]-2-HYDROXY-2,5-DIHYDRO-1,3-THIAZOL-4-YL}-4-(4-HYDROXYBENZYL)-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   2.300 +"QLG": ('x', 'p', None, None, '"[(4Z)-2-[(1Z)-4-AMINO-4-OXOBUTANIMIDOYL]-4-(2-METHYLPROPYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   2.301 +"NCB": ('a', 'p', 'M', None, 'N-CARBAMOYL-ALANINE'),
   2.302 +"TFQ": ('f', 'p', 'M', None, '4-(2,2,2-TRIFLUOROETHYL)-L-PHENYLALANINE'),
   2.303 +"XXY": ('x', 'p', None, None, '2-[(1R,2R)-1-AMINO-2-HYDROXYPROPYL]-1-(CARBOXYMETHYL)-4-(1H-IMIDAZOL-5-YLMETHYL)-1H-IMIDAZOL-5-OLATE'),
   2.304 +"23S": ('x', 'p', None, None, '"(S)-2-AMINO-3-(6H-SELENOLO[2,3-B]-PYRROL-4-YL)-PROPIONIC'),
   2.305 +"0AU": ('n', 'd', None, None, "5-iodouridine 5'-(dihydrogen phosphate)"),
   2.306 +"GHP": ('g', 'p', 'M', None, '4-HYDROXYPHENYLGLYCINE'),
   2.307 +"MIA": ('a', 'r', 'M', None, '"2-METHYLTHIO-N6-ISOPENTENYL-ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.308 +"AP7": ('a', 'd', 'M', None, "N1-PROTONATED ADENOSINE-5'-MONOPHOSPHATE"),
   2.309 +"OAD": ('n', 'r', None, None, "2'-O-ACETYL ADENOSINE-5-DIPHOSPHORIBOSE"),
   2.310 +"UDP": ('n', 'r', None, None, '"URIDINE-5\'-DIPHOSPHATE"'),
   2.311 +"GHG": ('q', 'p', 'M', None, 'GAMMA-HYDROXY-GLUTAMINE'),
   2.312 +"ZFB": ('x', 'p', None, None, '(3R)-3-{[(BENZYLOXY)CARBONYL]AMINO}-2-OXO-4-PHENYLBUTANE-1-DIAZONIUM'),
   2.313 +"C38": ('c', 'd', 'M', None, '"5-IODO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.314 +"HAQ": ('x', 'p', None, None, '"5-AMINO-4-OXO-1,2,4,5,6,7-HEXAHYDRO-AZEPINO[3,2,1-HI]INDOLE-2-CARBOXYLIC'),
   2.315 +"C34": ('c', 'd', 'M', None, '"N4-METHYL-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.316 +"C37": ('c', 'd', 'M', None, '"5-FLUORO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.317 +"ONE": ('u', 'r', 'M', None, '"1-(BETA-D-RIBOFURANOSYL)-PYRIDIN-4-ONE-5\'-PHOSPHATE"'),
   2.318 +"C31": ('c', 'r', 'M', None, "2'-O-3-AMINOPROPYL CYTIDINE-5'-MONOPHOSPHATE"),
   2.319 +"HAR": ('r', 'p', 'M', None, 'N-OMEGA-HYDROXY-L-ARGININE'),
   2.320 +"TY2": ('y', 'p', 'M', None, '3-AMINO-L-TYROSINE'),
   2.321 +"TY3": ('y', 'p', 'M', None, '3-HYDROXY-L-TYROSINE'),
   2.322 +"RT": ('n', 'r', None, None, '"RIBOSYLTHYMINE-5\'-MONOPHOSPHATE"'),
   2.323 +"4PE": ('c', 'd', 'M', None, '3-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-6-METHYL-3H-PYRROLO[2,3-D]PYRIMIDIN-2-OL'),
   2.324 +"4PD": ('c', 'd', 'M', None, '3-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-6-METHYL-1,3-DIHYDRO-2H-PYRROLO[2,3-D]PYRIMIDIN-2-ONE'),
   2.325 +"4PC": ('c', 'd', 'M', None, '"3-(2\'-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-6-METHYL-3,7-DIHYDRO-2H-PYRROLO[2,3-D]PYRIMIDIN-2-ONE"'),
   2.326 +"SAC": ('s', 'p', 'M', None, 'N-ACETYL-SERINE'),
   2.327 +"PRO": ('P', 'p', None, None, 'PROLINE'),
   2.328 +"PRN": ('a', 'd', 'M', None, "PURINE 2'-DEOXYRIBO-5'-MONOPHOSPHATE"),
   2.329 +"6CL": ('k', 'p', 'M', None, '6-CARBOXYLYSINE'),
   2.330 +"4PH": ('f', 'p', 'M', None, '4-METHYL-L-PHENYLALANINE'),
   2.331 +"FGL": ('g', 'p', 'M', None, '"2-AMINOPROPANEDIOIC'),
   2.332 +"6CT": ('t', 'd', 'M', None, '"PHOSPHORIC'),
   2.333 +"IAS": ('d', 'p', 'M', None, '"BETA-ASPARTYL'),
   2.334 +"PRS": ('p', 'p', 'M', None, 'THIOPROLINE'),
   2.335 +"UR3": ('u', 'r', 'M', None, '"3-METHYLURIDINE-5\'-MONOPHOSHATE"'),
   2.336 +"SAR": ('g', 'p', 'M', None, 'SARCOSINE'),
   2.337 +"TCY": ('a', 'd', 'M', None, '"(2R,3AS,4AR,5AR,5BS)-2-(6-AMINO-9H-PURIN-9-YL)-3A-HYDROXYHEXAHYDROCYCLOPROPA[4,5]CYCLOPENTA[1,2-B]FURAN-5A(4H)-YL'),
   2.338 +"4F3": ('x', 'p', None, None, '"[2-(1-AMINO-2-HYDROXY-PROPYL)-4-(4-FLUORO-1H-INDOL-3-YLMETHYL)-5-HYDROXY-IMIDAZOL-1-YL]-ACETIC'),
   2.339 +"TPG": ('g', 'r', 'M', None, '"2,2,7-TRIMETHYL-GUANOSINE-5\'-TRIPHOSPHATE-5\'-GUANOSINE"'),
   2.340 +"LAL": ('a', 'p', 'M', None, 'N,N-DIMETHYL-L-ALANINE'),
   2.341 +"TPC": ('c', 'd', 'M', None, "5'-THIO-2'-DEOXY-CYTOSINE PHOSPHONIC ACID"),
   2.342 +"PPU": ('a', 'r', 'M', None, '"PUROMYCIN-5\'-MONOPHOSPHATE"'),
   2.343 +"CHF": ('x', 'p', None, None, 'CYCLOHEXYLFLUOROSTATONE'),
   2.344 +"BFD": ('d', 'p', 'M', None, '"ASPARTATE'),
   2.345 +"TPO": ('t', 'p', 'M', None, 'PHOSPHOTHREONINE'),
   2.346 +"H5M": ('p', 'p', 'M', None, 'TRANS-3-HYDROXY-5-METHYLPROLINE'),
   2.347 +"AYG": ('x', 'p', None, None, '"[(4E)-2-[(1S)-1-AMINOETHYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   2.348 +"TPL": ('w', 'p', 'M', None, 'TRYPTOPHANOL'),
   2.349 +"AYA": ('a', 'p', 'M', None, 'N-ACETYLALANINE'),
   2.350 +"6MC": ('a', 'r', 'M', None, '"CIS-N6-METHYL-DEOXY-ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.351 +"6MA": ('a', 'r', 'M', None, '"N6-METHYL-DEOXY-ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.352 +"GSR": ('g', 'd', 'M', None, "2'-DEOXY-N2-(R)STYRENE OXIDE GUANOSINE MONOPHOSPHATE"),
   2.353 +"EYS": ('x', 'p', None, None, 'S-SELANYLCYSTEINAL'),
   2.354 +"LPL": ('x', 'p', None, None, 'LEU-HYDROXYETHYLENE-LEU'),
   2.355 +"6MZ": ('n', 'r', None, None, '"N6-METHYLADENOSINE-5\'-MONOPHOSPHATE"'),
   2.356 +"PR3": ('c', 'p', 'M', None, 'S,S-PROPYLTHIOCYSTEINE'),
   2.357 +"2ST": ('t', 'd', 'M', None, "5-METHYL-2'-SE-METHYL-2'-SELENOURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
   2.358 +"0NC": ('a', 'p', 'M', None, 'N-METHYL-L-ALANINAMIDE'),
   2.359 +"MRG": ('g', 'd', 'M', None, '"N2-(3-MERCAPTOPROPYL)-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
   2.360 +"KYN": ('a', 'p', 'M', None, 'KYNURENINE'),
   2.361 +"G2S": ('g', 'd', 'M', None, '"GUANOSINE-5\'-DITHIOPHOSPHORATE"'),
   2.362 +"PYX": ('c', 'p', 'M', None, 'S-[S-THIOPYRIDOXAMINYL]CYSTEINE'),
   2.363 +"PYY": ('n', 'r', None, None, '"D-RIBOFURANOSYL-BENZENE-5\'-MONOPHOSPHATE"'),
   2.364 +"TYN": ('y', 'p', 'M', None, 'AMINOBENZOFURAZAN-O-TYROSINE'),
   2.365 +"TYO": ('y', 'p', 'M', None, '"(4Z,6E)-2-AMINO-7-HYDROPEROXY-4-[(E)-2-HYDROXYVINYL]HEPTA-4,6-DIENOIC'),
   2.366 +"KAG": ('g', 'r', 'M', None, "2'-DEOXY-N-[(1S)-1-METHYL-3-OXOPROPYL]GUANOSINE 5'-PHOSPHATE"),
   2.367 +"IPG": ('g', 'p', 'M', None, '"N-ISOPROPYL'),
   2.368 +"GH3": ('g', 'r', 'M', None, '"3\'-DEOXY-GUANOSINE-5\'-TRIPHOSPHATE"'),
   2.369 +"APP": ('x', 'p', None, None, '1-ACETYL-2-CARBOXYPIPERIDINE'),
   2.370 +"IPN": ('n', 'd', None, None, '2-AMINOETHYLGLYCINE-CARBONYLMETHYLENE-5-IODOURACIL'),
   2.371 +"TYB": ('y', 'p', 'M', None, 'TYROSINAL'),
   2.372 +"FAG": ('n', 'd', None, None, "[1',2'-DIDEOXY[2-AMINO-5-([9-HYDROXY-AFLATOXINB2-8-YL]-FORMYL-AMINO)-6-OXO-1,6-IHYDRO-PYRIMIDIN-4-YLAMINO]-RIBOFURANOSE]-5-MONOPHOSPHATE GROUP"),
   2.373 +"DBY": ('y', 'p', 'M', None, '"3,5'),
   2.374 +"APK": ('k', 'p', 'M', None, '"5\'-O-[(S)-{[(5S)-5-AMINO-6-OXOHEXYL]AMINO}(HYDROXY)PHOSPHORYL]ADENOSINE"'),
   2.375 +"APH": ('a', 'p', 'M', None, 'P-AMIDINOPHENYL-3-ALANINE'),
   2.376 +"API": ('k', 'p', 'M', None, '"2,6-DIAMINOPIMELIC'),
   2.377 +"TYX": ('x', 'p', None, None, 'S-(2-ANILINO-2-OXOETHYL)-L-CYSTEINE'),
   2.378 +"APO": ('x', 'p', None, None, '"D-2-AMINO-3-PHOSPHONO-PROPIONIC'),
   2.379 +"APM": ('x', 'p', None, None, 'M-AMIDINOPHENYL-3-ALANINE'),
   2.380 +"TYT": ('y', 'p', 'M', None, '"TYROSINE'),
   2.381 +"TYU": ('n', 'r', None, None, 'TETRAHYDROURIDINE'),
   2.382 +"DBS": ('s', 'p', 'M', None, '"2-(2,3-DIHYDROXY-BENZOYLAMINO)-3-HYDROXY-PROPIONIC'),
   2.383 +"DBU": ('a', 'p', 'M', None, '"(2E)-2-AMINOBUT-2-ENOIC'),
   2.384 +"TYQ": ('y', 'p', 'M', None, '3-AMINO-6-HYDROXY-TYROSINE'),
   2.385 +"TYR": ('Y', 'p', None, None, 'TYROSINE'),
   2.386 +"APE": ('x', 'p', None, None, '"(1-AMINO-2-PHENYL-ETHYL)-CARBAMIC'),
   2.387 +"BT5": ('n', 'r', None, None, 'BIOTINYL-5-AMP'),
   2.388 +"KST": ('k', 'p', 'M', None, 'N~6~-(5-CARBOXY-3-THIENYL)-L-LYSINE'),
   2.389 +"2AD": ('x', 'p', None, None, '"2\'-AMINO-2\'-DEOXYADENOSINE"'),
   2.390 +"ARG": ('R', 'p', None, None, 'ARGININE'),
   2.391 +"HDP": ('n', 'd', None, None, '"[(1S,6S)-6-HYDROXY-4-(5-METHYL-2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)CYCLOHEX-2-EN-1-YL]METHYL'),
   2.392 +"CZ2": ('c', 'p', 'M', None, 'S-(DIHYDROXYARSINO)CYSTEINE'),
   2.393 +"2AO": ('x', 'p', None, None, '(2S)-2-AMINOHEXAN-1-OL'),
   2.394 +"G33": ('g', 'd', 'M', None, "8-METHYL-2'-DEOXYGUANOSINE 3'-MONOPHOSPHATE"),
   2.395 +"AHO": ('a', 'p', 'M', None, 'N-ACETYL-N-HYDROXY-L-ORNITHINE'),
   2.396 +"P2U": ('n', 'd', None, None, '"2\'-DEOXY-PSEUDOURIDINE-5\'MONOPHOSPHATE"'),
   2.397 +"P2T": ('t', 'd', 'M', None, "2'-O-PROPYL THYMIDINE-5-MONOPHOSPHATE"),
   2.398 +"MG1": ('g', 'd', 'M', None, "2'-DEOXY-1-METHYLGUANOSINE 5'-(DIHYDROGEN PHOSPHATE)"),
   2.399 +"G32": ('g', 'd', 'M', None, '"O6-METHYL-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.400 +"2AR": ('a', 'd', 'M', None, '"2\'-DEOXYARISTEROMYCIN-5\'-PHOSPHATE"'),
   2.401 +"2AS": ('x', 'p', None, None, '"(2S,3S)-3-AMINO-2-METHYL-4-OXOBUTANOIC'),
   2.402 +"G46": ('g', 'r', 'M', None, '"2\'-DEOXY-GUANOSINE-5\'-MONOTHIOPHOSPHATE"'),
   2.403 +"G47": ('g', 'd', 'M', None, '"N2-ETHANETHIOL-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.404 +"G48": ('g', 'r', 'M', None, '"2\'-O-METHYOXYETHYL-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.405 +"G49": ('g', 'd', 'M', None, '"N2-METHYL-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.406 +"OCS": ('c', 'p', 'M', None, '"CYSTEINESULFONIC'),
   2.407 +"P2Y": ('p', 'p', 'M', None, '(2S)-PYRROLIDIN-2-YLMETHYLAMINE'),
   2.408 +"PHA": ('f', 'p', 'M', None, 'PHENYLALANINAL'),
   2.409 +"NLQ": ('q', 'p', 'M', None, 'N~2~-ACETYL-L-GLUTAMINE'),
   2.410 +"NLP": ('l', 'p', 'M', None, '"(1-AMINO-PENTYL)-PHOSPHONIC'),
   2.411 +"MLL": ('l', 'p', 'M', None, '"METHYL'),
   2.412 +"CEA": ('c', 'p', 'M', None, 'S-HYDROXY-CYSTEINE'),
   2.413 +"HV5": ('a', 'p', 'M', None, 'TERT-BUTYLALANINE'),
   2.414 +"HMR": ('r', 'p', 'M', None, 'BETA-HOMOARGININE'),
   2.415 +"HRG": ('r', 'p', 'M', None, 'L-HOMOARGININE'),
   2.416 +"CSP": ('c', 'p', 'M', None, 'S-PHOSPHOCYSTEINE'),
   2.417 +"FA2": ('a', 'd', 'M', None, '"5-(6-AMINO-9H-PURIN-9-YL)-4-HYDROXYTETRAHYDROFURAN-3-YL'),
   2.418 +"BMP": ('n', 'r', None, None, '"6-HYDROXYURIDINE-5\'-PHOSPHATE"'),
   2.419 +"NLE": ('l', 'p', 'M', None, 'NORLEUCINE'),
   2.420 +"RTP": ('n', 'r', None, None, '"RIBAVIRIN'),
   2.421 +"BMT": ('t', 'p', 'M', None, '4-METHYL-4-[(E)-2-BUTENYL]-4,N-METHYL-THREONINE'),
   2.422 +"G38": ('g', 'd', 'M', None, '"3\'-AMINO-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.423 +"CS4": ('c', 'p', 'M', None, 'S-[3-(3,4-DICHLOROPHENYL)-3-OXOPROPYL]-L-CYSTEINE'),
   2.424 +"2FI": ('n', 'd', None, None, '"2\'-FLUORO-2\'-DEOXYINOSINE"'),
   2.425 +"TTS": ('y', 'p', 'M', None, '3-((3E)-4-HYDROXY-3-{[2-(4-HYDROXYPHENYL)ETHYL]IMINO}-6-OXOCYCLOHEXA-1,4-DIEN-1-YL)ALANINE'),
   2.426 +"CS1": ('c', 'p', 'M', None, 'S-(2-ANILINYL-SULFANYL)-CYSTEINE'),
   2.427 +"CS0": ('c', 'p', 'M', None, 'S-(2-HYDROXYETHYL)-L-CYSTEINE'),
   2.428 +"NLO": ('l', 'p', 'M', None, 'O-METHYL-L-NORLEUCINE'),
   2.429 +"NLN": ('l', 'p', 'M', None, '"NORLEUCINE'),
   2.430 +"SHP": ('g', 'p', 'M', None, '(4-HYDROXYMALTOSEPHENYL)GLYCINE'),
   2.431 +"CSL": ('c', 'd', 'M', None, '"(D)-2\'-METHYLSELENYL-2\'-DEOXYCYTIDINE-5\'-PHOSPHATE"'),
   2.432 +"SHR": ('k', 'p', 'M', None, '"N-(5-AMINO-5-CARBOXYPENTYL)GLUTAMIC'),
   2.433 +"OXX": ('d', 'p', 'M', None, '"OXALYL-ASPARTYL'),
   2.434 +"B3Y": ('y', 'p', 'M', None, '"(3S)-3-AMINO-4-(4-HYDROXYPHENYL)BUTANOIC'),
   2.435 +"DLE": ('l', 'p', 'M', None, 'D-LEUCINE'),
   2.436 +"PYA": ('a', 'p', 'M', None, '3-(1,10-PHENANTHROL-2-YL)-L-ALANINE'),
   2.437 +"CSE": ('c', 'p', 'M', None, 'SELENOCYSTEINE'),
   2.438 +"5FA": ('a', 'r', 'M', None, '"ADENOSINE-5\'-PENTAPHOSPHATE"'),
   2.439 +"GCK": ('c', 'd', 'M', None, "PHOSPHORIC ACID 9-(2-GUANIDINOETHOXY-3-(2-DEOXY-BETA-D-ERYTHROPENTOFURANOSYL))-3H-PYRIMIDO-[5,4-B][1,4]-BENZOOXAZIN-2-ONE]-5'-ESTER"),
   2.440 +"5FC": ('c', 'd', 'M', None, '"5-FORMYL-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.441 +"GGL": ('e', 'p', 'M', None, '"GAMMA-GLUTAMIC'),
   2.442 +"B3Q": ('x', 'p', None, None, '"(3S)-3,6-DIAMINO-6-OXOHEXANOIC'),
   2.443 +"B3S": ('s', 'p', 'M', None, '"(3R)-3-AMINO-4-HYDROXYBUTANOIC'),
   2.444 +"B3L": ('x', 'p', None, None, '"(3S)-3-AMINO-5-METHYLHEXANOIC'),
   2.445 +"A47": ('a', 'd', 'M', None, "N6-METHOXY ADENOSINE 5'-MONOPHOSPHATE"),
   2.446 +"A44": ('a', 'r', 'M', None, "2'-O-METHYOXYETHYL-ADENOSINE 5'-MONOPHOSPHATE"),
   2.447 +"5MU": ('u', 'r', 'M', None, "5-METHYLURIDINE 5'-MONOPHOSPHATE"),
   2.448 +"CSY": ('x', 'p', None, None, '"[4-(4-HYDROXY-BENZYL)-2-(2-HYDROXY-1-METHYL-ETHYL)-5-OXO-IMIDAZOLIDIN-1-YL]-ACETIC'),
   2.449 +"A43": ('a', 'd', 'M', None, "3'-AMINO DEOXYADENOSINE 5'-MONOPHOSPHATE"),
   2.450 +"A40": ('a', 'd', 'M', None, "N2-METHYL 2'-DEOXYADENOSINE 5'-MONOPHOSPHATE"),
   2.451 +"B3K": ('k', 'p', 'M', None, '"(3S)-3,7-DIAMINOHEPTANOIC'),
   2.452 +"B3D": ('d', 'p', 'M', None, '"3-AMINOPENTANEDIOIC'),
   2.453 +"B3E": ('e', 'p', 'M', None, '"(3S)-3-AMINOHEXANEDIOIC'),
   2.454 +"DLY": ('k', 'p', 'M', None, 'D-LYSINE'),
   2.455 +"MTU": ('a', 'r', 'M', None, '9-BETA-D-RIBOFURANOSYL-9H-PURIN-2-AMINE'),
   2.456 +"B3A": ('a', 'p', 'M', None, '"(3S)-3-AMINOBUTANOIC'),
   2.457 +"CSS": ('c', 'p', 'M', None, 'S-MERCAPTOCYSTEINE'),
   2.458 +"CSR": ('c', 'p', 'M', None, 'S-ARSONOCYSTEINE'),
   2.459 +"CZZ": ('c', 'p', 'M', None, 'THIARSAHYDROXY-CYSTEINE'),
   2.460 +"N10": ('s', 'p', 'M', None, 'O-[(HEXYLAMINO)CARBONYL]-L-SERINE'),
   2.461 +"MGG": ('r', 'p', 'M', None, '"2-(2-CARBOXY-ACETYLAMINO)-5-GUANIDINO-PENTANOIC'),
   2.462 +"A35": ('a', 'd', 'M', None, "2-AMINO DEOXYADENOSINE 5'-MONOPHOSPHATE"),
   2.463 +"AFG": ('g', 'd', 'M', None, '"N-(5\'-PHOSPHO-2\'-DEOXYGUANOSIN-8-YL)-2-AMINOFLUORENE"'),
   2.464 +"BTR": ('w', 'p', 'M', None, '6-BROMO-TRYPTOPHAN'),
   2.465 +"SSU": ('u', 'r', 'M', None, '"URIDINE-5\'-PHOSPHOROTHIOATE"'),
   2.466 +"70U": ('u', 'r', 'M', None, '"5-(O-METHYLACETO)-2-THIO-2-DEOXY-URIDINE-5\'-MONOPHOSPHATE"'),
   2.467 +"A34": ('a', 'd', 'M', None, "N6-METHYL DEOXYADENOSINE 5'-MONOPHOSPHATE"),
   2.468 +"MGN": ('q', 'p', 'M', None, '2-METHYL-GLUTAMINE'),
   2.469 +"XCL": ('c', 'd', 'M', None, '"[(1S,4R,6R)-6-HYDROXY-4-(CYTOSIN-9-YL)CYCLOHEX-2-EN-1-YL]METHYL'),
   2.470 +"G4P": ('n', 'r', None, None, '"GUANOSINE-5\',3\'-TETRAPHOSPHATE"'),
   2.471 +"XCS": ('n', 'd', None, None, '(1R)-1-(4-AMINO-6-METHYL-2-OXO-1,2-DIHYDROQUINAZOLIN-8-YL)-1,4-ANHYDRO-2-DEOXY-5-O-PHOSPHONO-D-ERYTHRO-PENTITOL'),
   2.472 +"MGQ": ('a', 'r', 'M', None, '"7-BENZYL'),
   2.473 +"ABS": ('a', 'd', 'M', None, '"(S)-(N-PHENYL-2-HYDROXY-ETHYL)-2\'-DEOXY-ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.474 +"BTA": ('l', 'p', 'M', None, '4-DEMETHYL-LEUCINE'),
   2.475 +"MGV": ('g', 'r', 'M', None, '"P-FLUORO-7-BENZYL'),
   2.476 +"XCT": ('c', 'd', 'M', None, '4-AMINO-1-(2,3-DIDEOXY-6-O-PHOSPHONO-BETA-D-ERYTHRO-HEXOPYRANOSYL)PYRIMIDIN-2(1H)-ONE'),
   2.477 +"TTQ": ('w', 'p', 'M', None, '6-AMINO-7-HYDROXY-L-TRYPTOPHAN'),
   2.478 +"MGY": ('g', 'p', 'M', None, 'N-METHYLGLYCINE'),
   2.479 +"XCY": ('c', 'd', 'M', None, '"{5-[4-{[4-(AMINOMETHYL)BENZYL]AMINO}-2-OXOPYRIMIDIN-1(2H)-'),
   2.480 +"NNH": ('r', 'p', 'M', None, 'NOR-N-OMEGA-HYDROXY-L-ARGININE'),
   2.481 +"TBG": ('g', 'p', 'M', None, '"T-BUTYL'),
   2.482 +"ATD": ('t', 'd', 'M', None, '"THYMIDINE-3\'-PHOSPHATE"'),
   2.483 +"U8U": ('u', 'r', 'M', None, '"5-METHYLAMINOMETHYL-2-THIOURIDINE-5\'-MONOPHOSPHATE"'),
   2.484 +"SNC": ('c', 'p', 'M', None, 'S-NITROSO-CYSTEINE'),
   2.485 +"ALG": ('r', 'p', 'M', None, '"GUANIDINOBUTYRYL'),
   2.486 +"M1G": ('g', 'd', 'M', None, '"3-(2-DEOXY-BETA-D-RIBOFURANOSYL)-PYRIDO[5,6-A]-PURINE-10-ONE-5\'-MONOPHOSPHATE"'),
   2.487 +"ATL": ('t', 'd', 'M', None, '"[(1S,3R,4S,7R)-7-HYDROXY-3-(THYMIN-1-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
   2.488 +"ATM": ('t', 'd', 'M', None, '"3\'-AZIDO-3\'-DEOXYTHYMIDINE-5\'-MONOPHOSPHATE"'),
   2.489 +"HPC": ('f', 'p', 'M', None, '3-AMINO-4-PHENYL-BUTAN-2-ONE'),
   2.490 +"TP1": ('t', 'd', 'M', None, '2-(METHYLAMINO)-ETHYLGLYCINE-CARBONYLMETHYLENE-THYMINE'),
   2.491 +"XUG": ('g', 'd', 'M', None, "2'-SE-METHYL-2'-SELENOGUANOSINE 5'-(DIHYDROGEN PHOSPHATE)"),
   2.492 +"ISO": ('x', 'p', None, None, 'PARA-ISOPROPYLANILINE'),
   2.493 +"3MM": ('x', 'p', None, None, '(1R)-1-CARBOXY-N,N,N-TRIMETHYL-3-(METHYLSULFANYL)PROPAN-1-AMINIUM'),
   2.494 +"175": ('x', 'p', None, None, '3,5-DIHYDRO-5-METHYLIDENE-4H-IMIDAZOL-4-ON'),
   2.495 +"2TY": ('y', 'p', 'M', None, '2-HYDROXY-5-{[(1E)-2-PHENYLETHYLIDENE]AMINO}-L-TYROSINE'),
   2.496 +"CSB": ('c', 'p', 'M', None, '"CYS'),
   2.497 +"IT1": ('k', 'p', 'M', None, '(E)-N~6~-({3-HYDROXY-2-METHYL-5-[(PHOSPHONOOXY)METHYL]PYRIDIN-4-YL}METHYLIDENE)-L-LYSINE'),
   2.498 +"UN1": ('x', 'p', None, None, '"2-AMINOHEXANEDIOIC'),
   2.499 +"UN2": ('x', 'p', None, None, '"2-AMINO-4,4-DIHYDROXYBUTANOIC'),
   2.500 +"ASP": ('D', 'p', None, None, '"ASPARTIC'),
   2.501 +"DTH": ('t', 'p', 'M', None, 'D-THREONINE'),
   2.502 +"SER": ('S', 'p', None, None, 'SERINE'),
   2.503 +"ASU": ('n', 'd', None, None, '"4\'-THIO-2\'4\'-DIDEOXYRIBOFURANOSE-5\'-PHOSPHATE"'),
   2.504 +"SEP": ('s', 'p', 'M', None, 'PHOSPHOSERINE'),
   2.505 +"LNT": ('x', 'p', None, None, 'N-[(2S)-2-AMINO-1,1-DIHYDROXY-4-METHYLPENTYL]-L-THREONINE'),
   2.506 +"A39": ('a', 'r', 'M', None, "2'-O-METHYL-ADENOSINE 5'-MONOPHOSPHATE"),
   2.507 +"DGI": ('g', 'd', 'M', None, '"2\'-DEOXYGUANOSINE-5\'-DIPHOSPHATE"'),
   2.508 +"DGN": ('q', 'p', 'M', None, 'D-GLUTAMINE'),
   2.509 +"DGL": ('e', 'p', 'M', None, '"D-GLUTAMIC'),
   2.510 +"SEG": ('a', 'p', 'M', None, 'HYDROXYALANINE'),
   2.511 +"ASB": ('d', 'p', 'M', None, '"ASPARTIC'),
   2.512 +"ASA": ('d', 'p', 'M', None, '"ASPARTIC'),
   2.513 +"SEC": ('a', 'p', 'M', None, '"2-AMINO-3-SELENINO-PROPIONIC'),
   2.514 +"SEB": ('s', 'p', 'M', None, 'O-BENZYLSULFONYL-SERINE'),
   2.515 +"0A9": ('f', 'p', 'M', None, '"METHYL'),
   2.516 +"ASK": ('d', 'p', 'M', None, '"DEHYDROXYMETHYLASPARTIC'),
   2.517 +"PVH": ('h', 'p', 'M', None, 'HISTIDINE-METHYL-ESTER'),
   2.518 +"ASI": ('d', 'p', 'M', None, 'L-ISO-ASPARTATE'),
   2.519 +"SEL": ('s', 'p', 'M', None, '2-AMINO-1,3-PROPANEDIOL'),
   2.520 +"ASN": ('N', 'p', None, None, 'ASPARAGINE'),
   2.521 +"ASM": ('x', 'p', None, None, '"2-AMINO-4-OXO-4(1H-PYRROL-1-YL)BUTANOIC'),
   2.522 +"ASL": ('d', 'p', 'M', None, '"ASPARTIC'),
   2.523 +"AS2": ('d', 'p', 'M', None, '"(2R)-2-AMINO-4-OXOBUTANOIC'),
   2.524 +"IMC": ('c', 'd', 'M', None, '"N1-[2-DEOXY-RIBOFURANOSYL]-[2-AMINO-5-METHYL-4-OXO-4H-PYRIMIDINE]-5\'-MONOPHOSPHATE"'),
   2.525 +"A3P": ('a', 'r', 'M', None, '"ADENOSINE-3\'-5\'-DIPHOSPHATE"'),
   2.526 +"CLH": ('k', 'p', 'M', None, '"2-AMINO-6-[2-(2-OXO-ACETYLAMINO)-ACETYLAMINO]-HEXANOIC'),
   2.527 +"3DR": ('n', 'd', None, None, '"1\',2\'-DIDEOXYRIBOFURANOSE-5\'-PHOSPHATE"'),
   2.528 +"FRD": ('x', 'p', None, None, '1-PHENYL-2-AMINOPROPANE'),
   2.529 +"CLD": ('a', 'p', 'M', None, '"D-PARA-CHLOROPHENYL-1-ACTEAMIDOBORONIC'),
   2.530 +"CLE": ('l', 'p', 'M', None, '"LEUCINE'),
   2.531 +"PDU": ('n', 'd', None, None, '"5(1-PROPYNYL)-2\'-DEOXYURIDINE-5-MONOPHOSPHATE"'),
   2.532 +"CLG": ('k', 'p', 'M', None, '"2-AMINO-6-[2-(2-AMINOOXY-ACETYLAMINO)-ACETYLAMINO]-HEXANOIC'),
   2.533 +"BBC": ('c', 'p', 'M', None, '3-[(4-AMINOBUTYL)SULFINYL]-2-IMINOPROPAN-1-OL'),
   2.534 +"TFO": ('a', 'd', 'M', None, '"[2-(6-AMINO-9H-PURIN-9-YL)-1-METHYLETHOXY]METHYLPHOSPHONIC'),
   2.535 +"CLB": ('a', 'p', 'M', None, '"D-PARA-CHLOROPHENYL-1-ACETAMIDOBORONIC'),
   2.536 +"TLC": ('t', 'd', 'M', None, '"2-O,3-ETHDIYL-ARABINOFURANOSYL-THYMINE-5\'-MONOPHOSPHATE"'),
   2.537 +"2DM": ('n', 'd', None, None, '"2-HYDROXY-3-(PYREN-1-YLMETHOXY)PROPYL'),
   2.538 +"A3A": ('a', 'd', 'M', None, '"2\'DEOXY-ALPHA-ANOMERIC-ADENOSINE-5\'-PHOSPHATE"'),
   2.539 +"PDL": ('x', 'p', None, None, '"N-(5\'-PHOSPHOPYRIDOXYL)-L-ALANINE"'),
   2.540 +"3DA": ('a', 'd', 'M', None, '"3\'-DEOXYADENOSINE-5\'-MONOPHOSPHATE"'),
   2.541 +"GT9": ('c', 'p', 'M', None, 'S-NONYL-CYSTEINE'),
   2.542 +"CLV": ('x', 'p', None, None, '"{(2S)-2-[(1S)-1-AMINOETHYL]-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
   2.543 +"PDD": ('x', 'p', None, None, '"N-(5\'-PHOSPHOPYRIDOXYL)-D-ALANINE"'),
   2.544 +"1TQ": ('w', 'p', 'M', None, '6-(FORMYLAMINO)-7-HYDROXY-L-TRYPTOPHAN'),
   2.545 +"SEM": ('x', 'p', None, None, '3-AMINO-4-OXYBENZYL-2-BUTANONE'),
   2.546 +"TGP": ('g', 'd', 'M', None, "5'-THIO-2'-DEOXY-GUANOSINE PHOSPHONIC ACID"),
   2.547 +"OMC": ('c', 'r', 'M', None, '"O2\'-METHYLYCYTIDINE-5\'-MONOPHOSPHATE"'),
   2.548 +"AEA": ('x', 'p', None, None, '"(2-AMINO-2-CARBAMOYL-ETHYLSULFANYL)-ACETIC'),
   2.549 +"OMG": ('g', 'r', 'M', None, '"O2\'-METHYLGUANOSINE-5\'-MONOPHOSPHATE"'),
   2.550 +"H2U": ('u', 'r', 'M', None, '"5,6-DIHYDROURIDINE-5\'-MONOPHOSPHATE"'),
   2.551 +"A38": ('a', 'd', 'M', None, "8-OXY DEOXYADENOSINE-5'-MONOPHOSPHATE"),
   2.552 +"DTY": ('y', 'p', 'M', None, 'D-TYROSINE'),
   2.553 +"PVL": ('x', 'p', None, None, '"PYRUVOYL'),
   2.554 +"ABA": ('a', 'p', 'M', None, '"ALPHA-AMINOBUTYRIC'),
   2.555 +"OMU": ('u', 'r', 'M', None, "O2'-METHYLURIDINE 5'-MONOPHOSPHATE"),
   2.556 +"OMT": ('m', 'p', 'M', None, 'S-DIOXYMETHIONINE'),
   2.557 +"CRF": ('x', 'p', None, None, '[2-(1-AMINO-2-HYDROXY-PROPYL)-4-(1H-INDOL-3-YLMETHYLENE)-5-OXO-4,5-DIHYDRO-IMIDAZOL-1-YL]-ACETALDEHYDE'),
   2.558 +"FPA": ('f', 'p', 'M', None, '"1,1'),
   2.559 +"VMS": ('x', 'p', None, None, '"5\'O-[N-(L-VALYL)SULPHAMOYL]ADENOSINE"'),
   2.560 +"T11": ('f', 'p', 'M', None, '4-[3-(TRIFLUOROMETHYL)DIAZIRIDIN-3-YL]-L-PHENYLALANINE'),
   2.561 +"2MR": ('r', 'p', 'M', None, '"N3,'),
   2.562 +"DNE": ('l', 'p', 'M', None, 'D-NORLEUCINE'),
   2.563 +"5IC": ('c', 'r', 'M', None, '"5-IODO-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.564 +"RC7": ('x', 'p', None, None, '{(2R)-4-(4-HYDROXYBENZYL)-2-[2-(1H-IMIDAZOL-4-YL)ETHYL]-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETALDEHYDE'),
   2.565 +"BPE": ('c', 'p', 'M', None, '(2S)-2-AMINO-3-[(3-AMINOPROPYL)SULFANYL]PROPAN-1-OL'),
   2.566 +"2MT": ('p', 'p', 'M', None, '"(4R)-2,2-DIMETHYL-1,3-THIAZOLIDINE-4-CARBOXYLIC'),
   2.567 +"2MU": ('u', 'r', 'M', None, '"2\',5-DIMETHYLURIDINE-5\'-MONOPHOSPHATE"'),
   2.568 +"DG": ('G', 'd', None, None, '"2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
   2.569 +"UCL": ('n', 'd', None, None, "5-CHLORO-2'-DEOXYURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
   2.570 +"DA": ('A', 'd', None, None, '"2\'-DEOXYADENOSINE-5\'-MONOPHOSPHATE"'),
   2.571 +"AEI": ('d', 'p', 'M', None, '"THREONINE-ASPARTIC'),
   2.572 +"N5M": ('c', 'r', 'M', None, "5-nitrocytidine 5'-(dihydrogen phosphate)"),
   2.573 +"5IU": ('n', 'd', None, None, '"5-IODO-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
   2.574 +"2MG": ('g', 'r', 'M', None, '"2N-METHYLGUANOSINE-5\'-MONOPHOSPHATE"'),
   2.575 +"AAR": ('r', 'p', 'M', None, 'ARGININEAMIDE'),
   2.576 +"DT": ('T', 'd', None, None, '"THYMIDINE-5\'-MONOPHOSPHATE"'),
   2.577 +"DU": ('n', 'd', None, None, '"2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
   2.578 +"HV8": ('x', 'p', None, None, 'BENZYL-2-AMINO-PARAMETHOXY-BENZYLSTATINE'),
   2.579 +"MC1": ('s', 'p', 'M', None, '"METHICILLIN'),
   2.580 +"2FM": ('m', 'p', 'M', None, 'S-(DIFLUOROMETHYL)HOMOCYSTEINE'),
   2.581 +"CYS": ('C', 'p', None, None, 'CYSTEINE'),
   2.582 +"CYR": ('c', 'p', 'M', None, 'N~5~-[{[(2R)-2-AMINO-2-CARBOXYETHYL]SULFANYL}(IMINIO)METHYL]-L-ORNITHINATE'),
   2.583 +"BIL": ('x', 'p', None, None, '"(3R,4S)-3-AMINO-4-METHYLHEXANOIC'),
   2.584 +"PCA": ('e', 'p', 'M', None, '"PYROGLUTAMIC'),
   2.585 +"GYC": ('x', 'p', None, None, '"[(4Z)-2-[(1R)-1-AMINO-2-MERCAPTOETHYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   2.586 +"SMC": ('c', 'p', 'M', None, 'S-METHYLCYSTEINE'),
   2.587 +"0AC": ('g', 'p', 'M', None, '"(4S,5S)-5-AMINO-4-HYDROXY-6-PHENYLHEXANOIC'),
   2.588 +"BIF": ('f', 'p', 'M', None, '"(R)-2-AMINO-3-(4-PHENYLCYCLOHEXYL)PROPANOIC'),
   2.589 +"2BU": ('a', 'd', 'M', None, "(2S,3S)-N6-(2,3,4-TRIHYDROXYBUTYL)-2'-DEOXYADENOSINE MONO PHOSPHORIC ACID"),
   2.590 +"2BT": ('t', 'd', 'M', None, '"2\'-O-BUTYL-THYMIDINE"'),
   2.591 +"5PC": ('c', 'd', 'M', None, '"5(1-PROPYNYL)-2\'-DEOXYCYTIDINE-5\'-MONOPHOSPHATE"'),
   2.592 +"S2M": ('t', 'd', 'M', None, '"2\'-O-[2-(METHOXY)ETHYL]-2-THIOTHYMIDINE-5\'-MONOPHOSPHATE"'),
   2.593 +"5MC": ('c', 'r', 'M', None, '"5-METHYLCYTIDINE-5\'-MONOPHOSPHATE"'),
   2.594 +"S2P": ('a', 'p', 'M', None, '"(2S)-2-AMINO-3-(4-HYDROXY-1,2,5-THIADIAZOL-3-YL)PROPANOIC'),
   2.595 +"C1X": ('k', 'p', 'M', None, '(Z)-N~6~-[(4R,5S)-5-(2-CARBOXYETHYL)-4-(CARBOXYMETHYL)DIHYDRO-2H-THIOPYRAN-3(4H)-YLIDENE]-L-LYSINE'),
   2.596 +"CYG": ('c', 'p', 'M', None, '"2-AMINO-4-(AMINO-3-OXO-PROPYLSULFANYLCARBONYL)-BUTYRIC'),
   2.597 +"CYF": ('c', 'p', 'M', None, '"5-[2-(2-AMINO-2-CARBAMOYL-ETHYLSULFANYL)-ACETYLAMINO]-2-(3,6-DIHYDROXY-9,9A-DIHYDRO-3H-XANTHEN-9-YL)-BENZOIC'),
   2.598 +"5PY": ('t', 'd', 'M', None, '"1-(2\'-DEOXY-5\'-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-5-METHYLPYRIMIDIN-2(1H)-ONE"'),
   2.599 +"CYJ": ('x', 'p', None, None, '(Z)-N~6~-[(4R,5S)-5-(2-CARBOXYETHYL)-4-(CARBOXYMETHYL)PIPERIDIN-3-YLIDENE]-L-LYSINE'),
   2.600 +"BIU": ('i', 'p', 'M', None, '5-BROMO-L-ISOLEUCINE'),
   2.601 +"ENP": ('n', 'r', None, None, 'ETHENO-NADP'),
   2.602 +"AS9": ('x', 'p', None, None, '"N-[HYDROXY(METHYL)PHOSPHORYL]-L-ASPARTIC'),
   2.603 +"CYM": ('c', 'p', 'M', None, 'S-METHYLCYSTEINE'),
   2.604 +"CY3": ('c', 'p', 'M', None, '2-AMINO-3-MERCAPTO-PROPIONAMIDE'),
   2.605 +"DHN": ('v', 'p', 'M', None, '"5-HYDROXY'),
   2.606 +"CY1": ('c', 'p', 'M', None, 'ACETAMIDOMETHYLCYSTEINE'),
   2.607 +"CY0": ('c', 'p', 'M', None, 'S-{3-[(4-ANILINOQUINAZOLIN-6-YL)AMINO]-3-OXOPROPYL}-L-CYSTEINE'),
   2.608 +"SLZ": ('k', 'p', 'M', None, 'L-THIALYSINE'),
   2.609 +"CY4": ('c', 'p', 'M', None, 'S-BUTYRYL-CYSTEIN'),
   2.610 +"T5S": ('t', 'd', 'M', None, "2'-deoxy-5-(methylselanyl)uridine 5'-phosphate"),
   2.611 +"SLR": ('p', 'p', 'M', None, '(3R,4R)-3-HYDROXY-2-[(1S)-1-HYDROXY-2-METHYLPROPYL]-4-METHYL-5-OXO-D-PROLINE'),
   2.612 +"IML": ('i', 'p', 'M', None, 'N-METHYL-ISOLEUCINE'),
   2.613 +"32S": ('x', 'p', None, None, '"(S)-2-AMINO-3-(4H-SELENOLO[3,2-B]-PYRROL-6-YL)-PROPIONIC'),
   2.614 +"CSX": ('c', 'p', 'M', None, '"S-OXY'),
   2.615 +"MFC": ('x', 'p', None, None, '5-[1-(3-FLUORO-4-HYDROXY-PHENYL)-METH-(Z)-YLIDENE]-3,5-DIHYDRO-IMIDAZOL-4-ONE'),
   2.616 +"32T": ('x', 'p', None, None, '"(S)-2-AMINO-3-(4H-THIENO[3,2-B]-PYRROL-6-YL)-PROPIONIC'),
   2.617 +"TFT": ('t', 'd', 'M', None, '"(L)-ALPHA-THREOFURANOSYL-THYMINE-3\'-MONOPHOSPHATE"'),
   2.618 +"MLZ": ('k', 'p', 'M', None, 'N-METHYL-LYSINE'),
   2.619 +"DHU": ('u', 'r', 'M', None, '"5,6-DIHYDROURIDINE-5\'-PHOSPHATE"'),
   2.620 +"ASQ": ('d', 'p', 'M', None, 'PHOSPHOASPARTATE'),
   2.621 +"SLA": ('p', 'p', 'M', None, '(3S,4R)-3-HYDROXY-2-[(1S)-1-HYDROXY-2-METHYLPROPYL]-4-METHYL-5-OXO-D-PROLINE'),
   2.622 +"DHP": ('x', 'p', None, None, '3-DECYL-2,5-DIOXO-4-HYDROXY-3-PYRROLINE'),
   2.623 +"E1X": ('a', 'd', 'M', None, '"PHOSPHORIC'),
   2.624 +"XGL": ('g', 'd', 'M', None, '"[(1S,4R,6R)-6-HYDROXY-4-(GUANIN-9-YL)CYCLOHEX-2-EN-1-YL]METHYL'),
   2.625 +"MCL": ('k', 'p', 'M', None, 'NZ-(1-CARBOXYETHYL)-LYSINE'),
   2.626 +"TLB": ('n', 'r', None, None, '"2\'-O,3\'-C-METHYLENE-ARABINOFURANOSYL-THYMINE-5\'-MONOPHOSPHATE"'),
   2.627 +"MCG": ('x', 'p', None, None, '(S)-(ALPHA)-METHYL-4-CARBOXYPHENYLGLYCINE'),
   2.628 +"OTB": ('x', 'p', None, None, '"TERTIARY-BUTOXYFORMIC'),
   2.629 +"FT6": ('w', 'p', 'M', None, '6-FLUORO-L-TRYPTOPHAN'),
   2.630 +"XGA": ('n', 'd', None, None, '6-AMINO-3-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-3,7-DIHYDRO-8H-IMIDAZO[4,5-G]QUINAZOLIN-8-ONE'),
   2.631 +"AA4": ('a', 'p', 'M', None, '"2-AMINO-5-HYDROXYPENTANOIC'),
   2.632 +"R": ('a', 'd', 'M', None, "2'-DEOXY-N6-(R)STYRENE OXIDE ADENOSINE MONOPHOSPHATE"),
   2.633 +"GFL": ('g', 'd', 'M', None, '2-AMINO-9-(2-DEOXY-2-FLUORO-5-O-PHOSPHONO-BETA-D-ARABINOFURANOSYL)-1,9-DIHYDRO-6H-PURIN-6-ONE'),
   2.634 +"10C": ('c', 'r', 'M', None, '4-AMINO-1-{2,5-ANHYDRO-4-[(PHOSPHONOOXY)METHYL]-ALPHA-L-LYXOFURANOSYL}PYRIMIDIN-2(1H)-ONE'),
   2.635 +"NRQ": ('x', 'p', None, None, '"{(4Z)-4-(4-HYDROXYBENZYLIDENE)-2-[3-(METHYLTHIO)PROPANIMIDOYL]-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
   2.636 +"XGU": ('g', 'd', 'M', None, '2-AMINO-9-(2,3-DIDEOXY-6-O-PHOSPHONO-BETA-D-ERYTHRO-HEXOPYRANOSYL)-1,9-DIHYDRO-6H-PURIN-6-ONE'),
   2.637 +"MCS": ('c', 'p', 'M', None, '"MALONYL'),
   2.638 +"D3": ('n', 'd', None, None, '1-(2-DEOXY-BETA-D-RIBOFURANOSYL)-4-(3-BENZAMIDO)PHENYLIMIDAZOLE'),
   2.639 +"PAQ": ('y', 'p', 'M', None, '2-OXY-4-HYDROXY-5-(2-HYDRAZINOPYRIDINE)PHENYLALANINE'),
   2.640 +"2PR": ('g', 'd', 'M', None, '"2-AMINO-9-[2-DEOXYRIBOFURANOSYL]-9H-PURINE-5\'-MONOPHOSPHATE"'),
   2.641 +"PAT": ('w', 'p', 'M', None, 'ALPHA-PHOSPHONO-TRYPTOPHAN'),
   2.642 +"PAU": ('a', 'p', 'M', None, '"PANTOTHENOIC'),
   2.643 +"CH": ('c', 'r', 'M', None, "N3-PROTONATED CYTIDINE-5'-MONOPHOSPHATE"),
   2.644 +"GCM": ('x', 'p', None, None, '"GLYCYLMETHYLENE'),
   2.645 +"CSZ": ('c', 'p', 'M', None, '"S-SELANYL'),
   2.646 +"GMS": ('g', 'd', 'M', None, '"2\'-DEOXYGUANOSINE-5\'-MONOSELENOPHOSPHATE"'),
   2.647 +"HBN": ('h', 'p', 'M', None, 'N-(2-NAPHTHYL)HISTIDINAMIDE'),
   2.648 +"TQQ": ('w', 'p', 'M', None, '"(S)-2-AMINO-3-(6,7-DIHYDRO-6-IMINO-7-OXO-1H-INDOL-3-YL)PROPANOIC'),
   2.649 +"2PI": ('x', 'p', None, None, '"2-AMINO-PENTANOIC'),
   2.650 +"GSU": ('e', 'p', 'M', None, '"O5\'-(L-GLUTAMYL-SULFAMOYL)-ADENOSINE"'),
   2.651 +"CSI": ('g', 'p', 'M', None, '"AMINO-(2-IMINO-HEXAHYDRO-PYRIMIDIN-4-YL)-ACETIC'),
   2.652 +"200": ('f', 'p', 'M', None, '4-CHLORO-L-PHENYLALANINE'),
   2.653 +"EXY": ('l', 'p', 'M', None, '6-[(2R)-OXIRAN-2-YL]-L-NORLEUCINE'),
   2.654 +"12A": ('a', 'r', 'M', None, '"2-METHYLTHIO-N6-(AMINOCARBONYL-L-THREONYL)-ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.655 +"DCL": ('x', 'p', None, None, '2-AMINO-4-METHYL-PENTAN-1-OL'),
   2.656 +"UNK": ('x', 'p', None, None, 'UNKNOWN'),
   2.657 +"DCI": ('x', 'p', None, None, '2-METHYL-BUTYLAMINE'),
   2.658 +"DCG": ('g', 'd', 'M', None, '"2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.659 +"4HT": ('w', 'p', 'M', None, '4-HYDROXYTRYPTOPHAN'),
   2.660 +"CSU": ('c', 'p', 'M', None, '"CYSTEINE-S-SULFONIC'),
   2.661 +"HSO": ('h', 'p', 'M', None, 'HISTIDINOL'),
   2.662 +"HSL": ('s', 'p', 'M', None, '"HOMOSERINE'),
   2.663 +"TLN": ('n', 'd', None, None, '"[(1R,3R,4R,7S)-7-HYDROXY-3-(THYMIN-1-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
   2.664 +"TZB": ('x', 'p', None, None, '"(4S)-2-[(1E)-1-AMINOPROP-1-ENYL]-4,5-DIHYDRO-1,3-THIAZOLE-4-CARBOXYLIC'),
   2.665 +"BTC": ('c', 'p', 'M', None, 'CYSTEINE'),
   2.666 +"DCY": ('c', 'p', 'M', None, 'D-CYSTEINE'),
   2.667 +"DCT": ('c', 'd', 'M', None, "2',3'-DIDEOXYCYTIDINE 5'-TRIPHOSPHATE"),
   2.668 +"4BF": ('y', 'p', 'M', None, '4-BROMO-L-PHENYLALANINE'),
   2.669 +"C2L": ('c', 'r', 'M', None, "5-METHYL-3'-O-METHOXYETHYL CYTIDINE 5'-MONOPHOSPHATE"),
   2.670 +"RIA": ('a', 'r', 'M', None, '"2\'-O-[(5\'-PHOSPHO)RIBOSYL]ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.671 +"IAM": ('a', 'p', 'M', None, '4-[(ISOPROPYLAMINO)METHYL]PHENYLALANINE'),
   2.672 +"B1F": ('f', 'p', 'M', None, '"PHENYLALANINE'),
   2.673 +"GPN": ('g', 'd', 'M', None, '2-AMINOETHYLGLYCINE-CARBONYLMETHYLENE-GUANINE'),
   2.674 +"C25": ('c', 'r', 'M', None, '"CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.675 +"N2C": ('x', 'p', None, None, 'N,S-DIMETHYLCYSTEINE'),
   2.676 +"HAC": ('a', 'p', 'M', None, 'BETA-CYCLOHEXYL-ALANINE'),
   2.677 +"MEG": ('e', 'p', 'M', None, '"(2S,3R)-3-METHYL-GLUTAMIC'),
   2.678 +"THO": ('x', 'p', None, None, '"REDUCED'),
   2.679 +"BNO": ('x', 'p', None, None, '"NORLEUCINE'),
   2.680 +"125": ('u', 'r', 'M', None, '"2\'-O-FLUOROETHYL-5-METHYL-URIDINE-5\'-MONOPHOSPHATE"'),
   2.681 +"126": ('u', 'r', 'M', None, '"2\'-O-METHYL-[TRI(OXYETHYL)]-5-METHYL-URIDINE-5\'-MONOPHOSPHATE"'),
   2.682 +"127": ('u', 'r', 'M', None, '"2\'-O-AMINOOXY-ETHYL-5-METHYL-URIDINE-5\'-MONOPHOSPHATE"'),
   2.683 +"128": ('n', 'r', None, None, '"SPIRO(2,4,6-TRINITROBENZENE[1,2A]-2O\',3O\'-METHYLENE-ADENINE-TRIPHOSPHATE"'),
   2.684 +"X": ('g', 'd', 'M', None, "2'-DEOXY-N7-(8,9-DIHYDRO-9-HYDROXY-10-DEHYDROXY-AFLATOXIN)GUANOSINE MONOPHOSPHATE"),
   2.685 +"HS8": ('h', 'p', 'M', None, '3-(1-SULFO-1H-IMIDAZOL-3-IUM-4-YL)-L-ALANINE'),
   2.686 +"NAM": ('a', 'p', 'M', None, '"NAM'),
   2.687 +"THC": ('t', 'p', 'M', None, 'N-METHYLCARBONYLTHREONINE'),
   2.688 +"HRP": ('w', 'p', 'M', None, '5-HYDROXY-L-TRYPTOPHAN'),
   2.689 +"MNV": ('v', 'p', 'M', None, '"N-METHYL-C-AMINO'),
   2.690 +"PHI": ('f', 'p', 'M', None, 'IODO-PHENYLALANINE'),
   2.691 +"PHM": ('f', 'p', 'M', None, 'PHENYLALANYLMETHANE'),
   2.692 +"PHL": ('f', 'p', 'M', None, 'L-PHENYLALANINOL'),
   2.693 +"CSW": ('c', 'p', 'M', None, 'CYSTEINE-S-DIOXIDE'),
   2.694 +"ZAD": ('a', 'r', 'M', None, '"(S)-1\'-(2\',3\'-DIHYDROXYPROPYL)-ADENINE"'),
   2.695 +"OIC": ('x', 'p', None, None, '"OCTAHYDROINDOLE-2-CARBOXYLIC'),
   2.696 +"PHE": ('F', 'p', None, None, 'PHENYLALANINE'),
   2.697 +"PHD": ('d', 'p', 'M', None, '"ASPARTYL'),
   2.698 +"SYS": ('c', 'p', 'M', None, '3-[(2-AMINO-2-OXOETHYL)SELANYL]-L-ALANINE'),
   2.699 +"BG1": ('s', 'p', 'M', None, 'O-[(2S)-2-{METHYL[(METHYLAMINO)SULFONYL]AMINO}PENTANOYL]-L-SERINE'),
   2.700 +"NIY": ('y', 'p', 'M', None, 'META-NITRO-TYROSINE'),
   2.701 +"MTR": ('t', 'd', 'M', None, '(5-METHYL-6-OXO-1,6-DIHYDRO-PYRIDIN-3-YL)-1,2-DIDEOXY-RIBOFURANOSE-5-MONOPHOSPHATE'),
   2.702 +"OAS": ('s', 'p', 'M', None, 'O-ACETYLSERINE'),
   2.703 +"BRU": ('n', 'd', None, None, '"5-BROMO-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
   2.704 +"NIT": ('x', 'p', None, None, '4-NITROANILINE'),
   2.705 +"OIP": ('n', 'd', None, None, "2'-DEOXY-INOSINIC ACID"),
   2.706 +"0A0": ('d', 'p', 'M', None, '"2-METHYL-L-ASPARTIC'),
   2.707 +"0A1": ('y', 'p', 'M', None, 'O-METHYL-L-TYROSINE'),
   2.708 +"0A2": ('k', 'p', 'M', None, '[(1R)-1,5-DIAMINOPENTYL][BIS(ETHANOLATO)]HYDROXYBORATE(1-)'),
   2.709 +"CRQ": ('x', 'p', None, None, '"[2-(3-CARBAMOYL-1-IMINO-PROPYL)-4-(4-HYDROXY-BENZYLIDENE)-5-OXO-4,5-DIHYDRO-IMIDAZOL-1-YL]-ACETIC'),
   2.710 +"CRW": ('x', 'p', None, None, '"[2-(1-AMINOETHYL)-4-METHYLENE-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   2.711 +"CRU": ('e', 'p', 'M', None, '"4-[(4Z)-1-(CARBOXYMETHYL)-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-2-YL]-4-IMINOBUTANOIC'),
   2.712 +"DMH": ('n', 'p', 'M', None, 'N4,N4-DIMETHYL-ASPARAGINE'),
   2.713 +"PRR": ('a', 'p', 'M', None, '3-(METHYL-PYRIDINIUM)ALANINE'),
   2.714 +"CRX": ('x', 'p', None, None, '"[2-(1-AMINOETHYL)-2-HYDROXY-4-METHYLENE-5-OXOIMIDAZOLIDIN-1-YL]ACETIC'),
   2.715 +"DMK": ('d', 'p', 'M', None, '"3,3-DIMETHYL'),
   2.716 +"MHL": ('l', 'p', 'M', None, 'N-METHYL-4-HYDROXY-LEUCINE'),
   2.717 +"LAA": ('d', 'p', 'M', None, '(3R)-3-HYDROXY-L-ALPHA-ASPARAGINE'),
   2.718 +"0ZM": ('x', 'p', None, None, '"(2R)-2-{[(2R)-2-{[(S)-HYDROXY{[(2R,3S,4S,5R,6R)-3,4,5-TRIHYDROXY-6-METHYLTETRAHYDRO-2H-PYRAN-2-YL]OXY}PHOSPHORYL]AMINO}-4-METHYLPENTANOYL]AMINO}-3-(1H-INDOL-3-YL)PROPANOIC'),
   2.719 +"DMT": ('x', 'p', None, None, '"3-HYDROXY-4,4-DIMETHYL-2-(METHYLAMINO)-6-OCTENOIC'),
   2.720 +"CRG": ('x', 'p', None, None, '"[2-(1-AMINO-2-HYDROXY-PROPYL)-4-(3H-IMIDAZOL-4-YLMETHYLENE)-5-OXO-4,5-DIHYDRO-IMIDAZOL-1-YL]-ACETIC'),
   2.721 +"0ZJ": ('x', 'p', None, None, 'N-(SULFANYLACETYL)-D-PHENYLALANYL-N-[(1S)-4-CARBAMIMIDAMIDO-1-(CHLOROACETYL)BUTYL]-L-PROLINAMIDE'),
   2.722 +"0ZE": ('x', 'p', None, None, '"AMINO{[(4R)-4-({[(3R,6S,8AS)-6-AMINO-6-BENZYL-5-OXOOCTAHYDROINDOLIZIN-3-YL]CARBONYL}AMINO)-5-(1,3-BENZOTHIAZOL-2-YL)-5-OXOPENTYL]AMINO}METHANIMINIUM'),
   2.723 +"CRK": ('x', 'p', None, None, '4-{(Z)-[2-[3-(METHYLSULFANYL)PROPANOYL]-5-OXO-1-(2-OXOETHYL)-1,5-DIHYDRO-4H-IMIDAZOL-4-YLIDENE]METHYL}BENZENOLATE'),
   2.724 +"TPH": ('x', 'p', None, None, '"2-AMINO-3-PHENYL-PROPANE-1,1-DIOL'),
   2.725 +"1PI": ('x', 'p', None, None, '3-(1-CARBAMIMIDOYL-PIPERIDIN-3-YL)-L-ALANINE'),
   2.726 +"CRO": ('x', 'p', None, None, '"{2-[(1R,2R)-1-AMINO-2-HYDROXYPROPYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
   2.727 +"0ZC": ('x', 'p', None, None, '"(3R)-2-[N-(FURAN-2-YLCARBONYL)-L-LEUCYL]-2,3,4,9-TETRAHYDRO-1H-BETA-CARBOLINE-3-CARBOXYLIC'),
   2.728 +"MIS": ('s', 'p', 'M', None, 'MONOISOPROPYLPHOSPHORYLSERINE'),
   2.729 +"C36": ('c', 'd', 'M', None, '"5-METHYL-5-FLUORO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.730 +"NFA": ('f', 'p', 'M', None, '"PHENYLALANINE'),
   2.731 +"PU": ('a', 'r', 'M', None, '"PUROMYCIN-N-AMINOPHOSPHONIC'),
   2.732 +"G7M": ('g', 'r', 'M', None, '"N7-METHYL-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.733 +"S6G": ('g', 'd', 'M', None, '"6-THIO-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
   2.734 +"LDH": ('k', 'p', 'M', None, 'N~6~-ETHYL-L-LYSINE'),
   2.735 +"TCP": ('t', 'd', 'M', None, '"5\'-METHYLTHYMIDINE"'),
   2.736 +"TCQ": ('x', 'p', None, None, '3-((3E)-4-(HYDROXYMETHYL)-6-OXO-3-{[(1S,2R)-2-PHENYLCYCLOPROPYL]IMINO}CYCLOHEXA-1,4-DIEN-1-YL)ALANINE'),
   2.737 +"8AN": ('a', 'r', 'M', None, "3'-amino-3'-deoxyadenosine 5'-(dihydrogen phosphate)"),
   2.738 +"BUC": ('c', 'p', 'M', None, 'S,S-BUTYLTHIOCYSTEINE'),
   2.739 +"C32": ('c', 'd', 'M', None, '"5-BROMO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.740 +"7MG": ('g', 'r', 'M', None, '"7N-METHYL-8-HYDROGUANOSINE-5\'-MONOPHOSPHATE"'),
   2.741 +"BUG": ('l', 'p', 'M', None, '"TERT-LEUCYL'),
   2.742 +"LEU": ('L', 'p', None, None, 'LEUCINE'),
   2.743 +"MHO": ('m', 'p', 'M', None, 'S-OXYMETHIONINE'),
   2.744 +"C": ('C', 'r', None, None, '"CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.745 +"DDX": ('n', 'd', None, None, '"2\',3\'-DEHYDRO-2\',3\'-DIDEOXYRIBOFURANOSE-5\'-PHOSPHATE"'),
   2.746 +"OPR": ('r', 'p', 'M', None, 'C-(3-OXOPROPYL)ARGININE'),
   2.747 +"FOX": ('g', 'd', 'M', None, "((1R,2S,4R)-4-{[2-AMINO-5-(FORMYLAMINO)-6-OXO-3,6-DIHYDROPYRIMIDIN-4-YL]AMINO}-2-HYDROXYCYCLOPENTYL)METHYL 5'-PHOSPHATE"),
   2.748 +"MTY": ('y', 'p', 'M', None, 'META-TYROSINE'),
   2.749 +"TC1": ('c', 'd', 'M', None, '3-(5-PHOSPHO-2-DEOXY-BETA-D-RIBOFURANOSYL)-2-OXO-1,3-DIAZA-PHENOTHIAZINE'),
   2.750 +"FOE": ('c', 'p', 'M', None, '2-(2-AMINO-3-OXO-PROPYLSULFANYL)-N-(4-FLUORO-PHENYL)-N-ISOPROPYL-ACETAMIDE'),
   2.751 +"MF3": ('x', 'p', None, None, '"2-AMINO-4-TRIFLUOROMETHYLSULFANYL-BUTYRIC'),
   2.752 +"DDN": ('n', 'd', None, None, '"3,4-DIHYDRO-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
   2.753 +"FME": ('m', 'p', 'M', None, 'N-FORMYLMETHIONINE'),
   2.754 +"EFC": ('c', 'p', 'M', None, 'S,S-(2-FLUOROETHYL)THIOCYSTEINE'),
   2.755 +"DDG": ('g', 'd', 'M', None, '"2\',3\'-DIDEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.756 +"MHS": ('h', 'p', 'M', None, '"N1-METHYLATED'),
   2.757 +"DDE": ('h', 'p', 'M', None, '{3-[4-(2-AMINO-2-CARBOXY-ETHYL)-1H-IMIDAZOL-2-YL]-1-CARBAMOYL-PROPYL}-TRIMETHYL-AMMONIUM'),
   2.758 +"CR2": ('x', 'p', None, None, '"{(4Z)-2-(AMINOMETHYL)-4-[(4-HYDROXYPHENYL)METHYLIDENE]-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
   2.759 +"DSN": ('s', 'p', 'M', None, 'D-SERINE'),
   2.760 +"PSH": ('h', 'p', 'M', None, '1-THIOPHOSPHONO-L-HISTIDINE'),
   2.761 +"6MI": ('n', 'd', None, None, '6-METHYL-8-(2-DEOXY-RIBOFURANOSYL)ISOXANTHOPTERIDINE'),
   2.762 +"CR7": ('x', 'p', None, None, '"[(4Z)-2-[(1S)-1,5-DIAMINOPENTYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   2.763 +"0AV": ('a', 'd', 'M', None, "2'-O-methyladenosine 5'-(dihydrogen phosphate)"),
   2.764 +"CR5": ('g', 'p', 'M', None, '(2R)-2-(AMINOMETHYL)-2,4-DIHYDROXY-5-OXO-3-(2-OXOETHYL)-2,5-DIHYDRO-1H-IMIDAZOL-3-IUM'),
   2.765 +"MOR": ('x', 'p', None, None, 'N-CARBONYLMORPHOLINE'),
   2.766 +"CR8": ('x', 'p', None, None, '2-[1-AMINO-2-(1H-IMIDAZOL-5-YL)ETHYL]-1-(CARBOXYMETHYL)-4-[(4-OXOCYCLOHEXA-2,5-DIEN-1-YLIDENE)METHYL]-1H-IMIDAZOL-5-OLATE'),
   2.767 +"PSA": ('f', 'p', 'M', None, '"3-HYDROXY-4-AMINO-5-PHENYLPENTANOIC'),
   2.768 +"ANI": ('x', 'p', None, None, '4-TRIFLUOROMETHYLANILINE'),
   2.769 +"NP3": ('n', 'd', None, None, '"1-[2-DEOXY-RIBOFURANOSYL]-1H-[3-NITRO-PYRROL]-5\'-PHOSPHATE"'),
   2.770 +"DM0": ('k', 'p', 'M', None, 'N~2~,N~2~,N~6~,N~6~-TETRAMETHYL-L-LYSINE'),
   2.771 +"0AA": ('v', 'p', 'M', None, '"METHYL'),
   2.772 +"0AB": ('v', 'p', 'M', None, '(3S,4S)-3-AMINO-4-METHYL-3,4-DIHYDRO-2H-PYRAN-2-ONE'),
   2.773 +"FOG": ('f', 'p', 'M', None, 'PHENYLALANINOYL-[1-HYDROXY]-2-PROPYLENE'),
   2.774 +"0AD": ('g', 'd', 'M', None, "2'-deoxy-N-propylguanosine 5'-(dihydrogen phosphate)"),
   2.775 +"LCC": ('n', 'd', None, None, '"[(1R,3R,4R,7S)-7-HYDROXY-3-(5-METHYLCYTOSIN-1-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
   2.776 +"NVA": ('v', 'p', 'M', None, 'NORVALINE'),
   2.777 +"0AG": ('l', 'p', 'M', None, 'N-(ETHOXYCARBONYL)-L-LEUCINE'),
   2.778 +"0AH": ('s', 'p', 'M', None, 'O-(BROMOACETYL)-L-SERINE'),
   2.779 +"1MA": ('a', 'r', 'M', None, '"6-HYDRO-1-METHYLADENOSINE-5\'-MONOPHOSPHATE"'),
   2.780 +"0AK": ('d', 'p', 'M', None, '"(2S)-2-AMINO-4-(2-CHLOROETHOXY)-4-OXOBUTANOIC'),
   2.781 +"0AM": ('a', 'd', 'M', None, "2'-deoxy-N-[3-(propyldisulfanyl)propyl]adenosine 5'-(dihydrogen phosphate)"),
   2.782 +"PST": ('t', 'd', 'M', None, '"THYMIDINE-5\'-THIOPHOSPHATE"'),
   2.783 +"PSU": ('u', 'r', 'M', None, '"PSEUDOURIDINE-5\'-MONOPHOSPHATE"'),
   2.784 +"1ZX": ('x', 'p', None, None, 'D-PHENYLALANYL-N-[(1S)-1-ACETYL-4-{[AMINO(IMINIO)METHYL]AMINO}BUTYL]-L-PROLINAMIDE'),
   2.785 +"ILG": ('e', 'p', 'M', None, '"GLUTAMYL'),
   2.786 +"ILE": ('I', 'p', None, None, 'ISOLEUCINE'),
   2.787 +"5CM": ('c', 'd', 'M', None, '"5-METHYL-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
   2.788 +"D11": ('t', 'p', 'M', None, 'D-PHOSHPHOTHREONINE'),
   2.789 +"UMS": ('n', 'd', None, None, '"2\'-METHYLSELENYL-2\'-DEOXYURIDINE-5\'-PHOSPHATE"'),
   2.790 +"X9Q": ('x', 'p', None, None, '"{(2S)-2-[(1S)-1-AMINOETHYL]-4-BENZYL-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
   2.791 +"FGP": ('s', 'p', 'M', None, '"2-AMINO-3-HYDROXY-3-PHOSPHONOOXY-PROPIONIC'),
   2.792 +"DVA": ('v', 'p', 'M', None, 'D-VALINE'),
   2.793 +"5ZA": ('x', 'p', None, None, '(5Z)-2-[(1S,2R)-1-AMINO-2-HYDROXYPROPYL]-5-[(4-AMINO-1H-INDOL-3-YL)METHYLENE]-3-(2-HYDROXYETHYL)-3,5-DIHYDRO-4H-IMIDAZOL-4-ONE'),
   2.794 +"BCC": ('x', 'p', None, None, '6-AMINO-6-BENZYL-5-OXO-OCTAHYDRO-INDOLIZINE-3-CARBALDEHYDE'),
   2.795 +"TMB": ('t', 'p', 'M', None, 'N-METHYL-4-[(E)-2-BUTENYL]-4,N-DIMETHYL-THREONINE'),
   2.796 +"3AH": ('h', 'p', 'M', None, '[HISTIDIN-1-YL-4H-[1,2,4]TRIAZOL-5-YL]-AMINE'),
   2.797 +"BCX": ('c', 'p', 'M', None, 'BETA-3-CYSTEINE'),
   2.798 +"KPI": ('k', 'p', 'M', None, '"(2S)-2-AMINO-6-[(1-HYDROXY-1-OXO-PROPAN-2-YLIDENE)AMINO]HEXANOIC'),
   2.799 +"A2L": ('a', 'r', 'M', None, "3'-O-METHYOXYETHYL-ADENOSINE 5'-MONOPHOSPHATE"),
   2.800 +"A2M": ('a', 'r', 'M', None, '"2\'-O-METHYL-ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.801 +"ILX": ('i', 'p', 'M', None, '4,5-DIHYDROXYISOLEUCINE'),
   2.802 +"PEC": ('c', 'p', 'M', None, 'S,S-PENTYLTHIOCYSTEINE'),
   2.803 +"IGL": ('g', 'p', 'M', None, '"ALPHA-AMINO-2-INDANACETIC'),
   2.804 +"OLE": ('x', 'p', None, None, '"2-HYDROXY-4-METHYL-PENTANOIC'),
   2.805 +"LPG": ('g', 'p', 'M', None, 'L-PROPARGYLGLYCINE'),
   2.806 +"DI": ('n', 'd', None, None, '"2\'-DEOXYINOSINE-5\'-MONOPHOSPHATE"'),
   2.807 +"ALO": ('t', 'p', 'M', None, 'ALLO-THREONINE'),
   2.808 +"OLT": ('t', 'p', 'M', None, 'O-METHYL-L-THREONINE'),
   2.809 +"TBM": ('t', 'p', 'M', None, '4-METHYL-4-[(E)-2-BUTENYL]-4,N-DIMETHYL-THREONINE'),
   2.810 +"2AU": ('u', 'r', 'M', None, '"2\'-AMINOURIDINE"'),
   2.811 +"LED": ('l', 'p', 'M', None, '(4R)-5-OXO-L-LEUCINE'),
   2.812 +"OLZ": ('s', 'p', 'M', None, 'O-(2-AMINOETHYL)-L-SERINE'),
   2.813 +"C6C": ('c', 'p', 'M', None, '"S-CYCLOHEXYL'),
   2.814 +"IEY": ('x', 'p', None, None, '2-((1E)-2-(5-IMIDAZOLYL)ETHENYL)-4-(P-HYDROXYBENZYLIDENE)-5-IMIDAZOLINONE'),
   2.815 +"HEU": ('n', 'd', None, None, '"3-(2-HYDROXYETHYL)-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
   2.816 +"SRA": ('a', 'r', 'M', None, "ADENOSINE -5'-THIO-MONOPHOSPHATE"),
   2.817 +"ZTH": ('n', 'r', None, None, '"(S)-1\'-(2\',3\'-DIHYDROXYPROPYL)-THYMINE"'),
   2.818 +"NDN": ('n', 'd', None, None, "2'-DEOXY-5-NITROURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
   2.819 +"C66": ('x', 'p', None, None, '2-AMINOETHYLLYSINE-CARBONYLMETHYLENE-CYTOSINE'),
   2.820 +"6CW": ('w', 'p', 'M', None, '6-CHLORO-L-TRYPTOPHAN'),
   2.821 +"CR0": ('x', 'p', None, None, '[2-(1-AMINO-2-HYDROXYPROPYL)-2-HYDROXY-4-ISOBUTYL-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETALDEHYDE'),
   2.822 +"DBM": ('n', 'r', None, None, '9-(6-DEOXY-BETA-D-ALLOFURANOSYL)-6-METHYLPURINE'),
   2.823 +"N": ('n', 'r', None, None, "ANY 5'-MONOPHOSPHATE NUCLEOTIDE"),
   2.824 +"N6G": ('g', 'r', 'M', None, '"((2R,3S,4R,5S)-5-(2,6-DIAMINO-9H-PURIN-9-YL)-3,4-DIHYDROXY-TETRAHYDROFURAN-2-YL)METHYL'),
   2.825 +"ALC": ('a', 'p', 'M', None, '"2-AMINO-3-CYCLOHEXYL-PROPIONIC'),
   2.826 +"S1H": ('s', 'p', 'M', None, '1-HEXADECANOSULFONYL-O-L-SERINE'),
   2.827 +"FZN": ('k', 'p', 'M', None, '(2S)-2-amino-6-{[(1Z)-1-{[(2R,3R,4S,5R)-5-({[(R)-{[(R)-{[(2R,3S,4R,5R)-5-(6-amino-9H-purin-9-yl)-3,4-dihydroxytetrahydrofuran-2-yl]methoxy}(hydroxy)phosphoryl]oxy}(hydroxy)phosphoryl]oxy}methyl)-3,4-dihydroxytetrahydrofuran-2-yl]sulfanyl}ethylidene]amino}hexanoic acid'),
   2.828 +"0SP": ('a', 'd', 'M', None, "2'-deoxy-N-[3-(propyldisulfanyl)propyl]adenosine 5'-(dihydrogen phosphate)"),
   2.829 +"OBS": ('x', 'p', None, None, '(Z)-N^6-[(4S,5R)-5-(2-CARBOXYETHYL)-4-(CARBOXYMETHYL)-1-HYDROXYDIHYDRO-2H-THIOPYRANIUM-3(4H)-YLIDENE]-L-LYSINE'),
   2.830 +"2NT": ('t', 'd', 'M', None, "2'-O-[2-[HYDROXY(METHYLENEAMINO)OXY]ETHYL THYMIDINE-5'-MONOPHOSPHATE"),
   2.831 +"K1R": ('c', 'p', 'M', None, '"(2S)-2-AMINO-4-[({[(2R)-2-AMINO-2-CARBOXYETHYL]THIO}AMINO)SULFINYL]BUTANOIC'),
   2.832 +"NMT": ('t', 'd', 'M', None, '1-(O2-(METHYLCARBAMOYL)-O5-HYDROXYPHOSPHINYL-BETA-D-RIBOFURANOSYL)THYMINE'),
   2.833 +"A23": ('a', 'r', 'M', None, "ADENOSINE-5'-PHOSPHATE-2',3'-CYCLIC PHOSPHATE"),
   2.834 +"D1P": ('n', 'd', None, None, '"2\'-DEOXY-RIBOFURANOSE-5\'-PHOSPHATE"'),
   2.835 +"NMS": ('t', 'd', 'M', None, '1-(O2-(2-METHYLAMINO-2-OXO-ETHYL)-O5-HYDROXYPHOSPHINYL-BETA-D-RIBOFURANOSYL)THYMINE'),
   2.836 +"CIR": ('r', 'p', 'M', None, 'CITRULLINE'),
   2.837 +"CH6": ('x', 'p', None, None, '"{(4Z)-2-[(1S)-1-AMINO-3-(METHYLSULFANYL)PROPYL]-4-[(4-HYDROXYPHENYL)METHYLIDENE]-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
   2.838 +"BJH": ('x', 'p', None, None, '"1(R)-1-ACETAMIDO-2-(3-CARBOXY-2-HYDROXYPHENYL)ETHYL'),
   2.839 +"YYG": ('g', 'r', 'M', None, '"4-(3-[5-O-PHOSPHONORIBOFURANOSYL]-4,6-DIMETHYL-8-OXO-4,8-DIHYDRO-3H-1,3,4,5,7A-PENTAAZA-S-INDACEN-YLAMINO-BUTYRIC'),
   2.840 +"2MA": ('a', 'r', 'M', None, '"2-METHYLADENOSINE-5\'-MONOPHOSPHATE"'),
   2.841 +"NMC": ('g', 'p', 'M', None, '"N-CYCLOPROPYLMETHYL'),
   2.842 +"0AY": ('x', 'p', None, None, '"DIETHYL'),
   2.843 +"UFP": ('n', 'd', None, None, '"5-FLUORO-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
   2.844 +"SET": ('s', 'p', 'M', None, 'AMINOSERINE'),
   2.845 +"UFR": ('n', 'd', None, None, "2'-DEOXY-5-FORMYLURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
   2.846 +"NMM": ('r', 'p', 'M', None, '"(R)-2-AMINO-5-(3-METHYLGUANIDINO)BUTANOIC'),
   2.847 +"UFT": ('n', 'd', None, None, "2'-deoxy-2'-fluorouridine 5'-(dihydrogen phosphate)"),
   2.848 +"0AZ": ('p', 'p', 'M', None, '(4R)-4-HYDROXY-L-PROLINE'),
   2.849 +"5IT": ('t', 'd', 'M', None, '"5-IODO-THYMIDINE-5\'-PHOSPHATE"'),
   2.850 +"DIL": ('i', 'p', 'M', None, 'D-ISOLEUCINE'),
   2.851 +"FHL": ('x', 'p', None, None, '(E)-N~6~-[3-CARBOXY-1-(HYDROXYMETHYL)PROPYLIDENE]-L-LYSINE'),
   2.852 +"0Z6": ('x', 'p', None, None, 'D-PHENYLALANYL-N-[(1S)-4-{[AMINO(IMINIO)METHYL]AMINO}-1-(CHLOROACETYL)BUTYL]-L-PHENYLALANINAMIDE'),
   2.853 +"AR4": ('e', 'p', 'M', None, '"2-AMINO-5-(3-FLUORO-3,4-DIHYDROXY-5-HYDROXYMETHYL-TETRAHYDRO-FURAN-2-YLOXY)-5-HYDROXY-PENTANOIC'),
   2.854 +"EIT": ('t', 'd', 'M', None, '"((3R,4R,5R)-4-(2-(1H-IMIDAZOL-1-YL)ETHOXY)-3-HYDROXY-5-(5-METHYL-2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)-TETRAHYDROFURAN-2-YL)METHYL'),
   2.855 +"SD2": ('x', 'p', None, None, 'N-(SULFANYLACETYL)TYROSYLPROLYLMETHIONINAMIDE'),
   2.856 +"CH7": ('x', 'p', None, None, '"[(4Z)-4-(4-HYDROXYBENZYLIDENE)-5-OXO-2-(3,4,5,6-TETRAHYDROPYRIDIN-2-YL)-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   2.857 +"N5I": ('n', 'd', None, None, '1-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-5-NITRO-1H-INDOLE'),
   2.858 +"5AT": ('t', 'd', 'M', None, '"5\'-AMINO-5\'-DEOXYTHYMIDINE"'),
   2.859 +"LOL": ('x', 'p', None, None, 'LEUCINOL'),
   2.860 +"HYP": ('p', 'p', 'M', None, '4-HYDROXYPROLINE'),
   2.861 +"IYT": ('t', 'p', 'M', None, 'N-ALPHA-ACETYL-3,5-DIIODOTYROSYL-D-THREONINE'),
   2.862 +"LOV": ('x', 'p', None, None, '"5-AMINO-4-HYDROXY-2-ISOPROPYL-7-METHYL-OCTANOIC'),
   2.863 +"LCX": ('k', 'p', 'M', None, '"CARBOXYLATED'),
   2.864 +"GND": ('x', 'p', None, None, '"2-AMINO-5-GUANIDINO-PENTANOIC'),
   2.865 +"GNE": ('n', 'd', None, None, '1,N2-ETHENOGUANINE'),
   2.866 +"FHU": ('u', 'r', 'M', None, '"(5S,6R)-5-FLUORO-6-HYDROXY-PSEUDOURIDINE-5\'-MONOPHOSPHATE"'),
   2.867 +"C12": ('x', 'p', None, None, '2-(1-AMINO-2-HYDROXYPROPYL)-4-(4-HYDROXYBENZYL)-1-(2-OXOETHYL)-1H-IMIDAZOL-5-OLATE'),
   2.868 +"DIV": ('v', 'p', 'M', None, 'D-ISOVALINE'),
   2.869 +"T6A": ('a', 'r', 'M', None, '"N-[N-(9-B-D-RIBOFURANOSYLPURIN-6-YL)CARBAMOYL]THREONINE-5\'-MONOPHOSPHATE"'),
   2.870 +"DIR": ('r', 'p', 'M', None, '3-{[(E)-AMINO(HYDROXYIMINO)METHYL]AMINO}ALANINE'),
   2.871 +"AIB": ('a', 'p', 'M', None, '"ALPHA-AMINOISOBUTYRIC'),
   2.872 +"SOC": ('c', 'p', 'M', None, 'DIOXYSELENOCYSTEINE'),
   2.873 +"NSK": ('x', 'p', None, None, '"N-SUCCINYL'),
   2.874 +"LCG": ('g', 'd', 'M', None, '"[(1R,3R,4R,7S)-7-HYDROXY-3-(GUANIN-9-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
   2.875 +"MT2": ('m', 'p', 'M', None, '[(3S)-3-AMINO-3-CARBOXYPROPYL](ETHYL)METHYLSULFONIUM'),
   2.876 +"GAU": ('e', 'p', 'M', None, '"(4S)-4-AMINO-5-HYDROXYPENTANOIC'),
   2.877 +"PPH": ('l', 'p', 'M', None, '"PHENYLALANINE'),
   2.878 +"PPN": ('f', 'p', 'M', None, 'PARA-NITROPHENYLALANINE'),
   2.879 +"1MG": ('g', 'r', 'M', None, '"1N-METHYLGUANOSINE-5\'-MONOPHOSPHATE"'),
   2.880 +"GAO": ('g', 'r', 'M', None, "GUANINE ARABINOSE-5'-PHOSPHATE"),
   2.881 +"FAI": ('n', 'r', None, None, '5-(FORMYLAMINO)-1-(5-O-PHOSPHONO-BETA-D-RIBOFURANOSYL)-1H-IMIDAZOLE-4-CARBOXAMIDE'),
   2.882 +"PPW": ('g', 'd', 'M', None, '"7-DEAZA-8-AZA-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
   2.883 +"2ML": ('l', 'p', 'M', None, '2-METHYLLEUCINE'),
   2.884 +"MBZ": ('n', 'd', None, None, '"1-[2-DEOXYRIBOFURANOSYL]-4-METHYL-BENZOIMIDAZOLE-5\'-MONOPHOSPHATE"'),
   2.885 +"TPN": ('t', 'd', 'M', None, '2-AMINOETHYLGLYCINE-CARBONYLMETHYLENE-THYMINE'),
   2.886 +"SOY": ('s', 'p', 'M', None, '"OXACILLIN-ACYLATED'),
   2.887 +"CBV": ('c', 'r', 'M', None, "5-BROMOCYTIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
   2.888 +"MBQ": ('y', 'p', 'M', None, '2-HYDROXY-5-({1-[(4-METHYLPHENOXY)METHYL]-3-OXOPROP-1-ENYL}AMINO)-L-TYROSINE'),
   2.889 +"G31": ('g', 'd', 'M', None, '"3\'-METHYL-2\',3\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.890 +"HTI": ('c', 'p', 'M', None, '(4S)-4-{[(2S)-2-AMINO-3-OXOPROPYL]SULFANYL}-L-HOMOSERINE'),
   2.891 +"XX1": ('k', 'p', 'M', None, 'N~6~-7H-PURIN-6-YL-L-LYSINE'),
   2.892 +"6OG": ('g', 'd', 'M', None, "6-O-METHYL GUANOSINE-5'-MONOPHOSPHATE"),
   2.893 +"0AF": ('w', 'p', 'M', None, '7-HYDROXY-L-TRYPTOPHAN'),
   2.894 +"G36": ('g', 'd', 'M', None, '"O6-ETHYL-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
   2.895 +"I": ('n', 'r', None, None, '"INOSINIC'),
   2.896 +"YOF": ('y', 'p', 'M', None, '3-FLUOROTYROSINE'),
   2.897 +"HPQ": ('f', 'p', 'M', None, 'HOMOPHENYLALANINYLMETHANE'),
   2.898 +"LCA": ('a', 'r', 'M', None, '"[(1R,3R,4R,7S)-7-HYDROXY-3-(ADENIN-9-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
   2.899 +"IU": ('u', 'r', 'M', None, '"5-IODOURIDINE-5\'-MONOPHOSPHATE"'),
   2.900 +"CYQ": ('c', 'p', 'M', None, '"2-AMINO-3-PHOSPHONOMETHYLSULFANYL-PROPIONIC'),
   2.901 +"M0H": ('c', 'p', 'M', None, 'S-(HYDROXYMETHYL)-L-CYSTEINE'),
   2.902 +"FA5": ('n', 'r', None, None, '"ADENOSINE-5\'-[PHENYLALANINYL-PHOSPHATE]"'),
   2.903 +"LVG": ('g', 'p', 'M', None, 'L-VINYLGLYCINE'),
   2.904 +"HPH": ('x', 'p', None, None, 'PHENYLALANINDIOL'),
   2.905 +"IRN": ('n', 'r', None, None, '1-(5-O-PHOSPHONO-BETA-D-RIBOFURANOSYL)-1H-IMIDAZOLE'),
   2.906 +"Y": ('a', 'd', 'M', None, "2'-DEOXY-N6-(S)STYRENE OXIDE ADENOSINE MONOPHOSPHATE"),
   2.907 +"IC": ('c', 'r', 'M', None, '"ISOCYTIDINE-5\'-MONOPHOSPHATE"'),
   2.908 +"4DP": ('w', 'p', 'M', None, '3-[5-(DIMETHYLAMINO)-1,3-DIOXO-1,3-DIHYDRO-2H-ISOINDOL-2-YL]-L-ALANINE'),
   2.909 +"HPE": ('f', 'p', 'M', None, 'HOMOPHENYLALANINE'),
   2.910 +"PR5": ('a', 'r', 'M', None, "PURINE RIBOSIDE-5'-MONOPHOSPHATE"),
   2.911 +"CDE": ('x', 'p', None, None, '1,2-DIMETHYL-PROPYLAMINE'),
   2.912 +"SDP": ('s', 'p', 'M', None, '"2-AMINO-3-(DIETHOXY-PHOSPHORYLOXY)-PROPIONIC'),
   2.913 +"GN7": ('g', 'd', 'M', None, '"N7-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
   2.914 +"ARV": ('x', 'p', None, None, '5-N-ALLYL-ARGININE'),
   2.915 +"2AT": ('t', 'd', 'M', None, "2'-O-ALLYL THYMIDINE-5'-MONOPHOSPHATE"),
   2.916 +"T66": ('x', 'p', None, None, '2-AMINOETHYLLYSINE-CARBONYLMETHYLENE-THYMINE'),
   2.917 +"LCK": ('k', 'p', 'M', None, '(Z)-N~6~-(2-CARBOXY-1-METHYLETHYLIDENE)-L-LYSINE'),
   2.918 +"EHP": ('f', 'p', 'M', None, '3-HYDROXYPHENYLALANINE'),
   2.919 +"CHP": ('g', 'p', 'M', None, '3-CHLORO-4-HYDROXYPHENYLGLYCINE'),
   2.920 +"HY3": ('p', 'p', 'M', None, '3-HYDROXYPROLINE'),
   2.921 +"THX": ('n', 'd', None, None, 'PHOSPHONIC ACID 6-({6-[6-(6-CARBAMOYL-3,6,7,8-TETRAHYDRO-3,6-DIAZA-AS-INDACENE-2-CARBONYL)-3,6,7,8-TETRAHYDRO-3,6-DIAZA-AS-INDOCENE-2-CARBONYL]-3,6,7,8-TETRAHYDRO-3,6-DIAZA-AS-INDACENE-2-CARBONL}-AMINO)-HEXYL ESTER 5-(5-METHYL-2,4-DIOXO-3,4-DIHYDRO-2H-PYRIMIDIN-1-YL)-TETRAHYDRO-FURAN-2-YLMETHYL ESTER'),
   2.922 +"LCH": ('n', 'd', None, None, '"[(1R,3R,4R,7S)-7-HYDROXY-3-(5-METHYLCYTOSIN-1-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
   2.923 +"4MF": ('n', 'd', None, None, '1-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-4-METHYL-1H-INDOLE'),
   2.924 +"DTR": ('w', 'p', 'M', None, 'D-TRYPTOPHAN'),
   2.925 +"MOD": ('x', 'p', None, None, '"L-METHIONYL'),
   2.926 +"4MM": ('x', 'p', None, None, '(1S)-1-CARBOXY-N,N,N-TRIMETHYL-3-(METHYLSULFANYL)PROPAN-1-AMINIUM'),
   2.927 +"ARO": ('r', 'p', 'M', None, '"C-GAMMA-HYDROXY'),
   2.928 +"GSS": ('g', 'd', 'M', None, "2'-DEOXY-N2-(S)STYRENE OXIDE GUANOSINE MONOPHOSPHATE"),
   2.929 +"DRZ": ('n', 'd', None, None, '"3\',4\'-DIHYDROXY-PENTANAL-5\'-PHOSPHATE"'),
   2.930 +"CCY": ('x', 'p', None, None, '2-(1-AMINO-2-MERCAPTO-ETHYL)-5-(4-HYDROXY-BENZYL)-3-(ETHANOYL)-3,5-DIHYDRO-IMIDAZOL-4-ONE'),
   2.931 +"TPQ": ('y', 'p', 'M', None, '5-(2-CARBOXY-2-AMINOETHYL)-2-HYDROXY-1,4-BENZOQUINONE'),
   2.932 +"5CS": ('c', 'p', 'M', None, '"2-AMINO-3-(CYSTEIN-S-YL)-ISOXAZOLIDIN-5-YL-ACETIC'),
   2.933 +"4OC": ('c', 'r', 'M', None, '"4N,O2\'-METHYLCYTIDINE-5\'-MONOPHOSPHATE"'),
   2.934 +"DRP": ('n', 'd', None, None, '"2-DEOXYRIBOFURANOSYL-PYRIDINE-5\'-MONOPHOSPHATE"'),
   2.935 +"BOR": ('r', 'p', 'M', None, '"(1R)-1-AMINO-4-{[(E)-AMINO(IMINO)METHYL]AMINO}BUTYLBORONIC'),
   2.936 +"DRT": ('t', 'd', 'M', None, "2'-DEOXY-L-RIBO-FURANOSYL THYMINE-5'-MONOPHOSPHATE"),
   2.937 +"CCS": ('c', 'p', 'M', None, '"CARBOXYMETHYLATED'),
   2.938 +"TS": ('n', 'd', None, None, '"THYMIDINE-5\'-THIOPHOSPHATE"'),
   2.939 +"MME": ('m', 'p', 'M', None, '"N-METHYL'),
   2.940 +"CCL": ('k', 'p', 'M', None, 'N~6~-[(CYCLOPENTYLOXY)CARBONYL]-D-LYSINE'),
   2.941 +"GSC": ('g', 'p', 'M', None, '"2-ETHYLTHIO'),
   2.942 +"DRM": ('n', 'd', None, None, '"{[(1R,2S)-2-(2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)CYCLOPENTYL]OXY}METHYLPHOSPHONIC'),
   2.943 +"4FB": ('p', 'p', 'M', None, '(4S)-4-FLUORO-L-PROLINE'),
   2.944 +"GYS": ('x', 'p', None, None, '"[(4Z)-2-(1-AMINO-2-HYDROXYETHYL)-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   2.945 +"NAL": ('a', 'p', 'M', None, 'BETA-(2-NAPHTHYL)-ALANINE'),
   2.946 +"6MT": ('a', 'r', 'M', None, '"TRANS-N6-METHYL-DEOXY-ADENOSINE-5\'-MONOPHOSPHATE"'),
   2.947 +"CCC": ('c', 'r', 'M', None, "CYTIDINE-5'-PHOSPHATE-2',3'-CYCLIC PHOSPHATE"),
   2.948 +"UMP": ('u', 'r', 'M', None, "2'-DEOXYURIDINE 5'-MONOPHOSPHATE"),
   2.949 +"ML3": ('k', 'p', 'M', None, '2-{[(2R)-2-AMINO-2-CARBOXYETHYL]SULFANYL}-N,N,N-TRIMETHYLETHANAMINIUM'),
   2.950 +"LPD": ('p', 'p', 'M', None, 'L-PROLINAMIDE'),
   2.951 +"OHI": ('h', 'p', 'M', None, '3-(2-OXO-2H-IMIDAZOL-4-YL)-L-ALANINE'),
   2.952 +"LYR": ('k', 'p', 'M', None, 'N~6~-[(2Z,4E,6E,8E)-3,7-DIMETHYL-9-(2,6,6-TRIMETHYLCYCLOHEX-1-EN-1-YL)NONA-2,4,6,8-TETRAENYL]LYSINE'),
   2.953 +"LYS": ('K', 'p', None, None, 'LYSINE'),
   2.954 +"LYX": ('k', 'p', 'M', None, "N''-(2-COENZYME A)-PROPANOYL-LYSINE"),
   2.955 +"CYA": ('c', 'p', 'M', None, '"TWO'),
   2.956 +"LYZ": ('k', 'p', 'M', None, '5-HYDROXYLYSINE'),
   2.957 +"ODP": ('n', 'r', None, None, '"4-OXO-NICOTINAMIDE-ADENINE'),
   2.958 +"C3Y": ('c', 'p', 'M', None, 'S-[(1S)-1-HYDROXY-1-(HYDROXYAMINO)ETHYL]-L-CYSTEINE'),
   2.959 +"POM": ('p', 'p', 'M', None, 'CIS-5-METHYL-4-OXOPROLINE'),
   2.960 +"LYM": ('k', 'p', 'M', None, 'DEOXY-METHYL-LYSINE'),
   2.961 +"LYN": ('k', 'p', 'M', None, '"2,6-DIAMINO-HEXANOIC'),
   2.962 +"GLQ": ('e', 'p', 'M', None, '"4-AMINO-5-OXO-PENTANOIC'),
   2.963 +"PIV": ('x', 'p', None, None, '"PIVALIC'),
   2.964 +"OHS": ('d', 'p', 'M', None, 'O-(CARBOXYSULFANYL)-4-OXO-L-HOMOSERINE'),
   2.965 +"X9A": ('x', 'p', None, None, 'amino[(3-{(2Z,5S,6S,9R,12S,13R,16R)-5,16-dicarboxy-2-ethylidene-12-[(1E,3E,5S,6R)-6-methoxy-3,5-dimethyl-7-phenylhepta-1,3-dien-1-yl]-1,6,13-trimethyl-3,7,10,14,19-pentaoxo-1,4,8,11,15-pentaazacyclononadecan-9-yl}propyl)amino]methaniminium'),
   2.966 +"SMT": ('n', 'r', None, None, '"2\'-[(METHYLTHIO)ETHYLOXY]-THYMIDINE-5\'-MONOPHOSPHATE"'),
   2.967 +"XAR": ('n', 'd', None, None, '"[(1R,4S,6S)-4-(6-AMINO-9H-PURIN-9-YL)-6-HYDROXYCYCLOHEX-2-EN-1-YL]METHYL'),
   2.968 +"CYD": ('c', 'p', 'M', None, '"2-AMINO-6-(CYSTEIN-S-YL)-5-OXO-HEXANOIC'),
   2.969 +"SVA": ('s', 'p', 'M', None, '"SERINE'),
   2.970 +"5HT": ('t', 'd', 'M', None, '5-HYDROXY-THYMIDINE'),
   2.971 +"5HU": ('n', 'd', None, None, '"5-HYDROXYMETHYLURIDINE-2\'-DEOXY-5\'-MONOPHOSPHATE"'),
   2.972 +"XAL": ('a', 'd', 'M', None, '"[(1S,4R,6R)-6-HYDROXY-4-(ADENIN-9-YL)CYCLOHEX-2-EN-1-YL]METHYL'),
   2.973 +"T": ('n', 'd', None, None, '"THYMIDINE-5\'-MONOPHOSPHATE"'),
   2.974 +"5HP": ('e', 'p', 'M', None, '"PYROGLUTAMIC'),
   2.975 +"4SC": ('c', 'd', 'M', None, "4'-THIO-2'-DEOXYCYTIDINE-5'-MONOPHOSPHATE GROUP"),
   2.976 +"CQR": ('x', 'p', None, None, '"[(4Z)-2-(AMINOMETHYL)-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   2.977 +"XAD": ('a', 'd', 'M', None, '9-(2,3-DIDEOXY-6-O-PHOSPHONO-BETA-D-ERYTHRO-HEXOPYRANOSYL)-9H-PURIN-6-AMINE'),
   2.978 +"XAE": ('n', 'd', None, None, '3-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-3H-IMIDAZO[4,5-G]QUINAZOLIN-8-AMINE'),
   2.979 +"TYI": ('y', 'p', 'M', None, '3,5-DIIODOTYROSINE'),
   2.980 +"VLL": ('x', 'p', None, None, '"(2S)-2,3-DIAMINOBUTANOIC'),
   2.981 +"2BD": ('n', 'd', None, None, "N1-(1-HYDROXY-3-BUTEN-2(S)-YL)-2'-DEOXYINOSINE MONO PHOSPHORIC ACID"),
   2.982 +"IIC": ('x', 'p', None, None, '"4-IMIDAZOLMETHYLENE-5-IMIDAZOLONE'),
   2.983 +"A66": ('x', 'p', None, None, '2-AMINOETHYLLYSINE-CARBONYLMETHYLENE-ADENINE'),
   2.984 +"2EG": ('g', 'd', 'M', None, "2'-DEOXY-N-ETHYLGUANOSINE 5'-PHOSPHATE"),
   2.985 +"2SA": ('n', 'r', None, None, '"2-[9-(3,4-DIHYDROXY-5-PHOSPHONOOXYMETHYL-TETRAHYDRO-FURAN-2-YL)-9H-PURIN-6-YLAMINO]-SUCCINIC'),
   2.986 +"2CO": ('c', 'p', 'M', None, 'S-HYDROPEROXYCYSTEINE'),
   2.987 +"TMD": ('t', 'p', 'M', None, '(6,7-DIHYDRO)4-[(E)-BUTENYL]-4,N-DIMETHYL-THREONINE'),
   2.988 +"CXM": ('m', 'p', 'M', None, 'N-CARBOXYMETHIONINE'),
   2.989 +"ALA": ('A', 'p', None, None, 'ALANINE'),
   2.990 +"GOM": ('g', 'r', 'M', None, 'GLUTAMOL-AMP'),
   2.991 +"2VA": ('v', 'p', 'M', None, '"2\'-(L-VALYL)AMINO-2\'-DEOXYADENOSINE"'),
   2.992 +"5BU": ('u', 'r', 'M', None, '"5-BROMO-URIDINE-5\'-MONOPHOSPHATE"'),
   2.993 +"IGU": ('g', 'd', 'M', None, '"2\'-DEOXYISOGUANINE-5\'-MONOPHOSPHATE"'),
   2.994 +"MLE": ('l', 'p', 'M', None, 'N-METHYLLEUCINE'),
   2.995 +"T39": ('n', 'r', None, None, "2'-O-METHOXYETHYLENE THYMIDINE 5'-MONOPHOSPHATE"),
   2.996 +"FLT": ('y', 'p', 'M', None, '"FLUOROMALONYL'),
   2.997 +"U37": ('u', 'r', 'M', None, "URIDINE 5'-MONOTHIOPHOSPHATE"),
   2.998 +"U36": ('u', 'r', 'M', None, '"2\'-O-METHYOXYETHYL-URIDINE-5\'-MONOPHOSPHATE"'),
   2.999 +"DHL": ('x', 'p', None, None, '2-AMINO-ETHANETHIOL'),
  2.1000 +"U33": ('n', 'd', None, None, "5-BROMO-2'-DEOXY URIDINE"),
  2.1001 +"TIH": ('a', 'p', 'M', None, 'BETA(2-THIENYL)ALANINE'),
  2.1002 +"SMF": ('f', 'p', 'M', None, '4-SULFOMETHYL-L-PHENYLALANINE'),
  2.1003 +"FLA": ('a', 'p', 'M', None, 'TRIFLUOROALANINE'),
  2.1004 +"HOB": ('n', 'd', None, None, '"CHOLEST-5-EN-3-YL'),
  2.1005 +"FLE": ('l', 'p', 'M', None, 'FUROYL-LEUCINE'),
  2.1006 +"VDL": ('x', 'p', None, None, '"(2R,3R)-2,3-DIAMINOBUTANOIC'),
  2.1007 +"A1P": ('n', 'd', None, None, '9-{2-DEOXY-5-O-[HYDROXY(OXIDO)PHOSPHINO]-BETA-L-ERYTHRO-PENTOFURANOSYL}-9H-PURIN-2-AMINE'),
  2.1008 +"0G6": ('x', 'p', None, None, 'D-PHENYLALANYL-N-[(1S)-4-{[AMINO(IMINIO)METHYL]AMINO}-1-(CHLOROACETYL)BUTYL]-L-PROLINAMIDE'),
  2.1009 +"LLY": ('k', 'p', 'M', None, 'NZ-(DICARBOXYMETHYL)LYSINE'),
  2.1010 +"DHI": ('h', 'p', 'M', None, 'D-HISTIDINE'),
  2.1011 +"RON": ('x', 'p', None, None, 'NORVALINE'),
  2.1012 +"PTH": ('y', 'p', 'M', None, 'CE1-METHYLENE-HYDROXY-PHOSPHOTYROSINE'),
  2.1013 +"T32": ('t', 'd', 'M', None, "6'-ALPHA-METHYL CARBOCYCLIC THYMIDINE 5'-MONOPHOSPHATE"),
  2.1014 +"LLP": ('k', 'p', 'M', None, '2-LYSINE(3-HYDROXY-2-METHYL-5-PHOSPHONOOXYMETHYL-PYRIDIN-4-YLMETHANE)'),
  2.1015 +"MNU": ('u', 'r', 'M', None, '"(2R,4S)-1-[(4R)-3,4-DIHYDROXYTETRAHYDROFURAN-2-YL]-5-[(METHYLAMINO)METHYL]-1,2,3,4-TETRAHYDROPYRIMIDINE-2,4-DIOL-5\'-MONOPHOSPHATE"'),
  2.1016 +"PTA": ('x', 'p', None, None, '"[(1-AMINO-3-METHYL-BUTYL)-HYDROXY-PHOSPHINOYL]-ACETIC'),
  2.1017 +"TZO": ('x', 'p', None, None, '"1,3-THIAZOLE-4-CARBOXYLIC'),
  2.1018 +"DBZ": ('a', 'p', 'M', None, '3-(BENZOYLAMINO)-L-ALANINE'),
  2.1019 +"MNL": ('l', 'p', 'M', None, '4,N-DIMETHYLNORLEUCINE'),
  2.1020 +"APN": ('a', 'd', 'M', None, '2-AMINOETHYLGLYCINE-CARBONYLMETHYLENE-ADENINE'),
  2.1021 +"OCY": ('c', 'p', 'M', None, 'HYDROXYETHYLCYSTEINE'),
  2.1022 +"BCS": ('c', 'p', 'M', None, 'BENZYLCYSTEINE'),
  2.1023 +"OSE": ('s', 'p', 'M', None, 'O-SULFO-L-SERINE'),
  2.1024 +"3TY": ('x', 'p', None, None, '3-[(3E)-3-(BENZYLHYDRAZONO)-4-HYDROXY-6-OXOCYCLOHEXA-1,4-DIEN-1-YL]-L-ALANINE'),
  2.1025 +"SCS": ('c', 'p', 'M', None, '3-(ETHYLDISULFANYL)-L-ALANINE'),
  2.1026 +"TYY": ('y', 'p', 'M', None, '3-(4-HYDROXY-3-IMINO-6-OXO-CYCLOHEXA-1,4-DIENYL)-ALANINE'),
  2.1027 +"0A5": ('n', 'p', 'M', None, 'N~2~-PROPANOYL-L-ASPARAGINE'),
  2.1028 +"PBT": ('n', 'd', None, None, '"[3-HYDROXY-5-(5-METHYL-2,4-DIOXOTETRAHYDRO-1(2H)-PYRIMIDINYL)TETRAHYDRO-2-FURANYL]METHYL'),
  2.1029 +"CWR": ('s', 'p', 'M', None, '"(4-METHYL-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL)ACETIC'),
  2.1030 +"TRO": ('w', 'p', 'M', None, '2-HYDROXY-TRYPTOPHAN'),
  2.1031 +"TRN": ('w', 'p', 'M', None, 'NZ2-TRYPTOPHAN'),
  2.1032 +"PYO": ('u', 'r', 'M', None, '"1-(BETA-D-RIBOFURANOSYL)-PYRIMIDIN-2-ONE-5\'-PHOSPHATE"'),
  2.1033 +"ZGU": ('g', 'r', 'M', None, '"(S)-1\'-(2\',3\'-DIHYDROXYPROPYL)-GUANINE"'),
  2.1034 +"TRG": ('k', 'p', 'M', None, '"L-(N,N'),
  2.1035 +"TRF": ('w', 'p', 'M', None, 'N1-FORMYL-TRYPTOPHAN'),
  2.1036 +"R1F": ('c', 'p', 'M', None, '3-{[(2,2,5,5-TETRAMETHYL-1-OXO-4-PHENYL-2,5-DIHYDRO-1H-PYRROLIUM-3-YL)METHYL]DISULFANYL}-D-ALANINE'),
  2.1037 +"M5M": ('c', 'r', 'M', None, '"2\'-(N-ACETAMIDE)-CYTIDINE-5\'-MONOPHOSPHATE"'),
  2.1038 +"PBF": ('f', 'p', 'M', None, 'PARA-(BENZOYL)-PHENYLALANINE'),
  2.1039 +"R1B": ('c', 'p', 'M', None, '3-{[(2,2,4,5,5-PENTAMETHYL-1-OXO-2,5-DIHYDRO-1H-PYRROLIUM-3-YL)METHYL]DISULFANYL}-L-ALANINE'),
  2.1040 +"DHA": ('a', 'p', 'M', None, '"2-AMINO-ACRYLIC'),
  2.1041 +"YCM": ('c', 'p', 'M', None, 'S-(2-AMINO-2-OXOETHYL)-L-CYSTEINE'),
  2.1042 +"R1A": ('c', 'p', 'M', None, '3-{[(2,2,5,5-TETRAMETHYL-1-OXO-2,5-DIHYDRO-1H-PYRROLIUM-3-YL)METHYL]DISULFANYL}-D-ALANINE'),
  2.1043 +"TRQ": ('w', 'p', 'M', None, '"2-AMINO-3-(6,7-DIOXO-6,7-DIHYDRO-1H-INDOL-3-YL)-PROPIONIC'),
  2.1044 +"TRP": ('W', 'p', None, None, 'TRYPTOPHAN'),
  2.1045 +"T23": ('n', 'r', None, None, '"2\'-O-METHYL-3\'-METHYL-3\'-DEOXY-ARABINOFURANOSYL-THYMINE-5\'-PHOSPHATE"'),
  2.1046 +"TRW": ('w', 'p', 'M', None, '"TRW3-(2-AMINO-3-HYDROXY-PROPYL)-6-(N\'-CYCLOHEXYL-HYDRAZINO)OCTAHYDRO-INDOL-7-OL"'),
  2.1047 +"4FW": ('w', 'p', 'M', None, '4-FLUOROTRYPTOPHANE'),
  2.1048 +"IVA": ('x', 'p', None, None, '"ISOVALERIC'),
  2.1049 +"VOL": ('x', 'p', None, None, 'L-VALINOL'),
  2.1050 +"6HT": ('t', 'd', 'M', None, '"1\',5\'-ANHYDRO-2\',3\'-DIDEOXY-2\'-(THYMIN-1-YL)-6\'-O-PHOSPHORYL-D-ARABINO-HEXITOL"'),
  2.1051 +"6HG": ('g', 'd', 'M', None, '"1\',5\'-ANHYDRO-2\',3\'-DIDEOXY-2\'-(GUANIN-9-YL)-6\'-O-PHOSPHORYL-D-ARABINO-HEXITOL"'),
  2.1052 +"MPJ": ('x', 'p', None, None, '"(1-AMINO-3-METHYLSULFANYL-PROPYL)-PHOSPHINIC'),
  2.1053 +"C43": ('c', 'r', 'M', None, '"2\'-O-METHYOXYETHYL-CYTIDINE-5\'-MONOPHOSPHATE"'),
  2.1054 +"MPH": ('x', 'p', None, None, '"(1-AMINO-3-METHYLSULFANYL-PROPYL)-PHOSPHONIC'),
  2.1055 +"AVN": ('x', 'p', None, None, '"(2S)-AMINO[(5S)-3-CHLORO-4,5-DIHYDROISOXAZOL-5-YL]ACETIC'),
  2.1056 +"M3L": ('k', 'p', 'M', None, 'N-TRIMETHYLLYSINE'),
  2.1057 +"C5C": ('c', 'p', 'M', None, '"S-CYCLOPENTYL'),
  2.1058 +"HTR": ('w', 'p', 'M', None, 'BETA-HYDROXYTRYPTOPHANE'),
  2.1059 +"MPQ": ('g', 'p', 'M', None, 'N-METHYL-ALPHA-PHENYL-GLYCINE'),
  2.1060 +"ESC": ('m', 'p', 'M', None, '"2-AMINO-4-ETHYL'),
  2.1061 +"3ME": ('n', 'd', None, None, '"PHOSPHORIC'),
  2.1062 +"TYS": ('y', 'p', 'M', None, 'O-SULFO-L-TYROSINE'),
  2.1063 +"6HA": ('a', 'd', 'M', None, '"1\',5\'-ANHYDRO-2\',3\'-DIDEOXY-2\'-(ADENIN-9-YL)-6\'-O-PHOSPHORYL-D-ARABINO-HEXITOL"'),
  2.1064 +"KCX": ('k', 'p', 'M', None, '"LYSINE'),
  2.1065 +"6HC": ('c', 'd', 'M', None, '"1\',5\'-ANHYDRO-2\',3\'-DIDEOXY-2\'-(CYTOSIN-1-YL)-6\'-O-PHOSPHORYL-D-ARABINO-HEXITOL"'),
  2.1066 +"AVC": ('a', 'r', 'M', None, '"ADENOSINE-5\'-MONOPHOSPHATE-2\',3\'-VANADATE"'),
  2.1067 +"GTP": ('g', 'r', 'M', None, '"GUANOSINE-5\'-TRIPHOSPHATE"'),
  2.1068 +"ACB": ('d', 'p', 'M', None, '"3-METHYL-ASPARTIC'),
  2.1069 +"2SI": ('x', 'p', None, None, '"2-O-SULFO-A-L-IDURONIC'),
  2.1070 +"NEM": ('h', 'p', 'M', None, '"NE2-METHYLATED'),
  2.1071 +"N7P": ('p', 'p', 'M', None, '1-ACETYL-D-PROLINE'),
  2.1072 +"SUB": ('x', 'p', None, None, '"3-PHENYL-2-{[4-(TOLUENE-4-SULFONYL)-THIOMORPHOLINE-3-CARBONYL]-AMINO}-PROPIONIC'),
  2.1073 +"2AG": ('g', 'p', 'M', None, '"(2S)-2-AMINOPENT-4-ENOIC'),
  2.1074 +"SUN": ('s', 'p', 'M', None, 'O-[(R)-(DIMETHYLAMINO)(ETHOXY)PHOSPHORYL]-L-SERINE'),
  2.1075 +"SUI": ('x', 'p', None, None, '"(3-AMINO-2,5-DIOXO-1-PYRROLIDINYL)ACETIC'),
  2.1076 +"ACL": ('r', 'p', 'M', None, 'DEOXY-CHLOROMETHYL-ARGININE'),
  2.1077 +"SUR": ('u', 'r', 'M', None, '"1-(BETA-D-RIBOFURANOSYL)-2-THIO-URACIL-5\'-PHOSPHATE"'),
  2.1078 +"BVP": ('n', 'd', None, None, '"(E)-5-(2-BROMOVINYL)-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
  2.1079 +"HFA": ('x', 'p', None, None, '"ALPHA-HYDROXY-BETA-PHENYL-PROPIONIC'),
  2.1080 +"LET": ('x', 'p', None, None, '(Z)-N^6-{3-CARBOXY-1-[(4-CARBOXY-2-OXOBUTOXY)METHYL]PROPYLIDENE}-L-LYSINE'),
  2.1081 +"0A8": ('c', 'p', 'M', None, 'S-[(2-CHLOROETHYL)CARBAMOYL]-L-CYSTEINE'),
  2.1082 +"D4P": ('x', 'p', None, None, '"(2S)-AMINO(4-HYDROXYPHENYL)ACETIC'),
  2.1083 +"2OT": ('t', 'd', 'M', None, "2'-O-[2-(N,N-DIMETHYLAMINOOXY)ETHYL] THYMIDINE-5'-MONOPHOSPHATE"),
  2.1084 +"NEP": ('h', 'p', 'M', None, 'N1-PHOSPHONOHISTIDINE'),
  2.1085 +"PMT": ('c', 'r', 'M', None, '"PHOSPHORIC'),
  2.1086 +"2DT": ('t', 'd', 'M', None, '"3\'-DEOXYTHYMIDINE-5\'-MONOPHOSPHATE"'),
  2.1087 +"MLY": ('k', 'p', 'M', None, 'N-DIMETHYL-LYSINE'),
  2.1088 +"AD2": ('a', 'd', 'M', None, '"2\'-DEOXY-ADENOSINE-3\'-5\'-DIPHOSPHATE"'),
  2.1089 +"CGA": ('e', 'p', 'M', None, '"CARBOXYMETHYLATED'),
  2.1090 +"NBQ": ('y', 'p', 'M', None, '2-HYDROXY-5-({1-[(2-NAPHTHYLOXY)METHYL]-3-OXOPROP-1-ENYL}AMINO)TYROSINE'),
  2.1091 +"ODS": ('x', 'p', None, None, '"4-METHYLPIPERAZIN-1-YL'),
  2.1092 +"7GU": ('g', 'd', 'M', None, '"7-DEAZA-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
  2.1093 +"SAH": ('c', 'p', 'M', None, 'S-ADENOSYL-L-HOMOCYSTEINE'),
  2.1094 +"2DF": ('n', 'd', None, None, '"N-(2-DEOXY-BETA-D-ERYTHO-PENTOFURANOSYL-5-PHOSPHATE)'),
  2.1095 +"2DA": ('a', 'd', 'M', None, '"2\',3\'-DIDEOXYADENOSINE-5\'-MONOPHOSPHATE"'),
  2.1096 +"PCC": ('p', 'p', 'M', None, '5-OXOPROLINE'),
  2.1097 +"ODA": ('x', 'p', None, None, '"9-AMINO-6,10-DIOXO-OCTAHYDRO-PYRIDAZINO[1,2-A][1,2]DIAZEPINE-1-CARBOXYLIC'),
  2.1098 +"2DO": ('x', 'p', None, None, '(2S)-2-AMINOHEXANE-1,1-DIOL'),
  2.1099 +"CGU": ('e', 'p', 'M', None, '"GAMMA-CARBOXY-GLUTAMIC'),
  2.1100 +"L2A": ('x', 'p', None, None, '"(2S,5S,8S,11S,15E,20S)-20-AMINO-2-(CARBOXYMETHYL)-11,20-DIMETHYL-5,8-BIS(2-METHYLPROPYL)-3,6,9,21-TETRAOXO-1,4,7,10-TETRAAZACYCLOHENICOS-15-ENE-11-CARBOXYLIC'),
  2.1101 +"DNG": ('l', 'p', 'M', None, 'N-FORMYL-D-NORLEUCINE'),
  2.1102 +"UMA": ('a', 'p', 'M', None, '"URIDINE-5\'-DIPHOSPHATE-N-ACETYLMURAMOYL-L-ALANINE"'),
  2.1103 +"PM3": ('f', 'p', 'M', None, '"2-AMINO-3-(4-PHOSPHONOMETHYL-PHENYL)-PROPIONIC'),
  2.1104 +"DNM": ('l', 'p', 'M', None, 'N-METHYL-D-NORLEUCINE'),
  2.1105 +"DNL": ('k', 'p', 'M', None, '6-AMINO-HEXANAL'),
  2.1106 +"GMA": ('e', 'p', 'M', None, '"4-AMIDO-4-CARBAMOYL-BUTYRIC'),
  2.1107 +"1LU": ('l', 'p', 'M', None, '"4-METHYL-PENTANOIC'),
  2.1108 +"CDV": ('x', 'p', None, None, '"3-METHYL-2-UREIDO-BUTYRIC'),
  2.1109 +"ADX": ('n', 'r', None, None, '"ADENOSINE-5\'-PHOSPHOSULFATE"'),
  2.1110 +"LKC": ('n', 'd', None, None, '4-AMINO-1-[(1S,3R,4R,7S)-7-HYDROXY-1-(HYDROXYMETHYL)-2,5-DIOXABICYCLO[2.2.1]HEPT-3-YL]-5-METHYLPYRIMIDIN-2(1H)-ONE'),
  2.1111 +"ADD": ('x', 'p', None, None, '"2,6,8-TRIMETHYL-3-AMINO-9-BENZYL-9-METHOXYNONANOIC'),
  2.1112 +"CUC": ('x', 'p', None, None, '"CYCLOHEXYLGLYCYL'),
  2.1113 +"DNP": ('a', 'p', 'M', None, '3-AMINO-ALANINE'),
  2.1114 +"DNS": ('k', 'p', 'M', None, 'N~6~-{[5-(DIMETHYLAMINO)-1-NAPHTHYL]SULFONYL}-L-LYSINE'),
  2.1115 +"DNR": ('c', 'd', 'M', None, "2'-DEOXY-N3-PROTONATED CYTIDINE-5'-MONOPHOSPHATE"),
  2.1116 +"CG1": ('g', 'r', 'M', None, '"5\'-O-[(R)-HYDROXY(METHOXY)PHOSPHORYL]GUANOSINE"'),
  2.1117 +"Z": ('c', 'd', 'M', None, 'ZEBULARINE'),
  2.1118 +"GMU": ('n', 'd', None, None, "2'-O-[(2-GUANIDINIUM)ETHYL]-5-METHYLURIDINE 5'-MONOPHOSPHATE"),
  2.1119 +"C99": ('x', 'p', None, None, '"{(2R)-2-[(1S,2R)-1-AMINO-2-HYDROXYPROPYL]-2-HYDROXY-4,5-DIOXOIMIDAZOLIDIN-1-YL}ACETIC'),
  2.1120 +"GDP": ('g', 'r', 'M', None, '"GUANOSINE-5\'-DIPHOSPHATE"'),
  2.1121 +"MED": ('m', 'p', 'M', None, 'D-METHIONINE'),
  2.1122 +"GDR": ('g', 'd', 'M', None, '"GUANOSINE-5\'-DIPHOSPHATE-RHAMNOSE"'),
  2.1123 +"MEA": ('f', 'p', 'M', None, 'N-METHYLPHENYLALANINE'),
  2.1124 +"LEF": ('l', 'p', 'M', None, '(4S)-5-FLUORO-L-LEUCINE'),
  2.1125 +"LEH": ('l', 'p', 'M', None, 'N-[12-(1H-IMIDAZOL-1-YL)DODECANOYL]-L-LEUCINE'),
  2.1126 +"CHG": ('x', 'p', None, None, '"CYCLOHEXYL-GLYCINE"'),
  2.1127 +"MEN": ('n', 'p', 'M', None, '"N-METHYL'),
  2.1128 +"G42": ('g', 'd', 'M', None, '"8-OXO-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
  2.1129 +"5CG": ('g', 'd', 'M', None, '"5\'-CHLORO-5\'-DEOXY-GUANOSINE"'),
  2.1130 +"T31": ('u', 'r', 'M', None, "THYMIDINE 5'-MONOTHIOPHOSPHATE"),
  2.1131 +"MEU": ('g', 'p', 'M', None, 'O-METHYL-GLYCINE'),
  2.1132 +"MET": ('M', 'p', None, None, 'METHIONINE'),
  2.1133 +"U34": ('u', 'r', 'M', None, "URIDINE 5'-MONOMETHYLPHOSPHATE"),
  2.1134 +"MEQ": ('q', 'p', 'M', None, 'N5-METHYLGLUTAMINE'),
  2.1135 +"MEP": ('u', 'r', 'M', None, '"PHOSPHORIC'),
  2.1136 +"B1P": ('n', 'd', None, None, '2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSE'),
  2.1137 +"IG": ('g', 'r', 'M', None, '"ISOGUANOSINE-5\'-MONOPHOSPHATE"'),
  2.1138 +"T2S": ('n', 'r', None, None, '"THYMIDINE-5\'-DITHIOPHOSPHORATE"'),
  2.1139 +"ZHP": ('n', 'r', None, None, '"(S)-1\'-(2\',3\'-DIHYDROXYPROPYL)-HYDROXYPYRIDONE"'),
  2.1140 +"AZK": ('k', 'p', 'M', None, '"(S)-2-AMINO-6-AZIDOHEXANOIC'),
  2.1141 +"U31": ('u', 'r', 'M', None, "2'-O-3-AMINOPROPYL 2'-DEOXYURIDINE-5'-MONOPHOSPHATE"),
  2.1142 +"LTR": ('w', 'p', 'M', None, 'L-TRYPTOPHAN'),
  2.1143 +"MSU": ('x', 'p', None, None, '"SUCCINIC'),
  2.1144 +"1PA": ('f', 'p', 'M', None, '"PHENYLMETHYLACETIC'),
  2.1145 +"MSP": ('a', 'p', 'M', None, '"5\'-O-[(L-METHIONYL)-SULPHAMOYL]ADENOSINE"'),
  2.1146 +"MSO": ('m', 'p', 'M', None, '"SELENOMETHIONINE'),
  2.1147 +"AZY": ('y', 'p', 'M', None, '3-AZIDO-L-TYROSINE'),
  2.1148 +"ENA": ('n', 'r', None, None, 'ETHENO-NAD'),
  2.1149 +"MSL": ('m', 'p', 'M', None, '"(2S)-2-AMINO-4-(METHYLSULFONIMIDOYL)BUTANOIC'),
  2.1150 +"PF5": ('f', 'p', 'M', None, '2,3,4,5,6-PENTAFLUORO-L-PHENYLALANINE'),
  2.1151 +"1PR": ('n', 'r', None, None, '"PHOSPHORIC'),
  2.1152 +"3AR": ('x', 'p', None, None, 'N-OMEGA-PROPYL-L-ARGININE'),
  2.1153 +"MSE": ('m', 'p', 'M', None, 'SELENOMETHIONINE'),
  2.1154 +"AZS": ('s', 'p', 'M', None, 'O-DIAZOACETYL-L-SERINE'),
  2.1155 +"MSA": ('g', 'p', 'M', None, '"(2-S-METHYL)'),
  2.1156 +"R2P": ('x', 'p', None, None, '"(2R)-2-AMINO-3-(4-HYDROXY-1,2,5-THIADIAZOL-3-YL)PROPANOIC'),
  2.1157 +"CAR": ('c', 'd', 'M', None, "CYTOSINE ARABINOSE-5'-PHOSPHATE"),
  2.1158 +"DAB": ('a', 'p', 'M', None, '"2,4-DIAMINOBUTYRIC'),
  2.1159 +"OTY": ('y', 'p', 'M', None, '"2-AMINO-3-(4-HYDROXY-6-OXOCYCLOHEXA-1,4-DIENYL)PROPANOIC'),
  2.1160 +"DAL": ('a', 'p', 'M', None, 'D-ALANINE'),
  2.1161 +"DAM": ('x', 'p', None, None, 'N-METHYL-ALPHA-BETA-DEHYDROALANINE'),
  2.1162 +"TT": ('n', 'd', None, None, '"[(1R,3R,4S,9R,10S,12R,15AS,15BR,18BR,18CS)-10-HYDROXY-15A,15B-DIMETHYL-13,15,16,18-TETRAOXOHEXADECAHYDRO-8H-9,12-EPOXY-1,4-METHANO-2,5,7-TRIOXA-12A,14,17,18A-TETRAAZACYCLOHEXADECA[1,2,3,4-DEF]BIPHENYLEN-3-YL]METHYL DIHYDROGEN PHOSPHATE"'),
  2.1163 +"IOY": ('f', 'p', 'M', None, 'P-IODO-D-PHENYLALANINE'),
  2.1164 +"DAH": ('f', 'p', 'M', None, '3,4-DIHYDROXYPHENYLALANINE'),
  2.1165 +"8MG": ('g', 'd', 'M', None, '"8-METHYL-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
  2.1166 +"BZG": ('n', 'd', None, None, '6-(BENZYLOXY)-9-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-9H-PURIN-2-AMINE'),
  2.1167 +"ARM": ('r', 'p', 'M', None, 'DEOXY-METHYL-ARGININE'),
  2.1168 +"DAR": ('r', 'p', 'M', None, 'D-ARGININE'),
  2.1169 +"DAS": ('d', 'p', 'M', None, '"D-ASPARTIC'),
  2.1170 +"MCY": ('c', 'd', 'M', None, '"5-METHYL-2\'-DEOXYCYTIDINE"'),
  2.1171 +"SGB": ('s', 'p', 'M', None, 'O-[(S)-METHYL(1-METHYLETHOXY)PHOSPHORYL]-L-SERINE'),
  2.1172 +"YRR": ('n', 'd', None, None, '"3-HYDROXY-PYRROLIDIN-2-YLMETHYL-MONOPHOSPHATE'),
  2.1173 +"NF2": ('n', 'r', None, None, '(1S)-1,4-ANHYDRO-1-(2,4-DIFLUORO-5-METHYLPHENYL)-5-O-PHOSPHONO-D-RIBITOL'),
  2.1174 +"CNU": ('u', 'r', 'M', None, '"5-CYANO-URIDINE-5\'-MONOPHOSPHATE"'),
  2.1175 +"E": ('a', 'd', 'M', None, "N-((-)-(7S,8R,9S,10R)[7,8,9-TRIHYDROXY-7,8,9,10-TETRA HYDROBENZO[A]PYREN-10-YL])-2'-DEOXY-ADENOSINE-5'-MONOPHOSPHATE"),
  2.1176 +"AA3": ('a', 'p', 'M', None, '"2-AMINOBUTYRIC'),
  2.1177 +"GVL": ('x', 'p', None, None, 'O-[(R)-{[(3R)-4-AMINO-3-HYDROXY-2,2-DIMETHYL-4-OXOBUTYL]OXY}(HYDROXY)PHOSPHORYL]-L-SERINE'),
  2.1178 +"TNR": ('s', 'p', 'M', None, 'O-(2-ACETAMIDO-2-DEOXY-ALPHA-D-GALACTOPYRANOSYL)-L-SERINE'),
  2.1179 +"HOL": ('n', 'd', None, None, '"CHOLEST-5-EN-3-YL'),
  2.1180 +"PTM": ('y', 'p', 'M', None, 'ALPHA-METHYL-O-PHOSPHOTYROSINE'),
  2.1181 +"AS": ('a', 'd', 'M', None, "2-DEOXY-ADENOSINE -5'-THIO-MONOPHOSPHATE"),
  2.1182 +"U": ('U', 'r', None, None, '"URIDINE-5\'-MONOPHOSPHATE"'),
  2.1183 +"ESB": ('y', 'p', 'M', None, '3-[(3E)-3-(ETHYLIMINO)-4-HYDROXY-6-OXOCYCLOHEXA-1,4-DIEN-1-YL]-L-ALANINE'),
  2.1184 +"DA2": ('x', 'p', None, None, 'NG,NG-DIMETHYL-L-ARGININE'),
  2.1185 +"TNB": ('c', 'p', 'M', None, 'S-(2,3,6-TRINITROPHENYL)CYSTEINE'),
  2.1186 +"RMP": ('a', 'd', 'M', None, '"2\'-DEOXY-ADENOSINE-5\'-RP-MONOMETHYLPHOSPHONATE"'),
  2.1187 +"SME": ('m', 'p', 'M', None, '"METHIONINE'),
  2.1188 +"NDF": ('f', 'p', 'M', None, 'N-(CARBOXYCARBONYL)-D-PHENYLALANINE'),
  2.1189 +"BOE": ('t', 'd', 'M', None, "2'-O-[2-(BENZYLOXY)ETHYL] THYMIDINE-5'-MONOPHOSPHATE"),
  2.1190 +"LGP": ('g', 'd', 'M', None, '"N9-1-HYDROXY-PROP-2-OXYMETHYL-GUANINE-3\'-MONOPHOSPHATE"'),
  2.1191 +"SCH": ('c', 'p', 'M', None, 'S-METHYL-THIO-CYSTEINE'),
  2.1192 +"T2T": ('n', 'd', None, None, '[(2S,3S,5R)-3-[(2S)-3-({[(2R,3S,4R,5R)-3-HYDROXY-4-METHOXY-5-(5-METHYL-2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)TETRAHYDROFURAN-2-YL]METHYL}AMINO)-2-METHYL-3-OXOPROPYL]-5-(5-METHYL-2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)TETRAHYDROFURAN-2-YL]METHYL DIHYDROGEN PHOSPHATE'),
  2.1193 +"PFF": ('f', 'p', 'M', None, '4-FLUORO-L-PHENYLALANINE'),
  2.1194 +"PCE": ('x', 'p', None, None, '"2-(3-AMINO-4-CYCLOHEXYL-2-HYDROXY-BUTYL)-PENT-4-YNOIC'),
  2.1195 +"DFO": ('x', 'p', None, None, '2,2-DIFLUORO-3-HYDROSTATINE'),
  2.1196 +"DXN": ('n', 'd', None, None, '(1R,3S,4R)-4-(PHOSPHOOXYMETHYL)-CYCLOPENTANE-1,3-DIOL'),
  2.1197 +"KGC": ('k', 'p', 'M', None, 'N~6~-[(2R)-2-CARBOXY-5-OXOTETRAHYDROFURAN-2-YL]-L-LYSINE'),
  2.1198 +"US1": ('n', 'd', None, None, "2'-DEOXY-3'-THIOURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
  2.1199 +"HHK": ('x', 'p', None, None, '"(2S)-2,8-DIAMINOOCTANOIC'),
  2.1200 +"DXD": ('n', 'd', None, None, '(1S,3S,4R)-4-(PHOSPHOOXYMETHYL)-CYCLOPENTANE-1,3-DIOL'),
  2.1201 +"ZCY": ('c', 'r', 'M', None, '"(S)-1\'-(2\',3\'-DIHYDROXYPROPYL)-CYTOSINE"'),
  2.1202 +"IEL": ('k', 'p', 'M', None, 'N~6~-[(1Z)-ETHANIMIDOYL]-L-LYSINE'),
  2.1203 +}
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/allpy/allpy_data/__init__.py	Thu Nov 18 19:38:05 2010 +0300
     3.3 @@ -0,0 +1,3 @@
     3.4 +""" 
     3.5 +Module that contains various data relevant to biological sequences.
     3.6 +"""
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/allpy/allpy_data/amino_acids.py	Thu Nov 18 19:38:05 2010 +0300
     4.3 @@ -0,0 +1,8 @@
     4.4 +
     4.5 +amino_acids = [
     4.6 +    'A', 'C', 'D', 'E', 'F', 
     4.7 +    'G', 'H', 'I', 'K', 'L', 
     4.8 +    'M', 'N', 'P', 'Q', 'R', 
     4.9 +    'S', 'T', 'V', 'W', 'Y',
    4.10 +]
    4.11 +
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/allpy/allpy_data/blossum62.py	Thu Nov 18 19:38:05 2010 +0300
     5.3 @@ -0,0 +1,28 @@
     5.4 +matrix = {
     5.5 +"A": {"A":  4, "R": -1, "N": -2, "D": -2, "C":  0, "Q": -1, "E": -1, "G":  0, "H": -2, "I": -1, "L": -1, "K": -1, "M": -1, "F": -2, "P": -1, "S":  1, "T":  0, "W": -3, "Y": -2, "V":  0, "B": -2, "Z": -1, "X":  0, "*": -4},
     5.6 +"R": {"A": -1, "R":  5, "N":  0, "D": -2, "C": -3, "Q":  1, "E":  0, "G": -2, "H":  0, "I": -3, "L": -2, "K":  2, "M": -1, "F": -3, "P": -2, "S": -1, "T": -1, "W": -3, "Y": -2, "V": -3, "B": -1, "Z":  0, "X": -1, "*": -4},
     5.7 +"N": {"A": -2, "R":  0, "N":  6, "D":  1, "C": -3, "Q":  0, "E":  0, "G":  0, "H":  1, "I": -3, "L": -3, "K":  0, "M": -2, "F": -3, "P": -2, "S":  1, "T":  0, "W": -4, "Y": -2, "V": -3, "B":  3, "Z":  0, "X": -1, "*": -4},
     5.8 +"D": {"A": -2, "R": -2, "N":  1, "D":  6, "C": -3, "Q":  0, "E":  2, "G": -1, "H": -1, "I": -3, "L": -4, "K": -1, "M": -3, "F": -3, "P": -1, "S":  0, "T": -1, "W": -4, "Y": -3, "V": -3, "B":  4, "Z":  1, "X": -1, "*": -4},
     5.9 +"C": {"A":  0, "R": -3, "N": -3, "D": -3, "C":  9, "Q": -3, "E": -4, "G": -3, "H": -3, "I": -1, "L": -1, "K": -3, "M": -1, "F": -2, "P": -3, "S": -1, "T": -1, "W": -2, "Y": -2, "V": -1, "B": -3, "Z": -3, "X": -2, "*": -4},
    5.10 +"Q": {"A": -1, "R":  1, "N":  0, "D":  0, "C": -3, "Q":  5, "E":  2, "G": -2, "H":  0, "I": -3, "L": -2, "K":  1, "M":  0, "F": -3, "P": -1, "S":  0, "T": -1, "W": -2, "Y": -1, "V": -2, "B":  0, "Z":  3, "X": -1, "*": -4},
    5.11 +"E": {"A": -1, "R":  0, "N":  0, "D":  2, "C": -4, "Q":  2, "E":  5, "G": -2, "H":  0, "I": -3, "L": -3, "K":  1, "M": -2, "F": -3, "P": -1, "S":  0, "T": -1, "W": -3, "Y": -2, "V": -2, "B":  1, "Z":  4, "X": -1, "*": -4},
    5.12 +"G": {"A":  0, "R": -2, "N":  0, "D": -1, "C": -3, "Q": -2, "E": -2, "G":  6, "H": -2, "I": -4, "L": -4, "K": -2, "M": -3, "F": -3, "P": -2, "S":  0, "T": -2, "W": -2, "Y": -3, "V": -3, "B": -1, "Z": -2, "X": -1, "*": -4},
    5.13 +"H": {"A": -2, "R":  0, "N":  1, "D": -1, "C": -3, "Q":  0, "E":  0, "G": -2, "H":  8, "I": -3, "L": -3, "K": -1, "M": -2, "F": -1, "P": -2, "S": -1, "T": -2, "W": -2, "Y":  2, "V": -3, "B":  0, "Z":  0, "X": -1, "*": -4},
    5.14 +"I": {"A": -1, "R": -3, "N": -3, "D": -3, "C": -1, "Q": -3, "E": -3, "G": -4, "H": -3, "I":  4, "L":  2, "K": -3, "M":  1, "F":  0, "P": -3, "S": -2, "T": -1, "W": -3, "Y": -1, "V":  3, "B": -3, "Z": -3, "X": -1, "*": -4},
    5.15 +"L": {"A": -1, "R": -2, "N": -3, "D": -4, "C": -1, "Q": -2, "E": -3, "G": -4, "H": -3, "I":  2, "L":  4, "K": -2, "M":  2, "F":  0, "P": -3, "S": -2, "T": -1, "W": -2, "Y": -1, "V":  1, "B": -4, "Z": -3, "X": -1, "*": -4},
    5.16 +"K": {"A": -1, "R":  2, "N":  0, "D": -1, "C": -3, "Q":  1, "E":  1, "G": -2, "H": -1, "I": -3, "L": -2, "K":  5, "M": -1, "F": -3, "P": -1, "S":  0, "T": -1, "W": -3, "Y": -2, "V": -2, "B":  0, "Z":  1, "X": -1, "*": -4},
    5.17 +"M": {"A": -1, "R": -1, "N": -2, "D": -3, "C": -1, "Q":  0, "E": -2, "G": -3, "H": -2, "I":  1, "L":  2, "K": -1, "M":  5, "F":  0, "P": -2, "S": -1, "T": -1, "W": -1, "Y": -1, "V":  1, "B": -3, "Z": -1, "X": -1, "*": -4},
    5.18 +"F": {"A": -2, "R": -3, "N": -3, "D": -3, "C": -2, "Q": -3, "E": -3, "G": -3, "H": -1, "I":  0, "L":  0, "K": -3, "M":  0, "F":  6, "P": -4, "S": -2, "T": -2, "W":  1, "Y":  3, "V": -1, "B": -3, "Z": -3, "X": -1, "*": -4},
    5.19 +"P": {"A": -1, "R": -2, "N": -2, "D": -1, "C": -3, "Q": -1, "E": -1, "G": -2, "H": -2, "I": -3, "L": -3, "K": -1, "M": -2, "F": -4, "P":  7, "S": -1, "T": -1, "W": -4, "Y": -3, "V": -2, "B": -2, "Z": -1, "X": -2, "*": -4},
    5.20 +"S": {"A":  1, "R": -1, "N":  1, "D":  0, "C": -1, "Q":  0, "E":  0, "G":  0, "H": -1, "I": -2, "L": -2, "K":  0, "M": -1, "F": -2, "P": -1, "S":  4, "T":  1, "W": -3, "Y": -2, "V": -2, "B":  0, "Z":  0, "X":  0, "*": -4},
    5.21 +"T": {"A":  0, "R": -1, "N":  0, "D": -1, "C": -1, "Q": -1, "E": -1, "G": -2, "H": -2, "I": -1, "L": -1, "K": -1, "M": -1, "F": -2, "P": -1, "S":  1, "T":  5, "W": -2, "Y": -2, "V":  0, "B": -1, "Z": -1, "X":  0, "*": -4},
    5.22 +"W": {"A": -3, "R": -3, "N": -4, "D": -4, "C": -2, "Q": -2, "E": -3, "G": -2, "H": -2, "I": -3, "L": -2, "K": -3, "M": -1, "F":  1, "P": -4, "S": -3, "T": -2, "W": 11, "Y":  2, "V": -3, "B": -4, "Z": -3, "X": -2, "*": -4},
    5.23 +"Y": {"A": -2, "R": -2, "N": -2, "D": -3, "C": -2, "Q": -1, "E": -2, "G": -3, "H":  2, "I": -1, "L": -1, "K": -2, "M": -1, "F":  3, "P": -3, "S": -2, "T": -2, "W":  2, "Y":  7, "V": -1, "B": -3, "Z": -2, "X": -1, "*": -4},
    5.24 +"V": {"A":  0, "R": -3, "N": -3, "D": -3, "C": -1, "Q": -2, "E": -2, "G": -3, "H": -3, "I":  3, "L":  1, "K": -2, "M":  1, "F": -1, "P": -2, "S": -2, "T":  0, "W": -3, "Y": -1, "V":  4, "B": -3, "Z": -2, "X": -1, "*": -4},
    5.25 +"B": {"A": -2, "R": -1, "N":  3, "D":  4, "C": -3, "Q":  0, "E":  1, "G": -1, "H":  0, "I": -3, "L": -4, "K":  0, "M": -3, "F": -3, "P": -2, "S":  0, "T": -1, "W": -4, "Y": -3, "V": -3, "B":  4, "Z":  0, "X": -1, "*": -4},
    5.26 +"Z": {"A": -1, "R":  0, "N":  0, "D":  1, "C": -3, "Q":  3, "E":  4, "G": -2, "H":  0, "I": -3, "L": -3, "K":  1, "M": -1, "F": -3, "P": -1, "S":  0, "T": -1, "W": -3, "Y": -2, "V": -2, "B":  0, "Z":  4, "X": -1, "*": -4},
    5.27 +"X": {"A":  0, "R": -1, "N": -1, "D": -1, "C": -2, "Q": -1, "E": -1, "G": -1, "H": -1, "I": -1, "L": -1, "K": -1, "M": -1, "F": -1, "P": -2, "S":  0, "T":  0, "W": -2, "Y": -1, "V": -1, "B": -1, "Z": -1, "X": -1, "*": -4},
    5.28 +"*": {"A": -4, "R": -4, "N": -4, "D": -4, "C": -4, "Q": -4, "E": -4, "G": -4, "H": -4, "I": -4, "L": -4, "K": -4, "M": -4, "F": -4, "P": -4, "S": -4, "T": -4, "W": -4, "Y": -4, "V": -4, "B": -4, "Z": -4, "X": -4, "*":  1}
    5.29 +}
    5.30 +
    5.31 +gaps = (-8, -4, -2, -1)
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/allpy/allpy_pdb.py	Thu Nov 18 19:38:05 2010 +0300
     6.3 @@ -0,0 +1,67 @@
     6.4 +
     6.5 +import re
     6.6 +from Bio.PDB import PDBParser
     6.7 +
     6.8 +""" Functions to get pdb information from fasta id
     6.9 +and to generate fasta id from pdb information
    6.10 +
    6.11 +pdb information: code, chain, model
    6.12 +
    6.13 +TODO: same for local pdb files
    6.14 +"""
    6.15 +
    6.16 +# for pdb-codes
    6.17 +re1 = re.compile(r"(^|[^a-z0-9])(?P<code>[0-9][0-9a-z]{3})([^a-z0-9](?P<chain>[0-9a-z ]?)(?P<model>[^a-z0-9]([0-9]{1,3}))?)?", re.I)
    6.18 +
    6.19 +#~ # for files
    6.20 +#~ re2 = re.compile(r"(^)([^^]+\.(ent|pdb))([^a-zA-Z0-9]([0-9A-Za-z ]?)([^a-zA-Z0-9]([0-9]{1,3}))?)?$")
    6.21 +
    6.22 +def std_id(pdb_id, pdb_chain, pdb_model=None):
    6.23 +    if pdb_model:
    6.24 +        return "%s_%s_%s" % \
    6.25 +        (pdb_id.lower().strip(), pdb_chain.upper().strip(), pdb_model)
    6.26 +    else:
    6.27 +        return "%s_%s" % \
    6.28 +        (pdb_id.lower().strip(), pdb_chain.upper().strip())
    6.29 +    
    6.30 +def pdb_id_parse(ID):
    6.31 +    match = re1.search(ID)
    6.32 +    if not match:
    6.33 +        return None
    6.34 +    d = match.groupdict()
    6.35 +    if 'chain' not in d or not d['chain']:
    6.36 +        d['chain'] = ' '
    6.37 +    if 'model' not in d or not d['model']:
    6.38 +        d['model'] = 0
    6.39 +    return d
    6.40 +    
    6.41 +    
    6.42 +def get_structure(file, name):
    6.43 +    return PDBParser().get_structure(name, file)
    6.44 +    
    6.45 +#~ def std_id_parse(ID):
    6.46 +    #~ """
    6.47 +    #~ Parse standart ID to pdb_code, chain and model
    6.48 +    #~ """
    6.49 +    #~ if '.ent' in ID.lower() or '.pdb' in ID.lower():
    6.50 +        #~ # it is file
    6.51 +        #~ parseO = self.re2.search(ID) # files
    6.52 +    #~ else:
    6.53 +        #~ parseO = self.re1.search(ID.lower()) # pdb codes
    6.54 +    #~ if not parseO:
    6.55 +        #~ return None
    6.56 +    #~ parse = parseO.groups()
    6.57 +    #~ if len(parse) < 2:
    6.58 +        #~ return None
    6.59 +    #~ code = parse[1]
    6.60 +    #~ chain = ''
    6.61 +    #~ model = None
    6.62 +    #~ if len(parse) >= 4:
    6.63 +        #~ chain = parse[3]
    6.64 +        #~ if chain:
    6.65 +            #~ chain = chain.upper()
    6.66 +        #~ if len(parse) >= 6:
    6.67 +            #~ if parse[5]:
    6.68 +                #~ model = parse[5]
    6.69 +    #~ return code, chain, model
    6.70 +    
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/allpy/block.py	Thu Nov 18 19:38:05 2010 +0300
     7.3 @@ -0,0 +1,172 @@
     7.4 +#!usr/bin/python
     7.5 +
     7.6 +import sys
     7.7 +
     7.8 +import alignment
     7.9 +import sequence
    7.10 +import monomer
    7.11 +import config
    7.12 +from graph import Graph
    7.13 +from Bio.PDB import Superimposer
    7.14 +from tempfile import NamedTemporaryFile
    7.15 +import os
    7.16 +from fasta import save_fasta
    7.17 +
    7.18 +class Block(object):
    7.19 +    """ Block of alignment
    7.20 +    
    7.21 +    Mandatory data:
    7.22 +    *   self.alignment -- alignment object, which the block belongs to
    7.23 +    *   self.sequences - set of sequence objects that contain monomers
    7.24 +        and/or gaps, that constitute the block
    7.25 +    *   self.positions -- list of positions of the alignment.body that
    7.26 +        are included in the block; position[i+1] is always to the right from position[i]
    7.27 +    
    7.28 +    Don't change self.sequences -- it may be a link to other block.sequences
    7.29 +    
    7.30 +    How to create a new block:
    7.31 +    >>> import alignment
    7.32 +    >>> import block
    7.33 +    >>> proj = alignment.Alignment(open("test.fasta"))
    7.34 +    >>> block1 = block.Block(proj)
    7.35 +    """
    7.36 +    
    7.37 +    def __init__(self, alignment, sequences=None, positions=None):
    7.38 +        """ Builds new block from alignment
    7.39 +        
    7.40 +        if sequences==None, all sequences are used
    7.41 +        if positions==None, all positions are used
    7.42 +        """
    7.43 +        if sequences == None:
    7.44 +            sequences = set(alignment.sequences) # copy
    7.45 +        if positions == None:
    7.46 +            positions = range(len(alignment))
    7.47 +        self.alignment = alignment
    7.48 +        self.sequences = sequences
    7.49 +        self.positions = positions
    7.50 +    
    7.51 +    def save_fasta(self, out_file, long_line=70, gap='-'):
    7.52 +        """ Saves alignment to given file in fasta-format 
    7.53 +        
    7.54 +        No changes in the names, descriptions or order of the sequences
    7.55 +        are made.
    7.56 +        """
    7.57 +        for sequence in self.sequences:
    7.58 +            alignment_monomers = self.alignment.body[sequence]
    7.59 +            block_monomers = [alignment_monomers[i] for i in self.positions]
    7.60 +            string = ''.join([m.type.code1 if m else '-' for m in block_monomers])
    7.61 +            save_fasta(out_file, string, sequence.name, sequence.description, long_line)
    7.62 +    
    7.63 +    def geometrical_cores(self, max_delta=config.delta, 
    7.64 +    timeout=config.timeout, minsize=config.minsize, 
    7.65 +    ac_new_atoms=config.ac_new_atoms,
    7.66 +    ac_count=config.ac_count):
    7.67 +        """ Returns length-sorted list of blocks, representing GCs
    7.68 +        
    7.69 +        max_delta -- threshold of distance spreading
    7.70 +        timeout -- Bron-Kerbosh timeout (then fast O(n ln n) algorithm)
    7.71 +        minsize -- min size of each core
    7.72 +        ac_new_atoms -- min part or new atoms in new alternative core
    7.73 +            current GC is compared with each of already selected GCs
    7.74 +            if difference is less then ac_new_atoms, current GC is skipped
    7.75 +            difference = part of new atoms in current core
    7.76 +        ac_count -- max number of cores (including main core)
    7.77 +            -1 means infinity
    7.78 +        If more than one pdb chain for some sequence provided, consider all of them
    7.79 +        cost is calculated as 1 / (delta + 1) 
    7.80 +            delta in [0, +inf) => cost in (0, 1]
    7.81 +        """
    7.82 +        nodes = self.positions
    7.83 +        lines = {}
    7.84 +        for i in self.positions:
    7.85 +            for j in self.positions:
    7.86 +                if i < j:
    7.87 +                    distances = []
    7.88 +                    for sequence in self.sequences:
    7.89 +                        for chain in sequence.pdb_chains:
    7.90 +                            m1 = self.alignment.body[sequence][i]
    7.91 +                            m2 = self.alignment.body[sequence][j]
    7.92 +                            if m1 and m2:
    7.93 +                                r1 = sequence.pdb_residues[chain][m1]
    7.94 +                                r2 = sequence.pdb_residues[chain][m2]
    7.95 +                                ca1 = r1['CA']
    7.96 +                                ca2 = r2['CA']
    7.97 +                                d = ca1 - ca2 # Bio.PDB feature
    7.98 +                                distances.append(d)
    7.99 +                    if len(distances) >= 2:
   7.100 +                        delta = max(distances) - min(distances)
   7.101 +                        if delta <= max_delta:
   7.102 +                            lines[Graph.line(i, j)] = 1.0 / (1.0 + max_delta)
   7.103 +        graph = Graph(nodes, lines)
   7.104 +        cliques = graph.cliques(timeout=timeout, minsize=minsize)
   7.105 +        GCs = []
   7.106 +        for clique in cliques:
   7.107 +            for GC in GCs:
   7.108 +                if len(clique - set(GC.positions)) < ac_new_atoms * len(clique):
   7.109 +                    break
   7.110 +            else:
   7.111 +                GCs.append(Block(self.alignment, self.sequences, clique))
   7.112 +                if ac_count != -1 and len(GCs) >= ac_count:
   7.113 +                    break
   7.114 +        return GCs
   7.115 +    
   7.116 +    def xstring(self, x='X', gap='-'):
   7.117 +        """ Returns string consisting of gap chars and chars x at self.positions
   7.118 +        
   7.119 +        Length of returning string = length of alignment
   7.120 +        """
   7.121 +        monomers = [False] * len(self.alignment)
   7.122 +        for i in self.positions:
   7.123 +            monomers[i] = True
   7.124 +        return ''.join([x if m else gap for m in monomers])
   7.125 +    
   7.126 +    def save_xstring(self, out_file, name, description='', x='X', gap='-', long_line=70):
   7.127 +        """ Save xstring and name in fasta format """
   7.128 +        save_fasta(out_file, self.xstring(x=x, gap=gap), name, description, long_line)
   7.129 +    
   7.130 +    def monomers(self, sequence):
   7.131 +        """ Iterates monomers of this sequence from this block """
   7.132 +        alignment_sequence = self.alignment.body[sequence]
   7.133 +        return (alignment_sequence[i] for i in self.positions)
   7.134 +    
   7.135 +    def ca_atoms(self, sequence, pdb_chain):
   7.136 +        """ Iterates Ca-atom of monomers of this sequence from this block  """
   7.137 +        return (sequence.pdb_residues[pdb_chain][monomer] for monomer in self.monomers())
   7.138 +    
   7.139 +    def sequences_chains(self):
   7.140 +        """ Iterates pairs (sequence, chain) """
   7.141 +        for sequence in self.alignment.sequences:
   7.142 +            if sequence in self.sequences:
   7.143 +                for chain in sequence.pdb_chains:
   7.144 +                    yield (sequence, chain)
   7.145 +    
   7.146 +    def superimpose(self):
   7.147 +        """ Superimpose all pdb_chains in this block """
   7.148 +        sequences_chains = list(self.sequences_chains())
   7.149 +        if len(sequences_chains) >= 1:
   7.150 +            sup = Superimposer()
   7.151 +            fixed_sequence, fixed_chain = sequences_chains.pop()
   7.152 +            fixed_atoms = self.ca_atoms(fixed_sequence, fixed_chain)
   7.153 +            for sequence, chain in sequences_chains:
   7.154 +                moving_atoms =  self.ca_atoms(sequence, chain)
   7.155 +                sup.set_atoms(fixed_atoms, moving_atoms)
   7.156 +                # Apply rotation/translation to the moving atoms
   7.157 +                sup.apply(moving_atoms)
   7.158 +    
   7.159 +    def pdb_save(self, out_file):
   7.160 +        """ Save all sequences 
   7.161 +        
   7.162 +        Returns {(sequence, chain): CHAIN}
   7.163 +        CHAIN is chain letter in new file
   7.164 +        """
   7.165 +        tmp_file = NamedTemporaryFile(delete=False)
   7.166 +        tmp_file.close()
   7.167 +        
   7.168 +        for sequence, chain in self.sequences_chains():
   7.169 +            sequence.pdb_save(tmp_file.name, chain)
   7.170 +            # TODO: read from tmp_file.name
   7.171 +            # change CHAIN
   7.172 +            # add to out_file
   7.173 +        
   7.174 +        os.unlink(NamedTemporaryFile)
   7.175 +    
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/allpy/config.py	Thu Nov 18 19:38:05 2010 +0300
     8.3 @@ -0,0 +1,18 @@
     8.4 +
     8.5 +delta = 2.0 # for geometrical core building
     8.6 +minsize = 20 # min size of returning cores
     8.7 +maxabsent = 0.15 # deprecated?
     8.8 +
     8.9 +# pdb download url (XXXX is pdb code place)
    8.10 +pdb_url = 'http://www.pdb.org/pdb/files/%s.pdb'
    8.11 +pdb_dir = '/tmp/%s.pdb'
    8.12 +timeout = 10 # time in sec. for BRON-KERBOSH algorithm
    8.13 +
    8.14 +
    8.15 +# min part or new atoms in new alternative core
    8.16 +ac_new_atoms = 0.5
    8.17 +
    8.18 +# max number of cores (including main core)
    8.19 +ac_count = 5
    8.20 +
    8.21 +
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/allpy/fasta.py	Thu Nov 18 19:38:05 2010 +0300
     9.3 @@ -0,0 +1,21 @@
     9.4 +def save_fasta(out_file, string, name, description='', long_line=70):
     9.5 +    """ Saves given string to out_file in fasta_format 
     9.6 +    
     9.7 +    Splits long lines to substrings of length=long_line
     9.8 +    To prevent this, set long_line=None 
     9.9 +    """
    9.10 +    out_file.write(">%(name)s %(description)s \n" % {'name':name, 'description':description})        
    9.11 +    if long_line:
    9.12 +        for i in range(0, len(string) // long_line + 1):
    9.13 +            out_file.write("%s \n" % string[i*long_line : i*long_line + long_line])
    9.14 +    else:
    9.15 +        out_file.write("%s \n" % string)
    9.16 +
    9.17 +def determine_long_line(in_file):
    9.18 +    """ Returns maximum sequence line length in fasta file """
    9.19 +    sequences = in_file.read().split('>')
    9.20 +    for sequence in sequences[1:]:
    9.21 +        lines = sequence.split('\n')[1:]
    9.22 +        if len(lines) >= 2:
    9.23 +            return len(lines[0].strip())
    9.24 +    return 70
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/allpy/graph.py	Thu Nov 18 19:38:05 2010 +0300
    10.3 @@ -0,0 +1,288 @@
    10.4 +# -*- coding: utf-8 -*- 
    10.5 +
    10.6 +from datetime import datetime, timedelta
    10.7 +from copy import copy
    10.8 +
    10.9 +class TimeoutError(Exception):
   10.10 +    pass
   10.11 +
   10.12 +
   10.13 +
   10.14 +class Graph(object):
   10.15 +    """ Undirected weighted graph
   10.16 +    
   10.17 +    Data:
   10.18 +    nodes -- set of elements
   10.19 +    lines -- {line: cost}. 
   10.20 +        line is frozenset([e1, e2])
   10.21 +        cost is float in (0, 1] or 1 (if all lines are equal)
   10.22 +        
   10.23 +    >>> g = Graph(set([1,2,3]), {frozenset([1,2]): 1})
   10.24 +    >>> g.fast_cliques()
   10.25 +    Fast algorithm started
   10.26 +    [frozenset([1, 2]), frozenset([3])]
   10.27 +    >>> g = Graph(set([1,2,3]), {frozenset([1,2]): 1, frozenset([1,1]): 1})
   10.28 +    >>> g.fast_cliques()
   10.29 +    Fast algorithm started
   10.30 +    [frozenset([1, 2]), frozenset([3])]
   10.31 +    >>> g = Graph(set([1,2,3,4]), {frozenset([1,2]): 0.98, frozenset([1,3]): 0.98,
   10.32 +    ... frozenset([2,3]): 0.1, frozenset([1,1]): 1})
   10.33 +    >>> g.fast_cliques()
   10.34 +    Fast algorithm started
   10.35 +    [frozenset([1, 2, 3]), frozenset([4])]
   10.36 +    >>> g.bron_kerbosh()
   10.37 +    Bron and Kerbosh algorithm started
   10.38 +    [frozenset([1, 2, 3]), frozenset([4])]
   10.39 +    >>> g.cliques()
   10.40 +    Bron and Kerbosh algorithm started
   10.41 +    [frozenset([1, 2, 3])]
   10.42 +    """
   10.43 +    
   10.44 +    def __init__(self, nodes=None, lines=None):
   10.45 +        if not nodes:
   10.46 +            nodes = set()
   10.47 +        if not lines:
   10.48 +            lines = dict()
   10.49 +        self.nodes = set(nodes) # copy
   10.50 +        self.lines = {}
   10.51 +        for line, cost in lines.items():
   10.52 +            if len(line) == 2 and line.issubset(self.nodes):
   10.53 +                self.lines[line] = cost
   10.54 +        
   10.55 +    @staticmethod
   10.56 +    def line(k1, k2):
   10.57 +        """ Construct object, representing line of graph """
   10.58 +        return frozenset([k1, k2])
   10.59 +    
   10.60 +    def bounded(self, k1, k2):
   10.61 +        """ Return if these two nodes of the graph are bounded with line """
   10.62 +        return k1 == k2 or Graph.line(k1, k2) in self.lines
   10.63 +    
   10.64 +    def count_one(self, node):
   10.65 +        """ Returns number of connections of this node """
   10.66 +        return len([node1 for node1 in self.nodes if self.bounded(node, node1)]) - 1
   10.67 +    
   10.68 +    def cost_one(self, node):
   10.69 +        """ Returns sum of costs of all connections of this node """
   10.70 +        return sum([self.lines.get(Graph.line(node, node1), 0) 
   10.71 +        for node1 in self.nodes if node != node1])
   10.72 +    
   10.73 +    def count_all(self):
   10.74 +        """ Returns {node: number of connections of this node} """
   10.75 +        c = dict([(node, 0) for node in self.nodes])
   10.76 +        for line in self.lines:
   10.77 +            for node in line:
   10.78 +                c[node] += 1
   10.79 +        return c
   10.80 +    
   10.81 +    
   10.82 +    def drop_node(self, node):
   10.83 +        """ Remove node and all involved lines """
   10.84 +        for node1 in self.nodes:
   10.85 +            self.lines.pop(Graph.line(node, node1), None)
   10.86 +        self.nodes.discard(node)
   10.87 +    
   10.88 +    def add_node(self, node, parent_graph):
   10.89 +        """ Add node and corresponding lines from parent_graph
   10.90 +        
   10.91 +        Added lines should be contained in self graph
   10.92 +        (takes care of hanging lines)
   10.93 +        """
   10.94 +        self.nodes.add(node)
   10.95 +        for node1 in self.nodes:
   10.96 +            line = Graph.line(node, node1)
   10.97 +            if line in parent_graph.lines:
   10.98 +                self.lines[line] = parent_graph.lines[line]
   10.99 +    
  10.100 +    def drop_nodes(self, nodes):
  10.101 +        """ Run drop_node for each of given nodes
  10.102 +        
  10.103 +        Returns if nodes was not empty (ugly beauty)
  10.104 +        """
  10.105 +        for node in nodes:
  10.106 +            self.drop_node(node)
  10.107 +        return bool(nodes)
  10.108 +    
  10.109 +    def drop_if_count(self, minsize):
  10.110 +        """ Run drop_node for each node, that has less than minsize lines """
  10.111 +        while True:
  10.112 +            if not self.drop_nodes([node for (node, count) 
  10.113 +            in self.count_all().items() if count < minsize]):
  10.114 +                break
  10.115 +     
  10.116 +    def bron_kerbosh(self, timeout=-1, minsize=1):
  10.117 +        """ Bron and Kerboch algorithm implementation
  10.118 +        
  10.119 +        returns list of cliques
  10.120 +        clique is frozenset
  10.121 +        if timeout=-1, it means infinity
  10.122 +        if timeout has happened, raises TimeoutError
  10.123 +        
  10.124 +        lava flow
  10.125 +        """
  10.126 +        print 'Bron and Kerbosh algorithm started'
  10.127 +        cliques = []
  10.128 +        
  10.129 +        depth = 0
  10.130 +        list_candidates = [copy(self.nodes)]
  10.131 +        list_used = [set()]
  10.132 +        compsub = []
  10.133 +        
  10.134 +        start_time = datetime.now()
  10.135 +        timeout_timedelta = timedelta(timeout)
  10.136 +        
  10.137 +        while True: # ПОКА...
  10.138 +            if depth == -1:
  10.139 +                break  # ВСЕ! Все рекурсии (итерации) пройдены
  10.140 +            candidates = copy(list_candidates[depth])
  10.141 +            used = copy(list_used[depth])       
  10.142 +            if not candidates: # ПОКА candidates НЕ пусто
  10.143 +                depth -= 1
  10.144 +                if compsub:
  10.145 +                    compsub.pop()                
  10.146 +                continue
  10.147 +            
  10.148 +            # И used НЕ содержит вершины, СОЕДИНЕННОЙ СО ВСЕМИ вершинами из candidates
  10.149 +            # (все из used НЕ соединены хотя бы с 1 из candidates)
  10.150 +            used_candidates = False
  10.151 +        
  10.152 +            for used1 in used:
  10.153 +                for candidates1 in candidates:
  10.154 +                    if not self.bounded(used1, candidates1):
  10.155 +                        break
  10.156 +                else:
  10.157 +                    used_candidates = True             
  10.158 +
  10.159 +            if used_candidates:
  10.160 +                depth -= 1
  10.161 +
  10.162 +                if compsub:
  10.163 +                    compsub.pop()
  10.164 +                continue
  10.165 +            
  10.166 +            # Выбираем вершину v из candidates и добавляем ее в compsub
  10.167 +            v = candidates.pop()
  10.168 +            candidates.add(v)
  10.169 +            compsub.append(v)
  10.170 +            # Формируем new_candidates и new_used, удаляя из candidates и used вершины, НЕ соединенные с v
  10.171 +            # (то есть, оставляя только соединенные с v)
  10.172 +            new_candidates = set()
  10.173 +            for candidates1 in candidates:
  10.174 +                if self.bounded(candidates1, v) and candidates1 != v:
  10.175 +                    new_candidates.add(candidates1)
  10.176 +
  10.177 +            new_used = set()
  10.178 +            for used1 in used:
  10.179 +                if self.bounded(used1, v) and used1 != v:
  10.180 +                    new_used.add(used1)
  10.181 +            
  10.182 +            # Удаляем v из candidates и помещаем в used
  10.183 +            list_candidates[depth].remove(v)    
  10.184 +            list_used[depth].add(v)
  10.185 +            # ЕСЛИ new_candidates и new_used пусты
  10.186 +            if not new_candidates and not new_used:
  10.187 +                # compsub ? клика
  10.188 +                if len(compsub) >= minsize:
  10.189 +                    cliques.append(frozenset(compsub))
  10.190 +            else:
  10.191 +                # ИНАЧЕ рекурсивно вызываем bron_kerbosh(new_candidates, new_used)
  10.192 +                depth += 1
  10.193 +
  10.194 +                # TIMEOUT check start
  10.195 +                if timeout != -1:
  10.196 +                    if datetime.now() - start_time > timeout_timedelta:
  10.197 +                        raise TimeoutError
  10.198 +                # TIMEOUT check end
  10.199 +                
  10.200 +                if depth >= len(list_candidates):
  10.201 +                    list_candidates.append(set())
  10.202 +                    list_used.append(set())
  10.203 +
  10.204 +                list_candidates[depth] = copy(new_candidates)
  10.205 +                list_used[depth] = copy(new_used)
  10.206 +                
  10.207 +                continue
  10.208 +            
  10.209 +            # Удаляем v из compsub
  10.210 +            if compsub:
  10.211 +                compsub.pop()
  10.212 +                
  10.213 +        return cliques
  10.214 +
  10.215 +    
  10.216 +    def fast_cliques(self, minsize=1):
  10.217 +        """ returns list of cliques
  10.218 +        
  10.219 +        clique is frozenset
  10.220 +        """
  10.221 +        print 'Fast algorithm started'
  10.222 +        cliques = []
  10.223 +        
  10.224 +        while True:
  10.225 +            graph = Graph(self.nodes, self.lines)
  10.226 +            for clique in cliques:
  10.227 +                graph.drop_nodes(clique)
  10.228 +            if not graph.nodes:
  10.229 +                break
  10.230 +            
  10.231 +            while True: 
  10.232 +                # drop nodes, while its is possible
  10.233 +                if len(graph.nodes) == 1:
  10.234 +                    break
  10.235 +                c = graph.count_all()
  10.236 +                min_count = min(c.values())
  10.237 +                bad_nodes = [node for (node, count) in c.items() if count == min_count]
  10.238 +                if len(bad_nodes) == len(graph.nodes) and min_count != 0:
  10.239 +                    break
  10.240 +                
  10.241 +                costs = dict([(node, graph.cost_one(node)) for node in bad_nodes])
  10.242 +                min_cost = min(costs.values())
  10.243 +                for node, cost in costs.items():
  10.244 +                    if cost == min_cost:
  10.245 +                        graph.drop_node(node)
  10.246 +                        break
  10.247 +            
  10.248 +            while True:
  10.249 +                # add nodes, while its is possible
  10.250 +                candidats = {}
  10.251 +                for node in self.nodes:
  10.252 +                    c = len([i for i in graph.nodes if self.bounded(node, i)])
  10.253 +                    if c == len(self.nodes):
  10.254 +                        graph1 = Graph(graph.nodes, graph.lines)
  10.255 +                        graph1.add_node(node, self)
  10.256 +                        candidats[node] = graph1.cost_one(node)
  10.257 +                if not candidats:
  10.258 +                    break
  10.259 +                
  10.260 +                max_cost = max(candidats.values())
  10.261 +                node = [node for (node, cost) in candidats.items() if cost == max_cost][0]
  10.262 +                graph.add_node(node, self)
  10.263 +                
  10.264 +            cliques.append(frozenset(graph.nodes))
  10.265 +            
  10.266 +        return cliques
  10.267 +        
  10.268 +    
  10.269 +    def cliques(self, timeout=-1, minsize=1):
  10.270 +        """ returns length-sorted list of cliques
  10.271 +        
  10.272 +        clique is frozenset
  10.273 +        
  10.274 +        can change self!
  10.275 +        
  10.276 +        try to execute bron_kerbosh
  10.277 +        if it raises TimeoutError, executes fast_cliques
  10.278 +        """
  10.279 +        
  10.280 +        self.drop_if_count(minsize)
  10.281 +        
  10.282 +        try:
  10.283 +            cliques = self.bron_kerbosh(timeout, minsize)
  10.284 +            cliques.sort(key=lambda clique: len(clique), reverse=True)
  10.285 +        except TimeoutError:
  10.286 +            cliques = self.fast_cliques(minsize)
  10.287 +        return cliques
  10.288 +
  10.289 +if __name__ == "__main__":
  10.290 +    import doctest
  10.291 +    doctest.testmod()
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/allpy/markup.py	Thu Nov 18 19:38:05 2010 +0300
    11.3 @@ -0,0 +1,13 @@
    11.4 +from alignment import Alignment
    11.5 +
    11.6 +"""
    11.7 +Markup class: alignment + list of blocks
    11.8 +
    11.9 +Mandatory data:
   11.10 +    * blocks -- list of blocks
   11.11 +"""
   11.12 +
   11.13 +class Markup(Alignment):
   11.14 +    def from_fasta():
   11.15 +
   11.16 +    def save_fasta():
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/allpy/monomer.py	Thu Nov 18 19:38:05 2010 +0300
    12.3 @@ -0,0 +1,105 @@
    12.4 +#!/usr/bin/python
    12.5 +
    12.6 +from allpy_data.AAdict import AAdict
    12.7 +import Bio.PDB
    12.8 +
    12.9 +index_code3 = {}
   12.10 +index_code1_protein = {}
   12.11 +index_code1_nucleotide = {}
   12.12 +index_name = {}
   12.13 +
   12.14 +
   12.15 +class MonomerType(object):
   12.16 +    """ Monomer type
   12.17 +    
   12.18 +    name -- string like "Valine" 
   12.19 +    code1 -- one-letter code (in upper case)
   12.20 +    code3 -- three-letter code (in upper case)
   12.21 +    is_modified -- True of False
   12.22 +    """
   12.23 +    def __init__(self, name, code1, code3, is_modified=False):
   12.24 +        self.name = name.capitalize()
   12.25 +        self.code1 = code1.upper()
   12.26 +        self.code3 = code3.upper()
   12.27 +        self.is_modified = bool(is_modified) # ugly
   12.28 +        
   12.29 +        index_name[self.name] = self
   12.30 +        index_code3[self.code3] = self
   12.31 +    
   12.32 +    @staticmethod
   12.33 +    def from_code3(code3):
   12.34 +        return index_code3[code3.upper()]
   12.35 +    @staticmethod
   12.36 +    def from_name(name):
   12.37 +        return index_name[name.capitalize()]
   12.38 +      
   12.39 +    @staticmethod
   12.40 +    def from_pdb_residue(pdb_residue):
   12.41 +        return MonomerType.from_code3(pdb_residue.get_resname())
   12.42 +        
   12.43 +    # TO DISCUSS
   12.44 +    def __eq__(self, other):
   12.45 +        return self.code1 == other.code1
   12.46 +
   12.47 +    def __ne__(self, other):
   12.48 +        return not (self == other)
   12.49 +
   12.50 +
   12.51 +class Monomer(object):
   12.52 +    """ Monomer 
   12.53 +    
   12.54 +    type -- link to MonomerType object
   12.55 +    """
   12.56 +    def __init__(self, monomer_type):
   12.57 +        self.type = monomer_type
   12.58 +        
   12.59 +    def __eq__(self, other):
   12.60 +        return self.type == other.type
   12.61 +
   12.62 +    def __ne__(self, other):
   12.63 +        return not (self == other)
   12.64 +
   12.65 +class AminoAcidType(MonomerType):
   12.66 +    def __init__(self, name, code1, code3, is_modified=False):
   12.67 +        MonomerType.__init__(self, name, code1, code3, is_modified)
   12.68 +        if not is_modified:
   12.69 +            index_code1_protein[self.code1] = self
   12.70 +
   12.71 +    @staticmethod
   12.72 +    def from_code1(code1):
   12.73 +        return index_code1_protein[code1.upper()]
   12.74 +    def instance(self):
   12.75 +        """ Returns new AminoAcid object of this type """
   12.76 +        return AminoAcid(self)
   12.77 +
   12.78 +class DNAType(MonomerType):
   12.79 +    def __init__(self, name, code1, code3, is_modified=False):
   12.80 +        MonomerType.__init__(self, name, code1, code3, is_modified)
   12.81 +        if not is_modified:
   12.82 +	    index_code1_nucleotide[self.code1] = self
   12.83 +
   12.84 +    @staticmethod
   12.85 +    def from_code1(code1):
   12.86 +        return index_code1_nucleotide[code1.upper()]
   12.87 +    def instance(self):
   12.88 +        """ Returns new AminoAcid object of this type """
   12.89 +        return DNA(self)
   12.90 +
   12.91 +class AminoAcid(Monomer):
   12.92 +    """  Amino acid """
   12.93 +    pass
   12.94 +
   12.95 +class DNA(Monomer):
   12.96 +    """ Deoxyribonucleic acid  """
   12.97 +    pass
   12.98 +
   12.99 +# prepare all aminoacids
  12.100 +
  12.101 +for code3, data in AAdict.items():
  12.102 +    code1, m_type, is_modified, none, name = data
  12.103 +    if m_type == 'p':
  12.104 +        AminoAcidType(name, code1, code3, is_modified)
  12.105 +    if m_type == 'd':
  12.106 +        DNAType(name, code1, code3, is_modified)
  12.107 +del code3, data, code1, m_type, is_modified, none, name
  12.108 +
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/allpy/sequence.py	Thu Nov 18 19:38:05 2010 +0300
    13.3 @@ -0,0 +1,214 @@
    13.4 +#!/usr/bin/python
    13.5 +# -*- coding: utf-8 -*- 
    13.6 +
    13.7 +from monomer import AminoAcidType
    13.8 +from Bio.PDB import CaPPBuilder, PDBIO
    13.9 +from Bio.PDB.DSSP import make_dssp_dict
   13.10 +from allpy_pdb import std_id, pdb_id_parse, get_structure
   13.11 +import alignment
   13.12 +import sys
   13.13 +import config
   13.14 +import os.path
   13.15 +import urllib2
   13.16 +from tempfile import NamedTemporaryFile
   13.17 +import os
   13.18 +
   13.19 +
   13.20 +class Sequence(object):
   13.21 +    """ Sequence of Monomers
   13.22 +    
   13.23 +    Mandatory data:
   13.24 +    *   name -- str with the name of sequence
   13.25 +    *   description -- str with description of the sequence
   13.26 +    *   monomers -- list of monomer objects (aminoacids or nucleotides)
   13.27 +    
   13.28 +    Optional (may be empty):
   13.29 +    *   pdb_chains -- list of Bio.PDB.Chain's
   13.30 +    *   pdb_files -- dictionary like {Bio.PDB.Chain: file_obj}
   13.31 +    
   13.32 +    *   pdb_residues -- dictionary like {Bio.PDB.Chain: {Monomer: Bio.PDB.Residue}}
   13.33 +    *   pdb_secstr -- dictionary like {Bio.PDB.Chain: {Monomer: 'Secondary structure'}}
   13.34 +            Code   Secondary structure
   13.35 +            H      alpha-helix
   13.36 +            B      Isolated beta-bridge residue
   13.37 +            E      Strand
   13.38 +            G      3-10 helix
   13.39 +            I      pi-helix
   13.40 +            T      Turn
   13.41 +            S      Bend
   13.42 +            -      Other
   13.43 +    
   13.44 +    
   13.45 +    ?TODO: global pdb_structures 
   13.46 +    """
   13.47 +    def __init__(self, monomers=None, name='', description=""):
   13.48 +        if not monomers:
   13.49 +            monomers = []
   13.50 +        self.name = name
   13.51 +        self.description = description
   13.52 +        self.monomers = monomers 
   13.53 +        self.pdb_chains = []
   13.54 +        self.pdb_files = {}
   13.55 +        self.pdb_residues = {}
   13.56 +        self.pdb_secstr = {}
   13.57 +        
   13.58 +    def __len__(self):
   13.59 +        return len(self.monomers)
   13.60 +    
   13.61 +    def __str__(self):
   13.62 +        """ Returns sequence in one-letter code """
   13.63 +        return ''.join([monomer.type.code1 for monomer in self.monomers])
   13.64 +        
   13.65 +    def __eq__(self, other):
   13.66 +        """ Returns if all corresponding monomers of this sequences are equal
   13.67 +        
   13.68 +        If lengths of sequences are not equal, returns False
   13.69 +        """ 
   13.70 +        return len(self) == len(other) and \
   13.71 +        all([a==b for a, b in zip(self.monomers, other.monomers)])
   13.72 +    
   13.73 +    def __ne__(self, other):
   13.74 +        return not (self == other)
   13.75 +    
   13.76 +    def pdb_chain_add(self, pdb_file, pdb_id, pdb_chain, pdb_model=0):
   13.77 +        """ Reads Pdb chain from file 
   13.78 +        
   13.79 +        and align each Monomer with PDB.Residue (TODO)
   13.80 +        """
   13.81 +        name = std_id(pdb_id, pdb_chain, pdb_model)
   13.82 +        structure = get_structure(pdb_file, name)
   13.83 +        chain = structure[pdb_model][pdb_chain]
   13.84 +        self.pdb_chains.append(chain)
   13.85 +        self.pdb_residues[chain] = {}
   13.86 +        self.pdb_secstr[chain] = {}
   13.87 +        pdb_sequence = Sequence.from_pdb_chain(chain)
   13.88 +        a = alignment.Alignment.from_sequences(self, pdb_sequence)
   13.89 +        a.muscle_align()
   13.90 +        for monomer, pdb_monomer in a.column(sequence=pdb_sequence, original=self):
   13.91 +            if pdb_sequence.pdb_has(chain, pdb_monomer):
   13.92 +                residue = pdb_sequence.pdb_residues[chain][pdb_monomer]
   13.93 +                self.pdb_residues[chain][monomer] = residue
   13.94 +        self.pdb_files[chain] = pdb_file
   13.95 +    
   13.96 +    def pdb_unload(self):
   13.97 +        """ Delete all pdb-connected links """
   13.98 +        #~ gc.get_referrers(self.pdb_chains[0])
   13.99 +        self.pdb_chains = []
  13.100 +        self.pdb_residues = {}
  13.101 +        self.pdb_secstr = {} # FIXME
  13.102 +        self.pdb_files = {} # FIXME
  13.103 +    
  13.104 +    @staticmethod
  13.105 +    def from_str(fasta_str, name='', description='', monomer_kind=AminoAcidType):
  13.106 +        """ Import data from one-letter code
  13.107 +        
  13.108 +        monomer_kind is class, inherited from MonomerType
  13.109 +        """
  13.110 +        monomers = [monomer_kind.from_code1(aa).instance() for aa in fasta_str]
  13.111 +        return Sequence(monomers, name, description)
  13.112 +
  13.113 +    @staticmethod
  13.114 +    def from_pdb_chain(chain):
  13.115 +        """ Returns Sequence with Monomers with link to Bio.PDB.Residue
  13.116 +        
  13.117 +        chain is Bio.PDB.Chain
  13.118 +        """
  13.119 +        cappbuilder = CaPPBuilder()
  13.120 +        peptides = cappbuilder.build_peptides(chain)
  13.121 +        sequence = Sequence()
  13.122 +        sequence.pdb_chains = [chain]
  13.123 +        sequence.pdb_residues[chain] = {}
  13.124 +        sequence.pdb_secstr[chain] = {}
  13.125 +        for peptide in peptides:
  13.126 +            for ca_atom in peptide.get_ca_list():
  13.127 +                residue = ca_atom.get_parent()
  13.128 +                monomer = AminoAcidType.from_pdb_residue(residue).instance()
  13.129 +                sequence.pdb_residues[chain][monomer] = residue
  13.130 +                sequence.monomers.append(monomer)
  13.131 +        return sequence
  13.132 +    
  13.133 +    def pdb_auto_add(self, conformity_info=None, pdb_directory='./tmp'):
  13.134 +        """ Adds pdb information to each monomer
  13.135 +        
  13.136 +        Returns if information has been successfully added
  13.137 +        TODO: conformity_file
  13.138 +        
  13.139 +        id-format lava flow
  13.140 +        """
  13.141 +        if not conformity_info:
  13.142 +            path = os.path.join(pdb_directory, self.name)
  13.143 +            if os.path.exists(path) and os.path.getsize(path):
  13.144 +                match = pdb_id_parse(self.name)
  13.145 +                self.pdb_chain_add(open(path), match['code'], 
  13.146 +                match['chain'], match['model'])
  13.147 +            else:
  13.148 +                match = pdb_id_parse(self.name)
  13.149 +                if match:
  13.150 +                    code = match['code']
  13.151 +                    pdb_filename = config.pdb_dir % code
  13.152 +                    if not os.path.exists(pdb_filename) or not os.path.getsize(pdb_filename):
  13.153 +                        url = config.pdb_url % code
  13.154 +                        print "Download %s" % url
  13.155 +                        pdb_file = open(pdb_filename, 'w')
  13.156 +                        data = urllib2.urlopen(url).read()
  13.157 +                        pdb_file.write(data)
  13.158 +                        pdb_file.close()
  13.159 +                        print "Save %s" % pdb_filename
  13.160 +                    pdb_file = open(pdb_filename)
  13.161 +                    self.pdb_chain_add(pdb_file, code, match['chain'], match['model'])
  13.162 +        
  13.163 +    def pdb_save(self, out_filename, pdb_chain):
  13.164 +        """ Saves pdb_chain to out_file """
  13.165 +        class GlySelect(Select):
  13.166 +            def accept_chain(self, chain):
  13.167 +                if chain == pdb_chain:
  13.168 +                    return 1
  13.169 +                else:
  13.170 +                    return 0
  13.171 +        io = PDBIO()
  13.172 +        structure = chain.get_parent()
  13.173 +        io.set_structure(structure)
  13.174 +        io.save(out_filename, GlySelect())
  13.175 +        
  13.176 +    
  13.177 +    def pdb_add_sec_str(self, pdb_chain):
  13.178 +        """ Add secondary structure data """
  13.179 +        tmp_file = NamedTemporaryFile(delete=False)
  13.180 +        tmp_file.close()
  13.181 +        pdb_file = self.pdb_files[pdb_chain].name
  13.182 +        os.system("dsspcmbi %(pdb)s %(tmp)s" % {'pdb': pdb_file, 'tmp': tmp_file.name})
  13.183 +        dssp, keys = make_dssp_dict(tmp_file.name)
  13.184 +        for monomer in self.monomers:
  13.185 +            if self.pdb_has(pdb_chain, monomer):
  13.186 +                residue = self.pdb_residues[pdb_chain][monomer]
  13.187 +                try:
  13.188 +                    d = dssp[(pdb_chain.get_id(), residue.get_id())]
  13.189 +                    self.pdb_secstr[pdb_chain][monomer] = d[1]
  13.190 +                except:
  13.191 +                    print "No dssp information about %s at %s" % (monomer, pdb_chain)
  13.192 +        os.unlink(tmp_file.name)
  13.193 +    
  13.194 +    def pdb_has(self, chain, monomer):
  13.195 +        return chain in self.pdb_residues and monomer in self.pdb_residues[chain]
  13.196 +    
  13.197 +    def secstr_has(self, chain, monomer):
  13.198 +        return chain in self.pdb_secstr and monomer in self.pdb_secstr[chain]
  13.199 +
  13.200 +    @staticmethod
  13.201 +    def file_slice(file, n_from, n_to, fasta_name='', name='', description='', monomer_kind=AminoAcidType):
  13.202 +        """ Build and return sequence, consisting of part of sequence from file 
  13.203 +
  13.204 +        Does not control gaps
  13.205 +        """
  13.206 +        inside = False
  13.207 +        number_used = 0
  13.208 +        s = ''
  13.209 +        for line in file:
  13.210 +            line = line.split()
  13.211 +            if not inside:
  13.212 +                if line.startswith('>%s' % fasta_name):
  13.213 +                    inside = True
  13.214 +            else:
  13.215 +                n = len(line)
  13.216 +                s += line[(n_from - number_user):(n_to - number_user)]
  13.217 +        return Sequence.from_str(s, name, description, monomer_kind)
    14.1 --- a/geometrical_core/geometrical_core.py	Thu Nov 18 00:01:07 2010 +0300
    14.2 +++ b/geometrical_core/geometrical_core.py	Thu Nov 18 19:38:05 2010 +0300
    14.3 @@ -3,7 +3,7 @@
    14.4  version 2.0
    14.5  """
    14.6  
    14.7 -from allpy.lib import config, alignment, block
    14.8 +from allpy import config, alignment, block
    14.9  Block = block.Block
   14.10  Alignment = alignment.Alignment
   14.11  import argparse
    15.1 --- a/lib/alignment.py	Thu Nov 18 00:01:07 2010 +0300
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,240 +0,0 @@
    15.4 -#!/usr/bin/python
    15.5 -
    15.6 -"""
    15.7 -    "I will not use abbrev."
    15.8 -    "I will always finish what I st"    
    15.9 -                                            - Bart Simpson
   15.10 -
   15.11 -"""
   15.12 -
   15.13 -import sequence
   15.14 -from monomer import AminoAcidType
   15.15 -import allpy_data
   15.16 -from tempfile import NamedTemporaryFile
   15.17 -import os
   15.18 -import block
   15.19 -from fasta import save_fasta
   15.20 -
   15.21 -class Alignment(object):
   15.22 -    """ Alignment
   15.23 -    
   15.24 -    Mandatory data:
   15.25 -    *   body -- dict 
   15.26 -        {<Sequence object>:[<Monomer object>,None,<Monomer object>]}
   15.27 -        keys are the Sequence objects, values are the lists, which
   15.28 -        contain monomers of those sequences or None for gaps in the
   15.29 -        corresponding sequence of
   15.30 -        alignment
   15.31 -    
   15.32 -    """
   15.33 -    # _sequences -- list of Sequence objects. Sequences don't contain gaps
   15.34 -    #  - see sequence.py module
   15.35 -
   15.36 -    def __init__(self, *args):
   15.37 -        """overloaded constructor
   15.38 -
   15.39 -        Alignment() -> new empty Alignment
   15.40 -        Alignment(sequences, body) -> new Alignment with sequences and
   15.41 -            body initialized from arguments
   15.42 -        Alignment(fasta_file) -> new Alignment, read body and sequences
   15.43 -             from fasta file 
   15.44 -
   15.45 -        """
   15.46 -        if len(args)>1:#overloaded constructor
   15.47 -            self.sequences=args[0]
   15.48 -            self.body=args[1]
   15.49 -        elif len(args)==0:
   15.50 -            self.sequences=[]
   15.51 -            self.body={}
   15.52 -        else:
   15.53 -            self.sequences, self.body = Alignment.from_fasta(args[0])
   15.54 -
   15.55 -    def length(self):
   15.56 -        """ Returns width, ie length of each sequence with gaps """
   15.57 -        return max([len(line) for line in self.body.values()])
   15.58 -
   15.59 -    def height(self):
   15.60 -        """ The number of sequences in alignment (it's thickness). """
   15.61 -        return len(self.body)
   15.62 -
   15.63 -    def identity(self):
   15.64 -        """ Calculate the identity of alignment positions for colouring.
   15.65 -
   15.66 -        For every (row, column) in alignment the percentage of the exactly
   15.67 -        same residue in the same column in the alignment is calculated.
   15.68 -        The data structure is just like the Alignment.body, but istead of 
   15.69 -        monomers it contains float percentages.
   15.70 -        """
   15.71 -        # Oh, God, that's awful! Absolutely not understandable.
   15.72 -        # First, calculate percentages of amino acids in every column
   15.73 -        contribution = 1.0 / len(self.sequences)
   15.74 -        all_columns = []
   15.75 -        for position in range(len(self)):
   15.76 -            column_percentage = {}
   15.77 -            for seq in self.body:
   15.78 -                if self.body[seq][position] is not None:
   15.79 -                    aa = self.body[seq][position].code
   15.80 -                else:
   15.81 -                    aa = None
   15.82 -                if aa in allpy_data.amino_acids:
   15.83 -                    if aa in column_percentage.keys():
   15.84 -                        column_percentage[aa] += contribution
   15.85 -                    else:
   15.86 -                        column_percentage[aa] = contribution
   15.87 -            all_columns.append(column_percentage)
   15.88 -        # Second, map these percentages onto the alignment
   15.89 -        self.identity_percentages = {}
   15.90 -        for seq in self.sequences:
   15.91 -            self.identity_percentages[seq] = []
   15.92 -        for seq in self.identity_percentages:
   15.93 -            line = self.identity_percentages[seq]
   15.94 -            for position in range(len(self)):
   15.95 -                if self.body[seq][position] is not None:
   15.96 -                    aa = self.body[seq][position].code
   15.97 -                else:
   15.98 -                    aa = None
   15.99 -                line.append(all_columns[position].get(aa))
  15.100 -        return self.identity_percentages
  15.101 -
  15.102 -    @staticmethod
  15.103 -    def from_fasta(file, monomer_kind=AminoAcidType):
  15.104 -        """ Import data from fasta file
  15.105 -        
  15.106 -        monomer_kind is class, inherited from MonomerType
  15.107 -        
  15.108 -        >>> import alignment
  15.109 -        >>> sequences,body=alignment.Alignment.from_fasta(open("test.fasta"))       
  15.110 -        """
  15.111 -        import re
  15.112 -
  15.113 -        sequences = []
  15.114 -        body = {}
  15.115 -
  15.116 -        raw_sequences = file.read().split(">")
  15.117 -        if len(raw_sequences) <= 1:
  15.118 -            raise Exception("Wrong format of fasta-file %s" % file.name)
  15.119 -        
  15.120 -        raw_sequences = raw_sequences[1:] #ignore everything before the first >
  15.121 -        for raw in raw_sequences:
  15.122 -            parsed_raw_sequence = raw.split("\n")
  15.123 -            parsed_raw_sequence = [s.strip() for s in parsed_raw_sequence]
  15.124 -            name_and_description = parsed_raw_sequence[0]
  15.125 -            name_and_description = name_and_description.split(" ",1)
  15.126 -            if len(name_and_description) == 2:
  15.127 -                name, description = name_and_description
  15.128 -            elif len(name_and_description) == 1: 
  15.129 -                #if there is description
  15.130 -                name = name_and_description[0]
  15.131 -                description = ''
  15.132 -            else:
  15.133 -                raise Exception("Wrong name of sequence %(name)$ fasta-file %(file)s" % \
  15.134 -                {'name': name, 'file': file.name})
  15.135 -            
  15.136 -            if len(parsed_raw_sequence) <= 1:
  15.137 -                raise Exception("Wrong format of sequence %(name)$ fasta-file %(file)s" % \
  15.138 -                {'name': name, 'file': file.name})
  15.139 -            string = ""
  15.140 -            for piece in parsed_raw_sequence[1:]:
  15.141 -                piece_without_whitespace_chars = re.sub("\s", "", piece)
  15.142 -                string += piece_without_whitespace_chars
  15.143 -            monomers = [] #convert into Monomer objects
  15.144 -            body_list = [] #create the respective list in body dict
  15.145 -            for current_monomer in string:
  15.146 -                if current_monomer not in ["-", ".", "~"]:
  15.147 -                    monomers.append(monomer_kind.from_code1(current_monomer).instance())
  15.148 -                    body_list.append(monomers[-1])
  15.149 -                else:
  15.150 -                    body_list.append(None)
  15.151 -            s = sequence.Sequence(monomers, name, description)
  15.152 -            sequences.append(s)
  15.153 -            body[s] = body_list
  15.154 -        return sequences, body
  15.155 -    
  15.156 -    
  15.157 -    @staticmethod
  15.158 -    def from_sequences(*sequences):
  15.159 -        """  Constructs new alignment from sequences
  15.160 -        
  15.161 -        Add None's to right end to make equal lengthes of alignment sequences 
  15.162 -        """
  15.163 -        alignment = Alignment()
  15.164 -        alignment.sequences = sequences
  15.165 -        max_length = max(len(sequence) for sequence in sequences)
  15.166 -        for sequence in sequences:
  15.167 -            gaps_count = max_length - len(sequence)
  15.168 -            alignment.body[sequence] = sequence.monomers + [None] * gaps_count
  15.169 -        return alignment
  15.170 -    
  15.171 -    def save_fasta(self, out_file, long_line=70, gap='-'):
  15.172 -        """ Saves alignment to given file
  15.173 -        
  15.174 -        Splits long lines to substrings of length=long_line
  15.175 -        To prevent this, set long_line=None 
  15.176 -        """
  15.177 -        block.Block(self).save_fasta(out_file, long_line=long_line, gap=gap)
  15.178 -        
  15.179 -    def muscle_align(self):
  15.180 -        """ Simple align ths alignment using sequences (muscle)
  15.181 -        
  15.182 -        uses old Monomers and Sequences objects
  15.183 -        """
  15.184 -        tmp_file = NamedTemporaryFile(delete=False)
  15.185 -        self.save_fasta(tmp_file)
  15.186 -        tmp_file.close()
  15.187 -        os.system("muscle -in %(tmp)s -out %(tmp)s" % {'tmp': tmp_file.name})
  15.188 -        sequences, body = Alignment.from_fasta(open(tmp_file.name))
  15.189 -        for sequence in self.sequences:
  15.190 -            try:
  15.191 -                new_sequence = [i for i in sequences if sequence==i][0]
  15.192 -            except:
  15.193 -                raise Exception("Align: Cann't find sequence %s in muscle output" % \
  15.194 -                sequence.name)
  15.195 -            old_monomers = iter(sequence.monomers)
  15.196 -            self.body[sequence] = []
  15.197 -            for monomer in body[new_sequence]:
  15.198 -                if not monomer:
  15.199 -                    self.body[sequence].append(monomer)
  15.200 -                else:
  15.201 -                    old_monomer = old_monomers.next()
  15.202 -                    if monomer != old_monomer:
  15.203 -                        raise Exception("Align: alignment errors")
  15.204 -                    self.body[sequence].append(old_monomer)
  15.205 -        os.unlink(tmp_file.name)
  15.206 -        
  15.207 -        
  15.208 -    def column(self, sequence=None, sequences=None, original=None):
  15.209 -        """ returns list of columns of alignment
  15.210 -        
  15.211 -        sequence or sequences:
  15.212 -            if sequence is given, then column is (original_monomer, monomer)
  15.213 -            if sequences is given, then column is (original_monomer, {sequence: monomer}) 
  15.214 -            if both of them are given, it is an error
  15.215 -        original (Sequence type):
  15.216 -            if given, this filters only columns represented by original sequence
  15.217 -        """
  15.218 -        if sequence and sequences:
  15.219 -            raise Exception("Wrong usage. read help")
  15.220 -        indexes = dict([(v, k) for( k, v) in enumerate(self.sequences)])
  15.221 -        alignment = self.body.items()
  15.222 -        alignment.sort(key=lambda i: indexes[i[0]])
  15.223 -        alignment = [monomers for seq, monomers in alignment]
  15.224 -        for column in zip(*alignment):
  15.225 -            if not original or column[indexes[original]]:
  15.226 -                if sequence:
  15.227 -                    yield (column[indexes[original]], column[indexes[sequence]])
  15.228 -                else:
  15.229 -                    yield (column[indexes[original]], 
  15.230 -                    dict([(s, column[indexes[s]]) for s in sequences]))
  15.231 -    
  15.232 -    
  15.233 -    def secstr(self, sequence, pdb_chain, gap='-'):
  15.234 -        """ Returns string representing secondary structure """
  15.235 -        return ''.join([
  15.236 -        (sequence.pdb_secstr[pdb_chain][m] if sequence.secstr_has(pdb_chain, m) else gap) 
  15.237 -        for m in self.body[sequence]])
  15.238 -    
  15.239 -    def save_secstr(self, out_file, sequence, pdb_chain, 
  15.240 -    name, description='', gap='-', long_line=70):
  15.241 -        """ Save secondary structure and name in fasta format """
  15.242 -        save_fasta(out_file, self.secstr(sequence, pdb_chain, gap), name, description, long_line)
  15.243 -    
    16.1 --- a/lib/allpy_data/AAdict.py	Thu Nov 18 00:01:07 2010 +0300
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,1200 +0,0 @@
    16.4 -
    16.5 -"""
    16.6 -Dict:
    16.7 -	key: 3-letter code from PDB
    16.8 -	value: (1-letter code, type, is_modified, None)
    16.9 -		type:
   16.10 -			p - protein
   16.11 -			d - dna
   16.12 -			r - rna
   16.13 -		is_modified: "M" or None
   16.14 -        None
   16.15 -        name
   16.16 -"""
   16.17 -
   16.18 -AAdict = {
   16.19 -"CPI": ('x', 'p', None, None, '6-CARBOXYPIPERIDINE'),
   16.20 -"AGM": ('r', 'p', 'M', None, '5-METHYL-ARGININE'),
   16.21 -"G25": ('g', 'r', 'M', None, '"GUANOSINE-5\'-MONOPHOSPHATE"'),
   16.22 -"CPN": ('c', 'd', 'M', None, '2-AMINOETHYLGLYCINE-CARBONYLMETHYLENE-CYTOSINE'),
   16.23 -"MA6": ('a', 'r', 'M', None, '"6N-DIMETHYLADENOSINE-5\'-MONOPHOSHATE"'),
   16.24 -"NYS": ('c', 'p', 'M', None, 'S-{5-[(1R)-2-AMINO-1-HYDROXYETHYL]-2,3-DIHYDROXYPHENYL}-L-CYSTEINE'),
   16.25 -"CPC": ('x', 'p', None, None, '"2-METHYL-1-METHYLAMINO-CYCLOPROPANE'),
   16.26 -"8FG": ('g', 'd', 'M', None, '"N-(5\'-PHOSPHO-2\'-DEOXYGUANOSIN-8-YL)-2-ACETYLAMINOFLUORENE"'),
   16.27 -"SIC": ('x', 'p', None, None, '"(2R)-2-[(3S)-3-AMINO-2,5-DIOXOPYRROLIDIN-1-YL]-3-SULFANYLPROPANOIC'),
   16.28 -"PQ1": ('n', 'r', None, None, '"PHOSPHORIC'),
   16.29 -"PAS": ('d', 'p', 'M', None, '"2-AMINO-4-OXO-4-PHOSPHONOOXY-BUTYRIC'),
   16.30 -"EOV": ('x', 'p', None, None, '(3S,6S,9S,12R,15S,18S,21S,24S,30S,33S)-30-ethyl-33-[(1R,2R,4E)-1-hydroxy-2-methylhex-4-en-1-yl]-1,4,7,10,12,15,19,25,28-nonamethyl-3,21-bis(1-methylethyl)-6,9,18,24-tetrakis(2-methylpropyl)-1,4,7,10,13,16,19,22,25,28,31-undecaazacyclotritriacontane-2,5,8,11,14,17,20,23,26,29,32-undecone'),
   16.31 -"B2I": ('i', 'p', 'M', None, '"ISOLEUCINE'),
   16.32 -"NYM": ('n', 'd', None, None, "3'-DEOXY-3'-AMINOTHYMIDINE MONOPHOSPHATE"),
   16.33 -"URD": ('u', 'r', 'M', None, '1-((2R,3R,4S,5R)-TETRAHYDRO-3,4-DIHYDROXY-5-(HYDROXYMETHYL)FURAN-2-YL)PYRIDINE-2,4(1H,3H)-DIONE'),
   16.34 -"NYC": ('x', 'p', None, None, '"[(4E)-2-[(1R,2S)-1-AMINO-2-HYDROXYPROPYL]-4-(1H-INDOL-3-YLMETHYLENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   16.35 -"AGT": ('x', 'p', None, None, 'S-{(S)-AMINO[(4-AMINOBUTYL)AMINO]METHYL}-L-CYSTEINE'),
   16.36 -"NYG": ('x', 'p', None, None, '"[(4Z)-2-[(1S)-1,3-DIAMINO-3-OXOPROPYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   16.37 -"CPV": ('x', 'p', None, None, '"5-AMINO-6-CYCLOHEXYL-4-HYDROXY-2-ISOPROPYL-HEXANOIC'),
   16.38 -"TAV": ('d', 'p', 'M', None, '"N-METHYL-N-{2-[(2-NAPHTHYLSULFONYL)AMINO]-5-[(2-NAPHTHYLSULFONYL)OXY]BENZOYL}-L-ASPARTIC'),
   16.39 -"S4G": ('g', 'd', 'M', None, "2'-deoxy-4'-thioguanosine 5'-(dihydrogen phosphate)"),
   16.40 -"MA7": ('a', 'd', 'M', None, '"1N-METHYLADENOSINE-5\'-MONOPHOSPHATE"'),
   16.41 -"S4C": ('c', 'r', 'M', None, '"4\'-THIO-4\'-DEOXY-CYTOSINE-5\'-MONOPHOSPHATE"'),
   16.42 -"UAR": ('u', 'r', 'M', None, "URACIL ARABINOSE-5'-PHOSPHATE"),
   16.43 -"SPT": ('t', 'd', 'M', None, "5'-THIO-THYMIDINE PHOSPHONIC ACID"),
   16.44 -"S4U": ('u', 'r', 'M', None, '"4-THIOURIDINE-5\'-PHOSPHATE"'),
   16.45 -"TAF": ('t', 'd', 'M', None, "2'-DEOXY-2'-FLUORO-ARABINO-FURANOSYL THYMINE-5'-PHOSPHATE"),
   16.46 -"5NC": ('c', 'd', 'M', None, '"5-AZA-CYTIDINE-5\'MONOPHOSPHATE"'),
   16.47 -"CSF": ('c', 'r', 'M', None, "CYTIDINE-5'-MONOPHOSPHATE-3-FLUORO-N-ACETYL-NEURAMINIC ACID"),
   16.48 -"0CS": ('a', 'p', 'M', None, '3-[(S)-HYDROPEROXYSULFINYL]-L-ALANINE'),
   16.49 -"B2V": ('v', 'p', 'M', None, '"VALINE'),
   16.50 -"TAL": ('n', 'r', None, None, '9-(6-DEOXY-ALPHA-L-TALOFURANOSYL)-6-METHYLPURINE'),
   16.51 -"SCY": ('c', 'p', 'M', None, 'S-ACETYL-CYSTEINE'),
   16.52 -"KYQ": ('k', 'p', 'M', None, '(E)-N~6~-(1-CARBOXY-2-HYDROXYETHYLIDENE)-L-LYSINE'),
   16.53 -"CS8": ('n', 'r', None, None, '"3-THIAOCTANOYL-COENZYME'),
   16.54 -"TA4": ('x', 'p', None, None, '"(S)-2-[4-(AMINOMETHYL)-1H-1,2,3-TRIAZOL-1-YL]-4-METHYLPENTANOIC'),
   16.55 -"ALN": ('a', 'p', 'M', None, 'NAPHTHALEN-2-YL-3-ALANINE'),
   16.56 -"GS": ('g', 'd', 'M', None, '"GUANOSINE-5\'-THIO-MONOPHOSPHATE"'),
   16.57 -"2FE": ('n', 'd', None, None, '"2\'-FLUORO-2\'-DEOXY-1,N6-ETHENOADENINE"'),
   16.58 -"VAL": ('V', 'p', None, None, 'VALINE'),
   16.59 -"7DA": ('a', 'd', 'M', None, '"7-DEAZA-2\'-DEOXYADENOSINE-5\'-MONOPHOSPHATE"'),
   16.60 -"XPC": ('x', 'p', None, None, '"(3S,4R)-4-AMINOPYRROLIDINE-3-CARBOXYLIC'),
   16.61 -"VAF": ('v', 'p', 'M', None, 'METHYLVALINE'),
   16.62 -"VAD": ('v', 'p', 'M', None, 'DEAMINOHYDROXYVALINE'),
   16.63 -"BGM": ('g', 'd', 'M', None, '"8-BROMO-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
   16.64 -"P": ('g', 'd', 'M', None, "2'-DEOXY-N1,N2-PROPANO GUANOSINE MONOPHOSPHATE"),
   16.65 -"LHU": ('u', 'r', 'M', None, '"L-URIDINE-5\'-MONOPHOSPHATE"'),
   16.66 -"T48": ('t', 'd', 'M', None, "6'-ALPHA-HYDROXY CARBOCYCLIC THYMIDINE 5'-MONOPHOSPHATE"),
   16.67 -"2GT": ('t', 'd', 'M', None, "2'-O-PROPARGYL THYMIDINE-5'-MONOPHOSPHATE"),
   16.68 -"HMF": ('a', 'p', 'M', None, '"2-AMINO-4-PHENYL-BUTYRIC'),
   16.69 -"BNN": ('a', 'p', 'M', None, 'ACETYL-P-AMIDINOPHENYLALANINE'),
   16.70 -"AHB": ('n', 'p', 'M', None, 'BETA-HYDROXYASPARAGINE'),
   16.71 -"NPH": ('c', 'p', 'M', None, 'CYSTEINE-METHYLENE-CARBAMOYL-1,10-PHENANTHROLINE'),
   16.72 -"SIB": ('c', 'p', 'M', None, '"(2S)-2-AMINO-4-({[(2S,3S,4R,5R)-3,4-DIHYDROXY-5-(6-OXO-1,6-DIHYDRO-9H-PURIN-9-YL)TETRAHYDROFURAN-2-YL]METHYL}THIO)BUTANOIC'),
   16.73 -"SNN": ('n', 'p', 'M', None, 'L-3-AMINOSUCCINIMIDE'),
   16.74 -"AHH": ('x', 'p', None, None, '"AMINO-HYDROXYHEPTANOIC'),
   16.75 -"JW5": ('n', 'r', None, None, "6-(HYDROXYMETHYL)URIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
   16.76 -"PBB": ('c', 'p', 'M', None, 'S-(4-BROMOBENZYL)CYSTEINE'),
   16.77 -"PTR": ('y', 'p', 'M', None, 'O-PHOSPHOTYROSINE'),
   16.78 -"MAA": ('a', 'p', 'M', None, 'N-METHYLALANINE'),
   16.79 -"AHS": ('x', 'p', None, None, '"(3-AMINO-4-CYCLOHEXYL-2-HYDROXY-BUTYL)-ISOBUTYL-CARBAMIC'),
   16.80 -"AHP": ('a', 'p', 'M', None, '"2-AMINO-HEPTANOIC'),
   16.81 -"MAD": ('a', 'r', 'M', None, '"6-HYDRO-1-METHYLADENOSINE-5\'-MONOPHOSPHATE"'),
   16.82 -"AHT": ('x', 'p', None, None, '4-(2,5-DIAMINO-5-HYDROXY-PENTYL)-PHENOL'),
   16.83 -"XYG": ('x', 'p', None, None, '"[(4Z)-2-[(1Z)-ETHANIMIDOYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
   16.84 -"MAI": ('r', 'p', 'M', None, 'DEOXO-METHYLARGININE'),
   16.85 -"CP1": ('c', 'd', 'M', None, '2-(METHYLAMINO)-ETHYLGLYCINE-CARBONYLMETHYLENE-CYTOSINE'),
   16.86 -"G2L": ('g', 'r', 'M', None, '"3\'-O-METHYOXYETHYL-GUANOSINE-5\'-MONOPHOSPHATE"'),
   16.87 -"FFD": ('n', 'd', None, None, '(1R)-1,4-ANHYDRO-2-DEOXY-1-(3-FLUOROPHENYL)-5-O-PHOSPHONO-D-ERYTHRO-PENTITOL'),
   16.88 -"CML": ('c', 'p', 'M', None, '"(2S)-2-{[(2R)-2-AMINO-2-CARBOXYETHYL]SULFANYL}BUTANEDIOIC'),
   16.89 -"CMH": ('c', 'p', 'M', None, 'S-(METHYLMERCURY)-L-CYSTEINE'),
   16.90 -"ZDU": ('n', 'd', None, None, '"5-(3-AMINOPROPYL)-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
   16.91 -"PCS": ('f', 'p', 'M', None, 'PHENYLALANYLMETHYLCHLORIDE'),
   16.92 -"CME": ('c', 'p', 'M', None, 'S,S-(2-HYDROXYETHYL)THIOCYSTEINE'),
   16.93 -"CSO": ('c', 'p', 'M', None, 'S-HYDROXYCYSTEINE'),
   16.94 -"193": ('x', 'p', None, None, '"(2S)-4-(BETA-ALANYLAMINO)-2-AMINOBUTANOIC'),
   16.95 -"1TY": ('y', 'p', 'M', None, '3-{(3E)-4-HYDROXY-6-OXO-3-[(2-PHENYLETHYL)IMINO]CYCLOHEXA-1,4-DIEN-1-YL}ALANINE'),
   16.96 -"CB2": ('c', 'd', 'M', None, '"PHOSPHORIC'),
   16.97 -"CS3": ('c', 'p', 'M', None, 'S-[3-OXO-3-(2-THIENYL)PROPYL]-L-CYSTEINE'),
   16.98 -"64T": ('t', 'd', 'M', None, '"5-HYDROXY-THYMIDINE-5\'-MONOPHOSPHATE"'),
   16.99 -"4AC": ('n', 'r', None, None, '"N(4)-ACETYLCYTIDINE-5\'-MONOPHOSPHATE"'),
  16.100 -"B3X": ('n', 'p', 'M', None, '"(3S)-3,5-DIAMINO-5-OXOPENTANOIC'),
  16.101 -"TST": ('x', 'p', None, None, '"4-METHYL-2-{[4-(TOLUENE-4-SULFONYL)-THIOMORPHOLINE-3-CARBONYL]-AMINO}-PENTANOIC'),
  16.102 -"CMT": ('c', 'p', 'M', None, 'O-METHYLCYSTEINE'),
  16.103 -"CMR": ('c', 'd', 'M', None, '"2\'-DEOXY-CYTIDINE-5\'-RP-MONOMETHYLPHOSPHONATE"'),
  16.104 -"CSH": ('x', 'p', None, None, '"[2-(2-HYDROXY-1-METHYL-ETHYL)-4-(1H-IMIDAZOL-4-YLMETHYL)-5-OXO-IMIDAZOLIDIN-1-YL]-ACETIC'),
  16.105 -"VLM": ('x', 'p', None, None, 'VALINYLAMINE'),
  16.106 -"G": ('G', 'r', None, None, '"GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.107 -"C4S": ('c', 'd', 'M', None, "2'-deoxy-4'-thiocytidine 5'-(dihydrogen phosphate)"),
  16.108 -"U2L": ('u', 'r', 'M', None, "5-METHYL-3'-O-METHOXYETHYL URIDINE-5'-MONOPHOSPHATE"),
  16.109 -"LSO": ('x', 'p', None, None, '(Z)-N~6~-(3-CARBOXY-1-{[(4-CARBOXY-2-OXOBUTYL)SULFONYL]METHYL}PROPYLIDENE)-L-LYSINE'),
  16.110 -"U2N": ('n', 'd', None, None, "2'-AMINO-2'-DEOXYURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
  16.111 -"PLE": ('l', 'p', 'M', None, '"LEUCINE'),
  16.112 -"SIN": ('x', 'p', None, None, '"SUCCINIC'),
  16.113 -"M2L": ('k', 'p', 'M', None, '"(2R)-2-AMINO-3-(2-DIMETHYLAMINOETHYLSULFANYL)PROPANOIC'),
  16.114 -"I58": ('k', 'p', 'M', None, '4R-FLUORO-N6-ETHANIMIDOYL-L-LYSINE'),
  16.115 -"U2P": ('u', 'r', 'M', None, '"PHOSPHORIC'),
  16.116 -"B2A": ('a', 'p', 'M', None, '"ALANINE'),
  16.117 -"TTM": ('t', 'd', 'M', None, '"N3-ETHYL-THYMIDINE-5\'-MONOPHOSPHATE"'),
  16.118 -"CSD": ('c', 'p', 'M', None, '3-SULFINOALANINE'),
  16.119 -"M2G": ('g', 'r', 'M', None, '"N2-DIMETHYLGUANOSINE-5\'-MONOPHOSPHATE"'),
  16.120 -"ASX": ('x', 'p', None, None, '"ASP/ASN'),
  16.121 -"AFF": ('n', 'd', None, None, '2-ACETYLAMINOFLUORENE-3-YL'),
  16.122 -"TTD": ('t', 'd', 'M', None, '"CIS-SYN'),
  16.123 -"AET": ('a', 'r', 'M', None, '"N-[N-(9-B-D-RIBOFURANOSYLPURIN-6-YL)METHYLCARBAMOYL]THREONINE-5\'-MONOPHOSPHATE"'),
  16.124 -"C45": ('c', 'd', 'M', None, '"N4-METHOXY-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.125 -"C46": ('c', 'd', 'M', None, '"6H,8H-3,4-DIHYDROPYRIMIDO[4,5-C][1,2]OXAZIN-7-0NE(CYTIDINE)-5\'-MONOPHOSPHATE"'),
  16.126 -"FTR": ('w', 'p', 'M', None, 'FLUOROTRYPTOPHANE'),
  16.127 -"BLY": ('k', 'p', 'M', None, '"LYSINE'),
  16.128 -"C42": ('c', 'd', 'M', None, '"3\'-AMINO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.129 -"C2S": ('c', 'd', 'M', None, '"CYTIDINE-5\'-DITHIOPHOSPHORATE"'),
  16.130 -"FTY": ('y', 'p', 'M', None, 'DEOXY-DIFLUOROMETHELENE-PHOSPHOTYROSINE'),
  16.131 -"CSA": ('c', 'p', 'M', None, 'S-ACETONYLCYSTEINE'),
  16.132 -"I5C": ('c', 'd', 'M', None, '"5-IODO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.133 -"ALY": ('k', 'p', 'M', None, 'N(6)-ACETYLLYSINE'),
  16.134 -"P1L": ('c', 'p', 'M', None, 'S-PALMITOYL-L-CYSTEINE'),
  16.135 -"C49": ('c', 'd', 'M', None, '"4-THIO,5-FLUORO,5-METHYL-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.136 -"DSP": ('d', 'p', 'M', None, '"D-ASPARTIC'),
  16.137 -"AFA": ('n', 'p', 'M', None, 'N-[7-METHYL-OCT-2,4-DIENOYL]ASPARAGINE'),
  16.138 -"P1P": ('n', 'r', None, None, '3-{[OXIDO(OXO)PHOSPHINO]OXY}PROPAN-1-OLATE'),
  16.139 -"U25": ('u', 'r', 'M', None, '"URIDINE-5\'-MONOPHOSPHATE"'),
  16.140 -"CHS": ('x', 'p', None, None, '"4-AMINO-5-CYCLOHEXYL-3-HYDROXY-PENTANOIC'),
  16.141 -"BLE": ('l', 'p', 'M', None, '"LEUCINE'),
  16.142 -"DSG": ('n', 'p', 'M', None, 'D-ASPARAGINE'),
  16.143 -"DSE": ('s', 'p', 'M', None, 'N-METHYL-D-SERINE'),
  16.144 -"S4A": ('a', 'd', 'M', None, "2'-deoxy-4'-thioadenosine 5'-(dihydrogen phosphate)"),
  16.145 -"DLS": ('k', 'p', 'M', None, 'DI-ACETYL-LYSINE'),
  16.146 -"4SU": ('u', 'r', 'M', None, '"4-THIOURIDINE-5\'-MONOPHOSPHATE"'),
  16.147 -"MA": ('a', 'p', 'M', None, '"METHYL'),
  16.148 -"TRX": ('w', 'p', 'M', None, '6-HYDROXYTRYPTOPHAN'),
  16.149 -"DC": ('C', 'd', None, None, '"2\'-DEOXYCYTIDINE-5\'-MONOPHOSPHATE"'),
  16.150 -"HLU": ('l', 'p', 'M', None, 'BETA-HYDROXYLEUCINE'),
  16.151 -"HSE": ('s', 'p', 'M', None, 'L-HOMOSERINE'),
  16.152 -"A5M": ('c', 'r', 'M', None, '"2\'-AMINE-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.153 -"ALS": ('a', 'p', 'M', None, '"2-AMINO-3-OXO-4-SULFO-BUTYRIC'),
  16.154 -"CBR": ('c', 'd', 'M', None, '"5-BROMO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.155 -"SHC": ('c', 'p', 'M', None, 'S-HEXYLCYSTEINE'),
  16.156 -"B2F": ('f', 'p', 'M', None, '"PHENYLALANINE'),
  16.157 -"QUO": ('g', 'r', 'M', None, '"2-AMINO-7-DEAZA-(2\'\',3\'\'-DIHYDROXY-CYCLOPENTYLAMINO)-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.158 -"X4A": ('n', 'd', None, None, '"[(2R,3S,5S)-2,3,5-TRIHYDROXYTETRAHYDROFURAN-2-YL]METHYL'),
  16.159 -"BE2": ('x', 'p', None, None, '"2-AMINOBENZOIC'),
  16.160 -"CM0": ('n', 'r', None, None, "5-(CARBOXYMETHOXY) URIDINE-5'-MONOPHOSPHATE"),
  16.161 -"GLH": ('q', 'p', 'M', None, 'N-5-CYCLOHEXYL-N-5-[(CYCLOHEXYLAMINO)CARBONYL]GLUTAMINE'),
  16.162 -"DOH": ('d', 'p', 'M', None, '"BETA-HYDROXY'),
  16.163 -"DON": ('l', 'p', 'M', None, '6-DIAZENYL-5-OXO-L-NORLEUCINE'),
  16.164 -"GLM": ('x', 'p', None, None, '1-AMINO-PROPAN-2-ONE'),
  16.165 -"GLN": ('Q', 'p', None, None, 'GLUTAMINE'),
  16.166 -"T4S": ('t', 'd', 'M', None, '1-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-4-HYDROSELENO-5-METHYLPYRIMIDIN-2(1H)-ONE'),
  16.167 -"DOC": ('c', 'd', 'M', None, '"2\',3\'-DIDEOXYCYTIDINE-5\'-MONOPHOSPHATE"'),
  16.168 -"T3P": ('t', 'd', 'M', None, '"THYMIDINE-3\'-PHOSPHATE"'),
  16.169 -"DOA": ('x', 'p', None, None, '"12-AMINO-DODECANOIC'),
  16.170 -"TOX": ('w', 'p', 'M', None, '2-AMINO-3-(1-HYDROPEROXY-1H-INDOL-3-YL)PROPAN-1-OL'),
  16.171 -"SMP": ('a', 'd', 'M', None, '"2\'-DEOXY-ADENOSINE-5\'-SP-MONOMETHYLPHOSPHONATE"'),
  16.172 -"GLX": ('x', 'p', None, None, '"GLU/GLN'),
  16.173 -"GLY": ('G', 'p', None, None, 'GLYCINE'),
  16.174 -"GLZ": ('g', 'p', 'M', None, 'AMINO-ACETALDEHYDE'),
  16.175 -"CTG": ('t', 'd', 'M', None, '"(5R,6S)-5,6-DIHYDRO-5,6-DIHYDROXYTHYMIDINE-5\'-MONOPHOSPHATE"'),
  16.176 -"T38": ('n', 'r', None, None, "2'-O-ETHOXYMETHYLENE THYMIDINE 5'-MONOPHOSPHATE"),
  16.177 -"AKL": ('d', 'p', 'M', None, '"3-AMINO-5-CHLORO-4-OXOPENTANOIC'),
  16.178 -"T36": ('t', 'd', 'M', None, "SPLIT LINKAGE THYMIDINE 5'-MONOPHOSPHATE"),
  16.179 -"T37": ('t', 'd', 'M', None, "3'-AMINO-2'DEOXYTHYMIDINE 5'-MONOPHOSPHATE"),
  16.180 -"4TA": ('n', 'r', None, None, '"P1-(5\'-ADENOSYL)P4-(5\'-(2\'-DEOXY-THYMIDYL))TETRAPHOSPHATE"'),
  16.181 -"CTH": ('t', 'p', 'M', None, '4-CHLOROTHREONINE'),
  16.182 -"GLU": ('E', 'p', None, None, '"GLUTAMIC'),
  16.183 -"RCY": ('c', 'p', 'M', None, '"S-[(3S,3\'R)-1\'-HYDROXY-2\',2\',5\',5\'-TETRAMETHYL-2,5-DIOXO-1,3\'-BIPYRROLIDIN-3-YL]-L-CYSTEINE"'),
  16.184 -"MDH": ('x', 'p', None, None, 'N-METHYLDEHYDROBUTYRINE'),
  16.185 -"MDO": ('x', 'p', None, None, '"{2-[(1S)-1-AMINOETHYL]-5-HYDROXY-4-METHYL-1H-IMIDAZOL-1-YL}ACETIC'),
  16.186 -"8OG": ('g', 'd', 'M', None, '"8-OXO-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.187 -"HCS": ('x', 'p', None, None, '"2-AMINO-4-MERCAPTO-BUTYRIC'),
  16.188 -"UD5": ('u', 'r', 'M', None, '5-FLUOROURIDINE'),
  16.189 -"O2C": ('n', 'd', None, None, '"3\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.190 -"5FU": ('u', 'r', 'M', None, '"5-FLUORO-URIDINE-5\'-MONOPHOSPHATE"'),
  16.191 -"SDG": ('g', 'd', 'M', None, '2-AMINO-9-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-9H-PURINE-6-SELENOL'),
  16.192 -"MDR": ('n', 'd', None, None, '9-(2-DEOXY-BETA-D-RIBOFURANOSYL)-6-METHYLPURINE'),
  16.193 -"BSE": ('s', 'p', 'M', None, 'BETA-3-SERINE'),
  16.194 -"4IN": ('x', 'p', None, None, '4-AMINO-L-TRYPTOPHAN'),
  16.195 -"FCL": ('f', 'p', 'M', None, '3-CHLORO-L-PHENYLALANINE'),
  16.196 -"1SC": ('c', 'r', 'M', None, '"5\'-O-THIOPHOSPHONOCYTIDINE"'),
  16.197 -"R7A": ('c', 'p', 'M', None, '3-S-[(4-BROMO-2,2,5,5-TETRAMETHYL-1-OXO-2,5-DIHYDRO-1H-PYRROL-3-YL)METHYL]SULFANYL-L-CYSTEINE'),
  16.198 -"6IA": ('a', 'r', 'M', None, '"N6-ISOPENTENYL-ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.199 -"XTS": ('g', 'r', 'M', None, '9-[(2R,3R,4S,5R)-3,4-DIHYDROXY-5-(HYDROXYMETHYL)OXOLAN-2-YL]-3H-PURINE-2,6-DIONE'),
  16.200 -"DFT": ('n', 'd', None, None, '"1-[2-DEOXYRIBOFURANOSYL]-2,4-DIFLUORO-5-METHYL-BENZENE-5\'MONOPHOSPHATE"'),
  16.201 -"FMU": ('n', 'r', None, None, '"5-FLUORO-5-METHYLURIDINE-5\'-MONOPHOSPHATE"'),
  16.202 -"XTY": ('n', 'd', None, None, '(1R)-1,4-ANHYDRO-2-DEOXY-1-(6-METHYL-2,4-DIOXO-1,2,3,4-TETRAHYDROQUINAZOLIN-8-YL)-5-O-PHOSPHONO-D-ERYTHRO-PENTITOL'),
  16.203 -"MVA": ('v', 'p', 'M', None, 'N-METHYLVALINE'),
  16.204 -"LTA": ('x', 'p', None, None, '"4,8-DIAMINO-3-HYDROXY-OCTANOIC'),
  16.205 -"01W": ('x', 'p', None, None, '(2S)-2-AMMONIO-4-[(2,4-DINITROPHENYL)AMINO]BUTANOATE'),
  16.206 -"DFI": ('x', 'p', None, None, '2,2-DIFLUOROSTATINE'),
  16.207 -"YG": ('g', 'r', 'M', None, 'WYBUTOSINE'),
  16.208 -"FMG": ('g', 'd', 'M', None, '2-AMINO-9-(2-DEOXY-2-FLUORO-5-O-PHOSPHONO-BETA-D-ARABINOFURANOSYL)-7-METHYL-6-OXO-6,9-DIHYDRO-1H-PURIN-7-IUM'),
  16.209 -"DFG": ('g', 'd', 'M', None, "2'-DEOXY-L-RIBO-FURANOSYL GUANINE-5'-MONOPHOSPHATE"),
  16.210 -"XTL": ('t', 'd', 'M', None, '"[(1S,4R,6R)-6-HYDROXY-4-(THYMIN-9-YL)CYCLOHEX-2-EN-1-YL]METHYL'),
  16.211 -"DFC": ('c', 'd', 'M', None, "2'-DEOXY-L-RIBO-FURANOSYL CYTOSINE-5'-MONOPHOSPHATE"),
  16.212 -"XTH": ('t', 'd', 'M', None, '1-(2,3-DIDEOXY-6-O-PHOSPHONO-BETA-D-ERYTHRO-HEXOPYRANOSYL)-5-METHYLPYRIMIDINE-2,4(1H,3H)-DIONE'),
  16.213 -"NTY": ('y', 'p', 'M', None, '"BETA'),
  16.214 -"EDC": ('g', 'd', 'M', None, '"N3,N4-ETHENO-2\'-DEOXYCYTIDINE-5\'-MONOPHOSPHATE"'),
  16.215 -"T49": ('t', 'd', 'M', None, "S4'-2'DEOXYTHYMIDINE 5'-MONOPHOSPHATE"),
  16.216 -"EDA": ('a', 'd', 'M', None, '"3-[2-DEOXY-RIBOFURANOSYL]-3H-1,3,4,5A,8-PENTAAZA-AS-INDACENE-5\'-MONOPHOSPHATE"'),
  16.217 -"O12": ('x', 'p', None, None, 'N~5~-DODECANOYL-L-ORNITHINE'),
  16.218 -"MMT": ('t', 'd', 'M', None, '"5\'-O-(DIMETHYLAMINO)-THYMIDINE"'),
  16.219 -"T41": ('n', 'r', None, None, "1-(2-O-METHYL-BETA-D-ARABINOFURANOSYL)THYMIDINE 5'-MONOPHOSPHATE"),
  16.220 -"LMS": ('n', 'r', None, None, '"[(2R,3S,4R,5R)-5-(6-AMINO-9H-PURIN-9-YL)-3,4-DIHYDROXYTETRAHYDRO-2-FURANYL]METHYL'),
  16.221 -"0AP": ('c', 'd', 'M', None, "2'-deoxycytidine 3',5'-bis(dihydrogen phosphate)"),
  16.222 -"ORQ": ('r', 'p', 'M', None, 'N~5~-ACETYL-L-ORNITHINE'),
  16.223 -"ORN": ('a', 'p', 'M', None, 'ORNITHINE'),
  16.224 -"ALM": ('a', 'p', 'M', None, '1-METHYL-ALANINAL'),
  16.225 -"VB1": ('k', 'p', 'M', None, 'N^6^-[(1R)-2-{[(1S)-1-CARBOXYPROPYL]AMINO}-2-OXO-1-(SULFANYLMETHYL)ETHYL]-6-OXO-L-LYSINE'),
  16.226 -"PUY": ('n', 'r', None, None, 'PUROMYCIN'),
  16.227 -"SBD": ('s', 'p', 'M', None, '"D-NAPHTHYL-1-ACETAMIDO'),
  16.228 -"LPS": ('s', 'p', 'M', None, 'O-{HYDROXY[((2R)-2-HYDROXY-3-{[(1S)-1-HYDROXYPENTADECYL]OXY}PROPYL)OXY]PHOSPHORYL}-L-SERINE'),
  16.229 -"SC": ('c', 'd', 'M', None, '"2-DEOXY-CYTIDINE-5\'-THIOPHOSPHORATE"'),
  16.230 -"ALT": ('a', 'p', 'M', None, 'THIOALANINE'),
  16.231 -"GL3": ('g', 'p', 'M', None, 'THIOGLYCIN'),
  16.232 -"LME": ('e', 'p', 'M', None, '"(3R)-3-METHYL-L-GLUTAMIC'),
  16.233 -"SBL": ('s', 'p', 'M', None, '"L-NAPHTHYL-1-ACETAMIDO'),
  16.234 -"ALQ": ('x', 'p', None, None, '"2-METHYL-PROPIONIC'),
  16.235 -"CAB": ('a', 'p', 'M', None, '4-CARBOXY-4-AMINOBUTANAL'),
  16.236 -"GPL": ('k', 'p', 'M', None, "LYSINE GUANOSINE-5'-MONOPHOSPHATE"),
  16.237 -"CAY": ('c', 'p', 'M', None, 'CARBOXYMETHYLENECYSTEINE'),
  16.238 -"DPR": ('p', 'p', 'M', None, 'D-PROLINE'),
  16.239 -"DPQ": ('y', 'p', 'M', None, '"(S)-2-AMINO-3-(4-HYDROXY-3-OXOCYCLOHEXA-1,4-DIENYL)PROPANOIC'),
  16.240 -"DPP": ('a', 'p', 'M', None, '"DIAMMINOPROPANOIC'),
  16.241 -"CAS": ('c', 'p', 'M', None, 'S-(DIMETHYLARSENIC)CYSTEINE'),
  16.242 -"NC1": ('s', 'p', 'M', None, '"NITROCEFIN'),
  16.243 -"IYR": ('y', 'p', 'M', None, '3-IODO-TYROSINE'),
  16.244 -"CAV": ('x', 'p', None, None, '"5-AMINO-6-CYCLOHEXYL-3,4-DIHYDROXY-2-ISOPROPYL-HEXANOIC'),
  16.245 -"DPY": ('n', 'd', None, None, "2-DEOXYRIBOFURANOSYL-PYRIDINE-2,6-DICARBOXYLIC ACID-5'-MONOPHOSPHATE"),
  16.246 -"5AA": ('a', 'd', 'M', None, '"N6-DIMETHYL-3\'-AMINO-ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.247 -"DPB": ('t', 'd', 'M', None, '"(S)-1-[2\'-DEOXY-3\',5\'-O-(1-PHOSPHONO)BENZYLIDENE-B-D-THREO-PENTOFURANOSYL]THYMINE"'),
  16.248 -"CAL": ('x', 'p', None, None, '"5-AMINO-6-CYCLOHEXYL-4-HYDROXY-2-ISOBUTYL-HEXANOIC'),
  16.249 -"DPN": ('f', 'p', 'M', None, 'D-PHENYLALANINE'),
  16.250 -"BAL": ('a', 'p', 'M', None, 'BETA-ALANINE'),
  16.251 -"DPL": ('p', 'p', 'M', None, '4-OXOPROLINE'),
  16.252 -"CAF": ('c', 'p', 'M', None, 'S-DIMETHYLARSINOYL-CYSTEINE'),
  16.253 -"DPH": ('f', 'p', 'M', None, 'DEAMINO-METHYL-PHENYLALANINE'),
  16.254 -"HIP": ('h', 'p', 'M', None, 'ND1-PHOSPHONOHISTIDINE'),
  16.255 -"LG": ('g', 'r', 'M', None, '"L-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.256 -"LA2": ('k', 'p', 'M', None, 'N~6~-[(6R)-6,8-DISULFANYLOCTANOYL]-L-LYSINE'),
  16.257 -"KOR": ('m', 'p', 'M', None, 'L-HOMOCYSTEINE-S-N-S-L-CYSTEINE'),
  16.258 -"LC": ('c', 'r', 'M', None, '"L-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.259 -"D4M": ('t', 'd', 'M', None, '"[(5R)-5-(5-METHYL-2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)-2,5-DIHYDROFURAN-2-YL]METHYL'),
  16.260 -"5MD": ('n', 'd', None, None, '"5-METHYL-2\'-DEOXYPSEUDOURIDINE"'),
  16.261 -"PGN": ('g', 'd', 'M', None, '"2\'-DEOXYGUANOSINE-3\',5\'-DIPHOSPHATE"'),
  16.262 -"NHL": ('e', 'p', 'M', None, '"(4S)-4-(2-NAPHTHYLMETHYL)-D-GLUTAMIC'),
  16.263 -"PGL": ('x', 'p', None, None, '"AMINOMETHYLENEPHOSPHINIC'),
  16.264 -"TA3": ('t', 'd', 'M', None, '(4S,5R)-3-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-5-METHYL-1,3-DIAZABICYCLO[2.2.0]HEXAN-2-ONE'),
  16.265 -"XCP": ('x', 'p', None, None, '"(1S,2S)-2-AMINOCYCLOPENTANECARBOXYLIC'),
  16.266 -"DYS": ('c', 'p', 'M', None, 'S-[5-(2-AMINOETHYL)-2,3-DIHYDROXYPHENYL]-L-CYSTEINE'),
  16.267 -"HIA": ('h', 'p', 'M', None, '"L-HISTIDINE'),
  16.268 -"HIC": ('h', 'p', 'M', None, '4-METHYL-HISTIDINE'),
  16.269 -"PGP": ('g', 'r', 'M', None, '"GUANOSINE-3\',5\'-DIPHOSPHATE"'),
  16.270 -"AB7": ('x', 'p', None, None, '"ALPHA-AMINOBUTYRIC'),
  16.271 -"IIL": ('i', 'p', 'M', None, 'ISO-ISOLEUCINE'),
  16.272 -"DYG": ('x', 'p', None, None, '"(3S)-3-AMINO-3-[(4Z)-1-(CARBOXYMETHYL)-4-[(4-HYDROXYPHENYL)METHYLIDENE]-5-OXO-IMIDAZOL-2-YL]PROPANOIC'),
  16.273 -"PGY": ('g', 'p', 'M', None, 'PHENYLGLYCINE'),
  16.274 -"A": ('A', 'r', None, None, '"ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.275 -"23F": ('f', 'p', 'M', None, '"(2Z)-2-AMINO-3-PHENYLACRYLIC'),
  16.276 -"143": ('c', 'p', 'M', None, 'S-2,3-DIHYDRO-5-GLYCIN-2-YL-ISOXAZOL-3-YL-CYSTEINE'),
  16.277 -"HIQ": ('h', 'p', 'M', None, '1-[1,2-DIHYDROXY-1-(HYDROXYMETHYL)ETHYL]-L-HISTIDINE'),
  16.278 -"THR": ('T', 'p', None, None, 'THREONINE'),
  16.279 -"PG7": ('g', 'd', 'M', None, '"((2R,3R,5R)-5-(2-AMINO-6-HYDROXY-9H-PURIN-9-YL)-3-HYDROXY-TETRAHYDROFURAN-2-YL)METHYL'),
  16.280 -"ABR": ('a', 'd', 'M', None, '"(R)-(N-PHENYL-2-HYDROXY-ETHYL)-2\'-DEOXY-ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.281 -"HIS": ('H', 'p', None, None, 'HISTIDINE'),
  16.282 -"ABT": ('n', 'd', None, None, "3'-AZIDO-3'-DEOXY-THYMIDINE-5'-ALPHA BORANO TRIPHOSPHATE"),
  16.283 -"PG1": ('s', 'p', 'M', None, '"PENICILLIN'),
  16.284 -"2LU": ('l', 'p', 'M', None, '"2-AMINO-4-METHYL-PENTANYL'),
  16.285 -"NZH": ('h', 'p', 'M', None, '(2S)-2-AMINO-3-[1-(1H-TETRAAZOL-5-YL)-1H-IMIDAZOL-4-YL]PROPANAL'),
  16.286 -"P5P": ('a', 'r', 'M', None, "PURINE RIBOSIDE-5'-MONOPHOSPHATE"),
  16.287 -"STY": ('y', 'p', 'M', None, '"TYROSINE-O-SULPHONIC'),
  16.288 -"PG9": ('g', 'p', 'M', None, 'D-PHENYLGLYCINE'),
  16.289 -"NCX": ('n', 'd', None, None, '1-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-5-NITRO-1H-INDOLE-3-CARBOXAMIDE'),
  16.290 -"NCY": ('x', 'p', None, None, 'N-METHYLCYSTEINE'),
  16.291 -"CFL": ('c', 'd', 'M', None, '4-AMINO-1-(2-DEOXY-2-FLUORO-5-O-PHOSPHONO-BETA-D-ARABINOFURANOSYL)PYRIMIDIN-2(1H)-ONE'),
  16.292 -"3MD": ('d', 'p', 'M', None, '"2S,3S-3-METHYLASPARTIC'),
  16.293 -"1AP": ('a', 'd', 'M', None, '"2,6-DIAMINOPURINE'),
  16.294 -"TFE": ('t', 'd', 'M', None, "2'-O-[2-(TRIFLUORO)ETHYL] THYMIDINE-5'-MONOPHOSPHATE"),
  16.295 -"D3T": ('t', 'd', 'M', None, '"2\',3\'-DIDEOXY-THYMIDINE-5\'-TRIPHOSPHATE"'),
  16.296 -"TFA": ('x', 'p', None, None, '"TRIFLUOROACETYL'),
  16.297 -"BHD": ('d', 'p', 'M', None, '"BETA-HYDROXYASPARTIC'),
  16.298 -"ONL": ('x', 'p', None, None, '5-OXO-L-NORLEUCINE'),
  16.299 -"CFY": ('x', 'p', None, None, '"[(2S)-2-{(2R)-2-[(1S)-1-AMINO-2-PHENYLETHYL]-2-HYDROXY-2,5-DIHYDRO-1,3-THIAZOL-4-YL}-4-(4-HYDROXYBENZYL)-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
  16.300 -"QLG": ('x', 'p', None, None, '"[(4Z)-2-[(1Z)-4-AMINO-4-OXOBUTANIMIDOYL]-4-(2-METHYLPROPYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
  16.301 -"NCB": ('a', 'p', 'M', None, 'N-CARBAMOYL-ALANINE'),
  16.302 -"TFQ": ('f', 'p', 'M', None, '4-(2,2,2-TRIFLUOROETHYL)-L-PHENYLALANINE'),
  16.303 -"XXY": ('x', 'p', None, None, '2-[(1R,2R)-1-AMINO-2-HYDROXYPROPYL]-1-(CARBOXYMETHYL)-4-(1H-IMIDAZOL-5-YLMETHYL)-1H-IMIDAZOL-5-OLATE'),
  16.304 -"23S": ('x', 'p', None, None, '"(S)-2-AMINO-3-(6H-SELENOLO[2,3-B]-PYRROL-4-YL)-PROPIONIC'),
  16.305 -"0AU": ('n', 'd', None, None, "5-iodouridine 5'-(dihydrogen phosphate)"),
  16.306 -"GHP": ('g', 'p', 'M', None, '4-HYDROXYPHENYLGLYCINE'),
  16.307 -"MIA": ('a', 'r', 'M', None, '"2-METHYLTHIO-N6-ISOPENTENYL-ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.308 -"AP7": ('a', 'd', 'M', None, "N1-PROTONATED ADENOSINE-5'-MONOPHOSPHATE"),
  16.309 -"OAD": ('n', 'r', None, None, "2'-O-ACETYL ADENOSINE-5-DIPHOSPHORIBOSE"),
  16.310 -"UDP": ('n', 'r', None, None, '"URIDINE-5\'-DIPHOSPHATE"'),
  16.311 -"GHG": ('q', 'p', 'M', None, 'GAMMA-HYDROXY-GLUTAMINE'),
  16.312 -"ZFB": ('x', 'p', None, None, '(3R)-3-{[(BENZYLOXY)CARBONYL]AMINO}-2-OXO-4-PHENYLBUTANE-1-DIAZONIUM'),
  16.313 -"C38": ('c', 'd', 'M', None, '"5-IODO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.314 -"HAQ": ('x', 'p', None, None, '"5-AMINO-4-OXO-1,2,4,5,6,7-HEXAHYDRO-AZEPINO[3,2,1-HI]INDOLE-2-CARBOXYLIC'),
  16.315 -"C34": ('c', 'd', 'M', None, '"N4-METHYL-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.316 -"C37": ('c', 'd', 'M', None, '"5-FLUORO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.317 -"ONE": ('u', 'r', 'M', None, '"1-(BETA-D-RIBOFURANOSYL)-PYRIDIN-4-ONE-5\'-PHOSPHATE"'),
  16.318 -"C31": ('c', 'r', 'M', None, "2'-O-3-AMINOPROPYL CYTIDINE-5'-MONOPHOSPHATE"),
  16.319 -"HAR": ('r', 'p', 'M', None, 'N-OMEGA-HYDROXY-L-ARGININE'),
  16.320 -"TY2": ('y', 'p', 'M', None, '3-AMINO-L-TYROSINE'),
  16.321 -"TY3": ('y', 'p', 'M', None, '3-HYDROXY-L-TYROSINE'),
  16.322 -"RT": ('n', 'r', None, None, '"RIBOSYLTHYMINE-5\'-MONOPHOSPHATE"'),
  16.323 -"4PE": ('c', 'd', 'M', None, '3-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-6-METHYL-3H-PYRROLO[2,3-D]PYRIMIDIN-2-OL'),
  16.324 -"4PD": ('c', 'd', 'M', None, '3-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-6-METHYL-1,3-DIHYDRO-2H-PYRROLO[2,3-D]PYRIMIDIN-2-ONE'),
  16.325 -"4PC": ('c', 'd', 'M', None, '"3-(2\'-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-6-METHYL-3,7-DIHYDRO-2H-PYRROLO[2,3-D]PYRIMIDIN-2-ONE"'),
  16.326 -"SAC": ('s', 'p', 'M', None, 'N-ACETYL-SERINE'),
  16.327 -"PRO": ('P', 'p', None, None, 'PROLINE'),
  16.328 -"PRN": ('a', 'd', 'M', None, "PURINE 2'-DEOXYRIBO-5'-MONOPHOSPHATE"),
  16.329 -"6CL": ('k', 'p', 'M', None, '6-CARBOXYLYSINE'),
  16.330 -"4PH": ('f', 'p', 'M', None, '4-METHYL-L-PHENYLALANINE'),
  16.331 -"FGL": ('g', 'p', 'M', None, '"2-AMINOPROPANEDIOIC'),
  16.332 -"6CT": ('t', 'd', 'M', None, '"PHOSPHORIC'),
  16.333 -"IAS": ('d', 'p', 'M', None, '"BETA-ASPARTYL'),
  16.334 -"PRS": ('p', 'p', 'M', None, 'THIOPROLINE'),
  16.335 -"UR3": ('u', 'r', 'M', None, '"3-METHYLURIDINE-5\'-MONOPHOSHATE"'),
  16.336 -"SAR": ('g', 'p', 'M', None, 'SARCOSINE'),
  16.337 -"TCY": ('a', 'd', 'M', None, '"(2R,3AS,4AR,5AR,5BS)-2-(6-AMINO-9H-PURIN-9-YL)-3A-HYDROXYHEXAHYDROCYCLOPROPA[4,5]CYCLOPENTA[1,2-B]FURAN-5A(4H)-YL'),
  16.338 -"4F3": ('x', 'p', None, None, '"[2-(1-AMINO-2-HYDROXY-PROPYL)-4-(4-FLUORO-1H-INDOL-3-YLMETHYL)-5-HYDROXY-IMIDAZOL-1-YL]-ACETIC'),
  16.339 -"TPG": ('g', 'r', 'M', None, '"2,2,7-TRIMETHYL-GUANOSINE-5\'-TRIPHOSPHATE-5\'-GUANOSINE"'),
  16.340 -"LAL": ('a', 'p', 'M', None, 'N,N-DIMETHYL-L-ALANINE'),
  16.341 -"TPC": ('c', 'd', 'M', None, "5'-THIO-2'-DEOXY-CYTOSINE PHOSPHONIC ACID"),
  16.342 -"PPU": ('a', 'r', 'M', None, '"PUROMYCIN-5\'-MONOPHOSPHATE"'),
  16.343 -"CHF": ('x', 'p', None, None, 'CYCLOHEXYLFLUOROSTATONE'),
  16.344 -"BFD": ('d', 'p', 'M', None, '"ASPARTATE'),
  16.345 -"TPO": ('t', 'p', 'M', None, 'PHOSPHOTHREONINE'),
  16.346 -"H5M": ('p', 'p', 'M', None, 'TRANS-3-HYDROXY-5-METHYLPROLINE'),
  16.347 -"AYG": ('x', 'p', None, None, '"[(4E)-2-[(1S)-1-AMINOETHYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
  16.348 -"TPL": ('w', 'p', 'M', None, 'TRYPTOPHANOL'),
  16.349 -"AYA": ('a', 'p', 'M', None, 'N-ACETYLALANINE'),
  16.350 -"6MC": ('a', 'r', 'M', None, '"CIS-N6-METHYL-DEOXY-ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.351 -"6MA": ('a', 'r', 'M', None, '"N6-METHYL-DEOXY-ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.352 -"GSR": ('g', 'd', 'M', None, "2'-DEOXY-N2-(R)STYRENE OXIDE GUANOSINE MONOPHOSPHATE"),
  16.353 -"EYS": ('x', 'p', None, None, 'S-SELANYLCYSTEINAL'),
  16.354 -"LPL": ('x', 'p', None, None, 'LEU-HYDROXYETHYLENE-LEU'),
  16.355 -"6MZ": ('n', 'r', None, None, '"N6-METHYLADENOSINE-5\'-MONOPHOSPHATE"'),
  16.356 -"PR3": ('c', 'p', 'M', None, 'S,S-PROPYLTHIOCYSTEINE'),
  16.357 -"2ST": ('t', 'd', 'M', None, "5-METHYL-2'-SE-METHYL-2'-SELENOURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
  16.358 -"0NC": ('a', 'p', 'M', None, 'N-METHYL-L-ALANINAMIDE'),
  16.359 -"MRG": ('g', 'd', 'M', None, '"N2-(3-MERCAPTOPROPYL)-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
  16.360 -"KYN": ('a', 'p', 'M', None, 'KYNURENINE'),
  16.361 -"G2S": ('g', 'd', 'M', None, '"GUANOSINE-5\'-DITHIOPHOSPHORATE"'),
  16.362 -"PYX": ('c', 'p', 'M', None, 'S-[S-THIOPYRIDOXAMINYL]CYSTEINE'),
  16.363 -"PYY": ('n', 'r', None, None, '"D-RIBOFURANOSYL-BENZENE-5\'-MONOPHOSPHATE"'),
  16.364 -"TYN": ('y', 'p', 'M', None, 'AMINOBENZOFURAZAN-O-TYROSINE'),
  16.365 -"TYO": ('y', 'p', 'M', None, '"(4Z,6E)-2-AMINO-7-HYDROPEROXY-4-[(E)-2-HYDROXYVINYL]HEPTA-4,6-DIENOIC'),
  16.366 -"KAG": ('g', 'r', 'M', None, "2'-DEOXY-N-[(1S)-1-METHYL-3-OXOPROPYL]GUANOSINE 5'-PHOSPHATE"),
  16.367 -"IPG": ('g', 'p', 'M', None, '"N-ISOPROPYL'),
  16.368 -"GH3": ('g', 'r', 'M', None, '"3\'-DEOXY-GUANOSINE-5\'-TRIPHOSPHATE"'),
  16.369 -"APP": ('x', 'p', None, None, '1-ACETYL-2-CARBOXYPIPERIDINE'),
  16.370 -"IPN": ('n', 'd', None, None, '2-AMINOETHYLGLYCINE-CARBONYLMETHYLENE-5-IODOURACIL'),
  16.371 -"TYB": ('y', 'p', 'M', None, 'TYROSINAL'),
  16.372 -"FAG": ('n', 'd', None, None, "[1',2'-DIDEOXY[2-AMINO-5-([9-HYDROXY-AFLATOXINB2-8-YL]-FORMYL-AMINO)-6-OXO-1,6-IHYDRO-PYRIMIDIN-4-YLAMINO]-RIBOFURANOSE]-5-MONOPHOSPHATE GROUP"),
  16.373 -"DBY": ('y', 'p', 'M', None, '"3,5'),
  16.374 -"APK": ('k', 'p', 'M', None, '"5\'-O-[(S)-{[(5S)-5-AMINO-6-OXOHEXYL]AMINO}(HYDROXY)PHOSPHORYL]ADENOSINE"'),
  16.375 -"APH": ('a', 'p', 'M', None, 'P-AMIDINOPHENYL-3-ALANINE'),
  16.376 -"API": ('k', 'p', 'M', None, '"2,6-DIAMINOPIMELIC'),
  16.377 -"TYX": ('x', 'p', None, None, 'S-(2-ANILINO-2-OXOETHYL)-L-CYSTEINE'),
  16.378 -"APO": ('x', 'p', None, None, '"D-2-AMINO-3-PHOSPHONO-PROPIONIC'),
  16.379 -"APM": ('x', 'p', None, None, 'M-AMIDINOPHENYL-3-ALANINE'),
  16.380 -"TYT": ('y', 'p', 'M', None, '"TYROSINE'),
  16.381 -"TYU": ('n', 'r', None, None, 'TETRAHYDROURIDINE'),
  16.382 -"DBS": ('s', 'p', 'M', None, '"2-(2,3-DIHYDROXY-BENZOYLAMINO)-3-HYDROXY-PROPIONIC'),
  16.383 -"DBU": ('a', 'p', 'M', None, '"(2E)-2-AMINOBUT-2-ENOIC'),
  16.384 -"TYQ": ('y', 'p', 'M', None, '3-AMINO-6-HYDROXY-TYROSINE'),
  16.385 -"TYR": ('Y', 'p', None, None, 'TYROSINE'),
  16.386 -"APE": ('x', 'p', None, None, '"(1-AMINO-2-PHENYL-ETHYL)-CARBAMIC'),
  16.387 -"BT5": ('n', 'r', None, None, 'BIOTINYL-5-AMP'),
  16.388 -"KST": ('k', 'p', 'M', None, 'N~6~-(5-CARBOXY-3-THIENYL)-L-LYSINE'),
  16.389 -"2AD": ('x', 'p', None, None, '"2\'-AMINO-2\'-DEOXYADENOSINE"'),
  16.390 -"ARG": ('R', 'p', None, None, 'ARGININE'),
  16.391 -"HDP": ('n', 'd', None, None, '"[(1S,6S)-6-HYDROXY-4-(5-METHYL-2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)CYCLOHEX-2-EN-1-YL]METHYL'),
  16.392 -"CZ2": ('c', 'p', 'M', None, 'S-(DIHYDROXYARSINO)CYSTEINE'),
  16.393 -"2AO": ('x', 'p', None, None, '(2S)-2-AMINOHEXAN-1-OL'),
  16.394 -"G33": ('g', 'd', 'M', None, "8-METHYL-2'-DEOXYGUANOSINE 3'-MONOPHOSPHATE"),
  16.395 -"AHO": ('a', 'p', 'M', None, 'N-ACETYL-N-HYDROXY-L-ORNITHINE'),
  16.396 -"P2U": ('n', 'd', None, None, '"2\'-DEOXY-PSEUDOURIDINE-5\'MONOPHOSPHATE"'),
  16.397 -"P2T": ('t', 'd', 'M', None, "2'-O-PROPYL THYMIDINE-5-MONOPHOSPHATE"),
  16.398 -"MG1": ('g', 'd', 'M', None, "2'-DEOXY-1-METHYLGUANOSINE 5'-(DIHYDROGEN PHOSPHATE)"),
  16.399 -"G32": ('g', 'd', 'M', None, '"O6-METHYL-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.400 -"2AR": ('a', 'd', 'M', None, '"2\'-DEOXYARISTEROMYCIN-5\'-PHOSPHATE"'),
  16.401 -"2AS": ('x', 'p', None, None, '"(2S,3S)-3-AMINO-2-METHYL-4-OXOBUTANOIC'),
  16.402 -"G46": ('g', 'r', 'M', None, '"2\'-DEOXY-GUANOSINE-5\'-MONOTHIOPHOSPHATE"'),
  16.403 -"G47": ('g', 'd', 'M', None, '"N2-ETHANETHIOL-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.404 -"G48": ('g', 'r', 'M', None, '"2\'-O-METHYOXYETHYL-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.405 -"G49": ('g', 'd', 'M', None, '"N2-METHYL-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.406 -"OCS": ('c', 'p', 'M', None, '"CYSTEINESULFONIC'),
  16.407 -"P2Y": ('p', 'p', 'M', None, '(2S)-PYRROLIDIN-2-YLMETHYLAMINE'),
  16.408 -"PHA": ('f', 'p', 'M', None, 'PHENYLALANINAL'),
  16.409 -"NLQ": ('q', 'p', 'M', None, 'N~2~-ACETYL-L-GLUTAMINE'),
  16.410 -"NLP": ('l', 'p', 'M', None, '"(1-AMINO-PENTYL)-PHOSPHONIC'),
  16.411 -"MLL": ('l', 'p', 'M', None, '"METHYL'),
  16.412 -"CEA": ('c', 'p', 'M', None, 'S-HYDROXY-CYSTEINE'),
  16.413 -"HV5": ('a', 'p', 'M', None, 'TERT-BUTYLALANINE'),
  16.414 -"HMR": ('r', 'p', 'M', None, 'BETA-HOMOARGININE'),
  16.415 -"HRG": ('r', 'p', 'M', None, 'L-HOMOARGININE'),
  16.416 -"CSP": ('c', 'p', 'M', None, 'S-PHOSPHOCYSTEINE'),
  16.417 -"FA2": ('a', 'd', 'M', None, '"5-(6-AMINO-9H-PURIN-9-YL)-4-HYDROXYTETRAHYDROFURAN-3-YL'),
  16.418 -"BMP": ('n', 'r', None, None, '"6-HYDROXYURIDINE-5\'-PHOSPHATE"'),
  16.419 -"NLE": ('l', 'p', 'M', None, 'NORLEUCINE'),
  16.420 -"RTP": ('n', 'r', None, None, '"RIBAVIRIN'),
  16.421 -"BMT": ('t', 'p', 'M', None, '4-METHYL-4-[(E)-2-BUTENYL]-4,N-METHYL-THREONINE'),
  16.422 -"G38": ('g', 'd', 'M', None, '"3\'-AMINO-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.423 -"CS4": ('c', 'p', 'M', None, 'S-[3-(3,4-DICHLOROPHENYL)-3-OXOPROPYL]-L-CYSTEINE'),
  16.424 -"2FI": ('n', 'd', None, None, '"2\'-FLUORO-2\'-DEOXYINOSINE"'),
  16.425 -"TTS": ('y', 'p', 'M', None, '3-((3E)-4-HYDROXY-3-{[2-(4-HYDROXYPHENYL)ETHYL]IMINO}-6-OXOCYCLOHEXA-1,4-DIEN-1-YL)ALANINE'),
  16.426 -"CS1": ('c', 'p', 'M', None, 'S-(2-ANILINYL-SULFANYL)-CYSTEINE'),
  16.427 -"CS0": ('c', 'p', 'M', None, 'S-(2-HYDROXYETHYL)-L-CYSTEINE'),
  16.428 -"NLO": ('l', 'p', 'M', None, 'O-METHYL-L-NORLEUCINE'),
  16.429 -"NLN": ('l', 'p', 'M', None, '"NORLEUCINE'),
  16.430 -"SHP": ('g', 'p', 'M', None, '(4-HYDROXYMALTOSEPHENYL)GLYCINE'),
  16.431 -"CSL": ('c', 'd', 'M', None, '"(D)-2\'-METHYLSELENYL-2\'-DEOXYCYTIDINE-5\'-PHOSPHATE"'),
  16.432 -"SHR": ('k', 'p', 'M', None, '"N-(5-AMINO-5-CARBOXYPENTYL)GLUTAMIC'),
  16.433 -"OXX": ('d', 'p', 'M', None, '"OXALYL-ASPARTYL'),
  16.434 -"B3Y": ('y', 'p', 'M', None, '"(3S)-3-AMINO-4-(4-HYDROXYPHENYL)BUTANOIC'),
  16.435 -"DLE": ('l', 'p', 'M', None, 'D-LEUCINE'),
  16.436 -"PYA": ('a', 'p', 'M', None, '3-(1,10-PHENANTHROL-2-YL)-L-ALANINE'),
  16.437 -"CSE": ('c', 'p', 'M', None, 'SELENOCYSTEINE'),
  16.438 -"5FA": ('a', 'r', 'M', None, '"ADENOSINE-5\'-PENTAPHOSPHATE"'),
  16.439 -"GCK": ('c', 'd', 'M', None, "PHOSPHORIC ACID 9-(2-GUANIDINOETHOXY-3-(2-DEOXY-BETA-D-ERYTHROPENTOFURANOSYL))-3H-PYRIMIDO-[5,4-B][1,4]-BENZOOXAZIN-2-ONE]-5'-ESTER"),
  16.440 -"5FC": ('c', 'd', 'M', None, '"5-FORMYL-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.441 -"GGL": ('e', 'p', 'M', None, '"GAMMA-GLUTAMIC'),
  16.442 -"B3Q": ('x', 'p', None, None, '"(3S)-3,6-DIAMINO-6-OXOHEXANOIC'),
  16.443 -"B3S": ('s', 'p', 'M', None, '"(3R)-3-AMINO-4-HYDROXYBUTANOIC'),
  16.444 -"B3L": ('x', 'p', None, None, '"(3S)-3-AMINO-5-METHYLHEXANOIC'),
  16.445 -"A47": ('a', 'd', 'M', None, "N6-METHOXY ADENOSINE 5'-MONOPHOSPHATE"),
  16.446 -"A44": ('a', 'r', 'M', None, "2'-O-METHYOXYETHYL-ADENOSINE 5'-MONOPHOSPHATE"),
  16.447 -"5MU": ('u', 'r', 'M', None, "5-METHYLURIDINE 5'-MONOPHOSPHATE"),
  16.448 -"CSY": ('x', 'p', None, None, '"[4-(4-HYDROXY-BENZYL)-2-(2-HYDROXY-1-METHYL-ETHYL)-5-OXO-IMIDAZOLIDIN-1-YL]-ACETIC'),
  16.449 -"A43": ('a', 'd', 'M', None, "3'-AMINO DEOXYADENOSINE 5'-MONOPHOSPHATE"),
  16.450 -"A40": ('a', 'd', 'M', None, "N2-METHYL 2'-DEOXYADENOSINE 5'-MONOPHOSPHATE"),
  16.451 -"B3K": ('k', 'p', 'M', None, '"(3S)-3,7-DIAMINOHEPTANOIC'),
  16.452 -"B3D": ('d', 'p', 'M', None, '"3-AMINOPENTANEDIOIC'),
  16.453 -"B3E": ('e', 'p', 'M', None, '"(3S)-3-AMINOHEXANEDIOIC'),
  16.454 -"DLY": ('k', 'p', 'M', None, 'D-LYSINE'),
  16.455 -"MTU": ('a', 'r', 'M', None, '9-BETA-D-RIBOFURANOSYL-9H-PURIN-2-AMINE'),
  16.456 -"B3A": ('a', 'p', 'M', None, '"(3S)-3-AMINOBUTANOIC'),
  16.457 -"CSS": ('c', 'p', 'M', None, 'S-MERCAPTOCYSTEINE'),
  16.458 -"CSR": ('c', 'p', 'M', None, 'S-ARSONOCYSTEINE'),
  16.459 -"CZZ": ('c', 'p', 'M', None, 'THIARSAHYDROXY-CYSTEINE'),
  16.460 -"N10": ('s', 'p', 'M', None, 'O-[(HEXYLAMINO)CARBONYL]-L-SERINE'),
  16.461 -"MGG": ('r', 'p', 'M', None, '"2-(2-CARBOXY-ACETYLAMINO)-5-GUANIDINO-PENTANOIC'),
  16.462 -"A35": ('a', 'd', 'M', None, "2-AMINO DEOXYADENOSINE 5'-MONOPHOSPHATE"),
  16.463 -"AFG": ('g', 'd', 'M', None, '"N-(5\'-PHOSPHO-2\'-DEOXYGUANOSIN-8-YL)-2-AMINOFLUORENE"'),
  16.464 -"BTR": ('w', 'p', 'M', None, '6-BROMO-TRYPTOPHAN'),
  16.465 -"SSU": ('u', 'r', 'M', None, '"URIDINE-5\'-PHOSPHOROTHIOATE"'),
  16.466 -"70U": ('u', 'r', 'M', None, '"5-(O-METHYLACETO)-2-THIO-2-DEOXY-URIDINE-5\'-MONOPHOSPHATE"'),
  16.467 -"A34": ('a', 'd', 'M', None, "N6-METHYL DEOXYADENOSINE 5'-MONOPHOSPHATE"),
  16.468 -"MGN": ('q', 'p', 'M', None, '2-METHYL-GLUTAMINE'),
  16.469 -"XCL": ('c', 'd', 'M', None, '"[(1S,4R,6R)-6-HYDROXY-4-(CYTOSIN-9-YL)CYCLOHEX-2-EN-1-YL]METHYL'),
  16.470 -"G4P": ('n', 'r', None, None, '"GUANOSINE-5\',3\'-TETRAPHOSPHATE"'),
  16.471 -"XCS": ('n', 'd', None, None, '(1R)-1-(4-AMINO-6-METHYL-2-OXO-1,2-DIHYDROQUINAZOLIN-8-YL)-1,4-ANHYDRO-2-DEOXY-5-O-PHOSPHONO-D-ERYTHRO-PENTITOL'),
  16.472 -"MGQ": ('a', 'r', 'M', None, '"7-BENZYL'),
  16.473 -"ABS": ('a', 'd', 'M', None, '"(S)-(N-PHENYL-2-HYDROXY-ETHYL)-2\'-DEOXY-ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.474 -"BTA": ('l', 'p', 'M', None, '4-DEMETHYL-LEUCINE'),
  16.475 -"MGV": ('g', 'r', 'M', None, '"P-FLUORO-7-BENZYL'),
  16.476 -"XCT": ('c', 'd', 'M', None, '4-AMINO-1-(2,3-DIDEOXY-6-O-PHOSPHONO-BETA-D-ERYTHRO-HEXOPYRANOSYL)PYRIMIDIN-2(1H)-ONE'),
  16.477 -"TTQ": ('w', 'p', 'M', None, '6-AMINO-7-HYDROXY-L-TRYPTOPHAN'),
  16.478 -"MGY": ('g', 'p', 'M', None, 'N-METHYLGLYCINE'),
  16.479 -"XCY": ('c', 'd', 'M', None, '"{5-[4-{[4-(AMINOMETHYL)BENZYL]AMINO}-2-OXOPYRIMIDIN-1(2H)-'),
  16.480 -"NNH": ('r', 'p', 'M', None, 'NOR-N-OMEGA-HYDROXY-L-ARGININE'),
  16.481 -"TBG": ('g', 'p', 'M', None, '"T-BUTYL'),
  16.482 -"ATD": ('t', 'd', 'M', None, '"THYMIDINE-3\'-PHOSPHATE"'),
  16.483 -"U8U": ('u', 'r', 'M', None, '"5-METHYLAMINOMETHYL-2-THIOURIDINE-5\'-MONOPHOSPHATE"'),
  16.484 -"SNC": ('c', 'p', 'M', None, 'S-NITROSO-CYSTEINE'),
  16.485 -"ALG": ('r', 'p', 'M', None, '"GUANIDINOBUTYRYL'),
  16.486 -"M1G": ('g', 'd', 'M', None, '"3-(2-DEOXY-BETA-D-RIBOFURANOSYL)-PYRIDO[5,6-A]-PURINE-10-ONE-5\'-MONOPHOSPHATE"'),
  16.487 -"ATL": ('t', 'd', 'M', None, '"[(1S,3R,4S,7R)-7-HYDROXY-3-(THYMIN-1-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
  16.488 -"ATM": ('t', 'd', 'M', None, '"3\'-AZIDO-3\'-DEOXYTHYMIDINE-5\'-MONOPHOSPHATE"'),
  16.489 -"HPC": ('f', 'p', 'M', None, '3-AMINO-4-PHENYL-BUTAN-2-ONE'),
  16.490 -"TP1": ('t', 'd', 'M', None, '2-(METHYLAMINO)-ETHYLGLYCINE-CARBONYLMETHYLENE-THYMINE'),
  16.491 -"XUG": ('g', 'd', 'M', None, "2'-SE-METHYL-2'-SELENOGUANOSINE 5'-(DIHYDROGEN PHOSPHATE)"),
  16.492 -"ISO": ('x', 'p', None, None, 'PARA-ISOPROPYLANILINE'),
  16.493 -"3MM": ('x', 'p', None, None, '(1R)-1-CARBOXY-N,N,N-TRIMETHYL-3-(METHYLSULFANYL)PROPAN-1-AMINIUM'),
  16.494 -"175": ('x', 'p', None, None, '3,5-DIHYDRO-5-METHYLIDENE-4H-IMIDAZOL-4-ON'),
  16.495 -"2TY": ('y', 'p', 'M', None, '2-HYDROXY-5-{[(1E)-2-PHENYLETHYLIDENE]AMINO}-L-TYROSINE'),
  16.496 -"CSB": ('c', 'p', 'M', None, '"CYS'),
  16.497 -"IT1": ('k', 'p', 'M', None, '(E)-N~6~-({3-HYDROXY-2-METHYL-5-[(PHOSPHONOOXY)METHYL]PYRIDIN-4-YL}METHYLIDENE)-L-LYSINE'),
  16.498 -"UN1": ('x', 'p', None, None, '"2-AMINOHEXANEDIOIC'),
  16.499 -"UN2": ('x', 'p', None, None, '"2-AMINO-4,4-DIHYDROXYBUTANOIC'),
  16.500 -"ASP": ('D', 'p', None, None, '"ASPARTIC'),
  16.501 -"DTH": ('t', 'p', 'M', None, 'D-THREONINE'),
  16.502 -"SER": ('S', 'p', None, None, 'SERINE'),
  16.503 -"ASU": ('n', 'd', None, None, '"4\'-THIO-2\'4\'-DIDEOXYRIBOFURANOSE-5\'-PHOSPHATE"'),
  16.504 -"SEP": ('s', 'p', 'M', None, 'PHOSPHOSERINE'),
  16.505 -"LNT": ('x', 'p', None, None, 'N-[(2S)-2-AMINO-1,1-DIHYDROXY-4-METHYLPENTYL]-L-THREONINE'),
  16.506 -"A39": ('a', 'r', 'M', None, "2'-O-METHYL-ADENOSINE 5'-MONOPHOSPHATE"),
  16.507 -"DGI": ('g', 'd', 'M', None, '"2\'-DEOXYGUANOSINE-5\'-DIPHOSPHATE"'),
  16.508 -"DGN": ('q', 'p', 'M', None, 'D-GLUTAMINE'),
  16.509 -"DGL": ('e', 'p', 'M', None, '"D-GLUTAMIC'),
  16.510 -"SEG": ('a', 'p', 'M', None, 'HYDROXYALANINE'),
  16.511 -"ASB": ('d', 'p', 'M', None, '"ASPARTIC'),
  16.512 -"ASA": ('d', 'p', 'M', None, '"ASPARTIC'),
  16.513 -"SEC": ('a', 'p', 'M', None, '"2-AMINO-3-SELENINO-PROPIONIC'),
  16.514 -"SEB": ('s', 'p', 'M', None, 'O-BENZYLSULFONYL-SERINE'),
  16.515 -"0A9": ('f', 'p', 'M', None, '"METHYL'),
  16.516 -"ASK": ('d', 'p', 'M', None, '"DEHYDROXYMETHYLASPARTIC'),
  16.517 -"PVH": ('h', 'p', 'M', None, 'HISTIDINE-METHYL-ESTER'),
  16.518 -"ASI": ('d', 'p', 'M', None, 'L-ISO-ASPARTATE'),
  16.519 -"SEL": ('s', 'p', 'M', None, '2-AMINO-1,3-PROPANEDIOL'),
  16.520 -"ASN": ('N', 'p', None, None, 'ASPARAGINE'),
  16.521 -"ASM": ('x', 'p', None, None, '"2-AMINO-4-OXO-4(1H-PYRROL-1-YL)BUTANOIC'),
  16.522 -"ASL": ('d', 'p', 'M', None, '"ASPARTIC'),
  16.523 -"AS2": ('d', 'p', 'M', None, '"(2R)-2-AMINO-4-OXOBUTANOIC'),
  16.524 -"IMC": ('c', 'd', 'M', None, '"N1-[2-DEOXY-RIBOFURANOSYL]-[2-AMINO-5-METHYL-4-OXO-4H-PYRIMIDINE]-5\'-MONOPHOSPHATE"'),
  16.525 -"A3P": ('a', 'r', 'M', None, '"ADENOSINE-3\'-5\'-DIPHOSPHATE"'),
  16.526 -"CLH": ('k', 'p', 'M', None, '"2-AMINO-6-[2-(2-OXO-ACETYLAMINO)-ACETYLAMINO]-HEXANOIC'),
  16.527 -"3DR": ('n', 'd', None, None, '"1\',2\'-DIDEOXYRIBOFURANOSE-5\'-PHOSPHATE"'),
  16.528 -"FRD": ('x', 'p', None, None, '1-PHENYL-2-AMINOPROPANE'),
  16.529 -"CLD": ('a', 'p', 'M', None, '"D-PARA-CHLOROPHENYL-1-ACTEAMIDOBORONIC'),
  16.530 -"CLE": ('l', 'p', 'M', None, '"LEUCINE'),
  16.531 -"PDU": ('n', 'd', None, None, '"5(1-PROPYNYL)-2\'-DEOXYURIDINE-5-MONOPHOSPHATE"'),
  16.532 -"CLG": ('k', 'p', 'M', None, '"2-AMINO-6-[2-(2-AMINOOXY-ACETYLAMINO)-ACETYLAMINO]-HEXANOIC'),
  16.533 -"BBC": ('c', 'p', 'M', None, '3-[(4-AMINOBUTYL)SULFINYL]-2-IMINOPROPAN-1-OL'),
  16.534 -"TFO": ('a', 'd', 'M', None, '"[2-(6-AMINO-9H-PURIN-9-YL)-1-METHYLETHOXY]METHYLPHOSPHONIC'),
  16.535 -"CLB": ('a', 'p', 'M', None, '"D-PARA-CHLOROPHENYL-1-ACETAMIDOBORONIC'),
  16.536 -"TLC": ('t', 'd', 'M', None, '"2-O,3-ETHDIYL-ARABINOFURANOSYL-THYMINE-5\'-MONOPHOSPHATE"'),
  16.537 -"2DM": ('n', 'd', None, None, '"2-HYDROXY-3-(PYREN-1-YLMETHOXY)PROPYL'),
  16.538 -"A3A": ('a', 'd', 'M', None, '"2\'DEOXY-ALPHA-ANOMERIC-ADENOSINE-5\'-PHOSPHATE"'),
  16.539 -"PDL": ('x', 'p', None, None, '"N-(5\'-PHOSPHOPYRIDOXYL)-L-ALANINE"'),
  16.540 -"3DA": ('a', 'd', 'M', None, '"3\'-DEOXYADENOSINE-5\'-MONOPHOSPHATE"'),
  16.541 -"GT9": ('c', 'p', 'M', None, 'S-NONYL-CYSTEINE'),
  16.542 -"CLV": ('x', 'p', None, None, '"{(2S)-2-[(1S)-1-AMINOETHYL]-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
  16.543 -"PDD": ('x', 'p', None, None, '"N-(5\'-PHOSPHOPYRIDOXYL)-D-ALANINE"'),
  16.544 -"1TQ": ('w', 'p', 'M', None, '6-(FORMYLAMINO)-7-HYDROXY-L-TRYPTOPHAN'),
  16.545 -"SEM": ('x', 'p', None, None, '3-AMINO-4-OXYBENZYL-2-BUTANONE'),
  16.546 -"TGP": ('g', 'd', 'M', None, "5'-THIO-2'-DEOXY-GUANOSINE PHOSPHONIC ACID"),
  16.547 -"OMC": ('c', 'r', 'M', None, '"O2\'-METHYLYCYTIDINE-5\'-MONOPHOSPHATE"'),
  16.548 -"AEA": ('x', 'p', None, None, '"(2-AMINO-2-CARBAMOYL-ETHYLSULFANYL)-ACETIC'),
  16.549 -"OMG": ('g', 'r', 'M', None, '"O2\'-METHYLGUANOSINE-5\'-MONOPHOSPHATE"'),
  16.550 -"H2U": ('u', 'r', 'M', None, '"5,6-DIHYDROURIDINE-5\'-MONOPHOSPHATE"'),
  16.551 -"A38": ('a', 'd', 'M', None, "8-OXY DEOXYADENOSINE-5'-MONOPHOSPHATE"),
  16.552 -"DTY": ('y', 'p', 'M', None, 'D-TYROSINE'),
  16.553 -"PVL": ('x', 'p', None, None, '"PYRUVOYL'),
  16.554 -"ABA": ('a', 'p', 'M', None, '"ALPHA-AMINOBUTYRIC'),
  16.555 -"OMU": ('u', 'r', 'M', None, "O2'-METHYLURIDINE 5'-MONOPHOSPHATE"),
  16.556 -"OMT": ('m', 'p', 'M', None, 'S-DIOXYMETHIONINE'),
  16.557 -"CRF": ('x', 'p', None, None, '[2-(1-AMINO-2-HYDROXY-PROPYL)-4-(1H-INDOL-3-YLMETHYLENE)-5-OXO-4,5-DIHYDRO-IMIDAZOL-1-YL]-ACETALDEHYDE'),
  16.558 -"FPA": ('f', 'p', 'M', None, '"1,1'),
  16.559 -"VMS": ('x', 'p', None, None, '"5\'O-[N-(L-VALYL)SULPHAMOYL]ADENOSINE"'),
  16.560 -"T11": ('f', 'p', 'M', None, '4-[3-(TRIFLUOROMETHYL)DIAZIRIDIN-3-YL]-L-PHENYLALANINE'),
  16.561 -"2MR": ('r', 'p', 'M', None, '"N3,'),
  16.562 -"DNE": ('l', 'p', 'M', None, 'D-NORLEUCINE'),
  16.563 -"5IC": ('c', 'r', 'M', None, '"5-IODO-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.564 -"RC7": ('x', 'p', None, None, '{(2R)-4-(4-HYDROXYBENZYL)-2-[2-(1H-IMIDAZOL-4-YL)ETHYL]-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETALDEHYDE'),
  16.565 -"BPE": ('c', 'p', 'M', None, '(2S)-2-AMINO-3-[(3-AMINOPROPYL)SULFANYL]PROPAN-1-OL'),
  16.566 -"2MT": ('p', 'p', 'M', None, '"(4R)-2,2-DIMETHYL-1,3-THIAZOLIDINE-4-CARBOXYLIC'),
  16.567 -"2MU": ('u', 'r', 'M', None, '"2\',5-DIMETHYLURIDINE-5\'-MONOPHOSPHATE"'),
  16.568 -"DG": ('G', 'd', None, None, '"2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
  16.569 -"UCL": ('n', 'd', None, None, "5-CHLORO-2'-DEOXYURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
  16.570 -"DA": ('A', 'd', None, None, '"2\'-DEOXYADENOSINE-5\'-MONOPHOSPHATE"'),
  16.571 -"AEI": ('d', 'p', 'M', None, '"THREONINE-ASPARTIC'),
  16.572 -"N5M": ('c', 'r', 'M', None, "5-nitrocytidine 5'-(dihydrogen phosphate)"),
  16.573 -"5IU": ('n', 'd', None, None, '"5-IODO-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
  16.574 -"2MG": ('g', 'r', 'M', None, '"2N-METHYLGUANOSINE-5\'-MONOPHOSPHATE"'),
  16.575 -"AAR": ('r', 'p', 'M', None, 'ARGININEAMIDE'),
  16.576 -"DT": ('T', 'd', None, None, '"THYMIDINE-5\'-MONOPHOSPHATE"'),
  16.577 -"DU": ('n', 'd', None, None, '"2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
  16.578 -"HV8": ('x', 'p', None, None, 'BENZYL-2-AMINO-PARAMETHOXY-BENZYLSTATINE'),
  16.579 -"MC1": ('s', 'p', 'M', None, '"METHICILLIN'),
  16.580 -"2FM": ('m', 'p', 'M', None, 'S-(DIFLUOROMETHYL)HOMOCYSTEINE'),
  16.581 -"CYS": ('C', 'p', None, None, 'CYSTEINE'),
  16.582 -"CYR": ('c', 'p', 'M', None, 'N~5~-[{[(2R)-2-AMINO-2-CARBOXYETHYL]SULFANYL}(IMINIO)METHYL]-L-ORNITHINATE'),
  16.583 -"BIL": ('x', 'p', None, None, '"(3R,4S)-3-AMINO-4-METHYLHEXANOIC'),
  16.584 -"PCA": ('e', 'p', 'M', None, '"PYROGLUTAMIC'),
  16.585 -"GYC": ('x', 'p', None, None, '"[(4Z)-2-[(1R)-1-AMINO-2-MERCAPTOETHYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
  16.586 -"SMC": ('c', 'p', 'M', None, 'S-METHYLCYSTEINE'),
  16.587 -"0AC": ('g', 'p', 'M', None, '"(4S,5S)-5-AMINO-4-HYDROXY-6-PHENYLHEXANOIC'),
  16.588 -"BIF": ('f', 'p', 'M', None, '"(R)-2-AMINO-3-(4-PHENYLCYCLOHEXYL)PROPANOIC'),
  16.589 -"2BU": ('a', 'd', 'M', None, "(2S,3S)-N6-(2,3,4-TRIHYDROXYBUTYL)-2'-DEOXYADENOSINE MONO PHOSPHORIC ACID"),
  16.590 -"2BT": ('t', 'd', 'M', None, '"2\'-O-BUTYL-THYMIDINE"'),
  16.591 -"5PC": ('c', 'd', 'M', None, '"5(1-PROPYNYL)-2\'-DEOXYCYTIDINE-5\'-MONOPHOSPHATE"'),
  16.592 -"S2M": ('t', 'd', 'M', None, '"2\'-O-[2-(METHOXY)ETHYL]-2-THIOTHYMIDINE-5\'-MONOPHOSPHATE"'),
  16.593 -"5MC": ('c', 'r', 'M', None, '"5-METHYLCYTIDINE-5\'-MONOPHOSPHATE"'),
  16.594 -"S2P": ('a', 'p', 'M', None, '"(2S)-2-AMINO-3-(4-HYDROXY-1,2,5-THIADIAZOL-3-YL)PROPANOIC'),
  16.595 -"C1X": ('k', 'p', 'M', None, '(Z)-N~6~-[(4R,5S)-5-(2-CARBOXYETHYL)-4-(CARBOXYMETHYL)DIHYDRO-2H-THIOPYRAN-3(4H)-YLIDENE]-L-LYSINE'),
  16.596 -"CYG": ('c', 'p', 'M', None, '"2-AMINO-4-(AMINO-3-OXO-PROPYLSULFANYLCARBONYL)-BUTYRIC'),
  16.597 -"CYF": ('c', 'p', 'M', None, '"5-[2-(2-AMINO-2-CARBAMOYL-ETHYLSULFANYL)-ACETYLAMINO]-2-(3,6-DIHYDROXY-9,9A-DIHYDRO-3H-XANTHEN-9-YL)-BENZOIC'),
  16.598 -"5PY": ('t', 'd', 'M', None, '"1-(2\'-DEOXY-5\'-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-5-METHYLPYRIMIDIN-2(1H)-ONE"'),
  16.599 -"CYJ": ('x', 'p', None, None, '(Z)-N~6~-[(4R,5S)-5-(2-CARBOXYETHYL)-4-(CARBOXYMETHYL)PIPERIDIN-3-YLIDENE]-L-LYSINE'),
  16.600 -"BIU": ('i', 'p', 'M', None, '5-BROMO-L-ISOLEUCINE'),
  16.601 -"ENP": ('n', 'r', None, None, 'ETHENO-NADP'),
  16.602 -"AS9": ('x', 'p', None, None, '"N-[HYDROXY(METHYL)PHOSPHORYL]-L-ASPARTIC'),
  16.603 -"CYM": ('c', 'p', 'M', None, 'S-METHYLCYSTEINE'),
  16.604 -"CY3": ('c', 'p', 'M', None, '2-AMINO-3-MERCAPTO-PROPIONAMIDE'),
  16.605 -"DHN": ('v', 'p', 'M', None, '"5-HYDROXY'),
  16.606 -"CY1": ('c', 'p', 'M', None, 'ACETAMIDOMETHYLCYSTEINE'),
  16.607 -"CY0": ('c', 'p', 'M', None, 'S-{3-[(4-ANILINOQUINAZOLIN-6-YL)AMINO]-3-OXOPROPYL}-L-CYSTEINE'),
  16.608 -"SLZ": ('k', 'p', 'M', None, 'L-THIALYSINE'),
  16.609 -"CY4": ('c', 'p', 'M', None, 'S-BUTYRYL-CYSTEIN'),
  16.610 -"T5S": ('t', 'd', 'M', None, "2'-deoxy-5-(methylselanyl)uridine 5'-phosphate"),
  16.611 -"SLR": ('p', 'p', 'M', None, '(3R,4R)-3-HYDROXY-2-[(1S)-1-HYDROXY-2-METHYLPROPYL]-4-METHYL-5-OXO-D-PROLINE'),
  16.612 -"IML": ('i', 'p', 'M', None, 'N-METHYL-ISOLEUCINE'),
  16.613 -"32S": ('x', 'p', None, None, '"(S)-2-AMINO-3-(4H-SELENOLO[3,2-B]-PYRROL-6-YL)-PROPIONIC'),
  16.614 -"CSX": ('c', 'p', 'M', None, '"S-OXY'),
  16.615 -"MFC": ('x', 'p', None, None, '5-[1-(3-FLUORO-4-HYDROXY-PHENYL)-METH-(Z)-YLIDENE]-3,5-DIHYDRO-IMIDAZOL-4-ONE'),
  16.616 -"32T": ('x', 'p', None, None, '"(S)-2-AMINO-3-(4H-THIENO[3,2-B]-PYRROL-6-YL)-PROPIONIC'),
  16.617 -"TFT": ('t', 'd', 'M', None, '"(L)-ALPHA-THREOFURANOSYL-THYMINE-3\'-MONOPHOSPHATE"'),
  16.618 -"MLZ": ('k', 'p', 'M', None, 'N-METHYL-LYSINE'),
  16.619 -"DHU": ('u', 'r', 'M', None, '"5,6-DIHYDROURIDINE-5\'-PHOSPHATE"'),
  16.620 -"ASQ": ('d', 'p', 'M', None, 'PHOSPHOASPARTATE'),
  16.621 -"SLA": ('p', 'p', 'M', None, '(3S,4R)-3-HYDROXY-2-[(1S)-1-HYDROXY-2-METHYLPROPYL]-4-METHYL-5-OXO-D-PROLINE'),
  16.622 -"DHP": ('x', 'p', None, None, '3-DECYL-2,5-DIOXO-4-HYDROXY-3-PYRROLINE'),
  16.623 -"E1X": ('a', 'd', 'M', None, '"PHOSPHORIC'),
  16.624 -"XGL": ('g', 'd', 'M', None, '"[(1S,4R,6R)-6-HYDROXY-4-(GUANIN-9-YL)CYCLOHEX-2-EN-1-YL]METHYL'),
  16.625 -"MCL": ('k', 'p', 'M', None, 'NZ-(1-CARBOXYETHYL)-LYSINE'),
  16.626 -"TLB": ('n', 'r', None, None, '"2\'-O,3\'-C-METHYLENE-ARABINOFURANOSYL-THYMINE-5\'-MONOPHOSPHATE"'),
  16.627 -"MCG": ('x', 'p', None, None, '(S)-(ALPHA)-METHYL-4-CARBOXYPHENYLGLYCINE'),
  16.628 -"OTB": ('x', 'p', None, None, '"TERTIARY-BUTOXYFORMIC'),
  16.629 -"FT6": ('w', 'p', 'M', None, '6-FLUORO-L-TRYPTOPHAN'),
  16.630 -"XGA": ('n', 'd', None, None, '6-AMINO-3-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-3,7-DIHYDRO-8H-IMIDAZO[4,5-G]QUINAZOLIN-8-ONE'),
  16.631 -"AA4": ('a', 'p', 'M', None, '"2-AMINO-5-HYDROXYPENTANOIC'),
  16.632 -"R": ('a', 'd', 'M', None, "2'-DEOXY-N6-(R)STYRENE OXIDE ADENOSINE MONOPHOSPHATE"),
  16.633 -"GFL": ('g', 'd', 'M', None, '2-AMINO-9-(2-DEOXY-2-FLUORO-5-O-PHOSPHONO-BETA-D-ARABINOFURANOSYL)-1,9-DIHYDRO-6H-PURIN-6-ONE'),
  16.634 -"10C": ('c', 'r', 'M', None, '4-AMINO-1-{2,5-ANHYDRO-4-[(PHOSPHONOOXY)METHYL]-ALPHA-L-LYXOFURANOSYL}PYRIMIDIN-2(1H)-ONE'),
  16.635 -"NRQ": ('x', 'p', None, None, '"{(4Z)-4-(4-HYDROXYBENZYLIDENE)-2-[3-(METHYLTHIO)PROPANIMIDOYL]-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
  16.636 -"XGU": ('g', 'd', 'M', None, '2-AMINO-9-(2,3-DIDEOXY-6-O-PHOSPHONO-BETA-D-ERYTHRO-HEXOPYRANOSYL)-1,9-DIHYDRO-6H-PURIN-6-ONE'),
  16.637 -"MCS": ('c', 'p', 'M', None, '"MALONYL'),
  16.638 -"D3": ('n', 'd', None, None, '1-(2-DEOXY-BETA-D-RIBOFURANOSYL)-4-(3-BENZAMIDO)PHENYLIMIDAZOLE'),
  16.639 -"PAQ": ('y', 'p', 'M', None, '2-OXY-4-HYDROXY-5-(2-HYDRAZINOPYRIDINE)PHENYLALANINE'),
  16.640 -"2PR": ('g', 'd', 'M', None, '"2-AMINO-9-[2-DEOXYRIBOFURANOSYL]-9H-PURINE-5\'-MONOPHOSPHATE"'),
  16.641 -"PAT": ('w', 'p', 'M', None, 'ALPHA-PHOSPHONO-TRYPTOPHAN'),
  16.642 -"PAU": ('a', 'p', 'M', None, '"PANTOTHENOIC'),
  16.643 -"CH": ('c', 'r', 'M', None, "N3-PROTONATED CYTIDINE-5'-MONOPHOSPHATE"),
  16.644 -"GCM": ('x', 'p', None, None, '"GLYCYLMETHYLENE'),
  16.645 -"CSZ": ('c', 'p', 'M', None, '"S-SELANYL'),
  16.646 -"GMS": ('g', 'd', 'M', None, '"2\'-DEOXYGUANOSINE-5\'-MONOSELENOPHOSPHATE"'),
  16.647 -"HBN": ('h', 'p', 'M', None, 'N-(2-NAPHTHYL)HISTIDINAMIDE'),
  16.648 -"TQQ": ('w', 'p', 'M', None, '"(S)-2-AMINO-3-(6,7-DIHYDRO-6-IMINO-7-OXO-1H-INDOL-3-YL)PROPANOIC'),
  16.649 -"2PI": ('x', 'p', None, None, '"2-AMINO-PENTANOIC'),
  16.650 -"GSU": ('e', 'p', 'M', None, '"O5\'-(L-GLUTAMYL-SULFAMOYL)-ADENOSINE"'),
  16.651 -"CSI": ('g', 'p', 'M', None, '"AMINO-(2-IMINO-HEXAHYDRO-PYRIMIDIN-4-YL)-ACETIC'),
  16.652 -"200": ('f', 'p', 'M', None, '4-CHLORO-L-PHENYLALANINE'),
  16.653 -"EXY": ('l', 'p', 'M', None, '6-[(2R)-OXIRAN-2-YL]-L-NORLEUCINE'),
  16.654 -"12A": ('a', 'r', 'M', None, '"2-METHYLTHIO-N6-(AMINOCARBONYL-L-THREONYL)-ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.655 -"DCL": ('x', 'p', None, None, '2-AMINO-4-METHYL-PENTAN-1-OL'),
  16.656 -"UNK": ('x', 'p', None, None, 'UNKNOWN'),
  16.657 -"DCI": ('x', 'p', None, None, '2-METHYL-BUTYLAMINE'),
  16.658 -"DCG": ('g', 'd', 'M', None, '"2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.659 -"4HT": ('w', 'p', 'M', None, '4-HYDROXYTRYPTOPHAN'),
  16.660 -"CSU": ('c', 'p', 'M', None, '"CYSTEINE-S-SULFONIC'),
  16.661 -"HSO": ('h', 'p', 'M', None, 'HISTIDINOL'),
  16.662 -"HSL": ('s', 'p', 'M', None, '"HOMOSERINE'),
  16.663 -"TLN": ('n', 'd', None, None, '"[(1R,3R,4R,7S)-7-HYDROXY-3-(THYMIN-1-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
  16.664 -"TZB": ('x', 'p', None, None, '"(4S)-2-[(1E)-1-AMINOPROP-1-ENYL]-4,5-DIHYDRO-1,3-THIAZOLE-4-CARBOXYLIC'),
  16.665 -"BTC": ('c', 'p', 'M', None, 'CYSTEINE'),
  16.666 -"DCY": ('c', 'p', 'M', None, 'D-CYSTEINE'),
  16.667 -"DCT": ('c', 'd', 'M', None, "2',3'-DIDEOXYCYTIDINE 5'-TRIPHOSPHATE"),
  16.668 -"4BF": ('y', 'p', 'M', None, '4-BROMO-L-PHENYLALANINE'),
  16.669 -"C2L": ('c', 'r', 'M', None, "5-METHYL-3'-O-METHOXYETHYL CYTIDINE 5'-MONOPHOSPHATE"),
  16.670 -"RIA": ('a', 'r', 'M', None, '"2\'-O-[(5\'-PHOSPHO)RIBOSYL]ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.671 -"IAM": ('a', 'p', 'M', None, '4-[(ISOPROPYLAMINO)METHYL]PHENYLALANINE'),
  16.672 -"B1F": ('f', 'p', 'M', None, '"PHENYLALANINE'),
  16.673 -"GPN": ('g', 'd', 'M', None, '2-AMINOETHYLGLYCINE-CARBONYLMETHYLENE-GUANINE'),
  16.674 -"C25": ('c', 'r', 'M', None, '"CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.675 -"N2C": ('x', 'p', None, None, 'N,S-DIMETHYLCYSTEINE'),
  16.676 -"HAC": ('a', 'p', 'M', None, 'BETA-CYCLOHEXYL-ALANINE'),
  16.677 -"MEG": ('e', 'p', 'M', None, '"(2S,3R)-3-METHYL-GLUTAMIC'),
  16.678 -"THO": ('x', 'p', None, None, '"REDUCED'),
  16.679 -"BNO": ('x', 'p', None, None, '"NORLEUCINE'),
  16.680 -"125": ('u', 'r', 'M', None, '"2\'-O-FLUOROETHYL-5-METHYL-URIDINE-5\'-MONOPHOSPHATE"'),
  16.681 -"126": ('u', 'r', 'M', None, '"2\'-O-METHYL-[TRI(OXYETHYL)]-5-METHYL-URIDINE-5\'-MONOPHOSPHATE"'),
  16.682 -"127": ('u', 'r', 'M', None, '"2\'-O-AMINOOXY-ETHYL-5-METHYL-URIDINE-5\'-MONOPHOSPHATE"'),
  16.683 -"128": ('n', 'r', None, None, '"SPIRO(2,4,6-TRINITROBENZENE[1,2A]-2O\',3O\'-METHYLENE-ADENINE-TRIPHOSPHATE"'),
  16.684 -"X": ('g', 'd', 'M', None, "2'-DEOXY-N7-(8,9-DIHYDRO-9-HYDROXY-10-DEHYDROXY-AFLATOXIN)GUANOSINE MONOPHOSPHATE"),
  16.685 -"HS8": ('h', 'p', 'M', None, '3-(1-SULFO-1H-IMIDAZOL-3-IUM-4-YL)-L-ALANINE'),
  16.686 -"NAM": ('a', 'p', 'M', None, '"NAM'),
  16.687 -"THC": ('t', 'p', 'M', None, 'N-METHYLCARBONYLTHREONINE'),
  16.688 -"HRP": ('w', 'p', 'M', None, '5-HYDROXY-L-TRYPTOPHAN'),
  16.689 -"MNV": ('v', 'p', 'M', None, '"N-METHYL-C-AMINO'),
  16.690 -"PHI": ('f', 'p', 'M', None, 'IODO-PHENYLALANINE'),
  16.691 -"PHM": ('f', 'p', 'M', None, 'PHENYLALANYLMETHANE'),
  16.692 -"PHL": ('f', 'p', 'M', None, 'L-PHENYLALANINOL'),
  16.693 -"CSW": ('c', 'p', 'M', None, 'CYSTEINE-S-DIOXIDE'),
  16.694 -"ZAD": ('a', 'r', 'M', None, '"(S)-1\'-(2\',3\'-DIHYDROXYPROPYL)-ADENINE"'),
  16.695 -"OIC": ('x', 'p', None, None, '"OCTAHYDROINDOLE-2-CARBOXYLIC'),
  16.696 -"PHE": ('F', 'p', None, None, 'PHENYLALANINE'),
  16.697 -"PHD": ('d', 'p', 'M', None, '"ASPARTYL'),
  16.698 -"SYS": ('c', 'p', 'M', None, '3-[(2-AMINO-2-OXOETHYL)SELANYL]-L-ALANINE'),
  16.699 -"BG1": ('s', 'p', 'M', None, 'O-[(2S)-2-{METHYL[(METHYLAMINO)SULFONYL]AMINO}PENTANOYL]-L-SERINE'),
  16.700 -"NIY": ('y', 'p', 'M', None, 'META-NITRO-TYROSINE'),
  16.701 -"MTR": ('t', 'd', 'M', None, '(5-METHYL-6-OXO-1,6-DIHYDRO-PYRIDIN-3-YL)-1,2-DIDEOXY-RIBOFURANOSE-5-MONOPHOSPHATE'),
  16.702 -"OAS": ('s', 'p', 'M', None, 'O-ACETYLSERINE'),
  16.703 -"BRU": ('n', 'd', None, None, '"5-BROMO-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
  16.704 -"NIT": ('x', 'p', None, None, '4-NITROANILINE'),
  16.705 -"OIP": ('n', 'd', None, None, "2'-DEOXY-INOSINIC ACID"),
  16.706 -"0A0": ('d', 'p', 'M', None, '"2-METHYL-L-ASPARTIC'),
  16.707 -"0A1": ('y', 'p', 'M', None, 'O-METHYL-L-TYROSINE'),
  16.708 -"0A2": ('k', 'p', 'M', None, '[(1R)-1,5-DIAMINOPENTYL][BIS(ETHANOLATO)]HYDROXYBORATE(1-)'),
  16.709 -"CRQ": ('x', 'p', None, None, '"[2-(3-CARBAMOYL-1-IMINO-PROPYL)-4-(4-HYDROXY-BENZYLIDENE)-5-OXO-4,5-DIHYDRO-IMIDAZOL-1-YL]-ACETIC'),
  16.710 -"CRW": ('x', 'p', None, None, '"[2-(1-AMINOETHYL)-4-METHYLENE-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
  16.711 -"CRU": ('e', 'p', 'M', None, '"4-[(4Z)-1-(CARBOXYMETHYL)-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-2-YL]-4-IMINOBUTANOIC'),
  16.712 -"DMH": ('n', 'p', 'M', None, 'N4,N4-DIMETHYL-ASPARAGINE'),
  16.713 -"PRR": ('a', 'p', 'M', None, '3-(METHYL-PYRIDINIUM)ALANINE'),
  16.714 -"CRX": ('x', 'p', None, None, '"[2-(1-AMINOETHYL)-2-HYDROXY-4-METHYLENE-5-OXOIMIDAZOLIDIN-1-YL]ACETIC'),
  16.715 -"DMK": ('d', 'p', 'M', None, '"3,3-DIMETHYL'),
  16.716 -"MHL": ('l', 'p', 'M', None, 'N-METHYL-4-HYDROXY-LEUCINE'),
  16.717 -"LAA": ('d', 'p', 'M', None, '(3R)-3-HYDROXY-L-ALPHA-ASPARAGINE'),
  16.718 -"0ZM": ('x', 'p', None, None, '"(2R)-2-{[(2R)-2-{[(S)-HYDROXY{[(2R,3S,4S,5R,6R)-3,4,5-TRIHYDROXY-6-METHYLTETRAHYDRO-2H-PYRAN-2-YL]OXY}PHOSPHORYL]AMINO}-4-METHYLPENTANOYL]AMINO}-3-(1H-INDOL-3-YL)PROPANOIC'),
  16.719 -"DMT": ('x', 'p', None, None, '"3-HYDROXY-4,4-DIMETHYL-2-(METHYLAMINO)-6-OCTENOIC'),
  16.720 -"CRG": ('x', 'p', None, None, '"[2-(1-AMINO-2-HYDROXY-PROPYL)-4-(3H-IMIDAZOL-4-YLMETHYLENE)-5-OXO-4,5-DIHYDRO-IMIDAZOL-1-YL]-ACETIC'),
  16.721 -"0ZJ": ('x', 'p', None, None, 'N-(SULFANYLACETYL)-D-PHENYLALANYL-N-[(1S)-4-CARBAMIMIDAMIDO-1-(CHLOROACETYL)BUTYL]-L-PROLINAMIDE'),
  16.722 -"0ZE": ('x', 'p', None, None, '"AMINO{[(4R)-4-({[(3R,6S,8AS)-6-AMINO-6-BENZYL-5-OXOOCTAHYDROINDOLIZIN-3-YL]CARBONYL}AMINO)-5-(1,3-BENZOTHIAZOL-2-YL)-5-OXOPENTYL]AMINO}METHANIMINIUM'),
  16.723 -"CRK": ('x', 'p', None, None, '4-{(Z)-[2-[3-(METHYLSULFANYL)PROPANOYL]-5-OXO-1-(2-OXOETHYL)-1,5-DIHYDRO-4H-IMIDAZOL-4-YLIDENE]METHYL}BENZENOLATE'),
  16.724 -"TPH": ('x', 'p', None, None, '"2-AMINO-3-PHENYL-PROPANE-1,1-DIOL'),
  16.725 -"1PI": ('x', 'p', None, None, '3-(1-CARBAMIMIDOYL-PIPERIDIN-3-YL)-L-ALANINE'),
  16.726 -"CRO": ('x', 'p', None, None, '"{2-[(1R,2R)-1-AMINO-2-HYDROXYPROPYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
  16.727 -"0ZC": ('x', 'p', None, None, '"(3R)-2-[N-(FURAN-2-YLCARBONYL)-L-LEUCYL]-2,3,4,9-TETRAHYDRO-1H-BETA-CARBOLINE-3-CARBOXYLIC'),
  16.728 -"MIS": ('s', 'p', 'M', None, 'MONOISOPROPYLPHOSPHORYLSERINE'),
  16.729 -"C36": ('c', 'd', 'M', None, '"5-METHYL-5-FLUORO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.730 -"NFA": ('f', 'p', 'M', None, '"PHENYLALANINE'),
  16.731 -"PU": ('a', 'r', 'M', None, '"PUROMYCIN-N-AMINOPHOSPHONIC'),
  16.732 -"G7M": ('g', 'r', 'M', None, '"N7-METHYL-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.733 -"S6G": ('g', 'd', 'M', None, '"6-THIO-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
  16.734 -"LDH": ('k', 'p', 'M', None, 'N~6~-ETHYL-L-LYSINE'),
  16.735 -"TCP": ('t', 'd', 'M', None, '"5\'-METHYLTHYMIDINE"'),
  16.736 -"TCQ": ('x', 'p', None, None, '3-((3E)-4-(HYDROXYMETHYL)-6-OXO-3-{[(1S,2R)-2-PHENYLCYCLOPROPYL]IMINO}CYCLOHEXA-1,4-DIEN-1-YL)ALANINE'),
  16.737 -"8AN": ('a', 'r', 'M', None, "3'-amino-3'-deoxyadenosine 5'-(dihydrogen phosphate)"),
  16.738 -"BUC": ('c', 'p', 'M', None, 'S,S-BUTYLTHIOCYSTEINE'),
  16.739 -"C32": ('c', 'd', 'M', None, '"5-BROMO-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.740 -"7MG": ('g', 'r', 'M', None, '"7N-METHYL-8-HYDROGUANOSINE-5\'-MONOPHOSPHATE"'),
  16.741 -"BUG": ('l', 'p', 'M', None, '"TERT-LEUCYL'),
  16.742 -"LEU": ('L', 'p', None, None, 'LEUCINE'),
  16.743 -"MHO": ('m', 'p', 'M', None, 'S-OXYMETHIONINE'),
  16.744 -"C": ('C', 'r', None, None, '"CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.745 -"DDX": ('n', 'd', None, None, '"2\',3\'-DEHYDRO-2\',3\'-DIDEOXYRIBOFURANOSE-5\'-PHOSPHATE"'),
  16.746 -"OPR": ('r', 'p', 'M', None, 'C-(3-OXOPROPYL)ARGININE'),
  16.747 -"FOX": ('g', 'd', 'M', None, "((1R,2S,4R)-4-{[2-AMINO-5-(FORMYLAMINO)-6-OXO-3,6-DIHYDROPYRIMIDIN-4-YL]AMINO}-2-HYDROXYCYCLOPENTYL)METHYL 5'-PHOSPHATE"),
  16.748 -"MTY": ('y', 'p', 'M', None, 'META-TYROSINE'),
  16.749 -"TC1": ('c', 'd', 'M', None, '3-(5-PHOSPHO-2-DEOXY-BETA-D-RIBOFURANOSYL)-2-OXO-1,3-DIAZA-PHENOTHIAZINE'),
  16.750 -"FOE": ('c', 'p', 'M', None, '2-(2-AMINO-3-OXO-PROPYLSULFANYL)-N-(4-FLUORO-PHENYL)-N-ISOPROPYL-ACETAMIDE'),
  16.751 -"MF3": ('x', 'p', None, None, '"2-AMINO-4-TRIFLUOROMETHYLSULFANYL-BUTYRIC'),
  16.752 -"DDN": ('n', 'd', None, None, '"3,4-DIHYDRO-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
  16.753 -"FME": ('m', 'p', 'M', None, 'N-FORMYLMETHIONINE'),
  16.754 -"EFC": ('c', 'p', 'M', None, 'S,S-(2-FLUOROETHYL)THIOCYSTEINE'),
  16.755 -"DDG": ('g', 'd', 'M', None, '"2\',3\'-DIDEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.756 -"MHS": ('h', 'p', 'M', None, '"N1-METHYLATED'),
  16.757 -"DDE": ('h', 'p', 'M', None, '{3-[4-(2-AMINO-2-CARBOXY-ETHYL)-1H-IMIDAZOL-2-YL]-1-CARBAMOYL-PROPYL}-TRIMETHYL-AMMONIUM'),
  16.758 -"CR2": ('x', 'p', None, None, '"{(4Z)-2-(AMINOMETHYL)-4-[(4-HYDROXYPHENYL)METHYLIDENE]-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
  16.759 -"DSN": ('s', 'p', 'M', None, 'D-SERINE'),
  16.760 -"PSH": ('h', 'p', 'M', None, '1-THIOPHOSPHONO-L-HISTIDINE'),
  16.761 -"6MI": ('n', 'd', None, None, '6-METHYL-8-(2-DEOXY-RIBOFURANOSYL)ISOXANTHOPTERIDINE'),
  16.762 -"CR7": ('x', 'p', None, None, '"[(4Z)-2-[(1S)-1,5-DIAMINOPENTYL]-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
  16.763 -"0AV": ('a', 'd', 'M', None, "2'-O-methyladenosine 5'-(dihydrogen phosphate)"),
  16.764 -"CR5": ('g', 'p', 'M', None, '(2R)-2-(AMINOMETHYL)-2,4-DIHYDROXY-5-OXO-3-(2-OXOETHYL)-2,5-DIHYDRO-1H-IMIDAZOL-3-IUM'),
  16.765 -"MOR": ('x', 'p', None, None, 'N-CARBONYLMORPHOLINE'),
  16.766 -"CR8": ('x', 'p', None, None, '2-[1-AMINO-2-(1H-IMIDAZOL-5-YL)ETHYL]-1-(CARBOXYMETHYL)-4-[(4-OXOCYCLOHEXA-2,5-DIEN-1-YLIDENE)METHYL]-1H-IMIDAZOL-5-OLATE'),
  16.767 -"PSA": ('f', 'p', 'M', None, '"3-HYDROXY-4-AMINO-5-PHENYLPENTANOIC'),
  16.768 -"ANI": ('x', 'p', None, None, '4-TRIFLUOROMETHYLANILINE'),
  16.769 -"NP3": ('n', 'd', None, None, '"1-[2-DEOXY-RIBOFURANOSYL]-1H-[3-NITRO-PYRROL]-5\'-PHOSPHATE"'),
  16.770 -"DM0": ('k', 'p', 'M', None, 'N~2~,N~2~,N~6~,N~6~-TETRAMETHYL-L-LYSINE'),
  16.771 -"0AA": ('v', 'p', 'M', None, '"METHYL'),
  16.772 -"0AB": ('v', 'p', 'M', None, '(3S,4S)-3-AMINO-4-METHYL-3,4-DIHYDRO-2H-PYRAN-2-ONE'),
  16.773 -"FOG": ('f', 'p', 'M', None, 'PHENYLALANINOYL-[1-HYDROXY]-2-PROPYLENE'),
  16.774 -"0AD": ('g', 'd', 'M', None, "2'-deoxy-N-propylguanosine 5'-(dihydrogen phosphate)"),
  16.775 -"LCC": ('n', 'd', None, None, '"[(1R,3R,4R,7S)-7-HYDROXY-3-(5-METHYLCYTOSIN-1-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
  16.776 -"NVA": ('v', 'p', 'M', None, 'NORVALINE'),
  16.777 -"0AG": ('l', 'p', 'M', None, 'N-(ETHOXYCARBONYL)-L-LEUCINE'),
  16.778 -"0AH": ('s', 'p', 'M', None, 'O-(BROMOACETYL)-L-SERINE'),
  16.779 -"1MA": ('a', 'r', 'M', None, '"6-HYDRO-1-METHYLADENOSINE-5\'-MONOPHOSPHATE"'),
  16.780 -"0AK": ('d', 'p', 'M', None, '"(2S)-2-AMINO-4-(2-CHLOROETHOXY)-4-OXOBUTANOIC'),
  16.781 -"0AM": ('a', 'd', 'M', None, "2'-deoxy-N-[3-(propyldisulfanyl)propyl]adenosine 5'-(dihydrogen phosphate)"),
  16.782 -"PST": ('t', 'd', 'M', None, '"THYMIDINE-5\'-THIOPHOSPHATE"'),
  16.783 -"PSU": ('u', 'r', 'M', None, '"PSEUDOURIDINE-5\'-MONOPHOSPHATE"'),
  16.784 -"1ZX": ('x', 'p', None, None, 'D-PHENYLALANYL-N-[(1S)-1-ACETYL-4-{[AMINO(IMINIO)METHYL]AMINO}BUTYL]-L-PROLINAMIDE'),
  16.785 -"ILG": ('e', 'p', 'M', None, '"GLUTAMYL'),
  16.786 -"ILE": ('I', 'p', None, None, 'ISOLEUCINE'),
  16.787 -"5CM": ('c', 'd', 'M', None, '"5-METHYL-2\'-DEOXY-CYTIDINE-5\'-MONOPHOSPHATE"'),
  16.788 -"D11": ('t', 'p', 'M', None, 'D-PHOSHPHOTHREONINE'),
  16.789 -"UMS": ('n', 'd', None, None, '"2\'-METHYLSELENYL-2\'-DEOXYURIDINE-5\'-PHOSPHATE"'),
  16.790 -"X9Q": ('x', 'p', None, None, '"{(2S)-2-[(1S)-1-AMINOETHYL]-4-BENZYL-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
  16.791 -"FGP": ('s', 'p', 'M', None, '"2-AMINO-3-HYDROXY-3-PHOSPHONOOXY-PROPIONIC'),
  16.792 -"DVA": ('v', 'p', 'M', None, 'D-VALINE'),
  16.793 -"5ZA": ('x', 'p', None, None, '(5Z)-2-[(1S,2R)-1-AMINO-2-HYDROXYPROPYL]-5-[(4-AMINO-1H-INDOL-3-YL)METHYLENE]-3-(2-HYDROXYETHYL)-3,5-DIHYDRO-4H-IMIDAZOL-4-ONE'),
  16.794 -"BCC": ('x', 'p', None, None, '6-AMINO-6-BENZYL-5-OXO-OCTAHYDRO-INDOLIZINE-3-CARBALDEHYDE'),
  16.795 -"TMB": ('t', 'p', 'M', None, 'N-METHYL-4-[(E)-2-BUTENYL]-4,N-DIMETHYL-THREONINE'),
  16.796 -"3AH": ('h', 'p', 'M', None, '[HISTIDIN-1-YL-4H-[1,2,4]TRIAZOL-5-YL]-AMINE'),
  16.797 -"BCX": ('c', 'p', 'M', None, 'BETA-3-CYSTEINE'),
  16.798 -"KPI": ('k', 'p', 'M', None, '"(2S)-2-AMINO-6-[(1-HYDROXY-1-OXO-PROPAN-2-YLIDENE)AMINO]HEXANOIC'),
  16.799 -"A2L": ('a', 'r', 'M', None, "3'-O-METHYOXYETHYL-ADENOSINE 5'-MONOPHOSPHATE"),
  16.800 -"A2M": ('a', 'r', 'M', None, '"2\'-O-METHYL-ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.801 -"ILX": ('i', 'p', 'M', None, '4,5-DIHYDROXYISOLEUCINE'),
  16.802 -"PEC": ('c', 'p', 'M', None, 'S,S-PENTYLTHIOCYSTEINE'),
  16.803 -"IGL": ('g', 'p', 'M', None, '"ALPHA-AMINO-2-INDANACETIC'),
  16.804 -"OLE": ('x', 'p', None, None, '"2-HYDROXY-4-METHYL-PENTANOIC'),
  16.805 -"LPG": ('g', 'p', 'M', None, 'L-PROPARGYLGLYCINE'),
  16.806 -"DI": ('n', 'd', None, None, '"2\'-DEOXYINOSINE-5\'-MONOPHOSPHATE"'),
  16.807 -"ALO": ('t', 'p', 'M', None, 'ALLO-THREONINE'),
  16.808 -"OLT": ('t', 'p', 'M', None, 'O-METHYL-L-THREONINE'),
  16.809 -"TBM": ('t', 'p', 'M', None, '4-METHYL-4-[(E)-2-BUTENYL]-4,N-DIMETHYL-THREONINE'),
  16.810 -"2AU": ('u', 'r', 'M', None, '"2\'-AMINOURIDINE"'),
  16.811 -"LED": ('l', 'p', 'M', None, '(4R)-5-OXO-L-LEUCINE'),
  16.812 -"OLZ": ('s', 'p', 'M', None, 'O-(2-AMINOETHYL)-L-SERINE'),
  16.813 -"C6C": ('c', 'p', 'M', None, '"S-CYCLOHEXYL'),
  16.814 -"IEY": ('x', 'p', None, None, '2-((1E)-2-(5-IMIDAZOLYL)ETHENYL)-4-(P-HYDROXYBENZYLIDENE)-5-IMIDAZOLINONE'),
  16.815 -"HEU": ('n', 'd', None, None, '"3-(2-HYDROXYETHYL)-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
  16.816 -"SRA": ('a', 'r', 'M', None, "ADENOSINE -5'-THIO-MONOPHOSPHATE"),
  16.817 -"ZTH": ('n', 'r', None, None, '"(S)-1\'-(2\',3\'-DIHYDROXYPROPYL)-THYMINE"'),
  16.818 -"NDN": ('n', 'd', None, None, "2'-DEOXY-5-NITROURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
  16.819 -"C66": ('x', 'p', None, None, '2-AMINOETHYLLYSINE-CARBONYLMETHYLENE-CYTOSINE'),
  16.820 -"6CW": ('w', 'p', 'M', None, '6-CHLORO-L-TRYPTOPHAN'),
  16.821 -"CR0": ('x', 'p', None, None, '[2-(1-AMINO-2-HYDROXYPROPYL)-2-HYDROXY-4-ISOBUTYL-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETALDEHYDE'),
  16.822 -"DBM": ('n', 'r', None, None, '9-(6-DEOXY-BETA-D-ALLOFURANOSYL)-6-METHYLPURINE'),
  16.823 -"N": ('n', 'r', None, None, "ANY 5'-MONOPHOSPHATE NUCLEOTIDE"),
  16.824 -"N6G": ('g', 'r', 'M', None, '"((2R,3S,4R,5S)-5-(2,6-DIAMINO-9H-PURIN-9-YL)-3,4-DIHYDROXY-TETRAHYDROFURAN-2-YL)METHYL'),
  16.825 -"ALC": ('a', 'p', 'M', None, '"2-AMINO-3-CYCLOHEXYL-PROPIONIC'),
  16.826 -"S1H": ('s', 'p', 'M', None, '1-HEXADECANOSULFONYL-O-L-SERINE'),
  16.827 -"FZN": ('k', 'p', 'M', None, '(2S)-2-amino-6-{[(1Z)-1-{[(2R,3R,4S,5R)-5-({[(R)-{[(R)-{[(2R,3S,4R,5R)-5-(6-amino-9H-purin-9-yl)-3,4-dihydroxytetrahydrofuran-2-yl]methoxy}(hydroxy)phosphoryl]oxy}(hydroxy)phosphoryl]oxy}methyl)-3,4-dihydroxytetrahydrofuran-2-yl]sulfanyl}ethylidene]amino}hexanoic acid'),
  16.828 -"0SP": ('a', 'd', 'M', None, "2'-deoxy-N-[3-(propyldisulfanyl)propyl]adenosine 5'-(dihydrogen phosphate)"),
  16.829 -"OBS": ('x', 'p', None, None, '(Z)-N^6-[(4S,5R)-5-(2-CARBOXYETHYL)-4-(CARBOXYMETHYL)-1-HYDROXYDIHYDRO-2H-THIOPYRANIUM-3(4H)-YLIDENE]-L-LYSINE'),
  16.830 -"2NT": ('t', 'd', 'M', None, "2'-O-[2-[HYDROXY(METHYLENEAMINO)OXY]ETHYL THYMIDINE-5'-MONOPHOSPHATE"),
  16.831 -"K1R": ('c', 'p', 'M', None, '"(2S)-2-AMINO-4-[({[(2R)-2-AMINO-2-CARBOXYETHYL]THIO}AMINO)SULFINYL]BUTANOIC'),
  16.832 -"NMT": ('t', 'd', 'M', None, '1-(O2-(METHYLCARBAMOYL)-O5-HYDROXYPHOSPHINYL-BETA-D-RIBOFURANOSYL)THYMINE'),
  16.833 -"A23": ('a', 'r', 'M', None, "ADENOSINE-5'-PHOSPHATE-2',3'-CYCLIC PHOSPHATE"),
  16.834 -"D1P": ('n', 'd', None, None, '"2\'-DEOXY-RIBOFURANOSE-5\'-PHOSPHATE"'),
  16.835 -"NMS": ('t', 'd', 'M', None, '1-(O2-(2-METHYLAMINO-2-OXO-ETHYL)-O5-HYDROXYPHOSPHINYL-BETA-D-RIBOFURANOSYL)THYMINE'),
  16.836 -"CIR": ('r', 'p', 'M', None, 'CITRULLINE'),
  16.837 -"CH6": ('x', 'p', None, None, '"{(4Z)-2-[(1S)-1-AMINO-3-(METHYLSULFANYL)PROPYL]-4-[(4-HYDROXYPHENYL)METHYLIDENE]-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL}ACETIC'),
  16.838 -"BJH": ('x', 'p', None, None, '"1(R)-1-ACETAMIDO-2-(3-CARBOXY-2-HYDROXYPHENYL)ETHYL'),
  16.839 -"YYG": ('g', 'r', 'M', None, '"4-(3-[5-O-PHOSPHONORIBOFURANOSYL]-4,6-DIMETHYL-8-OXO-4,8-DIHYDRO-3H-1,3,4,5,7A-PENTAAZA-S-INDACEN-YLAMINO-BUTYRIC'),
  16.840 -"2MA": ('a', 'r', 'M', None, '"2-METHYLADENOSINE-5\'-MONOPHOSPHATE"'),
  16.841 -"NMC": ('g', 'p', 'M', None, '"N-CYCLOPROPYLMETHYL'),
  16.842 -"0AY": ('x', 'p', None, None, '"DIETHYL'),
  16.843 -"UFP": ('n', 'd', None, None, '"5-FLUORO-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
  16.844 -"SET": ('s', 'p', 'M', None, 'AMINOSERINE'),
  16.845 -"UFR": ('n', 'd', None, None, "2'-DEOXY-5-FORMYLURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
  16.846 -"NMM": ('r', 'p', 'M', None, '"(R)-2-AMINO-5-(3-METHYLGUANIDINO)BUTANOIC'),
  16.847 -"UFT": ('n', 'd', None, None, "2'-deoxy-2'-fluorouridine 5'-(dihydrogen phosphate)"),
  16.848 -"0AZ": ('p', 'p', 'M', None, '(4R)-4-HYDROXY-L-PROLINE'),
  16.849 -"5IT": ('t', 'd', 'M', None, '"5-IODO-THYMIDINE-5\'-PHOSPHATE"'),
  16.850 -"DIL": ('i', 'p', 'M', None, 'D-ISOLEUCINE'),
  16.851 -"FHL": ('x', 'p', None, None, '(E)-N~6~-[3-CARBOXY-1-(HYDROXYMETHYL)PROPYLIDENE]-L-LYSINE'),
  16.852 -"0Z6": ('x', 'p', None, None, 'D-PHENYLALANYL-N-[(1S)-4-{[AMINO(IMINIO)METHYL]AMINO}-1-(CHLOROACETYL)BUTYL]-L-PHENYLALANINAMIDE'),
  16.853 -"AR4": ('e', 'p', 'M', None, '"2-AMINO-5-(3-FLUORO-3,4-DIHYDROXY-5-HYDROXYMETHYL-TETRAHYDRO-FURAN-2-YLOXY)-5-HYDROXY-PENTANOIC'),
  16.854 -"EIT": ('t', 'd', 'M', None, '"((3R,4R,5R)-4-(2-(1H-IMIDAZOL-1-YL)ETHOXY)-3-HYDROXY-5-(5-METHYL-2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)-TETRAHYDROFURAN-2-YL)METHYL'),
  16.855 -"SD2": ('x', 'p', None, None, 'N-(SULFANYLACETYL)TYROSYLPROLYLMETHIONINAMIDE'),
  16.856 -"CH7": ('x', 'p', None, None, '"[(4Z)-4-(4-HYDROXYBENZYLIDENE)-5-OXO-2-(3,4,5,6-TETRAHYDROPYRIDIN-2-YL)-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
  16.857 -"N5I": ('n', 'd', None, None, '1-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-5-NITRO-1H-INDOLE'),
  16.858 -"5AT": ('t', 'd', 'M', None, '"5\'-AMINO-5\'-DEOXYTHYMIDINE"'),
  16.859 -"LOL": ('x', 'p', None, None, 'LEUCINOL'),
  16.860 -"HYP": ('p', 'p', 'M', None, '4-HYDROXYPROLINE'),
  16.861 -"IYT": ('t', 'p', 'M', None, 'N-ALPHA-ACETYL-3,5-DIIODOTYROSYL-D-THREONINE'),
  16.862 -"LOV": ('x', 'p', None, None, '"5-AMINO-4-HYDROXY-2-ISOPROPYL-7-METHYL-OCTANOIC'),
  16.863 -"LCX": ('k', 'p', 'M', None, '"CARBOXYLATED'),
  16.864 -"GND": ('x', 'p', None, None, '"2-AMINO-5-GUANIDINO-PENTANOIC'),
  16.865 -"GNE": ('n', 'd', None, None, '1,N2-ETHENOGUANINE'),
  16.866 -"FHU": ('u', 'r', 'M', None, '"(5S,6R)-5-FLUORO-6-HYDROXY-PSEUDOURIDINE-5\'-MONOPHOSPHATE"'),
  16.867 -"C12": ('x', 'p', None, None, '2-(1-AMINO-2-HYDROXYPROPYL)-4-(4-HYDROXYBENZYL)-1-(2-OXOETHYL)-1H-IMIDAZOL-5-OLATE'),
  16.868 -"DIV": ('v', 'p', 'M', None, 'D-ISOVALINE'),
  16.869 -"T6A": ('a', 'r', 'M', None, '"N-[N-(9-B-D-RIBOFURANOSYLPURIN-6-YL)CARBAMOYL]THREONINE-5\'-MONOPHOSPHATE"'),
  16.870 -"DIR": ('r', 'p', 'M', None, '3-{[(E)-AMINO(HYDROXYIMINO)METHYL]AMINO}ALANINE'),
  16.871 -"AIB": ('a', 'p', 'M', None, '"ALPHA-AMINOISOBUTYRIC'),
  16.872 -"SOC": ('c', 'p', 'M', None, 'DIOXYSELENOCYSTEINE'),
  16.873 -"NSK": ('x', 'p', None, None, '"N-SUCCINYL'),
  16.874 -"LCG": ('g', 'd', 'M', None, '"[(1R,3R,4R,7S)-7-HYDROXY-3-(GUANIN-9-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
  16.875 -"MT2": ('m', 'p', 'M', None, '[(3S)-3-AMINO-3-CARBOXYPROPYL](ETHYL)METHYLSULFONIUM'),
  16.876 -"GAU": ('e', 'p', 'M', None, '"(4S)-4-AMINO-5-HYDROXYPENTANOIC'),
  16.877 -"PPH": ('l', 'p', 'M', None, '"PHENYLALANINE'),
  16.878 -"PPN": ('f', 'p', 'M', None, 'PARA-NITROPHENYLALANINE'),
  16.879 -"1MG": ('g', 'r', 'M', None, '"1N-METHYLGUANOSINE-5\'-MONOPHOSPHATE"'),
  16.880 -"GAO": ('g', 'r', 'M', None, "GUANINE ARABINOSE-5'-PHOSPHATE"),
  16.881 -"FAI": ('n', 'r', None, None, '5-(FORMYLAMINO)-1-(5-O-PHOSPHONO-BETA-D-RIBOFURANOSYL)-1H-IMIDAZOLE-4-CARBOXAMIDE'),
  16.882 -"PPW": ('g', 'd', 'M', None, '"7-DEAZA-8-AZA-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
  16.883 -"2ML": ('l', 'p', 'M', None, '2-METHYLLEUCINE'),
  16.884 -"MBZ": ('n', 'd', None, None, '"1-[2-DEOXYRIBOFURANOSYL]-4-METHYL-BENZOIMIDAZOLE-5\'-MONOPHOSPHATE"'),
  16.885 -"TPN": ('t', 'd', 'M', None, '2-AMINOETHYLGLYCINE-CARBONYLMETHYLENE-THYMINE'),
  16.886 -"SOY": ('s', 'p', 'M', None, '"OXACILLIN-ACYLATED'),
  16.887 -"CBV": ('c', 'r', 'M', None, "5-BROMOCYTIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
  16.888 -"MBQ": ('y', 'p', 'M', None, '2-HYDROXY-5-({1-[(4-METHYLPHENOXY)METHYL]-3-OXOPROP-1-ENYL}AMINO)-L-TYROSINE'),
  16.889 -"G31": ('g', 'd', 'M', None, '"3\'-METHYL-2\',3\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.890 -"HTI": ('c', 'p', 'M', None, '(4S)-4-{[(2S)-2-AMINO-3-OXOPROPYL]SULFANYL}-L-HOMOSERINE'),
  16.891 -"XX1": ('k', 'p', 'M', None, 'N~6~-7H-PURIN-6-YL-L-LYSINE'),
  16.892 -"6OG": ('g', 'd', 'M', None, "6-O-METHYL GUANOSINE-5'-MONOPHOSPHATE"),
  16.893 -"0AF": ('w', 'p', 'M', None, '7-HYDROXY-L-TRYPTOPHAN'),
  16.894 -"G36": ('g', 'd', 'M', None, '"O6-ETHYL-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
  16.895 -"I": ('n', 'r', None, None, '"INOSINIC'),
  16.896 -"YOF": ('y', 'p', 'M', None, '3-FLUOROTYROSINE'),
  16.897 -"HPQ": ('f', 'p', 'M', None, 'HOMOPHENYLALANINYLMETHANE'),
  16.898 -"LCA": ('a', 'r', 'M', None, '"[(1R,3R,4R,7S)-7-HYDROXY-3-(ADENIN-9-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
  16.899 -"IU": ('u', 'r', 'M', None, '"5-IODOURIDINE-5\'-MONOPHOSPHATE"'),
  16.900 -"CYQ": ('c', 'p', 'M', None, '"2-AMINO-3-PHOSPHONOMETHYLSULFANYL-PROPIONIC'),
  16.901 -"M0H": ('c', 'p', 'M', None, 'S-(HYDROXYMETHYL)-L-CYSTEINE'),
  16.902 -"FA5": ('n', 'r', None, None, '"ADENOSINE-5\'-[PHENYLALANINYL-PHOSPHATE]"'),
  16.903 -"LVG": ('g', 'p', 'M', None, 'L-VINYLGLYCINE'),
  16.904 -"HPH": ('x', 'p', None, None, 'PHENYLALANINDIOL'),
  16.905 -"IRN": ('n', 'r', None, None, '1-(5-O-PHOSPHONO-BETA-D-RIBOFURANOSYL)-1H-IMIDAZOLE'),
  16.906 -"Y": ('a', 'd', 'M', None, "2'-DEOXY-N6-(S)STYRENE OXIDE ADENOSINE MONOPHOSPHATE"),
  16.907 -"IC": ('c', 'r', 'M', None, '"ISOCYTIDINE-5\'-MONOPHOSPHATE"'),
  16.908 -"4DP": ('w', 'p', 'M', None, '3-[5-(DIMETHYLAMINO)-1,3-DIOXO-1,3-DIHYDRO-2H-ISOINDOL-2-YL]-L-ALANINE'),
  16.909 -"HPE": ('f', 'p', 'M', None, 'HOMOPHENYLALANINE'),
  16.910 -"PR5": ('a', 'r', 'M', None, "PURINE RIBOSIDE-5'-MONOPHOSPHATE"),
  16.911 -"CDE": ('x', 'p', None, None, '1,2-DIMETHYL-PROPYLAMINE'),
  16.912 -"SDP": ('s', 'p', 'M', None, '"2-AMINO-3-(DIETHOXY-PHOSPHORYLOXY)-PROPIONIC'),
  16.913 -"GN7": ('g', 'd', 'M', None, '"N7-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
  16.914 -"ARV": ('x', 'p', None, None, '5-N-ALLYL-ARGININE'),
  16.915 -"2AT": ('t', 'd', 'M', None, "2'-O-ALLYL THYMIDINE-5'-MONOPHOSPHATE"),
  16.916 -"T66": ('x', 'p', None, None, '2-AMINOETHYLLYSINE-CARBONYLMETHYLENE-THYMINE'),
  16.917 -"LCK": ('k', 'p', 'M', None, '(Z)-N~6~-(2-CARBOXY-1-METHYLETHYLIDENE)-L-LYSINE'),
  16.918 -"EHP": ('f', 'p', 'M', None, '3-HYDROXYPHENYLALANINE'),
  16.919 -"CHP": ('g', 'p', 'M', None, '3-CHLORO-4-HYDROXYPHENYLGLYCINE'),
  16.920 -"HY3": ('p', 'p', 'M', None, '3-HYDROXYPROLINE'),
  16.921 -"THX": ('n', 'd', None, None, 'PHOSPHONIC ACID 6-({6-[6-(6-CARBAMOYL-3,6,7,8-TETRAHYDRO-3,6-DIAZA-AS-INDACENE-2-CARBONYL)-3,6,7,8-TETRAHYDRO-3,6-DIAZA-AS-INDOCENE-2-CARBONYL]-3,6,7,8-TETRAHYDRO-3,6-DIAZA-AS-INDACENE-2-CARBONL}-AMINO)-HEXYL ESTER 5-(5-METHYL-2,4-DIOXO-3,4-DIHYDRO-2H-PYRIMIDIN-1-YL)-TETRAHYDRO-FURAN-2-YLMETHYL ESTER'),
  16.922 -"LCH": ('n', 'd', None, None, '"[(1R,3R,4R,7S)-7-HYDROXY-3-(5-METHYLCYTOSIN-1-YL)-2,5-DIOXABICYCLO[2.2.1]HEPT-1-YL]METHYL'),
  16.923 -"4MF": ('n', 'd', None, None, '1-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-4-METHYL-1H-INDOLE'),
  16.924 -"DTR": ('w', 'p', 'M', None, 'D-TRYPTOPHAN'),
  16.925 -"MOD": ('x', 'p', None, None, '"L-METHIONYL'),
  16.926 -"4MM": ('x', 'p', None, None, '(1S)-1-CARBOXY-N,N,N-TRIMETHYL-3-(METHYLSULFANYL)PROPAN-1-AMINIUM'),
  16.927 -"ARO": ('r', 'p', 'M', None, '"C-GAMMA-HYDROXY'),
  16.928 -"GSS": ('g', 'd', 'M', None, "2'-DEOXY-N2-(S)STYRENE OXIDE GUANOSINE MONOPHOSPHATE"),
  16.929 -"DRZ": ('n', 'd', None, None, '"3\',4\'-DIHYDROXY-PENTANAL-5\'-PHOSPHATE"'),
  16.930 -"CCY": ('x', 'p', None, None, '2-(1-AMINO-2-MERCAPTO-ETHYL)-5-(4-HYDROXY-BENZYL)-3-(ETHANOYL)-3,5-DIHYDRO-IMIDAZOL-4-ONE'),
  16.931 -"TPQ": ('y', 'p', 'M', None, '5-(2-CARBOXY-2-AMINOETHYL)-2-HYDROXY-1,4-BENZOQUINONE'),
  16.932 -"5CS": ('c', 'p', 'M', None, '"2-AMINO-3-(CYSTEIN-S-YL)-ISOXAZOLIDIN-5-YL-ACETIC'),
  16.933 -"4OC": ('c', 'r', 'M', None, '"4N,O2\'-METHYLCYTIDINE-5\'-MONOPHOSPHATE"'),
  16.934 -"DRP": ('n', 'd', None, None, '"2-DEOXYRIBOFURANOSYL-PYRIDINE-5\'-MONOPHOSPHATE"'),
  16.935 -"BOR": ('r', 'p', 'M', None, '"(1R)-1-AMINO-4-{[(E)-AMINO(IMINO)METHYL]AMINO}BUTYLBORONIC'),
  16.936 -"DRT": ('t', 'd', 'M', None, "2'-DEOXY-L-RIBO-FURANOSYL THYMINE-5'-MONOPHOSPHATE"),
  16.937 -"CCS": ('c', 'p', 'M', None, '"CARBOXYMETHYLATED'),
  16.938 -"TS": ('n', 'd', None, None, '"THYMIDINE-5\'-THIOPHOSPHATE"'),
  16.939 -"MME": ('m', 'p', 'M', None, '"N-METHYL'),
  16.940 -"CCL": ('k', 'p', 'M', None, 'N~6~-[(CYCLOPENTYLOXY)CARBONYL]-D-LYSINE'),
  16.941 -"GSC": ('g', 'p', 'M', None, '"2-ETHYLTHIO'),
  16.942 -"DRM": ('n', 'd', None, None, '"{[(1R,2S)-2-(2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)CYCLOPENTYL]OXY}METHYLPHOSPHONIC'),
  16.943 -"4FB": ('p', 'p', 'M', None, '(4S)-4-FLUORO-L-PROLINE'),
  16.944 -"GYS": ('x', 'p', None, None, '"[(4Z)-2-(1-AMINO-2-HYDROXYETHYL)-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
  16.945 -"NAL": ('a', 'p', 'M', None, 'BETA-(2-NAPHTHYL)-ALANINE'),
  16.946 -"6MT": ('a', 'r', 'M', None, '"TRANS-N6-METHYL-DEOXY-ADENOSINE-5\'-MONOPHOSPHATE"'),
  16.947 -"CCC": ('c', 'r', 'M', None, "CYTIDINE-5'-PHOSPHATE-2',3'-CYCLIC PHOSPHATE"),
  16.948 -"UMP": ('u', 'r', 'M', None, "2'-DEOXYURIDINE 5'-MONOPHOSPHATE"),
  16.949 -"ML3": ('k', 'p', 'M', None, '2-{[(2R)-2-AMINO-2-CARBOXYETHYL]SULFANYL}-N,N,N-TRIMETHYLETHANAMINIUM'),
  16.950 -"LPD": ('p', 'p', 'M', None, 'L-PROLINAMIDE'),
  16.951 -"OHI": ('h', 'p', 'M', None, '3-(2-OXO-2H-IMIDAZOL-4-YL)-L-ALANINE'),
  16.952 -"LYR": ('k', 'p', 'M', None, 'N~6~-[(2Z,4E,6E,8E)-3,7-DIMETHYL-9-(2,6,6-TRIMETHYLCYCLOHEX-1-EN-1-YL)NONA-2,4,6,8-TETRAENYL]LYSINE'),
  16.953 -"LYS": ('K', 'p', None, None, 'LYSINE'),
  16.954 -"LYX": ('k', 'p', 'M', None, "N''-(2-COENZYME A)-PROPANOYL-LYSINE"),
  16.955 -"CYA": ('c', 'p', 'M', None, '"TWO'),
  16.956 -"LYZ": ('k', 'p', 'M', None, '5-HYDROXYLYSINE'),
  16.957 -"ODP": ('n', 'r', None, None, '"4-OXO-NICOTINAMIDE-ADENINE'),
  16.958 -"C3Y": ('c', 'p', 'M', None, 'S-[(1S)-1-HYDROXY-1-(HYDROXYAMINO)ETHYL]-L-CYSTEINE'),
  16.959 -"POM": ('p', 'p', 'M', None, 'CIS-5-METHYL-4-OXOPROLINE'),
  16.960 -"LYM": ('k', 'p', 'M', None, 'DEOXY-METHYL-LYSINE'),
  16.961 -"LYN": ('k', 'p', 'M', None, '"2,6-DIAMINO-HEXANOIC'),
  16.962 -"GLQ": ('e', 'p', 'M', None, '"4-AMINO-5-OXO-PENTANOIC'),
  16.963 -"PIV": ('x', 'p', None, None, '"PIVALIC'),
  16.964 -"OHS": ('d', 'p', 'M', None, 'O-(CARBOXYSULFANYL)-4-OXO-L-HOMOSERINE'),
  16.965 -"X9A": ('x', 'p', None, None, 'amino[(3-{(2Z,5S,6S,9R,12S,13R,16R)-5,16-dicarboxy-2-ethylidene-12-[(1E,3E,5S,6R)-6-methoxy-3,5-dimethyl-7-phenylhepta-1,3-dien-1-yl]-1,6,13-trimethyl-3,7,10,14,19-pentaoxo-1,4,8,11,15-pentaazacyclononadecan-9-yl}propyl)amino]methaniminium'),
  16.966 -"SMT": ('n', 'r', None, None, '"2\'-[(METHYLTHIO)ETHYLOXY]-THYMIDINE-5\'-MONOPHOSPHATE"'),
  16.967 -"XAR": ('n', 'd', None, None, '"[(1R,4S,6S)-4-(6-AMINO-9H-PURIN-9-YL)-6-HYDROXYCYCLOHEX-2-EN-1-YL]METHYL'),
  16.968 -"CYD": ('c', 'p', 'M', None, '"2-AMINO-6-(CYSTEIN-S-YL)-5-OXO-HEXANOIC'),
  16.969 -"SVA": ('s', 'p', 'M', None, '"SERINE'),
  16.970 -"5HT": ('t', 'd', 'M', None, '5-HYDROXY-THYMIDINE'),
  16.971 -"5HU": ('n', 'd', None, None, '"5-HYDROXYMETHYLURIDINE-2\'-DEOXY-5\'-MONOPHOSPHATE"'),
  16.972 -"XAL": ('a', 'd', 'M', None, '"[(1S,4R,6R)-6-HYDROXY-4-(ADENIN-9-YL)CYCLOHEX-2-EN-1-YL]METHYL'),
  16.973 -"T": ('n', 'd', None, None, '"THYMIDINE-5\'-MONOPHOSPHATE"'),
  16.974 -"5HP": ('e', 'p', 'M', None, '"PYROGLUTAMIC'),
  16.975 -"4SC": ('c', 'd', 'M', None, "4'-THIO-2'-DEOXYCYTIDINE-5'-MONOPHOSPHATE GROUP"),
  16.976 -"CQR": ('x', 'p', None, None, '"[(4Z)-2-(AMINOMETHYL)-4-(4-HYDROXYBENZYLIDENE)-5-OXO-4,5-DIHYDRO-1H-IMIDAZOL-1-YL]ACETIC'),
  16.977 -"XAD": ('a', 'd', 'M', None, '9-(2,3-DIDEOXY-6-O-PHOSPHONO-BETA-D-ERYTHRO-HEXOPYRANOSYL)-9H-PURIN-6-AMINE'),
  16.978 -"XAE": ('n', 'd', None, None, '3-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-3H-IMIDAZO[4,5-G]QUINAZOLIN-8-AMINE'),
  16.979 -"TYI": ('y', 'p', 'M', None, '3,5-DIIODOTYROSINE'),
  16.980 -"VLL": ('x', 'p', None, None, '"(2S)-2,3-DIAMINOBUTANOIC'),
  16.981 -"2BD": ('n', 'd', None, None, "N1-(1-HYDROXY-3-BUTEN-2(S)-YL)-2'-DEOXYINOSINE MONO PHOSPHORIC ACID"),
  16.982 -"IIC": ('x', 'p', None, None, '"4-IMIDAZOLMETHYLENE-5-IMIDAZOLONE'),
  16.983 -"A66": ('x', 'p', None, None, '2-AMINOETHYLLYSINE-CARBONYLMETHYLENE-ADENINE'),
  16.984 -"2EG": ('g', 'd', 'M', None, "2'-DEOXY-N-ETHYLGUANOSINE 5'-PHOSPHATE"),
  16.985 -"2SA": ('n', 'r', None, None, '"2-[9-(3,4-DIHYDROXY-5-PHOSPHONOOXYMETHYL-TETRAHYDRO-FURAN-2-YL)-9H-PURIN-6-YLAMINO]-SUCCINIC'),
  16.986 -"2CO": ('c', 'p', 'M', None, 'S-HYDROPEROXYCYSTEINE'),
  16.987 -"TMD": ('t', 'p', 'M', None, '(6,7-DIHYDRO)4-[(E)-BUTENYL]-4,N-DIMETHYL-THREONINE'),
  16.988 -"CXM": ('m', 'p', 'M', None, 'N-CARBOXYMETHIONINE'),
  16.989 -"ALA": ('A', 'p', None, None, 'ALANINE'),
  16.990 -"GOM": ('g', 'r', 'M', None, 'GLUTAMOL-AMP'),
  16.991 -"2VA": ('v', 'p', 'M', None, '"2\'-(L-VALYL)AMINO-2\'-DEOXYADENOSINE"'),
  16.992 -"5BU": ('u', 'r', 'M', None, '"5-BROMO-URIDINE-5\'-MONOPHOSPHATE"'),
  16.993 -"IGU": ('g', 'd', 'M', None, '"2\'-DEOXYISOGUANINE-5\'-MONOPHOSPHATE"'),
  16.994 -"MLE": ('l', 'p', 'M', None, 'N-METHYLLEUCINE'),
  16.995 -"T39": ('n', 'r', None, None, "2'-O-METHOXYETHYLENE THYMIDINE 5'-MONOPHOSPHATE"),
  16.996 -"FLT": ('y', 'p', 'M', None, '"FLUOROMALONYL'),
  16.997 -"U37": ('u', 'r', 'M', None, "URIDINE 5'-MONOTHIOPHOSPHATE"),
  16.998 -"U36": ('u', 'r', 'M', None, '"2\'-O-METHYOXYETHYL-URIDINE-5\'-MONOPHOSPHATE"'),
  16.999 -"DHL": ('x', 'p', None, None, '2-AMINO-ETHANETHIOL'),
 16.1000 -"U33": ('n', 'd', None, None, "5-BROMO-2'-DEOXY URIDINE"),
 16.1001 -"TIH": ('a', 'p', 'M', None, 'BETA(2-THIENYL)ALANINE'),
 16.1002 -"SMF": ('f', 'p', 'M', None, '4-SULFOMETHYL-L-PHENYLALANINE'),
 16.1003 -"FLA": ('a', 'p', 'M', None, 'TRIFLUOROALANINE'),
 16.1004 -"HOB": ('n', 'd', None, None, '"CHOLEST-5-EN-3-YL'),
 16.1005 -"FLE": ('l', 'p', 'M', None, 'FUROYL-LEUCINE'),
 16.1006 -"VDL": ('x', 'p', None, None, '"(2R,3R)-2,3-DIAMINOBUTANOIC'),
 16.1007 -"A1P": ('n', 'd', None, None, '9-{2-DEOXY-5-O-[HYDROXY(OXIDO)PHOSPHINO]-BETA-L-ERYTHRO-PENTOFURANOSYL}-9H-PURIN-2-AMINE'),
 16.1008 -"0G6": ('x', 'p', None, None, 'D-PHENYLALANYL-N-[(1S)-4-{[AMINO(IMINIO)METHYL]AMINO}-1-(CHLOROACETYL)BUTYL]-L-PROLINAMIDE'),
 16.1009 -"LLY": ('k', 'p', 'M', None, 'NZ-(DICARBOXYMETHYL)LYSINE'),
 16.1010 -"DHI": ('h', 'p', 'M', None, 'D-HISTIDINE'),
 16.1011 -"RON": ('x', 'p', None, None, 'NORVALINE'),
 16.1012 -"PTH": ('y', 'p', 'M', None, 'CE1-METHYLENE-HYDROXY-PHOSPHOTYROSINE'),
 16.1013 -"T32": ('t', 'd', 'M', None, "6'-ALPHA-METHYL CARBOCYCLIC THYMIDINE 5'-MONOPHOSPHATE"),
 16.1014 -"LLP": ('k', 'p', 'M', None, '2-LYSINE(3-HYDROXY-2-METHYL-5-PHOSPHONOOXYMETHYL-PYRIDIN-4-YLMETHANE)'),
 16.1015 -"MNU": ('u', 'r', 'M', None, '"(2R,4S)-1-[(4R)-3,4-DIHYDROXYTETRAHYDROFURAN-2-YL]-5-[(METHYLAMINO)METHYL]-1,2,3,4-TETRAHYDROPYRIMIDINE-2,4-DIOL-5\'-MONOPHOSPHATE"'),
 16.1016 -"PTA": ('x', 'p', None, None, '"[(1-AMINO-3-METHYL-BUTYL)-HYDROXY-PHOSPHINOYL]-ACETIC'),
 16.1017 -"TZO": ('x', 'p', None, None, '"1,3-THIAZOLE-4-CARBOXYLIC'),
 16.1018 -"DBZ": ('a', 'p', 'M', None, '3-(BENZOYLAMINO)-L-ALANINE'),
 16.1019 -"MNL": ('l', 'p', 'M', None, '4,N-DIMETHYLNORLEUCINE'),
 16.1020 -"APN": ('a', 'd', 'M', None, '2-AMINOETHYLGLYCINE-CARBONYLMETHYLENE-ADENINE'),
 16.1021 -"OCY": ('c', 'p', 'M', None, 'HYDROXYETHYLCYSTEINE'),
 16.1022 -"BCS": ('c', 'p', 'M', None, 'BENZYLCYSTEINE'),
 16.1023 -"OSE": ('s', 'p', 'M', None, 'O-SULFO-L-SERINE'),
 16.1024 -"3TY": ('x', 'p', None, None, '3-[(3E)-3-(BENZYLHYDRAZONO)-4-HYDROXY-6-OXOCYCLOHEXA-1,4-DIEN-1-YL]-L-ALANINE'),
 16.1025 -"SCS": ('c', 'p', 'M', None, '3-(ETHYLDISULFANYL)-L-ALANINE'),
 16.1026 -"TYY": ('y', 'p', 'M', None, '3-(4-HYDROXY-3-IMINO-6-OXO-CYCLOHEXA-1,4-DIENYL)-ALANINE'),
 16.1027 -"0A5": ('n', 'p', 'M', None, 'N~2~-PROPANOYL-L-ASPARAGINE'),
 16.1028 -"PBT": ('n', 'd', None, None, '"[3-HYDROXY-5-(5-METHYL-2,4-DIOXOTETRAHYDRO-1(2H)-PYRIMIDINYL)TETRAHYDRO-2-FURANYL]METHYL'),
 16.1029 -"CWR": ('s', 'p', 'M', None, '"(4-METHYL-5-OXO-2,5-DIHYDRO-1H-IMIDAZOL-1-YL)ACETIC'),
 16.1030 -"TRO": ('w', 'p', 'M', None, '2-HYDROXY-TRYPTOPHAN'),
 16.1031 -"TRN": ('w', 'p', 'M', None, 'NZ2-TRYPTOPHAN'),
 16.1032 -"PYO": ('u', 'r', 'M', None, '"1-(BETA-D-RIBOFURANOSYL)-PYRIMIDIN-2-ONE-5\'-PHOSPHATE"'),
 16.1033 -"ZGU": ('g', 'r', 'M', None, '"(S)-1\'-(2\',3\'-DIHYDROXYPROPYL)-GUANINE"'),
 16.1034 -"TRG": ('k', 'p', 'M', None, '"L-(N,N'),
 16.1035 -"TRF": ('w', 'p', 'M', None, 'N1-FORMYL-TRYPTOPHAN'),
 16.1036 -"R1F": ('c', 'p', 'M', None, '3-{[(2,2,5,5-TETRAMETHYL-1-OXO-4-PHENYL-2,5-DIHYDRO-1H-PYRROLIUM-3-YL)METHYL]DISULFANYL}-D-ALANINE'),
 16.1037 -"M5M": ('c', 'r', 'M', None, '"2\'-(N-ACETAMIDE)-CYTIDINE-5\'-MONOPHOSPHATE"'),
 16.1038 -"PBF": ('f', 'p', 'M', None, 'PARA-(BENZOYL)-PHENYLALANINE'),
 16.1039 -"R1B": ('c', 'p', 'M', None, '3-{[(2,2,4,5,5-PENTAMETHYL-1-OXO-2,5-DIHYDRO-1H-PYRROLIUM-3-YL)METHYL]DISULFANYL}-L-ALANINE'),
 16.1040 -"DHA": ('a', 'p', 'M', None, '"2-AMINO-ACRYLIC'),
 16.1041 -"YCM": ('c', 'p', 'M', None, 'S-(2-AMINO-2-OXOETHYL)-L-CYSTEINE'),
 16.1042 -"R1A": ('c', 'p', 'M', None, '3-{[(2,2,5,5-TETRAMETHYL-1-OXO-2,5-DIHYDRO-1H-PYRROLIUM-3-YL)METHYL]DISULFANYL}-D-ALANINE'),
 16.1043 -"TRQ": ('w', 'p', 'M', None, '"2-AMINO-3-(6,7-DIOXO-6,7-DIHYDRO-1H-INDOL-3-YL)-PROPIONIC'),
 16.1044 -"TRP": ('W', 'p', None, None, 'TRYPTOPHAN'),
 16.1045 -"T23": ('n', 'r', None, None, '"2\'-O-METHYL-3\'-METHYL-3\'-DEOXY-ARABINOFURANOSYL-THYMINE-5\'-PHOSPHATE"'),
 16.1046 -"TRW": ('w', 'p', 'M', None, '"TRW3-(2-AMINO-3-HYDROXY-PROPYL)-6-(N\'-CYCLOHEXYL-HYDRAZINO)OCTAHYDRO-INDOL-7-OL"'),
 16.1047 -"4FW": ('w', 'p', 'M', None, '4-FLUOROTRYPTOPHANE'),
 16.1048 -"IVA": ('x', 'p', None, None, '"ISOVALERIC'),
 16.1049 -"VOL": ('x', 'p', None, None, 'L-VALINOL'),
 16.1050 -"6HT": ('t', 'd', 'M', None, '"1\',5\'-ANHYDRO-2\',3\'-DIDEOXY-2\'-(THYMIN-1-YL)-6\'-O-PHOSPHORYL-D-ARABINO-HEXITOL"'),
 16.1051 -"6HG": ('g', 'd', 'M', None, '"1\',5\'-ANHYDRO-2\',3\'-DIDEOXY-2\'-(GUANIN-9-YL)-6\'-O-PHOSPHORYL-D-ARABINO-HEXITOL"'),
 16.1052 -"MPJ": ('x', 'p', None, None, '"(1-AMINO-3-METHYLSULFANYL-PROPYL)-PHOSPHINIC'),
 16.1053 -"C43": ('c', 'r', 'M', None, '"2\'-O-METHYOXYETHYL-CYTIDINE-5\'-MONOPHOSPHATE"'),
 16.1054 -"MPH": ('x', 'p', None, None, '"(1-AMINO-3-METHYLSULFANYL-PROPYL)-PHOSPHONIC'),
 16.1055 -"AVN": ('x', 'p', None, None, '"(2S)-AMINO[(5S)-3-CHLORO-4,5-DIHYDROISOXAZOL-5-YL]ACETIC'),
 16.1056 -"M3L": ('k', 'p', 'M', None, 'N-TRIMETHYLLYSINE'),
 16.1057 -"C5C": ('c', 'p', 'M', None, '"S-CYCLOPENTYL'),
 16.1058 -"HTR": ('w', 'p', 'M', None, 'BETA-HYDROXYTRYPTOPHANE'),
 16.1059 -"MPQ": ('g', 'p', 'M', None, 'N-METHYL-ALPHA-PHENYL-GLYCINE'),
 16.1060 -"ESC": ('m', 'p', 'M', None, '"2-AMINO-4-ETHYL'),
 16.1061 -"3ME": ('n', 'd', None, None, '"PHOSPHORIC'),
 16.1062 -"TYS": ('y', 'p', 'M', None, 'O-SULFO-L-TYROSINE'),
 16.1063 -"6HA": ('a', 'd', 'M', None, '"1\',5\'-ANHYDRO-2\',3\'-DIDEOXY-2\'-(ADENIN-9-YL)-6\'-O-PHOSPHORYL-D-ARABINO-HEXITOL"'),
 16.1064 -"KCX": ('k', 'p', 'M', None, '"LYSINE'),
 16.1065 -"6HC": ('c', 'd', 'M', None, '"1\',5\'-ANHYDRO-2\',3\'-DIDEOXY-2\'-(CYTOSIN-1-YL)-6\'-O-PHOSPHORYL-D-ARABINO-HEXITOL"'),
 16.1066 -"AVC": ('a', 'r', 'M', None, '"ADENOSINE-5\'-MONOPHOSPHATE-2\',3\'-VANADATE"'),
 16.1067 -"GTP": ('g', 'r', 'M', None, '"GUANOSINE-5\'-TRIPHOSPHATE"'),
 16.1068 -"ACB": ('d', 'p', 'M', None, '"3-METHYL-ASPARTIC'),
 16.1069 -"2SI": ('x', 'p', None, None, '"2-O-SULFO-A-L-IDURONIC'),
 16.1070 -"NEM": ('h', 'p', 'M', None, '"NE2-METHYLATED'),
 16.1071 -"N7P": ('p', 'p', 'M', None, '1-ACETYL-D-PROLINE'),
 16.1072 -"SUB": ('x', 'p', None, None, '"3-PHENYL-2-{[4-(TOLUENE-4-SULFONYL)-THIOMORPHOLINE-3-CARBONYL]-AMINO}-PROPIONIC'),
 16.1073 -"2AG": ('g', 'p', 'M', None, '"(2S)-2-AMINOPENT-4-ENOIC'),
 16.1074 -"SUN": ('s', 'p', 'M', None, 'O-[(R)-(DIMETHYLAMINO)(ETHOXY)PHOSPHORYL]-L-SERINE'),
 16.1075 -"SUI": ('x', 'p', None, None, '"(3-AMINO-2,5-DIOXO-1-PYRROLIDINYL)ACETIC'),
 16.1076 -"ACL": ('r', 'p', 'M', None, 'DEOXY-CHLOROMETHYL-ARGININE'),
 16.1077 -"SUR": ('u', 'r', 'M', None, '"1-(BETA-D-RIBOFURANOSYL)-2-THIO-URACIL-5\'-PHOSPHATE"'),
 16.1078 -"BVP": ('n', 'd', None, None, '"(E)-5-(2-BROMOVINYL)-2\'-DEOXYURIDINE-5\'-MONOPHOSPHATE"'),
 16.1079 -"HFA": ('x', 'p', None, None, '"ALPHA-HYDROXY-BETA-PHENYL-PROPIONIC'),
 16.1080 -"LET": ('x', 'p', None, None, '(Z)-N^6-{3-CARBOXY-1-[(4-CARBOXY-2-OXOBUTOXY)METHYL]PROPYLIDENE}-L-LYSINE'),
 16.1081 -"0A8": ('c', 'p', 'M', None, 'S-[(2-CHLOROETHYL)CARBAMOYL]-L-CYSTEINE'),
 16.1082 -"D4P": ('x', 'p', None, None, '"(2S)-AMINO(4-HYDROXYPHENYL)ACETIC'),
 16.1083 -"2OT": ('t', 'd', 'M', None, "2'-O-[2-(N,N-DIMETHYLAMINOOXY)ETHYL] THYMIDINE-5'-MONOPHOSPHATE"),
 16.1084 -"NEP": ('h', 'p', 'M', None, 'N1-PHOSPHONOHISTIDINE'),
 16.1085 -"PMT": ('c', 'r', 'M', None, '"PHOSPHORIC'),
 16.1086 -"2DT": ('t', 'd', 'M', None, '"3\'-DEOXYTHYMIDINE-5\'-MONOPHOSPHATE"'),
 16.1087 -"MLY": ('k', 'p', 'M', None, 'N-DIMETHYL-LYSINE'),
 16.1088 -"AD2": ('a', 'd', 'M', None, '"2\'-DEOXY-ADENOSINE-3\'-5\'-DIPHOSPHATE"'),
 16.1089 -"CGA": ('e', 'p', 'M', None, '"CARBOXYMETHYLATED'),
 16.1090 -"NBQ": ('y', 'p', 'M', None, '2-HYDROXY-5-({1-[(2-NAPHTHYLOXY)METHYL]-3-OXOPROP-1-ENYL}AMINO)TYROSINE'),
 16.1091 -"ODS": ('x', 'p', None, None, '"4-METHYLPIPERAZIN-1-YL'),
 16.1092 -"7GU": ('g', 'd', 'M', None, '"7-DEAZA-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
 16.1093 -"SAH": ('c', 'p', 'M', None, 'S-ADENOSYL-L-HOMOCYSTEINE'),
 16.1094 -"2DF": ('n', 'd', None, None, '"N-(2-DEOXY-BETA-D-ERYTHO-PENTOFURANOSYL-5-PHOSPHATE)'),
 16.1095 -"2DA": ('a', 'd', 'M', None, '"2\',3\'-DIDEOXYADENOSINE-5\'-MONOPHOSPHATE"'),
 16.1096 -"PCC": ('p', 'p', 'M', None, '5-OXOPROLINE'),
 16.1097 -"ODA": ('x', 'p', None, None, '"9-AMINO-6,10-DIOXO-OCTAHYDRO-PYRIDAZINO[1,2-A][1,2]DIAZEPINE-1-CARBOXYLIC'),
 16.1098 -"2DO": ('x', 'p', None, None, '(2S)-2-AMINOHEXANE-1,1-DIOL'),
 16.1099 -"CGU": ('e', 'p', 'M', None, '"GAMMA-CARBOXY-GLUTAMIC'),
 16.1100 -"L2A": ('x', 'p', None, None, '"(2S,5S,8S,11S,15E,20S)-20-AMINO-2-(CARBOXYMETHYL)-11,20-DIMETHYL-5,8-BIS(2-METHYLPROPYL)-3,6,9,21-TETRAOXO-1,4,7,10-TETRAAZACYCLOHENICOS-15-ENE-11-CARBOXYLIC'),
 16.1101 -"DNG": ('l', 'p', 'M', None, 'N-FORMYL-D-NORLEUCINE'),
 16.1102 -"UMA": ('a', 'p', 'M', None, '"URIDINE-5\'-DIPHOSPHATE-N-ACETYLMURAMOYL-L-ALANINE"'),
 16.1103 -"PM3": ('f', 'p', 'M', None, '"2-AMINO-3-(4-PHOSPHONOMETHYL-PHENYL)-PROPIONIC'),
 16.1104 -"DNM": ('l', 'p', 'M', None, 'N-METHYL-D-NORLEUCINE'),
 16.1105 -"DNL": ('k', 'p', 'M', None, '6-AMINO-HEXANAL'),
 16.1106 -"GMA": ('e', 'p', 'M', None, '"4-AMIDO-4-CARBAMOYL-BUTYRIC'),
 16.1107 -"1LU": ('l', 'p', 'M', None, '"4-METHYL-PENTANOIC'),
 16.1108 -"CDV": ('x', 'p', None, None, '"3-METHYL-2-UREIDO-BUTYRIC'),
 16.1109 -"ADX": ('n', 'r', None, None, '"ADENOSINE-5\'-PHOSPHOSULFATE"'),
 16.1110 -"LKC": ('n', 'd', None, None, '4-AMINO-1-[(1S,3R,4R,7S)-7-HYDROXY-1-(HYDROXYMETHYL)-2,5-DIOXABICYCLO[2.2.1]HEPT-3-YL]-5-METHYLPYRIMIDIN-2(1H)-ONE'),
 16.1111 -"ADD": ('x', 'p', None, None, '"2,6,8-TRIMETHYL-3-AMINO-9-BENZYL-9-METHOXYNONANOIC'),
 16.1112 -"CUC": ('x', 'p', None, None, '"CYCLOHEXYLGLYCYL'),
 16.1113 -"DNP": ('a', 'p', 'M', None, '3-AMINO-ALANINE'),
 16.1114 -"DNS": ('k', 'p', 'M', None, 'N~6~-{[5-(DIMETHYLAMINO)-1-NAPHTHYL]SULFONYL}-L-LYSINE'),
 16.1115 -"DNR": ('c', 'd', 'M', None, "2'-DEOXY-N3-PROTONATED CYTIDINE-5'-MONOPHOSPHATE"),
 16.1116 -"CG1": ('g', 'r', 'M', None, '"5\'-O-[(R)-HYDROXY(METHOXY)PHOSPHORYL]GUANOSINE"'),
 16.1117 -"Z": ('c', 'd', 'M', None, 'ZEBULARINE'),
 16.1118 -"GMU": ('n', 'd', None, None, "2'-O-[(2-GUANIDINIUM)ETHYL]-5-METHYLURIDINE 5'-MONOPHOSPHATE"),
 16.1119 -"C99": ('x', 'p', None, None, '"{(2R)-2-[(1S,2R)-1-AMINO-2-HYDROXYPROPYL]-2-HYDROXY-4,5-DIOXOIMIDAZOLIDIN-1-YL}ACETIC'),
 16.1120 -"GDP": ('g', 'r', 'M', None, '"GUANOSINE-5\'-DIPHOSPHATE"'),
 16.1121 -"MED": ('m', 'p', 'M', None, 'D-METHIONINE'),
 16.1122 -"GDR": ('g', 'd', 'M', None, '"GUANOSINE-5\'-DIPHOSPHATE-RHAMNOSE"'),
 16.1123 -"MEA": ('f', 'p', 'M', None, 'N-METHYLPHENYLALANINE'),
 16.1124 -"LEF": ('l', 'p', 'M', None, '(4S)-5-FLUORO-L-LEUCINE'),
 16.1125 -"LEH": ('l', 'p', 'M', None, 'N-[12-(1H-IMIDAZOL-1-YL)DODECANOYL]-L-LEUCINE'),
 16.1126 -"CHG": ('x', 'p', None, None, '"CYCLOHEXYL-GLYCINE"'),
 16.1127 -"MEN": ('n', 'p', 'M', None, '"N-METHYL'),
 16.1128 -"G42": ('g', 'd', 'M', None, '"8-OXO-2\'-DEOXY-GUANOSINE-5\'-MONOPHOSPHATE"'),
 16.1129 -"5CG": ('g', 'd', 'M', None, '"5\'-CHLORO-5\'-DEOXY-GUANOSINE"'),
 16.1130 -"T31": ('u', 'r', 'M', None, "THYMIDINE 5'-MONOTHIOPHOSPHATE"),
 16.1131 -"MEU": ('g', 'p', 'M', None, 'O-METHYL-GLYCINE'),
 16.1132 -"MET": ('M', 'p', None, None, 'METHIONINE'),
 16.1133 -"U34": ('u', 'r', 'M', None, "URIDINE 5'-MONOMETHYLPHOSPHATE"),
 16.1134 -"MEQ": ('q', 'p', 'M', None, 'N5-METHYLGLUTAMINE'),
 16.1135 -"MEP": ('u', 'r', 'M', None, '"PHOSPHORIC'),
 16.1136 -"B1P": ('n', 'd', None, None, '2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSE'),
 16.1137 -"IG": ('g', 'r', 'M', None, '"ISOGUANOSINE-5\'-MONOPHOSPHATE"'),
 16.1138 -"T2S": ('n', 'r', None, None, '"THYMIDINE-5\'-DITHIOPHOSPHORATE"'),
 16.1139 -"ZHP": ('n', 'r', None, None, '"(S)-1\'-(2\',3\'-DIHYDROXYPROPYL)-HYDROXYPYRIDONE"'),
 16.1140 -"AZK": ('k', 'p', 'M', None, '"(S)-2-AMINO-6-AZIDOHEXANOIC'),
 16.1141 -"U31": ('u', 'r', 'M', None, "2'-O-3-AMINOPROPYL 2'-DEOXYURIDINE-5'-MONOPHOSPHATE"),
 16.1142 -"LTR": ('w', 'p', 'M', None, 'L-TRYPTOPHAN'),
 16.1143 -"MSU": ('x', 'p', None, None, '"SUCCINIC'),
 16.1144 -"1PA": ('f', 'p', 'M', None, '"PHENYLMETHYLACETIC'),
 16.1145 -"MSP": ('a', 'p', 'M', None, '"5\'-O-[(L-METHIONYL)-SULPHAMOYL]ADENOSINE"'),
 16.1146 -"MSO": ('m', 'p', 'M', None, '"SELENOMETHIONINE'),
 16.1147 -"AZY": ('y', 'p', 'M', None, '3-AZIDO-L-TYROSINE'),
 16.1148 -"ENA": ('n', 'r', None, None, 'ETHENO-NAD'),
 16.1149 -"MSL": ('m', 'p', 'M', None, '"(2S)-2-AMINO-4-(METHYLSULFONIMIDOYL)BUTANOIC'),
 16.1150 -"PF5": ('f', 'p', 'M', None, '2,3,4,5,6-PENTAFLUORO-L-PHENYLALANINE'),
 16.1151 -"1PR": ('n', 'r', None, None, '"PHOSPHORIC'),
 16.1152 -"3AR": ('x', 'p', None, None, 'N-OMEGA-PROPYL-L-ARGININE'),
 16.1153 -"MSE": ('m', 'p', 'M', None, 'SELENOMETHIONINE'),
 16.1154 -"AZS": ('s', 'p', 'M', None, 'O-DIAZOACETYL-L-SERINE'),
 16.1155 -"MSA": ('g', 'p', 'M', None, '"(2-S-METHYL)'),
 16.1156 -"R2P": ('x', 'p', None, None, '"(2R)-2-AMINO-3-(4-HYDROXY-1,2,5-THIADIAZOL-3-YL)PROPANOIC'),
 16.1157 -"CAR": ('c', 'd', 'M', None, "CYTOSINE ARABINOSE-5'-PHOSPHATE"),
 16.1158 -"DAB": ('a', 'p', 'M', None, '"2,4-DIAMINOBUTYRIC'),
 16.1159 -"OTY": ('y', 'p', 'M', None, '"2-AMINO-3-(4-HYDROXY-6-OXOCYCLOHEXA-1,4-DIENYL)PROPANOIC'),
 16.1160 -"DAL": ('a', 'p', 'M', None, 'D-ALANINE'),
 16.1161 -"DAM": ('x', 'p', None, None, 'N-METHYL-ALPHA-BETA-DEHYDROALANINE'),
 16.1162 -"TT": ('n', 'd', None, None, '"[(1R,3R,4S,9R,10S,12R,15AS,15BR,18BR,18CS)-10-HYDROXY-15A,15B-DIMETHYL-13,15,16,18-TETRAOXOHEXADECAHYDRO-8H-9,12-EPOXY-1,4-METHANO-2,5,7-TRIOXA-12A,14,17,18A-TETRAAZACYCLOHEXADECA[1,2,3,4-DEF]BIPHENYLEN-3-YL]METHYL DIHYDROGEN PHOSPHATE"'),
 16.1163 -"IOY": ('f', 'p', 'M', None, 'P-IODO-D-PHENYLALANINE'),
 16.1164 -"DAH": ('f', 'p', 'M', None, '3,4-DIHYDROXYPHENYLALANINE'),
 16.1165 -"8MG": ('g', 'd', 'M', None, '"8-METHYL-2\'-DEOXYGUANOSINE-5\'-MONOPHOSPHATE"'),
 16.1166 -"BZG": ('n', 'd', None, None, '6-(BENZYLOXY)-9-(2-DEOXY-5-O-PHOSPHONO-BETA-D-ERYTHRO-PENTOFURANOSYL)-9H-PURIN-2-AMINE'),
 16.1167 -"ARM": ('r', 'p', 'M', None, 'DEOXY-METHYL-ARGININE'),
 16.1168 -"DAR": ('r', 'p', 'M', None, 'D-ARGININE'),
 16.1169 -"DAS": ('d', 'p', 'M', None, '"D-ASPARTIC'),
 16.1170 -"MCY": ('c', 'd', 'M', None, '"5-METHYL-2\'-DEOXYCYTIDINE"'),
 16.1171 -"SGB": ('s', 'p', 'M', None, 'O-[(S)-METHYL(1-METHYLETHOXY)PHOSPHORYL]-L-SERINE'),
 16.1172 -"YRR": ('n', 'd', None, None, '"3-HYDROXY-PYRROLIDIN-2-YLMETHYL-MONOPHOSPHATE'),
 16.1173 -"NF2": ('n', 'r', None, None, '(1S)-1,4-ANHYDRO-1-(2,4-DIFLUORO-5-METHYLPHENYL)-5-O-PHOSPHONO-D-RIBITOL'),
 16.1174 -"CNU": ('u', 'r', 'M', None, '"5-CYANO-URIDINE-5\'-MONOPHOSPHATE"'),
 16.1175 -"E": ('a', 'd', 'M', None, "N-((-)-(7S,8R,9S,10R)[7,8,9-TRIHYDROXY-7,8,9,10-TETRA HYDROBENZO[A]PYREN-10-YL])-2'-DEOXY-ADENOSINE-5'-MONOPHOSPHATE"),
 16.1176 -"AA3": ('a', 'p', 'M', None, '"2-AMINOBUTYRIC'),
 16.1177 -"GVL": ('x', 'p', None, None, 'O-[(R)-{[(3R)-4-AMINO-3-HYDROXY-2,2-DIMETHYL-4-OXOBUTYL]OXY}(HYDROXY)PHOSPHORYL]-L-SERINE'),
 16.1178 -"TNR": ('s', 'p', 'M', None, 'O-(2-ACETAMIDO-2-DEOXY-ALPHA-D-GALACTOPYRANOSYL)-L-SERINE'),
 16.1179 -"HOL": ('n', 'd', None, None, '"CHOLEST-5-EN-3-YL'),
 16.1180 -"PTM": ('y', 'p', 'M', None, 'ALPHA-METHYL-O-PHOSPHOTYROSINE'),
 16.1181 -"AS": ('a', 'd', 'M', None, "2-DEOXY-ADENOSINE -5'-THIO-MONOPHOSPHATE"),
 16.1182 -"U": ('U', 'r', None, None, '"URIDINE-5\'-MONOPHOSPHATE"'),
 16.1183 -"ESB": ('y', 'p', 'M', None, '3-[(3E)-3-(ETHYLIMINO)-4-HYDROXY-6-OXOCYCLOHEXA-1,4-DIEN-1-YL]-L-ALANINE'),
 16.1184 -"DA2": ('x', 'p', None, None, 'NG,NG-DIMETHYL-L-ARGININE'),
 16.1185 -"TNB": ('c', 'p', 'M', None, 'S-(2,3,6-TRINITROPHENYL)CYSTEINE'),
 16.1186 -"RMP": ('a', 'd', 'M', None, '"2\'-DEOXY-ADENOSINE-5\'-RP-MONOMETHYLPHOSPHONATE"'),
 16.1187 -"SME": ('m', 'p', 'M', None, '"METHIONINE'),
 16.1188 -"NDF": ('f', 'p', 'M', None, 'N-(CARBOXYCARBONYL)-D-PHENYLALANINE'),
 16.1189 -"BOE": ('t', 'd', 'M', None, "2'-O-[2-(BENZYLOXY)ETHYL] THYMIDINE-5'-MONOPHOSPHATE"),
 16.1190 -"LGP": ('g', 'd', 'M', None, '"N9-1-HYDROXY-PROP-2-OXYMETHYL-GUANINE-3\'-MONOPHOSPHATE"'),
 16.1191 -"SCH": ('c', 'p', 'M', None, 'S-METHYL-THIO-CYSTEINE'),
 16.1192 -"T2T": ('n', 'd', None, None, '[(2S,3S,5R)-3-[(2S)-3-({[(2R,3S,4R,5R)-3-HYDROXY-4-METHOXY-5-(5-METHYL-2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)TETRAHYDROFURAN-2-YL]METHYL}AMINO)-2-METHYL-3-OXOPROPYL]-5-(5-METHYL-2,4-DIOXO-3,4-DIHYDROPYRIMIDIN-1(2H)-YL)TETRAHYDROFURAN-2-YL]METHYL DIHYDROGEN PHOSPHATE'),
 16.1193 -"PFF": ('f', 'p', 'M', None, '4-FLUORO-L-PHENYLALANINE'),
 16.1194 -"PCE": ('x', 'p', None, None, '"2-(3-AMINO-4-CYCLOHEXYL-2-HYDROXY-BUTYL)-PENT-4-YNOIC'),
 16.1195 -"DFO": ('x', 'p', None, None, '2,2-DIFLUORO-3-HYDROSTATINE'),
 16.1196 -"DXN": ('n', 'd', None, None, '(1R,3S,4R)-4-(PHOSPHOOXYMETHYL)-CYCLOPENTANE-1,3-DIOL'),
 16.1197 -"KGC": ('k', 'p', 'M', None, 'N~6~-[(2R)-2-CARBOXY-5-OXOTETRAHYDROFURAN-2-YL]-L-LYSINE'),
 16.1198 -"US1": ('n', 'd', None, None, "2'-DEOXY-3'-THIOURIDINE 5'-(DIHYDROGEN PHOSPHATE)"),
 16.1199 -"HHK": ('x', 'p', None, None, '"(2S)-2,8-DIAMINOOCTANOIC'),
 16.1200 -"DXD": ('n', 'd', None, None, '(1S,3S,4R)-4-(PHOSPHOOXYMETHYL)-CYCLOPENTANE-1,3-DIOL'),
 16.1201 -"ZCY": ('c', 'r', 'M', None, '"(S)-1\'-(2\',3\'-DIHYDROXYPROPYL)-CYTOSINE"'),
 16.1202 -"IEL": ('k', 'p', 'M', None, 'N~6~-[(1Z)-ETHANIMIDOYL]-L-LYSINE'),
 16.1203 -}
    17.1 --- a/lib/allpy_data/__init__.py	Thu Nov 18 00:01:07 2010 +0300
    17.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.3 @@ -1,3 +0,0 @@
    17.4 -""" 
    17.5 -Module that contains various data relevant to biological sequences.
    17.6 -"""
    18.1 --- a/lib/allpy_data/amino_acids.py	Thu Nov 18 00:01:07 2010 +0300
    18.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.3 @@ -1,8 +0,0 @@
    18.4 -
    18.5 -amino_acids = [
    18.6 -    'A', 'C', 'D', 'E', 'F', 
    18.7 -    'G', 'H', 'I', 'K', 'L', 
    18.8 -    'M', 'N', 'P', 'Q', 'R', 
    18.9 -    'S', 'T', 'V', 'W', 'Y',
   18.10 -]
   18.11 -
    19.1 --- a/lib/allpy_data/blossum62.py	Thu Nov 18 00:01:07 2010 +0300
    19.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.3 @@ -1,28 +0,0 @@
    19.4 -matrix = {
    19.5 -"A": {"A":  4, "R": -1, "N": -2, "D": -2, "C":  0, "Q": -1, "E": -1, "G":  0, "H": -2, "I": -1, "L": -1, "K": -1, "M": -1, "F": -2, "P": -1, "S":  1, "T":  0, "W": -3, "Y": -2, "V":  0, "B": -2, "Z": -1, "X":  0, "*": -4},
    19.6 -"R": {"A": -1, "R":  5, "N":  0, "D": -2, "C": -3, "Q":  1, "E":  0, "G": -2, "H":  0, "I": -3, "L": -2, "K":  2, "M": -1, "F": -3, "P": -2, "S": -1, "T": -1, "W": -3, "Y": -2, "V": -3, "B": -1, "Z":  0, "X": -1, "*": -4},
    19.7 -"N": {"A": -2, "R":  0, "N":  6, "D":  1, "C": -3, "Q":  0, "E":  0, "G":  0, "H":  1, "I": -3, "L": -3, "K":  0, "M": -2, "F": -3, "P": -2, "S":  1, "T":  0, "W": -4, "Y": -2, "V": -3, "B":  3, "Z":  0, "X": -1, "*": -4},
    19.8 -"D": {"A": -2, "R": -2, "N":  1, "D":  6, "C": -3, "Q":  0, "E":  2, "G": -1, "H": -1, "I": -3, "L": -4, "K": -1, "M": -3, "F": -3, "P": -1, "S":  0, "T": -1, "W": -4, "Y": -3, "V": -3, "B":  4, "Z":  1, "X": -1, "*": -4},
    19.9 -"C": {"A":  0, "R": -3, "N": -3, "D": -3, "C":  9, "Q": -3, "E": -4, "G": -3, "H": -3, "I": -1, "L": -1, "K": -3, "M": -1, "F": -2, "P": -3, "S": -1, "T": -1, "W": -2, "Y": -2, "V": -1, "B": -3, "Z": -3, "X": -2, "*": -4},
   19.10 -"Q": {"A": -1, "R":  1, "N":  0, "D":  0, "C": -3, "Q":  5, "E":  2, "G": -2, "H":  0, "I": -3, "L": -2, "K":  1, "M":  0, "F": -3, "P": -1, "S":  0, "T": -1, "W": -2, "Y": -1, "V": -2, "B":  0, "Z":  3, "X": -1, "*": -4},
   19.11 -"E": {"A": -1, "R":  0, "N":  0, "D":  2, "C": -4, "Q":  2, "E":  5, "G": -2, "H":  0, "I": -3, "L": -3, "K":  1, "M": -2, "F": -3, "P": -1, "S":  0, "T": -1, "W": -3, "Y": -2, "V": -2, "B":  1, "Z":  4, "X": -1, "*": -4},
   19.12 -"G": {"A":  0, "R": -2, "N":  0, "D": -1, "C": -3, "Q": -2, "E": -2, "G":  6, "H": -2, "I": -4, "L": -4, "K": -2, "M": -3, "F": -3, "P": -2, "S":  0, "T": -2, "W": -2, "Y": -3, "V": -3, "B": -1, "Z": -2, "X": -1, "*": -4},
   19.13 -"H": {"A": -2, "R":  0, "N":  1, "D": -1, "C": -3, "Q":  0, "E":  0, "G": -2, "H":  8, "I": -3, "L": -3, "K": -1, "M": -2, "F": -1, "P": -2, "S": -1, "T": -2, "W": -2, "Y":  2, "V": -3, "B":  0, "Z":  0, "X": -1, "*": -4},
   19.14 -"I": {"A": -1, "R": -3, "N": -3, "D": -3, "C": -1, "Q": -3, "E": -3, "G": -4, "H": -3, "I":  4, "L":  2, "K": -3, "M":  1, "F":  0, "P": -3, "S": -2, "T": -1, "W": -3, "Y": -1, "V":  3, "B": -3, "Z": -3, "X": -1, "*": -4},
   19.15 -"L": {"A": -1, "R": -2, "N": -3, "D": -4, "C": -1, "Q": -2, "E": -3, "G": -4, "H": -3, "I":  2, "L":  4, "K": -2, "M":  2, "F":  0, "P": -3, "S": -2, "T": -1, "W": -2, "Y": -1, "V":  1, "B": -4, "Z": -3, "X": -1, "*": -4},
   19.16 -"K": {"A": -1, "R":  2, "N":  0, "D": -1, "C": -3, "Q":  1, "E":  1, "G": -2, "H": -1, "I": -3, "L": -2, "K":  5, "M": -1, "F": -3, "P": -1, "S":  0, "T": -1, "W": -3, "Y": -2, "V": -2, "B":  0, "Z":  1, "X": -1, "*": -4},
   19.17 -"M": {"A": -1, "R": -1, "N": -2, "D": -3, "C": -1, "Q":  0, "E": -2, "G": -3, "H": -2, "I":  1, "L":  2, "K": -1, "M":  5, "F":  0, "P": -2, "S": -1, "T": -1, "W": -1, "Y": -1, "V":  1, "B": -3, "Z": -1, "X": -1, "*": -4},
   19.18 -"F": {"A": -2, "R": -3, "N": -3, "D": -3, "C": -2, "Q": -3, "E": -3, "G": -3, "H": -1, "I":  0, "L":  0, "K": -3, "M":  0, "F":  6, "P": -4, "S": -2, "T": -2, "W":  1, "Y":  3, "V": -1, "B": -3, "Z": -3, "X": -1, "*": -4},
   19.19 -"P": {"A": -1, "R": -2, "N": -2, "D": -1, "C": -3, "Q": -1, "E": -1, "G": -2, "H": -2, "I": -3, "L": -3, "K": -1, "M": -2, "F": -4, "P":  7, "S": -1, "T": -1, "W": -4, "Y": -3, "V": -2, "B": -2, "Z": -1, "X": -2, "*": -4},
   19.20 -"S": {"A":  1, "R": -1, "N":  1, "D":  0, "C": -1, "Q":  0, "E":  0, "G":  0, "H": -1, "I": -2, "L": -2, "K":  0, "M": -1, "F": -2, "P": -1, "S":  4, "T":  1, "W": -3, "Y": -2, "V": -2, "B":  0, "Z":  0, "X":  0, "*": -4},
   19.21 -"T": {"A":  0, "R": -1, "N":  0, "D": -1, "C": -1, "Q": -1, "E": -1, "G": -2, "H": -2, "I": -1, "L": -1, "K": -1, "M": -1, "F": -2, "P": -1, "S":  1, "T":  5, "W": -2, "Y": -2, "V":  0, "B": -1, "Z": -1, "X":  0, "*": -4},
   19.22 -"W": {"A": -3, "R": -3, "N": -4, "D": -4, "C": -2, "Q": -2, "E": -3, "G": -2, "H": -2, "I": -3, "L": -2, "K": -3, "M": -1, "F":  1, "P": -4, "S": -3, "T": -2, "W": 11, "Y":  2, "V": -3, "B": -4, "Z": -3, "X": -2, "*": -4},
   19.23 -"Y": {"A": -2, "R": -2, "N": -2, "D": -3, "C": -2, "Q": -1, "E": -2, "G": -3, "H":  2, "I": -1, "L": -1, "K": -2, "M": -1, "F":  3, "P": -3, "S": -2, "T": -2, "W":  2, "Y":  7, "V": -1, "B": -3, "Z": -2, "X": -1, "*": -4},
   19.24 -"V": {"A":  0, "R": -3, "N": -3, "D": -3, "C": -1, "Q": -2, "E": -2, "G": -3, "H": -3, "I":  3, "L":  1, "K": -2, "M":  1, "F": -1, "P": -2, "S": -2, "T":  0, "W": -3, "Y": -1, "V":  4, "B": -3, "Z": -2, "X": -1, "*": -4},
   19.25 -"B": {"A": -2, "R": -1, "N":  3, "D":  4, "C": -3, "Q":  0, "E":  1, "G": -1, "H":  0, "I": -3, "L": -4, "K":  0, "M": -3, "F": -3, "P": -2, "S":  0, "T": -1, "W": -4, "Y": -3, "V": -3, "B":  4, "Z":  0, "X": -1, "*": -4},
   19.26 -"Z": {"A": -1, "R":  0, "N":  0, "D":  1, "C": -3, "Q":  3, "E":  4, "G": -2, "H":  0, "I": -3, "L": -3, "K":  1, "M": -1, "F": -3, "P": -1, "S":  0, "T": -1, "W": -3, "Y": -2, "V": -2, "B":  0, "Z":  4, "X": -1, "*": -4},
   19.27 -"X": {"A":  0, "R": -1, "N": -1, "D": -1, "C": -2, "Q": -1, "E": -1, "G": -1, "H": -1, "I": -1, "L": -1, "K": -1, "M": -1, "F": -1, "P": -2, "S":  0, "T":  0, "W": -2, "Y": -1, "V": -1, "B": -1, "Z": -1, "X": -1, "*": -4},
   19.28 -"*": {"A": -4, "R": -4, "N": -4, "D": -4, "C": -4, "Q": -4, "E": -4, "G": -4, "H": -4, "I": -4, "L": -4, "K": -4, "M": -4, "F": -4, "P": -4, "S": -4, "T": -4, "W": -4, "Y": -4, "V": -4, "B": -4, "Z": -4, "X": -4, "*":  1}
   19.29 -}
   19.30 -
   19.31 -gaps = (-8, -4, -2, -1)
    20.1 --- a/lib/allpy_pdb.py	Thu Nov 18 00:01:07 2010 +0300
    20.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.3 @@ -1,67 +0,0 @@
    20.4 -
    20.5 -import re
    20.6 -from Bio.PDB import PDBParser
    20.7 -
    20.8 -""" Functions to get pdb information from fasta id
    20.9 -and to generate fasta id from pdb information
   20.10 -
   20.11 -pdb information: code, chain, model
   20.12 -
   20.13 -TODO: same for local pdb files
   20.14 -"""
   20.15 -
   20.16 -# for pdb-codes
   20.17 -re1 = re.compile(r"(^|[^a-z0-9])(?P<code>[0-9][0-9a-z]{3})([^a-z0-9](?P<chain>[0-9a-z ]?)(?P<model>[^a-z0-9]([0-9]{1,3}))?)?", re.I)
   20.18 -
   20.19 -#~ # for files
   20.20 -#~ re2 = re.compile(r"(^)([^^]+\.(ent|pdb))([^a-zA-Z0-9]([0-9A-Za-z ]?)([^a-zA-Z0-9]([0-9]{1,3}))?)?$")
   20.21 -
   20.22 -def std_id(pdb_id, pdb_chain, pdb_model=None):
   20.23 -    if pdb_model:
   20.24 -        return "%s_%s_%s" % \
   20.25 -        (pdb_id.lower().strip(), pdb_chain.upper().strip(), pdb_model)
   20.26 -    else:
   20.27 -        return "%s_%s" % \
   20.28 -        (pdb_id.lower().strip(), pdb_chain.upper().strip())
   20.29 -    
   20.30 -def pdb_id_parse(ID):
   20.31 -    match = re1.search(ID)
   20.32 -    if not match:
   20.33 -        return None
   20.34 -    d = match.groupdict()
   20.35 -    if 'chain' not in d or not d['chain']:
   20.36 -        d['chain'] = ' '
   20.37 -    if 'model' not in d or not d['model']:
   20.38 -        d['model'] = 0
   20.39 -    return d
   20.40 -    
   20.41 -    
   20.42 -def get_structure(file, name):
   20.43 -    return PDBParser().get_structure(name, file)
   20.44 -    
   20.45 -#~ def std_id_parse(ID):
   20.46 -    #~ """
   20.47 -    #~ Parse standart ID to pdb_code, chain and model
   20.48 -    #~ """
   20.49 -    #~ if '.ent' in ID.lower() or '.pdb' in ID.lower():
   20.50 -        #~ # it is file
   20.51 -        #~ parseO = self.re2.search(ID) # files
   20.52 -    #~ else:
   20.53 -        #~ parseO = self.re1.search(ID.lower()) # pdb codes
   20.54 -    #~ if not parseO:
   20.55 -        #~ return None
   20.56 -    #~ parse = parseO.groups()
   20.57 -    #~ if len(parse) < 2:
   20.58 -        #~ return None
   20.59 -    #~ code = parse[1]
   20.60 -    #~ chain = ''
   20.61 -    #~ model = None
   20.62 -    #~ if len(parse) >= 4:
   20.63 -        #~ chain = parse[3]
   20.64 -        #~ if chain:
   20.65 -            #~ chain = chain.upper()
   20.66 -        #~ if len(parse) >= 6:
   20.67 -            #~ if parse[5]:
   20.68 -                #~ model = parse[5]
   20.69 -    #~ return code, chain, model
   20.70 -    
    21.1 --- a/lib/block.py	Thu Nov 18 00:01:07 2010 +0300
    21.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.3 @@ -1,172 +0,0 @@
    21.4 -#!usr/bin/python
    21.5 -
    21.6 -import sys
    21.7 -
    21.8 -import alignment
    21.9 -import sequence
   21.10 -import monomer
   21.11 -import config
   21.12 -from graph import Graph
   21.13 -from Bio.PDB import Superimposer
   21.14 -from tempfile import NamedTemporaryFile
   21.15 -import os
   21.16 -from fasta import save_fasta
   21.17 -
   21.18 -class Block(object):
   21.19 -    """ Block of alignment
   21.20 -    
   21.21 -    Mandatory data:
   21.22 -    *   self.alignment -- alignment object, which the block belongs to
   21.23 -    *   self.sequences - set of sequence objects that contain monomers
   21.24 -        and/or gaps, that constitute the block
   21.25 -    *   self.positions -- list of positions of the alignment.body that
   21.26 -        are included in the block; position[i+1] is always to the right from position[i]
   21.27 -    
   21.28 -    Don't change self.sequences -- it may be a link to other block.sequences
   21.29 -    
   21.30 -    How to create a new block:
   21.31 -    >>> import alignment
   21.32 -    >>> import block
   21.33 -    >>> proj = alignment.Alignment(open("test.fasta"))
   21.34 -    >>> block1 = block.Block(proj)
   21.35 -    """
   21.36 -    
   21.37 -    def __init__(self, alignment, sequences=None, positions=None):
   21.38 -        """ Builds new block from alignment
   21.39 -        
   21.40 -        if sequences==None, all sequences are used
   21.41 -        if positions==None, all positions are used
   21.42 -        """
   21.43 -        if sequences == None:
   21.44 -            sequences = set(alignment.sequences) # copy
   21.45 -        if positions == None:
   21.46 -            positions = range(len(alignment))
   21.47 -        self.alignment = alignment
   21.48 -        self.sequences = sequences
   21.49 -        self.positions = positions
   21.50 -    
   21.51 -    def save_fasta(self, out_file, long_line=70, gap='-'):
   21.52 -        """ Saves alignment to given file in fasta-format 
   21.53 -        
   21.54 -        No changes in the names, descriptions or order of the sequences
   21.55 -        are made.
   21.56 -        """
   21.57 -        for sequence in self.sequences:
   21.58 -            alignment_monomers = self.alignment.body[sequence]
   21.59 -            block_monomers = [alignment_monomers[i] for i in self.positions]
   21.60 -            string = ''.join([m.type.code1 if m else '-' for m in block_monomers])
   21.61 -            save_fasta(out_file, string, sequence.name, sequence.description, long_line)
   21.62 -    
   21.63 -    def geometrical_cores(self, max_delta=config.delta, 
   21.64 -    timeout=config.timeout, minsize=config.minsize, 
   21.65 -    ac_new_atoms=config.ac_new_atoms,
   21.66 -    ac_count=config.ac_count):
   21.67 -        """ Returns length-sorted list of blocks, representing GCs
   21.68 -        
   21.69 -        max_delta -- threshold of distance spreading
   21.70 -        timeout -- Bron-Kerbosh timeout (then fast O(n ln n) algorithm)
   21.71 -        minsize -- min size of each core
   21.72 -        ac_new_atoms -- min part or new atoms in new alternative core
   21.73 -            current GC is compared with each of already selected GCs
   21.74 -            if difference is less then ac_new_atoms, current GC is skipped
   21.75 -            difference = part of new atoms in current core
   21.76 -        ac_count -- max number of cores (including main core)
   21.77 -            -1 means infinity
   21.78 -        If more than one pdb chain for some sequence provided, consider all of them
   21.79 -        cost is calculated as 1 / (delta + 1) 
   21.80 -            delta in [0, +inf) => cost in (0, 1]
   21.81 -        """
   21.82 -        nodes = self.positions
   21.83 -        lines = {}
   21.84 -        for i in self.positions:
   21.85 -            for j in self.positions:
   21.86 -                if i < j:
   21.87 -                    distances = []
   21.88 -                    for sequence in self.sequences:
   21.89 -                        for chain in sequence.pdb_chains:
   21.90 -                            m1 = self.alignment.body[sequence][i]
   21.91 -                            m2 = self.alignment.body[sequence][j]
   21.92 -                            if m1 and m2:
   21.93 -                                r1 = sequence.pdb_residues[chain][m1]
   21.94 -                                r2 = sequence.pdb_residues[chain][m2]
   21.95 -                                ca1 = r1['CA']
   21.96 -                                ca2 = r2['CA']
   21.97 -                                d = ca1 - ca2 # Bio.PDB feature
   21.98 -                                distances.append(d)
   21.99 -                    if len(distances) >= 2:
  21.100 -                        delta = max(distances) - min(distances)
  21.101 -                        if delta <= max_delta:
  21.102 -                            lines[Graph.line(i, j)] = 1.0 / (1.0 + max_delta)
  21.103 -        graph = Graph(nodes, lines)
  21.104 -        cliques = graph.cliques(timeout=timeout, minsize=minsize)
  21.105 -        GCs = []
  21.106 -        for clique in cliques:
  21.107 -            for GC in GCs:
  21.108 -                if len(clique - set(GC.positions)) < ac_new_atoms * len(clique):
  21.109 -                    break
  21.110 -            else:
  21.111 -                GCs.append(Block(self.alignment, self.sequences, clique))
  21.112 -                if ac_count != -1 and len(GCs) >= ac_count:
  21.113 -                    break
  21.114 -        return GCs
  21.115 -    
  21.116 -    def xstring(self, x='X', gap='-'):
  21.117 -        """ Returns string consisting of gap chars and chars x at self.positions
  21.118 -        
  21.119 -        Length of returning string = length of alignment
  21.120 -        """
  21.121 -        monomers = [False] * len(self.alignment)
  21.122 -        for i in self.positions:
  21.123 -            monomers[i] = True
  21.124 -        return ''.join([x if m else gap for m in monomers])
  21.125 -    
  21.126 -    def save_xstring(self, out_file, name, description='', x='X', gap='-', long_line=70):
  21.127 -        """ Save xstring and name in fasta format """
  21.128 -        save_fasta(out_file, self.xstring(x=x, gap=gap), name, description, long_line)
  21.129 -    
  21.130 -    def monomers(self, sequence):
  21.131 -        """ Iterates monomers of this sequence from this block """
  21.132 -        alignment_sequence = self.alignment.body[sequence]
  21.133 -        return (alignment_sequence[i] for i in self.positions)
  21.134 -    
  21.135 -    def ca_atoms(self, sequence, pdb_chain):
  21.136 -        """ Iterates Ca-atom of monomers of this sequence from this block  """
  21.137 -        return (sequence.pdb_residues[pdb_chain][monomer] for monomer in self.monomers())
  21.138 -    
  21.139 -    def sequences_chains(self):
  21.140 -        """ Iterates pairs (sequence, chain) """
  21.141 -        for sequence in self.alignment.sequences:
  21.142 -            if sequence in self.sequences:
  21.143 -                for chain in sequence.pdb_chains:
  21.144 -                    yield (sequence, chain)
  21.145 -    
  21.146 -    def superimpose(self):
  21.147 -        """ Superimpose all pdb_chains in this block """
  21.148 -        sequences_chains = list(self.sequences_chains())
  21.149 -        if len(sequences_chains) >= 1:
  21.150 -            sup = Superimposer()
  21.151 -            fixed_sequence, fixed_chain = sequences_chains.pop()
  21.152 -            fixed_atoms = self.ca_atoms(fixed_sequence, fixed_chain)
  21.153 -            for sequence, chain in sequences_chains:
  21.154 -                moving_atoms =  self.ca_atoms(sequence, chain)
  21.155 -                sup.set_atoms(fixed_atoms, moving_atoms)
  21.156 -                # Apply rotation/translation to the moving atoms
  21.157 -                sup.apply(moving_atoms)
  21.158 -    
  21.159 -    def pdb_save(self, out_file):
  21.160 -        """ Save all sequences 
  21.161 -        
  21.162 -        Returns {(sequence, chain): CHAIN}
  21.163 -        CHAIN is chain letter in new file
  21.164 -        """
  21.165 -        tmp_file = NamedTemporaryFile(delete=False)
  21.166 -        tmp_file.close()
  21.167 -        
  21.168 -        for sequence, chain in self.sequences_chains():
  21.169 -            sequence.pdb_save(tmp_file.name, chain)
  21.170 -            # TODO: read from tmp_file.name
  21.171 -            # change CHAIN
  21.172 -            # add to out_file
  21.173 -        
  21.174 -        os.unlink(NamedTemporaryFile)
  21.175 -    
    22.1 --- a/lib/config.py	Thu Nov 18 00:01:07 2010 +0300
    22.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.3 @@ -1,18 +0,0 @@
    22.4 -
    22.5 -delta = 2.0 # for geometrical core building
    22.6 -minsize = 20 # min size of returning cores
    22.7 -maxabsent = 0.15 # deprecated?
    22.8 -
    22.9 -# pdb download url (XXXX is pdb code place)
   22.10 -pdb_url = 'http://www.pdb.org/pdb/files/%s.pdb'
   22.11 -pdb_dir = '/tmp/%s.pdb'
   22.12 -timeout = 10 # time in sec. for BRON-KERBOSH algorithm
   22.13 -
   22.14 -
   22.15 -# min part or new atoms in new alternative core
   22.16 -ac_new_atoms = 0.5
   22.17 -
   22.18 -# max number of cores (including main core)
   22.19 -ac_count = 5
   22.20 -
   22.21 -
    23.1 --- a/lib/fasta.py	Thu Nov 18 00:01:07 2010 +0300
    23.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.3 @@ -1,21 +0,0 @@
    23.4 -def save_fasta(out_file, string, name, description='', long_line=70):
    23.5 -    """ Saves given string to out_file in fasta_format 
    23.6 -    
    23.7 -    Splits long lines to substrings of length=long_line
    23.8 -    To prevent this, set long_line=None 
    23.9 -    """
   23.10 -    out_file.write(">%(name)s %(description)s \n" % {'name':name, 'description':description})        
   23.11 -    if long_line:
   23.12 -        for i in range(0, len(string) // long_line + 1):
   23.13 -            out_file.write("%s \n" % string[i*long_line : i*long_line + long_line])
   23.14 -    else:
   23.15 -        out_file.write("%s \n" % string)
   23.16 -
   23.17 -def determine_long_line(in_file):
   23.18 -    """ Returns maximum sequence line length in fasta file """
   23.19 -    sequences = in_file.read().split('>')
   23.20 -    for sequence in sequences[1:]:
   23.21 -        lines = sequence.split('\n')[1:]
   23.22 -        if len(lines) >= 2:
   23.23 -            return len(lines[0].strip())
   23.24 -    return 70
    24.1 --- a/lib/graph.py	Thu Nov 18 00:01:07 2010 +0300
    24.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.3 @@ -1,288 +0,0 @@
    24.4 -# -*- coding: utf-8 -*- 
    24.5 -
    24.6 -from datetime import datetime, timedelta
    24.7 -from copy import copy
    24.8 -
    24.9 -class TimeoutError(Exception):
   24.10 -    pass
   24.11 -
   24.12 -
   24.13 -
   24.14 -class Graph(object):
   24.15 -    """ Undirected weighted graph
   24.16 -    
   24.17 -    Data:
   24.18 -    nodes -- set of elements
   24.19 -    lines -- {line: cost}. 
   24.20 -        line is frozenset([e1, e2])
   24.21 -        cost is float in (0, 1] or 1 (if all lines are equal)
   24.22 -        
   24.23 -    >>> g = Graph(set([1,2,3]), {frozenset([1,2]): 1})
   24.24 -    >>> g.fast_cliques()
   24.25 -    Fast algorithm started
   24.26 -    [frozenset([1, 2]), frozenset([3])]
   24.27 -    >>> g = Graph(set([1,2,3]), {frozenset([1,2]): 1, frozenset([1,1]): 1})
   24.28 -    >>> g.fast_cliques()
   24.29 -    Fast algorithm started
   24.30 -    [frozenset([1, 2]), frozenset([3])]
   24.31 -    >>> g = Graph(set([1,2,3,4]), {frozenset([1,2]): 0.98, frozenset([1,3]): 0.98,
   24.32 -    ... frozenset([2,3]): 0.1, frozenset([1,1]): 1})
   24.33 -    >>> g.fast_cliques()
   24.34 -    Fast algorithm started
   24.35 -    [frozenset([1, 2, 3]), frozenset([4])]
   24.36 -    >>> g.bron_kerbosh()
   24.37 -    Bron and Kerbosh algorithm started
   24.38 -    [frozenset([1, 2, 3]), frozenset([4])]
   24.39 -    >>> g.cliques()
   24.40 -    Bron and Kerbosh algorithm started
   24.41 -    [frozenset([1, 2, 3])]
   24.42 -    """
   24.43 -    
   24.44 -    def __init__(self, nodes=None, lines=None):
   24.45 -        if not nodes:
   24.46 -            nodes = set()
   24.47 -        if not lines:
   24.48 -            lines = dict()
   24.49 -        self.nodes = set(nodes) # copy
   24.50 -        self.lines = {}
   24.51 -        for line, cost in lines.items():
   24.52 -            if len(line) == 2 and line.issubset(self.nodes):
   24.53 -                self.lines[line] = cost
   24.54 -        
   24.55 -    @staticmethod
   24.56 -    def line(k1, k2):
   24.57 -        """ Construct object, representing line of graph """
   24.58 -        return frozenset([k1, k2])
   24.59 -    
   24.60 -    def bounded(self, k1, k2):
   24.61 -        """ Return if these two nodes of the graph are bounded with line """
   24.62 -        return k1 == k2 or Graph.line(k1, k2) in self.lines
   24.63 -    
   24.64 -    def count_one(self, node):
   24.65 -        """ Returns number of connections of this node """
   24.66 -        return len([node1 for node1 in self.nodes if self.bounded(node, node1)]) - 1
   24.67 -    
   24.68 -    def cost_one(self, node):
   24.69 -        """ Returns sum of costs of all connections of this node """
   24.70 -        return sum([self.lines.get(Graph.line(node, node1), 0) 
   24.71 -        for node1 in self.nodes if node != node1])
   24.72 -    
   24.73 -    def count_all(self):
   24.74 -        """ Returns {node: number of connections of this node} """
   24.75 -        c = dict([(node, 0) for node in self.nodes])
   24.76 -        for line in self.lines:
   24.77 -            for node in line:
   24.78 -                c[node] += 1
   24.79 -        return c
   24.80 -    
   24.81 -    
   24.82 -    def drop_node(self, node):
   24.83 -        """ Remove node and all involved lines """
   24.84 -        for node1 in self.nodes:
   24.85 -            self.lines.pop(Graph.line(node, node1), None)
   24.86 -        self.nodes.discard(node)
   24.87 -    
   24.88 -    def add_node(self, node, parent_graph):
   24.89 -        """ Add node and corresponding lines from parent_graph
   24.90 -        
   24.91 -        Added lines should be contained in self graph
   24.92 -        (takes care of hanging lines)
   24.93 -        """
   24.94 -        self.nodes.add(node)
   24.95 -        for node1 in self.nodes:
   24.96 -            line = Graph.line(node, node1)
   24.97 -            if line in parent_graph.lines:
   24.98 -                self.lines[line] = parent_graph.lines[line]
   24.99 -    
  24.100 -    def drop_nodes(self, nodes):
  24.101 -        """ Run drop_node for each of given nodes
  24.102 -        
  24.103 -        Returns if nodes was not empty (ugly beauty)
  24.104 -        """
  24.105 -        for node in nodes:
  24.106 -            self.drop_node(node)
  24.107 -        return bool(nodes)
  24.108 -    
  24.109 -    def drop_if_count(self, minsize):
  24.110 -        """ Run drop_node for each node, that has less than minsize lines """
  24.111 -        while True:
  24.112 -            if not self.drop_nodes([node for (node, count) 
  24.113 -            in self.count_all().items() if count < minsize]):
  24.114 -                break
  24.115 -     
  24.116 -    def bron_kerbosh(self, timeout=-1, minsize=1):
  24.117 -        """ Bron and Kerboch algorithm implementation
  24.118 -        
  24.119 -        returns list of cliques
  24.120 -        clique is frozenset
  24.121 -        if timeout=-1, it means infinity
  24.122 -        if timeout has happened, raises TimeoutError
  24.123 -        
  24.124 -        lava flow
  24.125 -        """
  24.126 -        print 'Bron and Kerbosh algorithm started'
  24.127 -        cliques = []
  24.128 -        
  24.129 -        depth = 0
  24.130 -        list_candidates = [copy(self.nodes)]
  24.131 -        list_used = [set()]
  24.132 -        compsub = []
  24.133 -        
  24.134 -        start_time = datetime.now()
  24.135 -        timeout_timedelta = timedelta(timeout)
  24.136 -        
  24.137 -        while True: # ПОКА...
  24.138 -            if depth == -1:
  24.139 -                break  # ВСЕ! Все рекурсии (итерации) пройдены
  24.140 -            candidates = copy(list_candidates[depth])
  24.141 -            used = copy(list_used[depth])       
  24.142 -            if not candidates: # ПОКА candidates НЕ пусто
  24.143 -                depth -= 1
  24.144 -                if compsub:
  24.145 -                    compsub.pop()                
  24.146 -                continue
  24.147 -            
  24.148 -            # И used НЕ содержит вершины, СОЕДИНЕННОЙ СО ВСЕМИ вершинами из candidates
  24.149 -            # (все из used НЕ соединены хотя бы с 1 из candidates)
  24.150 -            used_candidates = False
  24.151 -        
  24.152 -            for used1 in used:
  24.153 -                for candidates1 in candidates:
  24.154 -                    if not self.bounded(used1, candidates1):
  24.155 -                        break
  24.156 -                else:
  24.157 -                    used_candidates = True             
  24.158 -
  24.159 -            if used_candidates:
  24.160 -                depth -= 1
  24.161 -
  24.162 -                if compsub:
  24.163 -                    compsub.pop()
  24.164 -                continue
  24.165 -            
  24.166 -            # Выбираем вершину v из candidates и добавляем ее в compsub
  24.167 -            v = candidates.pop()
  24.168 -            candidates.add(v)
  24.169 -            compsub.append(v)
  24.170 -            # Формируем new_candidates и new_used, удаляя из candidates и used вершины, НЕ соединенные с v
  24.171 -            # (то есть, оставляя только соединенные с v)
  24.172 -            new_candidates = set()
  24.173 -            for candidates1 in candidates:
  24.174 -                if self.bounded(candidates1, v) and candidates1 != v:
  24.175 -                    new_candidates.add(candidates1)
  24.176 -
  24.177 -            new_used = set()
  24.178 -            for used1 in used:
  24.179 -                if self.bounded(used1, v) and used1 != v:
  24.180 -                    new_used.add(used1)
  24.181 -            
  24.182 -            # Удаляем v из candidates и помещаем в used
  24.183 -            list_candidates[depth].remove(v)    
  24.184 -            list_used[depth].add(v)
  24.185 -            # ЕСЛИ new_candidates и new_used пусты
  24.186 -            if not new_candidates and not new_used:
  24.187 -                # compsub ? клика
  24.188 -                if len(compsub) >= minsize:
  24.189 -                    cliques.append(frozenset(compsub))
  24.190 -            else:
  24.191 -                # ИНАЧЕ рекурсивно вызываем bron_kerbosh(new_candidates, new_used)
  24.192 -                depth += 1
  24.193 -
  24.194 -                # TIMEOUT check start
  24.195 -                if timeout != -1:
  24.196 -                    if datetime.now() - start_time > timeout_timedelta:
  24.197 -                        raise TimeoutError
  24.198 -                # TIMEOUT check end
  24.199 -                
  24.200 -                if depth >= len(list_candidates):
  24.201 -                    list_candidates.append(set())
  24.202 -                    list_used.append(set())
  24.203 -
  24.204 -                list_candidates[depth] = copy(new_candidates)
  24.205 -                list_used[depth] = copy(new_used)
  24.206 -                
  24.207 -                continue
  24.208 -            
  24.209 -            # Удаляем v из compsub
  24.210 -            if compsub:
  24.211 -                compsub.pop()
  24.212 -                
  24.213 -        return cliques
  24.214 -
  24.215 -    
  24.216 -    def fast_cliques(self, minsize=1):
  24.217 -        """ returns list of cliques
  24.218 -        
  24.219 -        clique is frozenset
  24.220 -        """
  24.221 -        print 'Fast algorithm started'
  24.222 -        cliques = []
  24.223 -        
  24.224 -        while True:
  24.225 -            graph = Graph(self.nodes, self.lines)
  24.226 -            for clique in cliques:
  24.227 -                graph.drop_nodes(clique)
  24.228 -            if not graph.nodes:
  24.229 -                break
  24.230 -            
  24.231 -            while True: 
  24.232 -                # drop nodes, while its is possible
  24.233 -                if len(graph.nodes) == 1:
  24.234 -                    break
  24.235 -                c = graph.count_all()
  24.236 -                min_count = min(c.values())
  24.237 -                bad_nodes = [node for (node, count) in c.items() if count == min_count]
  24.238 -                if len(bad_nodes) == len(graph.nodes) and min_count != 0:
  24.239 -                    break
  24.240 -                
  24.241 -                costs = dict([(node, graph.cost_one(node)) for node in bad_nodes])
  24.242 -                min_cost = min(costs.values())
  24.243 -                for node, cost in costs.items():
  24.244 -                    if cost == min_cost:
  24.245 -                        graph.drop_node(node)
  24.246 -                        break
  24.247 -            
  24.248 -            while True:
  24.249 -                # add nodes, while its is possible
  24.250 -                candidats = {}
  24.251 -                for node in self.nodes:
  24.252 -                    c = len([i for i in graph.nodes if self.bounded(node, i)])
  24.253 -                    if c == len(self.nodes):
  24.254 -                        graph1 = Graph(graph.nodes, graph.lines)
  24.255 -                        graph1.add_node(node, self)
  24.256 -                        candidats[node] = graph1.cost_one(node)
  24.257 -                if not candidats:
  24.258 -                    break
  24.259 -                
  24.260 -                max_cost = max(candidats.values())
  24.261 -                node = [node for (node, cost) in candidats.items() if cost == max_cost][0]
  24.262 -                graph.add_node(node, self)
  24.263 -                
  24.264 -            cliques.append(frozenset(graph.nodes))
  24.265 -            
  24.266 -        return cliques
  24.267 -        
  24.268 -    
  24.269 -    def cliques(self, timeout=-1, minsize=1):
  24.270 -        """ returns length-sorted list of cliques
  24.271 -        
  24.272 -        clique is frozenset
  24.273 -        
  24.274 -        can change self!
  24.275 -        
  24.276 -        try to execute bron_kerbosh
  24.277 -        if it raises TimeoutError, executes fast_cliques
  24.278 -        """
  24.279 -        
  24.280 -        self.drop_if_count(minsize)
  24.281 -        
  24.282 -        try:
  24.283 -            cliques = self.bron_kerbosh(timeout, minsize)
  24.284 -            cliques.sort(key=lambda clique: len(clique), reverse=True)
  24.285 -        except TimeoutError:
  24.286 -            cliques = self.fast_cliques(minsize)
  24.287 -        return cliques
  24.288 -
  24.289 -if __name__ == "__main__":
  24.290 -    import doctest
  24.291 -    doctest.testmod()
    25.1 --- a/lib/markup.py	Thu Nov 18 00:01:07 2010 +0300
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,13 +0,0 @@
    25.4 -from alignment import Alignment
    25.5 -
    25.6 -"""
    25.7 -Markup class: alignment + list of blocks
    25.8 -
    25.9 -Mandatory data:
   25.10 -    * blocks -- list of blocks
   25.11 -"""
   25.12 -
   25.13 -class Markup(Alignment):
   25.14 -    def from_fasta():
   25.15 -
   25.16 -    def save_fasta():
    26.1 --- a/lib/monomer.py	Thu Nov 18 00:01:07 2010 +0300
    26.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.3 @@ -1,105 +0,0 @@
    26.4 -#!/usr/bin/python
    26.5 -
    26.6 -from allpy_data.AAdict import AAdict
    26.7 -import Bio.PDB
    26.8 -
    26.9 -index_code3 = {}
   26.10 -index_code1_protein = {}
   26.11 -index_code1_nucleotide = {}
   26.12 -index_name = {}
   26.13 -
   26.14 -
   26.15 -class MonomerType(object):
   26.16 -    """ Monomer type
   26.17 -    
   26.18 -    name -- string like "Valine" 
   26.19 -    code1 -- one-letter code (in upper case)
   26.20 -    code3 -- three-letter code (in upper case)
   26.21 -    is_modified -- True of False
   26.22 -    """
   26.23 -    def __init__(self, name, code1, code3, is_modified=False):
   26.24 -        self.name = name.capitalize()
   26.25 -        self.code1 = code1.upper()
   26.26 -        self.code3 = code3.upper()
   26.27 -        self.is_modified = bool(is_modified) # ugly
   26.28 -        
   26.29 -        index_name[self.name] = self
   26.30 -        index_code3[self.code3] = self
   26.31 -    
   26.32 -    @staticmethod
   26.33 -    def from_code3(code3):
   26.34 -        return index_code3[code3.upper()]
   26.35 -    @staticmethod
   26.36 -    def from_name(name):
   26.37 -        return index_name[name.capitalize()]
   26.38 -      
   26.39 -    @staticmethod
   26.40 -    def from_pdb_residue(pdb_residue):
   26.41 -        return MonomerType.from_code3(pdb_residue.get_resname())
   26.42 -        
   26.43 -    # TO DISCUSS
   26.44 -    def __eq__(self, other):
   26.45 -        return self.code1 == other.code1
   26.46 -
   26.47 -    def __ne__(self, other):
   26.48 -        return not (self == other)
   26.49 -
   26.50 -
   26.51 -class Monomer(object):
   26.52 -    """ Monomer 
   26.53 -    
   26.54 -    type -- link to MonomerType object
   26.55 -    """
   26.56 -    def __init__(self, monomer_type):
   26.57 -        self.type = monomer_type
   26.58 -        
   26.59 -    def __eq__(self, other):
   26.60 -        return self.type == other.type
   26.61 -
   26.62 -    def __ne__(self, other):
   26.63 -        return not (self == other)
   26.64 -
   26.65 -class AminoAcidType(MonomerType):
   26.66 -    def __init__(self, name, code1, code3, is_modified=False):
   26.67 -        MonomerType.__init__(self, name, code1, code3, is_modified)
   26.68 -        if not is_modified:
   26.69 -            index_code1_protein[self.code1] = self
   26.70 -
   26.71 -    @staticmethod
   26.72 -    def from_code1(code1):
   26.73 -        return index_code1_protein[code1.upper()]
   26.74 -    def instance(self):
   26.75 -        """ Returns new AminoAcid object of this type """
   26.76 -        return AminoAcid(self)
   26.77 -
   26.78 -class DNAType(MonomerType):
   26.79 -    def __init__(self, name, code1, code3, is_modified=False):
   26.80 -        MonomerType.__init__(self, name, code1, code3, is_modified)
   26.81 -        if not is_modified:
   26.82 -	    index_code1_nucleotide[self.code1] = self
   26.83 -
   26.84 -    @staticmethod
   26.85 -    def from_code1(code1):
   26.86 -        return index_code1_nucleotide[code1.upper()]
   26.87 -    def instance(self):
   26.88 -        """ Returns new AminoAcid object of this type """
   26.89 -        return DNA(self)
   26.90 -
   26.91 -class AminoAcid(Monomer):
   26.92 -    """  Amino acid """
   26.93 -    pass
   26.94 -
   26.95 -class DNA(Monomer):
   26.96 -    """ Deoxyribonucleic acid  """
   26.97 -    pass
   26.98 -
   26.99 -# prepare all aminoacids
  26.100 -
  26.101 -for code3, data in AAdict.items():
  26.102 -    code1, m_type, is_modified, none, name = data
  26.103 -    if m_type == 'p':
  26.104 -        AminoAcidType(name, code1, code3, is_modified)
  26.105 -    if m_type == 'd':
  26.106 -        DNAType(name, code1, code3, is_modified)
  26.107 -del code3, data, code1, m_type, is_modified, none, name
  26.108 -
    27.1 --- a/lib/sequence.py	Thu Nov 18 00:01:07 2010 +0300
    27.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.3 @@ -1,214 +0,0 @@
    27.4 -#!/usr/bin/python
    27.5 -# -*- coding: utf-8 -*- 
    27.6 -
    27.7 -from monomer import AminoAcidType
    27.8 -from Bio.PDB import CaPPBuilder, PDBIO
    27.9 -from Bio.PDB.DSSP import make_dssp_dict
   27.10 -from allpy_pdb import std_id, pdb_id_parse, get_structure
   27.11 -import alignment
   27.12 -import sys
   27.13 -import config
   27.14 -import os.path
   27.15 -import urllib2
   27.16 -from tempfile import NamedTemporaryFile
   27.17 -import os
   27.18 -
   27.19 -
   27.20 -class Sequence(object):
   27.21 -    """ Sequence of Monomers
   27.22 -    
   27.23 -    Mandatory data:
   27.24 -    *   name -- str with the name of sequence
   27.25 -    *   description -- str with description of the sequence
   27.26 -    *   monomers -- list of monomer objects (aminoacids or nucleotides)
   27.27 -    
   27.28 -    Optional (may be empty):
   27.29 -    *   pdb_chains -- list of Bio.PDB.Chain's
   27.30 -    *   pdb_files -- dictionary like {Bio.PDB.Chain: file_obj}
   27.31 -    
   27.32 -    *   pdb_residues -- dictionary like {Bio.PDB.Chain: {Monomer: Bio.PDB.Residue}}
   27.33 -    *   pdb_secstr -- dictionary like {Bio.PDB.Chain: {Monomer: 'Secondary structure'}}
   27.34 -            Code   Secondary structure
   27.35 -            H      alpha-helix
   27.36 -            B      Isolated beta-bridge residue
   27.37 -            E      Strand
   27.38 -            G      3-10 helix
   27.39 -            I      pi-helix
   27.40 -            T      Turn
   27.41 -            S      Bend
   27.42 -            -      Other
   27.43 -    
   27.44 -    
   27.45 -    ?TODO: global pdb_structures 
   27.46 -    """
   27.47 -    def __init__(self, monomers=None, name='', description=""):
   27.48 -        if not monomers:
   27.49 -            monomers = []
   27.50 -        self.name = name
   27.51 -        self.description = description
   27.52 -        self.monomers = monomers 
   27.53 -        self.pdb_chains = []
   27.54 -        self.pdb_files = {}
   27.55 -        self.pdb_residues = {}
   27.56 -        self.pdb_secstr = {}
   27.57 -        
   27.58 -    def __len__(self):
   27.59 -        return len(self.monomers)
   27.60 -    
   27.61 -    def __str__(self):
   27.62 -        """ Returns sequence in one-letter code """
   27.63 -        return ''.join([monomer.type.code1 for monomer in self.monomers])
   27.64 -        
   27.65 -    def __eq__(self, other):
   27.66 -        """ Returns if all corresponding monomers of this sequences are equal
   27.67 -        
   27.68 -        If lengths of sequences are not equal, returns False
   27.69 -        """ 
   27.70 -        return len(self) == len(other) and \
   27.71 -        all([a==b for a, b in zip(self.monomers, other.monomers)])
   27.72 -    
   27.73 -    def __ne__(self, other):
   27.74 -        return not (self == other)
   27.75 -    
   27.76 -    def pdb_chain_add(self, pdb_file, pdb_id, pdb_chain, pdb_model=0):
   27.77 -        """ Reads Pdb chain from file 
   27.78 -        
   27.79 -        and align each Monomer with PDB.Residue (TODO)
   27.80 -        """
   27.81 -        name = std_id(pdb_id, pdb_chain, pdb_model)
   27.82 -        structure = get_structure(pdb_file, name)
   27.83 -        chain = structure[pdb_model][pdb_chain]
   27.84 -        self.pdb_chains.append(chain)
   27.85 -        self.pdb_residues[chain] = {}
   27.86 -        self.pdb_secstr[chain] = {}
   27.87 -        pdb_sequence = Sequence.from_pdb_chain(chain)
   27.88 -        a = alignment.Alignment.from_sequences(self, pdb_sequence)
   27.89 -        a.muscle_align()
   27.90 -        for monomer, pdb_monomer in a.column(sequence=pdb_sequence, original=self):
   27.91 -            if pdb_sequence.pdb_has(chain, pdb_monomer):
   27.92 -                residue = pdb_sequence.pdb_residues[chain][pdb_monomer]
   27.93 -                self.pdb_residues[chain][monomer] = residue
   27.94 -        self.pdb_files[chain] = pdb_file
   27.95 -    
   27.96 -    def pdb_unload(self):
   27.97 -        """ Delete all pdb-connected links """
   27.98 -        #~ gc.get_referrers(self.pdb_chains[0])
   27.99 -        self.pdb_chains = []
  27.100 -        self.pdb_residues = {}
  27.101 -        self.pdb_secstr = {} # FIXME
  27.102 -        self.pdb_files = {} # FIXME
  27.103 -    
  27.104 -    @staticmethod
  27.105 -    def from_str(fasta_str, name='', description='', monomer_kind=AminoAcidType):
  27.106 -        """ Import data from one-letter code
  27.107 -        
  27.108 -        monomer_kind is class, inherited from MonomerType
  27.109 -        """
  27.110 -        monomers = [monomer_kind.from_code1(aa).instance() for aa in fasta_str]
  27.111 -        return Sequence(monomers, name, description)
  27.112 -
  27.113 -    @staticmethod
  27.114 -    def from_pdb_chain(chain):
  27.115 -        """ Returns Sequence with Monomers with link to Bio.PDB.Residue
  27.116 -        
  27.117 -        chain is Bio.PDB.Chain
  27.118 -        """
  27.119 -        cappbuilder = CaPPBuilder()
  27.120 -        peptides = cappbuilder.build_peptides(chain)
  27.121 -        sequence = Sequence()
  27.122 -        sequence.pdb_chains = [chain]
  27.123 -        sequence.pdb_residues[chain] = {}
  27.124 -        sequence.pdb_secstr[chain] = {}
  27.125 -        for peptide in peptides:
  27.126 -            for ca_atom in peptide.get_ca_list():
  27.127 -                residue = ca_atom.get_parent()
  27.128 -                monomer = AminoAcidType.from_pdb_residue(residue).instance()
  27.129 -                sequence.pdb_residues[chain][monomer] = residue
  27.130 -                sequence.monomers.append(monomer)
  27.131 -        return sequence
  27.132 -    
  27.133 -    def pdb_auto_add(self, conformity_info=None, pdb_directory='./tmp'):
  27.134 -        """ Adds pdb information to each monomer
  27.135 -        
  27.136 -        Returns if information has been successfully added
  27.137 -        TODO: conformity_file
  27.138 -        
  27.139 -        id-format lava flow
  27.140 -        """
  27.141 -        if not conformity_info:
  27.142 -            path = os.path.join(pdb_directory, self.name)
  27.143 -            if os.path.exists(path) and os.path.getsize(path):
  27.144 -                match = pdb_id_parse(self.name)
  27.145 -                self.pdb_chain_add(open(path), match['code'], 
  27.146 -                match['chain'], match['model'])
  27.147 -            else:
  27.148 -                match = pdb_id_parse(self.name)
  27.149 -                if match:
  27.150 -                    code = match['code']
  27.151 -                    pdb_filename = config.pdb_dir % code
  27.152 -                    if not os.path.exists(pdb_filename) or not os.path.getsize(pdb_filename):
  27.153 -                        url = config.pdb_url % code
  27.154 -                        print "Download %s" % url
  27.155 -                        pdb_file = open(pdb_filename, 'w')
  27.156 -                        data = urllib2.urlopen(url).read()
  27.157 -                        pdb_file.write(data)
  27.158 -                        pdb_file.close()
  27.159 -                        print "Save %s" % pdb_filename
  27.160 -                    pdb_file = open(pdb_filename)
  27.161 -                    self.pdb_chain_add(pdb_file, code, match['chain'], match['model'])
  27.162 -        
  27.163 -    def pdb_save(self, out_filename, pdb_chain):
  27.164 -        """ Saves pdb_chain to out_file """
  27.165 -        class GlySelect(Select):
  27.166 -            def accept_chain(self, chain):
  27.167 -                if chain == pdb_chain:
  27.168 -                    return 1
  27.169 -                else:
  27.170 -                    return 0
  27.171 -        io = PDBIO()
  27.172 -        structure = chain.get_parent()
  27.173 -        io.set_structure(structure)
  27.174 -        io.save(out_filename, GlySelect())
  27.175 -        
  27.176 -    
  27.177 -    def pdb_add_sec_str(self, pdb_chain):
  27.178 -        """ Add secondary structure data """
  27.179 -        tmp_file = NamedTemporaryFile(delete=False)
  27.180 -        tmp_file.close()
  27.181 -        pdb_file = self.pdb_files[pdb_chain].name
  27.182 -        os.system("dsspcmbi %(pdb)s %(tmp)s" % {'pdb': pdb_file, 'tmp': tmp_file.name})
  27.183 -        dssp, keys = make_dssp_dict(tmp_file.name)
  27.184 -        for monomer in self.monomers:
  27.185 -            if self.pdb_has(pdb_chain, monomer):
  27.186 -                residue = self.pdb_residues[pdb_chain][monomer]
  27.187 -                try:
  27.188 -                    d = dssp[(pdb_chain.get_id(), residue.get_id())]
  27.189 -                    self.pdb_secstr[pdb_chain][monomer] = d[1]
  27.190 -                except:
  27.191 -                    print "No dssp information about %s at %s" % (monomer, pdb_chain)
  27.192 -        os.unlink(tmp_file.name)
  27.193 -    
  27.194 -    def pdb_has(self, chain, monomer):
  27.195 -        return chain in self.pdb_residues and monomer in self.pdb_residues[chain]
  27.196 -    
  27.197 -    def secstr_has(self, chain, monomer):
  27.198 -        return chain in self.pdb_secstr and monomer in self.pdb_secstr[chain]
  27.199 -
  27.200 -    @staticmethod
  27.201 -    def file_slice(file, n_from, n_to, fasta_name='', name='', description='', monomer_kind=AminoAcidType):
  27.202 -        """ Build and return sequence, consisting of part of sequence from file 
  27.203 -
  27.204 -        Does not control gaps
  27.205 -        """
  27.206 -        inside = False
  27.207 -        number_used = 0
  27.208 -        s = ''
  27.209 -        for line in file:
  27.210 -            line = line.split()
  27.211 -            if not inside:
  27.212 -                if line.startswith('>%s' % fasta_name):
  27.213 -                    inside = True
  27.214 -            else:
  27.215 -                n = len(line)
  27.216 -                s += line[(n_from - number_user):(n_to - number_user)]
  27.217 -        return Sequence.from_str(s, name, description, monomer_kind)
    28.1 --- a/repeats/repeats.py	Thu Nov 18 00:01:07 2010 +0300
    28.2 +++ b/repeats/repeats.py	Thu Nov 18 19:38:05 2010 +0300
    28.3 @@ -5,7 +5,7 @@
    28.4      input_id pos_from pos_to
    28.5  """
    28.6  
    28.7 -from allpy.lib import config, alignment, block, sequence
    28.8 +from allpy import config, alignment, block, sequence
    28.9  Sequence = sequence.Sequence
   28.10  Block = block.Block
   28.11  Alignment = alignment.Alignment
    29.1 --- a/sec_str/sec_str.py	Thu Nov 18 00:01:07 2010 +0300
    29.2 +++ b/sec_str/sec_str.py	Thu Nov 18 19:38:05 2010 +0300
    29.3 @@ -3,12 +3,12 @@
    29.4  
    29.5  """
    29.6  
    29.7 -from allpy.lib import config, alignment, block
    29.8 +from allpy import config, alignment, block
    29.9  Block = block.Block
   29.10  Alignment = alignment.Alignment
   29.11  import argparse
   29.12  import sys
   29.13 -from allpy.lib.fasta import determine_long_line
   29.14 +from allpy.fasta import determine_long_line
   29.15  
   29.16  r = argparse.FileType('r')
   29.17  w = argparse.FileType('w')
    30.1 --- a/test/test.py	Thu Nov 18 00:01:07 2010 +0300
    30.2 +++ b/test/test.py	Thu Nov 18 19:38:05 2010 +0300
    30.3 @@ -1,7 +1,7 @@
    30.4  import sys
    30.5  
    30.6 -from allpy.lib.alignment import Alignment
    30.7 -from allpy.lib.block import Block
    30.8 +from allpy.alignment import Alignment
    30.9 +from allpy.block import Block
   30.10  
   30.11  p = Alignment(open('test.fasta'))
   30.12  print "alignment length: %i" % len(p)