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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: blast_rps.h,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 18:03:42  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: blast_rps.h,v 1000.1 2004/06/01 18:03:42 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:  Jason Papadopoulos
  35.  *
  36.  */
  37. /** @file blast_rps.h
  38.  * RPS BLAST structure definitions.
  39.  */
  40. #ifndef BLAST_RPS__H
  41. #define BLAST_RPS__H
  42. #include <algo/blast/core/blast_def.h>
  43. #ifdef __cplusplus
  44. extern "C" {
  45. #endif
  46. #define RPS_MAGIC_NUM 0x1e16    /**< RPS data files contain this number */
  47. #define NUM_EXPANSION_WORDS 3   /**< Intentionally unused words in .loo file */
  48. /** header of RPS blast '.loo' file */
  49. typedef struct RPSLookupFileHeader {
  50.     Int4 magic_number;               /**< value should be RPS_MAGIC_NUM */
  51.     Int4 num_lookup_tables;          /**< hardwired to 1 at present */
  52.     Int4 num_hits;                   /**< number of hits in the lookup table */
  53.     Int4 num_filled_backbone_cells;  /**< backbone cells that contain hits */
  54.     Int4 overflow_hits;              /**< number of hits in overflow array */
  55.     Int4 unused[NUM_EXPANSION_WORDS];/**< empty space in the on-disk format */
  56.     Int4 start_of_backbone;          /**< byte offset of start of backbone */
  57.     Int4 end_of_overflow;            /**< byte offset to end of overflow array */
  58. } RPSLookupFileHeader;
  59. /** header of RPS blast '.rps' file */
  60. typedef struct RPSProfileHeader {
  61.     Int4 magic_number;     /**< value should be RPS_MAGIC_NUM */
  62.     Int4 num_profiles;     /**< number of PSSMs in the file */
  63.     Int4 start_offsets[1]; /**< start of an Int4 array that gives the starting 
  64.                               byte offset of each RPS DB sequence. There
  65.                               are num_profiles+1 entries in the list, and
  66.                               the last entry effectively contains the length
  67.                               of all protein sequences combined. Note that
  68.                               the length of each sequence includes one byte
  69.                               at the end for an end-of-sequence sentinel */
  70.     /* After the list of sequence start offsets comes the list
  71.        of PSSM rows. There is one row for each letter in the RPS
  72.        sequence database, and each row has PSI_ALPHABET_SIZE entries.
  73.        Because there is a sentinel byte at the end of each sequence,
  74.        there is also a PSSM row for each sentinel byte */
  75. } RPSProfileHeader;
  76. /** information derived from RPS blast '.aux' file */
  77. typedef struct RPSAuxInfo {
  78.     char* orig_score_matrix; /**< score matrix used to derive PSSMs */
  79.     Int4 gap_open_penalty;   /**< gap open penalty used in deriving PSSMs */
  80.     Int4 gap_extend_penalty; /**< gap extend penalty used in deriving PSSMs */
  81.     double ungapped_k;       /**< ungapped Karlin value for orig_score_matrix
  82.                                   (not used) */
  83.     double ungapped_h;       /**< ungapped Karlin value for orig_score_matrix
  84.                                   (not used) */
  85.     Int4 max_db_seq_length;  /**< maximum DB sequence length (not used) */
  86.     Int4 db_length;          /**< RPS DB search space (not used) */
  87.     double scale_factor;     /**< the PSSMs are scaled by this amount, and so
  88.                                   all scores and all cutoff values must be
  89.                                   similarly scaled during the search */
  90.     double *karlin_k;        /**< one Karlin value for each DB sequence */
  91. } RPSAuxInfo;
  92. /** The RPS engine uses this structure to access all of the
  93.  *  RPS blast related data (assumed to be collected in an 
  94.  *  implementation-specific manner). 
  95.  */
  96. typedef struct RPSInfo {
  97.     RPSLookupFileHeader *lookup_header; /**< for '.loo' file */
  98.     RPSProfileHeader *profile_header;   /**< for '.rps' file */
  99.     RPSAuxInfo aux_info;                /**< for '.aux' file */
  100. } RPSInfo;
  101. #ifdef __cplusplus
  102. }
  103. #endif
  104. #endif /* !BLAST_RPS__H */