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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: trace_data.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/04/12 18:23:39  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef __GUI_WIDGETS_ALNMULTI___TRACE_DATA__HPP
  10. #define __GUI_WIDGETS_ALNMULTI___TRACE_DATA__HPP
  11. /*  $Id: trace_data.hpp,v 1000.0 2004/04/12 18:23:39 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.  * Authors:  Andrey Yazhuk
  37.  *
  38.  * File Description:
  39.  *
  40.  */
  41. #include <corelib/ncbistl.hpp>
  42. #include <objmgr/bioseq_handle.hpp>
  43. BEGIN_NCBI_SCOPE
  44. USING_SCOPE(objects);
  45. class CTraceData;
  46. ////////////////////////////////////////////////////////////////////////////////
  47. /// CTraceDataProxy - an object controlling availability and creation of 
  48. /// CTraceData instance.
  49. class   NCBI_GUIWIDGETS_ALNMULTIPLE_EXPORT CTraceDataProxy
  50. {
  51. public:
  52.     typedef map<string, int>    TTitleToType;
  53.     CTraceDataProxy(const CBioseq_Handle& handle, bool b_neg_strand);
  54.     bool    HasData()   const;
  55.     CTraceData* LoadData();
  56. private:
  57.     enum EStatus    {   
  58.         eUnknown,    
  59.         eNoData,
  60.         eHasData
  61.     };
  62.     const CBioseq_Handle& m_Handle; /// handle to Bioseq with traces
  63.     bool    m_bNegativeStrand;
  64.     mutable EStatus m_Status;
  65.     
  66.     TTitleToType   m_TitleToType;
  67. };
  68. ////////////////////////////////////////////////////////////////////////////////
  69. /// CTraceData
  70. class CTraceData
  71. {
  72. public:
  73.     typedef float   TConfidence;
  74.     typedef double  TFloatSeqPos;
  75.     typedef float   TSignalValue;
  76.     
  77.     typedef vector<TFloatSeqPos>    TPositions;
  78.     typedef vector<TSignalValue>    TValues;
  79.     
  80.     enum    EChannel    {
  81.         eA,
  82.         eC,
  83.         eT,
  84.         eG,
  85.     };
  86. public:
  87.     CTraceData()
  88.     : m_From(0), m_To(-1)
  89.     {
  90.     }
  91.     void    Init(TSignedSeqPos from, TSignedSeqPos to, int samples, bool negative);
  92.     
  93.     /// Sequence related information
  94.     
  95.     inline TSignedSeqPos   GetSeqFrom() const;
  96.     inline TSignedSeqPos   GetSeqTo() const;
  97.     inline TSignedSeqPos   GetSeqLength() const;    
  98.     inline bool     IsNegative()    const;
  99.     inline TConfidence   GetConfidence(TSignedSeqPos pos)   const;
  100.     inline void    SetConfidence(TSignedSeqPos pos, TConfidence conf);
  101.     
  102.     // signal related information
  103.     
  104.     inline int     GetSamplesCount() const;
  105.     inline TPositions&  GetPositions();
  106.     inline TValues&      GetA();
  107.     inline TValues&      GetC();
  108.     inline TValues&      GetT();
  109.     inline TValues&      GetG();
  110.     TValues&      GetValues(EChannel signal);
  111.     inline const TPositions&  GetPositions() const;
  112.     inline const TValues&      GetA() const;
  113.     inline const TValues&      GetC() const;
  114.     inline const TValues&      GetT() const;
  115.     inline const TValues&      GetG() const;
  116.     const TValues&      GetValues(EChannel signal) const;
  117.     
  118.     void    CalculateMax();
  119.     TConfidence     GetMaxConfidence() const;
  120.     TSignalValue    GetMax(EChannel signal) const;
  121. protected:
  122.     TSignedSeqPos   m_From;
  123.     TSignedSeqPos   m_To;
  124.     bool    m_bNegative;
  125.     vector<TConfidence>   m_Confs;
  126.     TPositions      m_Positions;
  127.     TValues         m_ASig;    
  128.     TValues         m_CSig;    
  129.     TValues         m_TSig;    
  130.     TValues         m_GSig;
  131.     TConfidence     m_MaxConfidence;
  132.     TSignalValue    m_MaxA;    
  133.     TSignalValue    m_MaxC;    
  134.     TSignalValue    m_MaxT;    
  135.     TSignalValue    m_MaxG;    
  136. };
  137. /// Sequence related information
  138. TSignedSeqPos   CTraceData::GetSeqFrom() const
  139. {
  140.     return m_From;
  141. }
  142. TSignedSeqPos   CTraceData::GetSeqTo() const
  143. {
  144.     return m_To;
  145. }
  146. TSignedSeqPos   CTraceData::GetSeqLength() const
  147. {
  148.     return m_To - m_From + 1;
  149. }
  150. inline bool     CTraceData::IsNegative()    const
  151. {
  152.     return m_bNegative;
  153. }
  154. CTraceData::TConfidence   CTraceData::GetConfidence(TSignedSeqPos pos)   const
  155. {
  156.     return m_Confs[pos - m_From];
  157. }
  158. void    CTraceData::SetConfidence(TSignedSeqPos pos, TConfidence conf)
  159. {
  160.     m_Confs[pos - m_From] = conf;
  161. }
  162. // signal related information
  163. int     CTraceData::GetSamplesCount() const
  164. {
  165.     return m_Positions.size();
  166. }
  167. CTraceData::TPositions&  CTraceData::GetPositions()
  168. {
  169.     return m_Positions;
  170. }
  171. CTraceData::TValues&      CTraceData::GetA() 
  172. {
  173.     return m_ASig;
  174. }
  175. CTraceData::TValues&      CTraceData::GetC() 
  176. {
  177.     return m_CSig;
  178. }
  179. CTraceData::TValues&      CTraceData::GetT() 
  180. {
  181.     return m_TSig;
  182. }
  183. CTraceData::TValues&      CTraceData::GetG() 
  184. {
  185.     return m_GSig;
  186. }
  187. const CTraceData::TPositions&  CTraceData::GetPositions() const
  188. {
  189.     return m_Positions;
  190. }
  191. const CTraceData::TValues&      CTraceData::GetA() const
  192. {
  193.     return m_ASig;
  194. }
  195. const CTraceData::TValues&      CTraceData::GetC() const
  196. {
  197.     return m_CSig;
  198. }
  199. const CTraceData::TValues&      CTraceData::GetT() const
  200. {
  201.     return m_TSig;
  202. }
  203. const CTraceData::TValues&      CTraceData::GetG() const
  204. {
  205.     return m_GSig;
  206. }
  207. END_NCBI_SCOPE
  208. /*
  209.  * ===========================================================================
  210.  * $Log: trace_data.hpp,v $
  211.  * Revision 1000.0  2004/04/12 18:23:39  gouriano
  212.  * PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.2
  213.  *
  214.  * Revision 1.2  2004/03/29 19:00:16  yazhuk
  215.  * Moved CTraceDataProxy from align_row.hpp
  216.  *
  217.  * Revision 1.1  2004/03/02 15:11:01  yazhuk
  218.  * Initial revision
  219.  *
  220.  * ===========================================================================
  221.  */
  222. #endif  // __GUI_WIDGETS_ALNMULTI___TRACE_DATA__HPP