Coverage Report

Created: 2025-12-14 06:46

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/openbabel/src/formats/fastaformat.cpp
Line
Count
Source
1
/**********************************************************************
2
Copyright (C) 2006 by Sangwoo Shim
3
4
Read sequence functions, helix generation and completed IUPAC coverage.
5
Copyright (C) Scarlet Line 2007-9
6
7
This file is part of the Open Babel project.
8
For more information, see <http://openbabel.org/>
9
10
This program is free software; you can redistribute it and/or modify
11
it under the terms of the GNU General Public License as published by
12
the Free Software Foundation version 2 of the License.
13
14
This program is distributed in the hope that it will be useful,
15
but WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
GNU General Public License for more details.
18
***********************************************************************/
19
20
#include <openbabel/babelconfig.h>
21
#include <openbabel/obmolecformat.h>
22
#include <openbabel/mol.h>
23
#include <openbabel/atom.h>
24
#include <openbabel/elements.h>
25
#include <openbabel/obiter.h>
26
#include <openbabel/bond.h>
27
28
#include <map>
29
#include <string>
30
#include <cstdlib>
31
32
using namespace std;
33
namespace OpenBabel
34
{
35
36
  class FASTAFormat : public OBMoleculeFormat
37
  {
38
  public:
39
    //Register this format type ID in the constructor
40
6
    FASTAFormat() {
41
6
      OBConversion::RegisterFormat("fasta", this, "chemical/x-fasta");
42
6
      OBConversion::RegisterFormat("fa", this);
43
6
      OBConversion::RegisterFormat("fsa", this);
44
45
6
      OBConversion::RegisterOptionParam("s", this);
46
6
      OBConversion::RegisterOptionParam("b", this);
47
6
      OBConversion::RegisterOptionParam("n", this);
48
6
      OBConversion::RegisterOptionParam("1", this);
49
6
      OBConversion::RegisterOptionParam("t", nullptr, 1, OBConversion::INOPTIONS);
50
6
    }
51
52
    const char* Description() override  // required
53
0
    {
54
0
      return
55
0
        "FASTA format\n"
56
0
        "A file format used to exchange information between genetic sequence databases\n\n"
57
0
        "Read Options e.g. -as\n"
58
0
        "  1  Output single-stranded DNA\n"
59
0
        "  t <turns>  Use the specified number of base pairs per turn (e.g., 10)\n"
60
0
        "  s  Output single bonds only\n"
61
0
        "  b  Disable bonding entirely\n\n"
62
0
        "Write Options e.g. -xn \n"
63
0
        "  n  Omit title and comments\n";
64
0
    }
65
66
0
    const char* SpecificationURL() override {
67
0
      return "http://www.ebi.ac.uk/help/formats_frame.html";
68
0
    }
69
    // Additionally http://www.ncbi.nlm.nih.gov/blast/fasta.shtml
70
71
    const char* GetMIMEType() override
72
0
    { return "chemical/x-fasta"; }
73
74
135
    unsigned int Flags() override {
75
135
      return READONEONLY | WRITEONEONLY;
76
135
    }
77
78
    bool ReadMolecule(OBBase* pOb, OBConversion* pConv) override;
79
    bool WriteMolecule(OBBase* pOb, OBConversion* pConv) override;
80
81
    enum SequenceType
82
      {
83
        UnknownSequence,
84
        ProteinSequence,
85
        DNASequence,
86
        RNASequence,
87
        MAXSequence
88
      };
89
  private:
90
    char conv_3to1(const string & three) const;
91
  };
92
93
  FASTAFormat theFASTAFormat;
94
95
  bool FASTAFormat::WriteMolecule(OBBase* pOb, OBConversion* pConv)
96
8
  {
97
8
    string seq;
98
8
    OBMol* pmol;
99
    //   OBResidue *res;
100
101
8
    pmol = dynamic_cast<OBMol*>(pOb);
102
8
    if (pmol == nullptr)
103
0
      return false;
104
8
    ostream &ofs = *pConv->GetOutStream();
105
106
8
    int seq_count = 0;
107
22.3k
    FOR_RESIDUES_OF_MOL(res,pmol) {
108
22.3k
      if (res->GetAtoms().size() < 3)
109
30
        continue;
110
22.3k
      seq.append(1, conv_3to1(res->GetName()));
111
22.3k
      ++ seq_count;
112
22.3k
      if (seq_count >= 60) {
113
371
        seq_count = 0;
114
371
        seq.append("\n");
115
371
      }
116
22.3k
    }
117
8
    if(!pConv->IsOption("n")) {
118
8
      if (strlen(pmol->GetTitle()) > 0)
119
0
        ofs << ">" << pmol->GetTitle();
120
8
      else
121
8
        ofs << ">Unknown molecule";
122
8
      ofs << " " << pmol->NumResidues() << " bp";
123
8
      ofs << "; generated with OpenBabel " << BABEL_VERSION << endl;
124
8
    }
125
8
    ofs << seq << endl;
126
8
    return true;
127
8
  }
128
  struct residue_lookup_record
129
  {
130
    char TLA[4];
131
    char code;
132
  };
133
  residue_lookup_record residue_lookup_table[] =
134
    {
135
      { "ALA", 'A' }, // Alanine
136
      { "ARG", 'R' }, // Arginine
137
      { "ASN", 'N' }, // Asparagine
138
      { "ASP", 'D' }, // Aspartic acid
139
      { "CYS", 'C' }, // Cysteine
140
      { "GLN", 'Q' }, // Glutamine
141
      { "GLU", 'E' }, // Glutamic acid
142
      { "GLY", 'G' }, // Glycine
143
      { "HIS", 'H' }, // Histidine
144
      { "ILE", 'I' }, // Isoleucine
145
      { "LEU", 'L' }, // Leucine
146
      { "LYS", 'K' }, // Lysine
147
      { "MET", 'M' }, // Methionine
148
      { "PHE", 'F' }, // Phenylalanine
149
      { "PRO", 'P' }, // Proline
150
      { "SER", 'S' }, // Serine
151
      { "THR", 'T' }, // Threonine
152
      { "TRP", 'W' }, // Tryptophan
153
      { "TYR", 'Y' }, // Tyrosine
154
      { "VAL", 'V' }, // Valine
155
      { "SEC", 'U' }, // Selenocysteine
156
      { "PYL", 'O' }, // Pyrrolysine
157
      { "ASX", 'B' }, // Asparagine or Aspartic acid
158
      { "GLX", 'Z' }, // Glutamine or Glutamic acid
159
      { "XLE", 'J' }, // Leucine or Isoleucine
160
      { "XAA", 'X' }, // any amino acid
161
162
      { "DG", 'G' }, // Guanine
163
      { "DC", 'C' }, // Cytosine
164
      { "DA", 'A' }, // Adenine
165
      { "DT", 'T' }, // Thymine
166
      { "GAX", 'R' }, // Purine (G or A)
167
      { "TCX", 'Y' }, // Pyrimidine (T or C)
168
      { "UCX", 'Y' }, // Pyrimidine (U or C)
169
      { "GTX", 'K' }, // Keto (G or T)
170
      { "GUX", 'K' }, // Keto (G or U)
171
      { "ACX", 'M' }, // Amino (A or C)
172
      { "GCX", 'S' }, // Strong (G or C)
173
      { "ATX", 'W' }, // Weak (A or T)
174
      { "AUX", 'W' }, // Weak (A or U)
175
      { "GTC", 'B' }, // (G T C)
176
      { "GUC", 'B' }, // (G U C)
177
      { "GAT", 'D' }, // (G A T)
178
      { "GAU", 'D' }, // (G A U)
179
      { "ACT", 'H' }, // (A C T)
180
      { "ACU", 'H' }, // (A C U)
181
      { "GCA", 'V' }, // (G C A)
182
      { "XNA", 'N' }, // Unknown Nucleic Acid
183
      { "", '\0' }
184
    };
185
  typedef std::map< std::string, char > residue_lookup_map;
186
  residue_lookup_map residue_lookup;
187
188
  char
189
  FASTAFormat::conv_3to1(const std::string & three) const
190
22.3k
  {
191
22.3k
    char return_code = 'X';
192
22.3k
    if (residue_lookup.empty())
193
1
      {
194
48
        for (residue_lookup_record * rl = residue_lookup_table; rl->code; ++ rl)
195
47
          {
196
47
            residue_lookup.insert(residue_lookup_map::value_type(std::string(rl->TLA), rl->code));
197
47
          }
198
1
      }
199
22.3k
    char tla_buf[4];
200
22.3k
    strncpy(tla_buf, three.c_str(), 3);
201
22.3k
    tla_buf[3] = 0;
202
89.2k
    for (int idx = 0; idx < 3; ++ idx)
203
66.9k
      tla_buf[idx] = (char)toupper(tla_buf[idx]);
204
205
22.3k
    residue_lookup_map::const_iterator mx = residue_lookup.find(std::string(tla_buf));
206
22.3k
    if (mx != residue_lookup.end())
207
22.2k
      {
208
22.2k
        return_code = (* mx).second;
209
22.2k
      }
210
19
    else if (strlen(tla_buf) == 1)
211
0
      {
212
0
        return_code = tla_buf[0];
213
0
      }
214
22.3k
    return return_code;
215
22.3k
  }
216
26
#define IUPAC_Start 0
217
30
#define IUPAC_End 1
218
822
#define IUPAC_Unknown 2
219
  const char * IUPAC_DNA_codes = "01NACGTRYKMSWBDHV";
220
  enum IUPAC_DNA_code
221
    {
222
      IUPAC_DNA_Start = 0,
223
      IUPAC_DNA_End = 1,
224
      IUPAC_DNA_N, // N XNA Unknown Nucleic Acid N -> N
225
      IUPAC_DNA_A, // A DA  Adenine A -> T
226
      IUPAC_DNA_C, // C DC  Cytosine C -> G
227
      IUPAC_DNA_G, // G DG  Guanine G -> C
228
      IUPAC_DNA_T, // T DT  Thymine T -> A
229
      IUPAC_DNA_R, // R GAX Purine (G or A) R -> Y
230
      IUPAC_DNA_Y, // Y TCX Pyrimidine (T or C) Y -> R
231
      IUPAC_DNA_K, // K GTX Keto (G or T) K -> M
232
      IUPAC_DNA_M, // M ACX Amino (A or C) M -> K
233
      IUPAC_DNA_S, // S GCX Strong (G or C) S -> W
234
      IUPAC_DNA_W, // W ATX Weak (A or T) W -> S
235
      IUPAC_DNA_B, // B GTC (G T C) B -> V
236
      IUPAC_DNA_D, // D GAT (G A T) D -> H
237
      IUPAC_DNA_H, // H ACT (A C T) H -> D
238
      IUPAC_DNA_V, // V GCA (G C A) V -> B
239
      IUPAC_DNA_max
240
      // -  gap of indeterminate length
241
    };
242
  const char * IUPAC_RNA_codes = "01NACGURYKMSWBDHV";
243
  enum IUPAC_RNA_code
244
    {
245
      IUPAC_RNA_Start = 0,
246
      IUPAC_RNA_End = 1,
247
      IUPAC_RNA_N, // N XNA Unknown Nucleic Acid N -> N
248
      IUPAC_RNA_A, // A A   Adenine A -> U
249
      IUPAC_RNA_C, // C C   Cytosine C -> G
250
      IUPAC_RNA_G, // G G   Guanine G -> C
251
      IUPAC_RNA_U, // U U   Uridine U -> A
252
      IUPAC_RNA_R, // R GAX Purine (G or A) R -> Y
253
      IUPAC_RNA_Y, // Y UCX Pyrimidine (U or C) Y -> R
254
      IUPAC_RNA_K, // K GUX Keto (G or U) K -> M
255
      IUPAC_RNA_M, // M ACX Amino (A or C) M -> K
256
      IUPAC_RNA_S, // S GCX Strong (G or C) S -> W
257
      IUPAC_RNA_W, // W AUX Weak (A or U) W -> S
258
      IUPAC_RNA_B, // B GUC (G U C) B -> V
259
      IUPAC_RNA_D, // D GAU (G A U) D -> H
260
      IUPAC_RNA_H, // H ACU (A C U) H -> D
261
      IUPAC_RNA_V, // V GCA (G C A) V -> B
262
      IUPAC_RNA_max
263
      // -  gap of indeterminate length
264
    };
265
  /*
266
  // Additional RNA Not yet implemented:
267
  T --> ribosylthymine (not thymidine)
268
  I --> inosine
269
  X --> xanthosine
270
  Q --> pseudouridine
271
  */
272
  const char * IUPAC_Protein_codes = "01XABCDEFGHIJKLMNOPQRSTUVWYZ";
273
  enum IUPAC_Protein_code
274
    {
275
      IUPAC_Protein_Start = 0,
276
      IUPAC_Protein_End = 1,
277
      IUPAC_Protein_X, // X XAA any (unknown) amino acid
278
      IUPAC_Protein_A, // A ALA Alanine
279
      IUPAC_Protein_B, // B ASX Asparagine or Aspartic acid i.e. N or D
280
      IUPAC_Protein_C, // C CYS Cysteine
281
      IUPAC_Protein_D, // D ASP Aspartic acid
282
      IUPAC_Protein_E, // E GLU Glutamic acid
283
      IUPAC_Protein_F, // F PHE Phenylalanine
284
      IUPAC_Protein_G, // G GLY Glycine
285
      IUPAC_Protein_H, // H HIS Histidine
286
      IUPAC_Protein_I, // I ILE Isoleucine
287
      IUPAC_Protein_J, // J XLE Leucine or Isoleucine i.e. L or I
288
      IUPAC_Protein_K, // K LYS Lysine
289
      IUPAC_Protein_L, // L LEU Leucine
290
      IUPAC_Protein_M, // M MET Methionine
291
      IUPAC_Protein_N, // N ASN Asparagine
292
      IUPAC_Protein_O, // O PYL Pyrrolysine
293
      IUPAC_Protein_P, // P PRO Proline
294
      IUPAC_Protein_Q, // Q GLN Glutamine
295
      IUPAC_Protein_R, // R ARG Arginine
296
      IUPAC_Protein_S, // S SER Serine
297
      IUPAC_Protein_T, // T THR Threonine
298
      IUPAC_Protein_U, // U SEC Selenocysteine
299
      IUPAC_Protein_V, // V VAL Valine
300
      IUPAC_Protein_W, // W TRP Tryptophan
301
      IUPAC_Protein_Y, // Y TYR Tyrosine
302
      IUPAC_Protein_Z, // Z GLX Glutamine or Glutamic acid i.e. Q or E
303
      IUPAC_Protein_max
304
      // *  translation stop
305
      // -  gap of indeterminate length
306
    };
307
308
  struct ResidueAtomRecord
309
  {
310
    char label[6]; // e.g. CA, CB, CC
311
    char symbol[4]; // e.g. C, H, N, O, P
312
    double x, r, Theta; // cylindrical polar co-ordinates
313
  };
314
  struct ResidueBondRecord
315
  {
316
    size_t from_idx, to_idx;
317
    int bond_order;
318
  };
319
  struct ResidueRecord
320
  {
321
    char IUPACcode;
322
    char Name[6]; // usually three-letter code
323
    ResidueAtomRecord  atom[48];
324
    ResidueBondRecord  bond[48];
325
  };
326
  extern ResidueRecord RNAResidues[IUPAC_RNA_max];
327
  extern ResidueRecord DNAResidues[IUPAC_DNA_max];
328
  extern ResidueRecord DNAPairResidues[IUPAC_DNA_max];
329
  extern ResidueRecord ProteinResidues[IUPAC_Protein_max];
330
#ifndef M_PI
331
#define M_PI 3.1415926535897932384626433832795028841971694
332
#endif
333
  struct HelixParameters
334
  {
335
    double unit_X; // distance along the x-axis added for each unit
336
    double unit_Theta; // angle in radians between each unit
337
    size_t  bond_connect; // the zero-based index of the residue atom to bond from
338
  };
339
  HelixParameters protein_helix = { 1.4781, 1.74474, 2 }; // HNCA-.N-CA-C-.N-CA-C-.OXT-HOCA
340
  HelixParameters RNA_helix = { 2.95057, 2*M_PI/11.0, 8 }; // HTER-OXT-.P-O5'-C5'-C4'-C3'-O3'-.P-O5'-C5'-C4'-C3'-O3'-.HCAP
341
  HelixParameters DNA_helix = { 3.37998, 2*M_PI/10.0, 8 }; // HTER-OXT-.P-O5'-C5'-C4'-C3'-O3'-.P-O5'-C5'-C4'-C3'-O3'-.HCAP
342
  HelixParameters DNA_pair_helix = { -3.37998, -2*M_PI/10.0, 8 }; // Simply the negative of the above
343
  // HelixParameters DNA_strandAtoB = { 4.1600027464119, 3.3230513172128164 };
344
  typedef OBAtom * ptrAtom;
345
  void add_bond(OBMol * pmol, OBAtom * from, OBAtom * to, int bond_order)
346
3.72M
  {
347
3.72M
    pmol->AddBond(from->GetIdx(), to->GetIdx(), bond_order);
348
3.72M
  }
349
  // #define GEN_BONDS 1
350
  void add_residue(OBMol * pmol, OBResidue * res, double offset_x, double offset_Theta, unsigned long & serial_no, ResidueRecord * res_rec, int resBondFromOffset, ptrAtom & resBondFrom, bool create_bonds, bool bond_orders)
351
301k
  {
352
301k
    typedef std::vector<OBAtom *> atom_list;
353
301k
    atom_list bond_refs;
354
4.01M
    for (ResidueAtomRecord * atom_rec = res_rec->atom; atom_rec->symbol[0]; ++ atom_rec)
355
3.71M
      {
356
3.71M
        OBAtom * atom = pmol->NewAtom();
357
3.71M
        atom->SetAtomicNum(OBElements::GetAtomicNum(atom_rec->symbol));
358
3.71M
        atom->SetType(atom_rec->symbol);
359
3.71M
        double theta = offset_Theta + atom_rec->Theta;
360
3.71M
        atom->SetVector(offset_x + atom_rec->x, atom_rec->r * cos(theta), atom_rec->r * sin(theta));
361
3.71M
        res->AddAtom(atom);
362
3.71M
        res->SetAtomID(atom, atom_rec->label);
363
3.71M
        res->SetSerialNum(atom, serial_no);
364
3.71M
        ++ serial_no;
365
3.71M
        bond_refs.push_back(atom);
366
3.71M
      }
367
368
301k
    if (create_bonds)
369
301k
      {
370
301k
        size_t atom_count = bond_refs.size();
371
301k
        if (resBondFrom && atom_count)
372
288k
          { // insert the bond from the previous residue
373
288k
            add_bond(pmol, resBondFrom, bond_refs[0], 1);
374
288k
          }
375
301k
        resBondFrom = nullptr;
376
3.73M
        for (ResidueBondRecord * bond_rec = res_rec->bond; bond_rec->bond_order; ++ bond_rec)
377
3.43M
          {
378
3.43M
            size_t from = bond_rec->from_idx - 1;
379
3.43M
            size_t to = bond_rec->to_idx - 1;
380
3.43M
            if (from < atom_count && to < atom_count)
381
3.43M
              {
382
3.43M
                add_bond(pmol, bond_refs[from], bond_refs[to], bond_orders?bond_rec->bond_order:1);
383
3.43M
              }
384
3.43M
          }
385
301k
        if (atom_count && resBondFromOffset != -2)
386
301k
          {
387
301k
            if (resBondFromOffset == -1)
388
26
              { // start
389
26
                resBondFrom = bond_refs[atom_count - 1];
390
26
              }
391
301k
            else if (atom_count > resBondFromOffset)
392
301k
              {
393
301k
                resBondFrom = bond_refs[resBondFromOffset];
394
301k
              }
395
301k
          }
396
301k
      }
397
398
301k
    bond_refs.clear();
399
301k
  }
400
401
402
  void generate_sequence(const std::string & sequence, OBMol * pmol, unsigned long chain_no, const HelixParameters & helix, const char * IUPAC_codes, ResidueRecord * Residues, double & offset_x, double & offset_Theta, unsigned long & serial_no, bool create_bonds, bool bond_orders)
403
70
  {
404
70
    unsigned long residue_num = 1;
405
70
    OBResidue * res = nullptr;
406
70
    ptrAtom resBondFrom = nullptr;
407
660k
    for (std::string::const_iterator sx = sequence.begin(), sy = sequence.end(); sx != sy; ++ sx, ++ residue_num)
408
660k
      {
409
660k
        bool is_gap = (((* sx) == '-') || ((* sx) == '*'));
410
660k
        if (is_gap)
411
359k
          {
412
359k
            offset_x += helix.unit_X * 2;
413
359k
            resBondFrom = nullptr;
414
359k
          }
415
301k
        else
416
301k
          {
417
301k
            const char * idx = strchr(IUPAC_codes, (* sx)); // e.g. "01NACGURYKMSWBDHV"
418
301k
            size_t unit_code = (size_t)( idx ? (idx - IUPAC_codes) : IUPAC_Unknown );
419
301k
            ResidueRecord * res_rec = & Residues[unit_code];
420
301k
            if (res_rec->IUPACcode)
421
301k
              {
422
301k
                res = pmol->NewResidue();
423
301k
                res->SetChainNum(chain_no);
424
301k
                res->SetNum(residue_num);
425
301k
                res->SetName(res_rec->Name);
426
427
301k
                if (residue_num == 1)
428
26
                  { // Add the start terminal
429
26
                    add_residue(pmol, res, offset_x, offset_Theta, serial_no, & Residues[IUPAC_Start], -1, resBondFrom, create_bonds, bond_orders);
430
26
                  }
431
432
301k
                add_residue(pmol, res, offset_x, offset_Theta, serial_no, res_rec, helix.bond_connect, resBondFrom, create_bonds, bond_orders);
433
301k
              }
434
301k
            offset_x += helix.unit_X;
435
301k
            offset_Theta += helix.unit_Theta;
436
301k
          }
437
660k
      }
438
439
70
    if (res != nullptr)
440
30
      { // Add the end terminal
441
30
        add_residue(pmol, res, offset_x - helix.unit_X, offset_Theta - helix.unit_Theta, serial_no, & Residues[IUPAC_End], -2, resBondFrom, create_bonds, bond_orders);
442
30
      }
443
444
70
  }
445
446
  bool ReadFASTASequence(OBMol * pmol, int seq_type, std::istream * in, bool create_bonds, bool bond_orders,
447
                         bool singleStrand, const char *turns = nullptr)
448
47
  {
449
    /*
450
      Sequence is from 5' to 3' left -> right.
451
452
    */
453
47
    std::string line, sequence;
454
455
47
    FASTAFormat::SequenceType sequence_type = (FASTAFormat::SequenceType)seq_type, sequence_na = FASTAFormat::UnknownSequence;
456
365k
    while (!in->eof())
457
365k
      { // We have a new line to fetch into 'line'
458
365k
        getline( * in, line);
459
365k
        if (line[0] == '>')
460
8
          { // comment data
461
8
            if (pmol->GetTitle()[0] == 0)
462
7
              {
463
7
                pmol->SetTitle( & (line.c_str()[1]) );
464
7
              }
465
8
            if (sequence_type == FASTAFormat::UnknownSequence)
466
6
              { // attempt to determine the sequence type
467
6
                if (line.find("RNA") != std::string::npos)
468
0
                  sequence_type = FASTAFormat::RNASequence;
469
6
                else if (line.find("DNA") != std::string::npos)
470
0
                  sequence_type = FASTAFormat::DNASequence;
471
6
                else if (line.find("gene") != std::string::npos)
472
0
                  sequence_type = FASTAFormat::DNASequence;
473
6
                else if (line.find("protein") != std::string::npos)
474
0
                  sequence_type = FASTAFormat::ProteinSequence;
475
6
                else if (line.find("peptide") != std::string::npos)
476
0
                  sequence_type = FASTAFormat::ProteinSequence;
477
6
                else if (line.find("Protein") != std::string::npos)
478
0
                  sequence_type = FASTAFormat::ProteinSequence;
479
6
                else if (line.find("Peptide") != std::string::npos)
480
0
                  sequence_type = FASTAFormat::ProteinSequence;
481
6
              }
482
8
          }
483
365k
        else
484
365k
          { // sequence data
485
4.76M
            for (std::string::size_type pos = 0, endpos = line.size(); pos < endpos; ++ pos)
486
4.40M
              {
487
4.40M
                char current = (char)toupper(line[pos]);
488
4.40M
                if (isupper((unsigned char)current) || strchr("*-", current))
489
657k
                  {
490
657k
                    sequence.append(1, current);
491
657k
                    if (sequence_type == FASTAFormat::UnknownSequence)
492
15.8k
                      { // attempt to determine the sequence type
493
                        // DNA/RNA == ABCDGHKMNRSTUVWY
494
15.8k
                        if (strchr("EFIJLOPQXZ*", current)) // Protein == ABCDEFGHIJKLMNOPQRSTUVWXYZ*
495
24
                          sequence_type = FASTAFormat::ProteinSequence;
496
15.8k
                        else if (current == 'U')
497
0
                          sequence_na = FASTAFormat::RNASequence;
498
15.8k
                        else if (current == 'T')
499
216
                          sequence_na = FASTAFormat::DNASequence;
500
15.8k
                      }
501
657k
                  }
502
4.40M
              }
503
365k
          }
504
365k
      }
505
47
    if (sequence_type == FASTAFormat::UnknownSequence)
506
9
      sequence_type = sequence_na;
507
47
    if (sequence_type == FASTAFormat::UnknownSequence)
508
9
      sequence_type = FASTAFormat::DNASequence;
509
510
    // We now have the sequence and know it's type
511
47
    double offset_x = 0, offset_Theta = 0;
512
47
    unsigned long serial_no = 1;
513
514
47
    if (turns) {
515
      // set everything even if we don't use it
516
0
      double unit_Theta = 2*M_PI/atof(turns);
517
0
      protein_helix.unit_Theta = unit_Theta;
518
0
      RNA_helix.unit_Theta = unit_Theta;
519
0
      DNA_helix.unit_Theta = unit_Theta;
520
0
      DNA_pair_helix.unit_Theta = -unit_Theta;
521
0
    }
522
523
47
    switch (sequence_type)
524
47
      {
525
0
      case FASTAFormat::RNASequence:
526
0
        generate_sequence(sequence, pmol, 1, RNA_helix, IUPAC_RNA_codes, RNAResidues, offset_x, offset_Theta, serial_no, create_bonds, bond_orders);
527
0
        break;
528
24
      case FASTAFormat::ProteinSequence:
529
24
        generate_sequence(sequence, pmol, 1, protein_helix, IUPAC_Protein_codes, ProteinResidues, offset_x, offset_Theta, serial_no, create_bonds, bond_orders);
530
24
        break;
531
23
      case FASTAFormat::DNASequence:
532
23
        {
533
23
          generate_sequence(sequence, pmol, 1, DNA_helix, IUPAC_DNA_codes, DNAResidues, offset_x, offset_Theta, serial_no, create_bonds, bond_orders);
534
23
          if (!singleStrand) {
535
23
            offset_x -= DNA_helix.unit_X;
536
23
            offset_Theta -= DNA_helix.unit_Theta;
537
23
            std::string rsequence;
538
2.93k
            for (std::string::const_reverse_iterator sx = sequence.rbegin(), sy = sequence.rend(); sx != sy; ++ sx)
539
2.90k
              rsequence.append(1, * sx);
540
23
            generate_sequence(rsequence, pmol, 2, DNA_pair_helix, IUPAC_DNA_codes, DNAPairResidues, offset_x, offset_Theta, serial_no, create_bonds, bond_orders);
541
23
          }
542
23
        }
543
23
        break;
544
0
      default:
545
0
        break;
546
47
      }
547
47
    return (pmol->NumAtoms() > 0 ? true : false);
548
47
  }
549
550
  /////////////////////////////////////////////////////////////////
551
  bool FASTAFormat::ReadMolecule(OBBase* pOb, OBConversion* pConv)
552
33
  {
553
33
    OBMol* pmol = pOb->CastAndClear<OBMol>();
554
33
    if (pmol == nullptr)
555
0
      return false;
556
33
    pmol->BeginModify();
557
33
    bool rv = ReadFASTASequence(pmol, UnknownSequence, pConv->GetInStream(),
558
33
                                !pConv->IsOption("b",OBConversion::INOPTIONS),
559
33
                                !pConv->IsOption("s",OBConversion::INOPTIONS),
560
33
                                pConv->IsOption("1",OBConversion::INOPTIONS),
561
33
                                pConv->IsOption("t",OBConversion::INOPTIONS));
562
33
    pmol->EndModify();
563
33
    pmol->SetChainsPerceived();
564
33
    return rv;
565
33
  }
566
567
  ResidueRecord DNAResidues[IUPAC_DNA_max] =
568
    {
569
      { 0, "", // DNA Start
570
        {
571
          { "HTER",  "H",  -1.547,  9.456,  -0.129},
572
          { "OXT",  "O",  -1.440,  8.905,  -0.045},
573
          { "", "", 0.0, 0.0, 0.0 }
574
        },
575
        {
576
          { 2, 1, 1},
577
          { 0, 0, 0}
578
        }
579
      },
580
      { 0, "", // DNA End
581
        {
582
          { "HCAP",  "H",  1.699,  8.181,  0.680},
583
          { "", "", 0.0, 0.0, 0.0 }
584
        },
585
        {
586
          { 0, 0, 0}
587
        }
588
      },
589
      { 'N', "XNA", // N XNA Unknown Nucleic Acid N -> N
590
        {
591
          { "P",  "P",  0.000,  8.910,  0.000},
592
          { "O1P",  "O",  0.220,  10.199,  0.072},
593
          { "O2P",  "O",  0.790,  8.819,  -0.141},
594
          { "O5'",  "O",  0.250,  7.730,  0.126},
595
          { "C5'",  "C",  -0.690,  7.700,  0.269},
596
          { "C4'",  "C",  0.040,  7.590,  0.442},
597
          { "O4'",  "O",  0.250,  6.220,  0.510},
598
          { "C3'",  "C",  1.440,  8.200,  0.442},
599
          { "O3'",  "O",  1.830,  8.750,  0.590},
600
          { "C2'",  "C",  2.320,  7.040,  0.384},
601
          { "C1'",  "C",  1.610,  5.860,  0.485},
602
          { "N9",  "N",  1.660,  4.630,  0.325},
603
          { "H5'1",  "H",  -1.179,  8.685,  0.271},
604
          { "H5'2",  "H",  -1.449,  6.917,  0.250},
605
          { "H4'",  "H",  -0.582,  8.159,  0.531},
606
          { "", "", 0.0, 0.0, 0.0 }
607
        },
608
        {
609
          { 3, 1, 2 },
610
          { 1, 2, 1 },
611
          { 1, 4, 1 },
612
          { 4, 5, 1 },
613
          { 12, 11, 1 },
614
          { 14, 5, 1 },
615
          { 5, 13, 1 },
616
          { 5, 6, 1 },
617
          { 10, 11, 1 },
618
          { 10, 8, 1 },
619
          { 11, 7, 1 },
620
          { 7, 6, 1 },
621
          { 6, 8, 1 },
622
          { 6, 15, 1 },
623
          { 8, 9, 1 },
624
          { 0, 0, 0}
625
        }
626
      },
627
      { 'A', "DA", // A DA  Adenine A -> T
628
        {
629
          { "P",  "P",  0.000,  8.910,  0.000},
630
          { "O1P",  "O",  0.220,  10.201,  0.072},
631
          { "O2P",  "O",  0.790,  8.821,  -0.141},
632
          { "O5'",  "O",  0.250,  7.730,  0.126},
633
          { "C5'",  "C",  -0.690,  7.701,  0.269},
634
          { "C4'",  "C",  0.040,  7.590,  0.442},
635
          { "O4'",  "O",  0.250,  6.221,  0.510},
636
          { "C3'",  "C",  1.440,  8.201,  0.442},
637
          { "O3'",  "O",  1.830,  8.750,  0.590},
638
          { "C2'",  "C",  2.320,  7.040,  0.384},
639
          { "C1'",  "C",  1.610,  5.860,  0.485},
640
          { "N9",  "N",  1.660,  4.630,  0.325},
641
          { "C8",  "C",  1.580,  4.840,  0.038},
642
          { "N7",  "N",  1.650,  3.950,  -0.178},
643
          { "C5",  "C",  1.800,  2.741,  0.021},
644
          { "C6",  "C",  1.930,  1.410,  -0.210},
645
          { "N6",  "N",  1.940,  1.810,  -1.026},
646
          { "N1",  "N",  2.050,  0.860,  0.962},
647
          { "C2",  "C",  2.040,  2.170,  1.127},
648
          { "N3",  "N",  1.920,  3.240,  0.841},
649
          { "C4",  "C",  1.800,  3.330,  0.431},
650
          { "H5'1",  "H",  -1.178,  8.686,  0.271},
651
          { "H5'2",  "H",  -1.450,  6.919,  0.250},
652
          { "H4'",  "H",  -0.582,  8.160,  0.531},
653
          { "H1'",  "H",  2.073,  5.804,  0.656},
654
          { "H2'1",  "H",  2.353,  7.073,  0.228},
655
          { "H2'2",  "H",  3.344,  7.146,  0.439},
656
          { "H3'",  "H",  1.510,  9.057,  0.362},
657
          { "H8",  "H",  1.469,  5.889,  -0.013},
658
          { "H61",  "H",  1.850,  2.827,  -0.968},
659
          { "H62",  "H",  2.039,  1.740,  -1.611},
660
          { "H2",  "H",  2.147,  2.724,  1.510},
661
          { "", "", 0.0, 0.0, 0.0 }
662
        },
663
        {
664
          { 30, 17, 1 },
665
          { 31, 17, 1 },
666
          { 17, 16, 1 },
667
          { 3, 1, 2 },
668
          { 14, 15, 1 },
669
          { 14, 13, 2 },
670
          { 16, 15, 2 },
671
          { 16, 18, 1 },
672
          { 29, 13, 1 },
673
          { 1, 2, 1 },
674
          { 1, 4, 1 },
675
          { 15, 21, 1 },
676
          { 13, 12, 1 },
677
          { 18, 19, 2 },
678
          { 4, 5, 1 },
679
          { 21, 12, 1 },
680
          { 21, 20, 2 },
681
          { 12, 11, 1 },
682
          { 26, 10, 1 },
683
          { 23, 5, 1 },
684
          { 19, 20, 1 },
685
          { 19, 32, 1 },
686
          { 5, 22, 1 },
687
          { 5, 6, 1 },
688
          { 10, 11, 1 },
689
          { 10, 27, 1 },
690
          { 10, 8, 1 },
691
          { 11, 7, 1 },
692
          { 11, 25, 1 },
693
          { 7, 6, 1 },
694
          { 28, 8, 1 },
695
          { 6, 8, 1 },
696
          { 6, 24, 1 },
697
          { 8, 9, 1 },
698
          { 0, 0, 0}
699
        }
700
      },
701
      { 'C', "DC", // C DC  Cytosine C -> G
702
        {
703
          { "P",  "P",  0.000,  8.910,  0.000},
704
          { "O1P",  "O",  0.220,  10.200,  0.072},
705
          { "O2P",  "O",  0.790,  8.820,  -0.141},
706
          { "O5'",  "O",  0.250,  7.730,  0.126},
707
          { "C5'",  "C",  -0.690,  7.700,  0.269},
708
          { "C4'",  "C",  0.040,  7.590,  0.442},
709
          { "O4'",  "O",  0.250,  6.220,  0.510},
710
          { "C3'",  "C",  1.440,  8.200,  0.442},
711
          { "O3'",  "O",  1.830,  8.750,  0.590},
712
          { "C2'",  "C",  2.320,  7.040,  0.384},
713
          { "C1'",  "C",  1.610,  5.860,  0.485},
714
          { "N1",  "N",  1.660,  4.629,  0.325},
715
          { "C2",  "C",  1.810,  3.400,  0.485},
716
          { "O2",  "O",  1.900,  3.690,  0.826},
717
          { "N3",  "N",  1.860,  2.311,  0.110},
718
          { "C4",  "C",  1.760,  2.940,  -0.258},
719
          { "N4",  "N",  1.810,  2.760,  -0.723},
720
          { "C5",  "C",  1.610,  4.350,  -0.206},
721
          { "C6",  "C",  1.560,  4.990,  0.052},
722
          { "H5'1",  "H",  -1.180,  8.684,  0.271},
723
          { "H5'2",  "H",  -1.449,  6.916,  0.250},
724
          { "H4'",  "H",  -0.582,  8.160,  0.531},
725
          { "H1'",  "H",  2.073,  5.803,  0.656},
726
          { "H2'1",  "H",  2.352,  7.073,  0.228},
727
          { "H2'2",  "H",  3.344,  7.145,  0.439},
728
          { "H3'",  "H",  1.510,  9.056,  0.362},
729
          { "H6",  "H",  1.438,  6.067,  0.034},
730
          { "H5",  "H",  1.540,  5.087,  -0.376},
731
          { "H41",  "H",  1.928,  2.018,  -1.023},
732
          { "H42",  "H",  1.731,  3.718,  -0.838},
733
          { "", "", 0.0, 0.0, 0.0 }
734
        },
735
        {
736
          { 30, 17, 1 },
737
          { 28, 18, 1 },
738
          { 17, 29, 1 },
739
          { 17, 16, 1 },
740
          { 3, 1, 2 },
741
          { 18, 16, 1 },
742
          { 18, 19, 2 },
743
          { 16, 15, 2 },
744
          { 1, 2, 1 },
745
          { 1, 4, 1 },
746
          { 27, 19, 1 },
747
          { 15, 13, 1 },
748
          { 19, 12, 1 },
749
          { 4, 5, 1 },
750
          { 12, 13, 1 },
751
          { 12, 11, 1 },
752
          { 13, 14, 2 },
753
          { 24, 10, 1 },
754
          { 21, 5, 1 },
755
          { 5, 20, 1 },
756
          { 5, 6, 1 },
757
          { 10, 11, 1 },
758
          { 10, 25, 1 },
759
          { 10, 8, 1 },
760
          { 11, 7, 1 },
761
          { 11, 23, 1 },
762
          { 7, 6, 1 },
763
          { 26, 8, 1 },
764
          { 6, 8, 1 },
765
          { 6, 22, 1 },
766
          { 8, 9, 1 },
767
          { 0, 0, 0}
768
        }
769
      },
770
      { 'G', "DG", // G DG  Guanine G -> C
771
        {
772
          { "P",  "P",  0.000,  8.910,  0.000},
773
          { "O1P",  "O",  0.220,  10.199,  0.072},
774
          { "O2P",  "O",  0.790,  8.819,  -0.141},
775
          { "O5'",  "O",  0.250,  7.730,  0.126},
776
          { "C5'",  "C",  -0.690,  7.700,  0.269},
777
          { "C4'",  "C",  0.040,  7.590,  0.442},
778
          { "O4'",  "O",  0.250,  6.220,  0.510},
779
          { "C3'",  "C",  1.440,  8.200,  0.442},
780
          { "O3'",  "O",  1.830,  8.750,  0.590},
781
          { "C2'",  "C",  2.320,  7.040,  0.384},
782
          { "C1'",  "C",  1.610,  5.860,  0.485},
783
          { "N9",  "N",  1.660,  4.630,  0.325},
784
          { "C8",  "C",  1.580,  4.819,  0.035},
785
          { "N7",  "N",  1.660,  3.920,  -0.183},
786
          { "C5",  "C",  1.800,  2.700,  0.021},
787
          { "C6",  "C",  1.930,  1.390,  -0.246},
788
          { "O6",  "O",  1.950,  1.709,  -1.037},
789
          { "N1",  "N",  2.050,  0.920,  1.001},
790
          { "C2",  "C",  2.050,  2.280,  1.161},
791
          { "N2",  "N",  2.180,  3.010,  1.588},
792
          { "N3",  "N",  1.920,  3.290,  0.847},
793
          { "C4",  "C",  1.800,  3.330,  0.435},
794
          { "H5'1",  "H",  -1.179,  8.685,  0.271},
795
          { "H5'2",  "H",  -1.449,  6.917,  0.250},
796
          { "H4'",  "H",  -0.582,  8.159,  0.531},
797
          { "H1'",  "H",  2.073,  5.803,  0.657},
798
          { "H2'1",  "H",  2.352,  7.072,  0.228},
799
          { "H2'2",  "H",  3.344,  7.145,  0.439},
800
          { "H3'",  "H",  1.510,  9.056,  0.362},
801
          { "H8",  "H",  1.461,  5.865,  -0.018},
802
          { "H1",  "H",  2.143,  0.769,  2.251},
803
          { "H21",  "H",  2.180,  4.016,  1.524},
804
          { "H22",  "H",  2.281,  2.908,  1.935},
805
          { "", "", 0.0, 0.0, 0.0 }
806
        },
807
        {
808
          { 17, 16, 2 },
809
          { 3, 1, 2 },
810
          { 14, 15, 1 },
811
          { 14, 13, 2 },
812
          { 16, 15, 1 },
813
          { 16, 18, 1 },
814
          { 30, 13, 1 },
815
          { 1, 2, 1 },
816
          { 1, 4, 1 },
817
          { 15, 22, 2 },
818
          { 13, 12, 1 },
819
          { 31, 18, 1 },
820
          { 18, 19, 1 },
821
          { 4, 5, 1 },
822
          { 22, 12, 1 },
823
          { 22, 21, 1 },
824
          { 12, 11, 1 },
825
          { 27, 10, 1 },
826
          { 24, 5, 1 },
827
          { 5, 23, 1 },
828
          { 5, 6, 1 },
829
          { 19, 21, 2 },
830
          { 19, 20, 1 },
831
          { 10, 11, 1 },
832
          { 10, 28, 1 },
833
          { 10, 8, 1 },
834
          { 33, 20, 1 },
835
          { 11, 7, 1 },
836
          { 11, 26, 1 },
837
          { 20, 32, 1 },
838
          { 7, 6, 1 },
839
          { 29, 8, 1 },
840
          { 6, 8, 1 },
841
          { 6, 25, 1 },
842
          { 8, 9, 1 },
843
          { 0, 0, 0}
844
        }
845
      },
846
      { 'T', "DT", // T DT  Thymine T -> A
847
        {
848
          { "P",  "P",  0.000,  8.910,  0.000},
849
          { "O1P",  "O",  0.220,  10.200,  0.072},
850
          { "O2P",  "O",  0.790,  8.820,  -0.141},
851
          { "O5'",  "O",  0.250,  7.730,  0.126},
852
          { "C5'",  "C",  -0.690,  7.699,  0.269},
853
          { "C4'",  "C",  0.040,  7.590,  0.442},
854
          { "O4'",  "O",  0.250,  6.220,  0.510},
855
          { "C3'",  "C",  1.440,  8.200,  0.442},
856
          { "O3'",  "O",  1.830,  8.750,  0.590},
857
          { "C2'",  "C",  2.320,  7.040,  0.384},
858
          { "C1'",  "C",  1.610,  5.860,  0.485},
859
          { "N1",  "N",  1.660,  4.629,  0.325},
860
          { "C2",  "C",  1.810,  3.420,  0.487},
861
          { "O2",  "O",  1.900,  3.640,  0.827},
862
          { "N3",  "N",  1.850,  2.360,  0.174},
863
          { "C4",  "C",  1.760,  2.980,  -0.291},
864
          { "O4",  "O",  1.810,  2.820,  -0.717},
865
          { "C5",  "C",  1.610,  4.380,  -0.204},
866
          { "C5M",  "C",  1.500,  5.400,  -0.429},
867
          { "C6",  "C",  1.560,  5.010,  0.051},
868
          { "H5'1",  "H",  -1.180,  8.685,  0.271},
869
          { "H5'2",  "H",  -1.449,  6.916,  0.250},
870
          { "H4'",  "H",  -0.582,  8.159,  0.531},
871
          { "H1'",  "H",  2.073,  5.802,  0.656},
872
          { "H2'1",  "H",  2.352,  7.073,  0.228},
873
          { "H2'2",  "H",  3.344,  7.145,  0.439},
874
          { "H3'",  "H",  1.510,  9.056,  0.362},
875
          { "H6",  "H",  1.439,  6.089,  0.034},
876
          { "H51",  "H",  2.469,  5.917,  -0.442},
877
          { "H52",  "H",  0.732,  6.117,  -0.373},
878
          { "H53",  "H",  1.220,  5.101,  -0.624},
879
          { "H3",  "H",  1.956,  1.414,  0.342},
880
          { "", "", 0.0, 0.0, 0.0 }
881
        },
882
        {
883
          { 31, 19, 1 },
884
          { 29, 19, 1 },
885
          { 19, 30, 1 },
886
          { 19, 18, 1 },
887
          { 17, 16, 2 },
888
          { 3, 1, 2 },
889
          { 18, 16, 1 },
890
          { 18, 20, 2 },
891
          { 16, 15, 1 },
892
          { 1, 2, 1 },
893
          { 1, 4, 1 },
894
          { 28, 20, 1 },
895
          { 20, 12, 1 },
896
          { 15, 32, 1 },
897
          { 15, 13, 1 },
898
          { 4, 5, 1 },
899
          { 12, 13, 1 },
900
          { 12, 11, 1 },
901
          { 25, 10, 1 },
902
          { 13, 14, 2 },
903
          { 22, 5, 1 },
904
          { 5, 21, 1 },
905
          { 5, 6, 1 },
906
          { 10, 11, 1 },
907
          { 10, 26, 1 },
908
          { 10, 8, 1 },
909
          { 11, 7, 1 },
910
          { 11, 24, 1 },
911
          { 7, 6, 1 },
912
          { 27, 8, 1 },
913
          { 6, 8, 1 },
914
          { 6, 23, 1 },
915
          { 8, 9, 1 },
916
          { 0, 0, 0}
917
        }
918
      },
919
      { 'R', "GAX", // R GAX Purine (G or A) R -> Y
920
        {
921
          { "P",  "P",  0.000,  8.910,  0.000},
922
          { "O1P",  "O",  0.220,  10.199,  0.072},
923
          { "O2P",  "O",  0.790,  8.819,  -0.141},
924
          { "O5'",  "O",  0.250,  7.730,  0.126},
925
          { "C5'",  "C",  -0.690,  7.700,  0.269},
926
          { "C4'",  "C",  0.040,  7.590,  0.442},
927
          { "O4'",  "O",  0.250,  6.220,  0.510},
928
          { "C3'",  "C",  1.440,  8.200,  0.442},
929
          { "O3'",  "O",  1.830,  8.750,  0.590},
930
          { "C2'",  "C",  2.320,  7.040,  0.384},
931
          { "C1'",  "C",  1.610,  5.860,  0.485},
932
          { "N9",  "N",  1.660,  4.630,  0.325},
933
          { "C8",  "C",  1.580,  4.819,  0.035},
934
          { "N7",  "N",  1.660,  3.920,  -0.183},
935
          { "C5",  "C",  1.800,  2.700,  0.021},
936
          { "C6",  "C",  1.930,  1.390,  -0.246},
937
          { "N1",  "N",  2.050,  0.920,  1.001},
938
          { "C2",  "C",  2.050,  2.280,  1.161},
939
          { "N2",  "N",  2.180,  3.010,  1.588},
940
          { "N3",  "N",  1.920,  3.290,  0.847},
941
          { "C4",  "C",  1.800,  3.330,  0.435},
942
          { "H5'1",  "H",  -1.179,  8.685,  0.271},
943
          { "H5'2",  "H",  -1.449,  6.917,  0.250},
944
          { "H4'",  "H",  -0.582,  8.159,  0.531},
945
          { "", "", 0.0, 0.0, 0.0 }
946
        },
947
        {
948
          { 3, 1, 2 },
949
          { 14, 15, 1 },
950
          { 14, 13, 2 },
951
          { 16, 15, 2 },
952
          { 16, 17, 1 },
953
          { 1, 2, 1 },
954
          { 1, 4, 1 },
955
          { 15, 21, 1 },
956
          { 13, 12, 1 },
957
          { 17, 18, 2 },
958
          { 4, 5, 1 },
959
          { 21, 12, 1 },
960
          { 21, 20, 2 },
961
          { 12, 11, 1 },
962
          { 23, 5, 1 },
963
          { 5, 22, 1 },
964
          { 5, 6, 1 },
965
          { 18, 20, 1 },
966
          { 18, 19, 1 },
967
          { 10, 11, 1 },
968
          { 10, 8, 1 },
969
          { 11, 7, 1 },
970
          { 7, 6, 1 },
971
          { 6, 8, 1 },
972
          { 6, 24, 1 },
973
          { 8, 9, 1 },
974
          { 0, 0, 0}
975
        }
976
      },
977
      { 'Y', "TCX", // Y TCX Pyrimidine (T or C) Y -> R
978
        {
979
          { "P",  "P",  0.000,  8.910,  0.000},
980
          { "O1P",  "O",  0.220,  10.200,  0.072},
981
          { "O2P",  "O",  0.790,  8.820,  -0.141},
982
          { "O5'",  "O",  0.250,  7.730,  0.126},
983
          { "C5'",  "C",  -0.690,  7.699,  0.269},
984
          { "C4'",  "C",  0.040,  7.590,  0.442},
985
          { "O4'",  "O",  0.250,  6.220,  0.510},
986
          { "C3'",  "C",  1.440,  8.200,  0.442},
987
          { "O3'",  "O",  1.830,  8.750,  0.590},
988
          { "C2'",  "C",  2.320,  7.040,  0.384},
989
          { "C1'",  "C",  1.610,  5.860,  0.485},
990
          { "N1",  "N",  1.660,  4.629,  0.325},
991
          { "C2",  "C",  1.810,  3.420,  0.487},
992
          { "O2",  "O",  1.900,  3.640,  0.827},
993
          { "N3",  "N",  1.850,  2.360,  0.174},
994
          { "C4",  "C",  1.760,  2.980,  -0.291},
995
          { "C5",  "C",  1.610,  4.380,  -0.204},
996
          { "C6",  "C",  1.560,  5.010,  0.051},
997
          { "H5'1",  "H",  -1.180,  8.685,  0.271},
998
          { "H5'2",  "H",  -1.449,  6.916,  0.250},
999
          { "H4'",  "H",  -0.582,  8.159,  0.531},
1000
          { "H1'",  "H",  2.073,  5.802,  0.656},
1001
          { "H2'1",  "H",  2.352,  7.073,  0.228},
1002
          { "H2'2",  "H",  3.344,  7.145,  0.439},
1003
          { "H3'",  "H",  1.510,  9.056,  0.362},
1004
          { "H6",  "H",  1.439,  6.089,  0.034},
1005
          { "", "", 0.0, 0.0, 0.0 }
1006
        },
1007
        {
1008
          { 3, 1, 2 },
1009
          { 17, 16, 1 },
1010
          { 17, 18, 2 },
1011
          { 16, 15, 2 },
1012
          { 1, 2, 1 },
1013
          { 1, 4, 1 },
1014
          { 26, 18, 1 },
1015
          { 18, 12, 1 },
1016
          { 15, 13, 1 },
1017
          { 4, 5, 1 },
1018
          { 12, 13, 1 },
1019
          { 12, 11, 1 },
1020
          { 23, 10, 1 },
1021
          { 13, 14, 2 },
1022
          { 20, 5, 1 },
1023
          { 5, 19, 1 },
1024
          { 5, 6, 1 },
1025
          { 10, 11, 1 },
1026
          { 10, 24, 1 },
1027
          { 10, 8, 1 },
1028
          { 11, 7, 1 },
1029
          { 11, 22, 1 },
1030
          { 7, 6, 1 },
1031
          { 25, 8, 1 },
1032
          { 6, 8, 1 },
1033
          { 6, 21, 1 },
1034
          { 8, 9, 1 },
1035
          { 0, 0, 0}
1036
        }
1037
      },
1038
      { 'K', "GTX", // K GTX Keto (G or T) K -> M
1039
        {
1040
          { "P",  "P",  0.000,  8.910,  0.000},
1041
          { "O1P",  "O",  0.220,  10.199,  0.072},
1042
          { "O2P",  "O",  0.790,  8.819,  -0.141},
1043
          { "O5'",  "O",  0.250,  7.730,  0.126},
1044
          { "C5'",  "C",  -0.690,  7.700,  0.269},
1045
          { "C4'",  "C",  0.040,  7.590,  0.442},
1046
          { "O4'",  "O",  0.250,  6.220,  0.510},
1047
          { "C3'",  "C",  1.440,  8.200,  0.442},
1048
          { "O3'",  "O",  1.830,  8.750,  0.590},
1049
          { "C2'",  "C",  2.320,  7.040,  0.384},
1050
          { "C1'",  "C",  1.610,  5.860,  0.485},
1051
          { "N9",  "N",  1.660,  4.630,  0.325},
1052
          { "H5'1",  "H",  -1.179,  8.685,  0.271},
1053
          { "H5'2",  "H",  -1.449,  6.917,  0.250},
1054
          { "H4'",  "H",  -0.582,  8.159,  0.531},
1055
          { "", "", 0.0, 0.0, 0.0 }
1056
        },
1057
        {
1058
          { 3, 1, 2 },
1059
          { 1, 2, 1 },
1060
          { 1, 4, 1 },
1061
          { 4, 5, 1 },
1062
          { 12, 11, 1 },
1063
          { 14, 5, 1 },
1064
          { 5, 13, 1 },
1065
          { 5, 6, 1 },
1066
          { 10, 11, 1 },
1067
          { 10, 8, 1 },
1068
          { 11, 7, 1 },
1069
          { 7, 6, 1 },
1070
          { 6, 8, 1 },
1071
          { 6, 15, 1 },
1072
          { 8, 9, 1 },
1073
          { 0, 0, 0}
1074
        }
1075
      },
1076
      { 'M', "ACX", // M ACX Amino (A or C) M -> K
1077
        {
1078
          { "P",  "P",  0.000,  8.910,  0.000},
1079
          { "O1P",  "O",  0.220,  10.201,  0.072},
1080
          { "O2P",  "O",  0.790,  8.821,  -0.141},
1081
          { "O5'",  "O",  0.250,  7.730,  0.126},
1082
          { "C5'",  "C",  -0.690,  7.701,  0.269},
1083
          { "C4'",  "C",  0.040,  7.590,  0.442},
1084
          { "O4'",  "O",  0.250,  6.221,  0.510},
1085
          { "C3'",  "C",  1.440,  8.201,  0.442},
1086
          { "O3'",  "O",  1.830,  8.750,  0.590},
1087
          { "C2'",  "C",  2.320,  7.040,  0.384},
1088
          { "C1'",  "C",  1.610,  5.860,  0.485},
1089
          { "N9",  "N",  1.660,  4.630,  0.325},
1090
          { "H5'1",  "H",  -1.178,  8.686,  0.271},
1091
          { "H5'2",  "H",  -1.450,  6.919,  0.250},
1092
          { "H4'",  "H",  -0.582,  8.160,  0.531},
1093
          { "H1'",  "H",  2.073,  5.804,  0.656},
1094
          { "H2'1",  "H",  2.353,  7.073,  0.228},
1095
          { "H2'2",  "H",  3.344,  7.146,  0.439},
1096
          { "H3'",  "H",  1.510,  9.057,  0.362},
1097
          { "", "", 0.0, 0.0, 0.0 }
1098
        },
1099
        {
1100
          { 3, 1, 2 },
1101
          { 1, 2, 1 },
1102
          { 1, 4, 1 },
1103
          { 4, 5, 1 },
1104
          { 12, 11, 1 },
1105
          { 17, 10, 1 },
1106
          { 14, 5, 1 },
1107
          { 5, 13, 1 },
1108
          { 5, 6, 1 },
1109
          { 10, 11, 1 },
1110
          { 10, 18, 1 },
1111
          { 10, 8, 1 },
1112
          { 11, 7, 1 },
1113
          { 11, 16, 1 },
1114
          { 7, 6, 1 },
1115
          { 19, 8, 1 },
1116
          { 6, 8, 1 },
1117
          { 6, 15, 1 },
1118
          { 8, 9, 1 },
1119
          { 0, 0, 0}
1120
        }
1121
      },
1122
      { 'S', "GCX", // S GCX Strong (G or C) S -> W
1123
        {
1124
          { "P",  "P",  0.000,  8.910,  0.000},
1125
          { "O1P",  "O",  0.220,  10.199,  0.072},
1126
          { "O2P",  "O",  0.790,  8.819,  -0.141},
1127
          { "O5'",  "O",  0.250,  7.730,  0.126},
1128
          { "C5'",  "C",  -0.690,  7.700,  0.269},
1129
          { "C4'",  "C",  0.040,  7.590,  0.442},
1130
          { "O4'",  "O",  0.250,  6.220,  0.510},
1131
          { "C3'",  "C",  1.440,  8.200,  0.442},
1132
          { "O3'",  "O",  1.830,  8.750,  0.590},
1133
          { "C2'",  "C",  2.320,  7.040,  0.384},
1134
          { "C1'",  "C",  1.610,  5.860,  0.485},
1135
          { "N9",  "N",  1.660,  4.630,  0.325},
1136
          { "H5'1",  "H",  -1.179,  8.685,  0.271},
1137
          { "H5'2",  "H",  -1.449,  6.917,  0.250},
1138
          { "H4'",  "H",  -0.582,  8.159,  0.531},
1139
          { "", "", 0.0, 0.0, 0.0 }
1140
        },
1141
        {
1142
          { 3, 1, 2 },
1143
          { 1, 2, 1 },
1144
          { 1, 4, 1 },
1145
          { 4, 5, 1 },
1146
          { 12, 11, 1 },
1147
          { 14, 5, 1 },
1148
          { 5, 13, 1 },
1149
          { 5, 6, 1 },
1150
          { 10, 11, 1 },
1151
          { 10, 8, 1 },
1152
          { 11, 7, 1 },
1153
          { 7, 6, 1 },
1154
          { 6, 8, 1 },
1155
          { 6, 15, 1 },
1156
          { 8, 9, 1 },
1157
          { 0, 0, 0}
1158
        }
1159
      },
1160
      { 'W', "ATX", // W ATX Weak (A or T) W -> S
1161
        {
1162
          { "P",  "P",  0.000,  8.910,  0.000},
1163
          { "O1P",  "O",  0.220,  10.201,  0.072},
1164
          { "O2P",  "O",  0.790,  8.821,  -0.141},
1165
          { "O5'",  "O",  0.250,  7.730,  0.126},
1166
          { "C5'",  "C",  -0.690,  7.701,  0.269},
1167
          { "C4'",  "C",  0.040,  7.590,  0.442},
1168
          { "O4'",  "O",  0.250,  6.221,  0.510},
1169
          { "C3'",  "C",  1.440,  8.201,  0.442},
1170
          { "O3'",  "O",  1.830,  8.750,  0.590},
1171
          { "C2'",  "C",  2.320,  7.040,  0.384},
1172
          { "C1'",  "C",  1.610,  5.860,  0.485},
1173
          { "N9",  "N",  1.660,  4.630,  0.325},
1174
          { "H5'1",  "H",  -1.178,  8.686,  0.271},
1175
          { "H5'2",  "H",  -1.450,  6.919,  0.250},
1176
          { "H4'",  "H",  -0.582,  8.160,  0.531},
1177
          { "H1'",  "H",  2.073,  5.804,  0.656},
1178
          { "H2'1",  "H",  2.353,  7.073,  0.228},
1179
          { "H2'2",  "H",  3.344,  7.146,  0.439},
1180
          { "H3'",  "H",  1.510,  9.057,  0.362},
1181
          { "", "", 0.0, 0.0, 0.0 }
1182
        },
1183
        {
1184
          { 3, 1, 2 },
1185
          { 1, 2, 1 },
1186
          { 1, 4, 1 },
1187
          { 4, 5, 1 },
1188
          { 12, 11, 1 },
1189
          { 17, 10, 1 },
1190
          { 14, 5, 1 },
1191
          { 5, 13, 1 },
1192
          { 5, 6, 1 },
1193
          { 10, 11, 1 },
1194
          { 10, 18, 1 },
1195
          { 10, 8, 1 },
1196
          { 11, 7, 1 },
1197
          { 11, 16, 1 },
1198
          { 7, 6, 1 },
1199
          { 19, 8, 1 },
1200
          { 6, 8, 1 },
1201
          { 6, 15, 1 },
1202
          { 8, 9, 1 },
1203
          { 0, 0, 0}
1204
        }
1205
      },
1206
      { 'B', "GTC", // B GTC (G T C) B -> V
1207
        {
1208
          { "P",  "P",  0.000,  8.910,  0.000},
1209
          { "O1P",  "O",  0.220,  10.199,  0.072},
1210
          { "O2P",  "O",  0.790,  8.819,  -0.141},
1211
          { "O5'",  "O",  0.250,  7.730,  0.126},
1212
          { "C5'",  "C",  -0.690,  7.700,  0.269},
1213
          { "C4'",  "C",  0.040,  7.590,  0.442},
1214
          { "O4'",  "O",  0.250,  6.220,  0.510},
1215
          { "C3'",  "C",  1.440,  8.200,  0.442},
1216
          { "O3'",  "O",  1.830,  8.750,  0.590},
1217
          { "C2'",  "C",  2.320,  7.040,  0.384},
1218
          { "C1'",  "C",  1.610,  5.860,  0.485},
1219
          { "N9",  "N",  1.660,  4.630,  0.325},
1220
          { "H5'1",  "H",  -1.179,  8.685,  0.271},
1221
          { "H5'2",  "H",  -1.449,  6.917,  0.250},
1222
          { "H4'",  "H",  -0.582,  8.159,  0.531},
1223
          { "", "", 0.0, 0.0, 0.0 }
1224
        },
1225
        {
1226
          { 3, 1, 2 },
1227
          { 1, 2, 1 },
1228
          { 1, 4, 1 },
1229
          { 4, 5, 1 },
1230
          { 12, 11, 1 },
1231
          { 14, 5, 1 },
1232
          { 5, 13, 1 },
1233
          { 5, 6, 1 },
1234
          { 10, 11, 1 },
1235
          { 10, 8, 1 },
1236
          { 11, 7, 1 },
1237
          { 7, 6, 1 },
1238
          { 6, 8, 1 },
1239
          { 6, 15, 1 },
1240
          { 8, 9, 1 },
1241
          { 0, 0, 0}
1242
        }
1243
      },
1244
      { 'D', "GAT", // D GAT (G A T) D -> H
1245
        {
1246
          { "P",  "P",  0.000,  8.910,  0.000},
1247
          { "O1P",  "O",  0.220,  10.199,  0.072},
1248
          { "O2P",  "O",  0.790,  8.819,  -0.141},
1249
          { "O5'",  "O",  0.250,  7.730,  0.126},
1250
          { "C5'",  "C",  -0.690,  7.700,  0.269},
1251
          { "C4'",  "C",  0.040,  7.590,  0.442},
1252
          { "O4'",  "O",  0.250,  6.220,  0.510},
1253
          { "C3'",  "C",  1.440,  8.200,  0.442},
1254
          { "O3'",  "O",  1.830,  8.750,  0.590},
1255
          { "C2'",  "C",  2.320,  7.040,  0.384},
1256
          { "C1'",  "C",  1.610,  5.860,  0.485},
1257
          { "N9",  "N",  1.660,  4.630,  0.325},
1258
          { "H5'1",  "H",  -1.179,  8.685,  0.271},
1259
          { "H5'2",  "H",  -1.449,  6.917,  0.250},
1260
          { "H4'",  "H",  -0.582,  8.159,  0.531},
1261
          { "", "", 0.0, 0.0, 0.0 }
1262
        },
1263
        {
1264
          { 3, 1, 2 },
1265
          { 1, 2, 1 },
1266
          { 1, 4, 1 },
1267
          { 4, 5, 1 },
1268
          { 12, 11, 1 },
1269
          { 14, 5, 1 },
1270
          { 5, 13, 1 },
1271
          { 5, 6, 1 },
1272
          { 10, 11, 1 },
1273
          { 10, 8, 1 },
1274
          { 11, 7, 1 },
1275
          { 7, 6, 1 },
1276
          { 6, 8, 1 },
1277
          { 6, 15, 1 },
1278
          { 8, 9, 1 },
1279
          { 0, 0, 0}
1280
        }
1281
      },
1282
      { 'H', "ACT", // H ACT (A C T) H -> D
1283
        {
1284
          { "P",  "P",  0.000,  8.910,  0.000},
1285
          { "O1P",  "O",  0.220,  10.201,  0.072},
1286
          { "O2P",  "O",  0.790,  8.821,  -0.141},
1287
          { "O5'",  "O",  0.250,  7.730,  0.126},
1288
          { "C5'",  "C",  -0.690,  7.701,  0.269},
1289
          { "C4'",  "C",  0.040,  7.590,  0.442},
1290
          { "O4'",  "O",  0.250,  6.221,  0.510},
1291
          { "C3'",  "C",  1.440,  8.201,  0.442},
1292
          { "O3'",  "O",  1.830,  8.750,  0.590},
1293
          { "C2'",  "C",  2.320,  7.040,  0.384},
1294
          { "C1'",  "C",  1.610,  5.860,  0.485},
1295
          { "N9",  "N",  1.660,  4.630,  0.325},
1296
          { "H5'1",  "H",  -1.178,  8.686,  0.271},
1297
          { "H5'2",  "H",  -1.450,  6.919,  0.250},
1298
          { "H4'",  "H",  -0.582,  8.160,  0.531},
1299
          { "H1'",  "H",  2.073,  5.804,  0.656},
1300
          { "H2'1",  "H",  2.353,  7.073,  0.228},
1301
          { "H2'2",  "H",  3.344,  7.146,  0.439},
1302
          { "H3'",  "H",  1.510,  9.057,  0.362},
1303
          { "", "", 0.0, 0.0, 0.0 }
1304
        },
1305
        {
1306
          { 3, 1, 2 },
1307
          { 1, 2, 1 },
1308
          { 1, 4, 1 },
1309
          { 4, 5, 1 },
1310
          { 12, 11, 1 },
1311
          { 17, 10, 1 },
1312
          { 14, 5, 1 },
1313
          { 5, 13, 1 },
1314
          { 5, 6, 1 },
1315
          { 10, 11, 1 },
1316
          { 10, 18, 1 },
1317
          { 10, 8, 1 },
1318
          { 11, 7, 1 },
1319
          { 11, 16, 1 },
1320
          { 7, 6, 1 },
1321
          { 19, 8, 1 },
1322
          { 6, 8, 1 },
1323
          { 6, 15, 1 },
1324
          { 8, 9, 1 },
1325
          { 0, 0, 0}
1326
        }
1327
      },
1328
      { 'V', "GCA", // V GCA (G C A) V -> B
1329
        {
1330
          { "P",  "P",  0.000,  8.910,  0.000},
1331
          { "O1P",  "O",  0.220,  10.199,  0.072},
1332
          { "O2P",  "O",  0.790,  8.819,  -0.141},
1333
          { "O5'",  "O",  0.250,  7.730,  0.126},
1334
          { "C5'",  "C",  -0.690,  7.700,  0.269},
1335
          { "C4'",  "C",  0.040,  7.590,  0.442},
1336
          { "O4'",  "O",  0.250,  6.220,  0.510},
1337
          { "C3'",  "C",  1.440,  8.200,  0.442},
1338
          { "O3'",  "O",  1.830,  8.750,  0.590},
1339
          { "C2'",  "C",  2.320,  7.040,  0.384},
1340
          { "C1'",  "C",  1.610,  5.860,  0.485},
1341
          { "N9",  "N",  1.660,  4.630,  0.325},
1342
          { "H5'1",  "H",  -1.179,  8.685,  0.271},
1343
          { "H5'2",  "H",  -1.449,  6.917,  0.250},
1344
          { "H4'",  "H",  -0.582,  8.159,  0.531},
1345
          { "", "", 0.0, 0.0, 0.0 }
1346
        },
1347
        {
1348
          { 3, 1, 2 },
1349
          { 1, 2, 1 },
1350
          { 1, 4, 1 },
1351
          { 4, 5, 1 },
1352
          { 12, 11, 1 },
1353
          { 14, 5, 1 },
1354
          { 5, 13, 1 },
1355
          { 5, 6, 1 },
1356
          { 10, 11, 1 },
1357
          { 10, 8, 1 },
1358
          { 11, 7, 1 },
1359
          { 7, 6, 1 },
1360
          { 6, 8, 1 },
1361
          { 6, 15, 1 },
1362
          { 8, 9, 1 },
1363
          { 0, 0, 0}
1364
        }
1365
      }
1366
    };
1367
  ResidueRecord DNAPairResidues[IUPAC_DNA_max] =
1368
    {
1369
      { 0, "", // DNA Pair Start
1370
        {
1371
          { "HTER",  "H",  5.721,  9.511,  -2.837},
1372
          { "OXT",  "O",  5.601,  8.904,  -2.915},
1373
          { "", "", 0.0, 0.0, 0.0 }
1374
        },
1375
        {
1376
          { 2, 1, 1},
1377
          { 0, 0, 0}
1378
        }
1379
      },
1380
      { 0, "", // DNA Pair End
1381
        {
1382
          { "HCAP",  "H",  1.613,  9.365,  2.752},
1383
          { "", "", 0.0, 0.0, 0.0 }
1384
        },
1385
        {
1386
          { 0, 0, 0}
1387
        }
1388
      },
1389
      { 'N', "XNA", // N XNA Pair Unknown Nucleic Acid N -> N
1390
        {
1391
          { "P",  "P",  4.160,  8.910,  -2.960},
1392
          { "O1P",  "O",  3.940,  10.200,  -3.032},
1393
          { "O2P",  "O",  3.370,  8.820,  -2.819},
1394
          { "O5'",  "O",  3.910,  7.730,  -3.086},
1395
          { "C5'",  "C",  4.850,  7.701,  3.054},
1396
          { "C4'",  "C",  4.120,  7.590,  2.881},
1397
          { "O4'",  "O",  3.910,  6.220,  2.813},
1398
          { "C3'",  "C",  2.720,  8.200,  2.882},
1399
          { "O3'",  "O",  2.330,  8.750,  2.733},
1400
          { "C2'",  "C",  1.840,  7.040,  2.939},
1401
          { "C1'",  "C",  2.550,  5.860,  2.838},
1402
          { "N9",  "N",  2.500,  4.630,  2.998},
1403
          { "H5'1",  "H",  5.339,  8.686,  3.052},
1404
          { "H5'2",  "H",  5.611,  6.918,  3.073},
1405
          { "H4'",  "H",  4.743,  8.159,  2.792},
1406
          { "", "", 0.0, 0.0, 0.0 }
1407
        },
1408
        {
1409
          { 3, 1, 2 },
1410
          { 1, 2, 1 },
1411
          { 1, 4, 1 },
1412
          { 4, 5, 1 },
1413
          { 12, 11, 1 },
1414
          { 14, 5, 1 },
1415
          { 5, 13, 1 },
1416
          { 5, 6, 1 },
1417
          { 10, 11, 1 },
1418
          { 10, 8, 1 },
1419
          { 11, 7, 1 },
1420
          { 7, 6, 1 },
1421
          { 6, 8, 1 },
1422
          { 6, 15, 1 },
1423
          { 8, 9, 1 },
1424
          { 0, 0, 0}
1425
        }
1426
      },
1427
      { 'T', "DT", // T DT  Pair Thymine T -> A
1428
        {
1429
          { "P",  "P",  4.160,  8.910,  -2.960},
1430
          { "O1P",  "O",  3.940,  10.200,  -3.032},
1431
          { "O2P",  "O",  3.370,  8.820,  -2.819},
1432
          { "O5'",  "O",  3.910,  7.730,  -3.086},
1433
          { "C5'",  "C",  4.850,  7.699,  3.054},
1434
          { "C4'",  "C",  4.120,  7.590,  2.881},
1435
          { "O4'",  "O",  3.910,  6.220,  2.813},
1436
          { "C3'",  "C",  2.720,  8.199,  2.881},
1437
          { "O3'",  "O",  2.330,  8.750,  2.733},
1438
          { "C2'",  "C",  1.840,  7.039,  2.939},
1439
          { "C1'",  "C",  2.550,  5.859,  2.838},
1440
          { "N1",  "N",  2.500,  4.629,  2.998},
1441
          { "C2",  "C",  2.350,  3.419,  2.836},
1442
          { "O2",  "O",  2.260,  3.640,  2.496},
1443
          { "N3",  "N",  2.310,  2.360,  -3.135},
1444
          { "C4",  "C",  2.400,  2.979,  -2.669},
1445
          { "O4",  "O",  2.350,  2.820,  -2.243},
1446
          { "C5",  "C",  2.550,  4.379,  -2.756},
1447
          { "C5M",  "C",  2.660,  5.399,  -2.531},
1448
          { "C6",  "C",  2.600,  5.010,  -3.011},
1449
          { "H5'1",  "H",  5.341,  8.684,  3.052},
1450
          { "H5'2",  "H",  5.610,  6.916,  3.073},
1451
          { "H4'",  "H",  4.743,  8.159,  2.792},
1452
          { "H1'",  "H",  2.088,  5.802,  2.667},
1453
          { "H2'1",  "H",  1.809,  7.072,  3.095},
1454
          { "H2'2",  "H",  0.817,  7.144,  2.884},
1455
          { "H3'",  "H",  2.651,  9.055,  2.961},
1456
          { "H6",  "H",  2.722,  6.088,  -2.994},
1457
          { "H51",  "H",  1.692,  5.916,  -2.518},
1458
          { "H52",  "H",  3.429,  6.117,  -2.587},
1459
          { "H53",  "H",  2.941,  5.100,  -2.336},
1460
          { "H3",  "H",  2.205,  1.414,  2.980},
1461
          { "", "", 0.0, 0.0, 0.0 }
1462
        },
1463
        {
1464
          { 31, 19, 1 },
1465
          { 29, 19, 1 },
1466
          { 19, 30, 1 },
1467
          { 19, 18, 1 },
1468
          { 17, 16, 2 },
1469
          { 3, 1, 2 },
1470
          { 18, 16, 1 },
1471
          { 18, 20, 2 },
1472
          { 16, 15, 1 },
1473
          { 1, 2, 1 },
1474
          { 1, 4, 1 },
1475
          { 28, 20, 1 },
1476
          { 20, 12, 1 },
1477
          { 15, 32, 1 },
1478
          { 15, 13, 1 },
1479
          { 4, 5, 1 },
1480
          { 12, 13, 1 },
1481
          { 12, 11, 1 },
1482
          { 25, 10, 1 },
1483
          { 13, 14, 2 },
1484
          { 22, 5, 1 },
1485
          { 5, 21, 1 },
1486
          { 5, 6, 1 },
1487
          { 10, 11, 1 },
1488
          { 10, 26, 1 },
1489
          { 10, 8, 1 },
1490
          { 11, 7, 1 },
1491
          { 11, 24, 1 },
1492
          { 7, 6, 1 },
1493
          { 27, 8, 1 },
1494
          { 6, 8, 1 },
1495
          { 6, 23, 1 },
1496
          { 8, 9, 1 },
1497
          { 0, 0, 0}
1498
        }
1499
      },
1500
      { 'G', "DG", // G DG  Pair Guanine G -> C
1501
        {
1502
          { "P",  "P",  4.160,  8.910,  -2.960},
1503
          { "O1P",  "O",  3.940,  10.200,  -3.032},
1504
          { "O2P",  "O",  3.370,  8.820,  -2.819},
1505
          { "O5'",  "O",  3.910,  7.730,  -3.086},
1506
          { "C5'",  "C",  4.850,  7.701,  3.054},
1507
          { "C4'",  "C",  4.120,  7.590,  2.881},
1508
          { "O4'",  "O",  3.910,  6.220,  2.813},
1509
          { "C3'",  "C",  2.720,  8.200,  2.882},
1510
          { "O3'",  "O",  2.330,  8.750,  2.733},
1511
          { "C2'",  "C",  1.840,  7.040,  2.939},
1512
          { "C1'",  "C",  2.550,  5.860,  2.838},
1513
          { "N9",  "N",  2.500,  4.630,  2.998},
1514
          { "C8",  "C",  2.580,  4.820,  -2.995},
1515
          { "N7",  "N",  2.500,  3.920,  -2.777},
1516
          { "C5",  "C",  2.360,  2.700,  -2.981},
1517
          { "C6",  "C",  2.230,  1.389,  -2.714},
1518
          { "O6",  "O",  2.210,  1.710,  -1.923},
1519
          { "N1",  "N",  2.110,  0.920,  2.323},
1520
          { "C2",  "C",  2.110,  2.281,  2.162},
1521
          { "N2",  "N",  1.980,  3.010,  1.735},
1522
          { "N3",  "N",  2.240,  3.290,  2.477},
1523
          { "C4",  "C",  2.360,  3.330,  2.889},
1524
          { "H5'1",  "H",  5.339,  8.686,  3.052},
1525
          { "H5'2",  "H",  5.611,  6.918,  3.073},
1526
          { "H4'",  "H",  4.743,  8.159,  2.792},
1527
          { "H1'",  "H",  2.088,  5.804,  2.667},
1528
          { "H2'1",  "H",  1.808,  7.073,  3.095},
1529
          { "H2'2",  "H",  0.817,  7.146,  2.884},
1530
          { "H3'",  "H",  2.651,  9.057,  2.961},
1531
          { "H8",  "H",  2.700,  5.866,  -2.942},
1532
          { "H1",  "H",  2.018,  0.768,  1.073},
1533
          { "H21",  "H",  1.981,  4.016,  1.799},
1534
          { "H22",  "H",  1.880,  2.906,  1.388},
1535
          { "", "", 0.0, 0.0, 0.0 }
1536
        },
1537
        {
1538
          { 3, 1, 2 },
1539
          { 1, 2, 1 },
1540
          { 1, 4, 1 },
1541
          { 17, 16, 2 },
1542
          { 14, 13, 2 },
1543
          { 14, 15, 1 },
1544
          { 30, 13, 1 },
1545
          { 13, 12, 1 },
1546
          { 16, 15, 1 },
1547
          { 16, 18, 1 },
1548
          { 15, 22, 2 },
1549
          { 4, 5, 1 },
1550
          { 27, 10, 1 },
1551
          { 24, 5, 1 },
1552
          { 12, 22, 1 },
1553
          { 12, 11, 1 },
1554
          { 18, 31, 1 },
1555
          { 18, 19, 1 },
1556
          { 5, 23, 1 },
1557
          { 5, 6, 1 },
1558
          { 22, 21, 1 },
1559
          { 10, 11, 1 },
1560
          { 10, 28, 1 },
1561
          { 10, 8, 1 },
1562
          { 29, 8, 1 },
1563
          { 11, 7, 1 },
1564
          { 11, 26, 1 },
1565
          { 19, 21, 2 },
1566
          { 19, 20, 1 },
1567
          { 6, 7, 1 },
1568
          { 6, 8, 1 },
1569
          { 6, 25, 1 },
1570
          { 8, 9, 1 },
1571
          { 33, 20, 1 },
1572
          { 20, 32, 1 },
1573
          { 0, 0, 0}
1574
        }
1575
      },
1576
      { 'C', "DC", // C DC  Pair Cytosine C -> G
1577
        {
1578
          { "P",  "P",  4.160,  8.910,  -2.960},
1579
          { "O1P",  "O",  3.940,  10.200,  -3.032},
1580
          { "O2P",  "O",  3.370,  8.820,  -2.819},
1581
          { "O5'",  "O",  3.910,  7.731,  -3.086},
1582
          { "C5'",  "C",  4.850,  7.701,  3.054},
1583
          { "C4'",  "C",  4.120,  7.591,  2.882},
1584
          { "O4'",  "O",  3.910,  6.221,  2.813},
1585
          { "C3'",  "C",  2.720,  8.200,  2.882},
1586
          { "O3'",  "O",  2.330,  8.751,  2.733},
1587
          { "C2'",  "C",  1.840,  7.040,  2.939},
1588
          { "C1'",  "C",  2.550,  5.860,  2.838},
1589
          { "N1",  "N",  2.500,  4.630,  2.998},
1590
          { "C2",  "C",  2.350,  3.400,  2.838},
1591
          { "O2",  "O",  2.260,  3.690,  2.497},
1592
          { "N3",  "N",  2.300,  2.310,  -3.070},
1593
          { "C4",  "C",  2.400,  2.940,  -2.702},
1594
          { "N4",  "N",  2.350,  2.760,  -2.238},
1595
          { "C5",  "C",  2.550,  4.350,  -2.754},
1596
          { "C6",  "C",  2.600,  4.990,  -3.013},
1597
          { "H5'1",  "H",  5.340,  8.685,  3.052},
1598
          { "H5'2",  "H",  5.610,  6.918,  3.073},
1599
          { "H4'",  "H",  4.743,  8.160,  2.792},
1600
          { "H1'",  "H",  2.088,  5.804,  2.667},
1601
          { "H2'1",  "H",  1.808,  7.073,  3.095},
1602
          { "H2'2",  "H",  0.817,  7.146,  2.884},
1603
          { "H3'",  "H",  2.651,  9.056,  2.961},
1604
          { "H6",  "H",  2.723,  6.067,  -2.994},
1605
          { "H5",  "H",  2.621,  5.088,  -2.584},
1606
          { "H41",  "H",  2.233,  2.019,  -1.938},
1607
          { "H42",  "H",  2.429,  3.718,  -2.122},
1608
          { "", "", 0.0, 0.0, 0.0 }
1609
        },
1610
        {
1611
          { 30, 17, 1 },
1612
          { 28, 18, 1 },
1613
          { 17, 29, 1 },
1614
          { 17, 16, 1 },
1615
          { 3, 1, 2 },
1616
          { 18, 16, 1 },
1617
          { 18, 19, 2 },
1618
          { 16, 15, 2 },
1619
          { 1, 2, 1 },
1620
          { 1, 4, 1 },
1621
          { 27, 19, 1 },
1622
          { 15, 13, 1 },
1623
          { 19, 12, 1 },
1624
          { 4, 5, 1 },
1625
          { 12, 13, 1 },
1626
          { 12, 11, 1 },
1627
          { 13, 14, 2 },
1628
          { 24, 10, 1 },
1629
          { 21, 5, 1 },
1630
          { 5, 20, 1 },
1631
          { 5, 6, 1 },
1632
          { 10, 11, 1 },
1633
          { 10, 25, 1 },
1634
          { 10, 8, 1 },
1635
          { 11, 7, 1 },
1636
          { 11, 23, 1 },
1637
          { 7, 6, 1 },
1638
          { 26, 8, 1 },
1639
          { 6, 8, 1 },
1640
          { 6, 22, 1 },
1641
          { 8, 9, 1 },
1642
          { 0, 0, 0}
1643
        }
1644
      },
1645
      { 'A', "DA", // A DA  Pair Adenine A -> T
1646
        {
1647
          { "P",  "P",  4.160,  8.910,  -2.960},
1648
          { "O1P",  "O",  3.940,  10.200,  -3.032},
1649
          { "O2P",  "O",  3.370,  8.820,  -2.819},
1650
          { "O5'",  "O",  3.910,  7.730,  -3.086},
1651
          { "C5'",  "C",  4.850,  7.701,  3.054},
1652
          { "C4'",  "C",  4.120,  7.590,  2.881},
1653
          { "O4'",  "O",  3.910,  6.220,  2.813},
1654
          { "C3'",  "C",  2.720,  8.200,  2.882},
1655
          { "O3'",  "O",  2.330,  8.750,  2.733},
1656
          { "C2'",  "C",  1.840,  7.040,  2.939},
1657
          { "C1'",  "C",  2.550,  5.860,  2.838},
1658
          { "N9",  "N",  2.500,  4.630,  2.999},
1659
          { "C8",  "C",  2.580,  4.840,  -2.998},
1660
          { "N7",  "N",  2.510,  3.950,  -2.782},
1661
          { "C5",  "C",  2.360,  2.740,  -2.981},
1662
          { "C6",  "C",  2.230,  1.410,  -2.750},
1663
          { "N6",  "N",  2.220,  1.810,  -1.934},
1664
          { "N1",  "N",  2.110,  0.860,  2.361},
1665
          { "C2",  "C",  2.120,  2.170,  2.196},
1666
          { "N3",  "N",  2.240,  3.240,  2.482},
1667
          { "C4",  "C",  2.360,  3.330,  2.892},
1668
          { "H5'1",  "H",  5.339,  8.686,  3.052},
1669
          { "H5'2",  "H",  5.611,  6.918,  3.074},
1670
          { "H4'",  "H",  4.743,  8.159,  2.792},
1671
          { "H1'",  "H",  2.088,  5.803,  2.667},
1672
          { "H2'1",  "H",  1.808,  7.072,  3.095},
1673
          { "H2'2",  "H",  0.817,  7.145,  2.884},
1674
          { "H3'",  "H",  2.651,  9.056,  2.961},
1675
          { "H8",  "H",  2.692,  5.889,  -2.947},
1676
          { "H61",  "H",  2.311,  2.827,  -1.992},
1677
          { "H62",  "H",  2.122,  1.741,  -1.349},
1678
          { "H2",  "H",  2.014,  2.724,  1.813},
1679
          { "", "", 0.0, 0.0, 0.0 }
1680
        },
1681
        {
1682
          { 30, 17, 1 },
1683
          { 31, 17, 1 },
1684
          { 17, 16, 1 },
1685
          { 3, 1, 2 },
1686
          { 14, 15, 1 },
1687
          { 14, 13, 2 },
1688
          { 16, 15, 2 },
1689
          { 16, 18, 1 },
1690
          { 29, 13, 1 },
1691
          { 1, 2, 1 },
1692
          { 1, 4, 1 },
1693
          { 15, 21, 1 },
1694
          { 13, 12, 1 },
1695
          { 18, 19, 2 },
1696
          { 4, 5, 1 },
1697
          { 21, 12, 1 },
1698
          { 21, 20, 2 },
1699
          { 12, 11, 1 },
1700
          { 26, 10, 1 },
1701
          { 23, 5, 1 },
1702
          { 19, 20, 1 },
1703
          { 19, 32, 1 },
1704
          { 5, 22, 1 },
1705
          { 5, 6, 1 },
1706
          { 10, 11, 1 },
1707
          { 10, 27, 1 },
1708
          { 10, 8, 1 },
1709
          { 11, 7, 1 },
1710
          { 11, 25, 1 },
1711
          { 7, 6, 1 },
1712
          { 28, 8, 1 },
1713
          { 6, 8, 1 },
1714
          { 6, 24, 1 },
1715
          { 8, 9, 1 },
1716
          { 0, 0, 0}
1717
        }
1718
      },
1719
      { 'Y', "TCX", // Y TCX Pair Pyrimidine (T or C) Y -> R
1720
        {
1721
          { "P",  "P",  4.160,  8.910,  -2.960},
1722
          { "O1P",  "O",  3.940,  10.200,  -3.032},
1723
          { "O2P",  "O",  3.370,  8.820,  -2.819},
1724
          { "O5'",  "O",  3.910,  7.730,  -3.086},
1725
          { "C5'",  "C",  4.850,  7.699,  3.054},
1726
          { "C4'",  "C",  4.120,  7.590,  2.881},
1727
          { "O4'",  "O",  3.910,  6.220,  2.813},
1728
          { "C3'",  "C",  2.720,  8.199,  2.881},
1729
          { "O3'",  "O",  2.330,  8.750,  2.733},
1730
          { "C2'",  "C",  1.840,  7.039,  2.939},
1731
          { "C1'",  "C",  2.550,  5.859,  2.838},
1732
          { "N1",  "N",  2.500,  4.629,  2.998},
1733
          { "C2",  "C",  2.350,  3.419,  2.836},
1734
          { "O2",  "O",  2.260,  3.640,  2.496},
1735
          { "N3",  "N",  2.310,  2.360,  -3.135},
1736
          { "C4",  "C",  2.400,  2.979,  -2.669},
1737
          { "C5",  "C",  2.550,  4.379,  -2.756},
1738
          { "C6",  "C",  2.600,  5.010,  -3.011},
1739
          { "H5'1",  "H",  5.341,  8.684,  3.052},
1740
          { "H5'2",  "H",  5.610,  6.916,  3.073},
1741
          { "H4'",  "H",  4.743,  8.159,  2.792},
1742
          { "H1'",  "H",  2.088,  5.802,  2.667},
1743
          { "H2'1",  "H",  1.809,  7.072,  3.095},
1744
          { "H2'2",  "H",  0.817,  7.144,  2.884},
1745
          { "H3'",  "H",  2.651,  9.055,  2.961},
1746
          { "H6",  "H",  2.722,  6.088,  -2.994},
1747
          { "", "", 0.0, 0.0, 0.0 }
1748
        },
1749
        {
1750
          { 3, 1, 2 },
1751
          { 17, 16, 1 },
1752
          { 17, 18, 2 },
1753
          { 16, 15, 2 },
1754
          { 1, 2, 1 },
1755
          { 1, 4, 1 },
1756
          { 26, 18, 1 },
1757
          { 18, 12, 1 },
1758
          { 15, 13, 1 },
1759
          { 4, 5, 1 },
1760
          { 12, 13, 1 },
1761
          { 12, 11, 1 },
1762
          { 23, 10, 1 },
1763
          { 13, 14, 2 },
1764
          { 20, 5, 1 },
1765
          { 5, 19, 1 },
1766
          { 5, 6, 1 },
1767
          { 10, 11, 1 },
1768
          { 10, 24, 1 },
1769
          { 10, 8, 1 },
1770
          { 11, 7, 1 },
1771
          { 11, 22, 1 },
1772
          { 7, 6, 1 },
1773
          { 25, 8, 1 },
1774
          { 6, 8, 1 },
1775
          { 6, 21, 1 },
1776
          { 8, 9, 1 },
1777
          { 0, 0, 0}
1778
        }
1779
      },
1780
      { 'R', "GAX", // R GAX Pair Purine (G or A) R -> Y
1781
        {
1782
          { "P",  "P",  4.160,  8.910,  -2.960},
1783
          { "O1P",  "O",  3.940,  10.200,  -3.032},
1784
          { "O2P",  "O",  3.370,  8.820,  -2.819},
1785
          { "O5'",  "O",  3.910,  7.730,  -3.086},
1786
          { "C5'",  "C",  4.850,  7.701,  3.054},
1787
          { "C4'",  "C",  4.120,  7.590,  2.881},
1788
          { "O4'",  "O",  3.910,  6.220,  2.813},
1789
          { "C3'",  "C",  2.720,  8.200,  2.882},
1790
          { "O3'",  "O",  2.330,  8.750,  2.733},
1791
          { "C2'",  "C",  1.840,  7.040,  2.939},
1792
          { "C1'",  "C",  2.550,  5.860,  2.838},
1793
          { "N9",  "N",  2.500,  4.630,  2.998},
1794
          { "C8",  "C",  2.580,  4.820,  -2.995},
1795
          { "N7",  "N",  2.500,  3.920,  -2.777},
1796
          { "C5",  "C",  2.360,  2.700,  -2.981},
1797
          { "C6",  "C",  2.230,  1.389,  -2.714},
1798
          { "N1",  "N",  2.110,  0.920,  2.323},
1799
          { "C2",  "C",  2.110,  2.281,  2.162},
1800
          { "N2",  "N",  1.980,  3.010,  1.735},
1801
          { "N3",  "N",  2.240,  3.290,  2.477},
1802
          { "C4",  "C",  2.360,  3.330,  2.889},
1803
          { "H5'1",  "H",  5.339,  8.686,  3.052},
1804
          { "H5'2",  "H",  5.611,  6.918,  3.073},
1805
          { "H4'",  "H",  4.743,  8.159,  2.792},
1806
          { "", "", 0.0, 0.0, 0.0 }
1807
        },
1808
        {
1809
          { 3, 1, 2 },
1810
          { 14, 15, 1 },
1811
          { 14, 13, 2 },
1812
          { 16, 15, 2 },
1813
          { 16, 17, 1 },
1814
          { 1, 2, 1 },
1815
          { 1, 4, 1 },
1816
          { 15, 21, 1 },
1817
          { 13, 12, 1 },
1818
          { 17, 18, 2 },
1819
          { 4, 5, 1 },
1820
          { 21, 12, 1 },
1821
          { 21, 20, 2 },
1822
          { 12, 11, 1 },
1823
          { 23, 5, 1 },
1824
          { 5, 22, 1 },
1825
          { 5, 6, 1 },
1826
          { 18, 20, 1 },
1827
          { 18, 19, 1 },
1828
          { 10, 11, 1 },
1829
          { 10, 8, 1 },
1830
          { 11, 7, 1 },
1831
          { 7, 6, 1 },
1832
          { 6, 8, 1 },
1833
          { 6, 24, 1 },
1834
          { 8, 9, 1 },
1835
          { 0, 0, 0}
1836
        }
1837
      },
1838
      { 'M', "ACX", // M ACX Pair Amino (A or C) M -> K
1839
        {
1840
          { "P",  "P",  4.160,  8.910,  -2.960},
1841
          { "O1P",  "O",  3.940,  10.200,  -3.032},
1842
          { "O2P",  "O",  3.370,  8.820,  -2.819},
1843
          { "O5'",  "O",  3.910,  7.730,  -3.086},
1844
          { "C5'",  "C",  4.850,  7.701,  3.054},
1845
          { "C4'",  "C",  4.120,  7.590,  2.881},
1846
          { "O4'",  "O",  3.910,  6.220,  2.813},
1847
          { "C3'",  "C",  2.720,  8.200,  2.882},
1848
          { "O3'",  "O",  2.330,  8.750,  2.733},
1849
          { "C2'",  "C",  1.840,  7.040,  2.939},
1850
          { "C1'",  "C",  2.550,  5.860,  2.838},
1851
          { "N9",  "N",  2.500,  4.630,  2.999},
1852
          { "H5'1",  "H",  5.339,  8.686,  3.052},
1853
          { "H5'2",  "H",  5.611,  6.918,  3.074},
1854
          { "H4'",  "H",  4.743,  8.159,  2.792},
1855
          { "H1'",  "H",  2.088,  5.803,  2.667},
1856
          { "H2'1",  "H",  1.808,  7.072,  3.095},
1857
          { "H2'2",  "H",  0.817,  7.145,  2.884},
1858
          { "H3'",  "H",  2.651,  9.056,  2.961},
1859
          { "", "", 0.0, 0.0, 0.0 }
1860
        },
1861
        {
1862
          { 3, 1, 2 },
1863
          { 1, 2, 1 },
1864
          { 1, 4, 1 },
1865
          { 4, 5, 1 },
1866
          { 12, 11, 1 },
1867
          { 17, 10, 1 },
1868
          { 14, 5, 1 },
1869
          { 5, 13, 1 },
1870
          { 5, 6, 1 },
1871
          { 10, 11, 1 },
1872
          { 10, 18, 1 },
1873
          { 10, 8, 1 },
1874
          { 11, 7, 1 },
1875
          { 11, 16, 1 },
1876
          { 7, 6, 1 },
1877
          { 19, 8, 1 },
1878
          { 6, 8, 1 },
1879
          { 6, 15, 1 },
1880
          { 8, 9, 1 },
1881
          { 0, 0, 0}
1882
        }
1883
      },
1884
      { 'K', "GTX", // K GTX Pair Keto (G or T) K -> M
1885
        {
1886
          { "P",  "P",  4.160,  8.910,  -2.960},
1887
          { "O1P",  "O",  3.940,  10.200,  -3.032},
1888
          { "O2P",  "O",  3.370,  8.820,  -2.819},
1889
          { "O5'",  "O",  3.910,  7.730,  -3.086},
1890
          { "C5'",  "C",  4.850,  7.701,  3.054},
1891
          { "C4'",  "C",  4.120,  7.590,  2.881},
1892
          { "O4'",  "O",  3.910,  6.220,  2.813},
1893
          { "C3'",  "C",  2.720,  8.200,  2.882},
1894
          { "O3'",  "O",  2.330,  8.750,  2.733},
1895
          { "C2'",  "C",  1.840,  7.040,  2.939},
1896
          { "C1'",  "C",  2.550,  5.860,  2.838},
1897
          { "N9",  "N",  2.500,  4.630,  2.998},
1898
          { "H5'1",  "H",  5.339,  8.686,  3.052},
1899
          { "H5'2",  "H",  5.611,  6.918,  3.073},
1900
          { "H4'",  "H",  4.743,  8.159,  2.792},
1901
          { "", "", 0.0, 0.0, 0.0 }
1902
        },
1903
        {
1904
          { 3, 1, 2 },
1905
          { 1, 2, 1 },
1906
          { 1, 4, 1 },
1907
          { 4, 5, 1 },
1908
          { 12, 11, 1 },
1909
          { 14, 5, 1 },
1910
          { 5, 13, 1 },
1911
          { 5, 6, 1 },
1912
          { 10, 11, 1 },
1913
          { 10, 8, 1 },
1914
          { 11, 7, 1 },
1915
          { 7, 6, 1 },
1916
          { 6, 8, 1 },
1917
          { 6, 15, 1 },
1918
          { 8, 9, 1 },
1919
          { 0, 0, 0}
1920
        }
1921
      },
1922
      { 'W', "ATX", // W ATX Pair Weak (A or T) W -> S
1923
        {
1924
          { "P",  "P",  4.160,  8.910,  -2.960},
1925
          { "O1P",  "O",  3.940,  10.200,  -3.032},
1926
          { "O2P",  "O",  3.370,  8.820,  -2.819},
1927
          { "O5'",  "O",  3.910,  7.730,  -3.086},
1928
          { "C5'",  "C",  4.850,  7.701,  3.054},
1929
          { "C4'",  "C",  4.120,  7.590,  2.881},
1930
          { "O4'",  "O",  3.910,  6.220,  2.813},
1931
          { "C3'",  "C",  2.720,  8.200,  2.882},
1932
          { "O3'",  "O",  2.330,  8.750,  2.733},
1933
          { "C2'",  "C",  1.840,  7.040,  2.939},
1934
          { "C1'",  "C",  2.550,  5.860,  2.838},
1935
          { "N9",  "N",  2.500,  4.630,  2.999},
1936
          { "H5'1",  "H",  5.339,  8.686,  3.052},
1937
          { "H5'2",  "H",  5.611,  6.918,  3.074},
1938
          { "H4'",  "H",  4.743,  8.159,  2.792},
1939
          { "H1'",  "H",  2.088,  5.803,  2.667},
1940
          { "H2'1",  "H",  1.808,  7.072,  3.095},
1941
          { "H2'2",  "H",  0.817,  7.145,  2.884},
1942
          { "H3'",  "H",  2.651,  9.056,  2.961},
1943
          { "", "", 0.0, 0.0, 0.0 }
1944
        },
1945
        {
1946
          { 3, 1, 2 },
1947
          { 1, 2, 1 },
1948
          { 1, 4, 1 },
1949
          { 4, 5, 1 },
1950
          { 12, 11, 1 },
1951
          { 17, 10, 1 },
1952
          { 14, 5, 1 },
1953
          { 5, 13, 1 },
1954
          { 5, 6, 1 },
1955
          { 10, 11, 1 },
1956
          { 10, 18, 1 },
1957
          { 10, 8, 1 },
1958
          { 11, 7, 1 },
1959
          { 11, 16, 1 },
1960
          { 7, 6, 1 },
1961
          { 19, 8, 1 },
1962
          { 6, 8, 1 },
1963
          { 6, 15, 1 },
1964
          { 8, 9, 1 },
1965
          { 0, 0, 0}
1966
        }
1967
      },
1968
      { 'S', "GCX", // S GCX Pair Strong (G or C) S -> W
1969
        {
1970
          { "P",  "P",  4.160,  8.910,  -2.960},
1971
          { "O1P",  "O",  3.940,  10.200,  -3.032},
1972
          { "O2P",  "O",  3.370,  8.820,  -2.819},
1973
          { "O5'",  "O",  3.910,  7.730,  -3.086},
1974
          { "C5'",  "C",  4.850,  7.701,  3.054},
1975
          { "C4'",  "C",  4.120,  7.590,  2.881},
1976
          { "O4'",  "O",  3.910,  6.220,  2.813},
1977
          { "C3'",  "C",  2.720,  8.200,  2.882},
1978
          { "O3'",  "O",  2.330,  8.750,  2.733},
1979
          { "C2'",  "C",  1.840,  7.040,  2.939},
1980
          { "C1'",  "C",  2.550,  5.860,  2.838},
1981
          { "N9",  "N",  2.500,  4.630,  2.998},
1982
          { "H5'1",  "H",  5.339,  8.686,  3.052},
1983
          { "H5'2",  "H",  5.611,  6.918,  3.073},
1984
          { "H4'",  "H",  4.743,  8.159,  2.792},
1985
          { "", "", 0.0, 0.0, 0.0 }
1986
        },
1987
        {
1988
          { 3, 1, 2 },
1989
          { 1, 2, 1 },
1990
          { 1, 4, 1 },
1991
          { 4, 5, 1 },
1992
          { 12, 11, 1 },
1993
          { 14, 5, 1 },
1994
          { 5, 13, 1 },
1995
          { 5, 6, 1 },
1996
          { 10, 11, 1 },
1997
          { 10, 8, 1 },
1998
          { 11, 7, 1 },
1999
          { 7, 6, 1 },
2000
          { 6, 8, 1 },
2001
          { 6, 15, 1 },
2002
          { 8, 9, 1 },
2003
          { 0, 0, 0}
2004
        }
2005
      },
2006
      { 'V', "GCA", // V GCA Pair (G C A) V -> B
2007
        {
2008
          { "P",  "P",  4.160,  8.910,  -2.960},
2009
          { "O1P",  "O",  3.940,  10.200,  -3.032},
2010
          { "O2P",  "O",  3.370,  8.820,  -2.819},
2011
          { "O5'",  "O",  3.910,  7.730,  -3.086},
2012
          { "C5'",  "C",  4.850,  7.701,  3.054},
2013
          { "C4'",  "C",  4.120,  7.590,  2.881},
2014
          { "O4'",  "O",  3.910,  6.220,  2.813},
2015
          { "C3'",  "C",  2.720,  8.200,  2.882},
2016
          { "O3'",  "O",  2.330,  8.750,  2.733},
2017
          { "C2'",  "C",  1.840,  7.040,  2.939},
2018
          { "C1'",  "C",  2.550,  5.860,  2.838},
2019
          { "N9",  "N",  2.500,  4.630,  2.998},
2020
          { "H5'1",  "H",  5.339,  8.686,  3.052},
2021
          { "H5'2",  "H",  5.611,  6.918,  3.073},
2022
          { "H4'",  "H",  4.743,  8.159,  2.792},
2023
          { "", "", 0.0, 0.0, 0.0 }
2024
        },
2025
        {
2026
          { 3, 1, 2 },
2027
          { 1, 2, 1 },
2028
          { 1, 4, 1 },
2029
          { 4, 5, 1 },
2030
          { 12, 11, 1 },
2031
          { 14, 5, 1 },
2032
          { 5, 13, 1 },
2033
          { 5, 6, 1 },
2034
          { 10, 11, 1 },
2035
          { 10, 8, 1 },
2036
          { 11, 7, 1 },
2037
          { 7, 6, 1 },
2038
          { 6, 8, 1 },
2039
          { 6, 15, 1 },
2040
          { 8, 9, 1 },
2041
          { 0, 0, 0}
2042
        }
2043
      },
2044
      { 'H', "ACT", // H ACT Pair (A C T) H -> D
2045
        {
2046
          { "P",  "P",  4.160,  8.910,  -2.960},
2047
          { "O1P",  "O",  3.940,  10.200,  -3.032},
2048
          { "O2P",  "O",  3.370,  8.820,  -2.819},
2049
          { "O5'",  "O",  3.910,  7.730,  -3.086},
2050
          { "C5'",  "C",  4.850,  7.701,  3.054},
2051
          { "C4'",  "C",  4.120,  7.590,  2.881},
2052
          { "O4'",  "O",  3.910,  6.220,  2.813},
2053
          { "C3'",  "C",  2.720,  8.200,  2.882},
2054
          { "O3'",  "O",  2.330,  8.750,  2.733},
2055
          { "C2'",  "C",  1.840,  7.040,  2.939},
2056
          { "C1'",  "C",  2.550,  5.860,  2.838},
2057
          { "N9",  "N",  2.500,  4.630,  2.999},
2058
          { "H5'1",  "H",  5.339,  8.686,  3.052},
2059
          { "H5'2",  "H",  5.611,  6.918,  3.074},
2060
          { "H4'",  "H",  4.743,  8.159,  2.792},
2061
          { "H1'",  "H",  2.088,  5.803,  2.667},
2062
          { "H2'1",  "H",  1.808,  7.072,  3.095},
2063
          { "H2'2",  "H",  0.817,  7.145,  2.884},
2064
          { "H3'",  "H",  2.651,  9.056,  2.961},
2065
          { "", "", 0.0, 0.0, 0.0 }
2066
        },
2067
        {
2068
          { 3, 1, 2 },
2069
          { 1, 2, 1 },
2070
          { 1, 4, 1 },
2071
          { 4, 5, 1 },
2072
          { 12, 11, 1 },
2073
          { 17, 10, 1 },
2074
          { 14, 5, 1 },
2075
          { 5, 13, 1 },
2076
          { 5, 6, 1 },
2077
          { 10, 11, 1 },
2078
          { 10, 18, 1 },
2079
          { 10, 8, 1 },
2080
          { 11, 7, 1 },
2081
          { 11, 16, 1 },
2082
          { 7, 6, 1 },
2083
          { 19, 8, 1 },
2084
          { 6, 8, 1 },
2085
          { 6, 15, 1 },
2086
          { 8, 9, 1 },
2087
          { 0, 0, 0}
2088
        }
2089
      },
2090
      { 'D', "GAT", // D GAT Pair (G A T) D -> H
2091
        {
2092
          { "P",  "P",  4.160,  8.910,  -2.960},
2093
          { "O1P",  "O",  3.940,  10.200,  -3.032},
2094
          { "O2P",  "O",  3.370,  8.820,  -2.819},
2095
          { "O5'",  "O",  3.910,  7.730,  -3.086},
2096
          { "C5'",  "C",  4.850,  7.701,  3.054},
2097
          { "C4'",  "C",  4.120,  7.590,  2.881},
2098
          { "O4'",  "O",  3.910,  6.220,  2.813},
2099
          { "C3'",  "C",  2.720,  8.200,  2.882},
2100
          { "O3'",  "O",  2.330,  8.750,  2.733},
2101
          { "C2'",  "C",  1.840,  7.040,  2.939},
2102
          { "C1'",  "C",  2.550,  5.860,  2.838},
2103
          { "N9",  "N",  2.500,  4.630,  2.998},
2104
          { "H5'1",  "H",  5.339,  8.686,  3.052},
2105
          { "H5'2",  "H",  5.611,  6.918,  3.073},
2106
          { "H4'",  "H",  4.743,  8.159,  2.792},
2107
          { "", "", 0.0, 0.0, 0.0 }
2108
        },
2109
        {
2110
          { 3, 1, 2 },
2111
          { 1, 2, 1 },
2112
          { 1, 4, 1 },
2113
          { 4, 5, 1 },
2114
          { 12, 11, 1 },
2115
          { 14, 5, 1 },
2116
          { 5, 13, 1 },
2117
          { 5, 6, 1 },
2118
          { 10, 11, 1 },
2119
          { 10, 8, 1 },
2120
          { 11, 7, 1 },
2121
          { 7, 6, 1 },
2122
          { 6, 8, 1 },
2123
          { 6, 15, 1 },
2124
          { 8, 9, 1 },
2125
          { 0, 0, 0}
2126
        }
2127
      },
2128
      { 'B', "GTC", // B GTC Pair (G T C) B -> V
2129
        {
2130
          { "P",  "P",  4.160,  8.910,  -2.960},
2131
          { "O1P",  "O",  3.940,  10.200,  -3.032},
2132
          { "O2P",  "O",  3.370,  8.820,  -2.819},
2133
          { "O5'",  "O",  3.910,  7.730,  -3.086},
2134
          { "C5'",  "C",  4.850,  7.701,  3.054},
2135
          { "C4'",  "C",  4.120,  7.590,  2.881},
2136
          { "O4'",  "O",  3.910,  6.220,  2.813},
2137
          { "C3'",  "C",  2.720,  8.200,  2.882},
2138
          { "O3'",  "O",  2.330,  8.750,  2.733},
2139
          { "C2'",  "C",  1.840,  7.040,  2.939},
2140
          { "C1'",  "C",  2.550,  5.860,  2.838},
2141
          { "N9",  "N",  2.500,  4.630,  2.998},
2142
          { "H5'1",  "H",  5.339,  8.686,  3.052},
2143
          { "H5'2",  "H",  5.611,  6.918,  3.073},
2144
          { "H4'",  "H",  4.743,  8.159,  2.792},
2145
          { "", "", 0.0, 0.0, 0.0 }
2146
        },
2147
        {
2148
          { 3, 1, 2 },
2149
          { 1, 2, 1 },
2150
          { 1, 4, 1 },
2151
          { 4, 5, 1 },
2152
          { 12, 11, 1 },
2153
          { 14, 5, 1 },
2154
          { 5, 13, 1 },
2155
          { 5, 6, 1 },
2156
          { 10, 11, 1 },
2157
          { 10, 8, 1 },
2158
          { 11, 7, 1 },
2159
          { 7, 6, 1 },
2160
          { 6, 8, 1 },
2161
          { 6, 15, 1 },
2162
          { 8, 9, 1 },
2163
          { 0, 0, 0}
2164
        }
2165
      }
2166
    };
2167
2168
  ResidueRecord RNAResidues[IUPAC_RNA_max] =
2169
    {
2170
      { 0, "", // RNA Start
2171
        {
2172
          { "HTER",  "H",  -2.588,  8.491,  -0.008},
2173
          { "OXT",  "O",  -1.492,  9.373,  0.009},
2174
          { "", "", 0.0, 0.0, 0.0 }
2175
        },
2176
        {
2177
          { 2, 1, 1},
2178
          { 0, 0, 0}
2179
        }
2180
      },
2181
      { 0, "", // RNA End
2182
        {
2183
          { "HCAP",  "H",  3.646,  8.242,  0.567},
2184
          { "", "", 0.0, 0.0, 0.0 }
2185
        },
2186
        {
2187
          { 0, 0, 0}
2188
        }
2189
      },
2190
      { 'N', "XNA", // N XNA Unknown Nucleic Acid N -> N [As K Below]
2191
        {
2192
          { "P",  "P",  -0.000,  8.791,  -0.000},
2193
          { "O1P",  "O",  1.422,  9.311,  0.003},
2194
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2195
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2196
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2197
          { "C4'",  "C",  0.057,  9.172,  0.426},
2198
          { "O4'",  "O",  -0.999,  8.642,  0.501},
2199
          { "C3'",  "C",  1.275,  8.307,  0.458},
2200
          { "O3'",  "O",  2.013,  8.747,  0.588},
2201
          { "C2'",  "C",  0.606,  6.917,  0.468},
2202
          { "O2'",  "O",  1.405,  6.122,  0.603},
2203
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2204
          { "H1'",  "H",  -0.699,  7.317,  0.703},
2205
          { "H2'",  "H",  0.484,  6.539,  0.315},
2206
          { "H3'",  "H",  1.968,  8.387,  0.356},
2207
          { "H4'",  "H",  0.274,  10.189,  0.463},
2208
          { "H5'1",  "H",  0.084,  10.229,  0.231},
2209
          { "H5'2",  "H",  -1.546,  9.658,  0.281},
2210
          { "HO2'",  "H",  1.093,  6.345,  0.742},
2211
          { "", "", 0.0, 0.0, 0.0 }
2212
        },
2213
        {
2214
          { 3, 1, 2 },
2215
          { 1, 2, 1 },
2216
          { 1, 4, 1 },
2217
          { 4, 5, 1 },
2218
          { 14, 10, 1 },
2219
          { 17, 5, 1 },
2220
          { 5, 18, 1 },
2221
          { 5, 6, 1 },
2222
          { 15, 8, 1 },
2223
          { 10, 11, 1 },
2224
          { 10, 8, 1 },
2225
          { 10, 12, 1 },
2226
          { 11, 19, 1 },
2227
          { 8, 6, 1 },
2228
          { 8, 9, 1 },
2229
          { 6, 7, 1 },
2230
          { 6, 16, 1 },
2231
          { 12, 7, 1 },
2232
          { 12, 13, 1 },
2233
          { 0, 0, 0}
2234
        }
2235
      },
2236
      { 'A', "A", // A A   Adenine A -> U
2237
        {
2238
          { "P",  "P",  -0.000,  8.791,  -0.000},
2239
          { "O1P",  "O",  1.421,  9.312,  0.003},
2240
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2241
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2242
          { "C5'",  "C",  -0.484,  9.386,  0.274},
2243
          { "C4'",  "C",  0.057,  9.172,  0.426},
2244
          { "O4'",  "O",  -0.998,  8.641,  0.501},
2245
          { "C3'",  "C",  1.275,  8.307,  0.458},
2246
          { "O3'",  "O",  2.013,  8.747,  0.588},
2247
          { "C2'",  "C",  0.607,  6.917,  0.468},
2248
          { "O2'",  "O",  1.405,  6.121,  0.602},
2249
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2250
          { "N9",  "N",  -1.774,  6.424,  0.474},
2251
          { "C8",  "C",  -1.605,  5.989,  0.269},
2252
          { "N7",  "N",  -2.632,  5.390,  0.170},
2253
          { "C5",  "C",  -3.517,  5.270,  0.368},
2254
          { "C6",  "C",  -4.784,  4.675,  0.397},
2255
          { "N6",  "N",  -5.383,  4.048,  0.157},
2256
          { "N1",  "N",  -5.349,  5.072,  0.640},
2257
          { "C2",  "C",  -4.747,  6.066,  0.771},
2258
          { "N3",  "N",  -3.570,  6.563,  0.726},
2259
          { "C4",  "C",  -2.995,  6.046,  0.547},
2260
          { "H1'",  "H",  -0.699,  7.316,  0.703},
2261
          { "H2'",  "H",  0.484,  6.538,  0.316},
2262
          { "H3'",  "H",  1.967,  8.387,  0.356},
2263
          { "H4'",  "H",  0.273,  10.189,  0.464},
2264
          { "H5'1",  "H",  0.083,  10.229,  0.231},
2265
          { "H5'2",  "H",  -1.547,  9.658,  0.281},
2266
          { "H2",  "H",  -5.283,  6.564,  0.898},
2267
          { "H8",  "H",  -0.705,  6.267,  0.180},
2268
          { "H61",  "H",  -6.313,  3.610,  0.176},
2269
          { "H62",  "H",  -4.909,  4.211,  -0.061},
2270
          { "HO2'",  "H",  1.093,  6.344,  0.742},
2271
          { "", "", 0.0, 0.0, 0.0 }
2272
        },
2273
        {
2274
          { 3, 1, 2 },
2275
          { 32, 18, 1 },
2276
          { 1, 2, 1 },
2277
          { 1, 4, 1 },
2278
          { 31, 18, 1 },
2279
          { 18, 17, 1 },
2280
          { 15, 14, 2 },
2281
          { 15, 16, 1 },
2282
          { 30, 14, 1 },
2283
          { 4, 5, 1 },
2284
          { 14, 13, 1 },
2285
          { 17, 16, 2 },
2286
          { 17, 19, 1 },
2287
          { 16, 22, 1 },
2288
          { 24, 10, 1 },
2289
          { 27, 5, 1 },
2290
          { 5, 28, 1 },
2291
          { 5, 6, 1 },
2292
          { 25, 8, 1 },
2293
          { 13, 22, 1 },
2294
          { 13, 12, 1 },
2295
          { 19, 20, 2 },
2296
          { 10, 11, 1 },
2297
          { 10, 8, 1 },
2298
          { 10, 12, 1 },
2299
          { 22, 21, 2 },
2300
          { 11, 33, 1 },
2301
          { 8, 6, 1 },
2302
          { 8, 9, 1 },
2303
          { 6, 7, 1 },
2304
          { 6, 26, 1 },
2305
          { 12, 7, 1 },
2306
          { 12, 23, 1 },
2307
          { 20, 21, 1 },
2308
          { 20, 29, 1 },
2309
          { 0, 0, 0}
2310
        }
2311
      },
2312
      { 'C', "C", // C C   Cytosine C -> G
2313
        {
2314
          { "P",  "P",  -0.000,  8.791,  -0.000},
2315
          { "O1P",  "O",  1.401,  9.367,  -0.002},
2316
          { "O2P",  "O",  -0.378,  7.899,  -0.137},
2317
          { "O5'",  "O",  -0.323,  8.217,  0.173},
2318
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2319
          { "C4'",  "C",  0.057,  9.171,  0.426},
2320
          { "O4'",  "O",  -0.999,  8.641,  0.501},
2321
          { "C3'",  "C",  1.274,  8.307,  0.458},
2322
          { "O3'",  "O",  2.013,  8.747,  0.588},
2323
          { "C2'",  "C",  0.607,  6.917,  0.468},
2324
          { "O2'",  "O",  1.405,  6.121,  0.603},
2325
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2326
          { "N1",  "N",  -1.774,  6.424,  0.474},
2327
          { "C2",  "C",  -2.809,  6.085,  0.608},
2328
          { "O2",  "O",  -2.770,  6.659,  0.783},
2329
          { "N3",  "N",  -3.821,  5.311,  0.529},
2330
          { "C4",  "C",  -3.773,  5.045,  0.275},
2331
          { "N4",  "N",  -4.783,  4.492,  0.136},
2332
          { "C5",  "C",  -2.677,  5.611,  0.141},
2333
          { "C6",  "C",  -1.711,  6.187,  0.263},
2334
          { "H1'",  "H",  -0.699,  7.316,  0.703},
2335
          { "H2'",  "H",  0.484,  6.538,  0.316},
2336
          { "H3'",  "H",  1.968,  8.388,  0.357},
2337
          { "H4'",  "H",  0.274,  10.189,  0.464},
2338
          { "H5'1",  "H",  0.083,  10.229,  0.231},
2339
          { "H5'2",  "H",  -1.547,  9.657,  0.281},
2340
          { "H5",  "H",  -2.629,  5.749,  -0.049},
2341
          { "H6",  "H",  -0.865,  6.641,  0.182},
2342
          { "H41",  "H",  -5.573,  4.074,  0.256},
2343
          { "H42",  "H",  -4.778,  4.661,  -0.086},
2344
          { "HO2'",  "H",  1.189,  6.451,  0.740},
2345
          { "", "", 0.0, 0.0, 0.0 }
2346
        },
2347
        {
2348
          { 3, 1, 2 },
2349
          { 30, 18, 1 },
2350
          { 27, 19, 1 },
2351
          { 2, 1, 1 },
2352
          { 1, 4, 1 },
2353
          { 18, 29, 1 },
2354
          { 18, 17, 1 },
2355
          { 19, 17, 1 },
2356
          { 19, 20, 2 },
2357
          { 28, 20, 1 },
2358
          { 17, 16, 2 },
2359
          { 4, 5, 1 },
2360
          { 20, 13, 1 },
2361
          { 22, 10, 1 },
2362
          { 25, 5, 1 },
2363
          { 5, 26, 1 },
2364
          { 5, 6, 1 },
2365
          { 16, 14, 1 },
2366
          { 23, 8, 1 },
2367
          { 13, 14, 1 },
2368
          { 13, 12, 1 },
2369
          { 10, 11, 1 },
2370
          { 10, 8, 1 },
2371
          { 10, 12, 1 },
2372
          { 11, 31, 1 },
2373
          { 14, 15, 2 },
2374
          { 8, 6, 1 },
2375
          { 8, 9, 1 },
2376
          { 6, 7, 1 },
2377
          { 6, 24, 1 },
2378
          { 12, 7, 1 },
2379
          { 12, 21, 1 },
2380
          { 0, 0, 0}
2381
        }
2382
      },
2383
      { 'G', "G", // G G   Guanine G -> C
2384
        {
2385
          { "P",  "P",  -0.000,  8.791,  -0.000},
2386
          { "O1P",  "O",  1.422,  9.313,  0.003},
2387
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2388
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2389
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2390
          { "C4'",  "C",  0.057,  9.171,  0.426},
2391
          { "O4'",  "O",  -0.998,  8.642,  0.501},
2392
          { "C3'",  "C",  1.275,  8.307,  0.458},
2393
          { "O3'",  "O",  2.013,  8.747,  0.588},
2394
          { "C2'",  "C",  0.607,  6.917,  0.468},
2395
          { "O2'",  "O",  1.405,  6.121,  0.603},
2396
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2397
          { "N9",  "N",  -1.774,  6.424,  0.474},
2398
          { "C8",  "C",  -1.712,  6.189,  0.266},
2399
          { "N7",  "N",  -2.757,  5.529,  0.179},
2400
          { "C5",  "C",  -3.491,  5.243,  0.379},
2401
          { "C6",  "C",  -4.797,  4.658,  0.414},
2402
          { "O6",  "O",  -5.530,  4.203,  0.212},
2403
          { "N1",  "N",  -5.227,  4.911,  0.678},
2404
          { "C2",  "C",  -4.478,  5.823,  0.825},
2405
          { "N2",  "N",  -5.075,  6.378,  1.007},
2406
          { "N3",  "N",  -3.325,  6.311,  0.765},
2407
          { "C4",  "C",  -2.868,  5.934,  0.566},
2408
          { "H1'",  "H",  -0.699,  7.317,  0.703},
2409
          { "H2'",  "H",  0.484,  6.538,  0.315},
2410
          { "H3'",  "H",  1.969,  8.387,  0.357},
2411
          { "H4'",  "H",  0.274,  10.189,  0.463},
2412
          { "H5'1",  "H",  0.084,  10.229,  0.231},
2413
          { "H5'2",  "H",  -1.547,  9.658,  0.281},
2414
          { "H1",  "H",  -6.123,  4.611,  0.747},
2415
          { "H8",  "H",  -0.916,  6.638,  0.173},
2416
          { "H21",  "H",  -5.986,  6.065,  1.065},
2417
          { "H22",  "H",  -4.610,  7.201,  1.067},
2418
          { "HO2'",  "H",  1.094,  6.344,  0.742},
2419
          { "", "", 0.0, 0.0, 0.0 }
2420
        },
2421
        {
2422
          { 3, 1, 2 },
2423
          { 1, 2, 1 },
2424
          { 1, 4, 1 },
2425
          { 18, 17, 2 },
2426
          { 15, 14, 2 },
2427
          { 15, 16, 1 },
2428
          { 31, 14, 1 },
2429
          { 4, 5, 1 },
2430
          { 14, 13, 1 },
2431
          { 17, 16, 1 },
2432
          { 17, 19, 1 },
2433
          { 16, 23, 2 },
2434
          { 25, 10, 1 },
2435
          { 28, 5, 1 },
2436
          { 5, 29, 1 },
2437
          { 5, 6, 1 },
2438
          { 26, 8, 1 },
2439
          { 13, 23, 1 },
2440
          { 13, 12, 1 },
2441
          { 19, 30, 1 },
2442
          { 19, 20, 1 },
2443
          { 10, 11, 1 },
2444
          { 10, 8, 1 },
2445
          { 10, 12, 1 },
2446
          { 23, 22, 1 },
2447
          { 11, 34, 1 },
2448
          { 8, 6, 1 },
2449
          { 8, 9, 1 },
2450
          { 6, 7, 1 },
2451
          { 6, 27, 1 },
2452
          { 12, 7, 1 },
2453
          { 12, 24, 1 },
2454
          { 20, 22, 2 },
2455
          { 20, 21, 1 },
2456
          { 32, 21, 1 },
2457
          { 21, 33, 1 },
2458
          { 0, 0, 0}
2459
        }
2460
      },
2461
      { 'U', "U", // U U   Uridine U -> A
2462
        {
2463
          { "P",  "P",  -0.000,  8.791,  -0.000},
2464
          { "O1P",  "O",  1.422,  9.311,  0.003},
2465
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2466
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2467
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2468
          { "C4'",  "C",  0.057,  9.172,  0.426},
2469
          { "O4'",  "O",  -0.999,  8.642,  0.501},
2470
          { "C3'",  "C",  1.275,  8.307,  0.458},
2471
          { "O3'",  "O",  2.013,  8.747,  0.588},
2472
          { "C2'",  "C",  0.606,  6.917,  0.468},
2473
          { "O2'",  "O",  1.405,  6.122,  0.603},
2474
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2475
          { "N1",  "N",  -1.774,  6.424,  0.474},
2476
          { "C2",  "C",  -2.902,  6.238,  0.596},
2477
          { "O2",  "O",  -3.049,  6.885,  0.754},
2478
          { "N3",  "N",  -3.840,  5.395,  0.501},
2479
          { "C4",  "C",  -3.761,  4.935,  0.245},
2480
          { "O4",  "O",  -4.675,  4.400,  0.123},
2481
          { "C5",  "C",  -2.555,  5.445,  0.125},
2482
          { "C6",  "C",  -1.622,  6.024,  0.264},
2483
          { "H1'",  "H",  -0.699,  7.317,  0.703},
2484
          { "H2'",  "H",  0.484,  6.539,  0.315},
2485
          { "H3'",  "H",  1.968,  8.387,  0.356},
2486
          { "H4'",  "H",  0.274,  10.189,  0.463},
2487
          { "H5'1",  "H",  0.084,  10.229,  0.231},
2488
          { "H5'2",  "H",  -1.546,  9.658,  0.281},
2489
          { "H3",  "H",  -4.674,  5.253,  0.601},
2490
          { "H5",  "H",  -2.401,  5.543,  -0.071},
2491
          { "H6",  "H",  -0.700,  6.362,  0.188},
2492
          { "HO2'",  "H",  1.093,  6.345,  0.742},
2493
          { "", "", 0.0, 0.0, 0.0 }
2494
        },
2495
        {
2496
          { 3, 1, 2 },
2497
          { 28, 19, 1 },
2498
          { 1, 2, 1 },
2499
          { 1, 4, 1 },
2500
          { 18, 17, 2 },
2501
          { 19, 17, 1 },
2502
          { 19, 20, 2 },
2503
          { 29, 20, 1 },
2504
          { 17, 16, 1 },
2505
          { 4, 5, 1 },
2506
          { 20, 13, 1 },
2507
          { 22, 10, 1 },
2508
          { 25, 5, 1 },
2509
          { 5, 26, 1 },
2510
          { 5, 6, 1 },
2511
          { 16, 27, 1 },
2512
          { 16, 14, 1 },
2513
          { 23, 8, 1 },
2514
          { 13, 14, 1 },
2515
          { 13, 12, 1 },
2516
          { 10, 11, 1 },
2517
          { 10, 8, 1 },
2518
          { 10, 12, 1 },
2519
          { 11, 30, 1 },
2520
          { 14, 15, 2 },
2521
          { 8, 6, 1 },
2522
          { 8, 9, 1 },
2523
          { 6, 7, 1 },
2524
          { 6, 24, 1 },
2525
          { 12, 7, 1 },
2526
          { 12, 21, 1 },
2527
          { 0, 0, 0}
2528
        }
2529
      },
2530
      { 'R', "GAX", // R GAX Purine (G or A) R -> Y [A - N6,H61,H62,H2]
2531
        {
2532
          { "P",  "P",  -0.000,  8.791,  -0.000},
2533
          { "O1P",  "O",  1.421,  9.312,  0.003},
2534
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2535
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2536
          { "C5'",  "C",  -0.484,  9.386,  0.274},
2537
          { "C4'",  "C",  0.057,  9.172,  0.426},
2538
          { "O4'",  "O",  -0.998,  8.641,  0.501},
2539
          { "C3'",  "C",  1.275,  8.307,  0.458},
2540
          { "O3'",  "O",  2.013,  8.747,  0.588},
2541
          { "C2'",  "C",  0.607,  6.917,  0.468},
2542
          { "O2'",  "O",  1.405,  6.121,  0.602},
2543
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2544
          { "N9",  "N",  -1.774,  6.424,  0.474},
2545
          { "C8",  "C",  -1.605,  5.989,  0.269},
2546
          { "N7",  "N",  -2.632,  5.390,  0.170},
2547
          { "C5",  "C",  -3.517,  5.270,  0.368},
2548
          { "C6",  "C",  -4.784,  4.675,  0.397},
2549
          { "N1",  "N",  -5.349,  5.072,  0.640},
2550
          { "C2",  "C",  -4.747,  6.066,  0.771},
2551
          { "N3",  "N",  -3.570,  6.563,  0.726},
2552
          { "C4",  "C",  -2.995,  6.046,  0.547},
2553
          { "H2'",  "H",  0.484,  6.538,  0.316},
2554
          { "H3'",  "H",  1.967,  8.387,  0.356},
2555
          { "H4'",  "H",  0.273,  10.189,  0.464},
2556
          { "H5'1",  "H",  0.083,  10.229,  0.231},
2557
          { "H5'2",  "H",  -1.547,  9.658,  0.281},
2558
          { "H8",  "H",  -0.705,  6.267,  0.180},
2559
          { "HO2'",  "H",  1.093,  6.344,  0.742},
2560
          { "", "", 0.0, 0.0, 0.0 }
2561
        },
2562
        {
2563
          { 3, 1, 2 },
2564
          { 1, 2, 1 },
2565
          { 1, 4, 1 },
2566
          { 15, 14, 2 },
2567
          { 15, 16, 1 },
2568
          { 27, 14, 1 },
2569
          { 4, 5, 1 },
2570
          { 14, 13, 1 },
2571
          { 17, 16, 2 },
2572
          { 17, 18, 1 },
2573
          { 16, 21, 1 },
2574
          { 22, 10, 1 },
2575
          { 25, 5, 1 },
2576
          { 5, 26, 1 },
2577
          { 5, 6, 1 },
2578
          { 23, 8, 1 },
2579
          { 13, 21, 1 },
2580
          { 13, 12, 1 },
2581
          { 18, 19, 2 },
2582
          { 10, 11, 1 },
2583
          { 10, 8, 1 },
2584
          { 10, 12, 1 },
2585
          { 21, 20, 2 },
2586
          { 11, 28, 1 },
2587
          { 8, 6, 1 },
2588
          { 8, 9, 1 },
2589
          { 6, 7, 1 },
2590
          { 6, 24, 1 },
2591
          { 12, 7, 1 },
2592
          { 19, 20, 1 },
2593
          { 0, 0, 0}
2594
        }
2595
      },
2596
      { 'Y', "UCX", // Y UCX Pyrimidine (U or C) Y -> R [C - N4,H41,H42]
2597
        {
2598
          { "P",  "P",  -0.000,  8.791,  -0.000},
2599
          { "O1P",  "O",  1.401,  9.367,  -0.002},
2600
          { "O2P",  "O",  -0.378,  7.899,  -0.137},
2601
          { "O5'",  "O",  -0.323,  8.217,  0.173},
2602
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2603
          { "C4'",  "C",  0.057,  9.171,  0.426},
2604
          { "O4'",  "O",  -0.999,  8.641,  0.501},
2605
          { "C3'",  "C",  1.274,  8.307,  0.458},
2606
          { "O3'",  "O",  2.013,  8.747,  0.588},
2607
          { "C2'",  "C",  0.607,  6.917,  0.468},
2608
          { "O2'",  "O",  1.405,  6.121,  0.603},
2609
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2610
          { "N1",  "N",  -1.774,  6.424,  0.474},
2611
          { "C2",  "C",  -2.809,  6.085,  0.608},
2612
          { "O2",  "O",  -2.770,  6.659,  0.783},
2613
          { "N3",  "N",  -3.821,  5.311,  0.529},
2614
          { "C4",  "C",  -3.773,  5.045,  0.275},
2615
          { "C5",  "C",  -2.677,  5.611,  0.141},
2616
          { "C6",  "C",  -1.711,  6.187,  0.263},
2617
          { "H1'",  "H",  -0.699,  7.316,  0.703},
2618
          { "H2'",  "H",  0.484,  6.538,  0.316},
2619
          { "H3'",  "H",  1.968,  8.388,  0.357},
2620
          { "H4'",  "H",  0.274,  10.189,  0.464},
2621
          { "H5'1",  "H",  0.083,  10.229,  0.231},
2622
          { "H5'2",  "H",  -1.547,  9.657,  0.281},
2623
          { "H5",  "H",  -2.629,  5.749,  -0.049},
2624
          { "H6",  "H",  -0.865,  6.641,  0.182},
2625
          { "HO2'",  "H",  1.189,  6.451,  0.740},
2626
          { "", "", 0.0, 0.0, 0.0 }
2627
        },
2628
        {
2629
          { 3, 1, 2 },
2630
          { 26, 18, 1 },
2631
          { 2, 1, 1 },
2632
          { 1, 4, 1 },
2633
          { 18, 17, 1 },
2634
          { 18, 19, 2 },
2635
          { 27, 19, 1 },
2636
          { 17, 16, 2 },
2637
          { 4, 5, 1 },
2638
          { 19, 13, 1 },
2639
          { 21, 10, 1 },
2640
          { 24, 5, 1 },
2641
          { 5, 25, 1 },
2642
          { 5, 6, 1 },
2643
          { 16, 14, 1 },
2644
          { 22, 8, 1 },
2645
          { 13, 14, 1 },
2646
          { 13, 12, 1 },
2647
          { 10, 11, 1 },
2648
          { 10, 8, 1 },
2649
          { 10, 12, 1 },
2650
          { 11, 28, 1 },
2651
          { 14, 15, 2 },
2652
          { 8, 6, 1 },
2653
          { 8, 9, 1 },
2654
          { 6, 7, 1 },
2655
          { 6, 23, 1 },
2656
          { 12, 7, 1 },
2657
          { 12, 20, 1 },
2658
          { 0, 0, 0}
2659
        }
2660
      },
2661
      { 'K', "GUX", // K GUX Keto (G or U) K -> M [U - N1,C6,H6,C5,H5,C4,O4,N3,H3,C2,O2]
2662
        {
2663
          { "P",  "P",  -0.000,  8.791,  -0.000},
2664
          { "O1P",  "O",  1.422,  9.311,  0.003},
2665
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2666
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2667
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2668
          { "C4'",  "C",  0.057,  9.172,  0.426},
2669
          { "O4'",  "O",  -0.999,  8.642,  0.501},
2670
          { "C3'",  "C",  1.275,  8.307,  0.458},
2671
          { "O3'",  "O",  2.013,  8.747,  0.588},
2672
          { "C2'",  "C",  0.606,  6.917,  0.468},
2673
          { "O2'",  "O",  1.405,  6.122,  0.603},
2674
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2675
          { "H1'",  "H",  -0.699,  7.317,  0.703},
2676
          { "H2'",  "H",  0.484,  6.539,  0.315},
2677
          { "H3'",  "H",  1.968,  8.387,  0.356},
2678
          { "H4'",  "H",  0.274,  10.189,  0.463},
2679
          { "H5'1",  "H",  0.084,  10.229,  0.231},
2680
          { "H5'2",  "H",  -1.546,  9.658,  0.281},
2681
          { "HO2'",  "H",  1.093,  6.345,  0.742},
2682
          { "", "", 0.0, 0.0, 0.0 }
2683
        },
2684
        {
2685
          { 3, 1, 2 },
2686
          { 1, 2, 1 },
2687
          { 1, 4, 1 },
2688
          { 4, 5, 1 },
2689
          { 14, 10, 1 },
2690
          { 17, 5, 1 },
2691
          { 5, 18, 1 },
2692
          { 5, 6, 1 },
2693
          { 15, 8, 1 },
2694
          { 10, 11, 1 },
2695
          { 10, 8, 1 },
2696
          { 10, 12, 1 },
2697
          { 11, 19, 1 },
2698
          { 8, 6, 1 },
2699
          { 8, 9, 1 },
2700
          { 6, 7, 1 },
2701
          { 6, 16, 1 },
2702
          { 12, 7, 1 },
2703
          { 12, 13, 1 },
2704
          { 0, 0, 0}
2705
        }
2706
      },
2707
      { 'M', "ACX", // M ACX Amino (A or C) M -> K [As K Above]
2708
        {
2709
          { "P",  "P",  -0.000,  8.791,  -0.000},
2710
          { "O1P",  "O",  1.422,  9.311,  0.003},
2711
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2712
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2713
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2714
          { "C4'",  "C",  0.057,  9.172,  0.426},
2715
          { "O4'",  "O",  -0.999,  8.642,  0.501},
2716
          { "C3'",  "C",  1.275,  8.307,  0.458},
2717
          { "O3'",  "O",  2.013,  8.747,  0.588},
2718
          { "C2'",  "C",  0.606,  6.917,  0.468},
2719
          { "O2'",  "O",  1.405,  6.122,  0.603},
2720
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2721
          { "H1'",  "H",  -0.699,  7.317,  0.703},
2722
          { "H2'",  "H",  0.484,  6.539,  0.315},
2723
          { "H3'",  "H",  1.968,  8.387,  0.356},
2724
          { "H4'",  "H",  0.274,  10.189,  0.463},
2725
          { "H5'1",  "H",  0.084,  10.229,  0.231},
2726
          { "H5'2",  "H",  -1.546,  9.658,  0.281},
2727
          { "HO2'",  "H",  1.093,  6.345,  0.742},
2728
          { "", "", 0.0, 0.0, 0.0 }
2729
        },
2730
        {
2731
          { 3, 1, 2 },
2732
          { 1, 2, 1 },
2733
          { 1, 4, 1 },
2734
          { 4, 5, 1 },
2735
          { 14, 10, 1 },
2736
          { 17, 5, 1 },
2737
          { 5, 18, 1 },
2738
          { 5, 6, 1 },
2739
          { 15, 8, 1 },
2740
          { 10, 11, 1 },
2741
          { 10, 8, 1 },
2742
          { 10, 12, 1 },
2743
          { 11, 19, 1 },
2744
          { 8, 6, 1 },
2745
          { 8, 9, 1 },
2746
          { 6, 7, 1 },
2747
          { 6, 16, 1 },
2748
          { 12, 7, 1 },
2749
          { 12, 13, 1 },
2750
          { 0, 0, 0}
2751
        }
2752
      },
2753
      { 'S', "GCX", // S GCX Strong (G or C) S -> W [As K Above]
2754
        {
2755
          { "P",  "P",  -0.000,  8.791,  -0.000},
2756
          { "O1P",  "O",  1.422,  9.311,  0.003},
2757
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2758
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2759
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2760
          { "C4'",  "C",  0.057,  9.172,  0.426},
2761
          { "O4'",  "O",  -0.999,  8.642,  0.501},
2762
          { "C3'",  "C",  1.275,  8.307,  0.458},
2763
          { "O3'",  "O",  2.013,  8.747,  0.588},
2764
          { "C2'",  "C",  0.606,  6.917,  0.468},
2765
          { "O2'",  "O",  1.405,  6.122,  0.603},
2766
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2767
          { "H1'",  "H",  -0.699,  7.317,  0.703},
2768
          { "H2'",  "H",  0.484,  6.539,  0.315},
2769
          { "H3'",  "H",  1.968,  8.387,  0.356},
2770
          { "H4'",  "H",  0.274,  10.189,  0.463},
2771
          { "H5'1",  "H",  0.084,  10.229,  0.231},
2772
          { "H5'2",  "H",  -1.546,  9.658,  0.281},
2773
          { "HO2'",  "H",  1.093,  6.345,  0.742},
2774
          { "", "", 0.0, 0.0, 0.0 }
2775
        },
2776
        {
2777
          { 3, 1, 2 },
2778
          { 1, 2, 1 },
2779
          { 1, 4, 1 },
2780
          { 4, 5, 1 },
2781
          { 14, 10, 1 },
2782
          { 17, 5, 1 },
2783
          { 5, 18, 1 },
2784
          { 5, 6, 1 },
2785
          { 15, 8, 1 },
2786
          { 10, 11, 1 },
2787
          { 10, 8, 1 },
2788
          { 10, 12, 1 },
2789
          { 11, 19, 1 },
2790
          { 8, 6, 1 },
2791
          { 8, 9, 1 },
2792
          { 6, 7, 1 },
2793
          { 6, 16, 1 },
2794
          { 12, 7, 1 },
2795
          { 12, 13, 1 },
2796
          { 0, 0, 0}
2797
        }
2798
      },
2799
      { 'W', "AUX", // W AUX Weak (A or U) W -> S [As K Above]
2800
        {
2801
          { "P",  "P",  -0.000,  8.791,  -0.000},
2802
          { "O1P",  "O",  1.422,  9.311,  0.003},
2803
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2804
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2805
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2806
          { "C4'",  "C",  0.057,  9.172,  0.426},
2807
          { "O4'",  "O",  -0.999,  8.642,  0.501},
2808
          { "C3'",  "C",  1.275,  8.307,  0.458},
2809
          { "O3'",  "O",  2.013,  8.747,  0.588},
2810
          { "C2'",  "C",  0.606,  6.917,  0.468},
2811
          { "O2'",  "O",  1.405,  6.122,  0.603},
2812
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2813
          { "H1'",  "H",  -0.699,  7.317,  0.703},
2814
          { "H2'",  "H",  0.484,  6.539,  0.315},
2815
          { "H3'",  "H",  1.968,  8.387,  0.356},
2816
          { "H4'",  "H",  0.274,  10.189,  0.463},
2817
          { "H5'1",  "H",  0.084,  10.229,  0.231},
2818
          { "H5'2",  "H",  -1.546,  9.658,  0.281},
2819
          { "HO2'",  "H",  1.093,  6.345,  0.742},
2820
          { "", "", 0.0, 0.0, 0.0 }
2821
        },
2822
        {
2823
          { 3, 1, 2 },
2824
          { 1, 2, 1 },
2825
          { 1, 4, 1 },
2826
          { 4, 5, 1 },
2827
          { 14, 10, 1 },
2828
          { 17, 5, 1 },
2829
          { 5, 18, 1 },
2830
          { 5, 6, 1 },
2831
          { 15, 8, 1 },
2832
          { 10, 11, 1 },
2833
          { 10, 8, 1 },
2834
          { 10, 12, 1 },
2835
          { 11, 19, 1 },
2836
          { 8, 6, 1 },
2837
          { 8, 9, 1 },
2838
          { 6, 7, 1 },
2839
          { 6, 16, 1 },
2840
          { 12, 7, 1 },
2841
          { 12, 13, 1 },
2842
          { 0, 0, 0}
2843
        }
2844
      },
2845
      { 'B', "GUC", // B GUC (G U C) B -> V [As K Above]
2846
        {
2847
          { "P",  "P",  -0.000,  8.791,  -0.000},
2848
          { "O1P",  "O",  1.422,  9.311,  0.003},
2849
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2850
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2851
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2852
          { "C4'",  "C",  0.057,  9.172,  0.426},
2853
          { "O4'",  "O",  -0.999,  8.642,  0.501},
2854
          { "C3'",  "C",  1.275,  8.307,  0.458},
2855
          { "O3'",  "O",  2.013,  8.747,  0.588},
2856
          { "C2'",  "C",  0.606,  6.917,  0.468},
2857
          { "O2'",  "O",  1.405,  6.122,  0.603},
2858
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2859
          { "H1'",  "H",  -0.699,  7.317,  0.703},
2860
          { "H2'",  "H",  0.484,  6.539,  0.315},
2861
          { "H3'",  "H",  1.968,  8.387,  0.356},
2862
          { "H4'",  "H",  0.274,  10.189,  0.463},
2863
          { "H5'1",  "H",  0.084,  10.229,  0.231},
2864
          { "H5'2",  "H",  -1.546,  9.658,  0.281},
2865
          { "HO2'",  "H",  1.093,  6.345,  0.742},
2866
          { "", "", 0.0, 0.0, 0.0 }
2867
        },
2868
        {
2869
          { 3, 1, 2 },
2870
          { 1, 2, 1 },
2871
          { 1, 4, 1 },
2872
          { 4, 5, 1 },
2873
          { 14, 10, 1 },
2874
          { 17, 5, 1 },
2875
          { 5, 18, 1 },
2876
          { 5, 6, 1 },
2877
          { 15, 8, 1 },
2878
          { 10, 11, 1 },
2879
          { 10, 8, 1 },
2880
          { 10, 12, 1 },
2881
          { 11, 19, 1 },
2882
          { 8, 6, 1 },
2883
          { 8, 9, 1 },
2884
          { 6, 7, 1 },
2885
          { 6, 16, 1 },
2886
          { 12, 7, 1 },
2887
          { 12, 13, 1 },
2888
          { 0, 0, 0}
2889
        }
2890
      },
2891
      { 'D', "GAU", // D GAU (G A U) D -> H [As K Above]
2892
        {
2893
          { "P",  "P",  -0.000,  8.791,  -0.000},
2894
          { "O1P",  "O",  1.422,  9.311,  0.003},
2895
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2896
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2897
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2898
          { "C4'",  "C",  0.057,  9.172,  0.426},
2899
          { "O4'",  "O",  -0.999,  8.642,  0.501},
2900
          { "C3'",  "C",  1.275,  8.307,  0.458},
2901
          { "O3'",  "O",  2.013,  8.747,  0.588},
2902
          { "C2'",  "C",  0.606,  6.917,  0.468},
2903
          { "O2'",  "O",  1.405,  6.122,  0.603},
2904
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2905
          { "H1'",  "H",  -0.699,  7.317,  0.703},
2906
          { "H2'",  "H",  0.484,  6.539,  0.315},
2907
          { "H3'",  "H",  1.968,  8.387,  0.356},
2908
          { "H4'",  "H",  0.274,  10.189,  0.463},
2909
          { "H5'1",  "H",  0.084,  10.229,  0.231},
2910
          { "H5'2",  "H",  -1.546,  9.658,  0.281},
2911
          { "HO2'",  "H",  1.093,  6.345,  0.742},
2912
          { "", "", 0.0, 0.0, 0.0 }
2913
        },
2914
        {
2915
          { 3, 1, 2 },
2916
          { 1, 2, 1 },
2917
          { 1, 4, 1 },
2918
          { 4, 5, 1 },
2919
          { 14, 10, 1 },
2920
          { 17, 5, 1 },
2921
          { 5, 18, 1 },
2922
          { 5, 6, 1 },
2923
          { 15, 8, 1 },
2924
          { 10, 11, 1 },
2925
          { 10, 8, 1 },
2926
          { 10, 12, 1 },
2927
          { 11, 19, 1 },
2928
          { 8, 6, 1 },
2929
          { 8, 9, 1 },
2930
          { 6, 7, 1 },
2931
          { 6, 16, 1 },
2932
          { 12, 7, 1 },
2933
          { 12, 13, 1 },
2934
          { 0, 0, 0}
2935
        }
2936
      },
2937
      { 'H', "ACU", // H ACU (A C U) H -> D [As K Above]
2938
        {
2939
          { "P",  "P",  -0.000,  8.791,  -0.000},
2940
          { "O1P",  "O",  1.422,  9.311,  0.003},
2941
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2942
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2943
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2944
          { "C4'",  "C",  0.057,  9.172,  0.426},
2945
          { "O4'",  "O",  -0.999,  8.642,  0.501},
2946
          { "C3'",  "C",  1.275,  8.307,  0.458},
2947
          { "O3'",  "O",  2.013,  8.747,  0.588},
2948
          { "C2'",  "C",  0.606,  6.917,  0.468},
2949
          { "O2'",  "O",  1.405,  6.122,  0.603},
2950
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2951
          { "H1'",  "H",  -0.699,  7.317,  0.703},
2952
          { "H2'",  "H",  0.484,  6.539,  0.315},
2953
          { "H3'",  "H",  1.968,  8.387,  0.356},
2954
          { "H4'",  "H",  0.274,  10.189,  0.463},
2955
          { "H5'1",  "H",  0.084,  10.229,  0.231},
2956
          { "H5'2",  "H",  -1.546,  9.658,  0.281},
2957
          { "HO2'",  "H",  1.093,  6.345,  0.742},
2958
          { "", "", 0.0, 0.0, 0.0 }
2959
        },
2960
        {
2961
          { 3, 1, 2 },
2962
          { 1, 2, 1 },
2963
          { 1, 4, 1 },
2964
          { 4, 5, 1 },
2965
          { 14, 10, 1 },
2966
          { 17, 5, 1 },
2967
          { 5, 18, 1 },
2968
          { 5, 6, 1 },
2969
          { 15, 8, 1 },
2970
          { 10, 11, 1 },
2971
          { 10, 8, 1 },
2972
          { 10, 12, 1 },
2973
          { 11, 19, 1 },
2974
          { 8, 6, 1 },
2975
          { 8, 9, 1 },
2976
          { 6, 7, 1 },
2977
          { 6, 16, 1 },
2978
          { 12, 7, 1 },
2979
          { 12, 13, 1 },
2980
          { 0, 0, 0}
2981
        }
2982
      },
2983
      { 'V', "GCA", // V GCA (G C A) V -> B [As K Above]
2984
        {
2985
          { "P",  "P",  -0.000,  8.791,  -0.000},
2986
          { "O1P",  "O",  1.422,  9.311,  0.003},
2987
          { "O2P",  "O",  -0.360,  7.848,  -0.133},
2988
          { "O5'",  "O",  -0.323,  8.218,  0.173},
2989
          { "C5'",  "C",  -0.483,  9.385,  0.274},
2990
          { "C4'",  "C",  0.057,  9.172,  0.426},
2991
          { "O4'",  "O",  -0.999,  8.642,  0.501},
2992
          { "C3'",  "C",  1.275,  8.307,  0.458},
2993
          { "O3'",  "O",  2.013,  8.747,  0.588},
2994
          { "C2'",  "C",  0.606,  6.917,  0.468},
2995
          { "O2'",  "O",  1.405,  6.122,  0.603},
2996
          { "C1'",  "C",  -0.731,  7.281,  0.552},
2997
          { "H1'",  "H",  -0.699,  7.317,  0.703},
2998
          { "H2'",  "H",  0.484,  6.539,  0.315},
2999
          { "H3'",  "H",  1.968,  8.387,  0.356},
3000
          { "H4'",  "H",  0.274,  10.189,  0.463},
3001
          { "H5'1",  "H",  0.084,  10.229,  0.231},
3002
          { "H5'2",  "H",  -1.546,  9.658,  0.281},
3003
          { "HO2'",  "H",  1.093,  6.345,  0.742},
3004
          { "", "", 0.0, 0.0, 0.0 }
3005
        },
3006
        {
3007
          { 3, 1, 2 },
3008
          { 1, 2, 1 },
3009
          { 1, 4, 1 },
3010
          { 4, 5, 1 },
3011
          { 14, 10, 1 },
3012
          { 17, 5, 1 },
3013
          { 5, 18, 1 },
3014
          { 5, 6, 1 },
3015
          { 15, 8, 1 },
3016
          { 10, 11, 1 },
3017
          { 10, 8, 1 },
3018
          { 10, 12, 1 },
3019
          { 11, 19, 1 },
3020
          { 8, 6, 1 },
3021
          { 8, 9, 1 },
3022
          { 6, 7, 1 },
3023
          { 6, 16, 1 },
3024
          { 12, 7, 1 },
3025
          { 12, 13, 1 },
3026
          { 0, 0, 0}
3027
        }
3028
      }
3029
    };
3030
3031
  ResidueRecord ProteinResidues[IUPAC_Protein_max] =
3032
    {
3033
      { 0, "", // Protein Start
3034
        {
3035
          { "HNCA",  "H",  -0.908,  1.986,  -0.059},
3036
          { "", "", 0.0, 0.0, 0.0 }
3037
        },
3038
        {
3039
          { 0, 0, 0}
3040
        }
3041
      },
3042
      { 0, "", // Protein End
3043
        {
3044
          { "OXT",  "O",  1.517,  1.615,  1.659},
3045
          { "HOCA",  "H",  2.208,  1.937,  1.983},
3046
          { "", "", 0.0, 0.0, 0.0 }
3047
        },
3048
        {
3049
          { 1, 2, 1},
3050
          { 0, 0, 0}
3051
        }
3052
      },
3053
      { 'X', "XAA", // X XAA any (unknown) amino acid
3054
        {
3055
          { "N",  "N",  0.000,  1.576,  0.000},
3056
          { "CA",  "C",  0.963,  2.292,  0.440},
3057
          { "C",  "C",  1.963,  1.608,  0.913},
3058
          { "O",  "O",  3.153,  1.742,  0.774},
3059
          { "", "", 0.0, 0.0, 0.0 }
3060
        },
3061
        {
3062
          { 1, 2, 1 },
3063
          { 2, 3, 1 },
3064
          { 4, 3, 2 },
3065
          { 0, 0, 0}
3066
        }
3067
      },
3068
      { 'A', "ALA", // A ALA Alanine
3069
        {
3070
          { "N",  "N",  0.000,  1.576,  0.000},
3071
          { "CA",  "C",  0.963,  2.292,  0.440},
3072
          { "C",  "C",  1.963,  1.608,  0.913},
3073
          { "O",  "O",  3.153,  1.742,  0.774},
3074
          { "CB",  "C",  0.285,  3.409,  0.741},
3075
          { "HA",  "H",  1.478,  2.999,  0.183},
3076
          { "H",  "H",  -0.969,  1.563,  0.159},
3077
          { "HB3",  "H",  -0.234,  3.243,  1.029},
3078
          { "HB2",  "H",  -0.449,  3.921,  0.565},
3079
          { "HB1",  "H",  1.041,  4.176,  0.802},
3080
          { "", "", 0.0, 0.0, 0.0 }
3081
        },
3082
        {
3083
          { 1, 7, 1 },
3084
          { 1, 2, 1 },
3085
          { 6, 2, 1 },
3086
          { 2, 3, 1 },
3087
          { 2, 5, 1 },
3088
          { 4, 3, 2 },
3089
          { 9, 5, 1 },
3090
          { 5, 8, 1 },
3091
          { 5, 10, 1 },
3092
          { 0, 0, 0}
3093
        }
3094
      },
3095
      { 'B', "ASX", // B ASX Asparagine or Aspartic acid i.e. N or D
3096
        {
3097
          { "N",  "N",  0.000,  1.576,  0.000},
3098
          { "CA",  "C",  1.277,  1.956,  0.378},
3099
          { "C",  "C",  1.657,  2.111,  1.142},
3100
          { "O",  "O",  1.005,  2.285,  1.603},
3101
          { "H",  "H",  -0.460,  0.827,  0.439},
3102
          { "HA",  "H",  2.086,  1.697,  -0.015},
3103
          { "CB",  "C",  1.215,  3.490,  0.329},
3104
          { "CG",  "C",  2.563,  4.246,  0.369},
3105
          { "OD2",  "O",  2.446,  5.465,  0.396},
3106
          { "HB1",  "H",  0.858,  3.913,  0.070},
3107
          { "HB2",  "H",  0.481,  3.976,  0.508},
3108
          { "", "", 0.0, 0.0, 0.0 }
3109
        },
3110
        {
3111
          { 6, 2, 1 },
3112
          { 1, 5, 1 },
3113
          { 1, 2, 1 },
3114
          { 10, 7, 1 },
3115
          { 2, 7, 1 },
3116
          { 2, 3, 1 },
3117
          { 7, 8, 1 },
3118
          { 7, 11, 1 },
3119
          { 8, 9, 1 },
3120
          { 3, 4, 2 },
3121
          { 0, 0, 0}
3122
        }
3123
      },
3124
      { 'C', "CYS", // C CYS Cysteine
3125
        {
3126
          { "N",  "N",  0.000,  1.576,  0.000},
3127
          { "CA",  "C",  1.240,  2.044,  0.344},
3128
          { "C",  "C",  1.604,  1.920,  1.098},
3129
          { "O",  "O",  2.805,  2.688,  1.146},
3130
          { "CB",  "C",  1.076,  3.574,  0.377},
3131
          { "SG",  "S",  2.635,  4.388,  0.481},
3132
          { "H",  "H",  -0.547,  0.711,  0.326},
3133
          { "HA",  "H",  2.055,  1.955,  -0.029},
3134
          { "HB1",  "H",  0.759,  4.104,  0.137},
3135
          { "HB2",  "H",  0.290,  3.934,  0.563},
3136
          { "HG",  "H",  2.305,  4.962,  0.729},
3137
          { "", "", 0.0, 0.0, 0.0 }
3138
        },
3139
        {
3140
          { 8, 2, 1 },
3141
          { 1, 7, 1 },
3142
          { 1, 2, 1 },
3143
          { 9, 5, 1 },
3144
          { 2, 5, 1 },
3145
          { 2, 3, 1 },
3146
          { 5, 6, 1 },
3147
          { 5, 10, 1 },
3148
          { 3, 4, 2 },
3149
          { 6, 11, 1 },
3150
          { 0, 0, 0}
3151
        }
3152
      },
3153
      { 'D', "ASP", // D ASP Aspartic acid
3154
        {
3155
          { "N",  "N",  0.000,  1.576,  0.000},
3156
          { "CA",  "C",  1.277,  1.956,  0.378},
3157
          { "C",  "C",  1.657,  2.111,  1.142},
3158
          { "O",  "O",  1.005,  2.285,  1.603},
3159
          { "CB",  "C",  1.215,  3.490,  0.329},
3160
          { "CG",  "C",  2.563,  4.246,  0.369},
3161
          { "OD1",  "O",  3.587,  3.562,  0.350},
3162
          { "OD2",  "O",  2.446,  5.465,  0.396},
3163
          { "H",  "H",  -0.460,  0.827,  0.439},
3164
          { "HA",  "H",  2.086,  1.697,  -0.015},
3165
          { "HB1",  "H",  0.858,  3.913,  0.070},
3166
          { "HB2",  "H",  0.481,  3.976,  0.508},
3167
          { "", "", 0.0, 0.0, 0.0 }
3168
        },
3169
        {
3170
          { 10, 2, 1 },
3171
          { 1, 9, 1 },
3172
          { 1, 2, 1 },
3173
          { 11, 5, 1 },
3174
          { 2, 5, 1 },
3175
          { 2, 3, 1 },
3176
          { 5, 6, 1 },
3177
          { 5, 12, 1 },
3178
          { 7, 6, 2 },
3179
          { 6, 8, 1 },
3180
          { 3, 4, 2 },
3181
          { 0, 0, 0}
3182
        }
3183
      },
3184
      { 'E', "GLU", // E GLU Glutamic acid
3185
        {
3186
          { "N",  "N",  0.000,  1.576,  0.000},
3187
          { "CA",  "C",  0.910,  2.346,  0.444},
3188
          { "C",  "C",  1.926,  1.740,  0.913},
3189
          { "O",  "O",  3.102,  2.014,  0.814},
3190
          { "CB",  "C",  0.167,  3.467,  0.718},
3191
          { "CG",  "C",  -0.772,  4.293,  0.478},
3192
          { "CD",  "C",  -1.539,  5.337,  0.640},
3193
          { "OE1",  "O",  -1.316,  5.704,  0.855},
3194
          { "OE2",  "O",  -2.382,  6.019,  0.527},
3195
          { "HA",  "H",  1.444,  3.037,  0.191},
3196
          { "H",  "H",  -0.971,  1.494,  0.147},
3197
          { "HB2",  "H",  0.911,  4.214,  0.802},
3198
          { "HB1",  "H",  -0.414,  3.237,  0.989},
3199
          { "HG2",  "H",  -1.507,  3.741,  0.327},
3200
          { "HG1",  "H",  -0.174,  4.922,  0.331},
3201
          { "", "", 0.0, 0.0, 0.0 }
3202
        },
3203
        {
3204
          { 1, 11, 1 },
3205
          { 1, 2, 1 },
3206
          { 10, 2, 1 },
3207
          { 2, 3, 1 },
3208
          { 2, 5, 1 },
3209
          { 14, 6, 1 },
3210
          { 3, 4, 2 },
3211
          { 15, 6, 1 },
3212
          { 6, 5, 1 },
3213
          { 6, 7, 1 },
3214
          { 5, 13, 1 },
3215
          { 5, 12, 1 },
3216
          { 9, 7, 2 },
3217
          { 7, 8, 1 },
3218
          { 0, 0, 0}
3219
        }
3220
      },
3221
      { 'F', "PHE", // F PHE Phenylalanine
3222
        {
3223
          { "N",  "N",  0.000,  1.576,  0.000},
3224
          { "CA",  "C",  1.247,  2.025,  0.345},
3225
          { "C",  "C",  1.575,  1.945,  1.105},
3226
          { "O",  "O",  0.830,  1.957,  1.633},
3227
          { "CB",  "C",  1.129,  3.574,  0.392},
3228
          { "CG",  "C",  0.795,  4.509,  0.099},
3229
          { "CD1",  "C",  -0.543,  4.812,  0.040},
3230
          { "CD2",  "C",  1.809,  5.212,  -0.036},
3231
          { "CE1",  "C",  -0.863,  5.867,  -0.120},
3232
          { "CE2",  "C",  1.489,  6.326,  -0.170},
3233
          { "CZ",  "C",  0.153,  6.675,  -0.201},
3234
          { "H",  "H",  -0.577,  0.741,  0.345},
3235
          { "HA",  "H",  2.070,  1.915,  -0.029},
3236
          { "HB1",  "H",  0.375,  3.918,  0.590},
3237
          { "HB2",  "H",  2.072,  4.010,  0.494},
3238
          { "HD1",  "H",  -1.338,  4.286,  0.153},
3239
          { "HD2",  "H",  2.846,  4.963,  -0.001},
3240
          { "HE1",  "H",  -1.898,  6.114,  -0.150},
3241
          { "HE2",  "H",  2.276,  6.964,  -0.227},
3242
          { "HZ",  "H",  -0.097,  7.602,  -0.270},
3243
          { "", "", 0.0, 0.0, 0.0 }
3244
        },
3245
        {
3246
          { 20, 11, 1 },
3247
          { 19, 10, 1 },
3248
          { 11, 10, 2 },
3249
          { 11, 9, 1 },
3250
          { 10, 8, 1 },
3251
          { 18, 9, 1 },
3252
          { 9, 7, 2 },
3253
          { 8, 17, 1 },
3254
          { 8, 6, 2 },
3255
          { 13, 2, 1 },
3256
          { 1, 12, 1 },
3257
          { 1, 2, 1 },
3258
          { 7, 6, 1 },
3259
          { 7, 16, 1 },
3260
          { 6, 5, 1 },
3261
          { 2, 5, 1 },
3262
          { 2, 3, 1 },
3263
          { 5, 15, 1 },
3264
          { 5, 14, 1 },
3265
          { 3, 4, 2 },
3266
          { 0, 0, 0}
3267
        }
3268
      },
3269
      { 'G', "GLY", // G GLY Glycine
3270
        {
3271
          { "N",  "N",  0.000,  1.576,  0.000},
3272
          { "CA",  "C",  1.248,  2.021,  0.345},
3273
          { "C",  "C",  1.569,  1.950,  1.106},
3274
          { "O",  "O",  0.839,  1.959,  1.616},
3275
          { "H",  "H",  -0.581,  0.747,  0.349},
3276
          { "HA1",  "H",  2.081,  1.949,  -0.021},
3277
          { "HA2",  "H",  1.177,  3.121,  0.379},
3278
          { "", "", 0.0, 0.0, 0.0 }
3279
        },
3280
        {
3281
          { 6, 2, 1 },
3282
          { 1, 5, 1 },
3283
          { 1, 2, 1 },
3284
          { 2, 7, 1 },
3285
          { 2, 3, 1 },
3286
          { 3, 4, 2 },
3287
          { 0, 0, 0}
3288
        }
3289
      },
3290
      { 'H', "HIS", // H HIS Histidine
3291
        {
3292
          { "N",  "N",  0.000,  1.576,  0.000},
3293
          { "CA",  "C",  0.950,  2.280,  0.454},
3294
          { "C",  "C",  1.934,  1.609,  0.944},
3295
          { "O",  "O",  3.126,  1.770,  0.820},
3296
          { "CB",  "C",  0.255,  3.433,  0.731},
3297
          { "CG",  "C",  -0.659,  4.241,  0.496},
3298
          { "ND1",  "N",  -0.268,  5.058,  0.290},
3299
          { "CD2",  "C",  -1.970,  4.460,  0.547},
3300
          { "CE1",  "C",  -1.269,  5.817,  0.232},
3301
          { "NE2",  "N",  -2.293,  5.436,  0.342},
3302
          { "HA",  "H",  1.509,  2.939,  0.189},
3303
          { "H",  "H",  -0.977,  1.624,  0.127},
3304
          { "HB2",  "H",  1.020,  4.169,  0.809},
3305
          { "HB1",  "H",  -0.320,  3.247,  1.008},
3306
          { "HD1",  "H",  0.691,  5.179,  0.219},
3307
          { "HD2",  "H",  -2.632,  4.175,  0.736},
3308
          { "HE1",  "H",  -1.242,  6.719,  0.134},
3309
          { "", "", 0.0, 0.0, 0.0 }
3310
        },
3311
        {
3312
          { 1, 12, 1 },
3313
          { 1, 2, 1 },
3314
          { 11, 2, 1 },
3315
          { 17, 9, 1 },
3316
          { 2, 3, 1 },
3317
          { 2, 5, 1 },
3318
          { 15, 7, 1 },
3319
          { 4, 3, 2 },
3320
          { 9, 7, 1 },
3321
          { 9, 10, 2 },
3322
          { 7, 6, 1 },
3323
          { 10, 8, 1 },
3324
          { 6, 5, 1 },
3325
          { 6, 8, 2 },
3326
          { 5, 14, 1 },
3327
          { 5, 13, 1 },
3328
          { 8, 16, 1 },
3329
          { 0, 0, 0}
3330
        }
3331
      },
3332
      { 'I', "ILE", // I ILE Isoleucine
3333
        {
3334
          { "N",  "N",  0.000,  1.576,  0.000},
3335
          { "CA",  "C",  1.249,  2.017,  0.346},
3336
          { "C",  "C",  1.562,  1.956,  1.107},
3337
          { "O",  "O",  2.768,  2.715,  1.159},
3338
          { "CB",  "C",  1.224,  3.599,  0.360},
3339
          { "CG1",  "C",  0.832,  4.480,  0.053},
3340
          { "CG2",  "C",  2.576,  4.245,  0.472},
3341
          { "CD1",  "C",  0.483,  5.914,  0.141},
3342
          { "H",  "H",  -0.587,  0.754,  0.351},
3343
          { "HA",  "H",  2.064,  1.835,  -0.033},
3344
          { "HB",  "H",  0.446,  3.960,  0.548},
3345
          { "HG11",  "H",  1.620,  4.608,  -0.116},
3346
          { "HG12",  "H",  -0.065,  4.164,  -0.078},
3347
          { "HG21",  "H",  2.532,  5.347,  0.462},
3348
          { "HG22",  "H",  2.875,  4.163,  0.725},
3349
          { "HG23",  "H",  3.408,  3.978,  0.307},
3350
          { "HD11",  "H",  0.147,  6.555,  0.006},
3351
          { "HD12",  "H",  -0.333,  5.998,  0.265},
3352
          { "HD13",  "H",  1.346,  6.470,  0.207},
3353
          { "", "", 0.0, 0.0, 0.0 }
3354
        },
3355
        {
3356
          { 12, 6, 1 },
3357
          { 13, 6, 1 },
3358
          { 10, 2, 1 },
3359
          { 1, 9, 1 },
3360
          { 1, 2, 1 },
3361
          { 17, 8, 1 },
3362
          { 6, 8, 1 },
3363
          { 6, 5, 1 },
3364
          { 2, 5, 1 },
3365
          { 2, 3, 1 },
3366
          { 8, 19, 1 },
3367
          { 8, 18, 1 },
3368
          { 16, 7, 1 },
3369
          { 5, 7, 1 },
3370
          { 5, 11, 1 },
3371
          { 3, 4, 2 },
3372
          { 7, 14, 1 },
3373
          { 7, 15, 1 },
3374
          { 0, 0, 0}
3375
        }
3376
      },
3377
      { 'J', "XLE", // J XLE Leucine or Isoleucine i.e. L or I
3378
        {
3379
          { "N",  "N",  0.000,  1.576,  0.000},
3380
          { "CA",  "C",  1.249,  2.017,  0.346},
3381
          { "C",  "C",  1.562,  1.956,  1.107},
3382
          { "O",  "O",  2.768,  2.715,  1.159},
3383
          { "CB",  "C",  1.224,  3.599,  0.360},
3384
          { "CG1",  "C",  0.832,  4.480,  0.053},
3385
          { "CD1",  "C",  0.483,  5.914,  0.141},
3386
          { "H",  "H",  -0.587,  0.754,  0.351},
3387
          { "HA",  "H",  2.064,  1.835,  -0.033},
3388
          { "HB",  "H",  0.446,  3.960,  0.548},
3389
          { "HG11",  "H",  1.620,  4.608,  -0.116},
3390
          { "HG12",  "H",  -0.065,  4.164,  -0.078},
3391
          { "HD11",  "H",  0.147,  6.555,  0.006},
3392
          { "HD12",  "H",  -0.333,  5.998,  0.265},
3393
          { "", "", 0.0, 0.0, 0.0 }
3394
        },
3395
        {
3396
          { 11, 6, 1 },
3397
          { 12, 6, 1 },
3398
          { 9, 2, 1 },
3399
          { 1, 8, 1 },
3400
          { 1, 2, 1 },
3401
          { 13, 7, 1 },
3402
          { 6, 7, 1 },
3403
          { 6, 5, 1 },
3404
          { 2, 5, 1 },
3405
          { 2, 3, 1 },
3406
          { 7, 14, 1 },
3407
          { 5, 10, 1 },
3408
          { 3, 4, 2 },
3409
          { 0, 0, 0}
3410
        }
3411
      },
3412
      { 'K', "LYS", // K LYS Lysine
3413
        {
3414
          { "N",  "N",  0.000,  1.576,  0.000},
3415
          { "CA",  "C",  0.947,  2.308,  0.444},
3416
          { "C",  "C",  1.917,  1.661,  0.940},
3417
          { "O",  "O",  3.102,  1.908,  0.855},
3418
          { "CB",  "C",  0.242,  3.451,  0.721},
3419
          { "CG",  "C",  -0.645,  4.320,  0.478},
3420
          { "CD",  "C",  -1.510,  5.312,  0.650},
3421
          { "CE",  "C",  -2.471,  6.121,  0.490},
3422
          { "NZ",  "N",  -3.334,  7.021,  0.612},
3423
          { "HA",  "H",  1.506,  2.980,  0.186},
3424
          { "H",  "H",  -0.957,  1.471,  0.178},
3425
          { "HB2",  "H",  1.001,  4.172,  0.813},
3426
          { "HB1",  "H",  -0.369,  3.228,  0.988},
3427
          { "HG2",  "H",  -1.317,  3.804,  0.304},
3428
          { "HG1",  "H",  -0.005,  4.988,  0.348},
3429
          { "HD2",  "H",  -0.851,  6.067,  0.731},
3430
          { "HD1",  "H",  -2.112,  4.877,  0.810},
3431
          { "HE2",  "H",  -3.107,  5.498,  0.378},
3432
          { "HE1",  "H",  -1.882,  6.791,  0.389},
3433
          { "HZ3",  "H",  -3.936,  6.560,  0.725},
3434
          { "HZ2",  "H",  -4.019,  7.560,  0.524},
3435
          { "HZ1",  "H",  -2.751,  7.795,  0.676},
3436
          { "", "", 0.0, 0.0, 0.0 }
3437
        },
3438
        {
3439
          { 1, 11, 1 },
3440
          { 1, 2, 1 },
3441
          { 10, 2, 1 },
3442
          { 2, 3, 1 },
3443
          { 2, 5, 1 },
3444
          { 14, 6, 1 },
3445
          { 3, 4, 2 },
3446
          { 15, 6, 1 },
3447
          { 6, 5, 1 },
3448
          { 6, 7, 1 },
3449
          { 18, 8, 1 },
3450
          { 5, 13, 1 },
3451
          { 5, 12, 1 },
3452
          { 19, 8, 1 },
3453
          { 8, 7, 1 },
3454
          { 8, 9, 1 },
3455
          { 7, 17, 1 },
3456
          { 7, 16, 1 },
3457
          { 21, 9, 1 },
3458
          { 9, 20, 1 },
3459
          { 9, 22, 1 },
3460
          { 0, 0, 0}
3461
        }
3462
      },
3463
      { 'L', "LEU", // L LEU Leucine
3464
        {
3465
          { "N",  "N",  0.000,  1.576,  0.000},
3466
          { "CA",  "C",  0.930,  2.335,  0.438},
3467
          { "C",  "C",  1.911,  1.701,  0.925},
3468
          { "O",  "O",  3.096,  1.942,  0.837},
3469
          { "CB",  "C",  0.226,  3.473,  0.717},
3470
          { "CG",  "C",  -0.820,  4.280,  0.501},
3471
          { "CD1",  "C",  -1.494,  5.347,  0.691},
3472
          { "CD2",  "C",  -0.194,  5.223,  0.275},
3473
          { "HA",  "H",  1.500,  2.994,  0.182},
3474
          { "H",  "H",  -0.954,  1.440,  0.181},
3475
          { "HB2",  "H",  0.999,  4.214,  0.785},
3476
          { "HB1",  "H",  -0.277,  3.266,  1.002},
3477
          { "HG",  "H",  -1.618,  3.666,  0.387},
3478
          { "HD13",  "H",  -1.970,  5.030,  0.873},
3479
          { "HD12",  "H",  -2.270,  5.876,  0.589},
3480
          { "HD11",  "H",  -0.746,  6.106,  0.740},
3481
          { "HD23",  "H",  0.668,  5.733,  0.359},
3482
          { "HD22",  "H",  -0.935,  6.001,  0.232},
3483
          { "HD21",  "H",  0.135,  4.849,  0.080},
3484
          { "", "", 0.0, 0.0, 0.0 }
3485
        },
3486
        {
3487
          { 1, 10, 1 },
3488
          { 1, 2, 1 },
3489
          { 19, 8, 1 },
3490
          { 9, 2, 1 },
3491
          { 2, 3, 1 },
3492
          { 2, 5, 1 },
3493
          { 3, 4, 2 },
3494
          { 18, 8, 1 },
3495
          { 13, 6, 1 },
3496
          { 8, 17, 1 },
3497
          { 8, 6, 1 },
3498
          { 6, 5, 1 },
3499
          { 6, 7, 1 },
3500
          { 5, 12, 1 },
3501
          { 5, 11, 1 },
3502
          { 15, 7, 1 },
3503
          { 7, 14, 1 },
3504
          { 7, 16, 1 },
3505
          { 0, 0, 0}
3506
        }
3507
      },
3508
      { 'M', "MET", // M MET Methionine
3509
        {
3510
          { "N",  "N",  0.000,  1.576,  0.000},
3511
          { "CA",  "C",  0.933,  2.282,  0.466},
3512
          { "C",  "C",  1.911,  1.626,  0.963},
3513
          { "O",  "O",  3.095,  1.885,  0.883},
3514
          { "CB",  "C",  0.222,  3.387,  0.768},
3515
          { "CG",  "C",  -0.732,  4.265,  0.542},
3516
          { "SD",  "S",  0.101,  5.355,  0.289},
3517
          { "CE",  "C",  1.257,  6.259,  0.476},
3518
          { "HA",  "H",  1.490,  2.973,  0.214},
3519
          { "H",  "H",  -0.977,  1.544,  0.137},
3520
          { "HB2",  "H",  0.981,  4.105,  0.862},
3521
          { "HB1",  "H",  -0.358,  3.141,  1.046},
3522
          { "HG2",  "H",  -1.165,  5.040,  0.683},
3523
          { "HG1",  "H",  -1.563,  3.740,  0.418},
3524
          { "HE3",  "H",  0.729,  6.775,  0.601},
3525
          { "HE2",  "H",  1.672,  7.081,  0.385},
3526
          { "HE1",  "H",  2.080,  5.645,  0.541},
3527
          { "", "", 0.0, 0.0, 0.0 }
3528
        },
3529
        {
3530
          { 1, 10, 1 },
3531
          { 1, 2, 1 },
3532
          { 9, 2, 1 },
3533
          { 2, 3, 1 },
3534
          { 2, 5, 1 },
3535
          { 3, 4, 2 },
3536
          { 14, 6, 1 },
3537
          { 7, 6, 1 },
3538
          { 7, 8, 1 },
3539
          { 6, 5, 1 },
3540
          { 6, 13, 1 },
3541
          { 5, 12, 1 },
3542
          { 5, 11, 1 },
3543
          { 16, 8, 1 },
3544
          { 8, 17, 1 },
3545
          { 8, 15, 1 },
3546
          { 0, 0, 0}
3547
        }
3548
      },
3549
      { 'N', "ASN", // N ASN Asparagine
3550
        {
3551
          { "N",  "N",  0.000,  1.576,  0.000},
3552
          { "CA",  "C",  0.948,  2.326,  0.449},
3553
          { "C",  "C",  1.942,  1.694,  0.928},
3554
          { "O",  "O",  3.148,  1.800,  0.841},
3555
          { "H",  "H",  -0.477,  0.752,  0.474},
3556
          { "HA",  "H",  1.494,  2.984,  0.184},
3557
          { "CB",  "C",  0.243,  3.477,  0.720},
3558
          { "HB1",  "H",  -0.434,  3.998,  0.534},
3559
          { "HB2",  "H",  1.006,  4.240,  0.780},
3560
          { "CG",  "C",  -0.535,  3.369,  1.100},
3561
          { "OD2",  "O",  -0.005,  4.017,  1.342},
3562
          { "ND1",  "N",  -1.799,  2.906,  1.124},
3563
          { "HD1",  "H",  -2.252,  2.576,  0.819},
3564
          { "HD2",  "H",  -2.294,  3.144,  1.401},
3565
          { "", "", 0.0, 0.0, 0.0 }
3566
        },
3567
        {
3568
          { 1, 5, 1 },
3569
          { 1, 2, 1 },
3570
          { 6, 2, 1 },
3571
          { 2, 3, 1 },
3572
          { 2, 7, 1 },
3573
          { 4, 3, 2 },
3574
          { 13, 12, 1 },
3575
          { 8, 7, 1 },
3576
          { 7, 9, 1 },
3577
          { 7, 10, 1 },
3578
          { 12, 10, 1 },
3579
          { 12, 14, 1 },
3580
          { 10, 11, 2 },
3581
          { 0, 0, 0}
3582
        }
3583
      },
3584
      { 'O', "PYL", // O PYL Pyrrolysine (K Lysine derivative)
3585
        {
3586
          { "N",  "N",  0.000,  1.576,  0.000},
3587
          { "CA",  "C",  0.947,  2.308,  0.444},
3588
          { "C",  "C",  1.917,  1.661,  0.940},
3589
          { "O",  "O",  3.102,  1.908,  0.855},
3590
          { "CB",  "C",  0.242,  3.451,  0.721},
3591
          { "CG",  "C",  -0.645,  4.320,  0.478},
3592
          { "CD",  "C",  -1.510,  5.312,  0.650},
3593
          { "CE",  "C",  -2.471,  6.121,  0.490},
3594
          { "NZ",  "N",  -3.334,  7.021,  0.612},
3595
          { "HA",  "H",  1.506,  2.980,  0.186},
3596
          { "H",  "H",  -0.957,  1.471,  0.178},
3597
          { "HB2",  "H",  1.001,  4.172,  0.813},
3598
          { "HB1",  "H",  -0.369,  3.228,  0.988},
3599
          { "HG2",  "H",  -1.317,  3.804,  0.304},
3600
          { "HG1",  "H",  -0.005,  4.988,  0.348},
3601
          { "HD2",  "H",  -0.851,  6.067,  0.731},
3602
          { "HD1",  "H",  -2.112,  4.877,  0.810},
3603
          { "HE2",  "H",  -3.107,  5.498,  0.378},
3604
          { "HE1",  "H",  -1.882,  6.791,  0.389},
3605
          { "HZ3",  "H",  -3.936,  6.560,  0.725},
3606
          { "HZ2",  "H",  -4.019,  7.560,  0.524},
3607
          { "HZ1",  "H",  -2.751,  7.795,  0.676},
3608
          { "", "", 0.0, 0.0, 0.0 }
3609
        },
3610
        {
3611
          { 1, 11, 1 },
3612
          { 1, 2, 1 },
3613
          { 10, 2, 1 },
3614
          { 2, 3, 1 },
3615
          { 2, 5, 1 },
3616
          { 14, 6, 1 },
3617
          { 3, 4, 2 },
3618
          { 15, 6, 1 },
3619
          { 6, 5, 1 },
3620
          { 6, 7, 1 },
3621
          { 18, 8, 1 },
3622
          { 5, 13, 1 },
3623
          { 5, 12, 1 },
3624
          { 19, 8, 1 },
3625
          { 8, 7, 1 },
3626
          { 8, 9, 1 },
3627
          { 7, 17, 1 },
3628
          { 7, 16, 1 },
3629
          { 21, 9, 1 },
3630
          { 9, 20, 1 },
3631
          { 9, 22, 1 },
3632
          { 0, 0, 0}
3633
        }
3634
      },
3635
      { 'P', "PRO", // P PRO Proline
3636
        {
3637
          { "N",  "N",  0.000,  1.576,  0.000},
3638
          { "CA",  "C",  1.411,  1.867,  0.295},
3639
          { "C",  "C",  1.762,  1.962,  1.090},
3640
          { "O",  "O",  0.887,  2.164,  1.520},
3641
          { "CB",  "C",  1.482,  3.388,  0.297},
3642
          { "CG",  "C",  0.041,  3.764,  0.404},
3643
          { "CD",  "C",  -0.812,  2.773,  0.156},
3644
          { "HA",  "H",  2.139,  1.587,  -0.143},
3645
          { "HB1",  "H",  2.160,  3.805,  0.510},
3646
          { "HB2",  "H",  1.672,  3.881,  0.031},
3647
          { "HG1",  "H",  -0.227,  3.726,  0.690},
3648
          { "HG2",  "H",  -0.114,  4.791,  0.320},
3649
          { "HD1",  "H",  -1.750,  2.547,  0.358},
3650
          { "HD2",  "H",  -0.967,  3.433,  -0.126},
3651
          { "", "", 0.0, 0.0, 0.0 }
3652
        },
3653
        {
3654
          { 14, 7, 1 },
3655
          { 8, 2, 1 },
3656
          { 1, 7, 1 },
3657
          { 1, 2, 1 },
3658
          { 10, 5, 1 },
3659
          { 7, 13, 1 },
3660
          { 7, 6, 1 },
3661
          { 2, 5, 1 },
3662
          { 2, 3, 1 },
3663
          { 5, 6, 1 },
3664
          { 5, 9, 1 },
3665
          { 6, 12, 1 },
3666
          { 6, 11, 1 },
3667
          { 3, 4, 2 },
3668
          { 0, 0, 0}
3669
        }
3670
      },
3671
      { 'Q', "GLN", // Q GLN Glutamine
3672
        {
3673
          { "N",  "N",  0.000,  1.576,  0.000},
3674
          { "CA",  "C",  0.932,  2.292,  0.461},
3675
          { "C",  "C",  1.945,  1.628,  0.932},
3676
          { "O",  "O",  3.134,  1.785,  0.797},
3677
          { "CB",  "C",  0.234,  3.389,  0.768},
3678
          { "CG",  "C",  -0.593,  4.374,  0.542},
3679
          { "CD",  "C",  -1.534,  5.262,  0.707},
3680
          { "OE1",  "O",  -2.508,  5.692,  0.597},
3681
          { "NE2",  "N",  -1.306,  5.805,  0.928},
3682
          { "HA",  "H",  1.459,  2.997,  0.206},
3683
          { "H",  "H",  -0.980,  1.619,  0.116},
3684
          { "HB2",  "H",  1.012,  4.047,  0.880},
3685
          { "HB1",  "H",  -0.418,  3.126,  1.029},
3686
          { "HG2",  "H",  -1.198,  3.942,  0.347},
3687
          { "HG1",  "H",  0.090,  5.088,  0.439},
3688
          { "HE21",  "H",  -0.512,  5.657,  1.031},
3689
          { "HE22",  "H",  -1.955,  6.518,  0.972},
3690
          { "", "", 0.0, 0.0, 0.0 }
3691
        },
3692
        {
3693
          { 1, 11, 1 },
3694
          { 1, 2, 1 },
3695
          { 10, 2, 1 },
3696
          { 2, 3, 1 },
3697
          { 2, 5, 1 },
3698
          { 4, 3, 2 },
3699
          { 14, 6, 1 },
3700
          { 15, 6, 1 },
3701
          { 6, 5, 1 },
3702
          { 6, 7, 1 },
3703
          { 5, 13, 1 },
3704
          { 5, 12, 1 },
3705
          { 8, 7, 2 },
3706
          { 7, 9, 1 },
3707
          { 9, 16, 1 },
3708
          { 9, 17, 1 },
3709
          { 0, 0, 0}
3710
        }
3711
      },
3712
      { 'R', "ARG", // R ARG Arginine
3713
        {
3714
          { "N",  "N",  0.000,  1.576,  0.000},
3715
          { "CA",  "C",  1.416,  1.596,  0.225},
3716
          { "C",  "C",  1.616,  2.015,  1.050},
3717
          { "O",  "O",  0.672,  2.525,  1.316},
3718
          { "CB",  "C",  1.985,  3.007,  0.077},
3719
          { "CG",  "C",  3.533,  3.130,  0.098},
3720
          { "CD",  "C",  4.008,  4.580,  0.046},
3721
          { "NE",  "N",  5.499,  4.632,  0.058},
3722
          { "CZ",  "C",  6.234,  5.734,  0.038},
3723
          { "NH1",  "N",  5.730,  6.928,  0.017},
3724
          { "NH2",  "N",  7.523,  5.621,  0.048},
3725
          { "H",  "H",  -0.326,  2.124,  -0.443},
3726
          { "HA",  "H",  1.937,  0.948,  -0.377},
3727
          { "HB1",  "H",  1.643,  3.517,  -0.208},
3728
          { "HB2",  "H",  1.517,  3.772,  0.272},
3729
          { "HG1",  "H",  3.904,  2.951,  0.439},
3730
          { "HG2",  "H",  3.985,  2.558,  -0.199},
3731
          { "HD1",  "H",  3.629,  5.079,  -0.145},
3732
          { "HD2",  "H",  3.559,  5.266,  0.199},
3733
          { "HE",  "H",  6.050,  3.779,  0.092},
3734
          { "HH11",  "H",  6.363,  7.728,  0.011},
3735
          { "HH12",  "H",  4.708,  6.950,  0.012},
3736
          { "HH21",  "H",  7.899,  4.681,  0.074},
3737
          { "HH22",  "H",  8.072,  6.480,  0.035},
3738
          { "", "", 0.0, 0.0, 0.0 }
3739
        },
3740
        {
3741
          { 12, 1, 1 },
3742
          { 18, 7, 1 },
3743
          { 14, 5, 1 },
3744
          { 17, 6, 1 },
3745
          { 13, 2, 1 },
3746
          { 1, 2, 1 },
3747
          { 22, 10, 1 },
3748
          { 21, 10, 1 },
3749
          { 10, 9, 2 },
3750
          { 7, 8, 1 },
3751
          { 7, 6, 1 },
3752
          { 7, 19, 1 },
3753
          { 9, 8, 1 },
3754
          { 9, 11, 1 },
3755
          { 24, 11, 1 },
3756
          { 5, 6, 1 },
3757
          { 5, 2, 1 },
3758
          { 5, 15, 1 },
3759
          { 8, 20, 1 },
3760
          { 11, 23, 1 },
3761
          { 6, 16, 1 },
3762
          { 2, 3, 1 },
3763
          { 3, 4, 2 },
3764
          { 0, 0, 0}
3765
        }
3766
      },
3767
      { 'S', "SER", // S SER Serine
3768
        {
3769
          { "N",  "N",  0.000,  1.576,  0.000},
3770
          { "CA",  "C",  1.225,  2.074,  0.344},
3771
          { "C",  "C",  1.650,  1.881,  1.087},
3772
          { "O",  "O",  1.008,  1.813,  1.663},
3773
          { "CB",  "C",  1.056,  3.606,  0.401},
3774
          { "OG",  "O",  0.160,  4.124,  0.658},
3775
          { "H",  "H",  -0.499,  0.664,  0.284},
3776
          { "HA",  "H",  2.031,  2.046,  -0.026},
3777
          { "HB1",  "H",  2.041,  4.080,  0.449},
3778
          { "HB2",  "H",  0.716,  4.159,  0.169},
3779
          { "HG",  "H",  -0.707,  3.729,  0.625},
3780
          { "", "", 0.0, 0.0, 0.0 }
3781
        },
3782
        {
3783
          { 8, 2, 1 },
3784
          { 1, 7, 1 },
3785
          { 1, 2, 1 },
3786
          { 2, 5, 1 },
3787
          { 2, 3, 1 },
3788
          { 10, 5, 1 },
3789
          { 5, 9, 1 },
3790
          { 5, 6, 1 },
3791
          { 3, 4, 2 },
3792
          { 11, 6, 1 },
3793
          { 0, 0, 0}
3794
        }
3795
      },
3796
      { 'T', "THR", // T THR Threonine
3797
        {
3798
          { "N",  "N",  0.000,  1.576,  0.000},
3799
          { "CA",  "C",  1.228,  2.069,  0.343},
3800
          { "C",  "C",  1.643,  1.888,  1.089},
3801
          { "O",  "O",  1.000,  1.825,  1.651},
3802
          { "CB",  "C",  1.051,  3.615,  0.406},
3803
          { "OG1",  "O",  0.772,  4.381,  0.112},
3804
          { "CG2",  "C",  2.273,  4.433,  0.524},
3805
          { "H",  "H",  -0.507,  0.671,  0.293},
3806
          { "HA",  "H",  2.037,  2.045,  -0.025},
3807
          { "HB",  "H",  0.192,  3.874,  0.581},
3808
          { "HG1",  "H",  0.606,  5.245,  0.193},
3809
          { "HG21",  "H",  2.080,  5.520,  0.508},
3810
          { "HG22",  "H",  2.557,  4.392,  0.766},
3811
          { "HG23",  "H",  3.163,  4.253,  0.378},
3812
          { "", "", 0.0, 0.0, 0.0 }
3813
        },
3814
        {
3815
          { 9, 2, 1 },
3816
          { 1, 8, 1 },
3817
          { 1, 2, 1 },
3818
          { 6, 11, 1 },
3819
          { 6, 5, 1 },
3820
          { 2, 5, 1 },
3821
          { 2, 3, 1 },
3822
          { 5, 10, 1 },
3823
          { 5, 7, 1 },
3824
          { 14, 7, 1 },
3825
          { 3, 4, 2 },
3826
          { 7, 12, 1 },
3827
          { 7, 13, 1 },
3828
          { 0, 0, 0}
3829
        }
3830
      },
3831
      { 'U', "SEC", // U SEC Selenocysteine (CYS with Se in place of S)
3832
        {
3833
          { "N",  "N",  0.000,  1.576,  0.000},
3834
          { "CA",  "C",  1.240,  2.044,  0.344},
3835
          { "C",  "C",  1.604,  1.920,  1.098},
3836
          { "O",  "O",  2.805,  2.688,  1.146},
3837
          { "CB",  "C",  1.076,  3.574,  0.377},
3838
          { "SEG",  "Se",  2.635,  4.388,  0.481},
3839
          { "H",  "H",  -0.547,  0.711,  0.326},
3840
          { "HA",  "H",  2.055,  1.955,  -0.029},
3841
          { "HB1",  "H",  0.759,  4.104,  0.137},
3842
          { "HB2",  "H",  0.290,  3.934,  0.563},
3843
          { "HG",  "H",  2.305,  4.962,  0.729},
3844
          { "", "", 0.0, 0.0, 0.0 }
3845
        },
3846
        {
3847
          { 8, 2, 1 },
3848
          { 1, 7, 1 },
3849
          { 1, 2, 1 },
3850
          { 9, 5, 1 },
3851
          { 2, 5, 1 },
3852
          { 2, 3, 1 },
3853
          { 5, 6, 1 },
3854
          { 5, 10, 1 },
3855
          { 3, 4, 2 },
3856
          { 6, 11, 1 },
3857
          { 0, 0, 0}
3858
        }
3859
      },
3860
      { 'V', "VAL", // V VAL Valine
3861
        {
3862
          { "N",  "N",  0.000,  1.576,  0.000},
3863
          { "CA",  "C",  1.246,  2.028,  0.345},
3864
          { "C",  "C",  1.579,  1.942,  1.104},
3865
          { "O",  "O",  0.854,  1.945,  1.626},
3866
          { "CB",  "C",  1.137,  3.601,  0.378},
3867
          { "CG1",  "C",  0.990,  4.498,  0.065},
3868
          { "CG2",  "C",  2.309,  4.401,  0.538},
3869
          { "H",  "H",  -0.572,  0.737,  0.343},
3870
          { "HA",  "H",  2.070,  1.900,  -0.027},
3871
          { "HB",  "H",  0.220,  3.885,  0.528},
3872
          { "HG11",  "H",  1.892,  4.613,  -0.073},
3873
          { "HG12",  "H",  0.135,  4.338,  -0.089},
3874
          { "HG13",  "H",  0.806,  5.520,  0.142},
3875
          { "HG21",  "H",  3.282,  4.161,  0.428},
3876
          { "HG22",  "H",  2.158,  5.489,  0.509},
3877
          { "HG23",  "H",  2.419,  4.421,  0.788},
3878
          { "", "", 0.0, 0.0, 0.0 }
3879
        },
3880
        {
3881
          { 12, 6, 1 },
3882
          { 11, 6, 1 },
3883
          { 9, 2, 1 },
3884
          { 1, 8, 1 },
3885
          { 1, 2, 1 },
3886
          { 6, 13, 1 },
3887
          { 6, 5, 1 },
3888
          { 2, 5, 1 },
3889
          { 2, 3, 1 },
3890
          { 5, 10, 1 },
3891
          { 5, 7, 1 },
3892
          { 14, 7, 1 },
3893
          { 3, 4, 2 },
3894
          { 7, 15, 1 },
3895
          { 7, 16, 1 },
3896
          { 0, 0, 0}
3897
        }
3898
      },
3899
      { 'W', "TRP", // W TRP Tryptophan
3900
        {
3901
          { "N",  "N",  0.000,  1.576,  0.000},
3902
          { "CA",  "C",  1.246,  2.034,  0.341},
3903
          { "C",  "C",  1.601,  1.924,  1.099},
3904
          { "O",  "O",  0.894,  1.916,  1.630},
3905
          { "CB",  "C",  1.088,  3.574,  0.392},
3906
          { "CG",  "C",  0.917,  4.497,  0.089},
3907
          { "CD1",  "C",  -0.313,  5.053,  0.002},
3908
          { "CD2",  "C",  1.885,  5.143,  -0.065},
3909
          { "NE1",  "N",  -0.133,  6.139,  -0.156},
3910
          { "CE2",  "C",  1.238,  6.200,  -0.187},
3911
          { "CE3",  "C",  3.293,  4.979,  -0.080},
3912
          { "CZ2",  "C",  1.996,  7.193,  -0.286},
3913
          { "CZ3",  "C",  4.022,  5.914,  -0.215},
3914
          { "CH2",  "C",  3.384,  7.044,  -0.298},
3915
          { "H",  "H",  -0.517,  0.782,  0.288},
3916
          { "HA",  "H",  2.067,  1.947,  -0.031},
3917
          { "HB1",  "H",  0.238,  3.884,  0.564},
3918
          { "HB2",  "H",  1.970,  4.047,  0.517},
3919
          { "HD1",  "H",  -1.275,  4.736,  0.080},
3920
          { "HE1",  "H",  -0.851,  6.770,  -0.213},
3921
          { "HE3",  "H",  3.791,  4.228,  0.050},
3922
          { "HZ2",  "H",  1.509,  8.081,  -0.334},
3923
          { "HZ3",  "H",  5.095,  5.818,  -0.228},
3924
          { "HH2",  "H",  3.975,  7.842,  -0.355},
3925
          { "", "", 0.0, 0.0, 0.0 }
3926
        },
3927
        {
3928
          { 24, 14, 1 },
3929
          { 22, 12, 1 },
3930
          { 14, 12, 1 },
3931
          { 14, 13, 2 },
3932
          { 12, 10, 2 },
3933
          { 20, 9, 1 },
3934
          { 23, 13, 1 },
3935
          { 13, 11, 1 },
3936
          { 10, 9, 1 },
3937
          { 10, 8, 1 },
3938
          { 9, 7, 1 },
3939
          { 11, 8, 2 },
3940
          { 11, 21, 1 },
3941
          { 8, 6, 1 },
3942
          { 16, 2, 1 },
3943
          { 1, 15, 1 },
3944
          { 1, 2, 1 },
3945
          { 7, 19, 1 },
3946
          { 7, 6, 2 },
3947
          { 6, 5, 1 },
3948
          { 2, 5, 1 },
3949
          { 2, 3, 1 },
3950
          { 5, 18, 1 },
3951
          { 5, 17, 1 },
3952
          { 3, 4, 2 },
3953
          { 0, 0, 0}
3954
        }
3955
      },
3956
      { 'Y', "TYR", // Y TYR Tyrosine
3957
        {
3958
          { "N",  "N",  0.000,  1.576,  0.000},
3959
          { "CA",  "C",  1.230,  2.066,  0.343},
3960
          { "C",  "C",  1.638,  1.892,  1.091},
3961
          { "O",  "O",  0.981,  1.837,  1.656},
3962
          { "CB",  "C",  1.043,  3.595,  0.425},
3963
          { "CG",  "C",  0.707,  4.570,  0.145},
3964
          { "CD1",  "C",  1.704,  5.199,  -0.010},
3965
          { "CD2",  "C",  -0.611,  5.023,  0.121},
3966
          { "CE1",  "C",  1.383,  6.374,  -0.127},
3967
          { "CE2",  "C",  -0.930,  6.111,  -0.025},
3968
          { "CZ",  "C",  0.068,  6.830,  -0.126},
3969
          { "OH",  "O",  -0.244,  8.039,  -0.201},
3970
          { "H",  "H",  -0.512,  0.676,  0.298},
3971
          { "HA",  "H",  2.042,  2.054,  -0.023},
3972
          { "HB1",  "H",  0.272,  3.867,  0.627},
3973
          { "HB2",  "H",  1.961,  4.059,  0.533},
3974
          { "HD1",  "H",  2.727,  4.850,  -0.004},
3975
          { "HD2",  "H",  -1.394,  4.610,  0.251},
3976
          { "HE1",  "H",  2.150,  6.976,  -0.196},
3977
          { "HE2",  "H",  -1.953,  6.455,  -0.029},
3978
          { "HH",  "H",  -1.185,  8.185,  -0.187},
3979
          { "", "", 0.0, 0.0, 0.0 }
3980
        },
3981
        {
3982
          { 12, 21, 1 },
3983
          { 12, 11, 1 },
3984
          { 19, 9, 1 },
3985
          { 11, 9, 2 },
3986
          { 11, 10, 1 },
3987
          { 9, 7, 1 },
3988
          { 20, 10, 1 },
3989
          { 10, 8, 2 },
3990
          { 7, 17, 1 },
3991
          { 7, 6, 2 },
3992
          { 14, 2, 1 },
3993
          { 1, 13, 1 },
3994
          { 1, 2, 1 },
3995
          { 8, 6, 1 },
3996
          { 8, 18, 1 },
3997
          { 6, 5, 1 },
3998
          { 2, 5, 1 },
3999
          { 2, 3, 1 },
4000
          { 5, 16, 1 },
4001
          { 5, 15, 1 },
4002
          { 3, 4, 2 },
4003
          { 0, 0, 0}
4004
        }
4005
      },
4006
      { 'Z', "GLX", // Z GLX Glutamine or Glutamic acid i.e. Q or E
4007
        {
4008
          { "N",  "N",  0.000,  1.576,  0.000},
4009
          { "CA",  "C",  0.932,  2.292,  0.461},
4010
          { "C",  "C",  1.945,  1.628,  0.932},
4011
          { "O",  "O",  3.134,  1.785,  0.797},
4012
          { "CB",  "C",  0.234,  3.389,  0.768},
4013
          { "CG",  "C",  -0.593,  4.374,  0.542},
4014
          { "CD",  "C",  -1.534,  5.262,  0.707},
4015
          { "OE1",  "O",  -2.508,  5.692,  0.597},
4016
          { "HA",  "H",  1.459,  2.997,  0.206},
4017
          { "H",  "H",  -0.980,  1.619,  0.116},
4018
          { "HB2",  "H",  1.012,  4.047,  0.880},
4019
          { "HB1",  "H",  -0.418,  3.126,  1.029},
4020
          { "HG2",  "H",  -1.198,  3.942,  0.347},
4021
          { "HG1",  "H",  0.090,  5.088,  0.439},
4022
          { "", "", 0.0, 0.0, 0.0 }
4023
        },
4024
        {
4025
          { 1, 10, 1 },
4026
          { 1, 2, 1 },
4027
          { 9, 2, 1 },
4028
          { 2, 3, 1 },
4029
          { 2, 5, 1 },
4030
          { 4, 3, 2 },
4031
          { 13, 6, 1 },
4032
          { 14, 6, 1 },
4033
          { 6, 5, 1 },
4034
          { 6, 7, 1 },
4035
          { 5, 12, 1 },
4036
          { 5, 11, 1 },
4037
          { 8, 7, 2 },
4038
          { 0, 0, 0}
4039
        }
4040
      }
4041
    };
4042
4043
} //namespace OpenBabel