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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: flat_file_config.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/06/01 19:48:19  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef OBJTOOLS_FORMAT___FLAT_FILE_CONFIG__HPP
  10. #define OBJTOOLS_FORMAT___FLAT_FILE_CONFIG__HPP
  11. /*  $Id: flat_file_config.hpp,v 1000.0 2004/06/01 19:48:19 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Authors:  Mati Shomrat, NCBI
  37.  *
  38.  * File Description:
  39.  *    Configuration class for flat-file generator
  40.  */
  41. #include <corelib/ncbistd.hpp>
  42. BEGIN_NCBI_SCOPE
  43. BEGIN_SCOPE(objects)
  44. // --- Flat File configuration class
  45. class NCBI_FORMAT_EXPORT CFlatFileConfig
  46. {
  47. public:
  48.     
  49.     enum EFormat {
  50.         // formatting styles    
  51.         eFormat_GenBank,
  52.         eFormat_EMBL,
  53.         eFormat_DDBJ,
  54.         eFormat_GBSeq,
  55.         eFormat_FTable,
  56.         eFormat_GFF
  57.     };
  58.     enum EMode {
  59.         // determines the tradeoff between strictness and completeness
  60.         eMode_Release = 0, // strict -- for official public releases
  61.         eMode_Entrez,      // somewhat laxer -- for CGIs
  62.         eMode_GBench,      // even laxer -- for editing submissions
  63.         eMode_Dump         // shows everything, regardless of validity
  64.     };
  65.     enum EStyle {
  66.         // determines handling of segmented records
  67.         eStyle_Normal,  // default -- show segments iff they're near
  68.         eStyle_Segment, // always show segments
  69.         eStyle_Master,  // merge segments into a single virtual record
  70.         eStyle_Contig   // just an index of segments -- no actual sequence
  71.     };
  72.     enum EFlags {
  73.         // customization flags
  74.         fDoHTML               = 0x1,
  75.         fShowContigFeatures   = 0x2, // not just source features
  76.         fShowContigSources    = 0x4, // not just focus
  77.         fShowFarTranslations  = 0x8,
  78.         fTranslateIfNoProduct = 0x10,
  79.         fAlwaysTranslateCDS   = 0x20,
  80.         fOnlyNearFeatures     = 0x40,
  81.         fFavorFarFeatures     = 0x80,  // ignore near feats on segs w/far feats
  82.         fCopyCDSFromCDNA      = 0x100, // for gen-prod sets
  83.         fCopyGeneToCDNA       = 0x200, // for gen-prod sets
  84.         fShowContigInMaster   = 0x400,
  85.         fHideImpFeats         = 0x800,
  86.         fHideRemoteImpFeats   = 0x1000,
  87.         fHideSNPFeatures      = 0x2000,
  88.         fHideExonFeatures     = 0x4000,
  89.         fHideIntronFeatures   = 0x8000,
  90.         fHideMiscFeatures     = 0x10000,
  91.         fHideCDSProdFeatures  = 0x20000,
  92.         fHideCDDFeats         = 0x40000,
  93.         fShowTranscript       = 0x80000,
  94.         fShowPeptides         = 0x100000,
  95.         fHideGeneRIFs         = 0x200000,
  96.         fOnlyGeneRIFs         = 0x400000,
  97.         fLatestGeneRIFs       = 0x800000,
  98.         fShowContigAndSeq     = 0x1000000,
  99.         fHideSourceFeats      = 0x2000000,
  100.         fShowFtableRefs       = 0x4000000,
  101.         fOldFeatsOrder        = 0x8000000
  102.     };
  103.     enum EView {
  104.         // determines which Bioseqs in an entry to view
  105.         fViewNucleotides  = 0x1,
  106.         fViewProteins     = 0x2,
  107.         fViewAll          = (fViewNucleotides | fViewNucleotides)
  108.     };
  109.     // types
  110.     typedef EFormat         TFormat;
  111.     typedef EMode           TMode;
  112.     typedef EStyle          TStyle;
  113.     typedef unsigned int    TFlags; // binary OR of "EFlatFileFlags"
  114.     typedef EView           TView;
  115.     // constructors
  116.     CFlatFileConfig(TFormat format = eFormat_GenBank,
  117.                     TMode   mode = eMode_GBench,
  118.                     TStyle  style = eStyle_Normal,
  119.                     TFlags  flags = 0,
  120.                     TView   view = fViewNucleotides);
  121.     // destructor
  122.     ~CFlatFileConfig(void);
  123.     // -- Format
  124.     // getters
  125.     const TFormat& GetFormat(void) const { return m_Format; }
  126.     bool IsFormatGenbank(void) const { return m_Format == eFormat_GenBank; }
  127.     bool IsFormatEMBL   (void) const { return m_Format == eFormat_EMBL;    }
  128.     bool IsFormatDDBJ   (void) const { return m_Format == eFormat_DDBJ;    }
  129.     bool IsFormatGBSeq  (void) const { return m_Format == eFormat_GBSeq;   }
  130.     bool IsFormatFTable (void) const { return m_Format == eFormat_FTable;  }
  131.     bool IsFormatGFF    (void) const { return m_Format == eFormat_GFF;     }
  132.     // setters
  133.     void SetFormat(const TFormat& format) { m_Format = format; }
  134.     void SetFormatGenbank(void) { m_Format = eFormat_GenBank; }
  135.     void SetFormatEMBL   (void) { m_Format = eFormat_EMBL;    }
  136.     void SetFormatDDBJ   (void) { m_Format = eFormat_DDBJ;    }
  137.     void SetFormatGBSeq  (void) { m_Format = eFormat_GBSeq;   }
  138.     void SetFormatFTable (void) { m_Format = eFormat_FTable;  }
  139.     void SetFormatGFF    (void) { m_Format = eFormat_GFF;     }
  140.     // -- Mode
  141.     // getters
  142.     const TMode& GetMode(void) const { return m_Mode; }
  143.     bool IsModeRelease(void) const { return m_Mode == eMode_Release; }
  144.     bool IsModeEntrez (void) const { return m_Mode == eMode_Entrez;  }
  145.     bool IsModeGBench (void) const { return m_Mode == eMode_GBench;  }
  146.     bool IsModeDump   (void) const { return m_Mode == eMode_Dump;    }
  147.     // setters
  148.     void SetMode(const TMode& mode) { m_Mode = mode; }
  149.     void SetModeRelease(void) { m_Mode = eMode_Release; }
  150.     void SetModeEntrez (void) { m_Mode = eMode_Entrez;  }
  151.     void SetModeGBench (void) { m_Mode = eMode_GBench;  }
  152.     void SetModeDump   (void) { m_Mode = eMode_Dump;    }
  153.     // -- Style
  154.     // getters
  155.     const TStyle& GetStyle(void) const { return m_Style; }
  156.     bool IsStyleNormal (void) const { return m_Style == eStyle_Normal;  }
  157.     bool IsStyleSegment(void) const { return m_Style == eStyle_Segment; }
  158.     bool IsStyleMaster (void) const { return m_Style == eStyle_Master;  }
  159.     bool IsStyleContig (void) const { return m_Style == eStyle_Contig;  }
  160.     // setters
  161.     void SetStyle(const TStyle& style) { m_Style = style;  }
  162.     void SetStyleNormal (void) { m_Style = eStyle_Normal;  }
  163.     void SetStyleSegment(void) { m_Style = eStyle_Segment; }
  164.     void SetStyleMaster (void) { m_Style = eStyle_Master;  }
  165.     void SetStyleContig (void) { m_Style = eStyle_Contig;  }
  166.     // -- View
  167.     // getters
  168.     const TView& GetView(void) const { return m_View; }
  169.     bool IsViewNuc (void) const { return (m_View & fViewNucleotides) != 0; }
  170.     bool IsViewProt(void) const { return (m_View & fViewProteins)    != 0; }
  171.     bool IsViewAll (void) const { return IsViewNuc()  &&  IsViewProt();    }
  172.     // setters
  173.     void SetView(const TView& view) { m_View = view; }
  174.     void SetViewNuc (void) { m_View = fViewNucleotides; }
  175.     void SetViewProt(void) { m_View = fViewProteins;    }
  176.     void SetViewAll (void) { m_View = fViewAll;         } 
  177.     // -- Flags
  178.     // getters
  179.     const TFlags& GetFlags(void) const { return m_Flags; }
  180.     // custumizable flags
  181.     bool DoHTML              (void) const;
  182.     bool HideImpFeats        (void) const;
  183.     bool HideSNPFeatures     (void) const;
  184.     bool HideExonFeatures    (void) const;
  185.     bool HideIntronFeatures  (void) const;
  186.     bool HideRemoteImpFeats  (void) const;
  187.     bool HideGeneRIFs        (void) const;
  188.     bool OnlyGeneRIFs        (void) const;
  189.     bool HideCDSProdFeatures (void) const;
  190.     bool HideCDDFeats        (void) const;
  191.     bool LatestGeneRIFs      (void) const;
  192.     bool ShowContigFeatures  (void) const;
  193.     bool ShowContigSources   (void) const;
  194.     bool ShowContigAndSeq    (void) const;
  195.     bool CopyGeneToCDNA      (void) const;
  196.     bool CopyCDSFromCDNA     (void) const;
  197.     bool HideSourceFeats     (void) const;
  198.     bool AlwaysTranslateCDS  (void) const;
  199.     bool ShowFarTranslations (void) const;
  200.     bool TranslateIfNoProduct(void) const;
  201.     bool ShowTranscript      (void) const;
  202.     bool ShowPeptides        (void) const;
  203.     bool ShowFtableRefs      (void) const;
  204.     bool OldFeatsOrder       (void) const;
  205.     // mode dependant flags
  206.     bool SuppressLocalId     (void) const;
  207.     bool ValidateFeats       (void) const;
  208.     bool IgnorePatPubs       (void) const;
  209.     bool DropShortAA         (void) const;
  210.     bool AvoidLocusColl      (void) const;
  211.     bool IupacaaOnly         (void) const;
  212.     bool DropBadCitGens      (void) const;
  213.     bool NoAffilOnUnpub      (void) const;
  214.     bool DropIllegalQuals    (void) const;
  215.     bool CheckQualSyntax     (void) const;
  216.     bool NeedRequiredQuals   (void) const;
  217.     bool NeedOrganismQual    (void) const;
  218.     bool NeedAtLeastOneRef   (void) const;
  219.     bool CitArtIsoJta        (void) const;
  220.     bool DropBadDbxref       (void) const;
  221.     bool UseEmblMolType      (void) const;
  222.     bool HideBankItComment   (void) const;
  223.     bool CheckCDSProductId   (void) const;
  224.     bool SuppressSegLoc      (void) const;
  225.     bool SrcQualsToNote      (void) const;
  226.     bool HideEmptySource     (void) const;
  227.     bool GoQualsToNote       (void) const;
  228.     bool GeneSynsToNote      (void) const;
  229.     bool SelenocysteineToNote(void) const;
  230.     bool ForGBRelease        (void) const;
  231.     bool HideUnclassPartial  (void) const;
  232.     
  233.     // setters
  234.     void SetFlags(const TFlags& flags) { m_Flags = flags; }
  235.     void SetDoHTML              (bool val);
  236.     void SetHideImpFeats        (bool val);
  237.     void SetHideSNPFeatures     (bool val);
  238.     void SetHideExonFeatures    (bool val);
  239.     void SetHideIntronFeatures  (bool val);
  240.     void SetHideRemoteImpFeats  (bool val);
  241.     void SetHideGeneRIFs        (bool val);
  242.     void SetOnlyGeneRIFs        (bool val);
  243.     void SetHideCDSProdFeatures (bool val);
  244.     void SetHideCDDFeats        (bool val);
  245.     void SetLatestGeneRIFs      (bool val);
  246.     void SetShowContigFeatures  (bool val);
  247.     void SetShowContigSources   (bool val);
  248.     void SetShowContigAndSeq    (bool val);
  249.     void SetCopyGeneToCDNA      (bool val);
  250.     void SetCopyCDSFromCDNA     (bool val);
  251.     void SetHideSourceFeats     (bool val);
  252.     void SetAlwaysTranslateCDS  (bool val);
  253.     void SetShowFarTranslations (bool val);
  254.     void SetTranslateIfNoProduct(bool val);
  255.     void SetShowTranscript      (bool val);
  256.     void SetShowPeptides        (bool val);
  257.     void SetShowFtableRefs      (bool val);
  258.     void SetOldFeatsOrder       (bool val);
  259.     void SetHtml                (bool val);
  260. private:
  261.     
  262.     static const bool sm_ModeFlags[4][26];
  263.     // data
  264.     TFormat     m_Format;
  265.     TMode       m_Mode;
  266.     TStyle      m_Style;
  267.     TView       m_View;
  268.     TFlags      m_Flags;
  269. };
  270. /////////////////////////////////////////////////////////////////////////////
  271. // inilne methods
  272. // custom flags
  273. #define CUSTOM_FLAG_GET(x) inline 
  274. bool CFlatFileConfig::x(void) const 
  275.     return (m_Flags & f##x) != 0; 
  276. }
  277. #define CUSTOM_FLAG_SET(x) inline 
  278. void CFlatFileConfig::Set##x(bool val) 
  279.     if ( val ) { 
  280.         m_Flags |= f##x; 
  281.     } else { 
  282.         m_Flags &= ~f##x; 
  283.     } 
  284. }
  285. #define CUSTOM_FLAG_IMP(x) 
  286. CUSTOM_FLAG_GET(x) 
  287. CUSTOM_FLAG_SET(x)
  288. CUSTOM_FLAG_IMP(DoHTML)
  289. CUSTOM_FLAG_IMP(HideImpFeats)
  290. CUSTOM_FLAG_IMP(HideSNPFeatures)
  291. CUSTOM_FLAG_IMP(HideExonFeatures)
  292. CUSTOM_FLAG_IMP(HideIntronFeatures)
  293. CUSTOM_FLAG_IMP(HideRemoteImpFeats)
  294. CUSTOM_FLAG_IMP(HideGeneRIFs)
  295. CUSTOM_FLAG_IMP(OnlyGeneRIFs)
  296. CUSTOM_FLAG_IMP(HideCDSProdFeatures)
  297. CUSTOM_FLAG_IMP(HideCDDFeats)
  298. CUSTOM_FLAG_IMP(LatestGeneRIFs)
  299. CUSTOM_FLAG_IMP(ShowContigFeatures)
  300. CUSTOM_FLAG_IMP(ShowContigSources)
  301. CUSTOM_FLAG_IMP(ShowContigAndSeq)
  302. CUSTOM_FLAG_IMP(CopyGeneToCDNA)
  303. CUSTOM_FLAG_IMP(CopyCDSFromCDNA)
  304. CUSTOM_FLAG_IMP(HideSourceFeats)
  305. CUSTOM_FLAG_IMP(AlwaysTranslateCDS)
  306. CUSTOM_FLAG_IMP(ShowFarTranslations)
  307. CUSTOM_FLAG_IMP(TranslateIfNoProduct)
  308. CUSTOM_FLAG_IMP(ShowTranscript)
  309. CUSTOM_FLAG_IMP(ShowPeptides)
  310. CUSTOM_FLAG_IMP(ShowFtableRefs)
  311. CUSTOM_FLAG_IMP(OldFeatsOrder)
  312. #undef CUSTOM_FLAG_IMP
  313. #undef CUSTOM_FLAG_GET
  314. #undef CUSTOM_FLAG_SET
  315. // end of inline methods
  316. /////////////////////////////////////////////////////////////////////////////
  317. END_SCOPE(objects)
  318. END_NCBI_SCOPE
  319. /*
  320. * ===========================================================================
  321. *
  322. * $Log: flat_file_config.hpp,v $
  323. * Revision 1000.0  2004/06/01 19:48:19  gouriano
  324. * PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.2
  325. *
  326. * Revision 1.2  2004/04/23 14:13:48  gorelenk
  327. * Added missed export prefix to declaration of class CFlatFileConfig.
  328. *
  329. * Revision 1.1  2004/04/22 15:48:36  shomrat
  330. * Initial Revision (adapted from context.hpp)
  331. *
  332. *
  333. * ===========================================================================
  334. */
  335. #endif  /* OBJTOOLS_FORMAT___FLAT_FILE_CONFIG__HPP */