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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: bdbloader.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 20:57:45  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef BDBLOADER_HPP
  10. #define BDBLOADER_HPP
  11. /*  $Id: bdbloader.hpp,v 1000.0 2003/10/29 20:57:45 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: Christiam Camacho
  37. *
  38. *  File Description:
  39. *   Data loader implementation that uses the blast databases
  40. *
  41. * ===========================================================================
  42. */
  43. #include <objmgr/data_loader.hpp>
  44. #include <objmgr/impl/data_source.hpp>
  45. #include <readdb.h>
  46. BEGIN_NCBI_SCOPE
  47. BEGIN_SCOPE(objects)
  48. /////////////////////////////////////////////////////////////////////////////////
  49. //
  50. // CBlastDbDataLoader
  51. //   Data loader implementation that uses the blast databases.
  52. //   Note: Only full bioseqs can be requested, not parts of a sequence.
  53. //
  54. class NCBI_XLOADER_BLASTDB_EXPORT CBlastDbDataLoader : public CDataLoader
  55. {
  56. public:
  57.     /// Describes the type of blast database to use, equivalent to READDB_DB_* #defines
  58.     enum EDbType {
  59.         eNucleotide = 0,    ///< nucleotide database
  60.         eProtein = 1,       ///< protein database
  61.         eUnknown = 2        ///< protein is attempted first, then nucleotide
  62.     };
  63.     CBlastDbDataLoader(const string& loader_name = "BLASTDB", const string&
  64.             dbname = "nr", const EDbType dbtype = eUnknown);
  65.                     
  66.     virtual ~CBlastDbDataLoader(void);
  67.   
  68.     virtual void GetRecords(const CSeq_id_Handle& idh, const EChoice choice);
  69.   
  70.     virtual void DebugDump(CDebugDumpContext ddc, unsigned int depth) const;
  71.     
  72.   private:
  73.     const string m_dbname;      ///< blast database name
  74.     EDbType m_dbtype;           ///< is this database protein or nucleotide?
  75.     ReadDBFILEPtr m_rdfp;       ///< blast database handle
  76.     CFastMutex *m_mutex;        ///< mutex to access the blast database
  77.     typedef map<int, CRef<CBioseq> > TOid2Bioseq;
  78.     TOid2Bioseq m_cache;
  79. };
  80. END_SCOPE(objects)
  81. END_NCBI_SCOPE
  82. /* ========================================================================== 
  83.  *
  84.  * $Log: bdbloader.hpp,v $
  85.  * Revision 1000.0  2003/10/29 20:57:45  gouriano
  86.  * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.2
  87.  *
  88.  * Revision 1.2  2003/09/30 16:36:33  vasilche
  89.  * Updated CDataLoader interface.
  90.  *
  91.  * Revision 1.1  2003/08/06 16:15:17  jianye
  92.  * Add BLAST DB loader.
  93.  *
  94.  * Revision 1.4  2003/05/19 21:11:46  camacho
  95.  * Added caching
  96.  *
  97.  * Revision 1.3  2003/05/16 14:27:48  camacho
  98.  * Proper use of namespaces
  99.  *
  100.  * Revision 1.2  2003/05/08 15:11:43  camacho
  101.  * Changed prototype for GetRecords in base class
  102.  *
  103.  * Revision 1.1  2003/03/14 22:37:26  camacho
  104.  * Initial revision
  105.  *
  106.  *
  107.  * ========================================================================== */
  108. #endif