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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: blast_aux.hpp,v $
  4.  * PRODUCTION Revision 1000.3  2004/06/01 18:02:37  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.35
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: blast_aux.hpp,v 1000.3 2004/06/01 18:02:37 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. */
  37. /// @file blast_aux.hpp
  38. /// Contains C++ wrapper classes to structures in algo/blast/core as well as
  39. /// some auxiliary functions to convert CSeq_loc to/from BlastMask structures.
  40. #ifndef ALGO_BLAST_API___BLAST_AUX__HPP
  41. #define ALGO_BLAST_API___BLAST_AUX__HPP
  42. #include <corelib/ncbistd.hpp>
  43. #include <corelib/ddumpable.hpp>
  44. #include <objmgr/scope.hpp>
  45. #include <objects/seqalign/Seq_align_set.hpp>
  46. #include <algo/blast/api/blast_types.hpp>
  47. // NewBlast includes
  48. #include <algo/blast/core/blast_util.h>
  49. #include <algo/blast/core/blast_options.h>
  50. #include <algo/blast/core/blast_filter.h> // Needed for BlastMaskLoc & BlastSeqLoc
  51. #include <algo/blast/core/blast_extend.h>
  52. #include <algo/blast/core/blast_gapalign.h>
  53. #include <algo/blast/core/blast_hits.h>
  54. /** @addtogroup AlgoBlast
  55.  *
  56.  * @{
  57.  */
  58. BEGIN_NCBI_SCOPE
  59. BEGIN_SCOPE(objects)
  60.     class CSeq_loc;
  61. END_SCOPE(objects)
  62. BEGIN_SCOPE(blast)
  63. /** Converts a CSeq_loc into a BlastMaskLoc structure used in NewBlast
  64.  * @param slp CSeq_loc to convert [in]
  65.  * @param index Number of frame/query number? this CSeq_loc applies to [in]
  66.  * @return Linked list of BlastMaskLoc structures
  67.  */
  68. NCBI_XBLAST_EXPORT
  69. BlastMaskLoc*
  70. CSeqLoc2BlastMaskLoc(const objects::CSeq_loc &slp, int index);
  71. /** Convert coordinates in masking locations for one sequence from DNA to 
  72.  * protein, creating mask locations for each of the 6 translation frames.
  73.  * @param mask Pointer to masking locations structure [in] [out]
  74.  * @param seqloc DNA sequence data [in]
  75.  * @param scope Which scope this sequence belongs to? [in]
  76.  */
  77. void BlastMaskLocDNAToProtein(BlastMaskLoc** mask, 
  78.          const objects::CSeq_loc &seqloc, objects::CScope* scope);
  79. /** Convert coordinates in masking locations for a set of sequences from
  80.  * protein to DNA.
  81.  * @param mask Pointer to masking locations for all frames of a set 
  82.  *            of translated sequences [in] [out]
  83.  * @param slp Vector of DNA sequence data [in]
  84.  */
  85. void BlastMaskLocProteinToDNA(BlastMaskLoc** mask, TSeqLocVector &slp);
  86. /** Declares class to handle deallocating of the structure using the appropriate
  87.  * function
  88.  */
  89. #define DECLARE_AUTO_CLASS_WRAPPER(struct_name, free_func) 
  90. /** Wrapper class for struct_name. */
  91. class C##struct_name : public CDebugDumpable 
  92. public: 
  93.     C##struct_name() : m_Ptr(NULL) {} 
  94.     C##struct_name(struct_name* p) : m_Ptr(p) {} 
  95.     void Reset(struct_name* p) { if (m_Ptr) { free_func(m_Ptr); } m_Ptr = p; } 
  96.     ~C##struct_name() { if (m_Ptr) { free_func(m_Ptr); m_Ptr = NULL; } } 
  97.     operator struct_name *() { return m_Ptr; } 
  98.     operator struct_name *() const { return m_Ptr; } 
  99.     struct_name* operator->() { return m_Ptr; } 
  100.     struct_name* operator->() const { return m_Ptr; } 
  101.     struct_name** operator&() { return &m_Ptr; } 
  102.     void DebugDump(CDebugDumpContext ddc, unsigned int depth) const; 
  103. private: 
  104.     struct_name* m_Ptr; 
  105. }
  106. DECLARE_AUTO_CLASS_WRAPPER(BLAST_SequenceBlk, BlastSequenceBlkFree);
  107. DECLARE_AUTO_CLASS_WRAPPER(BlastQueryInfo, BlastQueryInfoFree);
  108. DECLARE_AUTO_CLASS_WRAPPER(QuerySetUpOptions, BlastQuerySetUpOptionsFree);
  109. DECLARE_AUTO_CLASS_WRAPPER(LookupTableOptions, LookupTableOptionsFree);
  110. DECLARE_AUTO_CLASS_WRAPPER(LookupTableWrap, LookupTableWrapFree);
  111. DECLARE_AUTO_CLASS_WRAPPER(BlastInitialWordOptions,
  112.                            BlastInitialWordOptionsFree);
  113. DECLARE_AUTO_CLASS_WRAPPER(BlastInitialWordParameters,
  114.                            BlastInitialWordParametersFree);
  115. DECLARE_AUTO_CLASS_WRAPPER(Blast_ExtendWord, BlastExtendWordFree);
  116. DECLARE_AUTO_CLASS_WRAPPER(BlastExtensionOptions, BlastExtensionOptionsFree);
  117. DECLARE_AUTO_CLASS_WRAPPER(BlastExtensionParameters, BlastExtensionParametersFree);
  118. DECLARE_AUTO_CLASS_WRAPPER(BlastHitSavingOptions, BlastHitSavingOptionsFree);
  119. DECLARE_AUTO_CLASS_WRAPPER(BlastHitSavingParameters,
  120.                            BlastHitSavingParametersFree);
  121. DECLARE_AUTO_CLASS_WRAPPER(PSIBlastOptions, sfree);
  122. DECLARE_AUTO_CLASS_WRAPPER(BlastDatabaseOptions, BlastDatabaseOptionsFree);
  123. DECLARE_AUTO_CLASS_WRAPPER(BlastScoreBlk, BlastScoreBlkFree);
  124. DECLARE_AUTO_CLASS_WRAPPER(BlastScoringOptions, BlastScoringOptionsFree);
  125. DECLARE_AUTO_CLASS_WRAPPER(BlastEffectiveLengthsOptions,
  126.                            BlastEffectiveLengthsOptionsFree);
  127. DECLARE_AUTO_CLASS_WRAPPER(BlastGapAlignStruct, BLAST_GapAlignStructFree);
  128. DECLARE_AUTO_CLASS_WRAPPER(BlastHSPResults, Blast_HSPResultsFree);
  129. END_SCOPE(blast)
  130. END_NCBI_SCOPE
  131. /* @} */
  132. /*
  133. * ===========================================================================
  134. *
  135. * $Log: blast_aux.hpp,v $
  136. * Revision 1000.3  2004/06/01 18:02:37  gouriano
  137. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.35
  138. *
  139. * Revision 1.35  2004/05/14 16:02:56  madden
  140. * Rename BLAST_ExtendWord to Blast_ExtendWord in order to fix conflicts with C toolkit
  141. *
  142. * Revision 1.34  2004/05/05 15:28:10  dondosha
  143. * Renamed functions in blast_hits.h accordance with new convention Blast_[StructName][Task]
  144. *
  145. * Revision 1.33  2004/04/30 17:12:42  dondosha
  146. * Changed prefix from BLAST_ to conventional Blast_
  147. *
  148. * Revision 1.32  2004/03/19 18:56:04  camacho
  149. * Move to doxygen AlgoBlast group
  150. *
  151. * Revision 1.31  2004/03/18 13:50:38  camacho
  152. * Remove unused CDeleter template specializations
  153. *
  154. * Revision 1.30  2004/03/16 14:48:01  dondosha
  155. * Typo fix in doxygen comment
  156. *
  157. * Revision 1.29  2004/03/12 16:33:22  camacho
  158. * Rename BLAST_ExtendWord functions to avoid collisions with C toolkit libraries
  159. *
  160. * Revision 1.28  2004/03/12 15:57:59  camacho
  161. * Make consistent use of New/Free functions for BLAST_ExtendWord structure
  162. *
  163. * Revision 1.27  2003/12/03 16:36:07  dondosha
  164. * Renamed BlastMask to BlastMaskLoc, BlastResults to BlastHSPResults
  165. *
  166. * Revision 1.26  2003/11/26 18:22:13  camacho
  167. * +Blast Option Handle classes
  168. *
  169. * Revision 1.25  2003/10/07 17:27:37  dondosha
  170. * Lower case mask removed from options, added to the SSeqLoc structure
  171. *
  172. * Revision 1.24  2003/09/11 17:44:39  camacho
  173. * Changed CBlastOption -> CBlastOptions
  174. *
  175. * Revision 1.23  2003/09/10 20:00:49  dondosha
  176. * BlastLookupTableDestruct renamed to LookupTableWrapFree
  177. *
  178. * Revision 1.22  2003/08/27 21:27:58  camacho
  179. * Fix to previous commit
  180. *
  181. * Revision 1.21  2003/08/27 18:40:02  camacho
  182. * Change free function for blast db options struct
  183. *
  184. * Revision 1.20  2003/08/20 15:23:47  ucko
  185. * DECLARE_AUTO_CLASS_WRAPPER: Remove occurrences of ## adjacent to punctuation.
  186. *
  187. * Revision 1.19  2003/08/20 14:45:26  dondosha
  188. * All references to CDisplaySeqalign moved to blast_format.hpp
  189. *
  190. * Revision 1.18  2003/08/19 22:11:49  dondosha
  191. * Major types definitions moved to blast_types.h
  192. *
  193. * Revision 1.17  2003/08/19 20:22:05  dondosha
  194. * EProgram definition moved from CBlastOptions clase to blast scope
  195. *
  196. * Revision 1.16  2003/08/19 13:45:21  dicuccio
  197. * Removed 'USING_SCOPE(objects)'.  Changed #include guards to be standards
  198. * compliant.  Added 'objects::' where necessary.
  199. *
  200. * Revision 1.15  2003/08/18 22:17:52  camacho
  201. * Renaming of SSeqLoc members
  202. *
  203. * Revision 1.14  2003/08/18 20:58:56  camacho
  204. * Added blast namespace, removed *__.hpp includes
  205. *
  206. * Revision 1.13  2003/08/18 17:07:41  camacho
  207. * Introduce new SSeqLoc structure (replaces pair<CSeq_loc, CScope>).
  208. * Change in function to read seqlocs from files.
  209. *
  210. * Revision 1.12  2003/08/14 19:08:45  dondosha
  211. * Use CRef instead of pointer to CSeq_loc in the TSeqLoc type definition
  212. *
  213. * Revision 1.11  2003/08/12 19:17:58  dondosha
  214. * Added TSeqLocVector typedef so it can be used from all sources; removed scope argument from functions
  215. *
  216. * Revision 1.10  2003/08/11 19:55:04  camacho
  217. * Early commit to support query concatenation and the use of multiple scopes.
  218. * Compiles, but still needs work.
  219. *
  220. * Revision 1.9  2003/08/11 17:12:10  dondosha
  221. * Do not use CConstRef as argument to CSeqLoc2BlastMaskLoc
  222. *
  223. * Revision 1.8  2003/08/11 16:09:53  dondosha
  224. * Pass CConstRef by value in CSeqLoc2BlastMaskLoc
  225. *
  226. * Revision 1.7  2003/08/11 15:23:23  dondosha
  227. * Renamed conversion functions between BlastMaskLoc and CSeqLoc; added algo/blast/core to headers from core BLAST library
  228. *
  229. * Revision 1.6  2003/08/11 13:58:51  dicuccio
  230. * Added export specifiers.  Fixed problem with unimplemented private copy ctor
  231. * (truly make unimplemented)
  232. *
  233. * Revision 1.5  2003/08/01 17:40:56  dondosha
  234. * Use renamed functions and structures from local blastkar.h
  235. *
  236. * Revision 1.4  2003/07/31 19:45:33  camacho
  237. * Eliminate Ptr notation
  238. *
  239. * Revision 1.3  2003/07/30 15:00:01  camacho
  240. * Do not use Malloc/MemNew/MemFree
  241. *
  242. * Revision 1.2  2003/07/14 22:17:17  camacho
  243. * Convert CSeq_loc to BlastMaskLocPtr
  244. *
  245. * Revision 1.1  2003/07/10 18:34:19  camacho
  246. * Initial revision
  247. *
  248. *
  249. * ===========================================================================
  250. */
  251. #endif  /* ALGO_BLAST_API___BLAST_AUX__HPP */