halapi
hierarchichalalignmentformatapi
 All Classes Namespaces Functions Pages
halGenome.h
1 /*
2  * Copyright (C) 2012 by Glenn Hickey (hickey@soe.ucsc.edu)
3  *
4  * Released under the MIT license, see LICENSE.txt
5  */
6 
7 #ifndef _HALGENOME_H
8 #define _HALGENOME_H
9 
10 #include <vector>
11 #include <string>
12 #include "halDefs.h"
13 #include "halSegmentedSequence.h"
14 #include "halSequence.h"
15 
16 namespace hal {
17 
24 class Genome : public SegmentedSequence
25 {
26 public:
28  virtual const std::string& getName() const = 0;
29 
41  virtual void setDimensions(
42  const std::vector<hal::Sequence::Info>& sequenceDimensions,
43  bool storeDNAArrays = true) = 0;
44 
50  virtual void updateTopDimensions(
51  const std::vector<hal::Sequence::UpdateInfo>& sequenceDimensions) = 0;
52 
58  virtual void updateBottomDimensions(
59  const std::vector<hal::Sequence::UpdateInfo>& sequenceDimensions) = 0;
60 
62  virtual hal_size_t getNumSequences() const = 0;
63 
65  virtual Sequence* getSequence(const std::string& name) = 0;
66 
68  virtual const Sequence* getSequence(const std::string& name) const = 0;
69 
71  virtual Sequence* getSequenceBySite(hal_size_t position) = 0;
72 
74  virtual const Sequence* getSequenceBySite(hal_size_t position) const = 0;
75 
78  virtual SequenceIteratorPtr getSequenceIterator(
79  hal_index_t position = 0) = 0;
80 
83  virtual SequenceIteratorConstPtr getSequenceIterator(
84  hal_index_t position = 0) const = 0;
85 
88  virtual SequenceIteratorConstPtr getSequenceEndIterator() const = 0;
89 
91  virtual MetaData* getMetaData() = 0;
92 
94  virtual const MetaData* getMetaData() const = 0;
95 
97  virtual Genome* getParent() = 0;
98 
100  virtual const Genome* getParent() const = 0;
101 
104  virtual Genome* getChild(hal_size_t childIdx) = 0;
105 
108  virtual const Genome* getChild(hal_size_t childIdx) const = 0;
109 
111  virtual hal_size_t getNumChildren() const = 0;
112 
115  virtual hal_index_t getChildIndex(const Genome* child) const = 0;
116 
119  virtual bool containsDNAArray() const = 0;
120 
124  virtual const Alignment* getAlignment() const = 0;
125 
126 protected:
127 
129  virtual ~Genome() = 0;
130 };
131 
132 inline Genome::~Genome() {}
133 
134 }
135 #endif
virtual hal_index_t getChildIndex(const Genome *child) const =0
Definition: halGenome.h:24
virtual void updateBottomDimensions(const std::vector< hal::Sequence::UpdateInfo > &sequenceDimensions)=0
virtual hal_size_t getNumSequences() const =0
virtual Sequence * getSequenceBySite(hal_size_t position)=0
virtual SequenceIteratorPtr getSequenceIterator(hal_index_t position=0)=0
virtual bool containsDNAArray() const =0
virtual Genome * getParent()=0
Definition: halMetaData.h:21
Definition: halSegmentedSequence.h:23
virtual const std::string & getName() const =0
virtual ~Genome()=0
Definition: halGenome.h:132
virtual SequenceIteratorConstPtr getSequenceEndIterator() const =0
virtual void updateTopDimensions(const std::vector< hal::Sequence::UpdateInfo > &sequenceDimensions)=0
virtual const Alignment * getAlignment() const =0
virtual Sequence * getSequence(const std::string &name)=0
virtual MetaData * getMetaData()=0
virtual hal_size_t getNumChildren() const =0
virtual void setDimensions(const std::vector< hal::Sequence::Info > &sequenceDimensions, bool storeDNAArrays=true)=0
Definition: halSequence.h:20
Definition: halAlignment.h:21
virtual Genome * getChild(hal_size_t childIdx)=0