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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: blast_engine.h,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 18:03:23  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.38
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: blast_engine.h,v 1000.2 2004/06/01 18:03:23 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:  Ilya Dondoshansky
  35.  *
  36.  */
  37. /** @file blast_engine.h
  38.  * High level BLAST functions
  39.  */
  40. #ifndef __BLAST_ENGINE__
  41. #define __BLAST_ENGINE__
  42. #ifdef __cplusplus
  43. extern "C" {
  44. #endif
  45. #include <algo/blast/core/blast_def.h>
  46. #include <algo/blast/core/blast_extend.h>
  47. #include <algo/blast/core/blast_gapalign.h>
  48. #include <algo/blast/core/blast_hits.h>
  49. #include <algo/blast/core/blast_seqsrc.h>
  50. #include <algo/blast/core/blast_diagnostics.h>   
  51. /** The high level function performing the BLAST search against a BLAST 
  52.  * database after all the setup has been done.
  53.  * @param program_number Type of BLAST program [in]
  54.  * @param query The query sequence [in]
  55.  * @param query_info Additional query information [in]
  56.  * @param bssp Structure containing BLAST database [in]
  57.  * @param sbp Scoring and statistical parameters [in]
  58.  * @param score_options Hit scoring options [in]
  59.  * @param lookup_wrap The lookup table, constructed earlier [in] 
  60.  * @param word_options Options for processing initial word hits [in]
  61.  * @param ext_options Options and parameters for the gapped extension [in]
  62.  * @param hit_options Options for saving the HSPs [in]
  63.  * @param eff_len_options Options for setting effective lengths [in]
  64.  * @param psi_options Options specific to PSI-BLAST [in]
  65.  * @param db_options Options for handling BLAST database [in]
  66.  * @param results Structure holding all saved results [in] [out]
  67.  * @param diagnostics Return statistics containing numbers of hits on 
  68.  *                    different stages of the search [out]
  69.  */
  70. Int4 
  71. BLAST_SearchEngine(Uint1 program_number, 
  72.    BLAST_SequenceBlk* query, BlastQueryInfo* query_info,
  73.    const BlastSeqSrc* bssp, BlastScoreBlk* sbp, 
  74.    const BlastScoringOptions* score_options, 
  75.    LookupTableWrap* lookup_wrap, 
  76.    const BlastInitialWordOptions* word_options, 
  77.    const BlastExtensionOptions* ext_options, 
  78.    const BlastHitSavingOptions* hit_options,
  79.    const BlastEffectiveLengthsOptions* eff_len_options,
  80.    const PSIBlastOptions* psi_options, 
  81.    const BlastDatabaseOptions* db_options,
  82.    BlastHSPResults* results, BlastDiagnostics* diagnostics);
  83. /** The high level function performing an RPS BLAST search 
  84.  * @param program_number Type of BLAST program [in]
  85.  * @param query The query sequence [in]
  86.  * @param query_info Additional query information [in]
  87.  * @param bssp Structure containing BLAST database [in]
  88.  * @param sbp Scoring and statistical parameters [in]
  89.  * @param score_options Hit scoring options [in]
  90.  * @param lookup_wrap The lookup table, constructed earlier [in] 
  91.  * @param word_options Options for processing initial word hits [in]
  92.  * @param ext_options Options and parameters for the gapped extension [in]
  93.  * @param hit_options Options for saving the HSPs [in]
  94.  * @param eff_len_options Options for setting effective lengths [in]
  95.  * @param psi_options Options specific to PSI-BLAST [in]
  96.  * @param db_options Options for handling BLAST database [in]
  97.  * @param results Structure holding all saved results [in] [out]
  98.  * @param diagnostics Return statistics containing numbers of hits on 
  99.  *                    different stages of the search [out]
  100.  */
  101. Int4 
  102. BLAST_RPSSearchEngine(Uint1 program_number, 
  103.    BLAST_SequenceBlk* query, BlastQueryInfo* query_info,
  104.    const BlastSeqSrc* bssp, BlastScoreBlk* sbp, 
  105.    const BlastScoringOptions* score_options, 
  106.    LookupTableWrap* lookup_wrap, 
  107.    const BlastInitialWordOptions* word_options, 
  108.    const BlastExtensionOptions* ext_options, 
  109.    const BlastHitSavingOptions* hit_options,
  110.    const BlastEffectiveLengthsOptions* eff_len_options,
  111.    const PSIBlastOptions* psi_options, 
  112.    const BlastDatabaseOptions* db_options,
  113.    BlastHSPResults* results, BlastDiagnostics* diagnostics);
  114. /** Gapped extension function pointer type */
  115. typedef Int2 (*BlastGetGappedScoreType) 
  116.      (Uint1, BLAST_SequenceBlk*, BlastQueryInfo* query_info,
  117.       BLAST_SequenceBlk*, BlastGapAlignStruct*, const BlastScoringParameters*,
  118.       const BlastExtensionParameters*, const BlastHitSavingParameters*,
  119.       BlastInitHitList*, BlastHSPList**, BlastGappedStats*);
  120.      
  121. /** Word finder function pointer type */
  122. typedef Int2 (*BlastWordFinderType) 
  123.      (BLAST_SequenceBlk*, BLAST_SequenceBlk*,
  124.       LookupTableWrap*, Int4**, const BlastInitialWordParameters*,
  125.       Blast_ExtendWord*, Uint4*, Uint4*, Int4, BlastInitHitList*,
  126.       BlastUngappedStats*);
  127. /** Structure to be passed to BLAST_SearchEngineCore, containing pointers 
  128.     to various preallocated structures and arrays. */
  129. typedef struct BlastCoreAuxStruct {
  130.    Blast_ExtendWord* ewp; /**< Structure for keeping track of diagonal
  131.                                information for initial word matches */
  132.    BlastWordFinderType WordFinder; /**< Word finder function pointer */
  133.    BlastGetGappedScoreType GetGappedScore; /**< Gapped extension function
  134.                                               pointer */
  135.    BlastInitHitList* init_hitlist; /**< Placeholder for HSPs after 
  136.                                         ungapped extension */
  137.    BlastHSPList* hsp_list; /**< Placeholder for HSPs after gapped 
  138.                                 extension */
  139.    Uint4* query_offsets; /**< Placeholder for initial word match query 
  140.                               offsets */
  141.    Uint4* subject_offsets; /**< Placeholder for initial word match  
  142.                               subject offsets */
  143.    Uint1* translation_buffer; /**< Placeholder for translated subject
  144.                                    sequences */
  145.    Uint1* translation_table; /**< Translation table for forward strand */
  146.    Uint1* translation_table_rc; /**< Translation table for reverse 
  147.                                      strand */
  148. } BlastCoreAuxStruct;
  149. #ifdef __cplusplus
  150. }
  151. #endif
  152. #endif /* !__BLAST_ENGINE__ */