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

📄 genetic_code_table.hpp

📁 ncbi源码
💻 HPP
字号:
/* * =========================================================================== * PRODUCTION $Log: Genetic_code_table.hpp,v $ * PRODUCTION Revision 1000.0  2003/10/29 21:03:35  gouriano * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.10 * PRODUCTION * =========================================================================== *//* $Id: Genetic_code_table.hpp,v 1000.0 2003/10/29 21:03:35 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:  ....... * * File Description: *   ....... * * Remark: *   This code was originally generated by application DATATOOL *   using specifications from the ASN data definition file *   'seqfeat.asn'. */#ifndef OBJECTS_SEQFEAT_GENETIC_CODE_TABLE_HPP#define OBJECTS_SEQFEAT_GENETIC_CODE_TABLE_HPP// generated includes#include <objects/seqfeat/Genetic_code_table_.hpp>#include <memory> // for auto_ptr<>// generated classesBEGIN_NCBI_SCOPEBEGIN_objects_SCOPE // namespace ncbi::objects::class CGen_code_table_imp;class NCBI_SEQFEAT_EXPORT CGenetic_code_table : public CGenetic_code_table_Base{    typedef CGenetic_code_table_Base Tparent;public:    // constructor    CGenetic_code_table(void);    // destructor    ~CGenetic_code_table(void);private:    // Prohibit copy constructor and assignment operator    CGenetic_code_table(const CGenetic_code_table& value);    CGenetic_code_table& operator=(const CGenetic_code_table& value);};/////////////////// CGenetic_code_table inline methods// constructorinlineCGenetic_code_table::CGenetic_code_table(void){}/////////////////// end of CGenetic_code_table inline methods// genetic code translation table class// the function CCdregion_translate::TranslateCdregion in// <objects/util/sequence.hpp> obtains the sequence under// a coding region feature location and uses CTrans_table// to do the translationclass NCBI_SEQFEAT_EXPORT CTrans_table : public CObject{public:    // constructor    CTrans_table(const CGenetic_code&);    // destructor    ~CTrans_table(void);    // translation finite state machine methods    static int SetCodonState  (unsigned char ch1,                               unsigned char ch2,                               unsigned char ch3);    static int NextCodonState (int state,                               unsigned char ch);    static int RevCompState   (int state);    // lookup of amino acid translated for given codon (state)    char GetCodonResidue (int state) const;    char GetStartResidue (int state) const;    bool IsOrfStart   (int state) const;    bool IsAmbigStart (int state) const;    bool IsAnyStart   (int state) const;    bool IsOrfStop    (int state) const;    bool IsATGStart   (int state) const;    bool IsAltStart   (int state) const;private:    // translation tables common to all genetic codes (single copy)    static int  sm_NextState  [4097];    static int  sm_RvCmpState [4097];    static int  sm_BaseToIdx  [256];    // initialize single copy translation tables    static void x_InitFsaTable (void);    // translation tables specific to each genetic code instance    mutable char  m_AminoAcid [4097];    mutable char  m_OrfStart  [4097];    // initialize genetic code specific translation tables    void x_InitFsaTransl (const string *ncbieaa,                          const string *sncbieaa) const;    friend class CGen_code_table_imp;};// public interface for (single instance) genetic code and translation tablesclass NCBI_SEQFEAT_EXPORT CGen_code_table{public:    // return initialized translation table given genetic code    static const CTrans_table& GetTransTable (int id);    static const CTrans_table& GetTransTable (const CGenetic_code& gc);    // return table of loaded genetic codes for iteration    static const CGenetic_code_table& GetCodeTable (void);    // Get the ncbieaa string for a specific genetic code.    static const string& GetNcbieaa(int id);    static const string& GetNcbieaa(const CGenetic_code& gc);    // Get the sncbieaa string for a specific genetic code    static const string& GetSncbieaa(int id);    static const string& GetSncbieaa(const CGenetic_code& gc);    // Convert the numeric representation of a codon to a base one.    static string IndexToCodon(int index);    // Convert the base representation of a codon to a numeric one.    static int CodonToIndex(char base1, char base2, char base3);    static int CodonToIndex(const string& codon);private:    // this class uses a singleton internally to manage the specifics    // of the genetic code implementation    // these are the variables / functions that control the singleton    static auto_ptr<CGen_code_table_imp> sm_Implementation;    static void                 x_InitImplementation(void);    static CGen_code_table_imp& x_GetImplementation (void);};inlineCGen_code_table_imp& CGen_code_table::x_GetImplementation(void){    if ( !sm_Implementation.get() ) {        x_InitImplementation();    }    return *sm_Implementation;}/////////////////// CTrans_table inline methodsinlineint CTrans_table::SetCodonState (unsigned char ch1,                                 unsigned char ch2,                                 unsigned char ch3){    return (256 * sm_BaseToIdx [(int) ch1] +            16 * sm_BaseToIdx [(int) ch2] +            sm_BaseToIdx [(int) ch3] + 1);}inlineint CTrans_table::NextCodonState (int state,                                  unsigned char ch){    if (state < 0 || state > 4096) return 0;    return (sm_NextState [state] + sm_BaseToIdx [(int) ch]);}inlineint CTrans_table::RevCompState (int state){    if (state < 0 || state > 4096) return 0;    return (sm_RvCmpState [state]);}inlinechar CTrans_table::GetCodonResidue (int state) const{    if (state < 0 || state > 4096) return 0;    return (m_AminoAcid [state]);}inlinechar CTrans_table::GetStartResidue (int state) const{    if (state < 0 || state > 4096) return 0;    return (m_OrfStart [state]);}inlinebool CTrans_table::IsOrfStart (int state) const{    return (GetStartResidue (state) == 'M');}inlinebool CTrans_table::IsAmbigStart (int state) const{    return (GetStartResidue (state) == 'X');}inlinebool CTrans_table::IsAnyStart (int state) const{    return (GetStartResidue (state) != '-');}inlinebool CTrans_table::IsOrfStop (int state) const{    return (GetCodonResidue (state) == '*');}inlinebool CTrans_table::IsATGStart (int state) const{    static const int k_ATG_state = 389; // ATG initiation codon state    return (IsOrfStart (state) && state == k_ATG_state);}inlinebool CTrans_table::IsAltStart (int state) const{    static const int k_ATG_state = 389; // ATG initiation codon state    return (IsOrfStart (state) && state != k_ATG_state);}/////////////////// end of CTrans_table inline methodsEND_objects_SCOPE // namespace ncbi::objects::END_NCBI_SCOPE/** ===========================================================================** $Log: Genetic_code_table.hpp,v $* Revision 1000.0  2003/10/29 21:03:35  gouriano* PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.10** Revision 1.10  2003/06/19 21:49:32  johnson* bug fix: IsOrfStop now calls GetCodonResidue instead of GetStartResidue** Revision 1.9  2003/04/14 19:12:36  ivanov* Added export specifier for class CTrans_table** Revision 1.8  2003/01/03 19:17:30  shomrat* Added Win32 export specifier** Revision 1.7  2002/12/26 12:43:27  dicuccio* Added Win32 export specifiers** Revision 1.6  2002/11/26 18:40:16  shomrat* Add convenience method for codon conversions and ncbieaa string retrieval** Revision 1.5  2002/09/13 00:44:58  ucko* #include <memory> for auto_ptr<> template** Revision 1.4  2002/09/12 19:58:09  kans* CGen_code_table_imp instantiated after type info system (diccucio)** Revision 1.3  2002/09/10 21:30:09  kans* k_ATG_state into two inline functions because MSVC compiler will not allow* a constant inside a class** Revision 1.2  2002/09/10 15:18:08  kans* added GetCodeTable method** Revision 1.1  2002/09/09 20:58:06  kans* added CTrans_table and CGen_code_table classes*** ===========================================================================*/#endif // OBJECTS_SEQFEAT_GENETIC_CODE_TABLE_HPP/* Original file checksum: lines: 93, chars: 2557, CRC32: e1e5ca57 */

⌨️ 快捷键说明

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