sequtil_tables.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:138k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: sequtil_tables.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:42:27  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: sequtil_tables.cpp,v 1000.1 2004/06/01 19:42:27 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Author:  Mati Shomrat
  35.  *
  36.  * File Description:
  37.  *   Shared utility functions for the various sequtil classes.
  38.  */  
  39. #include <ncbi_pch.hpp>
  40. #include "sequtil_tables.hpp"
  41. BEGIN_NCBI_SCOPE
  42. /////////////////////////////////////////////////////////////////////////////
  43. //
  44. // Conversion Tables
  45. // IUPACna to IUPACna
  46. const Uint1 CIupacnaToIupacna::scm_Table[256] = {
  47.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  48.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  49.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  50.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  51.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  52.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  53.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  54.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  55.     0xff, 0x41, 0x42, 0x43, 0x44, 0xff, 0xff, 0x47,
  56.     0x48, 0xff, 0xff, 0x4b, 0xff, 0x4d, 0x4e, 0xff,
  57.     0xff, 0xff, 0x52, 0x53, 0x54, 0x54, 0x56, 0x57,
  58.     0xff, 0x59, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  59.     0xff, 0x41, 0x42, 0x43, 0x44, 0xff, 0xff, 0x47,
  60.     0x48, 0xff, 0xff, 0x4b, 0xff, 0x4d, 0x4e, 0xff,
  61.     0xff, 0xff, 0x52, 0x53, 0x54, 0x54, 0x56, 0x57,
  62.     0xff, 0x59, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  63.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  64.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  65.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  66.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  67.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  68.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  69.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  70.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  71.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  72.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  73.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  74.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  75.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  76.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  77.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  78.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
  79. };
  80. // IUPACna to NCBI2na
  81. // A -> 0x0 A
  82. // B -> 0x1 C
  83. // C -> 0x1 C
  84. // D -> 0x2 G
  85. // G -> 0x2 G
  86. // H -> 0x0 A
  87. // K -> 0x2 G
  88. // M -> 0x1 C
  89. // N -> 0x0 A
  90. // R -> 0x2 G
  91. // S -> 0x1 C
  92. // T -> 0x3 T
  93. // V -> 0x0 A
  94. // W -> 0x3 T
  95. // Y -> 0x3 T
  96. // U -> 0x3 T
  97. const Uint1 CIupacnaTo2na::scm_Table[1024] = {
  98.     0xff, 0xff, 0xff, 0xff,
  99.     0xff, 0xff, 0xff, 0xff,
  100.     0xff, 0xff, 0xff, 0xff,
  101.     0xff, 0xff, 0xff, 0xff,
  102.     0xff, 0xff, 0xff, 0xff,
  103.     0xff, 0xff, 0xff, 0xff,
  104.     0xff, 0xff, 0xff, 0xff,
  105.     0xff, 0xff, 0xff, 0xff,
  106.     0xff, 0xff, 0xff, 0xff,
  107.     0xff, 0xff, 0xff, 0xff,
  108.     0xff, 0xff, 0xff, 0xff,
  109.     0xff, 0xff, 0xff, 0xff,
  110.     0xff, 0xff, 0xff, 0xff,
  111.     0xff, 0xff, 0xff, 0xff,
  112.     0xff, 0xff, 0xff, 0xff,
  113.     0xff, 0xff, 0xff, 0xff,
  114.     0xff, 0xff, 0xff, 0xff,
  115.     0xff, 0xff, 0xff, 0xff,
  116.     0xff, 0xff, 0xff, 0xff,
  117.     0xff, 0xff, 0xff, 0xff,
  118.     0xff, 0xff, 0xff, 0xff,
  119.     0xff, 0xff, 0xff, 0xff,
  120.     0xff, 0xff, 0xff, 0xff,
  121.     0xff, 0xff, 0xff, 0xff,
  122.     0xff, 0xff, 0xff, 0xff,
  123.     0xff, 0xff, 0xff, 0xff,
  124.     0xff, 0xff, 0xff, 0xff,
  125.     0xff, 0xff, 0xff, 0xff,
  126.     0xff, 0xff, 0xff, 0xff,
  127.     0xff, 0xff, 0xff, 0xff,
  128.     0xff, 0xff, 0xff, 0xff,
  129.     0xff, 0xff, 0xff, 0xff,
  130.     0xff, 0xff, 0xff, 0xff,
  131.     0xff, 0xff, 0xff, 0xff,
  132.     0xff, 0xff, 0xff, 0xff,
  133.     0xff, 0xff, 0xff, 0xff,
  134.     0xff, 0xff, 0xff, 0xff,
  135.     0xff, 0xff, 0xff, 0xff,
  136.     0xff, 0xff, 0xff, 0xff,
  137.     0xff, 0xff, 0xff, 0xff,
  138.     0xff, 0xff, 0xff, 0xff,
  139.     0xff, 0xff, 0xff, 0xff,
  140.     0xff, 0xff, 0xff, 0xff,
  141.     0xff, 0xff, 0xff, 0xff,
  142.     0xff, 0xff, 0xff, 0xff,
  143.     0xff, 0xff, 0xff, 0xff,
  144.     0xff, 0xff, 0xff, 0xff,
  145.     0xff, 0xff, 0xff, 0xff,
  146.     0xff, 0xff, 0xff, 0xff,
  147.     0xff, 0xff, 0xff, 0xff,
  148.     0xff, 0xff, 0xff, 0xff,
  149.     0xff, 0xff, 0xff, 0xff,
  150.     0xff, 0xff, 0xff, 0xff,
  151.     0xff, 0xff, 0xff, 0xff,
  152.     0xff, 0xff, 0xff, 0xff,
  153.     0xff, 0xff, 0xff, 0xff,
  154.     0xff, 0xff, 0xff, 0xff,
  155.     0xff, 0xff, 0xff, 0xff,
  156.     0xff, 0xff, 0xff, 0xff,
  157.     0xff, 0xff, 0xff, 0xff,
  158.     0xff, 0xff, 0xff, 0xff,
  159.     0xff, 0xff, 0xff, 0xff,
  160.     0xff, 0xff, 0xff, 0xff,
  161.     0xff, 0xff, 0xff, 0xff,
  162.     0xff, 0xff, 0xff, 0xff,
  163.     0x00, 0x00, 0x00, 0x00,
  164.     0x40, 0x10, 0x04, 0x01,
  165.     0x40, 0x10, 0x04, 0x01,
  166.     0x80, 0x20, 0x08, 0x02,
  167.     0xff, 0xff, 0xff, 0xff,
  168.     0xff, 0xff, 0xff, 0xff,
  169.     0x80, 0x20, 0x08, 0x02,
  170.     0x00, 0x00, 0x00, 0x00,
  171.     0xff, 0xff, 0xff, 0xff,
  172.     0xff, 0xff, 0xff, 0xff,
  173.     0x80, 0x20, 0x08, 0x02,
  174.     0xff, 0xff, 0xff, 0xff,
  175.     0x40, 0x10, 0x04, 0x01,
  176.     0x00, 0x00, 0x00, 0x00,
  177.     0xff, 0xff, 0xff, 0xff,
  178.     0xff, 0xff, 0xff, 0xff,
  179.     0xff, 0xff, 0xff, 0xff,
  180.     0x80, 0x20, 0x08, 0x02,
  181.     0x40, 0x10, 0x04, 0x01,
  182.     0xc0, 0x30, 0x0c, 0x03,
  183.     0xc0, 0x30, 0x0c, 0x03,
  184.     0x00, 0x00, 0x00, 0x00,
  185.     0xc0, 0x30, 0x0c, 0x03,
  186.     0xff, 0xff, 0xff, 0xff,
  187.     0xc0, 0x30, 0x0c, 0x03,
  188.     0xff, 0xff, 0xff, 0xff,
  189.     0xff, 0xff, 0xff, 0xff,
  190.     0xff, 0xff, 0xff, 0xff,
  191.     0xff, 0xff, 0xff, 0xff,
  192.     0xff, 0xff, 0xff, 0xff,
  193.     0xff, 0xff, 0xff, 0xff,
  194.     0xff, 0xff, 0xff, 0xff,
  195.     0x00, 0x00, 0x00, 0x00,
  196.     0x40, 0x10, 0x04, 0x01,
  197.     0x40, 0x10, 0x04, 0x01,
  198.     0x80, 0x20, 0x08, 0x02,
  199.     0xff, 0xff, 0xff, 0xff,
  200.     0xff, 0xff, 0xff, 0xff,
  201.     0x80, 0x20, 0x08, 0x02,
  202.     0x00, 0x00, 0x00, 0x00,
  203.     0xff, 0xff, 0xff, 0xff,
  204.     0xff, 0xff, 0xff, 0xff,
  205.     0x80, 0x20, 0x08, 0x02,
  206.     0xff, 0xff, 0xff, 0xff,
  207.     0x40, 0x10, 0x04, 0x01,
  208.     0x00, 0x00, 0x00, 0x00,
  209.     0xff, 0xff, 0xff, 0xff,
  210.     0xff, 0xff, 0xff, 0xff,
  211.     0xff, 0xff, 0xff, 0xff,
  212.     0x80, 0x20, 0x08, 0x02,
  213.     0x40, 0x10, 0x04, 0x01,
  214.     0xc0, 0x30, 0x0c, 0x03,
  215.     0xc0, 0x30, 0x0c, 0x03,
  216.     0x00, 0x00, 0x00, 0x00,
  217.     0xc0, 0x30, 0x0c, 0x03,
  218.     0xff, 0xff, 0xff, 0xff,
  219.     0xc0, 0x30, 0x0c, 0x03,
  220.     0xff, 0xff, 0xff, 0xff,
  221.     0xff, 0xff, 0xff, 0xff,
  222.     0xff, 0xff, 0xff, 0xff,
  223.     0xff, 0xff, 0xff, 0xff,
  224.     0xff, 0xff, 0xff, 0xff,
  225.     0xff, 0xff, 0xff, 0xff,
  226.     0xff, 0xff, 0xff, 0xff,
  227.     0xff, 0xff, 0xff, 0xff,
  228.     0xff, 0xff, 0xff, 0xff,
  229.     0xff, 0xff, 0xff, 0xff,
  230.     0xff, 0xff, 0xff, 0xff,
  231.     0xff, 0xff, 0xff, 0xff,
  232.     0xff, 0xff, 0xff, 0xff,
  233.     0xff, 0xff, 0xff, 0xff,
  234.     0xff, 0xff, 0xff, 0xff,
  235.     0xff, 0xff, 0xff, 0xff,
  236.     0xff, 0xff, 0xff, 0xff,
  237.     0xff, 0xff, 0xff, 0xff,
  238.     0xff, 0xff, 0xff, 0xff,
  239.     0xff, 0xff, 0xff, 0xff,
  240.     0xff, 0xff, 0xff, 0xff,
  241.     0xff, 0xff, 0xff, 0xff,
  242.     0xff, 0xff, 0xff, 0xff,
  243.     0xff, 0xff, 0xff, 0xff,
  244.     0xff, 0xff, 0xff, 0xff,
  245.     0xff, 0xff, 0xff, 0xff,
  246.     0xff, 0xff, 0xff, 0xff,
  247.     0xff, 0xff, 0xff, 0xff,
  248.     0xff, 0xff, 0xff, 0xff,
  249.     0xff, 0xff, 0xff, 0xff,
  250.     0xff, 0xff, 0xff, 0xff,
  251.     0xff, 0xff, 0xff, 0xff,
  252.     0xff, 0xff, 0xff, 0xff,
  253.     0xff, 0xff, 0xff, 0xff,
  254.     0xff, 0xff, 0xff, 0xff,
  255.     0xff, 0xff, 0xff, 0xff,
  256.     0xff, 0xff, 0xff, 0xff,
  257.     0xff, 0xff, 0xff, 0xff,
  258.     0xff, 0xff, 0xff, 0xff,
  259.     0xff, 0xff, 0xff, 0xff,
  260.     0xff, 0xff, 0xff, 0xff,
  261.     0xff, 0xff, 0xff, 0xff,
  262.     0xff, 0xff, 0xff, 0xff,
  263.     0xff, 0xff, 0xff, 0xff,
  264.     0xff, 0xff, 0xff, 0xff,
  265.     0xff, 0xff, 0xff, 0xff,
  266.     0xff, 0xff, 0xff, 0xff,
  267.     0xff, 0xff, 0xff, 0xff,
  268.     0xff, 0xff, 0xff, 0xff,
  269.     0xff, 0xff, 0xff, 0xff,
  270.     0xff, 0xff, 0xff, 0xff,
  271.     0xff, 0xff, 0xff, 0xff,
  272.     0xff, 0xff, 0xff, 0xff,
  273.     0xff, 0xff, 0xff, 0xff,
  274.     0xff, 0xff, 0xff, 0xff,
  275.     0xff, 0xff, 0xff, 0xff,
  276.     0xff, 0xff, 0xff, 0xff,
  277.     0xff, 0xff, 0xff, 0xff,
  278.     0xff, 0xff, 0xff, 0xff,
  279.     0xff, 0xff, 0xff, 0xff,
  280.     0xff, 0xff, 0xff, 0xff,
  281.     0xff, 0xff, 0xff, 0xff,
  282.     0xff, 0xff, 0xff, 0xff,
  283.     0xff, 0xff, 0xff, 0xff,
  284.     0xff, 0xff, 0xff, 0xff,
  285.     0xff, 0xff, 0xff, 0xff,
  286.     0xff, 0xff, 0xff, 0xff,
  287.     0xff, 0xff, 0xff, 0xff,
  288.     0xff, 0xff, 0xff, 0xff,
  289.     0xff, 0xff, 0xff, 0xff,
  290.     0xff, 0xff, 0xff, 0xff,
  291.     0xff, 0xff, 0xff, 0xff,
  292.     0xff, 0xff, 0xff, 0xff,
  293.     0xff, 0xff, 0xff, 0xff,
  294.     0xff, 0xff, 0xff, 0xff,
  295.     0xff, 0xff, 0xff, 0xff,
  296.     0xff, 0xff, 0xff, 0xff,
  297.     0xff, 0xff, 0xff, 0xff,
  298.     0xff, 0xff, 0xff, 0xff,
  299.     0xff, 0xff, 0xff, 0xff,
  300.     0xff, 0xff, 0xff, 0xff,
  301.     0xff, 0xff, 0xff, 0xff,
  302.     0xff, 0xff, 0xff, 0xff,
  303.     0xff, 0xff, 0xff, 0xff,
  304.     0xff, 0xff, 0xff, 0xff,
  305.     0xff, 0xff, 0xff, 0xff,
  306.     0xff, 0xff, 0xff, 0xff,
  307.     0xff, 0xff, 0xff, 0xff,
  308.     0xff, 0xff, 0xff, 0xff,
  309.     0xff, 0xff, 0xff, 0xff,
  310.     0xff, 0xff, 0xff, 0xff,
  311.     0xff, 0xff, 0xff, 0xff,
  312.     0xff, 0xff, 0xff, 0xff,
  313.     0xff, 0xff, 0xff, 0xff,
  314.     0xff, 0xff, 0xff, 0xff,
  315.     0xff, 0xff, 0xff, 0xff,
  316.     0xff, 0xff, 0xff, 0xff,
  317.     0xff, 0xff, 0xff, 0xff,
  318.     0xff, 0xff, 0xff, 0xff,
  319.     0xff, 0xff, 0xff, 0xff,
  320.     0xff, 0xff, 0xff, 0xff,
  321.     0xff, 0xff, 0xff, 0xff,
  322.     0xff, 0xff, 0xff, 0xff,
  323.     0xff, 0xff, 0xff, 0xff,
  324.     0xff, 0xff, 0xff, 0xff,
  325.     0xff, 0xff, 0xff, 0xff,
  326.     0xff, 0xff, 0xff, 0xff,
  327.     0xff, 0xff, 0xff, 0xff,
  328.     0xff, 0xff, 0xff, 0xff,
  329.     0xff, 0xff, 0xff, 0xff,
  330.     0xff, 0xff, 0xff, 0xff,
  331.     0xff, 0xff, 0xff, 0xff,
  332.     0xff, 0xff, 0xff, 0xff,
  333.     0xff, 0xff, 0xff, 0xff,
  334.     0xff, 0xff, 0xff, 0xff,
  335.     0xff, 0xff, 0xff, 0xff,
  336.     0xff, 0xff, 0xff, 0xff,
  337.     0xff, 0xff, 0xff, 0xff,
  338.     0xff, 0xff, 0xff, 0xff,
  339.     0xff, 0xff, 0xff, 0xff,
  340.     0xff, 0xff, 0xff, 0xff,
  341.     0xff, 0xff, 0xff, 0xff,
  342.     0xff, 0xff, 0xff, 0xff,
  343.     0xff, 0xff, 0xff, 0xff,
  344.     0xff, 0xff, 0xff, 0xff,
  345.     0xff, 0xff, 0xff, 0xff,
  346.     0xff, 0xff, 0xff, 0xff,
  347.     0xff, 0xff, 0xff, 0xff,
  348.     0xff, 0xff, 0xff, 0xff,
  349.     0xff, 0xff, 0xff, 0xff,
  350.     0xff, 0xff, 0xff, 0xff,
  351.     0xff, 0xff, 0xff, 0xff,
  352.     0xff, 0xff, 0xff, 0xff,
  353.     0xff, 0xff, 0xff, 0xff
  354. };
  355. // IUPACna to NCBI2na_expand
  356. const Uint1 CIupacnaTo2naExpand::scm_Table[256] = {
  357.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  358.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  359.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  360.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  361.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  362.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  363.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  364.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  365.     0xff, 0x0, 0x1, 0x1, 0x2, 0xff, 0xff, 0x2,
  366.     0x0, 0xff, 0xff, 0x2, 0xff, 0x1, 0x0, 0xff,
  367.     0xff, 0xff, 0x2, 0x1, 0x3, 0x3, 0x0, 0x3,
  368.     0xff, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  369.     0xff, 0x0, 0x1, 0x1, 0x2, 0xff, 0xff, 0x2,
  370.     0x0, 0xff, 0xff, 0x2, 0xff, 0x1, 0x0, 0xff,
  371.     0xff, 0xff, 0x2, 0x1, 0x3, 0x3, 0x0, 0x3,
  372.     0xff, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  373.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  374.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  375.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  376.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  377.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  378.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  379.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  380.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  381.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  382.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  383.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  384.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  385.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  386.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  387.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  388.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
  389. };
  390. // IUPACna to NCBI4na
  391. const Uint1 CIupacnaTo4na::scm_Table[512] = {
  392.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  393.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  394.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  395.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  396.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  397.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  398.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  399.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  400.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  401.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  402.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  403.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  404.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  405.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  406.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  407.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  408.     0xff,0xff,  0x10,0x1,  0xe0,0xe,  0x20,0x2,
  409.     0xd0,0xd,  0xff,0xff,  0xff,0xff,  0x40,0x4,
  410.     0xb0,0xb,  0xff,0xff,  0xff,0xff,  0xc0,0xc,
  411.     0xff,0xff,  0x30,0x3,  0xf0,0xf,  0xff,0xff,
  412.     0xff,0xff,  0xff,0xff,  0x50,0x5,  0x60,0x6,
  413.     0x80,0x8,  0x80,0x8,  0x70,0x7,  0x90,0x9,
  414.     0xff,0xff,  0xa0,0xa,  0xff,0xff,  0xff,0xff,
  415.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  416.     0xff,0xff,  0x10,0x1,  0xe0,0xe,  0x20,0x2,
  417.     0xd0,0xd,  0xff,0xff,  0xff,0xff,  0x40,0x4,
  418.     0xb0,0xb,  0xff,0xff,  0xff,0xff,  0xc0,0xc,
  419.     0xff,0xff,  0x30,0x3,  0xf0,0xf,  0xff,0xff,
  420.     0xff,0xff,  0xff,0xff,  0x50,0x5,  0x60,0x6,
  421.     0x80,0x8,  0x80,0x8,  0x70,0x7,  0x90,0x9,
  422.     0xff,0xff,  0xa0,0xa,  0xff,0xff,  0xff,0xff,
  423.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  424.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  425.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  426.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  427.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  428.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  429.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  430.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  431.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  432.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  433.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  434.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  435.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  436.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  437.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  438.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  439.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  440.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  441.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  442.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  443.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  444.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  445.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  446.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  447.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  448.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  449.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  450.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  451.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  452.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  453.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  454.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff,
  455.     0xff,0xff,  0xff,0xff,  0xff,0xff,  0xff,0xff
  456. };
  457. // IUPACna to NCBI8na
  458. const Uint1 CIupacnaTo8na::scm_Table[256] = {
  459.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  460.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  461.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  462.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  463.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  464.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  465.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  466.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  467.     0xff, 0x1, 0xe, 0x2, 0xd, 0xff, 0xff, 0x4,
  468.     0xb, 0xff, 0xff, 0xc, 0xff, 0x3, 0xf, 0xff,
  469.     0xff, 0xff, 0x5, 0x6, 0x8, 0x8, 0x7, 0x9,
  470.     0xff, 0xa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  471.     0xff, 0x1, 0xe, 0x2, 0xd, 0xff, 0xff, 0x4,
  472.     0xb, 0xff, 0xff, 0xc, 0xff, 0x3, 0xf, 0xff,
  473.     0xff, 0xff, 0x5, 0x6, 0x8, 0x8, 0x7, 0x9,
  474.     0xff, 0xa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  475.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  476.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  477.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  478.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  479.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  480.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  481.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  482.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  483.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  484.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  485.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  486.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  487.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  488.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  489.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  490.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
  491. };
  492. // NCBI2na to IUPACna
  493. const Uint1 C2naToIupacna::scm_Table[1024] = {
  494.     0x41, 0x41, 0x41, 0x41,    0x41, 0x41, 0x41, 0x43,
  495.     0x41, 0x41, 0x41, 0x47,    0x41, 0x41, 0x41, 0x54,
  496.     0x41, 0x41, 0x43, 0x41,    0x41, 0x41, 0x43, 0x43,
  497.     0x41, 0x41, 0x43, 0x47,    0x41, 0x41, 0x43, 0x54,
  498.     0x41, 0x41, 0x47, 0x41,    0x41, 0x41, 0x47, 0x43,
  499.     0x41, 0x41, 0x47, 0x47,    0x41, 0x41, 0x47, 0x54,
  500.     0x41, 0x41, 0x54, 0x41,    0x41, 0x41, 0x54, 0x43,
  501.     0x41, 0x41, 0x54, 0x47,    0x41, 0x41, 0x54, 0x54,
  502.     0x41, 0x43, 0x41, 0x41,    0x41, 0x43, 0x41, 0x43,
  503.     0x41, 0x43, 0x41, 0x47,    0x41, 0x43, 0x41, 0x54,
  504.     0x41, 0x43, 0x43, 0x41,    0x41, 0x43, 0x43, 0x43,
  505.     0x41, 0x43, 0x43, 0x47,    0x41, 0x43, 0x43, 0x54,
  506.     0x41, 0x43, 0x47, 0x41,    0x41, 0x43, 0x47, 0x43,
  507.     0x41, 0x43, 0x47, 0x47,    0x41, 0x43, 0x47, 0x54,
  508.     0x41, 0x43, 0x54, 0x41,    0x41, 0x43, 0x54, 0x43,
  509.     0x41, 0x43, 0x54, 0x47,    0x41, 0x43, 0x54, 0x54,
  510.     0x41, 0x47, 0x41, 0x41,    0x41, 0x47, 0x41, 0x43,
  511.     0x41, 0x47, 0x41, 0x47,    0x41, 0x47, 0x41, 0x54,
  512.     0x41, 0x47, 0x43, 0x41,    0x41, 0x47, 0x43, 0x43,
  513.     0x41, 0x47, 0x43, 0x47,    0x41, 0x47, 0x43, 0x54,
  514.     0x41, 0x47, 0x47, 0x41,    0x41, 0x47, 0x47, 0x43,
  515.     0x41, 0x47, 0x47, 0x47,    0x41, 0x47, 0x47, 0x54,
  516.     0x41, 0x47, 0x54, 0x41,    0x41, 0x47, 0x54, 0x43,
  517.     0x41, 0x47, 0x54, 0x47,    0x41, 0x47, 0x54, 0x54,
  518.     0x41, 0x54, 0x41, 0x41,    0x41, 0x54, 0x41, 0x43,
  519.     0x41, 0x54, 0x41, 0x47,    0x41, 0x54, 0x41, 0x54,
  520.     0x41, 0x54, 0x43, 0x41,    0x41, 0x54, 0x43, 0x43,
  521.     0x41, 0x54, 0x43, 0x47,    0x41, 0x54, 0x43, 0x54,
  522.     0x41, 0x54, 0x47, 0x41,    0x41, 0x54, 0x47, 0x43,
  523.     0x41, 0x54, 0x47, 0x47,    0x41, 0x54, 0x47, 0x54,
  524.     0x41, 0x54, 0x54, 0x41,    0x41, 0x54, 0x54, 0x43,
  525.     0x41, 0x54, 0x54, 0x47,    0x41, 0x54, 0x54, 0x54,
  526.     0x43, 0x41, 0x41, 0x41,    0x43, 0x41, 0x41, 0x43,
  527.     0x43, 0x41, 0x41, 0x47,    0x43, 0x41, 0x41, 0x54,
  528.     0x43, 0x41, 0x43, 0x41,    0x43, 0x41, 0x43, 0x43,
  529.     0x43, 0x41, 0x43, 0x47,    0x43, 0x41, 0x43, 0x54,
  530.     0x43, 0x41, 0x47, 0x41,    0x43, 0x41, 0x47, 0x43,
  531.     0x43, 0x41, 0x47, 0x47,    0x43, 0x41, 0x47, 0x54,
  532.     0x43, 0x41, 0x54, 0x41,    0x43, 0x41, 0x54, 0x43,
  533.     0x43, 0x41, 0x54, 0x47,    0x43, 0x41, 0x54, 0x54,
  534.     0x43, 0x43, 0x41, 0x41,    0x43, 0x43, 0x41, 0x43,
  535.     0x43, 0x43, 0x41, 0x47,    0x43, 0x43, 0x41, 0x54,
  536.     0x43, 0x43, 0x43, 0x41,    0x43, 0x43, 0x43, 0x43,
  537.     0x43, 0x43, 0x43, 0x47,    0x43, 0x43, 0x43, 0x54,
  538.     0x43, 0x43, 0x47, 0x41,    0x43, 0x43, 0x47, 0x43,
  539.     0x43, 0x43, 0x47, 0x47,    0x43, 0x43, 0x47, 0x54,
  540.     0x43, 0x43, 0x54, 0x41,    0x43, 0x43, 0x54, 0x43,
  541.     0x43, 0x43, 0x54, 0x47,    0x43, 0x43, 0x54, 0x54,
  542.     0x43, 0x47, 0x41, 0x41,    0x43, 0x47, 0x41, 0x43,
  543.     0x43, 0x47, 0x41, 0x47,    0x43, 0x47, 0x41, 0x54,
  544.     0x43, 0x47, 0x43, 0x41,    0x43, 0x47, 0x43, 0x43,
  545.     0x43, 0x47, 0x43, 0x47,    0x43, 0x47, 0x43, 0x54,
  546.     0x43, 0x47, 0x47, 0x41,    0x43, 0x47, 0x47, 0x43,
  547.     0x43, 0x47, 0x47, 0x47,    0x43, 0x47, 0x47, 0x54,
  548.     0x43, 0x47, 0x54, 0x41,    0x43, 0x47, 0x54, 0x43,
  549.     0x43, 0x47, 0x54, 0x47,    0x43, 0x47, 0x54, 0x54,
  550.     0x43, 0x54, 0x41, 0x41,    0x43, 0x54, 0x41, 0x43,
  551.     0x43, 0x54, 0x41, 0x47,    0x43, 0x54, 0x41, 0x54,
  552.     0x43, 0x54, 0x43, 0x41,    0x43, 0x54, 0x43, 0x43,
  553.     0x43, 0x54, 0x43, 0x47,    0x43, 0x54, 0x43, 0x54,
  554.     0x43, 0x54, 0x47, 0x41,    0x43, 0x54, 0x47, 0x43,
  555.     0x43, 0x54, 0x47, 0x47,    0x43, 0x54, 0x47, 0x54,
  556.     0x43, 0x54, 0x54, 0x41,    0x43, 0x54, 0x54, 0x43,
  557.     0x43, 0x54, 0x54, 0x47,    0x43, 0x54, 0x54, 0x54,
  558.     0x47, 0x41, 0x41, 0x41,    0x47, 0x41, 0x41, 0x43,
  559.     0x47, 0x41, 0x41, 0x47,    0x47, 0x41, 0x41, 0x54,
  560.     0x47, 0x41, 0x43, 0x41,    0x47, 0x41, 0x43, 0x43,
  561.     0x47, 0x41, 0x43, 0x47,    0x47, 0x41, 0x43, 0x54,
  562.     0x47, 0x41, 0x47, 0x41,    0x47, 0x41, 0x47, 0x43,
  563.     0x47, 0x41, 0x47, 0x47,    0x47, 0x41, 0x47, 0x54,
  564.     0x47, 0x41, 0x54, 0x41,    0x47, 0x41, 0x54, 0x43,
  565.     0x47, 0x41, 0x54, 0x47,    0x47, 0x41, 0x54, 0x54,
  566.     0x47, 0x43, 0x41, 0x41,    0x47, 0x43, 0x41, 0x43,
  567.     0x47, 0x43, 0x41, 0x47,    0x47, 0x43, 0x41, 0x54,
  568.     0x47, 0x43, 0x43, 0x41,    0x47, 0x43, 0x43, 0x43,
  569.     0x47, 0x43, 0x43, 0x47,    0x47, 0x43, 0x43, 0x54,
  570.     0x47, 0x43, 0x47, 0x41,    0x47, 0x43, 0x47, 0x43,
  571.     0x47, 0x43, 0x47, 0x47,    0x47, 0x43, 0x47, 0x54,
  572.     0x47, 0x43, 0x54, 0x41,    0x47, 0x43, 0x54, 0x43,
  573.     0x47, 0x43, 0x54, 0x47,    0x47, 0x43, 0x54, 0x54,
  574.     0x47, 0x47, 0x41, 0x41,    0x47, 0x47, 0x41, 0x43,
  575.     0x47, 0x47, 0x41, 0x47,    0x47, 0x47, 0x41, 0x54,
  576.     0x47, 0x47, 0x43, 0x41,    0x47, 0x47, 0x43, 0x43,
  577.     0x47, 0x47, 0x43, 0x47,    0x47, 0x47, 0x43, 0x54,
  578.     0x47, 0x47, 0x47, 0x41,    0x47, 0x47, 0x47, 0x43,
  579.     0x47, 0x47, 0x47, 0x47,    0x47, 0x47, 0x47, 0x54,
  580.     0x47, 0x47, 0x54, 0x41,    0x47, 0x47, 0x54, 0x43,
  581.     0x47, 0x47, 0x54, 0x47,    0x47, 0x47, 0x54, 0x54,
  582.     0x47, 0x54, 0x41, 0x41,    0x47, 0x54, 0x41, 0x43,
  583.     0x47, 0x54, 0x41, 0x47,    0x47, 0x54, 0x41, 0x54,
  584.     0x47, 0x54, 0x43, 0x41,    0x47, 0x54, 0x43, 0x43,
  585.     0x47, 0x54, 0x43, 0x47,    0x47, 0x54, 0x43, 0x54,
  586.     0x47, 0x54, 0x47, 0x41,    0x47, 0x54, 0x47, 0x43,
  587.     0x47, 0x54, 0x47, 0x47,    0x47, 0x54, 0x47, 0x54,
  588.     0x47, 0x54, 0x54, 0x41,    0x47, 0x54, 0x54, 0x43,
  589.     0x47, 0x54, 0x54, 0x47,    0x47, 0x54, 0x54, 0x54,
  590.     0x54, 0x41, 0x41, 0x41,    0x54, 0x41, 0x41, 0x43,
  591.     0x54, 0x41, 0x41, 0x47,    0x54, 0x41, 0x41, 0x54,
  592.     0x54, 0x41, 0x43, 0x41,    0x54, 0x41, 0x43, 0x43,
  593.     0x54, 0x41, 0x43, 0x47,    0x54, 0x41, 0x43, 0x54,
  594.     0x54, 0x41, 0x47, 0x41,    0x54, 0x41, 0x47, 0x43,
  595.     0x54, 0x41, 0x47, 0x47,    0x54, 0x41, 0x47, 0x54,
  596.     0x54, 0x41, 0x54, 0x41,    0x54, 0x41, 0x54, 0x43,
  597.     0x54, 0x41, 0x54, 0x47,    0x54, 0x41, 0x54, 0x54,
  598.     0x54, 0x43, 0x41, 0x41,    0x54, 0x43, 0x41, 0x43,
  599.     0x54, 0x43, 0x41, 0x47,    0x54, 0x43, 0x41, 0x54,
  600.     0x54, 0x43, 0x43, 0x41,    0x54, 0x43, 0x43, 0x43,
  601.     0x54, 0x43, 0x43, 0x47,    0x54, 0x43, 0x43, 0x54,
  602.     0x54, 0x43, 0x47, 0x41,    0x54, 0x43, 0x47, 0x43,
  603.     0x54, 0x43, 0x47, 0x47,    0x54, 0x43, 0x47, 0x54,
  604.     0x54, 0x43, 0x54, 0x41,    0x54, 0x43, 0x54, 0x43,
  605.     0x54, 0x43, 0x54, 0x47,    0x54, 0x43, 0x54, 0x54,
  606.     0x54, 0x47, 0x41, 0x41,    0x54, 0x47, 0x41, 0x43,
  607.     0x54, 0x47, 0x41, 0x47,    0x54, 0x47, 0x41, 0x54,
  608.     0x54, 0x47, 0x43, 0x41,    0x54, 0x47, 0x43, 0x43,
  609.     0x54, 0x47, 0x43, 0x47,    0x54, 0x47, 0x43, 0x54,
  610.     0x54, 0x47, 0x47, 0x41,    0x54, 0x47, 0x47, 0x43,
  611.     0x54, 0x47, 0x47, 0x47,    0x54, 0x47, 0x47, 0x54,
  612.     0x54, 0x47, 0x54, 0x41,    0x54, 0x47, 0x54, 0x43,
  613.     0x54, 0x47, 0x54, 0x47,    0x54, 0x47, 0x54, 0x54,
  614.     0x54, 0x54, 0x41, 0x41,    0x54, 0x54, 0x41, 0x43,
  615.     0x54, 0x54, 0x41, 0x47,    0x54, 0x54, 0x41, 0x54,
  616.     0x54, 0x54, 0x43, 0x41,    0x54, 0x54, 0x43, 0x43,
  617.     0x54, 0x54, 0x43, 0x47,    0x54, 0x54, 0x43, 0x54,
  618.     0x54, 0x54, 0x47, 0x41,    0x54, 0x54, 0x47, 0x43,
  619.     0x54, 0x54, 0x47, 0x47,    0x54, 0x54, 0x47, 0x54,
  620.     0x54, 0x54, 0x54, 0x41,    0x54, 0x54, 0x54, 0x43,
  621.     0x54, 0x54, 0x54, 0x47,    0x54, 0x54, 0x54, 0x54
  622. };
  623. // NCBI2na to NCBI2na_expand
  624. //
  625. //for ( bases[0] = 0; bases[0] < 4; ++bases[0] ) {
  626. //        for ( bases[1] = 0; bases[1] < 4; ++bases[1] ) {
  627. //            for ( bases[2] = 0; bases[2] < 4; ++bases[2] ) {
  628. //                for ( bases[3] = 0; bases[3] < 4; ++bases[3] ) {
  629. //                    Uint1 index =  (bases[0] << 6) | (bases[1] << 4) |
  630. //                                   (bases[2] << 2) | bases[3];
  631. //                    for ( int i = 0; i < 4; ++i ) {
  632. //                        s_Table[index*4 + i] = bases[i];
  633. //                    }
  634. //                }
  635. //            }
  636. //        }
  637. //    }
  638. //
  639. const Uint1 C2naTo2naExpand::scm_Table[1024] = {
  640.     0x0, 0x0, 0x0, 0x0,    0x0, 0x0, 0x0, 0x1,
  641.     0x0, 0x0, 0x0, 0x2,    0x0, 0x0, 0x0, 0x3,
  642.     0x0, 0x0, 0x1, 0x0,    0x0, 0x0, 0x1, 0x1,
  643.     0x0, 0x0, 0x1, 0x2,    0x0, 0x0, 0x1, 0x3,
  644.     0x0, 0x0, 0x2, 0x0,    0x0, 0x0, 0x2, 0x1,
  645.     0x0, 0x0, 0x2, 0x2,    0x0, 0x0, 0x2, 0x3,
  646.     0x0, 0x0, 0x3, 0x0,    0x0, 0x0, 0x3, 0x1,
  647.     0x0, 0x0, 0x3, 0x2,    0x0, 0x0, 0x3, 0x3,
  648.     0x0, 0x1, 0x0, 0x0,    0x0, 0x1, 0x0, 0x1,
  649.     0x0, 0x1, 0x0, 0x2,    0x0, 0x1, 0x0, 0x3,
  650.     0x0, 0x1, 0x1, 0x0,    0x0, 0x1, 0x1, 0x1,
  651.     0x0, 0x1, 0x1, 0x2,    0x0, 0x1, 0x1, 0x3,
  652.     0x0, 0x1, 0x2, 0x0,    0x0, 0x1, 0x2, 0x1,
  653.     0x0, 0x1, 0x2, 0x2,    0x0, 0x1, 0x2, 0x3,
  654.     0x0, 0x1, 0x3, 0x0,    0x0, 0x1, 0x3, 0x1,
  655.     0x0, 0x1, 0x3, 0x2,    0x0, 0x1, 0x3, 0x3,
  656.     0x0, 0x2, 0x0, 0x0,    0x0, 0x2, 0x0, 0x1,
  657.     0x0, 0x2, 0x0, 0x2,    0x0, 0x2, 0x0, 0x3,
  658.     0x0, 0x2, 0x1, 0x0,    0x0, 0x2, 0x1, 0x1,
  659.     0x0, 0x2, 0x1, 0x2,    0x0, 0x2, 0x1, 0x3,
  660.     0x0, 0x2, 0x2, 0x0,    0x0, 0x2, 0x2, 0x1,
  661.     0x0, 0x2, 0x2, 0x2,    0x0, 0x2, 0x2, 0x3,
  662.     0x0, 0x2, 0x3, 0x0,    0x0, 0x2, 0x3, 0x1,
  663.     0x0, 0x2, 0x3, 0x2,    0x0, 0x2, 0x3, 0x3,
  664.     0x0, 0x3, 0x0, 0x0,    0x0, 0x3, 0x0, 0x1,
  665.     0x0, 0x3, 0x0, 0x2,    0x0, 0x3, 0x0, 0x3,
  666.     0x0, 0x3, 0x1, 0x0,    0x0, 0x3, 0x1, 0x1,
  667.     0x0, 0x3, 0x1, 0x2,    0x0, 0x3, 0x1, 0x3,
  668.     0x0, 0x3, 0x2, 0x0,    0x0, 0x3, 0x2, 0x1,
  669.     0x0, 0x3, 0x2, 0x2,    0x0, 0x3, 0x2, 0x3,
  670.     0x0, 0x3, 0x3, 0x0,    0x0, 0x3, 0x3, 0x1,
  671.     0x0, 0x3, 0x3, 0x2,    0x0, 0x3, 0x3, 0x3,
  672.     0x1, 0x0, 0x0, 0x0,    0x1, 0x0, 0x0, 0x1,
  673.     0x1, 0x0, 0x0, 0x2,    0x1, 0x0, 0x0, 0x3,
  674.     0x1, 0x0, 0x1, 0x0,    0x1, 0x0, 0x1, 0x1,
  675.     0x1, 0x0, 0x1, 0x2,    0x1, 0x0, 0x1, 0x3,
  676.     0x1, 0x0, 0x2, 0x0,    0x1, 0x0, 0x2, 0x1,
  677.     0x1, 0x0, 0x2, 0x2,    0x1, 0x0, 0x2, 0x3,
  678.     0x1, 0x0, 0x3, 0x0,    0x1, 0x0, 0x3, 0x1,
  679.     0x1, 0x0, 0x3, 0x2,    0x1, 0x0, 0x3, 0x3,
  680.     0x1, 0x1, 0x0, 0x0,    0x1, 0x1, 0x0, 0x1,
  681.     0x1, 0x1, 0x0, 0x2,    0x1, 0x1, 0x0, 0x3,
  682.     0x1, 0x1, 0x1, 0x0,    0x1, 0x1, 0x1, 0x1,
  683.     0x1, 0x1, 0x1, 0x2,    0x1, 0x1, 0x1, 0x3,
  684.     0x1, 0x1, 0x2, 0x0,    0x1, 0x1, 0x2, 0x1,
  685.     0x1, 0x1, 0x2, 0x2,    0x1, 0x1, 0x2, 0x3,
  686.     0x1, 0x1, 0x3, 0x0,    0x1, 0x1, 0x3, 0x1,
  687.     0x1, 0x1, 0x3, 0x2,    0x1, 0x1, 0x3, 0x3,
  688.     0x1, 0x2, 0x0, 0x0,    0x1, 0x2, 0x0, 0x1,
  689.     0x1, 0x2, 0x0, 0x2,    0x1, 0x2, 0x0, 0x3,
  690.     0x1, 0x2, 0x1, 0x0,    0x1, 0x2, 0x1, 0x1,
  691.     0x1, 0x2, 0x1, 0x2,    0x1, 0x2, 0x1, 0x3,
  692.     0x1, 0x2, 0x2, 0x0,    0x1, 0x2, 0x2, 0x1,
  693.     0x1, 0x2, 0x2, 0x2,    0x1, 0x2, 0x2, 0x3,
  694.     0x1, 0x2, 0x3, 0x0,    0x1, 0x2, 0x3, 0x1,
  695.     0x1, 0x2, 0x3, 0x2,    0x1, 0x2, 0x3, 0x3,
  696.     0x1, 0x3, 0x0, 0x0,    0x1, 0x3, 0x0, 0x1,
  697.     0x1, 0x3, 0x0, 0x2,    0x1, 0x3, 0x0, 0x3,
  698.     0x1, 0x3, 0x1, 0x0,    0x1, 0x3, 0x1, 0x1,
  699.     0x1, 0x3, 0x1, 0x2,    0x1, 0x3, 0x1, 0x3,
  700.     0x1, 0x3, 0x2, 0x0,    0x1, 0x3, 0x2, 0x1,
  701.     0x1, 0x3, 0x2, 0x2,    0x1, 0x3, 0x2, 0x3,
  702.     0x1, 0x3, 0x3, 0x0,    0x1, 0x3, 0x3, 0x1,
  703.     0x1, 0x3, 0x3, 0x2,    0x1, 0x3, 0x3, 0x3,
  704.     0x2, 0x0, 0x0, 0x0,    0x2, 0x0, 0x0, 0x1,
  705.     0x2, 0x0, 0x0, 0x2,    0x2, 0x0, 0x0, 0x3,
  706.     0x2, 0x0, 0x1, 0x0,    0x2, 0x0, 0x1, 0x1,
  707.     0x2, 0x0, 0x1, 0x2,    0x2, 0x0, 0x1, 0x3,
  708.     0x2, 0x0, 0x2, 0x0,    0x2, 0x0, 0x2, 0x1,
  709.     0x2, 0x0, 0x2, 0x2,    0x2, 0x0, 0x2, 0x3,
  710.     0x2, 0x0, 0x3, 0x0,    0x2, 0x0, 0x3, 0x1,
  711.     0x2, 0x0, 0x3, 0x2,    0x2, 0x0, 0x3, 0x3,
  712.     0x2, 0x1, 0x0, 0x0,    0x2, 0x1, 0x0, 0x1,
  713.     0x2, 0x1, 0x0, 0x2,    0x2, 0x1, 0x0, 0x3,
  714.     0x2, 0x1, 0x1, 0x0,    0x2, 0x1, 0x1, 0x1,
  715.     0x2, 0x1, 0x1, 0x2,    0x2, 0x1, 0x1, 0x3,
  716.     0x2, 0x1, 0x2, 0x0,    0x2, 0x1, 0x2, 0x1,
  717.     0x2, 0x1, 0x2, 0x2,    0x2, 0x1, 0x2, 0x3,
  718.     0x2, 0x1, 0x3, 0x0,    0x2, 0x1, 0x3, 0x1,
  719.     0x2, 0x1, 0x3, 0x2,    0x2, 0x1, 0x3, 0x3,
  720.     0x2, 0x2, 0x0, 0x0,    0x2, 0x2, 0x0, 0x1,
  721.     0x2, 0x2, 0x0, 0x2,    0x2, 0x2, 0x0, 0x3,
  722.     0x2, 0x2, 0x1, 0x0,    0x2, 0x2, 0x1, 0x1,
  723.     0x2, 0x2, 0x1, 0x2,    0x2, 0x2, 0x1, 0x3,
  724.     0x2, 0x2, 0x2, 0x0,    0x2, 0x2, 0x2, 0x1,
  725.     0x2, 0x2, 0x2, 0x2,    0x2, 0x2, 0x2, 0x3,
  726.     0x2, 0x2, 0x3, 0x0,    0x2, 0x2, 0x3, 0x1,
  727.     0x2, 0x2, 0x3, 0x2,    0x2, 0x2, 0x3, 0x3,
  728.     0x2, 0x3, 0x0, 0x0,    0x2, 0x3, 0x0, 0x1,
  729.     0x2, 0x3, 0x0, 0x2,    0x2, 0x3, 0x0, 0x3,
  730.     0x2, 0x3, 0x1, 0x0,    0x2, 0x3, 0x1, 0x1,
  731.     0x2, 0x3, 0x1, 0x2,    0x2, 0x3, 0x1, 0x3,
  732.     0x2, 0x3, 0x2, 0x0,    0x2, 0x3, 0x2, 0x1,
  733.     0x2, 0x3, 0x2, 0x2,    0x2, 0x3, 0x2, 0x3,
  734.     0x2, 0x3, 0x3, 0x0,    0x2, 0x3, 0x3, 0x1,
  735.     0x2, 0x3, 0x3, 0x2,    0x2, 0x3, 0x3, 0x3,
  736.     0x3, 0x0, 0x0, 0x0,    0x3, 0x0, 0x0, 0x1,
  737.     0x3, 0x0, 0x0, 0x2,    0x3, 0x0, 0x0, 0x3,
  738.     0x3, 0x0, 0x1, 0x0,    0x3, 0x0, 0x1, 0x1,
  739.     0x3, 0x0, 0x1, 0x2,    0x3, 0x0, 0x1, 0x3,
  740.     0x3, 0x0, 0x2, 0x0,    0x3, 0x0, 0x2, 0x1,
  741.     0x3, 0x0, 0x2, 0x2,    0x3, 0x0, 0x2, 0x3,
  742.     0x3, 0x0, 0x3, 0x0,    0x3, 0x0, 0x3, 0x1,
  743.     0x3, 0x0, 0x3, 0x2,    0x3, 0x0, 0x3, 0x3,
  744.     0x3, 0x1, 0x0, 0x0,    0x3, 0x1, 0x0, 0x1,
  745.     0x3, 0x1, 0x0, 0x2,    0x3, 0x1, 0x0, 0x3,
  746.     0x3, 0x1, 0x1, 0x0,    0x3, 0x1, 0x1, 0x1,
  747.     0x3, 0x1, 0x1, 0x2,    0x3, 0x1, 0x1, 0x3,
  748.     0x3, 0x1, 0x2, 0x0,    0x3, 0x1, 0x2, 0x1,
  749.     0x3, 0x1, 0x2, 0x2,    0x3, 0x1, 0x2, 0x3,
  750.     0x3, 0x1, 0x3, 0x0,    0x3, 0x1, 0x3, 0x1,
  751.     0x3, 0x1, 0x3, 0x2,    0x3, 0x1, 0x3, 0x3,
  752.     0x3, 0x2, 0x0, 0x0,    0x3, 0x2, 0x0, 0x1,
  753.     0x3, 0x2, 0x0, 0x2,    0x3, 0x2, 0x0, 0x3,
  754.     0x3, 0x2, 0x1, 0x0,    0x3, 0x2, 0x1, 0x1,
  755.     0x3, 0x2, 0x1, 0x2,    0x3, 0x2, 0x1, 0x3,
  756.     0x3, 0x2, 0x2, 0x0,    0x3, 0x2, 0x2, 0x1,
  757.     0x3, 0x2, 0x2, 0x2,    0x3, 0x2, 0x2, 0x3,
  758.     0x3, 0x2, 0x3, 0x0,    0x3, 0x2, 0x3, 0x1,
  759.     0x3, 0x2, 0x3, 0x2,    0x3, 0x2, 0x3, 0x3,
  760.     0x3, 0x3, 0x0, 0x0,    0x3, 0x3, 0x0, 0x1,
  761.     0x3, 0x3, 0x0, 0x2,    0x3, 0x3, 0x0, 0x3,
  762.     0x3, 0x3, 0x1, 0x0,    0x3, 0x3, 0x1, 0x1,
  763.     0x3, 0x3, 0x1, 0x2,    0x3, 0x3, 0x1, 0x3,
  764.     0x3, 0x3, 0x2, 0x0,    0x3, 0x3, 0x2, 0x1,
  765.     0x3, 0x3, 0x2, 0x2,    0x3, 0x3, 0x2, 0x3,
  766.     0x3, 0x3, 0x3, 0x0,    0x3, 0x3, 0x3, 0x1,
  767.     0x3, 0x3, 0x3, 0x2,    0x3, 0x3, 0x3, 0x3
  768. };
  769. // NCBI2na to NCBI4na
  770. /*
  771.     static Uint1 convert[4] = { 0x1, 0x2, 0x4, 0x8 };
  772.     for ( base[0] = 0; base[0] < 4; ++base[0] ) {
  773.         for ( base[1] = 0; base[1] < 4; ++base[1] ) {
  774.             for ( base[2] = 0; base[2] < 4; ++base[2] ) {
  775.                 for ( base[3] = 0; base[3] < 4; ++base[3] ) {
  776.                     Uint1 index =  (base[0] << 6) | (base[1] << 4) |
  777.                                    (base[2] << 2) | base[3];
  778.                     scm_Table0[index * 2] = 
  779.                         (convert[base[0]] << 4) | convert[base[1]];
  780.                     scm_Table0[index * 2 + 1] = 
  781.                         (convert[base[2]] << 4) | convert[base[3]];
  782.                 }
  783.             }
  784.         }
  785.     }
  786. */
  787. const Uint1 C2naTo4na::scm_Table0[512] = {
  788.     0x11, 0x11,    0x11, 0x12,    0x11, 0x14,    0x11, 0x18,
  789.     0x11, 0x21,    0x11, 0x22,    0x11, 0x24,    0x11, 0x28,
  790.     0x11, 0x41,    0x11, 0x42,    0x11, 0x44,    0x11, 0x48,
  791.     0x11, 0x81,    0x11, 0x82,    0x11, 0x84,    0x11, 0x88,
  792.     0x12, 0x11,    0x12, 0x12,    0x12, 0x14,    0x12, 0x18,
  793.     0x12, 0x21,    0x12, 0x22,    0x12, 0x24,    0x12, 0x28,
  794.     0x12, 0x41,    0x12, 0x42,    0x12, 0x44,    0x12, 0x48,
  795.     0x12, 0x81,    0x12, 0x82,    0x12, 0x84,    0x12, 0x88,
  796.     0x14, 0x11,    0x14, 0x12,    0x14, 0x14,    0x14, 0x18,
  797.     0x14, 0x21,    0x14, 0x22,    0x14, 0x24,    0x14, 0x28,
  798.     0x14, 0x41,    0x14, 0x42,    0x14, 0x44,    0x14, 0x48,
  799.     0x14, 0x81,    0x14, 0x82,    0x14, 0x84,    0x14, 0x88,
  800.     0x18, 0x11,    0x18, 0x12,    0x18, 0x14,    0x18, 0x18,
  801.     0x18, 0x21,    0x18, 0x22,    0x18, 0x24,    0x18, 0x28,
  802.     0x18, 0x41,    0x18, 0x42,    0x18, 0x44,    0x18, 0x48,
  803.     0x18, 0x81,    0x18, 0x82,    0x18, 0x84,    0x18, 0x88,
  804.     0x21, 0x11,    0x21, 0x12,    0x21, 0x14,    0x21, 0x18,
  805.     0x21, 0x21,    0x21, 0x22,    0x21, 0x24,    0x21, 0x28,
  806.     0x21, 0x41,    0x21, 0x42,    0x21, 0x44,    0x21, 0x48,
  807.     0x21, 0x81,    0x21, 0x82,    0x21, 0x84,    0x21, 0x88,
  808.     0x22, 0x11,    0x22, 0x12,    0x22, 0x14,    0x22, 0x18,
  809.     0x22, 0x21,    0x22, 0x22,    0x22, 0x24,    0x22, 0x28,
  810.     0x22, 0x41,    0x22, 0x42,    0x22, 0x44,    0x22, 0x48,
  811.     0x22, 0x81,    0x22, 0x82,    0x22, 0x84,    0x22, 0x88,
  812.     0x24, 0x11,    0x24, 0x12,    0x24, 0x14,    0x24, 0x18,
  813.     0x24, 0x21,    0x24, 0x22,    0x24, 0x24,    0x24, 0x28,
  814.     0x24, 0x41,    0x24, 0x42,    0x24, 0x44,    0x24, 0x48,
  815.     0x24, 0x81,    0x24, 0x82,    0x24, 0x84,    0x24, 0x88,
  816.     0x28, 0x11,    0x28, 0x12,    0x28, 0x14,    0x28, 0x18,
  817.     0x28, 0x21,    0x28, 0x22,    0x28, 0x24,    0x28, 0x28,
  818.     0x28, 0x41,    0x28, 0x42,    0x28, 0x44,    0x28, 0x48,
  819.     0x28, 0x81,    0x28, 0x82,    0x28, 0x84,    0x28, 0x88,
  820.     0x41, 0x11,    0x41, 0x12,    0x41, 0x14,    0x41, 0x18,
  821.     0x41, 0x21,    0x41, 0x22,    0x41, 0x24,    0x41, 0x28,
  822.     0x41, 0x41,    0x41, 0x42,    0x41, 0x44,    0x41, 0x48,
  823.     0x41, 0x81,    0x41, 0x82,    0x41, 0x84,    0x41, 0x88,
  824.     0x42, 0x11,    0x42, 0x12,    0x42, 0x14,    0x42, 0x18,
  825.     0x42, 0x21,    0x42, 0x22,    0x42, 0x24,    0x42, 0x28,
  826.     0x42, 0x41,    0x42, 0x42,    0x42, 0x44,    0x42, 0x48,
  827.     0x42, 0x81,    0x42, 0x82,    0x42, 0x84,    0x42, 0x88,
  828.     0x44, 0x11,    0x44, 0x12,    0x44, 0x14,    0x44, 0x18,
  829.     0x44, 0x21,    0x44, 0x22,    0x44, 0x24,    0x44, 0x28,
  830.     0x44, 0x41,    0x44, 0x42,    0x44, 0x44,    0x44, 0x48,
  831.     0x44, 0x81,    0x44, 0x82,    0x44, 0x84,    0x44, 0x88,
  832.     0x48, 0x11,    0x48, 0x12,    0x48, 0x14,    0x48, 0x18,
  833.     0x48, 0x21,    0x48, 0x22,    0x48, 0x24,    0x48, 0x28,
  834.     0x48, 0x41,    0x48, 0x42,    0x48, 0x44,    0x48, 0x48,
  835.     0x48, 0x81,    0x48, 0x82,    0x48, 0x84,    0x48, 0x88,
  836.     0x81, 0x11,    0x81, 0x12,    0x81, 0x14,    0x81, 0x18,
  837.     0x81, 0x21,    0x81, 0x22,    0x81, 0x24,    0x81, 0x28,
  838.     0x81, 0x41,    0x81, 0x42,    0x81, 0x44,    0x81, 0x48,
  839.     0x81, 0x81,    0x81, 0x82,    0x81, 0x84,    0x81, 0x88,
  840.     0x82, 0x11,    0x82, 0x12,    0x82, 0x14,    0x82, 0x18,
  841.     0x82, 0x21,    0x82, 0x22,    0x82, 0x24,    0x82, 0x28,
  842.     0x82, 0x41,    0x82, 0x42,    0x82, 0x44,    0x82, 0x48,
  843.     0x82, 0x81,    0x82, 0x82,    0x82, 0x84,    0x82, 0x88,
  844.     0x84, 0x11,    0x84, 0x12,    0x84, 0x14,    0x84, 0x18,
  845.     0x84, 0x21,    0x84, 0x22,    0x84, 0x24,    0x84, 0x28,
  846.     0x84, 0x41,    0x84, 0x42,    0x84, 0x44,    0x84, 0x48,
  847.     0x84, 0x81,    0x84, 0x82,    0x84, 0x84,    0x84, 0x88,
  848.     0x88, 0x11,    0x88, 0x12,    0x88, 0x14,    0x88, 0x18,
  849.     0x88, 0x21,    0x88, 0x22,    0x88, 0x24,    0x88, 0x28,
  850.     0x88, 0x41,    0x88, 0x42,    0x88, 0x44,    0x88, 0x48,
  851.     0x88, 0x81,    0x88, 0x82,    0x88, 0x84,    0x88, 0x88
  852. };
  853. /*
  854.     static Uint1 convert[4] = { 0x1, 0x2, 0x4, 0x8 };
  855.     for ( base[0] = 0; base[0] < 4; ++base[0] ) {
  856.         for ( base[1] = 0; base[1] < 4; ++base[1] ) {
  857.             for ( base[2] = 0; base[2] < 4; ++base[2] ) {
  858.                 for ( base[3] = 0; base[3] < 4; ++base[3] ) {
  859.                     Uint1 index =  (base[0] << 6) | (base[1] << 4) |
  860.                                    (base[2] << 2) | base[3];
  861.                     sm_TableOffset1[index * 3] = 
  862.                         0x0F & convert[base[0]];
  863.                     sm_TableOffset1[index * 3 + 1] =
  864.                         (convert[base[1]] << 4) | convert[base[2]]; 
  865.                     sm_TableOffset1[index * 3 + 2] = 
  866.                         (convert[base[3]] << 4) & 0xF0;
  867.                 }
  868.             }
  869.         }
  870.     }
  871. */
  872. const Uint1 C2naTo4na::scm_Table1[768] = {
  873.     0x1, 0x11, 0x10,  0x1, 0x11, 0x20,  0x1, 0x11, 0x40,  0x1, 0x11, 0x80,
  874.     0x1, 0x12, 0x10,  0x1, 0x12, 0x20,  0x1, 0x12, 0x40,  0x1, 0x12, 0x80,
  875.     0x1, 0x14, 0x10,  0x1, 0x14, 0x20,  0x1, 0x14, 0x40,  0x1, 0x14, 0x80,
  876.     0x1, 0x18, 0x10,  0x1, 0x18, 0x20,  0x1, 0x18, 0x40,  0x1, 0x18, 0x80,
  877.     0x1, 0x21, 0x10,  0x1, 0x21, 0x20,  0x1, 0x21, 0x40,  0x1, 0x21, 0x80,
  878.     0x1, 0x22, 0x10,  0x1, 0x22, 0x20,  0x1, 0x22, 0x40,  0x1, 0x22, 0x80,
  879.     0x1, 0x24, 0x10,  0x1, 0x24, 0x20,  0x1, 0x24, 0x40,  0x1, 0x24, 0x80,
  880.     0x1, 0x28, 0x10,  0x1, 0x28, 0x20,  0x1, 0x28, 0x40,  0x1, 0x28, 0x80,
  881.     0x1, 0x41, 0x10,  0x1, 0x41, 0x20,  0x1, 0x41, 0x40,  0x1, 0x41, 0x80,
  882.     0x1, 0x42, 0x10,  0x1, 0x42, 0x20,  0x1, 0x42, 0x40,  0x1, 0x42, 0x80,
  883.     0x1, 0x44, 0x10,  0x1, 0x44, 0x20,  0x1, 0x44, 0x40,  0x1, 0x44, 0x80,
  884.     0x1, 0x48, 0x10,  0x1, 0x48, 0x20,  0x1, 0x48, 0x40,  0x1, 0x48, 0x80,
  885.     0x1, 0x81, 0x10,  0x1, 0x81, 0x20,  0x1, 0x81, 0x40,  0x1, 0x81, 0x80,
  886.     0x1, 0x82, 0x10,  0x1, 0x82, 0x20,  0x1, 0x82, 0x40,  0x1, 0x82, 0x80,
  887.     0x1, 0x84, 0x10,  0x1, 0x84, 0x20,  0x1, 0x84, 0x40,  0x1, 0x84, 0x80,
  888.     0x1, 0x88, 0x10,  0x1, 0x88, 0x20,  0x1, 0x88, 0x40,  0x1, 0x88, 0x80,
  889.     0x2, 0x11, 0x10,  0x2, 0x11, 0x20,  0x2, 0x11, 0x40,  0x2, 0x11, 0x80,
  890.     0x2, 0x12, 0x10,  0x2, 0x12, 0x20,  0x2, 0x12, 0x40,  0x2, 0x12, 0x80,
  891.     0x2, 0x14, 0x10,  0x2, 0x14, 0x20,  0x2, 0x14, 0x40,  0x2, 0x14, 0x80,
  892.     0x2, 0x18, 0x10,  0x2, 0x18, 0x20,  0x2, 0x18, 0x40,  0x2, 0x18, 0x80,
  893.     0x2, 0x21, 0x10,  0x2, 0x21, 0x20,  0x2, 0x21, 0x40,  0x2, 0x21, 0x80,
  894.     0x2, 0x22, 0x10,  0x2, 0x22, 0x20,  0x2, 0x22, 0x40,  0x2, 0x22, 0x80,
  895.     0x2, 0x24, 0x10,  0x2, 0x24, 0x20,  0x2, 0x24, 0x40,  0x2, 0x24, 0x80,
  896.     0x2, 0x28, 0x10,  0x2, 0x28, 0x20,  0x2, 0x28, 0x40,  0x2, 0x28, 0x80,
  897.     0x2, 0x41, 0x10,  0x2, 0x41, 0x20,  0x2, 0x41, 0x40,  0x2, 0x41, 0x80,
  898.     0x2, 0x42, 0x10,  0x2, 0x42, 0x20,  0x2, 0x42, 0x40,  0x2, 0x42, 0x80,
  899.     0x2, 0x44, 0x10,  0x2, 0x44, 0x20,  0x2, 0x44, 0x40,  0x2, 0x44, 0x80,
  900.     0x2, 0x48, 0x10,  0x2, 0x48, 0x20,  0x2, 0x48, 0x40,  0x2, 0x48, 0x80,
  901.     0x2, 0x81, 0x10,  0x2, 0x81, 0x20,  0x2, 0x81, 0x40,  0x2, 0x81, 0x80,
  902.     0x2, 0x82, 0x10,  0x2, 0x82, 0x20,  0x2, 0x82, 0x40,  0x2, 0x82, 0x80,
  903.     0x2, 0x84, 0x10,  0x2, 0x84, 0x20,  0x2, 0x84, 0x40,  0x2, 0x84, 0x80,
  904.     0x2, 0x88, 0x10,  0x2, 0x88, 0x20,  0x2, 0x88, 0x40,  0x2, 0x88, 0x80,
  905.     0x4, 0x11, 0x10,  0x4, 0x11, 0x20,  0x4, 0x11, 0x40,  0x4, 0x11, 0x80,
  906.     0x4, 0x12, 0x10,  0x4, 0x12, 0x20,  0x4, 0x12, 0x40,  0x4, 0x12, 0x80,
  907.     0x4, 0x14, 0x10,  0x4, 0x14, 0x20,  0x4, 0x14, 0x40,  0x4, 0x14, 0x80,
  908.     0x4, 0x18, 0x10,  0x4, 0x18, 0x20,  0x4, 0x18, 0x40,  0x4, 0x18, 0x80,
  909.     0x4, 0x21, 0x10,  0x4, 0x21, 0x20,  0x4, 0x21, 0x40,  0x4, 0x21, 0x80,
  910.     0x4, 0x22, 0x10,  0x4, 0x22, 0x20,  0x4, 0x22, 0x40,  0x4, 0x22, 0x80,
  911.     0x4, 0x24, 0x10,  0x4, 0x24, 0x20,  0x4, 0x24, 0x40,  0x4, 0x24, 0x80,
  912.     0x4, 0x28, 0x10,  0x4, 0x28, 0x20,  0x4, 0x28, 0x40,  0x4, 0x28, 0x80,
  913.     0x4, 0x41, 0x10,  0x4, 0x41, 0x20,  0x4, 0x41, 0x40,  0x4, 0x41, 0x80,
  914.     0x4, 0x42, 0x10,  0x4, 0x42, 0x20,  0x4, 0x42, 0x40,  0x4, 0x42, 0x80,
  915.     0x4, 0x44, 0x10,  0x4, 0x44, 0x20,  0x4, 0x44, 0x40,  0x4, 0x44, 0x80,
  916.     0x4, 0x48, 0x10,  0x4, 0x48, 0x20,  0x4, 0x48, 0x40,  0x4, 0x48, 0x80,
  917.     0x4, 0x81, 0x10,  0x4, 0x81, 0x20,  0x4, 0x81, 0x40,  0x4, 0x81, 0x80,
  918.     0x4, 0x82, 0x10,  0x4, 0x82, 0x20,  0x4, 0x82, 0x40,  0x4, 0x82, 0x80,
  919.     0x4, 0x84, 0x10,  0x4, 0x84, 0x20,  0x4, 0x84, 0x40,  0x4, 0x84, 0x80,
  920.     0x4, 0x88, 0x10,  0x4, 0x88, 0x20,  0x4, 0x88, 0x40,  0x4, 0x88, 0x80,
  921.     0x8, 0x11, 0x10,  0x8, 0x11, 0x20,  0x8, 0x11, 0x40,  0x8, 0x11, 0x80,
  922.     0x8, 0x12, 0x10,  0x8, 0x12, 0x20,  0x8, 0x12, 0x40,  0x8, 0x12, 0x80,
  923.     0x8, 0x14, 0x10,  0x8, 0x14, 0x20,  0x8, 0x14, 0x40,  0x8, 0x14, 0x80,
  924.     0x8, 0x18, 0x10,  0x8, 0x18, 0x20,  0x8, 0x18, 0x40,  0x8, 0x18, 0x80,
  925.     0x8, 0x21, 0x10,  0x8, 0x21, 0x20,  0x8, 0x21, 0x40,  0x8, 0x21, 0x80,
  926.     0x8, 0x22, 0x10,  0x8, 0x22, 0x20,  0x8, 0x22, 0x40,  0x8, 0x22, 0x80,
  927.     0x8, 0x24, 0x10,  0x8, 0x24, 0x20,  0x8, 0x24, 0x40,  0x8, 0x24, 0x80,
  928.     0x8, 0x28, 0x10,  0x8, 0x28, 0x20,  0x8, 0x28, 0x40,  0x8, 0x28, 0x80,
  929.     0x8, 0x41, 0x10,  0x8, 0x41, 0x20,  0x8, 0x41, 0x40,  0x8, 0x41, 0x80,
  930.     0x8, 0x42, 0x10,  0x8, 0x42, 0x20,  0x8, 0x42, 0x40,  0x8, 0x42, 0x80,
  931.     0x8, 0x44, 0x10,  0x8, 0x44, 0x20,  0x8, 0x44, 0x40,  0x8, 0x44, 0x80,
  932.     0x8, 0x48, 0x10,  0x8, 0x48, 0x20,  0x8, 0x48, 0x40,  0x8, 0x48, 0x80,
  933.     0x8, 0x81, 0x10,  0x8, 0x81, 0x20,  0x8, 0x81, 0x40,  0x8, 0x81, 0x80,
  934.     0x8, 0x82, 0x10,  0x8, 0x82, 0x20,  0x8, 0x82, 0x40,  0x8, 0x82, 0x80,
  935.     0x8, 0x84, 0x10,  0x8, 0x84, 0x20,  0x8, 0x84, 0x40,  0x8, 0x84, 0x80,
  936.     0x8, 0x88, 0x10,  0x8, 0x88, 0x20,  0x8, 0x88, 0x40,  0x8, 0x88, 0x80
  937. };
  938. // NCBI2na to NCBI8na (NCBI4na_expand)
  939. /*
  940.     static Uint1 convert[] = { 0x01, 0x02, 0x04, 0x08 };
  941.     Uint1 base[4];
  942.     for ( base[0] = 0; base[0] < 4; ++(base[0]) ) {
  943.         for ( base[1] = 0; base[1] < 4; ++(base[1]) ) {
  944.             for ( base[2] = 0; base[2] < 4; ++(base[2]) ) {
  945.                 for ( base[3] = 0; base[3] < 4; ++(base[3]) ) {
  946.                     Uint1 index = 
  947.                         (base[0] << 6) | (base[1] << 4) | (base[2] << 2) | base[3];
  948.                     for ( size_t i = 0; i < 4; ++i ) {
  949.                         sm_Table[index * 4 + i] = convert[base[i]];
  950.                     }
  951.                 }
  952.             }
  953.         }
  954.     }
  955. */
  956. const Uint1 C2naTo8na::scm_Table[1024] = {
  957.     0x1,0x1,0x1,0x1, 0x1,0x1,0x1,0x2, 0x1,0x1,0x1,0x4, 0x1,0x1,0x1,0x8,
  958.     0x1,0x1,0x2,0x1, 0x1,0x1,0x2,0x2, 0x1,0x1,0x2,0x4, 0x1,0x1,0x2,0x8,
  959.     0x1,0x1,0x4,0x1, 0x1,0x1,0x4,0x2, 0x1,0x1,0x4,0x4, 0x1,0x1,0x4,0x8,
  960.     0x1,0x1,0x8,0x1, 0x1,0x1,0x8,0x2, 0x1,0x1,0x8,0x4, 0x1,0x1,0x8,0x8,
  961.     0x1,0x2,0x1,0x1, 0x1,0x2,0x1,0x2, 0x1,0x2,0x1,0x4, 0x1,0x2,0x1,0x8,
  962.     0x1,0x2,0x2,0x1, 0x1,0x2,0x2,0x2, 0x1,0x2,0x2,0x4, 0x1,0x2,0x2,0x8,
  963.     0x1,0x2,0x4,0x1, 0x1,0x2,0x4,0x2, 0x1,0x2,0x4,0x4, 0x1,0x2,0x4,0x8,
  964.     0x1,0x2,0x8,0x1, 0x1,0x2,0x8,0x2, 0x1,0x2,0x8,0x4, 0x1,0x2,0x8,0x8,
  965.     0x1,0x4,0x1,0x1, 0x1,0x4,0x1,0x2, 0x1,0x4,0x1,0x4, 0x1,0x4,0x1,0x8,
  966.     0x1,0x4,0x2,0x1, 0x1,0x4,0x2,0x2, 0x1,0x4,0x2,0x4, 0x1,0x4,0x2,0x8,
  967.     0x1,0x4,0x4,0x1, 0x1,0x4,0x4,0x2, 0x1,0x4,0x4,0x4, 0x1,0x4,0x4,0x8,
  968.     0x1,0x4,0x8,0x1, 0x1,0x4,0x8,0x2, 0x1,0x4,0x8,0x4, 0x1,0x4,0x8,0x8,
  969.     0x1,0x8,0x1,0x1, 0x1,0x8,0x1,0x2, 0x1,0x8,0x1,0x4, 0x1,0x8,0x1,0x8,
  970.     0x1,0x8,0x2,0x1, 0x1,0x8,0x2,0x2, 0x1,0x8,0x2,0x4, 0x1,0x8,0x2,0x8,
  971.     0x1,0x8,0x4,0x1, 0x1,0x8,0x4,0x2, 0x1,0x8,0x4,0x4, 0x1,0x8,0x4,0x8,
  972.     0x1,0x8,0x8,0x1, 0x1,0x8,0x8,0x2, 0x1,0x8,0x8,0x4, 0x1,0x8,0x8,0x8,
  973.     0x2,0x1,0x1,0x1, 0x2,0x1,0x1,0x2, 0x2,0x1,0x1,0x4, 0x2,0x1,0x1,0x8,
  974.     0x2,0x1,0x2,0x1, 0x2,0x1,0x2,0x2, 0x2,0x1,0x2,0x4, 0x2,0x1,0x2,0x8,
  975.     0x2,0x1,0x4,0x1, 0x2,0x1,0x4,0x2, 0x2,0x1,0x4,0x4, 0x2,0x1,0x4,0x8,
  976.     0x2,0x1,0x8,0x1, 0x2,0x1,0x8,0x2, 0x2,0x1,0x8,0x4, 0x2,0x1,0x8,0x8,
  977.     0x2,0x2,0x1,0x1, 0x2,0x2,0x1,0x2, 0x2,0x2,0x1,0x4, 0x2,0x2,0x1,0x8,
  978.     0x2,0x2,0x2,0x1, 0x2,0x2,0x2,0x2, 0x2,0x2,0x2,0x4, 0x2,0x2,0x2,0x8,
  979.     0x2,0x2,0x4,0x1, 0x2,0x2,0x4,0x2, 0x2,0x2,0x4,0x4, 0x2,0x2,0x4,0x8,
  980.     0x2,0x2,0x8,0x1, 0x2,0x2,0x8,0x2, 0x2,0x2,0x8,0x4, 0x2,0x2,0x8,0x8,
  981.     0x2,0x4,0x1,0x1, 0x2,0x4,0x1,0x2, 0x2,0x4,0x1,0x4, 0x2,0x4,0x1,0x8,
  982.     0x2,0x4,0x2,0x1, 0x2,0x4,0x2,0x2, 0x2,0x4,0x2,0x4, 0x2,0x4,0x2,0x8,
  983.     0x2,0x4,0x4,0x1, 0x2,0x4,0x4,0x2, 0x2,0x4,0x4,0x4, 0x2,0x4,0x4,0x8,
  984.     0x2,0x4,0x8,0x1, 0x2,0x4,0x8,0x2, 0x2,0x4,0x8,0x4, 0x2,0x4,0x8,0x8,
  985.     0x2,0x8,0x1,0x1, 0x2,0x8,0x1,0x2, 0x2,0x8,0x1,0x4, 0x2,0x8,0x1,0x8,
  986.     0x2,0x8,0x2,0x1, 0x2,0x8,0x2,0x2, 0x2,0x8,0x2,0x4, 0x2,0x8,0x2,0x8,
  987.     0x2,0x8,0x4,0x1, 0x2,0x8,0x4,0x2, 0x2,0x8,0x4,0x4, 0x2,0x8,0x4,0x8,
  988.     0x2,0x8,0x8,0x1, 0x2,0x8,0x8,0x2, 0x2,0x8,0x8,0x4, 0x2,0x8,0x8,0x8,
  989.     0x4,0x1,0x1,0x1, 0x4,0x1,0x1,0x2, 0x4,0x1,0x1,0x4, 0x4,0x1,0x1,0x8,
  990.     0x4,0x1,0x2,0x1, 0x4,0x1,0x2,0x2, 0x4,0x1,0x2,0x4, 0x4,0x1,0x2,0x8,
  991.     0x4,0x1,0x4,0x1, 0x4,0x1,0x4,0x2, 0x4,0x1,0x4,0x4, 0x4,0x1,0x4,0x8,
  992.     0x4,0x1,0x8,0x1, 0x4,0x1,0x8,0x2, 0x4,0x1,0x8,0x4, 0x4,0x1,0x8,0x8,
  993.     0x4,0x2,0x1,0x1, 0x4,0x2,0x1,0x2, 0x4,0x2,0x1,0x4, 0x4,0x2,0x1,0x8,
  994.     0x4,0x2,0x2,0x1, 0x4,0x2,0x2,0x2, 0x4,0x2,0x2,0x4, 0x4,0x2,0x2,0x8,
  995.     0x4,0x2,0x4,0x1, 0x4,0x2,0x4,0x2, 0x4,0x2,0x4,0x4, 0x4,0x2,0x4,0x8,
  996.     0x4,0x2,0x8,0x1, 0x4,0x2,0x8,0x2, 0x4,0x2,0x8,0x4, 0x4,0x2,0x8,0x8,
  997.     0x4,0x4,0x1,0x1, 0x4,0x4,0x1,0x2, 0x4,0x4,0x1,0x4, 0x4,0x4,0x1,0x8,
  998.     0x4,0x4,0x2,0x1, 0x4,0x4,0x2,0x2, 0x4,0x4,0x2,0x4, 0x4,0x4,0x2,0x8,
  999.     0x4,0x4,0x4,0x1, 0x4,0x4,0x4,0x2, 0x4,0x4,0x4,0x4, 0x4,0x4,0x4,0x8,
  1000.     0x4,0x4,0x8,0x1, 0x4,0x4,0x8,0x2, 0x4,0x4,0x8,0x4, 0x4,0x4,0x8,0x8,
  1001.     0x4,0x8,0x1,0x1, 0x4,0x8,0x1,0x2, 0x4,0x8,0x1,0x4, 0x4,0x8,0x1,0x8,
  1002.     0x4,0x8,0x2,0x1, 0x4,0x8,0x2,0x2, 0x4,0x8,0x2,0x4, 0x4,0x8,0x2,0x8,
  1003.     0x4,0x8,0x4,0x1, 0x4,0x8,0x4,0x2, 0x4,0x8,0x4,0x4, 0x4,0x8,0x4,0x8,
  1004.     0x4,0x8,0x8,0x1, 0x4,0x8,0x8,0x2, 0x4,0x8,0x8,0x4, 0x4,0x8,0x8,0x8,
  1005.     0x8,0x1,0x1,0x1, 0x8,0x1,0x1,0x2, 0x8,0x1,0x1,0x4, 0x8,0x1,0x1,0x8,
  1006.     0x8,0x1,0x2,0x1, 0x8,0x1,0x2,0x2, 0x8,0x1,0x2,0x4, 0x8,0x1,0x2,0x8,
  1007.     0x8,0x1,0x4,0x1, 0x8,0x1,0x4,0x2, 0x8,0x1,0x4,0x4, 0x8,0x1,0x4,0x8,
  1008.     0x8,0x1,0x8,0x1, 0x8,0x1,0x8,0x2, 0x8,0x1,0x8,0x4, 0x8,0x1,0x8,0x8,
  1009.     0x8,0x2,0x1,0x1, 0x8,0x2,0x1,0x2, 0x8,0x2,0x1,0x4, 0x8,0x2,0x1,0x8,
  1010.     0x8,0x2,0x2,0x1, 0x8,0x2,0x2,0x2, 0x8,0x2,0x2,0x4, 0x8,0x2,0x2,0x8,
  1011.     0x8,0x2,0x4,0x1, 0x8,0x2,0x4,0x2, 0x8,0x2,0x4,0x4, 0x8,0x2,0x4,0x8,
  1012.     0x8,0x2,0x8,0x1, 0x8,0x2,0x8,0x2, 0x8,0x2,0x8,0x4, 0x8,0x2,0x8,0x8,
  1013.     0x8,0x4,0x1,0x1, 0x8,0x4,0x1,0x2, 0x8,0x4,0x1,0x4, 0x8,0x4,0x1,0x8,
  1014.     0x8,0x4,0x2,0x1, 0x8,0x4,0x2,0x2, 0x8,0x4,0x2,0x4, 0x8,0x4,0x2,0x8,
  1015.     0x8,0x4,0x4,0x1, 0x8,0x4,0x4,0x2, 0x8,0x4,0x4,0x4, 0x8,0x4,0x4,0x8,
  1016.     0x8,0x4,0x8,0x1, 0x8,0x4,0x8,0x2, 0x8,0x4,0x8,0x4, 0x8,0x4,0x8,0x8,
  1017.     0x8,0x8,0x1,0x1, 0x8,0x8,0x1,0x2, 0x8,0x8,0x1,0x4, 0x8,0x8,0x1,0x8,
  1018.     0x8,0x8,0x2,0x1, 0x8,0x8,0x2,0x2, 0x8,0x8,0x2,0x4, 0x8,0x8,0x2,0x8,
  1019.     0x8,0x8,0x4,0x1, 0x8,0x8,0x4,0x2, 0x8,0x8,0x4,0x4, 0x8,0x8,0x4,0x8,
  1020.     0x8,0x8,0x8,0x1, 0x8,0x8,0x8,0x2, 0x8,0x8,0x8,0x4, 0x8,0x8,0x8,0x8
  1021. };
  1022. // NCBI2na_expand to IUPACna
  1023. // 0 -> A
  1024. // 1 -> C
  1025. // 2 -> G
  1026. // 3 -> T
  1027. const Uint1 C2naExpandToIupacna::scm_Table[256] = {
  1028.     0x41, 0x43, 0x47, 0x54, 0xff, 0xff, 0xff, 0xff,
  1029.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1030.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1031.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1032.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1033.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1034.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1035.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1036.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1037.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1038.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1039.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1040.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1041.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1042.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1043.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1044.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1045.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1046.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1047.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1048.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1049.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1050.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1051.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1052.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1053.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1054.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1055.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1056.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1057.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1058.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1059.     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
  1060. };
  1061. // NCBI4na to IUPACna
  1062. // 0  '-'  -> N
  1063. // 1  'A'  -> N
  1064. // 2  'C'  -> N
  1065. // 3  'M'  -> N
  1066. // 4  'G'  -> N
  1067. // 5  'R'  -> N
  1068. // 6  'S'  -> N
  1069. // 7  'V'  -> N
  1070. // 8  'T'  -> N
  1071. // 9  'W'  -> N
  1072. // 10 'Y'  -> N
  1073. // 11 'H'  -> N
  1074. // 12 'K'  -> N
  1075. // 13 'D'  -> N
  1076. // 14 'B'  -> N
  1077. // 15 'N'  -> N
  1078. const Uint1 C4naToIupacna::scm_Table[512] = {
  1079.     0x4e,0x4e,    0x4e,0x41,    0x4e,0x43,    0x4e,0x4d,
  1080.     0x4e,0x47,    0x4e,0x52,    0x4e,0x53,    0x4e,0x56,
  1081.     0x4e,0x54,    0x4e,0x57,    0x4e,0x59,    0x4e,0x48,
  1082.     0x4e,0x4b,    0x4e,0x44,    0x4e,0x42,    0x4e,0x4e,
  1083.     0x41,0x4e,    0x41,0x41,    0x41,0x43,    0x41,0x4d,
  1084.     0x41,0x47,    0x41,0x52,    0x41,0x53,    0x41,0x56,
  1085.     0x41,0x54,    0x41,0x57,    0x41,0x59,    0x41,0x48,
  1086.     0x41,0x4b,    0x41,0x44,    0x41,0x42,    0x41,0x4e,
  1087.     0x43,0x4e,    0x43,0x41,    0x43,0x43,    0x43,0x4d,
  1088.     0x43,0x47,    0x43,0x52,    0x43,0x53,    0x43,0x56,
  1089.     0x43,0x54,    0x43,0x57,    0x43,0x59,    0x43,0x48,
  1090.     0x43,0x4b,    0x43,0x44,    0x43,0x42,    0x43,0x4e,
  1091.     0x4d,0x4e,    0x4d,0x41,    0x4d,0x43,    0x4d,0x4d,
  1092.     0x4d,0x47,    0x4d,0x52,    0x4d,0x53,    0x4d,0x56,
  1093.     0x4d,0x54,    0x4d,0x57,    0x4d,0x59,    0x4d,0x48,
  1094.     0x4d,0x4b,    0x4d,0x44,    0x4d,0x42,    0x4d,0x4e,
  1095.     0x47,0x4e,    0x47,0x41,    0x47,0x43,    0x47,0x4d,
  1096.     0x47,0x47,    0x47,0x52,    0x47,0x53,    0x47,0x56,
  1097.     0x47,0x54,    0x47,0x57,    0x47,0x59,    0x47,0x48,
  1098.     0x47,0x4b,    0x47,0x44,    0x47,0x42,    0x47,0x4e,
  1099.     0x52,0x4e,    0x52,0x41,    0x52,0x43,    0x52,0x4d,
  1100.     0x52,0x47,    0x52,0x52,    0x52,0x53,    0x52,0x56,
  1101.     0x52,0x54,    0x52,0x57,    0x52,0x59,    0x52,0x48,
  1102.     0x52,0x4b,    0x52,0x44,    0x52,0x42,    0x52,0x4e,
  1103.     0x53,0x4e,    0x53,0x41,    0x53,0x43,    0x53,0x4d,
  1104.     0x53,0x47,    0x53,0x52,    0x53,0x53,    0x53,0x56,
  1105.     0x53,0x54,    0x53,0x57,    0x53,0x59,    0x53,0x48,
  1106.     0x53,0x4b,    0x53,0x44,    0x53,0x42,    0x53,0x4e,
  1107.     0x56,0x4e,    0x56,0x41,    0x56,0x43,    0x56,0x4d,
  1108.     0x56,0x47,    0x56,0x52,    0x56,0x53,    0x56,0x56,
  1109.     0x56,0x54,    0x56,0x57,    0x56,0x59,    0x56,0x48,
  1110.     0x56,0x4b,    0x56,0x44,    0x56,0x42,    0x56,0x4e,
  1111.     0x54,0x4e,    0x54,0x41,    0x54,0x43,    0x54,0x4d,
  1112.     0x54,0x47,    0x54,0x52,    0x54,0x53,    0x54,0x56,
  1113.     0x54,0x54,    0x54,0x57,    0x54,0x59,    0x54,0x48,
  1114.     0x54,0x4b,    0x54,0x44,    0x54,0x42,    0x54,0x4e,
  1115.     0x57,0x4e,    0x57,0x41,    0x57,0x43,    0x57,0x4d,
  1116.     0x57,0x47,    0x57,0x52,    0x57,0x53,    0x57,0x56,
  1117.     0x57,0x54,    0x57,0x57,    0x57,0x59,    0x57,0x48,
  1118.     0x57,0x4b,    0x57,0x44,    0x57,0x42,    0x57,0x4e,
  1119.     0x59,0x4e,    0x59,0x41,    0x59,0x43,    0x59,0x4d,
  1120.     0x59,0x47,    0x59,0x52,    0x59,0x53,    0x59,0x56,
  1121.     0x59,0x54,    0x59,0x57,    0x59,0x59,    0x59,0x48,
  1122.     0x59,0x4b,    0x59,0x44,    0x59,0x42,    0x59,0x4e,
  1123.     0x48,0x4e,    0x48,0x41,    0x48,0x43,    0x48,0x4d,
  1124.     0x48,0x47,    0x48,0x52,    0x48,0x53,    0x48,0x56,
  1125.     0x48,0x54,    0x48,0x57,    0x48,0x59,    0x48,0x48,
  1126.     0x48,0x4b,    0x48,0x44,    0x48,0x42,    0x48,0x4e,
  1127.     0x4b,0x4e,    0x4b,0x41,    0x4b,0x43,    0x4b,0x4d,
  1128.     0x4b,0x47,    0x4b,0x52,    0x4b,0x53,    0x4b,0x56,
  1129.     0x4b,0x54,    0x4b,0x57,    0x4b,0x59,    0x4b,0x48,
  1130.     0x4b,0x4b,    0x4b,0x44,    0x4b,0x42,    0x4b,0x4e,
  1131.     0x44,0x4e,    0x44,0x41,    0x44,0x43,    0x44,0x4d,
  1132.     0x44,0x47,    0x44,0x52,    0x44,0x53,    0x44,0x56,
  1133.     0x44,0x54,    0x44,0x57,    0x44,0x59,    0x44,0x48,
  1134.     0x44,0x4b,    0x44,0x44,    0x44,0x42,    0x44,0x4e,
  1135.     0x42,0x4e,    0x42,0x41,    0x42,0x43,    0x42,0x4d,
  1136.     0x42,0x47,    0x42,0x52,    0x42,0x53,    0x42,0x56,
  1137.     0x42,0x54,    0x42,0x57,    0x42,0x59,    0x42,0x48,
  1138.     0x42,0x4b,    0x42,0x44,    0x42,0x42,    0x42,0x4e,
  1139.     0x4e,0x4e,    0x4e,0x41,    0x4e,0x43,    0x4e,0x4d,
  1140.     0x4e,0x47,    0x4e,0x52,    0x4e,0x53,    0x4e,0x56,
  1141.     0x4e,0x54,    0x4e,0x57,    0x4e,0x59,    0x4e,0x48,
  1142.     0x4e,0x4b,    0x4e,0x44,    0x4e,0x42,    0x4e,0x4e
  1143. };
  1144. // NCBI4na to NCBI2na
  1145. // 0  -> 3  (gap -> T)
  1146. // 1  -> 0  (A -> A)
  1147. // 2  -> 1  (C -> C)
  1148. // 3  -> 1  (M -> C)
  1149. // 4  -> 2  (G -> G)
  1150. // 5  -> 2  (R -> G)
  1151. // 6  -> 1  (S -> C)
  1152. // 7  -> 0  (V -> A)
  1153. // 8  -> 3  (T -> T)
  1154. // 9  -> 3  (W -> T)
  1155. // 10 -> 3  (Y -> T)
  1156. // 11 -> 0  (H -> A)
  1157. // 12 -> 2  (K -> G)
  1158. // 13 -> 2  (D -> G)
  1159. // 14 -> 1  (B -> C)
  1160. // 15 -> 0  (N -> A)
  1161. /*
  1162.     for ( base[0] = 0; base[0] < 16; ++base[0] ) {
  1163.         for ( base[1] = 0; base[1] < 16; ++base[1] ) {
  1164.             Uint1 index = base[0] << 4 | base[1];
  1165.             sm_TableOffset0[index * 2] = 
  1166.                 (convert[base[0]] << 6) | (convert[base[1]] << 4);
  1167.             sm_TableOffset0[index * 2 + 1] = 
  1168.                 (convert[base[0]] << 2) | convert[base[1]];
  1169.         }
  1170.     }
  1171. */
  1172. const Uint1 C4naTo2na::scm_Table0[512] = {
  1173.     0xf0,0xf,    0xc0,0xc,    0xd0,0xd,    0xd0,0xd,
  1174.     0xe0,0xe,    0xe0,0xe,    0xd0,0xd,    0xc0,0xc,
  1175.     0xf0,0xf,    0xf0,0xf,    0xf0,0xf,    0xc0,0xc,
  1176.     0xe0,0xe,    0xe0,0xe,    0xd0,0xd,    0xc0,0xc,
  1177.     0x30,0x3,    0x0,0x0,    0x10,0x1,    0x10,0x1,
  1178.     0x20,0x2,    0x20,0x2,    0x10,0x1,    0x0,0x0,
  1179.     0x30,0x3,    0x30,0x3,    0x30,0x3,    0x0,0x0,
  1180.     0x20,0x2,    0x20,0x2,    0x10,0x1,    0x0,0x0,
  1181.     0x70,0x7,    0x40,0x4,    0x50,0x5,    0x50,0x5,
  1182.     0x60,0x6,    0x60,0x6,    0x50,0x5,    0x40,0x4,
  1183.     0x70,0x7,    0x70,0x7,    0x70,0x7,    0x40,0x4,
  1184.     0x60,0x6,    0x60,0x6,    0x50,0x5,    0x40,0x4,
  1185.     0x70,0x7,    0x40,0x4,    0x50,0x5,    0x50,0x5,
  1186.     0x60,0x6,    0x60,0x6,    0x50,0x5,    0x40,0x4,
  1187.     0x70,0x7,    0x70,0x7,    0x70,0x7,    0x40,0x4,
  1188.     0x60,0x6,    0x60,0x6,    0x50,0x5,    0x40,0x4,
  1189.     0xb0,0xb,    0x80,0x8,    0x90,0x9,    0x90,0x9,
  1190.     0xa0,0xa,    0xa0,0xa,    0x90,0x9,    0x80,0x8,
  1191.     0xb0,0xb,    0xb0,0xb,    0xb0,0xb,    0x80,0x8,
  1192.     0xa0,0xa,    0xa0,0xa,    0x90,0x9,    0x80,0x8,
  1193.     0xb0,0xb,    0x80,0x8,    0x90,0x9,    0x90,0x9,
  1194.     0xa0,0xa,    0xa0,0xa,    0x90,0x9,    0x80,0x8,
  1195.     0xb0,0xb,    0xb0,0xb,    0xb0,0xb,    0x80,0x8,
  1196.     0xa0,0xa,    0xa0,0xa,    0x90,0x9,    0x80,0x8,
  1197.     0x70,0x7,    0x40,0x4,    0x50,0x5,    0x50,0x5,
  1198.     0x60,0x6,    0x60,0x6,    0x50,0x5,    0x40,0x4,
  1199.     0x70,0x7,    0x70,0x7,    0x70,0x7,    0x40,0x4,
  1200.     0x60,0x6,    0x60,0x6,    0x50,0x5,    0x40,0x4,
  1201.     0x30,0x3,    0x0,0x0,    0x10,0x1,    0x10,0x1,
  1202.     0x20,0x2,    0x20,0x2,    0x10,0x1,    0x0,0x0,
  1203.     0x30,0x3,    0x30,0x3,    0x30,0x3,    0x0,0x0,
  1204.     0x20,0x2,    0x20,0x2,    0x10,0x1,    0x0,0x0,
  1205.     0xf0,0xf,    0xc0,0xc,    0xd0,0xd,    0xd0,0xd,
  1206.     0xe0,0xe,    0xe0,0xe,    0xd0,0xd,    0xc0,0xc,
  1207.     0xf0,0xf,    0xf0,0xf,    0xf0,0xf,    0xc0,0xc,
  1208.     0xe0,0xe,    0xe0,0xe,    0xd0,0xd,    0xc0,0xc,
  1209.     0xf0,0xf,    0xc0,0xc,    0xd0,0xd,    0xd0,0xd,
  1210.     0xe0,0xe,    0xe0,0xe,    0xd0,0xd,    0xc0,0xc,
  1211.     0xf0,0xf,    0xf0,0xf,    0xf0,0xf,    0xc0,0xc,
  1212.     0xe0,0xe,    0xe0,0xe,    0xd0,0xd,    0xc0,0xc,
  1213.     0xf0,0xf,    0xc0,0xc,    0xd0,0xd,    0xd0,0xd,
  1214.     0xe0,0xe,    0xe0,0xe,    0xd0,0xd,    0xc0,0xc,
  1215.     0xf0,0xf,    0xf0,0xf,    0xf0,0xf,    0xc0,0xc,
  1216.     0xe0,0xe,    0xe0,0xe,    0xd0,0xd,    0xc0,0xc,
  1217.     0x30,0x3,    0x0,0x0,    0x10,0x1,    0x10,0x1,
  1218.     0x20,0x2,    0x20,0x2,    0x10,0x1,    0x0,0x0,
  1219.     0x30,0x3,    0x30,0x3,    0x30,0x3,    0x0,0x0,
  1220.     0x20,0x2,    0x20,0x2,    0x10,0x1,    0x0,0x0,
  1221.     0xb0,0xb,    0x80,0x8,    0x90,0x9,    0x90,0x9,
  1222.     0xa0,0xa,    0xa0,0xa,    0x90,0x9,    0x80,0x8,
  1223.     0xb0,0xb,    0xb0,0xb,    0xb0,0xb,    0x80,0x8,
  1224.     0xa0,0xa,    0xa0,0xa,    0x90,0x9,    0x80,0x8,
  1225.     0xb0,0xb,    0x80,0x8,    0x90,0x9,    0x90,0x9,
  1226.     0xa0,0xa,    0xa0,0xa,    0x90,0x9,    0x80,0x8,
  1227.     0xb0,0xb,    0xb0,0xb,    0xb0,0xb,    0x80,0x8,
  1228.     0xa0,0xa,    0xa0,0xa,    0x90,0x9,    0x80,0x8,
  1229.     0x70,0x7,    0x40,0x4,    0x50,0x5,    0x50,0x5,
  1230.     0x60,0x6,    0x60,0x6,    0x50,0x5,    0x40,0x4,
  1231.     0x70,0x7,    0x70,0x7,    0x70,0x7,    0x40,0x4,
  1232.     0x60,0x6,    0x60,0x6,    0x50,0x5,    0x40,0x4,
  1233.     0x30,0x3,    0x0,0x0,    0x10,0x1,    0x10,0x1,
  1234.     0x20,0x2,    0x20,0x2,    0x10,0x1,    0x0,0x0,
  1235.     0x30,0x3,    0x30,0x3,    0x30,0x3,    0x0,0x0,
  1236.     0x20,0x2,    0x20,0x2,    0x10,0x1,    0x0,0x0
  1237. };
  1238. /*
  1239.     for ( base[0] = 0; base[0] < 16; ++base[0] ) {
  1240.         for ( base[1] = 0; base[1] < 16; ++base[1] ) {
  1241.             Uint1 index = base[0] << 4 | base[1];
  1242.             sm_TableOffset1[index * 3] = 
  1243.                 convert[base[1]] << 6;
  1244.             sm_TableOffset1[index * 3 + 1] = 
  1245.                 (convert[base[0]] << 4) | (convert[base[1]] << 2);
  1246.             sm_TableOffset1[index * 3 + 2] = 
  1247.                 convert[base[0]];
  1248.         }
  1249.     }
  1250. */
  1251. const Uint1 C4naTo2na::scm_Table1[768] = {
  1252.     0xc0,0x3c,0x3,    0x0,0x30,0x3,    0x40,0x34,0x3,    0x40,0x34,0x3,
  1253.     0x80,0x38,0x3,    0x80,0x38,0x3,    0x40,0x34,0x3,    0x0,0x30,0x3,
  1254.     0xc0,0x3c,0x3,    0xc0,0x3c,0x3,    0xc0,0x3c,0x3,    0x0,0x30,0x3,
  1255.     0x80,0x38,0x3,    0x80,0x38,0x3,    0x40,0x34,0x3,    0x0,0x30,0x3,
  1256.     0xc0,0xc,0x0,    0x0,0x0,0x0,    0x40,0x4,0x0,    0x40,0x4,0x0,
  1257.     0x80,0x8,0x0,    0x80,0x8,0x0,    0x40,0x4,0x0,    0x0,0x0,0x0,
  1258.     0xc0,0xc,0x0,    0xc0,0xc,0x0,    0xc0,0xc,0x0,    0x0,0x0,0x0,
  1259.     0x80,0x8,0x0,    0x80,0x8,0x0,    0x40,0x4,0x0,    0x0,0x0,0x0,
  1260.     0xc0,0x1c,0x1,    0x0,0x10,0x1,    0x40,0x14,0x1,    0x40,0x14,0x1,
  1261.     0x80,0x18,0x1,    0x80,0x18,0x1,    0x40,0x14,0x1,    0x0,0x10,0x1,
  1262.     0xc0,0x1c,0x1,    0xc0,0x1c,0x1,    0xc0,0x1c,0x1,    0x0,0x10,0x1,
  1263.     0x80,0x18,0x1,    0x80,0x18,0x1,    0x40,0x14,0x1,    0x0,0x10,0x1,
  1264.     0xc0,0x1c,0x1,    0x0,0x10,0x1,    0x40,0x14,0x1,    0x40,0x14,0x1,
  1265.     0x80,0x18,0x1,    0x80,0x18,0x1,    0x40,0x14,0x1,    0x0,0x10,0x1,
  1266.     0xc0,0x1c,0x1,    0xc0,0x1c,0x1,    0xc0,0x1c,0x1,    0x0,0x10,0x1,
  1267.     0x80,0x18,0x1,    0x80,0x18,0x1,    0x40,0x14,0x1,    0x0,0x10,0x1,
  1268.     0xc0,0x2c,0x2,    0x0,0x20,0x2,    0x40,0x24,0x2,    0x40,0x24,0x2,
  1269.     0x80,0x28,0x2,    0x80,0x28,0x2,    0x40,0x24,0x2,    0x0,0x20,0x2,
  1270.     0xc0,0x2c,0x2,    0xc0,0x2c,0x2,    0xc0,0x2c,0x2,    0x0,0x20,0x2,
  1271.     0x80,0x28,0x2,    0x80,0x28,0x2,    0x40,0x24,0x2,    0x0,0x20,0x2,
  1272.     0xc0,0x2c,0x2,    0x0,0x20,0x2,    0x40,0x24,0x2,    0x40,0x24,0x2,
  1273.     0x80,0x28,0x2,    0x80,0x28,0x2,    0x40,0x24,0x2,    0x0,0x20,0x2,
  1274.     0xc0,0x2c,0x2,    0xc0,0x2c,0x2,    0xc0,0x2c,0x2,    0x0,0x20,0x2,
  1275.     0x80,0x28,0x2,    0x80,0x28,0x2,    0x40,0x24,0x2,    0x0,0x20,0x2,
  1276.     0xc0,0x1c,0x1,    0x0,0x10,0x1,    0x40,0x14,0x1,    0x40,0x14,0x1,
  1277.     0x80,0x18,0x1,    0x80,0x18,0x1,    0x40,0x14,0x1,    0x0,0x10,0x1,
  1278.     0xc0,0x1c,0x1,    0xc0,0x1c,0x1,    0xc0,0x1c,0x1,    0x0,0x10,0x1,
  1279.     0x80,0x18,0x1,    0x80,0x18,0x1,    0x40,0x14,0x1,    0x0,0x10,0x1,
  1280.     0xc0,0xc,0x0,    0x0,0x0,0x0,    0x40,0x4,0x0,    0x40,0x4,0x0,
  1281.     0x80,0x8,0x0,    0x80,0x8,0x0,    0x40,0x4,0x0,    0x0,0x0,0x0,
  1282.     0xc0,0xc,0x0,    0xc0,0xc,0x0,    0xc0,0xc,0x0,    0x0,0x0,0x0,
  1283.     0x80,0x8,0x0,    0x80,0x8,0x0,    0x40,0x4,0x0,    0x0,0x0,0x0,
  1284.     0xc0,0x3c,0x3,    0x0,0x30,0x3,    0x40,0x34,0x3,    0x40,0x34,0x3,
  1285.     0x80,0x38,0x3,    0x80,0x38,0x3,    0x40,0x34,0x3,    0x0,0x30,0x3,
  1286.     0xc0,0x3c,0x3,    0xc0,0x3c,0x3,    0xc0,0x3c,0x3,    0x0,0x30,0x3,
  1287.     0x80,0x38,0x3,    0x80,0x38,0x3,    0x40,0x34,0x3,    0x0,0x30,0x3,
  1288.     0xc0,0x3c,0x3,    0x0,0x30,0x3,    0x40,0x34,0x3,    0x40,0x34,0x3,
  1289.     0x80,0x38,0x3,    0x80,0x38,0x3,    0x40,0x34,0x3,    0x0,0x30,0x3,
  1290.     0xc0,0x3c,0x3,    0xc0,0x3c,0x3,    0xc0,0x3c,0x3,    0x0,0x30,0x3,
  1291.     0x80,0x38,0x3,    0x80,0x38,0x3,    0x40,0x34,0x3,    0x0,0x30,0x3,
  1292.     0xc0,0x3c,0x3,    0x0,0x30,0x3,    0x40,0x34,0x3,    0x40,0x34,0x3,
  1293.     0x80,0x38,0x3,    0x80,0x38,0x3,    0x40,0x34,0x3,    0x0,0x30,0x3,
  1294.     0xc0,0x3c,0x3,    0xc0,0x3c,0x3,    0xc0,0x3c,0x3,    0x0,0x30,0x3,
  1295.     0x80,0x38,0x3,    0x80,0x38,0x3,    0x40,0x34,0x3,    0x0,0x30,0x3,
  1296.     0xc0,0xc,0x0,    0x0,0x0,0x0,    0x40,0x4,0x0,    0x40,0x4,0x0,
  1297.     0x80,0x8,0x0,    0x80,0x8,0x0,    0x40,0x4,0x0,    0x0,0x0,0x0,
  1298.     0xc0,0xc,0x0,    0xc0,0xc,0x0,    0xc0,0xc,0x0,    0x0,0x0,0x0,
  1299.     0x80,0x8,0x0,    0x80,0x8,0x0,    0x40,0x4,0x0,    0x0,0x0,0x0,
  1300.     0xc0,0x2c,0x2,    0x0,0x20,0x2,    0x40,0x24,0x2,    0x40,0x24,0x2,
  1301.     0x80,0x28,0x2,    0x80,0x28,0x2,    0x40,0x24,0x2,    0x0,0x20,0x2,
  1302.     0xc0,0x2c,0x2,    0xc0,0x2c,0x2,    0xc0,0x2c,0x2,    0x0,0x20,0x2,
  1303.     0x80,0x28,0x2,    0x80,0x28,0x2,    0x40,0x24,0x2,    0x0,0x20,0x2,
  1304.     0xc0,0x2c,0x2,    0x0,0x20,0x2,    0x40,0x24,0x2,    0x40,0x24,0x2,
  1305.     0x80,0x28,0x2,    0x80,0x28,0x2,    0x40,0x24,0x2,    0x0,0x20,0x2,
  1306.     0xc0,0x2c,0x2,    0xc0,0x2c,0x2,    0xc0,0x2c,0x2,    0x0,0x20,0x2,
  1307.     0x80,0x28,0x2,    0x80,0x28,0x2,    0x40,0x24,0x2,    0x0,0x20,0x2,
  1308.     0xc0,0x1c,0x1,    0x0,0x10,0x1,    0x40,0x14,0x1,    0x40,0x14,0x1,
  1309.     0x80,0x18,0x1,    0x80,0x18,0x1,    0x40,0x14,0x1,    0x0,0x10,0x1,
  1310.     0xc0,0x1c,0x1,    0xc0,0x1c,0x1,    0xc0,0x1c,0x1,    0x0,0x10,0x1,
  1311.     0x80,0x18,0x1,    0x80,0x18,0x1,    0x40,0x14,0x1,    0x0,0x10,0x1,
  1312.     0xc0,0xc,0x0,    0x0,0x0,0x0,    0x40,0x4,0x0,    0x40,0x4,0x0,
  1313.     0x80,0x8,0x0,    0x80,0x8,0x0,    0x40,0x4,0x0,    0x0,0x0,0x0,
  1314.     0xc0,0xc,0x0,    0xc0,0xc,0x0,    0xc0,0xc,0x0,    0x0,0x0,0x0,
  1315.     0x80,0x8,0x0,    0x80,0x8,0x0,    0x40,0x4,0x0,    0x0,0x0,0x0
  1316. };
  1317. // NCBI4na to NCBI2na_expand
  1318. // gap -> 3 T
  1319. // A   -> 0 A
  1320. // C   -> 1 C
  1321. // M   -> 1 C
  1322. // G   -> 2 G
  1323. // R   -> 2 G
  1324. // S   -> 1 C
  1325. // V   -> 0 A
  1326. // T   -> 3 T
  1327. // W   -> 3 T
  1328. // Y   -> 3 T
  1329. // H   -> 0 A
  1330. // K   -> 2 G
  1331. // D   -> 2 G
  1332. // B   -> 1 C
  1333. // N   -> 0 A
  1334. const Uint1 C4naTo2naExpand::scm_Table[512] = {
  1335.     0x3,0x3,    0x3,0x0,    0x3,0x1,    0x3,0x1,
  1336.     0x3,0x2,    0x3,0x2,    0x3,0x1,    0x3,0x0,
  1337.     0x3,0x3,    0x3,0x3,    0x3,0x3,    0x3,0x0,
  1338.     0x3,0x2,    0x3,0x2,    0x3,0x1,    0x3,0x0,
  1339.     0x0,0x3,    0x0,0x0,    0x0,0x1,    0x0,0x1,
  1340.     0x0,0x2,    0x0,0x2,    0x0,0x1,    0x0,0x0,
  1341.     0x0,0x3,    0x0,0x3,    0x0,0x3,    0x0,0x0,
  1342.     0x0,0x2,    0x0,0x2,    0x0,0x1,    0x0,0x0,
  1343.     0x1,0x3,    0x1,0x0,    0x1,0x1,    0x1,0x1,
  1344.     0x1,0x2,    0x1,0x2,    0x1,0x1,    0x1,0x0,
  1345.     0x1,0x3,    0x1,0x3,    0x1,0x3,    0x1,0x0,
  1346.     0x1,0x2,    0x1,0x2,    0x1,0x1,    0x1,0x0,
  1347.     0x1,0x3,    0x1,0x0,    0x1,0x1,    0x1,0x1,
  1348.     0x1,0x2,    0x1,0x2,    0x1,0x1,    0x1,0x0,
  1349.     0x1,0x3,    0x1,0x3,    0x1,0x3,    0x1,0x0,
  1350.     0x1,0x2,    0x1,0x2,    0x1,0x1,    0x1,0x0,
  1351.     0x2,0x3,    0x2,0x0,    0x2,0x1,    0x2,0x1,
  1352.     0x2,0x2,    0x2,0x2,    0x2,0x1,    0x2,0x0,
  1353.     0x2,0x3,    0x2,0x3,    0x2,0x3,    0x2,0x0,
  1354.     0x2,0x2,    0x2,0x2,    0x2,0x1,    0x2,0x0,
  1355.     0x2,0x3,    0x2,0x0,    0x2,0x1,    0x2,0x1,
  1356.     0x2,0x2,    0x2,0x2,    0x2,0x1,    0x2,0x0,
  1357.     0x2,0x3,    0x2,0x3,    0x2,0x3,    0x2,0x0,
  1358.     0x2,0x2,    0x2,0x2,    0x2,0x1,    0x2,0x0,
  1359.     0x1,0x3,    0x1,0x0,    0x1,0x1,    0x1,0x1,
  1360.     0x1,0x2,    0x1,0x2,    0x1,0x1,    0x1,0x0,
  1361.     0x1,0x3,    0x1,0x3,    0x1,0x3,    0x1,0x0,
  1362.     0x1,0x2,    0x1,0x2,    0x1,0x1,    0x1,0x0,
  1363.     0x0,0x3,    0x0,0x0,    0x0,0x1,    0x0,0x1,
  1364.     0x0,0x2,    0x0,0x2,    0x0,0x1,    0x0,0x0,
  1365.     0x0,0x3,    0x0,0x3,    0x0,0x3,    0x0,0x0,
  1366.     0x0,0x2,    0x0,0x2,    0x0,0x1,    0x0,0x0,
  1367.     0x3,0x3,    0x3,0x0,    0x3,0x1,    0x3,0x1,
  1368.     0x3,0x2,    0x3,0x2,    0x3,0x1,    0x3,0x0,
  1369.     0x3,0x3,    0x3,0x3,    0x3,0x3,    0x3,0x0,
  1370.     0x3,0x2,    0x3,0x2,    0x3,0x1,    0x3,0x0,
  1371.     0x3,0x3,    0x3,0x0,    0x3,0x1,    0x3,0x1,
  1372.     0x3,0x2,    0x3,0x2,    0x3,0x1,    0x3,0x0,
  1373.     0x3,0x3,    0x3,0x3,    0x3,0x3,    0x3,0x0,
  1374.     0x3,0x2,    0x3,0x2,    0x3,0x1,    0x3,0x0,
  1375.     0x3,0x3,    0x3,0x0,    0x3,0x1,    0x3,0x1,
  1376.     0x3,0x2,    0x3,0x2,    0x3,0x1,    0x3,0x0,
  1377.     0x3,0x3,    0x3,0x3,    0x3,0x3,    0x3,0x0,
  1378.     0x3,0x2,    0x3,0x2,    0x3,0x1,    0x3,0x0,
  1379.     0x0,0x3,    0x0,0x0,    0x0,0x1,    0x0,0x1,
  1380.     0x0,0x2,    0x0,0x2,    0x0,0x1,    0x0,0x0,
  1381.     0x0,0x3,    0x0,0x3,    0x0,0x3,    0x0,0x0,
  1382.     0x0,0x2,    0x0,0x2,    0x0,0x1,    0x0,0x0,
  1383.     0x2,0x3,    0x2,0x0,    0x2,0x1,    0x2,0x1,
  1384.     0x2,0x2,    0x2,0x2,    0x2,0x1,    0x2,0x0,
  1385.     0x2,0x3,    0x2,0x3,    0x2,0x3,    0x2,0x0,
  1386.     0x2,0x2,    0x2,0x2,    0x2,0x1,    0x2,0x0,
  1387.     0x2,0x3,    0x2,0x0,    0x2,0x1,    0x2,0x1,
  1388.     0x2,0x2,    0x2,0x2,    0x2,0x1,    0x2,0x0,
  1389.     0x2,0x3,    0x2,0x3,    0x2,0x3,    0x2,0x0,
  1390.     0x2,0x2,    0x2,0x2,    0x2,0x1,    0x2,0x0,
  1391.     0x1,0x3,    0x1,0x0,    0x1,0x1,    0x1,0x1,
  1392.     0x1,0x2,    0x1,0x2,    0x1,0x1,    0x1,0x0,
  1393.     0x1,0x3,    0x1,0x3,    0x1,0x3,    0x1,0x0,
  1394.     0x1,0x2,    0x1,0x2,    0x1,0x1,    0x1,0x0,
  1395.     0x0,0x3,    0x0,0x0,    0x0,0x1,    0x0,0x1,
  1396.     0x0,0x2,    0x0,0x2,    0x0,0x1,    0x0,0x0,
  1397.     0x0,0x3,    0x0,0x3,    0x0,0x3,    0x0,0x0,
  1398.     0x0,0x2,    0x0,0x2,    0x0,0x1,    0x0,0x0
  1399. };
  1400. // NCBI4na to NCBI8na (NCBI4na_expand)
  1401. /*
  1402.     for ( base[0] = 0; base[0] < 16; ++base[0] ) {
  1403.         for ( base[1] = 0; base[1] < 16; ++base[1] ) {
  1404.             Uint1 index = (base[0] << 4) | base[1];
  1405.             for( int i = 0; i < 2; ++i ) {
  1406.                 sm_Table[index * 2 + i] = base[i];
  1407.             }
  1408.         }
  1409.     }
  1410. */
  1411. const Uint1 C4naTo8na::scm_Table[512] = {
  1412.     0x0,0x0,    0x0,0x1,    0x0,0x2,    0x0,0x3,
  1413.     0x0,0x4,    0x0,0x5,    0x0,0x6,    0x0,0x7,
  1414.     0x0,0x8,    0x0,0x9,    0x0,0xa,    0x0,0xb,
  1415.     0x0,0xc,    0x0,0xd,    0x0,0xe,    0x0,0xf,
  1416.     0x1,0x0,    0x1,0x1,    0x1,0x2,    0x1,0x3,
  1417.     0x1,0x4,    0x1,0x5,    0x1,0x6,    0x1,0x7,
  1418.     0x1,0x8,    0x1,0x9,    0x1,0xa,    0x1,0xb,
  1419.     0x1,0xc,    0x1,0xd,    0x1,0xe,    0x1,0xf,
  1420.     0x2,0x0,    0x2,0x1,    0x2,0x2,    0x2,0x3,
  1421.     0x2,0x4,    0x2,0x5,    0x2,0x6,    0x2,0x7,
  1422.     0x2,0x8,    0x2,0x9,    0x2,0xa,    0x2,0xb,
  1423.     0x2,0xc,    0x2,0xd,    0x2,0xe,    0x2,0xf,
  1424.     0x3,0x0,    0x3,0x1,    0x3,0x2,    0x3,0x3,
  1425.     0x3,0x4,    0x3,0x5,    0x3,0x6,    0x3,0x7,
  1426.     0x3,0x8,    0x3,0x9,    0x3,0xa,    0x3,0xb,
  1427.     0x3,0xc,    0x3,0xd,    0x3,0xe,    0x3,0xf,
  1428.     0x4,0x0,    0x4,0x1,    0x4,0x2,    0x4,0x3,
  1429.     0x4,0x4,    0x4,0x5,    0x4,0x6,    0x4,0x7,
  1430.     0x4,0x8,    0x4,0x9,    0x4,0xa,    0x4,0xb,
  1431.     0x4,0xc,    0x4,0xd,    0x4,0xe,    0x4,0xf,
  1432.     0x5,0x0,    0x5,0x1,    0x5,0x2,    0x5,0x3,
  1433.     0x5,0x4,    0x5,0x5,    0x5,0x6,    0x5,0x7,
  1434.     0x5,0x8,    0x5,0x9,    0x5,0xa,    0x5,0xb,
  1435.     0x5,0xc,    0x5,0xd,    0x5,0xe,    0x5,0xf,
  1436.     0x6,0x0,    0x6,0x1,    0x6,0x2,    0x6,0x3,
  1437.     0x6,0x4,    0x6,0x5,    0x6,0x6,    0x6,0x7,
  1438.     0x6,0x8,    0x6,0x9,    0x6,0xa,    0x6,0xb,
  1439.     0x6,0xc,    0x6,0xd,    0x6,0xe,    0x6,0xf,
  1440.     0x7,0x0,    0x7,0x1,    0x7,0x2,    0x7,0x3,
  1441.     0x7,0x4,    0x7,0x5,    0x7,0x6,    0x7,0x7,
  1442.     0x7,0x8,    0x7,0x9,    0x7,0xa,    0x7,0xb,
  1443.     0x7,0xc,    0x7,0xd,    0x7,0xe,    0x7,0xf,
  1444.     0x8,0x0,    0x8,0x1,    0x8,0x2,    0x8,0x3,
  1445.     0x8,0x4,    0x8,0x5,    0x8,0x6,    0x8,0x7,
  1446.     0x8,0x8,    0x8,0x9,    0x8,0xa,    0x8,0xb,
  1447.     0x8,0xc,    0x8,0xd,    0x8,0xe,    0x8,0xf,
  1448.     0x9,0x0,    0x9,0x1,    0x9,0x2,    0x9,0x3,
  1449.     0x9,0x4,    0x9,0x5,    0x9,0x6,    0x9,0x7,
  1450.     0x9,0x8,    0x9,0x9,    0x9,0xa,    0x9,0xb,
  1451.     0x9,0xc,    0x9,0xd,    0x9,0xe,    0x9,0xf,
  1452.     0xa,0x0,    0xa,0x1,    0xa,0x2,    0xa,0x3,
  1453.     0xa,0x4,    0xa,0x5,    0xa,0x6,    0xa,0x7,
  1454.     0xa,0x8,    0xa,0x9,    0xa,0xa,    0xa,0xb,
  1455.     0xa,0xc,    0xa,0xd,    0xa,0xe,    0xa,0xf,
  1456.     0xb,0x0,    0xb,0x1,    0xb,0x2,    0xb,0x3,