40 #ifndef _SEQUENCEFEATURE_H_ 41 #define _SEQUENCEFEATURE_H_ 50 #include <Bpp/Clonable.h> 51 #include <Bpp/Numeric/Range.h> 87 SeqRange(
size_t a,
size_t b,
char strand =
'.'):
88 Range<size_t>(a, b),
strand_(strand) {
89 if (strand !=
'+' && strand !=
'-' && strand !=
'?' && strand !=
'.')
127 public virtual Clonable
139 virtual const std::string&
getId()
const = 0;
143 virtual void setId(
const std::string&
id) = 0;
157 virtual const std::string&
getSource()
const = 0;
161 virtual void setSource(
const std::string& source) = 0;
166 virtual const std::string&
getType()
const = 0;
170 virtual void setType(
const std::string& type) = 0;
175 virtual const size_t getStart()
const = 0;
180 virtual const size_t getEnd()
const = 0;
195 virtual void invert() = 0;
210 virtual const double&
getScore()
const = 0;
214 virtual void setScore(
double score) = 0;
220 virtual const std::string&
getAttribute(
const std::string& attribute)
const = 0;
226 virtual std::string&
getAttribute(
const std::string& attribute) = 0;
239 virtual void setAttribute(
const std::string& attribute,
const std::string& value) = 0;
268 const std::string&
id,
269 const std::string& seqId,
270 const std::string& source,
271 const std::string& type,
304 std::map<std::string, std::string>::iterator it =
attributes_.find(attribute);
315 void setAttribute(
const std::string& attribute,
const std::string& value) {
320 std::set< std::string > d;
321 for (std::map<std::string, std::string>::iterator it =
attributes_.begin() ; it !=
attributes_.end() ; it++) {
328 std::map<std::string, std::string>::iterator it =
attributes_.find(attribute);
374 for (std::vector<SequenceFeature*>::const_iterator it = sfs.
features_.begin();
383 for (std::vector<SequenceFeature*>::const_iterator it = sfs.
features_.begin();
397 for (std::vector<SequenceFeature*>::iterator it =
features_.begin();
440 std::set<std::string> seqIds;
441 for (std::vector<SequenceFeature*>::const_iterator it =
features_.begin();
444 seqIds.insert((**it).getSequenceId());
453 std::set<std::string> types;
454 for (std::vector<SequenceFeature*>::const_iterator it =
features_.begin();
457 types.insert((**it).getType());
469 for (std::vector<SequenceFeature*>::const_iterator it =
features_.begin();
472 if ((**it).getSequenceId() == seqId) {
473 coords.addRange((**it).getRange());
484 for (std::vector<SequenceFeature*>::const_iterator it =
features_.begin();
487 if (std::find(types.begin(), types.end(), (**it).getType()) != types.end()) {
498 #endif //_SEQUENCEFEATURE_H_
virtual void setSequenceId(const std::string &id)=0
virtual void setAttribute(const std::string &attribute, const std::string &value)=0
Set the value of an attribute.
virtual BasicSequenceFeature * clone() const
std::string & getAttribute(const std::string &attribute)
const std::string & getType() const
virtual const double & getScore() const =0
void addFeature(const SequenceFeature &feature)
Add a feature to the container. The feature will be copied and the copy owned by the container...
virtual void setScore(double score)=0
std::set< std::string > getSequences() const
virtual SeqRange getRange() const =0
virtual void setSource(const std::string &source)=0
virtual const size_t getStart() const =0
void fillRangeCollectionForSequence(const std::string &seqId, RangeCollection< size_t > &coords) const
Get all coordinates of features for a given source. All ranges are added to a RangeCollection contain...
bool overlap(const SequenceFeature &feat) const
std::map< std::string, std::string > attributes_
void setType(const std::string &type)
virtual std::set< std::string > getAttributeList() const =0
virtual const std::string & getType() const =0
std::set< std::string > getAttributeList() const
virtual const size_t getEnd() const =0
virtual bool isStranded() const
std::set< std::string > getTypes() const
void setSequenceId(const std::string &sid)
virtual void setType(const std::string &type)=0
virtual bool overlap(const SequenceFeature &feat) const =0
SeqRange getRange() const
const std::string & getSource() const
SeqRange(size_t a, size_t b, char strand='.')
bool isNegativeStrand() const
size_t getNumberOfFeatures() const
const size_t getStart() const
SequenceFeatureSet * getSubsetForType(const std::vector< std::string > &types) const
static const std::string NO_ATTRIBUTE_SET
virtual const std::string & getSource() const =0
virtual const std::string & getSequenceId() const =0
virtual bool isNegativeStrand() const =0
void setAttribute(const std::string &attribute, const std::string &value)
Set the value of an attribute.
const double & getScore() const
const std::string & getId() const
const size_t getEnd() const
virtual bool isNegativeStrand() const
void setSource(const std::string &source)
virtual char getStrand() const
virtual void setId(const std::string &id)=0
The base interface for sequence features.
void setScore(double score)
virtual const std::string & getAttribute(const std::string &attribute) const =0
SequenceFeatureSet(const SequenceFeatureSet &sfs)
void setId(const std::string &id)
void clear()
Delete all features in this set.
BasicSequenceFeature(const std::string &id, const std::string &seqId, const std::string &source, const std::string &type, size_t start, size_t end, char strand, double score=-1)
SequenceFeatureSet & operator=(const SequenceFeatureSet &sfs)
void removeAttribute(const std::string &attribute)
const std::string & getSequenceId() const
virtual bool isStranded() const =0
const SequenceFeature & getFeature(size_t i) const
const SequenceFeature & operator[](size_t i) const
A very simple implementation of the SequenceFeature class.
virtual const std::string & getId() const =0
a coordinate range on a sequence. Stores coordinates as a Range<size_t> object, but also keep the str...
virtual SequenceFeature * clone() const =0
virtual void removeAttribute(const std::string &attribute)=0
A simple ensemble of sequence features.
std::vector< SequenceFeature * > features_
virtual ~SequenceFeatureSet()
const std::string & getAttribute(const std::string &attribute) const