⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sequtil_tables.hpp

📁 ncbi源码
💻 HPP
字号:
/* * =========================================================================== * PRODUCTION $Log: sequtil_tables.hpp,v $ * PRODUCTION Revision 1000.0  2003/10/29 16:03:19  gouriano * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.1 * PRODUCTION * =========================================================================== */#ifndef UTIL_SEQUTIL___SEQUTIL_TABLES__HPP#define UTIL_SEQUTIL___SEQUTIL_TABLES__HPP/*  $Id: sequtil_tables.hpp,v 1000.0 2003/10/29 16:03:19 gouriano Exp $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Author:  Mati Shomrat * * File Description: *   Conversion tables */   #include <corelib/ncbistd.hpp>BEGIN_NCBI_SCOPE///////////////////////////////////////////////////////////////////////////////// Conversion Tables// IUPACna -> ....//===========================================================================// IUPACna to IUPACna// Size: 256 (1 column)// each IUPACna is mapped to itself, lower case letters are mapped// to upper case, U / u are mapped to Tclass CIupacnaToIupacna{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    CIupacnaToIupacna(void);    static const Uint1 scm_Table[256];};// IUPACna to NCBI2na// Size: 1024 (256 rows * 4 columns)class CIupacnaTo2na{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    CIupacnaTo2na(void);    static const Uint1 scm_Table[1024];};// IUPACna to NCBI2na_expand// Size: 256class CIupacnaTo2naExpand{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    CIupacnaTo2naExpand(void);    static const Uint1 scm_Table[256];};// IUPACna to NCBI4na// Size: 512 (256 rown * 2 columns)class CIupacnaTo4na{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    CIupacnaTo4na(void);    static void Init(void);    static const Uint1 scm_Table[512];};// IUPACna to NCBI8na// Size: 256class CIupacnaTo8na{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    CIupacnaTo8na(void);    static const Uint1 scm_Table[256];};// NCBI2na -> ....//===========================================================================// NCBI2na to IUPACna// Size: 1024 (256 rows * 4 columns)class C2naToIupacna{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    C2naToIupacna(void);    static const Uint1    scm_Table[1024];};// NCBI2na to NCBI2na_expand// Size: 1024 (256 rows * 4 columns)class C2naTo2naExpand{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    C2naTo2naExpand(void);    static const Uint1    scm_Table[1024];};// NCBI2na to NCBI4na// We use 2 tables for this conversion; a straight forward table in // the case when the starting position of the conversion (within a // ncbi2na byte) is 0 or 2. this table maps a single ncbi2na byte to// 2 ncbi4na bytes.// a second table is used when the offset is 1 or 3. this table consist // of 3 columns. for a given ncbi2na byte the first column is the mapping of// the lower 2 bits (1st base) in the ncbi2na byte, the second is the // mapping of bases 2 and 3 and the 3rd column is the mapping of the 4th base.class C2naTo4na{public:    static const Uint1* GetTable(bool boundry) {         return boundry ? scm_Table0 : scm_Table1;    }private:    C2naTo4na(void);    static const Uint1    scm_Table0[512];    static const Uint1    scm_Table1[768];};// NCBI2na to NCBI8na (NCBI4na_expand)// each ncbi2na byte is mapped to 4 ncbi8na bytesclass C2naTo8na{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    C2naTo8na(void);    static const Uint1    scm_Table[1024];};// NCBI2na_expand -> ....//===========================================================================// NCBI2na_expand to IUPACna// 0 -> A// 1 -> C// 2 -> G// 3 -> Tclass C2naExpandToIupacna{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    C2naExpandToIupacna(void);    static const Uint1    scm_Table[256];};// NCBI4na -> ....//===========================================================================// NCBI4na to IUPACna// each ncbi4na byte maps to 2 iupacna bytesclass C4naToIupacna{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    C4naToIupacna(void);    static const Uint1    scm_Table[512];};// NCBI4na to NCBI2na// depending on the initial offset 4 bases that are packed in// a single ncbi2na byte might come from either 2 or 3 ncbi4na bytes.// we use 2 different tables to accomodate to 2 cases.// 0  -> 3  (gap -> T)// 1  -> 0  (A -> A)// 2  -> 1  (C -> C)// 3  -> 1  (M -> C)// 4  -> 2  (G -> G)// 5  -> 2  (R -> G)// 6  -> 1  (S -> C)// 7  -> 0  (V -> A)// 8  -> 3  (T -> T)// 9  -> 3  (W -> T)// 10 -> 3  (Y -> T)// 11 -> 0  (H -> A)// 12 -> 2  (K -> G)// 13 -> 2  (D -> G)// 14 -> 1  (B -> C)// 15 -> 0  (N -> A)class C4naTo2na{public:    static const Uint1* GetTable(size_t offset) {        return (offset == 0) ? scm_Table0 : scm_Table1;    }private:    C4naTo2na(void);    static const Uint1    scm_Table0[512];    static const Uint1    scm_Table1[768];};// NCBI4na to NCBI2na_expand// each ncbi4na byte maps to 2 iupacna bytes// gap -> 3 T// A   -> 0 A// C   -> 1 C// M   -> 1 C// G   -> 2 G// R   -> 2 G// S   -> 1 C// V   -> 0 A// T   -> 3 T// W   -> 3 T// Y   -> 3 T// H   -> 0 A// K   -> 2 G// D   -> 2 G// B   -> 1 C// N   -> 0 Aclass C4naTo2naExpand{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    C4naTo2naExpand(void);    static const Uint1    scm_Table[512];};// NCBI4na to NCBI8na (NCBI4na_expand)// expand a single ncbi4na byte to 2 ncbi8na bytesclass C4naTo8na{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    C4naTo8na(void);    static const Uint1    scm_Table[512];};// NCBI8na -> ....//===========================================================================// NCBI8na to IUPACna// map ncbi8na byte to an iupacna one.class C8naToIupacna{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    C8naToIupacna(void);    static const Uint1    scm_Table[256];};// NCBI8na to NCBI2na// map ncbi8na byte to the corresponding ncbi2na 2 bits based on the offset// of the byte in the 4 bytes comprising the single ncbi2na byte.class C8naTo2na{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    C8naTo2na(void);    static const Uint1    scm_Table[1024];};// IUPACaa to NCBIstdaaclass CIupacaaToStdaa{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    CIupacaaToStdaa(void);    static const Uint1    scm_Table[256];};// NCBIeaa to IUPACaaclass CEaaToIupacaa{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    CEaaToIupacaa(void);    static const Uint1    scm_Table[256];};// NCBIeaa to NCBIstdaaclass CEaaToStdaa{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    CEaaToStdaa(void);    static const Uint1    scm_Table[256];};// NCBIstdaa to IUPACaaclass CStdaaToIupacaa{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    CStdaaToIupacaa(void);    static const Uint1    scm_Table[256];};// NCBIstdaa to NCBIeaaclass CStdaaToEaa{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    CStdaaToEaa(void);    static const Uint1    scm_Table[256];};///////////////////////////////////////////////////////////////////////////////// Reverse Tables// NCBI2naclass C2naReverse{public:    static const Uint1* GetTable(size_t offset) { return scm_Tables[offset]; }private:    C2naReverse(void);    static const Uint1    scm_Table3[256];  // offset 3 - byte boundry    static const Uint1    scm_Table2[512];  // offset 2    static const Uint1    scm_Table1[512];  // offset 1    static const Uint1    scm_Table0[512];  // offset 0    static const Uint1*   scm_Tables[4];};// NCBI4naclass C4naReverse{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    C4naReverse(void);    static const Uint1    scm_Table[256];};///////////////////////////////////////////////////////////////////////////////// Complement Tables// IUPACnaclass CIupacnaCmp{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    CIupacnaCmp(void);    static const Uint1    scm_Table[256];};// NCBI2naclass C2naCmp{public:    static const Uint1* GetTable(size_t offset) { return scm_Tables[offset]; }private:    C2naCmp(void);    static const Uint1    scm_Table1[512];    static const Uint1    scm_Table2[512];    static const Uint1    scm_Table3[512];    static const Uint1*   scm_Tables[4];};// NCBI4na// 0  -> 0// 1  -> 8// 2  -> 4// 3  -> 12// 4  -> 2// 5  -> 10// 6  -> 9// 7  -> 14// 8  -> 1// 9  -> 6// 10 -> 5// 11 -> 13// 12 -> 3// 13 -> 11// 14 -> 7// 15 -> 15class C4naCmp{public:    static const Uint1* GetTable(size_t offset) {        return (offset == 0) ? scm_Table0 : scm_Table1;    }private:    C4naCmp(void);    static const Uint1    scm_Table0[256];    static const Uint1    scm_Table1[512];};// NCBI8naclass C8naCmp{public:    static const Uint1* GetTable(void) { return scm_Table; }private:    C8naCmp(void);    static const Uint1    scm_Table[256];};///////////////////////////////////////////////////////////////////////////////// ReverseComplement Tables// NCBI2naclass C2naRevCmp{public:    static const Uint1* GetTable(size_t offset) { return scm_Tables[offset]; }private:    C2naRevCmp(void);    static const Uint1*   scm_Tables[4];    static const Uint1    scm_Table0[512];    static const Uint1    scm_Table1[512];    static const Uint1    scm_Table2[512];    static const Uint1    scm_Table3[256];};class C4naRevCmp{public:    static const Uint1* GetTable(size_t offset) {         return (offset == 0) ? scm_Table0 : scm_Table1;     }private:    C4naRevCmp(void);    static const Uint1*   scm_Tables[4];    static const Uint1    scm_Table0[512];    static const Uint1    scm_Table1[256];};///////////////////////////////////////////////////////////////////////////////// Ambiguity Tables// IUPACnaclass CIupacnaAmbig{public:    static const bool* GetTable(void) { return scm_Table; }private:    CIupacnaAmbig(void);    static const bool    scm_Table[256];};// NCBI4naclass CNcbi4naAmbig{public:    static const bool* GetTable(void) { return scm_Table; }private:    CNcbi4naAmbig(void);    static const bool    scm_Table[256];};// NCBI8naclass CNcbi8naAmbig{public:    static const bool* GetTable(void) { return scm_Table; }private:    CNcbi8naAmbig(void);    static const bool    scm_Table[256];};END_NCBI_SCOPE#endif  /* UTIL_SEQUTIL___SEQUTIL_TABLES__HPP */ /** ===========================================================================** $Log: sequtil_tables.hpp,v $* Revision 1000.0  2003/10/29 16:03:19  gouriano* PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.1** Revision 1.1  2003/10/08 13:36:41  shomrat* Initial version*** ===========================================================================*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -