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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: blast_options_cxx.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 18:05:43  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.44
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: blast_options_cxx.cpp,v 1000.2 2004/06/01 18:05:43 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. * Author:  Christiam Camacho
  35. *
  36. * File Description:
  37. *   Class to encapsulate all NewBlast options
  38. *
  39. * ===========================================================================
  40. */
  41. /// @file blast_options_cxx.cpp
  42. /// Implements the CBlastOptions class, which encapsulates options structures
  43. /// from algo/blast/core
  44. #include <ncbi_pch.hpp>
  45. #include <algo/blast/api/blast_options.hpp>
  46. #include "blast_setup.hpp"
  47. #include <algo/blast/core/blast_extend.h>
  48. #include <objects/seqloc/Seq_loc.hpp>
  49. #include <objects/blast/Blast4_cutoff.hpp>
  50. /** @addtogroup AlgoBlast
  51.  *
  52.  * @{
  53.  */
  54. BEGIN_NCBI_SCOPE
  55. USING_SCOPE(objects);
  56. BEGIN_SCOPE(blast)
  57. CBlastOptions::CBlastOptions(EAPILocality locality)
  58.     : m_Local (0),
  59.       m_Remote(0)
  60. {
  61.     if (locality != eRemote) {
  62.         m_Local = new CBlastOptionsLocal();
  63.     }
  64.     if (locality != eLocal) {
  65.         m_Remote = new CBlastOptionsRemote();
  66.     }
  67. }
  68. CBlastOptions::~CBlastOptions()
  69. {
  70.     if (m_Local) {
  71.         delete m_Local;
  72.     }
  73.     if (m_Remote) {
  74.         delete m_Remote;
  75.     }
  76. }
  77. // Note: only some of the options are supported for the remote case;
  78. // for now, I will throw a string exception if the option is not
  79. // available.
  80. int xyz_throwing = 0;
  81. void CBlastOptionsRemote::SetValue(EBlastOptIdx opt, const EProgram & v)
  82. {
  83.     switch(opt) {
  84.     case eBlastOpt_Program:
  85.         return;
  86.         
  87.     default:
  88.         break;
  89.     }
  90.     
  91.     char errbuf[1024];
  92.     
  93.     sprintf(errbuf, "tried to set option (%d) and value (%d), line (%d).",
  94.             int(opt), v, __LINE__);
  95.     
  96.     if (xyz_throwing)
  97.         x_Throwx(string("err:") + errbuf);
  98.     else
  99.         cout << "** WOULDA THROWN: " << errbuf << endl;
  100. }
  101. void CBlastOptionsRemote::SetValue(EBlastOptIdx opt, const int & v)
  102. {
  103.     switch(opt) {
  104.     case eBlastOpt_WordSize:
  105.         x_SetParam("WordSize", v);
  106.         return;
  107.         
  108.     case eBlastOpt_StrandOption:
  109.         {
  110.             typedef objects::EBlast4_strand_type TSType;
  111.             TSType strand;
  112.             bool set_strand = true;
  113.             
  114.             switch(v) {
  115.             case 1:
  116.                 strand = eBlast4_strand_type_forward_strand;
  117.                 break;
  118.                 
  119.             case 2:
  120.                 strand = eBlast4_strand_type_reverse_strand;
  121.                 break;
  122.                 
  123.             case 3:
  124.                 strand = eBlast4_strand_type_both_strands;
  125.                 break;
  126.                 
  127.             default:
  128.                 set_strand = false;
  129.             }
  130.             
  131.             if (set_strand) {
  132.                 x_SetParam("StrandOption", strand);
  133.                 return;
  134.             }
  135.         }
  136.         
  137.     case eBlastOpt_WindowSize:
  138.         x_SetParam("WindowSize", v);
  139.         return;
  140.         
  141.     case eBlastOpt_GapOpeningCost:
  142.         x_SetParam("GapOpeningCost", v);
  143.         return;
  144.         
  145.     case eBlastOpt_GapExtensionCost:
  146.         x_SetParam("GapExtensionCost", v);
  147.         return;
  148.         
  149.     case eBlastOpt_HitlistSize:
  150.         x_SetParam("HitlistSize", v);
  151.         return;
  152.         
  153.     case eBlastOpt_PrelimHitlistSize:
  154.         x_SetParam("PrelimHitlistSize", v);
  155.         return;
  156.         
  157.     case eBlastOpt_CutoffScore:
  158.         if (0) {
  159.             typedef objects::CBlast4_cutoff TCutoff;
  160.             CRef<TCutoff> cutoff(new TCutoff);
  161.             cutoff->SetRaw_score(v);
  162.             
  163.             x_SetParam("CutoffScore", cutoff);
  164.         }
  165.         return;
  166.         
  167.     case eBlastOpt_MatchReward:
  168.         x_SetParam("MatchReward", v);
  169.         return;
  170.         
  171.     case eBlastOpt_MismatchPenalty:
  172.         x_SetParam("MismatchPenalty", v);
  173.         return;
  174.     case eBlastOpt_WordThreshold:
  175.         x_SetParam("WordThreshold", v);
  176.         return;
  177.         
  178.     default:
  179.         break;
  180.     }
  181.     
  182.     char errbuf[1024];
  183.     
  184.     sprintf(errbuf, "tried to set option (%d) and value (%d), line (%d).",
  185.             int(opt), v, __LINE__);
  186.     
  187.     if (xyz_throwing)
  188.         x_Throwx(string("err:") + errbuf);
  189.     else
  190.         cout << "** WOULDA THROWN: " << errbuf << endl;
  191. }
  192. void CBlastOptionsRemote::SetValue(EBlastOptIdx opt, const double & v)
  193. {
  194.     switch(opt) {
  195.     case eBlastOpt_EvalueThreshold:
  196.         {
  197.             typedef objects::CBlast4_cutoff TCutoff;
  198.             CRef<TCutoff> cutoff(new TCutoff);
  199.             cutoff->SetE_value(v);
  200.             
  201.             x_SetParam("EvalueThreshold", cutoff);
  202.         }
  203.         return;
  204.         
  205.     case eBlastOpt_PercentIdentity:
  206.         x_SetParam("PercentIdentity", v);
  207.         return;
  208.         
  209.     default:
  210.         break;
  211.     }
  212.     
  213.     char errbuf[1024];
  214.     
  215.     sprintf(errbuf, "tried to set option (%d) and value (%f), line (%d).",
  216.             int(opt), v, __LINE__);
  217.     
  218.     if (xyz_throwing)
  219.         x_Throwx(string("err:") + errbuf);
  220.     else
  221.         cout << "** WOULDA THROWN: " << errbuf << endl;
  222. }
  223. void CBlastOptionsRemote::SetValue(EBlastOptIdx opt, const char * v)
  224. {
  225.     switch(opt) {
  226.     case eBlastOpt_FilterString:
  227.         x_SetParam("FilterString", v);
  228.         return;
  229.         
  230.     case eBlastOpt_MatrixName:
  231.         x_SetParam("MatrixName", v);
  232.         return;
  233.         
  234.     default:
  235.         break;
  236.     }
  237.     
  238.     char errbuf[1024];
  239.     
  240.     sprintf(errbuf, "tried to set option (%d) and value (%.20s), line (%d).",
  241.             int(opt), v, __LINE__);
  242.     
  243.     if (xyz_throwing)
  244.         x_Throwx(string("err:") + errbuf);
  245.     else
  246.         cout << "** WOULDA THROWN: " << errbuf << endl;
  247. }
  248. void CBlastOptionsRemote::SetValue(EBlastOptIdx opt, const TSeqLocVector & v)
  249. {
  250.     char errbuf[1024];
  251.     
  252.     sprintf(errbuf, "tried to set option (%d) and TSeqLocVector (size %d), line (%d).",
  253.             int(opt), v.size(), __LINE__);
  254.     
  255.     x_Throwx(string("err:") + errbuf);
  256. }
  257. void CBlastOptionsRemote::SetValue(EBlastOptIdx opt, const SeedContainerType & v)
  258. {
  259.     char errbuf[1024];
  260.     
  261.     sprintf(errbuf, "tried to set option (%d) and value (%d), line (%d).",
  262.             int(opt), v, __LINE__);
  263.     
  264.     if (xyz_throwing)
  265.         x_Throwx(string("err:") + errbuf);
  266.     else
  267.         cout << "** WOULDA THROWN: " << errbuf << endl;
  268. }
  269. void CBlastOptionsRemote::SetValue(EBlastOptIdx opt, const SeedExtensionMethod & v)
  270. {
  271.     char errbuf[1024];
  272.     
  273.     sprintf(errbuf, "tried to set option (%d) and value (%d), line (%d).",
  274.             int(opt), v, __LINE__);
  275.     
  276.     if (xyz_throwing)
  277.         x_Throwx(string("err:") + errbuf);
  278.     else
  279.         cout << "** WOULDA THROWN: " << errbuf << endl;
  280. }
  281. void CBlastOptionsRemote::SetValue(EBlastOptIdx opt, const bool & v)
  282. {
  283.     switch(opt) {
  284.     case eBlastOpt_GappedMode:
  285.         {
  286.             bool ungapped = ! v;
  287.             x_SetParam("UngappedMode", ungapped); // inverted
  288.             return;
  289.         }
  290.         
  291.     case eBlastOpt_OutOfFrameMode:
  292.         x_SetParam("OutOfFrameMode", v);
  293.         return;
  294.         
  295.     case eBlastOpt_UseRealDbSize:
  296.         x_SetParam("UseRealDbSize", v);
  297.         return;
  298.         
  299.     case eBlastOpt_SkipTraceback:
  300.         x_SetParam("SkipTraceback", v);
  301.         return;
  302.         
  303.     default:
  304.         break;
  305.     }
  306.     
  307.     char errbuf[1024];
  308.     
  309.     sprintf(errbuf, "tried to set option (%d) and value (%s), line (%d).",
  310.             int(opt), (v ? "true" : "false"), __LINE__);
  311.     
  312.     if (xyz_throwing)
  313.         x_Throwx(string("err:") + errbuf);
  314.     else
  315.         cout << "** WOULDA THROWN: " << errbuf << endl;
  316. }
  317. void CBlastOptionsRemote::SetValue(EBlastOptIdx opt, const Int8 & v)
  318. {
  319.     switch(opt) {
  320.     case eBlastOpt_EffectiveSearchSpace:
  321.         x_SetParam("EffectiveSearchSpace", v);
  322.         return;
  323.         
  324.     default:
  325.         break;
  326.     }
  327.     
  328.     char errbuf[1024];
  329.     
  330.     sprintf(errbuf, "tried to set option (%d) and value (%f), line (%d).",
  331.             int(opt), double(v), __LINE__);
  332.     
  333.     if (xyz_throwing)
  334.         x_Throwx(string("err:") + errbuf);
  335.     else
  336.         cout << "** WOULDA THROWN: " << errbuf << endl;
  337. }
  338. CBlastOptionsLocal::CBlastOptionsLocal()
  339. {
  340.     m_QueryOpts.Reset((QuerySetUpOptions*)calloc(1, sizeof(QuerySetUpOptions)));
  341.     m_InitWordOpts.Reset((BlastInitialWordOptions*)calloc(1, sizeof(BlastInitialWordOptions)));
  342.     m_LutOpts.Reset((LookupTableOptions*)calloc(1, sizeof(LookupTableOptions)));
  343.     m_ExtnOpts.Reset((BlastExtensionOptions*)calloc(1, sizeof(BlastExtensionOptions)));
  344.     m_HitSaveOpts.Reset((BlastHitSavingOptions*)calloc(1, sizeof(BlastHitSavingOptions)));
  345.     m_ScoringOpts.Reset((BlastScoringOptions*)calloc(1, sizeof(BlastScoringOptions)));
  346.     m_EffLenOpts.reset((BlastEffectiveLengthsOptions*)calloc(1, sizeof(BlastEffectiveLengthsOptions)));
  347.     m_DbOpts.Reset((BlastDatabaseOptions*)calloc(1, sizeof(BlastDatabaseOptions)));
  348.     m_PSIBlastOpts.Reset((PSIBlastOptions*)calloc(1, sizeof(PSIBlastOptions)));
  349. }
  350. CBlastOptionsLocal::~CBlastOptionsLocal()
  351. {
  352. }
  353. #define GENCODE_STRLEN 64
  354. void 
  355. CBlastOptionsLocal::SetDbGeneticCode(int gc)
  356. {
  357.     m_DbOpts->genetic_code = gc;
  358.     if (m_DbOpts->gen_code_string) 
  359.         sfree(m_DbOpts->gen_code_string);
  360.     m_DbOpts->gen_code_string = (Uint1*)
  361.         BlastMemDup(FindGeneticCode(gc).get(), GENCODE_STRLEN);
  362. }
  363. bool
  364. CBlastOptionsLocal::Validate() const
  365. {
  366.     Blast_Message* blmsg = NULL;
  367.     string msg;
  368.     if (BlastScoringOptionsValidate(m_Program, m_ScoringOpts, &blmsg)) {
  369.         msg = blmsg ? blmsg->message : "Scoring options validation failed";
  370.     }
  371.     if (LookupTableOptionsValidate(m_Program, m_LutOpts, &blmsg)) {
  372.         msg = blmsg ? blmsg->message : "Lookup table options validation failed";
  373.     }
  374.     if (BlastHitSavingOptionsValidate(m_Program, m_HitSaveOpts, &blmsg)) {
  375.         msg = blmsg ? blmsg->message : "Hit saving options validation failed";
  376.     }
  377.     if (BlastExtensionOptionsValidate(m_Program, m_ExtnOpts, &blmsg)) {
  378.         msg = blmsg ? blmsg->message : "Extension options validation failed";
  379.     }
  380.     Blast_MessageFree(blmsg);
  381.     if (msg != NcbiEmptyString)
  382.         NCBI_THROW(CBlastException, eBadParameter, msg.c_str());
  383.     return true;
  384. }
  385. void
  386. CBlastOptionsLocal::DebugDump(CDebugDumpContext ddc, unsigned int depth) const
  387. {
  388.     ddc.SetFrame("CBlastOptions");
  389.     DebugDumpValue(ddc,"m_Program", m_Program);
  390.     m_QueryOpts.DebugDump(ddc, depth);
  391.     m_LutOpts.DebugDump(ddc, depth);
  392.     m_InitWordOpts.DebugDump(ddc, depth);
  393.     m_ExtnOpts.DebugDump(ddc, depth);
  394.     m_HitSaveOpts.DebugDump(ddc, depth);
  395.     m_PSIBlastOpts.DebugDump(ddc, depth);
  396.     m_DbOpts.DebugDump(ddc, depth);
  397.     m_ScoringOpts.DebugDump(ddc, depth);
  398.     //m_EffLenOpts.DebugDump(ddc, depth);
  399. }
  400. inline int
  401. x_safe_strcmp(const char* a, const char* b)
  402. {
  403.     if (a != b) {
  404.         if (a != NULL && b != NULL) {
  405.             return strcmp(a,b);
  406.         } else {
  407.             return 1;
  408.         }
  409.     }
  410.     return 0;
  411. }
  412. inline int
  413. x_safe_memcmp(const void* a, const void* b, size_t size)
  414. {
  415.     if (a != b) {
  416.         if (a != NULL && b != NULL) {
  417.             return memcmp(a, b, size);
  418.         } else {
  419.             return 1;
  420.         }
  421.     }
  422.     return 0;
  423. }
  424. bool
  425. x_QuerySetupOptions_cmp(const QuerySetUpOptions* a, const QuerySetUpOptions* b)
  426. {
  427.     if (x_safe_strcmp(a->filter_string, b->filter_string) != 0) {
  428.         return false;
  429.     }
  430.     if (a->strand_option != b->strand_option) return false;
  431.     if (a->genetic_code != b->genetic_code) return false;
  432.     return true;
  433. }
  434. bool
  435. x_LookupTableOptions_cmp(const LookupTableOptions* a, 
  436.                          const LookupTableOptions* b)
  437. {
  438.     if (a->threshold != b->threshold) return false;
  439.     if (a->lut_type != b->lut_type) return false;
  440.     if (a->word_size != b->word_size) return false;
  441.     if (a->alphabet_size != b->alphabet_size) return false;
  442.     if (a->mb_template_length != b->mb_template_length) return false;
  443.     if (a->mb_template_type != b->mb_template_type) return false;
  444.     if (a->scan_step != b->scan_step) return false;
  445.     if (a->max_num_patterns != b->max_num_patterns) return false;
  446.     if (a->use_pssm != b->use_pssm) return false;
  447.     if (x_safe_strcmp(a->phi_pattern, b->phi_pattern) != 0) return false;
  448.     return true;
  449. }
  450. bool
  451. x_BlastDatabaseOptions_cmp(const BlastDatabaseOptions* a,
  452.                            const BlastDatabaseOptions* b)
  453. {
  454.     if (a->genetic_code != b->genetic_code) return false;
  455.     if (x_safe_memcmp((void*)a->gen_code_string, 
  456.                       (void*)b->gen_code_string, GENCODE_STRLEN) != 0)
  457.         return false;
  458.     return true;
  459. }
  460. bool
  461. x_BlastScoringOptions_cmp(const BlastScoringOptions* a,
  462.                           const BlastScoringOptions* b)
  463. {
  464.     if (x_safe_strcmp(a->matrix, b->matrix) != 0) return false;
  465.     if (x_safe_strcmp(a->matrix_path, b->matrix_path) != 0) return false;
  466.     if (a->reward != b->reward) return false;
  467.     if (a->penalty != b->penalty) return false;
  468.     if (a->gapped_calculation != b->gapped_calculation) return false;
  469.     if (a->gap_open != b->gap_open) return false;
  470.     if (a->gap_extend != b->gap_extend) return false;
  471.     if (a->decline_align != b->decline_align) return false;
  472.     if (a->is_ooframe != b->is_ooframe) return false;
  473.     if (a->shift_pen != b->shift_pen) return false;
  474.     return true;
  475. }
  476. bool
  477. CBlastOptionsLocal::operator==(const CBlastOptionsLocal& rhs) const
  478. {
  479.     if (this == &rhs)
  480.         return true;
  481.     if (m_Program != rhs.m_Program)
  482.         return false;
  483.     if ( !x_QuerySetupOptions_cmp(m_QueryOpts, rhs.m_QueryOpts) )
  484.         return false;
  485.     if ( !x_LookupTableOptions_cmp(m_LutOpts, rhs.m_LutOpts) )
  486.         return false;
  487.     void *a, *b;
  488.     a = static_cast<void*>( (BlastInitialWordOptions*) m_InitWordOpts);
  489.     b = static_cast<void*>( (BlastInitialWordOptions*) rhs.m_InitWordOpts);
  490.     if ( x_safe_memcmp(a, b, sizeof(BlastInitialWordOptions)) != 0 )
  491.          return false;
  492.     a = static_cast<void*>( (BlastExtensionOptions*) m_ExtnOpts);
  493.     b = static_cast<void*>( (BlastExtensionOptions*) rhs.m_ExtnOpts);
  494.     if ( x_safe_memcmp(a, b, sizeof(BlastExtensionOptions)) != 0 )
  495.          return false;
  496.     a = static_cast<void*>( (BlastHitSavingOptions*) m_HitSaveOpts);
  497.     b = static_cast<void*>( (BlastHitSavingOptions*) rhs.m_HitSaveOpts);
  498.     if ( x_safe_memcmp(a, b, sizeof(BlastHitSavingOptions)) != 0 )
  499.          return false;
  500.     a = static_cast<void*>( (PSIBlastOptions*) m_PSIBlastOpts);
  501.     b = static_cast<void*>( (PSIBlastOptions*) rhs.m_PSIBlastOpts);
  502.     if ( x_safe_memcmp(a, b, sizeof(PSIBlastOptions)) != 0 )
  503.          return false;
  504.     if ( !x_BlastDatabaseOptions_cmp(m_DbOpts, rhs.m_DbOpts) )
  505.         return false;
  506.     if ( !x_BlastScoringOptions_cmp(m_ScoringOpts, rhs.m_ScoringOpts) )
  507.         return false;
  508.     
  509.     a = static_cast<void*>( (BlastEffectiveLengthsOptions*)
  510.                             m_EffLenOpts.get());
  511.     b = static_cast<void*>( (BlastEffectiveLengthsOptions*)
  512.                             rhs.m_EffLenOpts.get());
  513.     if ( x_safe_memcmp(a, b, sizeof(BlastEffectiveLengthsOptions)) != 0 )
  514.          return false;
  515.     
  516.     return true;
  517. }
  518. bool
  519. CBlastOptionsLocal::operator!=(const CBlastOptionsLocal& rhs) const
  520. {
  521.     return !(*this== rhs);
  522. }
  523. bool
  524. CBlastOptions::operator==(const CBlastOptions& rhs) const
  525. {
  526.     if (m_Local && rhs.m_Local) {
  527.         return (*m_Local == *rhs.m_Local);
  528.     } else {
  529.         NCBI_THROW(CBlastException, eInternal, 
  530.                    "Equality operator unsupported for arguments");
  531.     }
  532. }
  533. bool
  534. CBlastOptions::operator!=(const CBlastOptions& rhs) const
  535. {
  536.     return !(*this == rhs);
  537. }
  538. END_SCOPE(blast)
  539. END_NCBI_SCOPE
  540. /* @} */
  541. /*
  542. * ===========================================================================
  543. *
  544. * $Log: blast_options_cxx.cpp,v $
  545. * Revision 1000.2  2004/06/01 18:05:43  gouriano
  546. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.44
  547. *
  548. * Revision 1.44  2004/05/21 21:41:02  gorelenk
  549. * Added PCH ncbi_pch.hpp
  550. *
  551. * Revision 1.43  2004/05/17 18:12:29  bealer
  552. * - Add PSI-Blast support.
  553. *
  554. * Revision 1.42  2004/05/17 15:31:31  madden
  555. * Removed unneeded blast_gapalign.h include
  556. *
  557. * Revision 1.41  2004/03/24 22:12:46  dondosha
  558. * Fixed memory leaks
  559. *
  560. * Revision 1.40  2004/03/19 19:22:55  camacho
  561. * Move to doxygen group AlgoBlast, add missing CVS logs at EOF
  562. *
  563. * Revision 1.39  2004/02/17 23:53:31  dondosha
  564. * Added setting of preliminary hitlist size
  565. *
  566. * Revision 1.38  2004/02/04 22:33:36  bealer
  567. * - Add 'noop' default cases to eliminate compiler warnings.
  568. *
  569. * Revision 1.37  2004/01/20 17:53:01  bealer
  570. * - Add SkipTraceback option.
  571. *
  572. * Revision 1.36  2004/01/20 17:06:50  camacho
  573. * Made operator== a member function
  574. *
  575. * Revision 1.35  2004/01/20 15:59:40  camacho
  576. * Added missing implementations of overloaded operators
  577. *
  578. * Revision 1.34  2004/01/17 00:52:32  ucko
  579. * Remove redundant default argument specification.
  580. *
  581. * Revision 1.33  2004/01/16 21:49:26  bealer
  582. * - Add locality flag for Blast4 API
  583. *
  584. * Revision 1.32  2003/12/04 18:35:33  dondosha
  585. * Correction in assigning the genetic code string option
  586. *
  587. * Revision 1.31  2003/12/03 16:41:16  dondosha
  588. * Added SetDbGeneticCode implementation, to set both integer and string
  589. *
  590. * Revision 1.30  2003/11/26 19:37:59  camacho
  591. * Fix windows problem with std::memcmp
  592. *
  593. * Revision 1.29  2003/11/26 18:36:45  camacho
  594. * Renaming blast_option*pp -> blast_options*pp
  595. *
  596. * Revision 1.28  2003/11/26 18:23:59  camacho
  597. * +Blast Option Handle classes
  598. *
  599. * Revision 1.27  2003/10/30 19:37:36  dondosha
  600. * Removed extra stuff accidentally committed
  601. *
  602. * Revision 1.26  2003/10/30 19:34:53  dondosha
  603. * Removed gapped_calculation from BlastHitSavingOptions structure
  604. *
  605. * Revision 1.25  2003/10/21 22:15:33  camacho
  606. * Rearranging of C options structures, fix seed extension method
  607. *
  608. * Revision 1.24  2003/10/21 09:41:14  camacho
  609. * Initialize variable_wordsize for eBlastn
  610. *
  611. * Revision 1.23  2003/10/17 18:21:53  dondosha
  612. * Use separate variables for different initial word extension options
  613. *
  614. * Revision 1.22  2003/10/02 22:10:46  dondosha
  615. * Corrections for one-strand translated searches
  616. *
  617. * Revision 1.21  2003/09/11 17:45:03  camacho
  618. * Changed CBlastOption -> CBlastOptions
  619. *
  620. * Revision 1.20  2003/09/09 22:13:36  dondosha
  621. * Added SetDbGeneticCodeAndStr method to set both integer and string genetic code in one call
  622. *
  623. * Revision 1.19  2003/09/09 12:57:15  camacho
  624. * + internal setup functions, use smart pointers to handle memory mgmt
  625. *
  626. * Revision 1.18  2003/09/03 19:36:27  camacho
  627. * Fix include path for blast_setup.hpp
  628. *
  629. * Revision 1.17  2003/09/03 18:45:34  camacho
  630. * Fixed small memory leak, removed unneeded function
  631. *
  632. * Revision 1.16  2003/09/02 21:15:11  camacho
  633. * Fix small memory leak
  634. *
  635. * Revision 1.15  2003/08/27 15:05:56  camacho
  636. * Use symbolic name for alphabet sizes
  637. *
  638. * Revision 1.14  2003/08/21 19:32:08  dondosha
  639. * Call SetDbGeneticCodeStr when creating a database gen. code string, to avoid code duplication
  640. *
  641. * Revision 1.13  2003/08/19 20:28:10  dondosha
  642. * EProgram enum type is no longer part of CBlastOptions class
  643. *
  644. * Revision 1.12  2003/08/19 13:46:13  dicuccio
  645. * Added 'USING_SCOPE(objects)' to .cpp files for ease of reading implementation.
  646. *
  647. * Revision 1.11  2003/08/18 20:58:57  camacho
  648. * Added blast namespace, removed *__.hpp includes
  649. *
  650. * Revision 1.10  2003/08/14 19:07:32  dondosha
  651. * Added BLASTGetEProgram function to convert from Uint1 to enum type
  652. *
  653. * Revision 1.9  2003/08/11 15:17:39  dondosha
  654. * Added algo/blast/core to all #included headers
  655. *
  656. * Revision 1.8  2003/08/08 19:43:07  dicuccio
  657. * Compilation fixes: #include file rearrangement; fixed use of 'list' and
  658. * 'vector' as variable names; fixed missing ostrea<< for __int64
  659. *
  660. * Revision 1.7  2003/08/01 22:34:11  camacho
  661. * Added accessors/mutators/defaults for matrix_path
  662. *
  663. * Revision 1.6  2003/07/31 19:45:33  camacho
  664. * Eliminate Ptr notation
  665. *
  666. * Revision 1.5  2003/07/30 15:00:01  camacho
  667. * Do not use Malloc/MemNew/MemFree
  668. *
  669. * Revision 1.4  2003/07/24 18:24:17  camacho
  670. * Minor
  671. *
  672. * Revision 1.3  2003/07/23 21:29:37  camacho
  673. * Update BlastDatabaseOptions
  674. *
  675. * Revision 1.2  2003/07/15 19:22:04  camacho
  676. * Fix setting of scan step in blastn
  677. *
  678. * Revision 1.1  2003/07/10 18:34:19  camacho
  679. * Initial revision
  680. *
  681. *
  682. * ===========================================================================
  683. */