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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: seq_loader.hpp,v $
  4.  * PRODUCTION Revision 1000.3  2004/06/01 18:05:23  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef ALGO_ALIGN_DEMO_SPLIGN_SEQ_LOADER__HPP
  10. #define ALGO_ALIGN_DEMO_SPLIGN_SEQ_LOADER__HPP
  11. /* $Id: seq_loader.hpp,v 1000.3 2004/06/01 18:05:23 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:
  39. *   CSeqLoader class
  40. *
  41. */
  42. #include <algo/align/splign/splign.hpp>
  43. #include <corelib/ncbistd.hpp>
  44. #include <corelib/ncbi_limits.hpp>
  45. #include <objects/seqset/Seq_entry.hpp>
  46. BEGIN_NCBI_SCOPE
  47. //////////
  48. // Batch mode sequence loader
  49. class CSeqLoader: public CSplignSeqAccessor
  50. {
  51. public:
  52.     void Open (const string& filename_index);  
  53.     virtual void Load( const string& id, vector<char> *seq,
  54.                        size_t start, size_t finish);
  55.     
  56. private:
  57.     
  58.     vector<string> m_filenames;
  59.     
  60.     struct SIdxTarget {
  61.         SIdxTarget(): m_filename_idx(kMax_UInt), m_offset(kMax_UInt) {}
  62.         size_t m_filename_idx;
  63.         size_t m_offset;
  64.     };
  65.     map<string, SIdxTarget> m_idx;
  66.     
  67.     size_t m_min_idx;
  68.     
  69. };
  70. //////////
  71. // Pairwise mode sequence loader
  72. class CSeqLoaderPairwise: public CSplignSeqAccessor
  73. {
  74. public:
  75.     CSeqLoaderPairwise(const string& query_filename,
  76.                        const string& subj_filename);
  77.     
  78.     virtual void Load( const string& id, vector<char> *seq,
  79.                        size_t start, size_t finish);
  80.     
  81.     string GetQueryStringId(void) const {
  82.         return m_QueryId;
  83.     }
  84.     string GetSubjStringId(void) const {
  85.         return m_SubjId;
  86.     }
  87.     CRef<objects::CSeq_entry> GetQuerySeqEntry(void) const {
  88.         return m_se_query;
  89.     }
  90.     CRef<objects::CSeq_entry> GetSubjSeqEntry(void) const {
  91.         return m_se_subj;
  92.     }
  93. private:
  94.     
  95.     string m_QueryId, m_SubjId;
  96.     vector<char> m_Query, m_Subj;
  97.     CRef<objects::CSeq_entry> m_se_query, m_se_subj;
  98. };
  99. END_NCBI_SCOPE
  100. /*
  101.  * ===========================================================================
  102.  * $Log: seq_loader.hpp,v $
  103.  * Revision 1000.3  2004/06/01 18:05:23  gouriano
  104.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9
  105.  *
  106.  * Revision 1.9  2004/05/10 20:52:27  ucko
  107.  * #include <.../Seq_entry.hpp>, since use of CRef<CSeq_entry> requires
  108.  * more than just a forward declaration on some compilers.
  109.  *
  110.  * Revision 1.8  2004/05/10 16:39:56  kapustin
  111.  * Add a pairwise mode sequence loader
  112.  *
  113.  * Revision 1.7  2004/05/04 15:23:45  ucko
  114.  * Split splign code out of xalgoalign into new xalgosplign.
  115.  *
  116.  * Revision 1.6  2004/04/23 14:33:32  kapustin
  117.  * *** empty log message ***
  118.  *
  119.  * Revision 1.4  2003/12/03 19:45:33  kapustin
  120.  * Keep min index value to support non-zero based index
  121.  *
  122.  * Revision 1.3  2003/11/05 20:32:11  kapustin
  123.  * Include source information into the index
  124.  *
  125.  * Revision 1.2  2003/10/31 19:43:15  kapustin
  126.  * Format and compatibility update
  127.  *
  128.  * ===========================================================================
  129.  */
  130. #endif