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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: bioseq_handle.hpp,v $
  4.  * PRODUCTION Revision 1000.4  2004/06/01 19:21:17  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.56
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef BIOSEQ_HANDLE__HPP
  10. #define BIOSEQ_HANDLE__HPP
  11. /*  $Id: bioseq_handle.hpp,v 1000.4 2004/06/01 19:21:17 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: Aleksey Grichenko, Michael Kimelman, Eugene Vasilchenko
  37. *
  38. * File Description:
  39. *
  40. */
  41. #include <corelib/ncbistd.hpp>
  42. #include <objects/seqloc/Na_strand.hpp>
  43. #include <objects/seqset/Bioseq_set.hpp> // for EClass
  44. #include <objects/seq/Seq_inst.hpp> // for EMol
  45. #include <objmgr/seq_id_handle.hpp>
  46. #include <objmgr/impl/heap_scope.hpp>
  47. BEGIN_NCBI_SCOPE
  48. BEGIN_SCOPE(objects)
  49. class CDataSource;
  50. class CSeqMap;
  51. class CSeqVector;
  52. class CScope;
  53. class CSeq_id;
  54. class CSeq_loc;
  55. class CBioseq_Info;
  56. class CTSE_Info;
  57. class CSeq_entry;
  58. class CSeq_annot;
  59. class CSeqMatch_Info;
  60. class CSynonymsSet;
  61. class CBioseq_ScopeInfo;
  62. class CSeq_id_ScopeInfo;
  63. class CBioseq_Handle;
  64. class CSeq_annot_Handle;
  65. class CSeq_entry_Handle;
  66. class CBioseq_EditHandle;
  67. class CBioseq_set_EditHandle;
  68. class CSeq_annot_EditHandle;
  69. class CSeq_entry_EditHandle;
  70. // Bioseq handle -- must be a copy-safe const type.
  71. class NCBI_XOBJMGR_EXPORT CBioseq_Handle
  72. {
  73. public:
  74.     // Default constructor
  75.     CBioseq_Handle(void);
  76.     // Get scope this handle belongs to
  77.     CScope& GetScope(void) const;
  78.     // Get id used to obtain this bioseq handle
  79.     CConstRef<CSeq_id> GetSeqId(void) const;
  80.     const CSeq_id_Handle& GetSeq_id_Handle(void) const;
  81.     // Check if this id can be used to obtain this bioseq handle
  82.     bool IsSynonym(const CSeq_id& id) const;
  83.     CConstRef<CSynonymsSet> GetSynonyms(void) const;
  84.     // Get parent Seq-entry handle
  85.     CSeq_entry_Handle GetParentEntry(void) const;
  86.     CSeq_entry_Handle GetSeq_entry_Handle(void) const;
  87.     // Get top level Seq-entry handle
  88.     CSeq_entry_Handle GetTopLevelEntry(void) const;
  89.     // Get 'edit' version of handle
  90.     CBioseq_EditHandle GetEditHandle(void) const;
  91.     // Bioseq core -- using partially populated CBioseq
  92.     typedef CConstRef<CBioseq> TBioseqCore;
  93.     // Get bioseq core structure
  94.     TBioseqCore GetBioseqCore(void) const;
  95.     // Get the complete bioseq
  96.     CConstRef<CBioseq> GetCompleteBioseq(void) const;
  97.     // Deprecated interface.
  98.     const CBioseq& GetBioseq(void) const;
  99.     const CSeq_entry& GetTopLevelSeqEntry(void) const;
  100.     //////////////////////////////////////////////////////////////////
  101.     // Bioseq members
  102.     // id
  103.     typedef vector<CSeq_id_Handle> TId;
  104.     bool IsSetId(void) const;
  105.     bool CanGetId(void) const;
  106.     const TId& GetId(void) const;
  107.     // descr
  108.     typedef CSeq_descr TDescr;
  109.     bool IsSetDescr(void) const;
  110.     bool CanGetDescr(void) const;
  111.     const TDescr& GetDescr(void) const;
  112.     // inst
  113.     typedef CSeq_inst TInst;
  114.     bool IsSetInst(void) const;
  115.     bool CanGetInst(void) const;
  116.     const TInst& GetInst(void) const;
  117.     // inst.repr
  118.     typedef TInst::TRepr TInst_Repr;
  119.     bool IsSetInst_Repr(void) const;
  120.     bool CanGetInst_Repr(void) const;
  121.     TInst_Repr GetInst_Repr(void) const;
  122.     // inst.mol
  123.     typedef TInst::TMol TInst_Mol;
  124.     bool IsSetInst_Mol(void) const;
  125.     bool CanGetInst_Mol(void) const;
  126.     TInst_Mol GetInst_Mol(void) const;
  127.     // inst.length
  128.     typedef TInst::TLength TInst_Length;
  129.     bool IsSetInst_Length(void) const;
  130.     bool CanGetInst_Length(void) const;
  131.     TInst_Length GetInst_Length(void) const;
  132.     TSeqPos GetBioseqLength(void) const; // try to calculate it if not set
  133.     // inst.fuzz
  134.     typedef TInst::TFuzz TInst_Fuzz;
  135.     bool IsSetInst_Fuzz(void) const;
  136.     bool CanGetInst_Fuzz(void) const;
  137.     const TInst_Fuzz& GetInst_Fuzz(void) const;
  138.     // inst.topology
  139.     typedef TInst::TTopology TInst_Topology;
  140.     bool IsSetInst_Topology(void) const;
  141.     bool CanGetInst_Topology(void) const;
  142.     TInst_Topology GetInst_Topology(void) const;
  143.     // inst.strand
  144.     typedef TInst::TStrand TInst_Strand;
  145.     bool IsSetInst_Strand(void) const;
  146.     bool CanGetInst_Strand(void) const;
  147.     TInst_Strand GetInst_Strand(void) const;
  148.     // inst.seq-data
  149.     typedef TInst::TSeq_data TInst_Seq_data;
  150.     bool IsSetInst_Seq_data(void) const;
  151.     bool CanGetInst_Seq_data(void) const;
  152.     const TInst_Seq_data& GetInst_Seq_data(void) const;
  153.     // inst.ext
  154.     typedef TInst::TExt TInst_Ext;
  155.     bool IsSetInst_Ext(void) const;
  156.     bool CanGetInst_Ext(void) const;
  157.     const TInst_Ext& GetInst_Ext(void) const;
  158.     // inst.hist
  159.     typedef TInst::THist TInst_Hist;
  160.     bool IsSetInst_Hist(void) const;
  161.     bool CanGetInst_Hist(void) const;
  162.     const TInst_Hist& GetInst_Hist(void) const;
  163.     // annot
  164.     bool HasAnnots(void) const;
  165.     //////////////////////////////////////////////////////////////////
  166.     // Old interface:
  167.     // Go up to a certain complexity level (or the nearest level of the same
  168.     // priority if the required class is not found):
  169.     // level   class
  170.     // 0       not-set (0) ,
  171.     // 3       nuc-prot (1) ,       -- nuc acid and coded proteins
  172.     // 2       segset (2) ,         -- segmented sequence + parts
  173.     // 2       conset (3) ,         -- constructed sequence + parts
  174.     // 1       parts (4) ,          -- parts for 2 or 3
  175.     // 1       gibb (5) ,           -- geninfo backbone
  176.     // 1       gi (6) ,             -- geninfo
  177.     // 5       genbank (7) ,        -- converted genbank
  178.     // 3       pir (8) ,            -- converted pir
  179.     // 4       pub-set (9) ,        -- all the seqs from a single publication
  180.     // 4       equiv (10) ,         -- a set of equivalent maps or seqs
  181.     // 3       swissprot (11) ,     -- converted SWISSPROT
  182.     // 3       pdb-entry (12) ,     -- a complete PDB entry
  183.     // 4       mut-set (13) ,       -- set of mutations
  184.     // 4       pop-set (14) ,       -- population study
  185.     // 4       phy-set (15) ,       -- phylogenetic study
  186.     // 4       eco-set (16) ,       -- ecological sample study
  187.     // 4       gen-prod-set (17) ,  -- genomic products, chrom+mRNa+protein
  188.     // 4       wgs-set (18) ,       -- whole genome shotgun project
  189.     // 0       other (255)
  190.     CSeq_entry_Handle GetComplexityLevel(CBioseq_set::EClass cls) const;
  191.     // Return level with exact complexity, or empty handle if not found.
  192.     CSeq_entry_Handle GetExactComplexityLevel(CBioseq_set::EClass cls) const;
  193.     // Get some values from core:
  194.     CSeq_inst::TMol GetBioseqMolType(void) const;
  195.     // Get sequence map.
  196.     const CSeqMap& GetSeqMap(void) const;
  197.     // CSeqVector constructor flags
  198.     enum EVectorCoding {
  199.         eCoding_NotSet, // Use original coding - DANGEROUS! - may change
  200.         eCoding_Ncbi,   // Set coding to binary coding (Ncbi4na or Ncbistdaa)
  201.         eCoding_Iupac   // Set coding to printable coding (Iupacna or Iupacaa)
  202.     };
  203.     enum EVectorStrand {
  204.         eStrand_Plus,   // Plus strand
  205.         eStrand_Minus   // Minus strand
  206.     };
  207.     // Get sequence: Iupacna or Iupacaa if use_iupac_coding is true
  208.     CSeqVector GetSeqVector(EVectorCoding coding,
  209.                             ENa_strand strand = eNa_strand_plus) const;
  210.     CSeqVector GetSeqVector(ENa_strand strand = eNa_strand_plus) const;
  211.     CSeqVector GetSeqVector(EVectorCoding coding, EVectorStrand strand) const;
  212.     CSeqVector GetSeqVector(EVectorStrand strand) const;
  213.     // Sequence filtering: get a seq-vector for a part of the sequence.
  214.     // The part shown depends oon the mode selected. If the location
  215.     // contains references to other sequences they are ignored (unlike
  216.     // CBioseq constructor, which constructs a bioseq using all references
  217.     // from a location). Strand information from "location" is ingored
  218.     // when creating merged or excluded views. If "minus_strand" is true,
  219.     // the result is reverse-complement.
  220.     enum ESequenceViewMode {
  221.         eViewConstructed,    // Do not merge or reorder intervals
  222.         eViewMerged,         // Merge overlapping intervals, sort by location
  223.         eViewExcluded        // Show intervals not included in the seq-loc
  224.     };
  225.     CSeqVector GetSequenceView(const CSeq_loc& location,
  226.                                ESequenceViewMode mode,
  227.                                EVectorCoding coding = eCoding_Ncbi,
  228.                                ENa_strand strand = eNa_strand_plus) const;
  229.     CConstRef<CSeqMap> GetSeqMapByLocation(const CSeq_loc& location,
  230.                                            ESequenceViewMode mode) const;
  231.     CRef<CSeq_loc> MapLocation(const CSeq_loc& loc) const;
  232.     // Utility methods/operators
  233.     // Comparison
  234.     bool operator== (const CBioseq_Handle& h) const;
  235.     bool operator!= (const CBioseq_Handle& h) const;
  236.     bool operator<  (const CBioseq_Handle& h) const;
  237.     // Check
  238.     operator bool(void)  const;
  239.     bool operator!(void) const;
  240.     // these methods are for cross scope move only.
  241.     CBioseq_EditHandle CopyTo(const CSeq_entry_EditHandle& entry,
  242.                               int index = -1) const;
  243.     CBioseq_EditHandle CopyTo(const CBioseq_set_EditHandle& seqset,
  244.                               int index = -1) const;
  245.     CBioseq_EditHandle CopyToSeq(const CSeq_entry_EditHandle& entry) const;
  246. protected:
  247.     friend class CScope_Impl;
  248.     friend class CSynonymsSet;
  249.     CBioseq_Handle(const CSeq_id_Handle& id, CBioseq_ScopeInfo* bioseq_info);
  250.     const CBioseq_ScopeInfo& x_GetScopeInfo(void) const;
  251.     CHeapScope          m_Scope;
  252.     CSeq_id_Handle      m_Seq_id;
  253.     CConstRef<CObject>  m_Bioseq_Info;
  254. public: // non-public section
  255.     const CBioseq_Info& x_GetInfo(void) const;
  256. };
  257. class NCBI_XOBJMGR_EXPORT CBioseq_EditHandle : public CBioseq_Handle
  258. {
  259. public:
  260.     CBioseq_EditHandle(void);
  261.     
  262.     CSeq_entry_EditHandle GetParentEntry(void) const;
  263.     // Modification functions
  264.     //////////////////////////////////////////////////////////////////
  265.     // Bioseq members
  266.     // id
  267.     void ResetId(void) const;
  268.     bool AddId(const CSeq_id_Handle& id) const;
  269.     bool RemoveId(const CSeq_id_Handle& id) const;
  270.     // descr
  271.     void SetDescr(TDescr& v) const;
  272.     // inst
  273.     void SetInst(TInst& v) const;
  274.     // inst.repr
  275.     void SetInst_Repr(TInst_Repr v) const;
  276.     // inst.mol
  277.     void SetInst_Mol(TInst_Mol v) const;
  278.     // inst.length
  279.     void SetInst_Length(TInst_Length v) const;
  280.     // inst.fuzz
  281.     void SetInst_Fuzz(TInst_Fuzz& v) const;
  282.     // inst.topology
  283.     void SetInst_Topology(TInst_Topology v) const;
  284.     // inst.strand
  285.     void SetInst_Strand(TInst_Strand v) const;
  286.     // inst.seq-data
  287.     void SetInst_Seq_data(TInst_Seq_data& v) const;
  288.     // inst.ext
  289.     void SetInst_Ext(TInst_Ext& v) const;
  290.     // inst.hist
  291.     void SetInst_Hist(TInst_Hist& v) const;
  292.     // annot
  293.     //////////////////////////////////////////////////////////////////
  294.     // Add/remove/replace annotations:
  295.     CSeq_annot_EditHandle AttachAnnot(const CSeq_annot& annot) const;
  296.     CSeq_annot_EditHandle CopyAnnot(const CSeq_annot_Handle& annot) const;
  297.     CSeq_annot_EditHandle TakeAnnot(const CSeq_annot_EditHandle& annot) const;
  298.     // Tree modification, target handle must be in the same TSE
  299.     // entry.Which() must be e_not_set or e_Set.
  300.     CBioseq_EditHandle MoveTo(const CSeq_entry_EditHandle& entry,
  301.                               int index = -1) const;
  302.     CBioseq_EditHandle MoveTo(const CBioseq_set_EditHandle& seqset,
  303.                               int index = -1) const;
  304.     CBioseq_EditHandle MoveToSeq(const CSeq_entry_EditHandle& entry) const;
  305.     void Remove(void) const;
  306. protected:
  307.     friend class CScope_Impl;
  308.     CBioseq_EditHandle(const CBioseq_Handle& h);
  309. public: // non-public section
  310.     CBioseq_Info& x_GetInfo(void) const;
  311. };
  312. /////////////////////////////////////////////////////////////////////////////
  313. // CBioseq_Handle inline methods
  314. /////////////////////////////////////////////////////////////////////////////
  315. inline
  316. CBioseq_Handle::CBioseq_Handle(void)
  317. {
  318. }
  319. inline
  320. const CSeq_id_Handle& CBioseq_Handle::GetSeq_id_Handle(void) const
  321. {
  322.     return m_Seq_id;
  323. }
  324. inline
  325. CBioseq_Handle::operator bool(void)  const
  326. {
  327.     return m_Bioseq_Info;
  328. }
  329. inline
  330. bool CBioseq_Handle::operator!(void) const
  331. {
  332.     return !m_Bioseq_Info;
  333. }
  334. inline
  335. const CBioseq_ScopeInfo& CBioseq_Handle::x_GetScopeInfo(void) const
  336. {
  337.     return reinterpret_cast<const CBioseq_ScopeInfo&>(*m_Bioseq_Info);
  338. }
  339. inline
  340. CBioseq_Info& CBioseq_EditHandle::x_GetInfo(void) const
  341. {
  342.     return const_cast<CBioseq_Info&>(CBioseq_Handle::x_GetInfo());
  343. }
  344. inline
  345. CScope& CBioseq_Handle::GetScope(void) const 
  346. {
  347.     return m_Scope;
  348. }
  349. inline
  350. bool CBioseq_Handle::operator!= (const CBioseq_Handle& h) const
  351. {
  352.     return !(*this == h);
  353. }
  354. END_SCOPE(objects)
  355. END_NCBI_SCOPE
  356. /*
  357. * ---------------------------------------------------------------------------
  358. * $Log: bioseq_handle.hpp,v $
  359. * Revision 1000.4  2004/06/01 19:21:17  gouriano
  360. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.56
  361. *
  362. * Revision 1.56  2004/05/06 17:32:37  grichenk
  363. * Added CanGetXXXX() methods
  364. *
  365. * Revision 1.55  2004/03/31 19:23:13  vasilche
  366. * Fixed scope in CBioseq_Handle::GetEditHandle().
  367. *
  368. * Revision 1.54  2004/03/31 17:08:06  vasilche
  369. * Implemented ConvertSeqToSet and ConvertSetToSeq.
  370. *
  371. * Revision 1.53  2004/03/29 20:13:05  vasilche
  372. * Implemented whole set of methods to modify Seq-entry object tree.
  373. * Added CBioseq_Handle::GetExactComplexityLevel().
  374. *
  375. * Revision 1.52  2004/03/25 19:27:43  vasilche
  376. * Implemented MoveTo and CopyTo methods of handles.
  377. *
  378. * Revision 1.51  2004/03/24 18:30:28  vasilche
  379. * Fixed edit API.
  380. * Every *_Info object has its own shallow copy of original object.
  381. *
  382. * Revision 1.50  2004/03/16 21:01:32  vasilche
  383. * Added methods to move Bioseq withing Seq-entry
  384. *
  385. * Revision 1.49  2004/03/16 15:47:26  vasilche
  386. * Added CBioseq_set_Handle and set of EditHandles
  387. *
  388. * Revision 1.48  2004/02/06 16:07:26  grichenk
  389. * Added CBioseq_Handle::GetSeq_entry_Handle()
  390. * Fixed MapLocation()
  391. *
  392. * Revision 1.47  2003/11/28 15:13:24  grichenk
  393. * Added CSeq_entry_Handle
  394. *
  395. * Revision 1.46  2003/11/17 16:03:12  grichenk
  396. * Throw exception in CBioseq_Handle if the parent scope has been reset
  397. *
  398. * Revision 1.45  2003/11/10 18:12:43  grichenk
  399. * Added MapLocation()
  400. *
  401. * Revision 1.44  2003/09/30 16:21:59  vasilche
  402. * Updated internal object manager classes to be able to load ID2 data.
  403. * SNP blobs are loaded as ID2 split blobs - readers convert them automatically.
  404. * Scope caches results of requests for data to data loaders.
  405. * Optimized CSeq_id_Handle for gis.
  406. * Optimized bioseq lookup in scope.
  407. * Reduced object allocations in annotation iterators.
  408. * CScope is allowed to be destroyed before other objects using this scope are
  409. * deleted (feature iterators, bioseq handles etc).
  410. * Optimized lookup for matching Seq-ids in CSeq_id_Mapper.
  411. * Added 'adaptive' option to objmgr_demo application.
  412. *
  413. * Revision 1.43  2003/09/05 17:29:39  grichenk
  414. * Structurized Object Manager exceptions
  415. *
  416. * Revision 1.42  2003/08/27 14:28:50  vasilche
  417. * Reduce amount of object allocations in feature iteration.
  418. *
  419. * Revision 1.41  2003/07/15 16:14:06  grichenk
  420. * CBioseqHandle::IsSynonym() made public
  421. *
  422. * Revision 1.40  2003/06/19 18:23:44  vasilche
  423. * Added several CXxx_ScopeInfo classes for CScope related information.
  424. * CBioseq_Handle now uses reference to CBioseq_ScopeInfo.
  425. * Some fine tuning of locking in CScope.
  426. *
  427. * Revision 1.38  2003/05/20 15:44:36  vasilche
  428. * Fixed interaction of CDataSource and CDataLoader in multithreaded app.
  429. * Fixed some warnings on WorkShop.
  430. * Added workaround for memory leak on WorkShop.
  431. *
  432. * Revision 1.37  2003/04/24 16:12:37  vasilche
  433. * Object manager internal structures are splitted more straightforward.
  434. * Removed excessive header dependencies.
  435. *
  436. * Revision 1.36  2003/03/27 19:39:34  grichenk
  437. * +CBioseq_Handle::GetComplexityLevel()
  438. *
  439. * Revision 1.35  2003/03/21 19:22:48  grichenk
  440. * Redesigned TSE locking, replaced CTSE_Lock with CRef<CTSE_Info>.
  441. *
  442. * Revision 1.34  2003/03/18 21:48:27  grichenk
  443. * Removed obsolete class CAnnot_CI
  444. *
  445. * Revision 1.33  2003/03/18 14:46:35  grichenk
  446. * Set limit object type to "none" if the object is null.
  447. *
  448. * Revision 1.32  2003/03/14 19:10:33  grichenk
  449. * + SAnnotSelector::EIdResolving; fixed operator=() for several classes
  450. *
  451. * Revision 1.31  2003/03/12 20:09:30  grichenk
  452. * Redistributed members between CBioseq_Handle, CBioseq_Info and CTSE_Info
  453. *
  454. * Revision 1.30  2003/02/27 14:35:32  vasilche
  455. * Splitted PopulateTSESet() by logically independent parts.
  456. *
  457. * Revision 1.29  2003/01/23 19:33:57  vasilche
  458. * Commented out obsolete methods.
  459. * Use strand argument of CSeqVector instead of creation reversed seqmap.
  460. * Fixed ordering operators of CBioseqHandle to be consistent.
  461. *
  462. * Revision 1.28  2003/01/22 20:11:53  vasilche
  463. * Merged functionality of CSeqMapResolved_CI to CSeqMap_CI.
  464. * CSeqMap_CI now supports resolution and iteration over sequence range.
  465. * Added several caches to CScope.
  466. * Optimized CSeqVector().
  467. * Added serveral variants of CBioseqHandle::GetSeqVector().
  468. * Tried to optimize annotations iterator (not much success).
  469. * Rewritten CHandleRange and CHandleRangeMap classes to avoid sorting of list.
  470. *
  471. * Revision 1.27  2002/12/26 20:51:35  dicuccio
  472. * Added Win32 export specifier
  473. *
  474. * Revision 1.26  2002/12/26 16:39:21  vasilche
  475. * Object manager class CSeqMap rewritten.
  476. *
  477. * Revision 1.25  2002/11/08 22:15:50  grichenk
  478. * Added methods for removing/replacing annotations
  479. *
  480. * Revision 1.24  2002/09/03 21:26:58  grichenk
  481. * Replaced bool arguments in CSeqVector constructor and getters
  482. * with enums.
  483. *
  484. * Revision 1.23  2002/08/23 16:49:06  grichenk
  485. * Added warning about using CreateResolvedSeqMap()
  486. *
  487. * Revision 1.22  2002/07/08 20:50:56  grichenk
  488. * Moved log to the end of file
  489. * Replaced static mutex (in CScope, CDataSource) with the mutex
  490. * pool. Redesigned CDataSource data locking.
  491. *
  492. * Revision 1.21  2002/06/12 14:39:00  grichenk
  493. * Renamed enumerators
  494. *
  495. * Revision 1.20  2002/06/06 19:36:02  clausen
  496. * Added GetTitle()
  497. *
  498. * Revision 1.19  2002/05/31 17:52:58  grichenk
  499. * Optimized for better performance (CTSE_Info uses atomic counter,
  500. * delayed annotations indexing, no location convertions in
  501. * CAnnot_Types_CI if no references resolution is required etc.)
  502. *
  503. * Revision 1.18  2002/05/21 18:39:27  grichenk
  504. * CBioseq_Handle::GetResolvedSeqMap() -> CreateResolvedSeqMap()
  505. *
  506. * Revision 1.17  2002/05/06 03:30:35  vakatov
  507. * OM/OM1 renaming
  508. *
  509. * Revision 1.16  2002/05/03 18:35:36  grichenk
  510. * throw -> THROW1_TRACE
  511. *
  512. * Revision 1.15  2002/04/23 19:01:06  grichenk
  513. * Added optional flag to GetSeqVector() and GetSequenceView()
  514. * for switching to IUPAC encoding.
  515. *
  516. * Revision 1.14  2002/04/22 20:06:58  grichenk
  517. * +GetSequenceView(), +x_IsSynonym()
  518. *
  519. * Revision 1.13  2002/04/18 20:35:10  gouriano
  520. * correction in comment
  521. *
  522. * Revision 1.12  2002/04/11 12:07:28  grichenk
  523. * Redesigned CAnnotTypes_CI to resolve segmented sequences correctly.
  524. *
  525. * Revision 1.11  2002/03/19 19:17:33  gouriano
  526. * added const qualifier to GetTitle and GetSeqVector
  527. *
  528. * Revision 1.10  2002/03/15 18:10:04  grichenk
  529. * Removed CRef<CSeq_id> from CSeq_id_Handle, added
  530. * key to seq-id map th CSeq_id_Mapper
  531. *
  532. * Revision 1.9  2002/03/04 15:08:43  grichenk
  533. * Improved CTSE_Info locks
  534. *
  535. * Revision 1.8  2002/02/21 19:27:00  grichenk
  536. * Rearranged includes. Added scope history. Added searching for the
  537. * best seq-id match in data sources and scopes. Updated tests.
  538. *
  539. * Revision 1.7  2002/02/07 21:27:33  grichenk
  540. * Redesigned CDataSource indexing: seq-id handle -> TSE -> seq/annot
  541. *
  542. * Revision 1.6  2002/02/01 21:49:10  gouriano
  543. * minor changes to make it compilable and run on Solaris Workshop
  544. *
  545. * Revision 1.5  2002/01/29 17:05:53  grichenk
  546. * GetHandle() -> GetKey()
  547. *
  548. * Revision 1.4  2002/01/28 19:45:33  gouriano
  549. * changed the interface of BioseqHandle: two functions moved from Scope
  550. *
  551. * Revision 1.3  2002/01/23 21:59:29  grichenk
  552. * Redesigned seq-id handles and mapper
  553. *
  554. * Revision 1.2  2002/01/16 16:26:36  gouriano
  555. * restructured objmgr
  556. *
  557. * Revision 1.1  2002/01/11 19:04:00  gouriano
  558. * restructured objmgr
  559. *
  560. *
  561. * ===========================================================================
  562. */
  563. #endif  // BIOSEQ_HANDLE__HPP