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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: annot_types_ci.cpp,v $
  4.  * PRODUCTION Revision 1000.5  2004/06/01 19:22:48  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.121
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: annot_types_ci.cpp,v 1000.5 2004/06/01 19:22:48 gouriano Exp $
  10. * ===========================================================================
  11. *
  12. *                            PUBLIC DOMAIN NOTICE
  13. *               National Center for Biotechnology Information
  14. *
  15. *  This software/database is a "United States Government Work" under the
  16. *  terms of the United States Copyright Act.  It was written as part of
  17. *  the author's official duties as a United States Government employee and
  18. *  thus cannot be copyrighted.  This software/database is freely available
  19. *  to the public for use. The National Library of Medicine and the U.S.
  20. *  Government have not placed any restriction on its use or reproduction.
  21. *
  22. *  Although all reasonable efforts have been taken to ensure the accuracy
  23. *  and reliability of the software and data, the NLM and the U.S.
  24. *  Government do not and cannot warrant the performance or results that
  25. *  may be obtained by using this software or data. The NLM and the U.S.
  26. *  Government disclaim all warranties, express or implied, including
  27. *  warranties of performance, merchantability or fitness for any particular
  28. *  purpose.
  29. *
  30. *  Please cite the author in any work or product based on this material.
  31. *
  32. * ===========================================================================
  33. *
  34. * Author: Aleksey Grichenko, Eugene Vasilchenko
  35. *
  36. * File Description:
  37. *   Object manager iterators
  38. *
  39. */
  40. #include <ncbi_pch.hpp>
  41. #include <objmgr/annot_types_ci.hpp>
  42. #include <objmgr/impl/handle_range_map.hpp>
  43. #include <objmgr/impl/snp_annot_info.hpp>
  44. BEGIN_NCBI_SCOPE
  45. BEGIN_SCOPE(objects)
  46. /////////////////////////////////////////////////////////////////////////////
  47. // CAnnotTypes_CI
  48. /////////////////////////////////////////////////////////////////////////////
  49. CAnnotTypes_CI::CAnnotTypes_CI(void)
  50.     : m_DataCollector(0)
  51. {
  52.     return;
  53. }
  54. CAnnotTypes_CI::CAnnotTypes_CI(TAnnotType type,
  55.                                CScope& scope,
  56.                                const CSeq_loc& loc,
  57.                                const SAnnotSelector& params)
  58.     : m_DataCollector(new CAnnot_Collector(params, scope))
  59. {
  60.     m_DataCollector->GetSelector().CheckAnnotType(type);
  61.     CHandleRangeMap master_loc;
  62.     master_loc.AddLocation(loc);
  63.     m_DataCollector->x_Initialize(master_loc);
  64.     Rewind();
  65. }
  66. CAnnotTypes_CI::CAnnotTypes_CI(TAnnotType type,
  67.                                const CBioseq_Handle& bioseq,
  68.                                TSeqPos start, TSeqPos stop,
  69.                                const SAnnotSelector& params)
  70.     : m_DataCollector(new CAnnot_Collector(params, bioseq.GetScope()))
  71. {
  72.     m_DataCollector->GetSelector().CheckAnnotType(type);
  73.     m_DataCollector->x_Initialize(bioseq, start, stop);
  74.     Rewind();
  75. }
  76. CAnnotTypes_CI::CAnnotTypes_CI(TAnnotType type,
  77.                                const CSeq_annot_Handle& annot)
  78.     : m_DataCollector(new CAnnot_Collector(SAnnotSelector(type),
  79.                                               annot.GetScope()))
  80. {
  81.     m_DataCollector->GetSelector()
  82.         .SetResolveNone() // nothing to resolve
  83.         .SetLimitSeqAnnot(annot);
  84.     m_DataCollector->x_Initialize();
  85.     Rewind();
  86. }
  87. CAnnotTypes_CI::CAnnotTypes_CI(TAnnotType type,
  88.                                const CSeq_annot_Handle& annot,
  89.                                const SAnnotSelector& params)
  90.     : m_DataCollector(new CAnnot_Collector(params, annot.GetScope()))
  91. {
  92.     m_DataCollector->GetSelector()
  93.         .CheckAnnotType(type)
  94.         .SetResolveNone() // nothing to resolve
  95.         .SetLimitSeqAnnot(annot);
  96.     m_DataCollector->x_Initialize();
  97.     Rewind();
  98. }
  99. CAnnotTypes_CI::CAnnotTypes_CI(TAnnotType type,
  100.                                const CSeq_entry_Handle& entry)
  101.     : m_DataCollector(new CAnnot_Collector(SAnnotSelector(type),
  102.                                               entry.GetScope()))
  103. {
  104.     m_DataCollector->GetSelector()
  105.         .SetResolveNone() // nothing to resolve
  106.         .SetSortOrder(SAnnotSelector::eSortOrder_None)
  107.         .SetLimitSeqEntry(entry);
  108.     m_DataCollector->x_Initialize();
  109.     Rewind();
  110. }
  111. CAnnotTypes_CI::CAnnotTypes_CI(TAnnotType type,
  112.                                const CSeq_entry_Handle& entry,
  113.                                const SAnnotSelector& params)
  114.     : m_DataCollector(new CAnnot_Collector(params, entry.GetScope()))
  115. {
  116.     m_DataCollector->GetSelector()
  117.         .CheckAnnotType(type)
  118.         .SetResolveNone() // nothing to resolve
  119.         .SetSortOrder(SAnnotSelector::eSortOrder_None)
  120.         .SetLimitSeqEntry(entry);
  121.     m_DataCollector->x_Initialize();
  122.     Rewind();
  123. }
  124. CAnnotTypes_CI::CAnnotTypes_CI(TAnnotType type,
  125.                                CScope& scope,
  126.                                const CSeq_loc& loc,
  127.                                //const SAnnotSelector& selector,
  128.                                SAnnotSelector::EOverlapType overlap_type,
  129.                                SAnnotSelector::EResolveMethod resolve_method)
  130.     : m_DataCollector(new CAnnot_Collector(SAnnotSelector(), scope))
  131. {
  132.     m_DataCollector->GetSelector()
  133.         .CheckAnnotType(type)
  134.         .SetOverlapType(overlap_type)
  135.         .SetResolveMethod(resolve_method);
  136.     CHandleRangeMap master_loc;
  137.     master_loc.AddLocation(loc);
  138.     m_DataCollector->x_Initialize(master_loc);
  139.     Rewind();
  140. }
  141. CAnnotTypes_CI::CAnnotTypes_CI(TAnnotType type,
  142.                                const CBioseq_Handle& bioseq,
  143.                                TSeqPos start, TSeqPos stop,
  144.                                //const SAnnotSelector& selector,
  145.                                SAnnotSelector::EOverlapType overlap_type,
  146.                                SAnnotSelector::EResolveMethod resolve_method)
  147.     : m_DataCollector(new CAnnot_Collector(SAnnotSelector(),
  148.                                               bioseq.GetScope()))
  149. {
  150.     m_DataCollector->GetSelector()
  151.         .CheckAnnotType(type)
  152.         .SetOverlapType(overlap_type)
  153.         .SetResolveMethod(resolve_method);
  154.     m_DataCollector->x_Initialize(bioseq, start, stop);
  155.     Rewind();
  156. }
  157. CSeq_annot_Handle CAnnotTypes_CI::GetAnnot(void) const
  158. {
  159.     const CAnnotObject_Ref& ref = Get();
  160.     const CSeq_annot_Info* info;
  161.     if ( ref.GetObjectType() == ref.eType_Seq_annot_SNP_Info ) {
  162.         info = &ref.GetSeq_annot_SNP_Info().GetParentSeq_annot_Info();
  163.     }
  164.     else {
  165.         info = &ref.GetSeq_annot_Info();
  166.     }
  167.     return CSeq_annot_Handle(GetScope(), *info);
  168. }
  169. const CSeq_annot& CAnnotTypes_CI::GetSeq_annot(void) const
  170. {
  171.     ERR_POST_ONCE(Warning<<
  172.                   "CAnnotTypes_CI::GetSeq_annot() is deprecated, "
  173.                   "use GetAnnot()");
  174.     return *GetAnnot().GetCompleteSeq_annot();
  175. }
  176. CAnnotTypes_CI::~CAnnotTypes_CI(void)
  177. {
  178.     return;
  179. }
  180. END_SCOPE(objects)
  181. END_NCBI_SCOPE
  182. /*
  183. * ---------------------------------------------------------------------------
  184. * $Log: annot_types_ci.cpp,v $
  185. * Revision 1000.5  2004/06/01 19:22:48  gouriano
  186. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.121
  187. *
  188. * Revision 1.121  2004/05/21 21:42:12  gorelenk
  189. * Added PCH ncbi_pch.hpp
  190. *
  191. * Revision 1.120  2004/04/05 15:56:14  grichenk
  192. * Redesigned CAnnotTypes_CI: moved all data and data collecting
  193. * functions to CAnnotDataCollector. CAnnotTypes_CI is no more
  194. * inherited from SAnnotSelector.
  195. *
  196. * Revision 1.119  2004/04/01 20:18:12  grichenk
  197. * Added initialization of m_MultiId member.
  198. *
  199. * Revision 1.118  2004/03/31 20:43:29  grichenk
  200. * Fixed mapping of seq-locs containing both master sequence
  201. * and its segments.
  202. *
  203. * Revision 1.117  2004/03/30 15:42:33  grichenk
  204. * Moved alignment mapper to separate file, added alignment mapping
  205. * to CSeq_loc_Mapper.
  206. *
  207. * Revision 1.116  2004/03/24 18:30:29  vasilche
  208. * Fixed edit API.
  209. * Every *_Info object has its own shallow copy of original object.
  210. *
  211. * Revision 1.115  2004/03/16 15:47:27  vasilche
  212. * Added CBioseq_set_Handle and set of EditHandles
  213. *
  214. * Revision 1.114  2004/02/26 14:41:41  grichenk
  215. * Fixed types excluding in SAnnotSelector and multiple types search
  216. * in CAnnotTypes_CI.
  217. *
  218. * Revision 1.113  2004/02/19 19:25:08  vasilche
  219. * Hidded implementation of CAnnotObject_Ref.
  220. * Added necessary access methods.
  221. *
  222. * Revision 1.112  2004/02/09 14:48:37  vasilche
  223. * Got rid of performance warning on MSVC.
  224. *
  225. * Revision 1.111  2004/02/06 18:31:54  vasilche
  226. * Fixed annot sorting class - deal with different annot types (graph align feat).
  227. *
  228. * Revision 1.110  2004/02/05 19:53:40  grichenk
  229. * Fixed type matching in SAnnotSelector. Added IncludeAnnotType().
  230. *
  231. * Revision 1.109  2004/02/04 18:05:38  grichenk
  232. * Added annotation filtering by set of types/subtypes.
  233. * Renamed *Choice to *Type in SAnnotSelector.
  234. *
  235. * Revision 1.108  2004/01/30 15:25:45  grichenk
  236. * Fixed alignments mapping and sorting
  237. *
  238. * Revision 1.107  2004/01/28 20:54:36  vasilche
  239. * Fixed mapping of annotations.
  240. *
  241. * Revision 1.106  2004/01/26 17:50:55  vasilche
  242. * Do assert check only when object is non-null.
  243. *
  244. * Revision 1.105  2004/01/23 16:14:47  grichenk
  245. * Implemented alignment mapping
  246. *
  247. * Revision 1.104  2004/01/22 20:10:40  vasilche
  248. * 1. Splitted ID2 specs to two parts.
  249. * ID2 now specifies only protocol.
  250. * Specification of ID2 split data is moved to seqsplit ASN module.
  251. * For now they are still reside in one resulting library as before - libid2.
  252. * As the result split specific headers are now in objects/seqsplit.
  253. * 2. Moved ID2 and ID1 specific code out of object manager.
  254. * Protocol is processed by corresponding readers.
  255. * ID2 split parsing is processed by ncbi_xreader library - used by all readers.
  256. * 3. Updated OBJMGR_LIBS correspondingly.
  257. *
  258. * Revision 1.103  2003/11/26 17:55:56  vasilche
  259. * Implemented ID2 split in ID1 cache.
  260. * Fixed loading of splitted annotations.
  261. *
  262. * Revision 1.102  2003/11/13 19:12:53  grichenk
  263. * Added possibility to exclude TSEs from annotations request.
  264. *
  265. * Revision 1.101  2003/11/10 18:11:03  grichenk
  266. * Moved CSeq_loc_Conversion_Set to seq_loc_cvt
  267. *
  268. * Revision 1.100  2003/11/05 00:33:53  ucko
  269. * Un-inline CSeq_loc_Conversion_Set::Add due to use before definition.
  270. *
  271. * Revision 1.99  2003/11/04 21:10:01  grichenk
  272. * Optimized feature mapping through multiple segments.
  273. * Fixed problem with CAnnotTypes_CI not releasing scope
  274. * when exception is thrown from constructor.
  275. *
  276. * Revision 1.98  2003/11/04 16:21:37  grichenk
  277. * Updated CAnnotTypes_CI to map whole features instead of splitting
  278. * them by sequence segments.
  279. *
  280. * Revision 1.97  2003/10/28 14:46:29  vasilche
  281. * Fixed wrong _ASSERT().
  282. *
  283. * Revision 1.96  2003/10/27 20:07:10  vasilche
  284. * Started implementation of full annotations' mapping.
  285. *
  286. * Revision 1.95  2003/10/10 12:47:24  dicuccio
  287. * Fixed off-by-one error in x_Search() - allocate correct size for array
  288. *
  289. * Revision 1.94  2003/10/09 20:20:58  vasilche
  290. * Added possibility to include and exclude Seq-annot names to annot iterator.
  291. * Fixed adaptive search. It looked only on selected set of annot names before.
  292. *
  293. * Revision 1.93  2003/10/07 13:43:23  vasilche
  294. * Added proper handling of named Seq-annots.
  295. * Added feature search from named Seq-annots.
  296. * Added configurable adaptive annotation search (default: gene, cds, mrna).
  297. * Fixed selection of blobs for loading from GenBank.
  298. * Added debug checks to CSeq_id_Mapper for easier finding lost CSeq_id_Handles.
  299. * Fixed leaked split chunks annotation stubs.
  300. * Moved some classes definitions in separate *.cpp files.
  301. *
  302. * Revision 1.92  2003/09/30 16:22:02  vasilche
  303. * Updated internal object manager classes to be able to load ID2 data.
  304. * SNP blobs are loaded as ID2 split blobs - readers convert them automatically.
  305. * Scope caches results of requests for data to data loaders.
  306. * Optimized CSeq_id_Handle for gis.
  307. * Optimized bioseq lookup in scope.
  308. * Reduced object allocations in annotation iterators.
  309. * CScope is allowed to be destroyed before other objects using this scope are
  310. * deleted (feature iterators, bioseq handles etc).
  311. * Optimized lookup for matching Seq-ids in CSeq_id_Mapper.
  312. * Added 'adaptive' option to objmgr_demo application.
  313. *
  314. * Revision 1.91  2003/09/16 14:21:47  grichenk
  315. * Added feature indexing and searching by subtype.
  316. *
  317. * Revision 1.90  2003/09/12 17:43:15  dicuccio
  318. * Replace _ASSERT() with handled check in x_Search() (again...)
  319. *
  320. * Revision 1.89  2003/09/12 16:57:52  dicuccio
  321. * Revert previous change
  322. *
  323. * Revision 1.88  2003/09/12 16:55:31  dicuccio
  324. * Temporarily disable assertion in CAnnotTypes_CI::x_Search()
  325. *
  326. * Revision 1.87  2003/09/12 15:50:10  grichenk
  327. * Updated adaptive-depth triggering
  328. *
  329. * Revision 1.86  2003/09/11 17:45:07  grichenk
  330. * Added adaptive-depth option to annot-iterators.
  331. *
  332. * Revision 1.85  2003/09/05 17:29:40  grichenk
  333. * Structurized Object Manager exceptions
  334. *
  335. * Revision 1.84  2003/09/03 19:59:01  grichenk
  336. * Initialize m_MappedIndex to 0
  337. *
  338. * Revision 1.83  2003/08/27 14:29:52  vasilche
  339. * Reduce object allocations in feature iterator.
  340. *
  341. * Revision 1.82  2003/08/22 14:58:57  grichenk
  342. * Added NoMapping flag (to be used by CAnnot_CI for faster fetching).
  343. * Added GetScope().
  344. *
  345. * Revision 1.81  2003/08/15 19:19:16  vasilche
  346. * Fixed memory leak in string packing hooks.
  347. * Fixed processing of 'partial' flag of features.
  348. * Allow table packing of non-point SNP.
  349. * Allow table packing of SNP with long alleles.
  350. *
  351. * Revision 1.80  2003/08/14 20:05:19  vasilche
  352. * Simple SNP features are stored as table internally.
  353. * They are recreated when needed using CFeat_CI.
  354. *
  355. * Revision 1.79  2003/08/04 17:03:01  grichenk
  356. * Added constructors to iterate all annotations from a
  357. * seq-entry or seq-annot.
  358. *
  359. * Revision 1.78  2003/07/29 15:55:16  vasilche
  360. * Catch exceptions when sorting features.
  361. *
  362. * Revision 1.77  2003/07/18 19:32:30  vasilche
  363. * Workaround for GCC 3.0.4 bug.
  364. *
  365. * Revision 1.76  2003/07/17 20:07:55  vasilche
  366. * Reduced memory usage by feature indexes.
  367. * SNP data is loaded separately through PUBSEQ_OS.
  368. * String compression for SNP data.
  369. *
  370. * Revision 1.75  2003/07/08 15:09:22  vasilche
  371. * Annotations iterator erroneously was resolving one level of segments
  372. * deeper than requested.
  373. *
  374. * Revision 1.74  2003/07/01 18:00:13  vasilche
  375. * Fixed unsigned/signed comparison.
  376. *
  377. * Revision 1.73  2003/06/25 20:56:30  grichenk
  378. * Added max number of annotations to annot-selector, updated demo.
  379. *
  380. * Revision 1.72  2003/06/24 14:25:18  vasilche
  381. * Removed obsolete CTSE_Guard class.
  382. * Used separate mutexes for bioseq and annot maps.
  383. *
  384. * Revision 1.71  2003/06/19 18:23:45  vasilche
  385. * Added several CXxx_ScopeInfo classes for CScope related information.
  386. * CBioseq_Handle now uses reference to CBioseq_ScopeInfo.
  387. * Some fine tuning of locking in CScope.
  388. *
  389. * Revision 1.70  2003/06/17 20:34:04  grichenk
  390. * Added flag to ignore sorting
  391. *
  392. * Revision 1.69  2003/06/13 17:22:54  grichenk
  393. * Protected against multi-ID seq-locs
  394. *
  395. * Revision 1.68  2003/06/02 16:06:37  dicuccio
  396. * Rearranged src/objects/ subtree.  This includes the following shifts:
  397. *     - src/objects/asn2asn --> arc/app/asn2asn
  398. *     - src/objects/testmedline --> src/objects/ncbimime/test
  399. *     - src/objects/objmgr --> src/objmgr
  400. *     - src/objects/util --> src/objmgr/util
  401. *     - src/objects/alnmgr --> src/objtools/alnmgr
  402. *     - src/objects/flat --> src/objtools/flat
  403. *     - src/objects/validator --> src/objtools/validator
  404. *     - src/objects/cddalignview --> src/objtools/cddalignview
  405. * In addition, libseq now includes six of the objects/seq... libs, and libmmdb
  406. * replaces the three libmmdb? libs.
  407. *
  408. * Revision 1.67  2003/05/12 19:18:29  vasilche
  409. * Fixed locking of object manager classes in multi-threaded application.
  410. *
  411. * Revision 1.66  2003/04/29 19:51:13  vasilche
  412. * Fixed interaction of Data Loader garbage collector and TSE locking mechanism.
  413. * Made some typedefs more consistent.
  414. *
  415. * Revision 1.65  2003/04/28 15:00:46  vasilche
  416. * Workaround for ICC bug with dynamic_cast<>.
  417. *
  418. * Revision 1.64  2003/04/24 16:12:38  vasilche
  419. * Object manager internal structures are splitted more straightforward.
  420. * Removed excessive header dependencies.
  421. *
  422. * Revision 1.63  2003/03/31 21:48:29  grichenk
  423. * Added possibility to select feature subtype through SAnnotSelector.
  424. *
  425. * Revision 1.62  2003/03/27 19:40:11  vasilche
  426. * Implemented sorting in CGraph_CI.
  427. * Added Rewind() method to feature/graph/align iterators.
  428. *
  429. * Revision 1.61  2003/03/26 21:00:19  grichenk
  430. * Added seq-id -> tse with annotation cache to CScope
  431. *
  432. * Revision 1.60  2003/03/26 17:11:19  vasilche
  433. * Added reverse feature traversal.
  434. *
  435. * Revision 1.59  2003/03/21 19:22:51  grichenk
  436. * Redesigned TSE locking, replaced CTSE_Lock with CRef<CTSE_Info>.
  437. *
  438. * Revision 1.58  2003/03/20 20:36:06  vasilche
  439. * Fixed mapping of mix Seq-loc.
  440. *
  441. * Revision 1.57  2003/03/18 14:52:59  grichenk
  442. * Removed obsolete methods, replaced seq-id with seq-id handle
  443. * where possible. Added argument to limit annotations update to
  444. * a single seq-entry.
  445. *
  446. * Revision 1.56  2003/03/14 19:10:41  grichenk
  447. * + SAnnotSelector::EIdResolving; fixed operator=() for several classes
  448. *
  449. * Revision 1.55  2003/03/13 21:49:58  vasilche
  450. * Fixed mapping of Mix location.
  451. *
  452. * Revision 1.54  2003/03/11 20:42:53  grichenk
  453. * Skip unresolvable IDs and synonym
  454. *
  455. * Revision 1.53  2003/03/11 15:51:06  kuznets
  456. * iterate -> ITERATE
  457. *
  458. * Revision 1.52  2003/03/10 16:55:17  vasilche
  459. * Cleaned SAnnotSelector structure.
  460. * Added shortcut when features are limited to one TSE.
  461. *
  462. * Revision 1.51  2003/03/05 20:56:43  vasilche
  463. * SAnnotSelector now holds all parameters of annotation iterators.
  464. *
  465. * Revision 1.50  2003/03/03 20:32:24  vasilche
  466. * Use cached synonyms.
  467. *
  468. * Revision 1.49  2003/02/28 19:27:19  vasilche
  469. * Cleaned Seq_loc conversion class.
  470. *
  471. * Revision 1.48  2003/02/27 20:56:51  vasilche
  472. * Use one method for lookup on main sequence and segments.
  473. *
  474. * Revision 1.47  2003/02/27 16:29:27  vasilche
  475. * Fixed lost features from first segment.
  476. *
  477. * Revision 1.46  2003/02/27 14:35:32  vasilche
  478. * Splitted PopulateTSESet() by logically independent parts.
  479. *
  480. * Revision 1.45  2003/02/26 17:54:14  vasilche
  481. * Added cached total range of mapped location.
  482. *
  483. * Revision 1.44  2003/02/25 20:10:40  grichenk
  484. * Reverted to single total-range index for annotations
  485. *
  486. * Revision 1.43  2003/02/24 21:35:22  vasilche
  487. * Reduce checks in CAnnotObject_Ref comparison.
  488. * Fixed compilation errors on MS Windows.
  489. * Removed obsolete file src/objects/objmgr/annot_object.hpp.
  490. *
  491. * Revision 1.42  2003/02/24 18:57:22  vasilche
  492. * Make feature gathering in one linear pass using CSeqMap iterator.
  493. * Do not use feture index by sub locations.
  494. * Sort features at the end of gathering in one vector.
  495. * Extracted some internal structures and classes in separate header.
  496. * Delay creation of mapped features.
  497. *
  498. * Revision 1.41  2003/02/13 14:34:34  grichenk
  499. * Renamed CAnnotObject -> CAnnotObject_Info
  500. * + CSeq_annot_Info and CAnnotObject_Ref
  501. * Moved some members of CAnnotObject to CSeq_annot_Info
  502. * and CAnnotObject_Ref.
  503. * Added feat/align/graph to CAnnotObject_Info map
  504. * to CDataSource.
  505. *
  506. * Revision 1.40  2003/02/12 19:17:31  vasilche
  507. * Fixed GetInt() when CSeq_loc is Whole.
  508. *
  509. * Revision 1.39  2003/02/10 15:53:24  grichenk
  510. * Sort features by mapped location
  511. *
  512. * Revision 1.38  2003/02/06 22:31:02  vasilche
  513. * Use CSeq_feat::Compare().
  514. *
  515. * Revision 1.37  2003/02/05 17:59:16  dicuccio
  516. * Moved formerly private headers into include/objects/objmgr/impl
  517. *
  518. * Revision 1.36  2003/02/04 21:44:11  grichenk
  519. * Convert seq-loc instead of seq-annot to the master coordinates
  520. *
  521. * Revision 1.35  2003/01/29 22:03:46  grichenk
  522. * Use single static CSeq_id_Mapper instead of per-OM model.
  523. *
  524. * Revision 1.34  2003/01/29 17:45:02  vasilche
  525. * Annotaions index is split by annotation/feature type.
  526. *
  527. * Revision 1.33  2003/01/22 20:11:54  vasilche
  528. * Merged functionality of CSeqMapResolved_CI to CSeqMap_CI.
  529. * CSeqMap_CI now supports resolution and iteration over sequence range.
  530. * Added several caches to CScope.
  531. * Optimized CSeqVector().
  532. * Added serveral variants of CBioseqHandle::GetSeqVector().
  533. * Tried to optimize annotations iterator (not much success).
  534. * Rewritten CHandleRange and CHandleRangeMap classes to avoid sorting of list.
  535. *
  536. * Revision 1.32  2002/12/26 20:55:17  dicuccio
  537. * Moved seq_id_mapper.hpp, tse_info.hpp, and bioseq_info.hpp -> include/ tree
  538. *
  539. * Revision 1.31  2002/12/26 16:39:23  vasilche
  540. * Object manager class CSeqMap rewritten.
  541. *
  542. * Revision 1.30  2002/12/24 15:42:45  grichenk
  543. * CBioseqHandle argument to annotation iterators made const
  544. *
  545. * Revision 1.29  2002/12/19 20:15:28  grichenk
  546. * Fixed code formatting
  547. *
  548. * Revision 1.28  2002/12/06 15:36:00  grichenk
  549. * Added overlap type for annot-iterators
  550. *
  551. * Revision 1.27  2002/12/05 19:28:32  grichenk
  552. * Prohibited postfix operator ++()
  553. *
  554. * Revision 1.26  2002/11/04 21:29:11  grichenk
  555. * Fixed usage of const CRef<> and CRef<> constructor
  556. *
  557. * Revision 1.25  2002/10/08 18:57:30  grichenk
  558. * Added feature sorting to the iterator class.
  559. *
  560. * Revision 1.24  2002/07/08 20:51:01  grichenk
  561. * Moved log to the end of file
  562. * Replaced static mutex (in CScope, CDataSource) with the mutex
  563. * pool. Redesigned CDataSource data locking.
  564. *
  565. * Revision 1.23  2002/05/31 17:53:00  grichenk
  566. * Optimized for better performance (CTSE_Info uses atomic counter,
  567. * delayed annotations indexing, no location convertions in
  568. * CAnnot_Types_CI if no references resolution is required etc.)
  569. *
  570. * Revision 1.22  2002/05/24 14:58:55  grichenk
  571. * Fixed Empty() for unsigned intervals
  572. * SerialAssign<>() -> CSerialObject::Assign()
  573. * Improved performance for eResolve_None case
  574. *
  575. * Revision 1.21  2002/05/09 14:17:22  grichenk
  576. * Added unresolved references checking
  577. *
  578. * Revision 1.20  2002/05/06 03:28:46  vakatov
  579. * OM/OM1 renaming
  580. *
  581. * Revision 1.19  2002/05/03 21:28:08  ucko
  582. * Introduce T(Signed)SeqPos.
  583. *
  584. * Revision 1.18  2002/05/02 20:43:15  grichenk
  585. * Improved strand processing, throw -> THROW1_TRACE
  586. *
  587. * Revision 1.17  2002/04/30 14:30:44  grichenk
  588. * Added eResolve_TSE flag in CAnnot_Types_CI, made it default
  589. *
  590. * Revision 1.16  2002/04/23 15:18:33  grichenk
  591. * Fixed: missing features on segments and packed-int convertions
  592. *
  593. * Revision 1.15  2002/04/22 20:06:17  grichenk
  594. * Minor changes in private interface
  595. *
  596. * Revision 1.14  2002/04/17 21:11:59  grichenk
  597. * Fixed annotations loading
  598. * Set "partial" flag in features if necessary
  599. * Implemented most seq-loc types in reference resolving methods
  600. * Fixed searching for annotations within a signle TSE
  601. *
  602. * Revision 1.13  2002/04/12 19:32:20  grichenk
  603. * Removed temp. patch for SerialAssign<>()
  604. *
  605. * Revision 1.12  2002/04/11 12:07:29  grichenk
  606. * Redesigned CAnnotTypes_CI to resolve segmented sequences correctly.
  607. *
  608. * Revision 1.11  2002/04/05 21:26:19  grichenk
  609. * Enabled iteration over annotations defined on segments of a
  610. * delta-sequence.
  611. *
  612. * Revision 1.10  2002/03/07 21:25:33  grichenk
  613. * +GetSeq_annot() in annotation iterators
  614. *
  615. * Revision 1.9  2002/03/05 16:08:14  grichenk
  616. * Moved TSE-restriction to new constructors
  617. *
  618. * Revision 1.8  2002/03/04 15:07:48  grichenk
  619. * Added "bioseq" argument to CAnnotTypes_CI constructor to iterate
  620. * annotations from a single TSE.
  621. *
  622. * Revision 1.7  2002/02/21 19:27:05  grichenk
  623. * Rearranged includes. Added scope history. Added searching for the
  624. * best seq-id match in data sources and scopes. Updated tests.
  625. *
  626. * Revision 1.6  2002/02/15 20:35:38  gouriano
  627. * changed implementation of HandleRangeMap
  628. *
  629. * Revision 1.5  2002/02/07 21:27:35  grichenk
  630. * Redesigned CDataSource indexing: seq-id handle -> TSE -> seq/annot
  631. *
  632. * Revision 1.4  2002/01/23 21:59:31  grichenk
  633. * Redesigned seq-id handles and mapper
  634. *
  635. * Revision 1.3  2002/01/18 15:51:18  gouriano
  636. * *** empty log message ***
  637. *
  638. * Revision 1.2  2002/01/16 16:25:57  gouriano
  639. * restructured objmgr
  640. *
  641. * Revision 1.1  2002/01/11 19:06:17  gouriano
  642. * restructured objmgr
  643. *
  644. *
  645. * ===========================================================================
  646. */