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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: splign_util.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/06/01 18:13:13  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef ALGO_ALIGN_SPLIGN_UTIL__HPP
  10. #define ALGO_ALIGN_SPLIGN_UTIL__HPP
  11. /* $Id: splign_util.hpp,v 1000.0 2004/06/01 18:13:13 gouriano Exp $
  12. * ===========================================================================
  13. *
  14. *                            PUBLIC DOMAIN NOTICE                          
  15. *               National Center for Biotechnology Information
  16. *                                                                          
  17. *  This software/database is a "United States Government Work" under the   
  18. *  terms of the United States Copyright Act.  It was written as part of    
  19. *  the author's official duties as a United States Government employee and 
  20. *  thus cannot be copyrighted.  This software/database is freely available 
  21. *  to the public for use. The National Library of Medicine and the U.S.    
  22. *  Government have not placed any restriction on its use or reproduction.  
  23. *                                                                          
  24. *  Although all reasonable efforts have been taken to ensure the accuracy  
  25. *  and reliability of the software and data, the NLM and the U.S.          
  26. *  Government do not and cannot warrant the performance or results that    
  27. *  may be obtained by using this software or data. The NLM and the U.S.    
  28. *  Government disclaim all warranties, express or implied, including       
  29. *  warranties of performance, merchantability or fitness for any particular
  30. *  purpose.                                                                
  31. *                                                                          
  32. *  Please cite the author in any work or product based on this material.   
  33. *
  34. * ===========================================================================
  35. *
  36. * Author:  Yuri Kapustin
  37. *
  38. * File Description:  Helper functions
  39. *                   
  40. * ===========================================================================
  41. */
  42. #include <algo/align/nw_aligner.hpp>
  43. #include <algo/align/splign/splign_hit.hpp>
  44. BEGIN_NCBI_SCOPE
  45. #ifdef GENOME_PIPELINE
  46. //////////////////////////////////////
  47. // INF file readers and parsers
  48. class CInfTable
  49. {
  50. public:
  51.   CInfTable(size_t cols);
  52.   virtual ~CInfTable() {}
  53.   size_t Load(const string& filename);
  54.   struct SInfo {
  55.     enum EStrand {
  56.       eUnknown,
  57.       ePlus,
  58.       eMinus
  59.     } m_strand;
  60.     int m_polya_start;
  61.     int m_polya_end;
  62.     size_t m_size;
  63.     SInfo(): m_strand(eUnknown),
  64.      m_polya_start(-1), m_polya_end(-1), m_size(0) {}
  65.   };
  66.   bool GetInfo(const string& id, SInfo& info);
  67. protected:
  68.   size_t m_cols; // number of columns
  69.   map<string, SInfo>  m_map;
  70.   vector<const char*> m_data;
  71.   const char*  x_GetCol(size_t col) {
  72.     return col < m_cols? m_data[col]: 0;
  73.   }
  74.   virtual bool x_ParseLine (const char* line,
  75.     string& accession, SInfo& info) = 0;
  76. private:
  77.   bool x_ReadColumns(char* line);
  78. };
  79. class CInf_mRna: public CInfTable
  80. {
  81. public:
  82.   CInf_mRna(): CInfTable(11) {}
  83.   virtual ~CInf_mRna() {}
  84. protected:
  85.   virtual bool x_ParseLine (const char* line,
  86.     string& accession, SInfo& info);
  87. };
  88. class CInf_EST: public CInfTable
  89. {
  90. public:
  91.   CInf_EST(): CInfTable(9) {}
  92.   virtual ~CInf_EST() {}
  93. protected:
  94.   virtual bool x_ParseLine (const char* line,
  95.     string& accession, SInfo& info);
  96. };
  97. #endif // GENOME_PIPELINE
  98. /////////////////////
  99. // helpers
  100. void   CleaveOffByTail(vector<CHit>* hits, size_t polya_start);
  101. void   GetHitsMinMax(const vector<CHit>& hits,
  102.      size_t* qmin, size_t* qmax,
  103.      size_t* smin, size_t* smax);
  104. string RLE(const string& in);
  105. void   XFilter(vector<CHit>* hits);
  106. CNWAligner::TScore ScoreByTranscript(const CNWAligner& aligner,
  107.                                      const char* transcript);
  108. bool   IsConsensus(const char* donor, const char* acceptor);
  109. struct SCompliment
  110. {
  111.     char operator() (char c) {
  112.         switch(c) {
  113.         case 'A': return 'T';
  114.         case 'G': return 'C';
  115.         case 'T': return 'A';
  116.         case 'C': return 'G';
  117.         }
  118.         return c;
  119.     }
  120. };
  121. END_NCBI_SCOPE
  122. /*
  123.  * ===========================================================================
  124.  *
  125.  * $Log: splign_util.hpp,v $
  126.  * Revision 1000.0  2004/06/01 18:13:13  gouriano
  127.  * PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.4
  128.  *
  129.  * Revision 1.4  2004/05/04 15:23:45  ucko
  130.  * Split splign code out of xalgoalign into new xalgosplign.
  131.  *
  132.  * Revision 1.3  2004/04/23 14:37:44  kapustin
  133.  * *** empty log message ***
  134.  *
  135.  *
  136.  * ===========================================================================
  137.  */
  138. #endif