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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: blast_setup.h,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 18:03:49  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.39
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: blast_setup.h,v 1000.2 2004/06/01 18:03:49 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:  Tom Madden
  35.  *
  36.  */
  37. /** @file blast_setup.h
  38.  * Utilities initialize/setup BLAST.
  39.  */
  40. #ifndef __BLAST_SETUP__
  41. #define __BLAST_SETUP__
  42. #ifdef __cplusplus
  43. extern "C" {
  44. #endif
  45. #include <algo/blast/core/blast_def.h>
  46. #include <algo/blast/core/blast_options.h>
  47. #include <algo/blast/core/blast_stat.h>
  48. #include <algo/blast/core/blast_extend.h>
  49. #include <algo/blast/core/blast_gapalign.h>
  50. /** "Main" setup routine for BLAST. Calculates all information for BLAST search
  51.  * that is dependent on the ASN.1 structures.
  52.  * @todo FIXME: this function only filters query and sets up score block structure
  53.  * @param program_number Type of BLAST program (0=blastn, ...). [in]
  54.  * @param qsup_options options for query setup. [in]
  55.  * @param scoring_options options for scoring. [in]
  56.  * @param hit_options options for saving hits. [in]
  57.  * @param query_blk BLAST_SequenceBlk* for the query. [in]
  58.  * @param query_info The query information block [in]
  59.  * @param scale_factor Multiplier for cutoff and dropoff scores [in]
  60.  * @param lookup_segments Start/stop locations for non-masked query 
  61.  *                        segments [out]
  62.  * @param filter_slp_out Filtering/masking locations. [out]
  63.  * @param sbpp Contains scoring information. [out]
  64.  * @param blast_message error or warning [out] 
  65.  */
  66. Int2 BLAST_MainSetUp(Uint1 program_number,
  67.         const QuerySetUpOptions* qsup_options,
  68.         const BlastScoringOptions* scoring_options,
  69.         const BlastHitSavingOptions* hit_options,
  70.         BLAST_SequenceBlk* query_blk,
  71.         BlastQueryInfo* query_info, 
  72.         double scale_factor,
  73.         BlastSeqLoc* *lookup_segments,
  74.         BlastMaskLoc* *filter_slp_out,
  75.         BlastScoreBlk* *sbpp, 
  76.         Blast_Message* *blast_message);
  77. /** BlastScoreBlkGappedFill, fills the ScoreBlkPtr for a gapped search.  
  78.  *      Should be moved to blast_stat.c in the future.
  79.  * @param sbp Contains fields to be set, should not be NULL. [out]
  80.  * @param scoring_options Scoring_options [in]
  81.  * @param program Used to set fields on sbp [in]
  82.  * @param query_info Query information containing context information [in]
  83.  *
  84. */
  85. Int2
  86. BlastScoreBlkGappedFill(BlastScoreBlk * sbp,
  87.                         const BlastScoringOptions * scoring_options,
  88.                         Uint1 program, BlastQueryInfo * query_info);
  89. /** Function to calculate effective query length and db length as well as
  90.  * effective search space. 
  91.  * @param program_number blastn, blastp, blastx, etc. [in]
  92.  * @param scoring_options options for scoring. [in]
  93.  * @param eff_len_params Used to calculate effective lengths [in]
  94.  * @param sbp Karlin-Altschul parameters [out]
  95.  * @param query_info The query information block, which stores the effective
  96.  *                   search spaces for all queries [in] [out]
  97. */
  98. Int2 BLAST_CalcEffLengths (Uint1 program_number, 
  99.    const BlastScoringOptions* scoring_options,
  100.    const BlastEffectiveLengthsParameters* eff_len_params, 
  101.    const BlastScoreBlk* sbp, BlastQueryInfo* query_info);
  102. /** Set up the auxiliary structures for gapped alignment / traceback only 
  103.  * @param program_number blastn, blastp, blastx, etc. [in]
  104.  * @param seq_src Sequence source information, with callbacks to get 
  105.  *                sequences, their lengths, etc. [in]
  106.  * @param scoring_options options for scoring. [in]
  107.  * @param eff_len_options Options overriding real database sizes for
  108.  *                        calculating effective lengths [in]
  109.  * @param ext_options options for gapped extension. [in]
  110.  * @param hit_options options for saving hits. [in]
  111.  * @param query_info The query information block [in]
  112.  * @param sbp Contains scoring information. [in]
  113.  * @param score_params Parameters for scoring [out]
  114.  * @param ext_params Parameters for gapped extension [out]
  115.  * @param hit_params Parameters for saving hits [out]
  116.  * @param eff_len_params Parameters for search space calculations [out]
  117.  * @param gap_align Gapped alignment information and allocated memory [out]
  118.  */
  119. Int2 
  120. BLAST_GapAlignSetUp(Uint1 program_number,
  121.    const BlastSeqSrc* seq_src,
  122.    const BlastScoringOptions* scoring_options,
  123.    const BlastEffectiveLengthsOptions* eff_len_options,
  124.    const BlastExtensionOptions* ext_options,
  125.    const BlastHitSavingOptions* hit_options,
  126.    BlastQueryInfo* query_info, 
  127.    BlastScoreBlk* sbp, 
  128.    BlastScoringParameters** score_params,
  129.    BlastExtensionParameters** ext_params,
  130.    BlastHitSavingParameters** hit_params,
  131.    BlastEffectiveLengthsParameters** eff_len_params,
  132.    BlastGapAlignStruct** gap_align);
  133. /** Recalculates the parameters that depend on an individual sequence, if
  134.  * this is not a database search.
  135.  * @param program_number BLAST program [in]
  136.  * @param subject_length Length of the current subject sequence [in]
  137.  * @param scoring_options Scoring options [in]
  138.  * @param query_info The query information structure. Effective lengths
  139.  *                   are recalculated here. [in] [out]
  140.  * @param sbp Scoring statistical parameters [in]
  141.  * @param ext_params Parameters for gapped extensions. [in]
  142.  * @param hit_params Parameters for saving hits. Score cutoffs are recalculated
  143.  *                   here [in] [out]
  144.  * @param word_params Parameters for ungapped extension. Score cutoffs are
  145.  *                    recalculated here [in] [out]
  146.  * @param eff_len_params Parameters for effective lengths calculation. Reset
  147.  *                       with the current sequence data [in] [out]
  148.  */
  149. Int2 BLAST_OneSubjectUpdateParameters(Uint1 program_number,
  150.     Uint4 subject_length,
  151.     const BlastScoringOptions* scoring_options,
  152.     BlastQueryInfo* query_info, 
  153.     BlastScoreBlk* sbp, 
  154.     const BlastExtensionParameters* ext_params,
  155.     BlastHitSavingParameters* hit_params,
  156.     BlastInitialWordParameters* word_params,
  157.     BlastEffectiveLengthsParameters* eff_len_params);
  158. /** BlastScoreBlkMatrixInit, fills score matrix parameters in the ScoreBlkPtr
  159.  *      Should be moved to blast_stat.c in the future.
  160.  * @param program_number Used to set fields on sbp [in]
  161.  * @param scoring_options Scoring_options [in]
  162.  * @param sbp Contains fields to be set, should not be NULL. [out]
  163.  *
  164. */
  165. Int2
  166. BlastScoreBlkMatrixInit(Uint1 program_number, 
  167.     const BlastScoringOptions* scoring_options,
  168.     BlastScoreBlk* sbp);
  169. Int2
  170. BlastSetup_GetScoreBlock(BLAST_SequenceBlk* query_blk, 
  171.     BlastQueryInfo* query_info, 
  172.     const BlastScoringOptions* scoring_options, 
  173.     Uint1 program_number, 
  174.     Boolean phi_align, 
  175.     BlastScoreBlk* *sbpp, 
  176.     double scale_factor, 
  177.     Blast_Message* *blast_message);
  178. #ifdef __cplusplus
  179. }
  180. #endif
  181. #endif /* !__BLAST_SETUP__ */
  182. /*
  183.  *
  184. * $Log: blast_setup.h,v $
  185. * Revision 1000.2  2004/06/01 18:03:49  gouriano
  186. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.39
  187. *
  188. * Revision 1.39  2004/05/19 14:52:01  camacho
  189. * 1. Added doxygen tags to enable doxygen processing of algo/blast/core
  190. * 2. Standardized copyright, CVS $Id string, $Log and rcsid formatting and i
  191. *    location
  192. * 3. Added use of @todo doxygen keyword
  193. *
  194. * Revision 1.38  2004/05/17 16:38:08  camacho
  195. * Make function declarations more readable
  196. *
  197. * Revision 1.37  2004/05/07 15:36:40  papadopo
  198. * add scale factor as input argument to BlastMainSetup and GetScoreBlk
  199. *
  200. * Revision 1.36  2004/03/30 15:49:07  madden
  201. * Add prototype for BlastSetup_GetScoreBlock
  202. *
  203. * Revision 1.35  2004/03/16 18:55:36  camacho
  204. * Moved log to end of file
  205. *
  206. * Revision 1.34  2004/03/15 19:54:51  dondosha
  207. * Removed unneeded arguments in BLAST_GapAlignSetUp
  208. *
  209. * Revision 1.33  2004/03/11 18:31:06  papadopo
  210. * fix doxygen warnings
  211. *
  212. * Revision 1.32  2004/03/10 18:00:20  camacho
  213. * Remove outdated references to blastkar
  214. *
  215. * Revision 1.31  2004/03/09 22:37:11  dondosha
  216. * Added const qualifiers to parameter arguments wherever relevant
  217. *
  218. * Revision 1.30  2004/03/09 18:39:35  dondosha
  219. * Pass around effective lengths parameters instead of options; added BLAST_OneSubjectUpdateParameters to recalculate cutoffs and eff. lengths when each subject is an individual sequence
  220. *
  221. * Revision 1.29  2004/02/27 15:56:35  papadopo
  222. * Mike Gertz' modifications to unify handling of gapped Karlin blocks for protein and nucleotide searches. Also modified BLAST_MainSetUp to allocate gapped Karlin blocks last
  223. *
  224. * Revision 1.28  2004/02/24 17:59:03  dondosha
  225. * Moved BLAST_CalcEffLengths from blast_engine.h; Added BLAST_GapAlignSetUp to set up only gapped alignment related structures
  226. *
  227. * Revision 1.27  2004/02/10 20:05:14  dondosha
  228. * Made BlastScoreBlkGappedFill external again: needed in unit test
  229. *
  230. * Revision 1.26  2003/12/03 16:31:46  dondosha
  231. * Renamed BlastMask to BlastMaskLoc, BlastResults to BlastHSPResults, to avoid name conflicts
  232. *
  233. * Revision 1.25  2003/09/10 19:43:05  dondosha
  234. * Changed #includes in accordance with lookup table code reorganization
  235. *
  236. * Revision 1.24  2003/09/09 14:21:14  coulouri
  237. * change blastkar.h to blast_stat.h
  238. *
  239. * Revision 1.23  2003/08/11 14:57:16  dondosha
  240. * Added algo/blast/core path to all #included headers
  241. *
  242. * Revision 1.22  2003/08/01 22:33:32  dondosha
  243. * Made BlastScoreBlkGappedFill static
  244. *
  245. * Revision 1.21  2003/08/01 17:20:39  dondosha
  246. * Renamed BLAST_ScoreBlk to BlastScoreBlk
  247. *
  248. * Revision 1.20  2003/07/31 14:31:37  camacho
  249. * Replaced Char for char
  250. *
  251. * Revision 1.19  2003/07/31 00:32:35  camacho
  252. * Eliminated Ptr notation
  253. *
  254. * Revision 1.18  2003/07/24 20:49:36  camacho
  255. * Remove unnecessary #include
  256. *
  257. * Revision 1.17  2003/06/26 21:30:10  dondosha
  258. * Removed const from an integral type function parameters
  259. *
  260. * Revision 1.16  2003/06/19 18:58:21  dondosha
  261. * Moved all functions dealing with SeqLocs to blast_seq.h
  262. *
  263. * Revision 1.15  2003/06/17 21:09:26  dondosha
  264. * Moved file reading from BLAST_SetUpSubject to Main
  265. *
  266. * Revision 1.14  2003/06/11 16:14:02  dondosha
  267. * Added number of queries argument to BLAST_SetUpQuery
  268. *
  269. * Revision 1.13  2003/06/06 20:36:12  dondosha
  270. * Removed unneeded arguments from BLAST_GetTranslatedSeqLoc
  271. *
  272. * Revision 1.12  2003/06/06 17:51:28  dondosha
  273. * Comments fixes for doxygen
  274. *
  275. * Revision 1.11  2003/06/05 18:33:39  dondosha
  276. * Compiler warnings fixes
  277. *
  278. * Revision 1.10  2003/06/05 17:16:04  dondosha
  279. * SeqLoc is no longer used for query masking/filtering
  280. *
  281. * Revision 1.9  2003/05/18 21:56:04  camacho
  282. * Use Uint1 for program name whenever possible
  283. *
  284. * Revision 1.8  2003/05/06 21:28:09  dondosha
  285. * Added functions previously static in blast_driver.c
  286. *
  287. * Revision 1.7  2003/05/01 17:09:07  dondosha
  288. * BLAST_SetUpAuxStructures made static in blast_engine.c
  289. *
  290. * Revision 1.6  2003/05/01 16:57:02  dondosha
  291. * Fixes for strict compiler warnings
  292. *
  293. * Revision 1.5  2003/05/01 15:31:54  dondosha
  294. * Reorganized the setup of BLAST search
  295. *
  296. * Revision 1.4  2003/04/18 22:28:15  dondosha
  297. * Separated ASN.1 generated structures from those used in the main BLAST engine and traceback
  298. *
  299. * Revision 1.3  2003/04/03 14:17:45  coulouri
  300. * fix warnings, remove unused parameter
  301. *
  302. * Revision 1.2  2003/04/02 17:21:23  dondosha
  303. * Changed functions parameters to accommodate calculation of ungapped cutoff score
  304. *
  305. * Revision 1.1  2003/03/31 18:18:31  camacho
  306. * Moved from parent directory
  307. *
  308. * Revision 1.23  2003/03/24 20:39:17  dondosha
  309. * Added BlastExtensionParameters structure to hold raw gapped X-dropoff values
  310. *
  311. * Revision 1.22  2003/03/24 17:27:42  dondosha
  312. * Improvements and additions for doxygen
  313. *
  314. * Revision 1.21  2003/03/14 16:55:09  dondosha
  315. * Minor corrections to eliminate strict compiler warnings
  316. *
  317. * Revision 1.20  2003/03/07 20:42:23  dondosha
  318. * Added ewp argument to be initialized in BlastSetup_Main
  319. *
  320. * Revision 1.19  2003/03/05 21:01:40  dondosha
  321. * Added query information block to output arguments of BlastSetUp_Main
  322. *
  323. * Revision 1.18  2003/02/26 15:42:19  madden
  324. * const charPtr becomes const char *
  325. *
  326. * Revision 1.17  2003/02/25 20:03:02  madden
  327. * Remove BlastSetUp_Concatenate and BlastSetUp_Standard
  328. *
  329. * Revision 1.16  2003/02/14 17:37:24  madden
  330. * Doxygen compliant comments
  331. *
  332. * Revision 1.15  2003/02/13 21:40:40  madden
  333. * Validate options, send back message if problem
  334. *
  335. * Revision 1.14  2003/02/04 14:45:50  camacho
  336. * Reformatted comments for doxygen
  337. *
  338. * Revision 1.13  2003/01/30 20:08:07  dondosha
  339. * Added a header file for nucleotide lookup tables
  340. *
  341. * Revision 1.12  2003/01/28 15:14:21  madden
  342. * BlastSetUp_Main gets additional args for parameters
  343. *
  344. * Revision 1.11  2003/01/10 18:50:11  madden
  345. * Version of BlastSetUp_Main that does not require num_seqs or dblength
  346. *
  347. * Revision 1.10  2002/12/24 16:21:40  madden
  348. * BlastSetUp_Mega renamed to BlastSetUp_Concatenate, unused arg frame removed
  349. *
  350. * Revision 1.9  2002/12/24 14:48:23  madden
  351. * Create lookup table for proteins
  352. *
  353. * Revision 1.8  2002/12/20 20:55:19  dondosha
  354. * BlastScoreBlkGappedFill made external (probably temporarily)
  355. *
  356. * Revision 1.7  2002/12/19 21:22:39  madden
  357. * Add BlastSetUp_Mega prototype
  358. *
  359. * Revision 1.6  2002/12/04 13:53:47  madden
  360. * Move BLAST_SequenceBlk from blsat_setup.h to blast_def.h
  361. *
  362. * Revision 1.5  2002/10/24 14:08:04  madden
  363. * Add DNA length to call to BlastSetUp_Standard
  364. *
  365. * Revision 1.4  2002/10/23 22:42:34  madden
  366. * Save context and frame information
  367. *
  368. * Revision 1.3  2002/10/22 15:50:46  madden
  369. * fix translating searches
  370. *
  371. * Revision 1.2  2002/10/07 21:04:37  madden
  372. * prototype change
  373. *
  374. */