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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: blast_nucl_options.hpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 18:02:40  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.11
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef ALGO_BLAST_API___BLAST_NUCL_OPTIONS__HPP
  10. #define ALGO_BLAST_API___BLAST_NUCL_OPTIONS__HPP
  11. /*  $Id: blast_nucl_options.hpp,v 1000.2 2004/06/01 18:02:40 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:  Christiam Camacho
  37.  *
  38.  */
  39. /// @file blast_nucl_options.hpp
  40. /// Declares the CBlastNucleotideOptionsHandle class.
  41. #include <algo/blast/api/blast_options_handle.hpp>
  42. /** @addtogroup AlgoBlast
  43.  *
  44.  * @{
  45.  */
  46. BEGIN_NCBI_SCOPE
  47. BEGIN_SCOPE(blast)
  48. /// Handle to the nucleotide-nucleotide options to the BLAST algorithm.
  49. ///
  50. /// Adapter class for nucleotide-nucleotide BLAST comparisons.
  51. /// Exposes an interface to allow manipulation the options that are relevant to
  52. /// this type of search.
  53. /// 
  54. /// NB: By default, traditional megablast defaults are used. If blastn defaults
  55. /// are desired, please call the appropriate member function:
  56. ///
  57. ///    void SetTraditionalBlastnDefaults();
  58. ///    void SetTraditionalMegablastDefaults();
  59. class NCBI_XBLAST_EXPORT CBlastNucleotideOptionsHandle : 
  60.                                             public CBlastOptionsHandle
  61. {
  62. public:
  63.     /// Creates object with default options set
  64.     CBlastNucleotideOptionsHandle(EAPILocality locality = CBlastOptions::eLocal);
  65.     ~CBlastNucleotideOptionsHandle() {}
  66.     virtual void SetDefaults();
  67.     /******************* Lookup table options ***********************/
  68.     int GetLookupTableType() const { return m_Opts->GetLookupTableType(); }
  69.     void SetLookupTableType(int type) { m_Opts->SetLookupTableType(type); }
  70.     unsigned char GetScanStep() const { return m_Opts->GetScanStep(); }
  71.     void SetScanStep(unsigned char step) { m_Opts->SetScanStep(step); }
  72.     short GetWordSize() const { return m_Opts->GetWordSize(); }
  73.     void SetWordSize(short ws) { m_Opts->SetWordSize(ws); }
  74.     /******************* Query setup options ************************/
  75.     objects::ENa_strand GetStrandOption() const { 
  76.         return m_Opts->GetStrandOption();
  77.     }
  78.     void SetStrandOption(objects::ENa_strand strand) {
  79.         m_Opts->SetStrandOption(strand);
  80.     }
  81.     /******************* Initial word options ***********************/
  82.     int GetWindowSize() const { return m_Opts->GetWindowSize(); }
  83.     void SetWindowSize(int ws) { m_Opts->SetWindowSize(ws); }
  84.     SeedContainerType GetSeedContainerType() const {
  85.         return m_Opts->GetSeedContainerType();
  86.     }
  87.     void SetSeedContainerType(SeedContainerType sct) {
  88.         m_Opts->SetSeedContainerType(sct);
  89.     }
  90.     SeedExtensionMethod GetSeedExtensionMethod() const {
  91.         return m_Opts->GetSeedExtensionMethod();
  92.     }
  93.     // Note that the scan step (or stride) is changed as a side effect of
  94.     // calling this method because. This is because the scan step is best
  95.     // calculated for the eRightAndLeft seed extension method and a fixed value
  96.     // is used for the eRight seed extension method.
  97.     void SetSeedExtensionMethod(SeedExtensionMethod sem) {
  98.         switch (sem) {
  99.         case eRight: 
  100.             SetScanStep(COMPRESSION_RATIO);
  101.             break;
  102.         case eRightAndLeft:
  103.         {
  104.             unsigned int s = CalculateBestStride(GetWordSize(), 
  105.                                                  GetVariableWordSize(), 
  106.                                                  GetLookupTableType());
  107.             SetScanStep(s);
  108.             break;
  109.         }
  110.         default:
  111.             abort();
  112.         }
  113.         m_Opts->SetSeedExtensionMethod(sem);
  114.     }
  115.     bool GetVariableWordSize() const { return m_Opts->GetVariableWordSize(); }
  116.     void SetVariableWordSize(bool val = true) { 
  117.         m_Opts->SetVariableWordSize(val); 
  118.     }
  119.     bool GetUngappedExtension() const { return m_Opts->GetUngappedExtension();}
  120.     void SetUngappedExtension(bool val = true) { 
  121.         m_Opts->SetUngappedExtension(val); 
  122.     }
  123.     double GetXDropoff() const { return m_Opts->GetXDropoff(); } 
  124.     void SetXDropoff(double x) { m_Opts->SetXDropoff(x); }
  125.     /******************* Gapped extension options *******************/
  126.     double GetGapXDropoffFinal() const { 
  127.         return m_Opts->GetGapXDropoffFinal(); 
  128.     }
  129.     void SetGapXDropoffFinal(double x) { m_Opts->SetGapXDropoffFinal(x); }
  130.     EBlastPrelimGapExt GetGapExtnAlgorithm() const { return m_Opts->GetGapExtnAlgorithm(); }
  131.     void SetGapExtnAlgorithm(EBlastPrelimGapExt algo) { m_Opts->SetGapExtnAlgorithm(algo); }
  132.     EBlastTbackExt GetGapTracebackAlgorithm() const { return m_Opts->GetGapTracebackAlgorithm(); }
  133.     void SetGapTracebackAlgorithm(EBlastTbackExt algo) { m_Opts->SetGapTracebackAlgorithm(algo); }
  134.     /************************ Scoring options ************************/
  135.     int GetMatchReward() const { return m_Opts->GetMatchReward(); }
  136.     void SetMatchReward(int r) { m_Opts->SetMatchReward(r); }
  137.     int GetMismatchPenalty() const { return m_Opts->GetMismatchPenalty(); }
  138.     void SetMismatchPenalty(int p) { m_Opts->SetMismatchPenalty(p); }
  139.     const char* GetMatrixName() const { return m_Opts->GetMatrixName(); }
  140.     void SetMatrixName(const char* matrix) { m_Opts->SetMatrixName(matrix); }
  141.     const char* GetMatrixPath() const { return m_Opts->GetMatrixPath(); }
  142.     void SetMatrixPath(const char* path) { m_Opts->SetMatrixPath(path); }
  143.     int GetGapOpeningCost() const { return m_Opts->GetGapOpeningCost(); }
  144.     void SetGapOpeningCost(int g) { m_Opts->SetGapOpeningCost(g); }
  145.     int GetGapExtensionCost() const { return m_Opts->GetGapExtensionCost(); }
  146.     void SetGapExtensionCost(int e) { m_Opts->SetGapExtensionCost(e); }
  147.     Int8 GetEffectiveSearchSpace() const { 
  148.         return m_Opts->GetEffectiveSearchSpace(); 
  149.     }
  150.     void SetEffectiveSearchSpace(Int8 eff) {
  151.         m_Opts->SetEffectiveSearchSpace(eff);
  152.     }
  153.     bool GetUseRealDbSize() const { return m_Opts->GetUseRealDbSize(); }
  154.     void SetUseRealDbSize(bool u = true) { m_Opts->SetUseRealDbSize(u); }
  155.     void SetTraditionalBlastnDefaults();
  156.     void SetTraditionalMegablastDefaults();
  157. protected:
  158.     virtual void SetLookupTableDefaults();
  159.     virtual void SetMBLookupTableDefaults();
  160.     virtual void SetQueryOptionDefaults();
  161.     virtual void SetInitialWordOptionsDefaults();
  162.     virtual void SetMBInitialWordOptionsDefaults();
  163.     virtual void SetGappedExtensionDefaults();
  164.     virtual void SetMBGappedExtensionDefaults();
  165.     virtual void SetScoringOptionsDefaults();
  166.     virtual void SetMBScoringOptionsDefaults();
  167.     virtual void SetHitSavingOptionsDefaults();
  168.     virtual void SetEffectiveLengthsOptionsDefaults();
  169.     virtual void SetSubjectSequenceOptionsDefaults();
  170. private:
  171.     CBlastNucleotideOptionsHandle(const CBlastNucleotideOptionsHandle& rhs);
  172.     CBlastNucleotideOptionsHandle& operator=(const CBlastNucleotideOptionsHandle& rhs);
  173. };
  174. END_SCOPE(blast)
  175. END_NCBI_SCOPE
  176. /* @} */
  177. /*
  178.  * ===========================================================================
  179.  * $Log: blast_nucl_options.hpp,v $
  180.  * Revision 1000.2  2004/06/01 18:02:40  gouriano
  181.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.11
  182.  *
  183.  * Revision 1.11  2004/05/18 12:48:24  madden
  184.  * Add setter and getter for GapTracebackAlgorithm (EBlastTbackExt)
  185.  *
  186.  * Revision 1.10  2004/05/17 15:28:54  madden
  187.  * Int algorithm_type replaced with enum EBlastPrelimGapExt
  188.  *
  189.  * Revision 1.9  2004/05/04 13:09:20  camacho
  190.  * Made copy-ctor & assignment operator private
  191.  *
  192.  * Revision 1.8  2004/03/19 14:53:24  camacho
  193.  * Move to doxygen group AlgoBlast
  194.  *
  195.  * Revision 1.7  2004/03/10 14:55:02  madden
  196.  * Added methods for get/set matrix, matrix-path, gap-opening, gap-extension
  197.  *
  198.  * Revision 1.6  2004/02/10 19:48:07  dondosha
  199.  * Added SetMBGappedExtensionDefaults method
  200.  *
  201.  * Revision 1.5  2004/01/16 20:42:59  bealer
  202.  * - Add locality flag for blast options handle classes.
  203.  *
  204.  * Revision 1.4  2003/12/15 23:41:35  dondosha
  205.  * Added [gs]etters of database (subject) length and number of sequences to general options handle
  206.  *
  207.  * Revision 1.3  2003/12/10 18:00:54  camacho
  208.  * Added comment explaining defaults
  209.  *
  210.  * Revision 1.2  2003/12/09 12:40:22  camacho
  211.  * Added windows export specifiers
  212.  *
  213.  * Revision 1.1  2003/11/26 18:22:14  camacho
  214.  * +Blast Option Handle classes
  215.  *
  216.  * ===========================================================================
  217.  */
  218. #endif  /* ALGO_BLAST_API___BLAST_NUCL_OPTIONS__HPP */