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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: greedy_align.h,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 18:04:05  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.11
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: greedy_align.h,v 1000.1 2004/06/01 18:04:05 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 offical 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 greedy_align.h
  38.  * Copy of mbalign.h from ncbitools library 
  39.  * @todo FIXME need better file description
  40.  */
  41. #ifndef _GREEDY_H_
  42. #define _GREEDY_H_
  43. #include <algo/blast/core/blast_def.h>
  44. #ifdef __cplusplus
  45. extern "C" {
  46. #endif
  47. typedef Uint4 edit_op_t; /* 32 bits */
  48. typedef struct MBGapEditScript {
  49.     edit_op_t *op;                  /* array of edit operations */
  50.     Uint4 size, num;         /* size of allocation, number in use */
  51.     edit_op_t last;                 /* most recent operation added */
  52. } MBGapEditScript;
  53. MBGapEditScript *MBGapEditScriptFree(MBGapEditScript *es);
  54. MBGapEditScript *MBGapEditScriptNew(void);
  55. MBGapEditScript *MBGapEditScriptAppend(MBGapEditScript *es, MBGapEditScript *et);
  56. /* ----- pool allocator ----- */
  57. /** @todo FIXME Need to determine what the members of this structure mean.
  58.  * Can these be combined with the BlastGapDP structure? @sa BlastGapDP
  59.  */
  60. typedef struct SThreeVal {
  61.     Int4 I, C, D;
  62. } SThreeVal;
  63. typedef struct SMBSpace {
  64.     SThreeVal* space_array;
  65.     Int4 used, size;
  66.     struct SMBSpace *next;
  67. } SMBSpace;
  68. SMBSpace* MBSpaceNew(void);
  69. void MBSpaceFree(SMBSpace* sp);
  70. typedef struct SGreedyAlignMem {
  71.    Int4** flast_d;
  72.    Int4* max_row_free;
  73.    SThreeVal** flast_d_affine;
  74.    Int4* uplow_free;
  75.    SMBSpace* space;
  76. } SGreedyAlignMem;
  77. Int4 
  78. BLAST_GreedyAlign (const Uint1* s1, Int4 len1,
  79.      const Uint1* s2, Int4 len2,
  80.      Boolean reverse, Int4 xdrop_threshold, 
  81.      Int4 match_cost, Int4 mismatch_cost,
  82.      Int4* e1, Int4* e2, SGreedyAlignMem* abmp, 
  83.      MBGapEditScript *S, Uint1 rem);
  84. Int4 
  85. BLAST_AffineGreedyAlign (const Uint1* s1, Int4 len1,
  86.   const Uint1* s2, Int4 len2,
  87.   Boolean reverse, Int4 xdrop_threshold, 
  88.   Int4 match_cost, Int4 mismatch_cost,
  89.   Int4 gap_open, Int4 gap_extend,
  90.   Int4* e1, Int4* e2, 
  91.   SGreedyAlignMem* abmp, 
  92.   MBGapEditScript *S, Uint1 rem);
  93. #ifdef __cplusplus
  94. }
  95. #endif
  96. #endif /* _GREEDY_H_ */