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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: blast_format.hpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/04/12 17:34:49  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.5
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: blast_format.hpp,v 1000.2 2004/04/12 17:34: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 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. File name: blast_format.hpp
  35. Author: Ilya Dondoshansky
  36. Contents: Functions needed for formatting of BLAST results
  37. ******************************************************************************
  38.  * $Revision: 1000.2 $
  39.  * */
  40. #ifndef __BLAST_FORMAT__
  41. #define __BLAST_FORMAT__
  42. #include <corelib/ncbistd.hpp>
  43. #include <objtools/alnmgr/util/showalign.hpp>
  44. #include <algo/blast/api/blast_types.hpp>
  45. #include <algo/blast/api/blast_exception.hpp>
  46. #include <algo/blast/core/blast_options.h>
  47. #include <algo/blast/core/blast_hits.h>
  48. #include <algo/blast/core/blast_seqsrc.h>
  49. BEGIN_NCBI_SCOPE
  50. BEGIN_SCOPE(blast)
  51. typedef list<objects::CDisplaySeqalign::SeqlocInfo*> TSeqLocInfo; 
  52. typedef vector<TSeqLocInfo> TSeqLocInfoVector;
  53. #define BLAST_NUM_DESCRIPTIONS 500
  54. #define BLAST_NUM_ALIGNMENTS 250
  55. #define BLAST_ALIGN_VIEW 0
  56. /** Formatting flags (copy of those in txalign.h */
  57. #define ALIGN_LOCUS_NAME ((Uint4)0x00000100) //<display the locus name
  58. #define ALIGN_MASTER ((Uint4)0x00000002) //<display the alignment as multiple pairwise alignment
  59. #define ALIGN_MISMATCH ((Uint4)0x00000004) //<display the mismatched residue of the sequence
  60. #define ALIGN_MATRIX_VAL ((Uint4)0x00000008) //<display the matrix of the alignment
  61. #define ALIGN_HTML ((Uint4)0x00000010) //<display the format in a HTML page
  62. #define ALIGN_HTML_RELATIVE ((Uint4)0x00002000) //<the HTML (if enabled by ALIGN_HTML) should be relative
  63. #define ALIGN_SHOW_RULER ((Uint4)0x00000020) //<display the ruler for the text alignment
  64. #define ALIGN_COMPRESS ((Uint4)0x00000040) //<make the space for label smaller
  65. #define ALIGN_END_NUM ((Uint4)0x00000080) //<show the number at the end
  66. #define ALIGN_FLAT_INS ((Uint4)0x00000001) //<flat the insertions in multiple pairwise alignment
  67. #define ALIGN_SHOW_GI ((Uint4)0x00000200) //<show the gi in the defline.
  68. #define ALIGN_SHOW_NO_OF_SEGS ((Uint4)0x00000400)//<show the number of (sum statistics) segments in the one-line descriptions?
  69. #define ALIGN_BLASTX_SPECIAL  ((Uint4)0x00000800) //<display the BLASTX results as protein alignment
  70. #define ALIGN_SHOW_QS ((Uint4)0x00001000) //<show the results as query-subect
  71. #define ALIGN_SPLIT_ANNOT ((Uint4)0x00004000) //<for Seq-annot from the same alignment, split the the display into individual panel
  72. #define ALIGN_SHOW_STRAND ((Uint4)0x00008000) //<for displaying the stradn even in the compact form
  73. #define ALIGN_BLUNT_END ((Uint4)0x00010000) //<showing the blunt-end for the end gaps
  74. #define ALIGN_DO_NOT_PRINT_TITLE ((Uint4)0x00020000) //< do not print title before list of deflines
  75. #define ALIGN_CHECK_BOX ((Uint4)0x00040000) //< place checkbox before the line (HTML only)
  76. #define ALIGN_CHECK_BOX_CHECKED ((Uint4)0x00080000) //< make default value for checkboxes ON (HTML only)
  77. #define ALIGN_NEW_GIF ((Uint4)0x00100000) //< print new.gif near new alignments (HTML only)
  78. #define ALIGN_NO_ENTREZ ((Uint4)0x00200000) //< Use dumpgnl syntax instead of ENTREZ.
  79. #define ALIGN_NO_DUMPGNL ((Uint4)0x00400000) //< No dumpgnl output, even if GNL.
  80. #define ALIGN_TARGET_IN_LINKS ((Uint4)0x00800000) //< Put TARGET in Entrez links
  81. #define ALIGN_SHOW_LINKOUT ((Uint4)0x01000000) //<print linkout info
  82. #define ALIGN_BL2SEQ_LINK ((Uint4) 0x02000000) //< Add link to Blast 2 Sequences
  83. #define ALIGN_GET_SEQUENCE ((Uint4)0x04000000) //<get sequence ability
  84. /** Options for formatting BLAST results 
  85.  */
  86. class NCBI_XALNUTIL_EXPORT CBlastFormatOptions : public CObject
  87. {
  88. public:
  89.     /// Constructor
  90.     CBlastFormatOptions(EProgram program, CNcbiOstream &ostr) THROWS((CBlastException));
  91.     /// Destructor
  92.     virtual ~CBlastFormatOptions();
  93.     /// Accessors/Mutators for individual options
  94.     int GetDescriptions() const;
  95.     void SetDescriptions(int d);
  96.     int GetAlignments() const;
  97.     void SetAlignments(int a);
  98.     bool GetHtml() const;
  99.     void SetHtml(bool h);
  100.     int GetAlignView() const;
  101.     void SetAlignView(int a);
  102.     CNcbiOstream* GetOstream() const;
  103. protected:
  104.    Uint1 m_align_view;
  105.    Uint4 m_align_options;
  106.    Uint4 m_print_options;
  107.    bool m_believe_query;
  108.    bool m_html;
  109.    CNcbiOstream *m_ostr;
  110.    Int4 m_descriptions;
  111.    Int4 m_alignments;
  112.    Boolean m_ungapped; /**< Should this be here????? */
  113. private:    
  114.     /// Prohibit copy c-tor 
  115.     CBlastFormatOptions(const CBlastFormatOptions& bfo);
  116.     /// Prohibit assignment operator
  117.     CBlastFormatOptions& operator=(const CBlastFormatOptions& bfo);
  118. };
  119. inline int CBlastFormatOptions::GetDescriptions() const
  120. {
  121.     return m_descriptions;
  122. }
  123. inline void CBlastFormatOptions::SetDescriptions(int d)
  124. {
  125.     m_descriptions = d;
  126. }
  127. inline int CBlastFormatOptions::GetAlignments() const
  128. {
  129.     return m_alignments;
  130. }
  131. inline void CBlastFormatOptions::SetAlignments(int a)
  132. {
  133.     m_alignments = a;
  134. }
  135. inline bool CBlastFormatOptions::GetHtml() const
  136. {
  137.     return m_html;
  138. }
  139. inline void CBlastFormatOptions::SetHtml(bool h)
  140. {
  141.     m_html = h;
  142. }
  143. inline int CBlastFormatOptions::GetAlignView() const
  144. {
  145.     return m_align_view;
  146. }
  147. inline void CBlastFormatOptions::SetAlignView(int a)
  148. {
  149.     m_align_view = a;
  150. }
  151. inline CNcbiOstream* CBlastFormatOptions::GetOstream() const
  152. {
  153.     return m_ostr;
  154. }
  155. int
  156. BLAST_FormatResults(TSeqAlignVector &seqalign, 
  157.     EProgram program, const TSeqLocVector &query,
  158.     TSeqLocInfoVector& maskv, const CBlastFormatOptions* format_options, 
  159.     bool is_ooframe);
  160. END_SCOPE(blast)
  161. END_NCBI_SCOPE
  162. #endif /* !__BLAST_FORMAT__ */