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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: blast_prot_options.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 18:05:47  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: blast_prot_options.cpp,v 1000.2 2004/06/01 18:05:47 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.  * Authors:  Christiam Camacho
  35.  *
  36.  */
  37. /// @file blast_prot_options.cpp
  38. /// Implements the CBlastProteinOptionsHandle class.
  39. #include <ncbi_pch.hpp>
  40. #include <algo/blast/core/blast_encoding.h>
  41. #include <algo/blast/api/blast_prot_options.hpp>
  42. #include <objects/seqloc/Na_strand.hpp>
  43. #include "blast_setup.hpp"
  44. /** @addtogroup AlgoBlast
  45.  *
  46.  * @{
  47.  */
  48. BEGIN_NCBI_SCOPE
  49. BEGIN_SCOPE(blast)
  50. CBlastProteinOptionsHandle::CBlastProteinOptionsHandle(EAPILocality locality)
  51.     : CBlastOptionsHandle(locality)
  52. {
  53.     SetDefaults();
  54.     m_Opts->SetProgram(eBlastp);
  55. }
  56. void 
  57. CBlastProteinOptionsHandle::SetLookupTableDefaults()
  58. {
  59.     m_Opts->SetLookupTableType(AA_LOOKUP_TABLE);
  60.     SetWordSize(BLAST_WORDSIZE_PROT);
  61.     SetWordThreshold(BLAST_WORD_THRESHOLD_BLASTP);
  62.     SetAlphabetSize(BLASTAA_SIZE);
  63. }
  64. void
  65. CBlastProteinOptionsHandle::SetQueryOptionDefaults()
  66. {
  67.     SetFilterString("S");
  68.     m_Opts->SetStrandOption(objects::eNa_strand_unknown);
  69. }
  70. void
  71. CBlastProteinOptionsHandle::SetInitialWordOptionsDefaults()
  72. {
  73.     SetXDropoff(BLAST_UNGAPPED_X_DROPOFF_PROT);
  74.     SetWindowSize(BLAST_WINDOW_SIZE_PROT);
  75.     // FIXME: extend_word_method is missing
  76.     m_Opts->SetUngappedExtension();
  77. }
  78. void
  79. CBlastProteinOptionsHandle::SetGappedExtensionDefaults()
  80. {
  81.     SetGapXDropoff(BLAST_GAP_X_DROPOFF_PROT);
  82.     SetGapXDropoffFinal(BLAST_GAP_X_DROPOFF_FINAL_PROT);
  83.     SetGapTrigger(BLAST_GAP_TRIGGER_PROT);
  84.     m_Opts->SetGapExtnAlgorithm(eDynProgExt);
  85. }
  86. void
  87. CBlastProteinOptionsHandle::SetScoringOptionsDefaults()
  88. {
  89.     const char * mname = "BLOSUM62";
  90.     SetMatrixName(mname);
  91.     SetMatrixPath(FindMatrixPath(mname, true).c_str());
  92.     SetGapOpeningCost(BLAST_GAP_OPEN_PROT);
  93.     SetGapExtensionCost(BLAST_GAP_EXTN_PROT);
  94.     SetGappedMode();
  95.     // set invalid values for options that are not applicable
  96.     m_Opts->SetOutOfFrameMode(false);
  97.     m_Opts->SetFrameShiftPenalty(INT2_MAX);
  98.     m_Opts->SetDecline2AlignPenalty(INT2_MAX);
  99.     //m_Opts->SetMatchReward(0);
  100.     //m_Opts->SetMismatchPenalty(0);
  101. }
  102. void
  103. CBlastProteinOptionsHandle::SetHitSavingOptionsDefaults()
  104. {
  105.     SetHitlistSize(500);
  106.     SetPrelimHitlistSize(550);
  107.     SetEvalueThreshold(BLAST_EXPECT_VALUE);
  108.     SetPercentIdentity(0);
  109.     m_Opts->SetSumStatisticsMode(false);
  110.     // set some default here, allow INT4MAX to mean infinity
  111.     SetMaxNumHspPerSequence(0); 
  112.     // this is never used... altough it could be calculated
  113.     //SetTotalHspLimit(FIXME);
  114.     SetCutoffScore(0); // will be calculated based on evalue threshold,
  115.     // effective lengths and Karlin-Altschul params in BLAST_Cutoffs_simple
  116.     // and passed to the engine in the params structure
  117.     // not applicable
  118.     m_Opts->SetRequiredStart(0);
  119.     m_Opts->SetRequiredEnd(0);
  120. }
  121. void
  122. CBlastProteinOptionsHandle::SetEffectiveLengthsOptionsDefaults()
  123. {
  124.     SetDbLength(0);
  125.     SetDbSeqNum(1);
  126.     SetEffectiveSearchSpace(0);
  127.     SetUseRealDbSize();
  128. }
  129. void
  130. CBlastProteinOptionsHandle::SetSubjectSequenceOptionsDefaults()
  131. {}
  132. END_SCOPE(blast)
  133. END_NCBI_SCOPE
  134. /* @} */
  135. /*
  136.  * ===========================================================================
  137.  * $Log: blast_prot_options.cpp,v $
  138.  * Revision 1000.2  2004/06/01 18:05:47  gouriano
  139.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9
  140.  *
  141.  * Revision 1.9  2004/05/21 21:41:02  gorelenk
  142.  * Added PCH ncbi_pch.hpp
  143.  *
  144.  * Revision 1.8  2004/05/17 15:32:39  madden
  145.  * Int algorithm_type replaced with enum EBlastPrelimGapExt
  146.  *
  147.  * Revision 1.7  2004/04/07 03:06:15  camacho
  148.  * Added blast_encoding.[hc], refactoring blast_stat.[hc]
  149.  *
  150.  * Revision 1.6  2004/03/19 15:13:34  camacho
  151.  * Move to doxygen group AlgoBlast
  152.  *
  153.  * Revision 1.5  2004/02/18 00:35:48  dondosha
  154.  * Typo fix in previous commit
  155.  *
  156.  * Revision 1.4  2004/02/17 23:53:31  dondosha
  157.  * Added setting of preliminary hitlist size
  158.  *
  159.  * Revision 1.3  2004/01/17 02:38:30  ucko
  160.  * Initialize variables with = rather than () when possible to avoid
  161.  * confusing MSVC's parser.
  162.  *
  163.  * Revision 1.2  2004/01/16 21:49:26  bealer
  164.  * - Add locality flag for Blast4 API
  165.  *
  166.  * Revision 1.1  2003/11/26 18:24:00  camacho
  167.  * +Blast Option Handle classes
  168.  *
  169.  * ===========================================================================
  170.  */