42 #ifndef _SEQUENCEQUALITY_H_ 43 #define _SEQUENCEQUALITY_H_ 46 #include <Bpp/Numeric/VectorTools.h> 47 #include <Bpp/Numeric/VectorExceptions.h> 127 #ifdef NO_VIRTUAL_COV 146 if (throwException &&
qualScores_.size() != sequence.
size())
throw Exception(
"SequenceQuality. Quality scores must match the sequence size.");
168 throw DimensionException(
"SequenceQuality::setScores. Trying to replace score by a vector with different length.", scores.size(),
qualScores_.size());
179 throw Exception(
"SequenceQuality::setScore. Vector overflow. Scores number: " + TextTools::toString(
qualScores_.size()) +
", but trying to insert score at position " + TextTools::toString(pos) +
".");
183 void setScores(
size_t pos,
const std::vector<int>& scores) {
185 throw Exception(
"SequenceQuality::setScores. Vector overflow. Scores number: " + TextTools::toString(
qualScores_.size()) +
", but trying to insert " + TextTools::toString(scores.size()) +
" scores at position " + TextTools::toString(pos) +
".");
186 std::copy(scores.begin(), scores.end(),
qualScores_.begin() +
static_cast<ptrdiff_t
>(pos));
194 }
catch (std::exception& e) {
203 qualScores_.begin() +
static_cast<ptrdiff_t
>(pos + len)),
260 const std::string& name,
261 const std::string& sequence,
286 const std::string& name,
287 const std::string& sequence,
313 const std::string& name,
314 const std::string& sequence,
315 const std::vector<int>& quality,
343 const std::string& name,
344 const std::string& sequence,
345 const std::vector<int>& quality,
368 const std::string& name,
369 const std::vector<int>& sequence,
394 const std::string& name,
395 const std::vector<int>& sequence,
421 const std::string& name,
422 const std::vector<int>& sequence,
423 const std::vector<int>& quality,
451 const std::string& name,
452 const std::vector<int>& sequence,
453 const std::vector<int>& quality,
491 const std::vector<int>& sc)
492 throw (DimensionException):
525 #ifdef NO_VIRTUAL_COV 547 void setQuality(
size_t pos,
int quality)
throw (IndexOutOfBoundsException) {
564 int getQuality(
size_t pos)
const throw (IndexOutOfBoundsException) {
566 throw IndexOutOfBoundsException(
"SequenceWithQuality::getQuality: pos out of bounds", pos, 0,
qualScores_->
getSize() - 1);
578 void setQualities(
const std::vector<int>& quality)
throw (DimensionException) {
580 throw DimensionException(
"SequenceWithQuality::setQualities: quality must fit sequence size", quality.size(),
qualScores_->
getSize());
593 void append(
const std::vector<int>& content)
611 const std::vector<int>& content,
612 const std::vector<int>& qualities)
615 if (content.size() != qualities.size())
616 throw DimensionException(
"SequenceWithQuality::append: qualities must fit content size", qualities.size(), content.size());
623 void append(
const std::vector<std::string>& content)
641 const std::vector<std::string>& content,
642 const std::vector<int>& qualities)
645 if (content.size() != qualities.size())
646 throw DimensionException(
"SequenceWithQuality::append: qualities must fit content size", qualities.size(), content.size());
671 const std::string& content,
672 const std::vector<int>& qualities)
677 throw DimensionException(
"SequenceWithQuality::append: qualities must fit content size", qualities.size(), content.size() / this->
getAlphabet()->
getStateCodingSize());
685 const std::string& c)
701 const std::string& c,
int q)
727 size_t pos,
const std::string& c,
int q)
785 #endif // _SEQUENCEWITHQUALITY_H_ void addElement(size_t pos, const std::string &c)
Add a character at a certain position in the list.
SequenceWithQuality(const Alphabet *alpha)
Build a new empty SequenceWithQuality.
virtual ~SequenceWithQuality()
void append(const std::vector< std::string > &content, const std::vector< int > &qualities)
Append content with quality.
An alphabet exception thrown when trying to specify a bad char to the alphabet.
void append(const std::string &content, const std::vector< int > &qualities)
Append content with quality.
void addElement(const std::string &c)
Add a character to the end of the list.
SequenceWithQuality(const std::string &name, const std::vector< int > &sequence, const std::vector< int > &quality, const Comments &comments, const Alphabet *alpha)
Build a new SequenceWithQuality from a std::vector<int>
std::vector< std::string > Comments
Declaration of Comments type.
virtual const Alphabet * getAlphabet() const
Get the alphabet associated to the list.
std::vector< int > qualScores_
const int & operator[](size_t i) const
This alphabet is used to deal NumericAlphabet.
void init(const Sequence &seq)
SequenceWithAnnotation(const Alphabet *alpha)
Empty constructor: build a void Sequence with just an Alphabet.
void afterSequenceDeleted(const SymbolListDeletionEvent &event)
The SequenceQuality class.
virtual unsigned int getStateCodingSize() const =0
Get the size of the string coding a state.
void setScore(size_t pos, int score)
A SequenceWithAnnotation class with quality scores attached.
bool merge(const SequenceAnnotation &anno)
Merge the input annotation with the current one.
const std::string & getType() const
SequenceQuality * clone() const
void setScores(size_t pos, const std::vector< int > &scores)
virtual void addAnnotation(SequenceAnnotation *anno)
Add a new annotation to the sequence.
void addElement(size_t pos, int v)
Add a character at a certain position in the list.
void append(const std::string &content)
Append the specified content to the sequence.
SequenceWithQuality(const std::string &name, const std::vector< int > &sequence, const std::vector< int > &quality, const Alphabet *alpha)
Build a new SequenceWithQuality from a std::vector<int>
void beforeSequenceSubstituted(const SymbolListSubstitutionEvent &event)
void setQuality(size_t pos, int quality)
Set the quality score.
void afterSequenceInserted(const SymbolListInsertionEvent &event)
const std::vector< int > & getScores() const
void beforeSequenceChanged(const SymbolListEditionEvent &event)
SequenceQuality * qualScores_
SequenceQuality * getPartAnnotation(size_t pos, size_t len) const
SequenceWithQuality(const std::string &name, const std::string &sequence, const Alphabet *alpha)
Build a new SequenceWithQuality from a std::string.
SequenceWithQuality(const std::string &name, const std::string &sequence, const std::vector< int > &quality, const Comments &comments, const Alphabet *alpha)
Build a new SequenceWithQuality from a std::string.
void addElement(int v)
Add a character to the end of the list.
SequenceWithQuality(const Sequence &s, const std::vector< int > &sc)
Build a new SequenceWithQuality.
SequenceWithQuality(const std::string &name, const std::vector< int > &sequence, const Comments &comments, const Alphabet *alpha)
Build a new SequenceWithQuality from a std::vector<int>
SequenceWithQuality(const std::string &name, const std::string &sequence, const Comments &comments, const Alphabet *alpha)
Build a new SequenceWithQuality from a std::string.
SequenceWithQuality(const Sequence &s)
Build a new SequenceWithQuality.
void setScores(const std::vector< int > &scores)
void afterSequenceSubstituted(const SymbolListSubstitutionEvent &event)
virtual const SequenceAnnotation & getAnnotation(const std::string &type) const
SequenceWithQuality(const std::string &name, const std::string &sequence, const std::vector< int > &quality, const Alphabet *alpha)
Build a new SequenceWithQuality from a std::string.
Interface for sequence annotations.
An implementation of the Sequence interface that supports annotation.
void append(const std::vector< std::string > &content)
Append the specified content to the sequence.
void addElement(const std::string &c, int q)
Add a character to the end of the list with quality.
void beforeSequenceDeleted(const SymbolListDeletionEvent &event)
int getQuality(size_t pos) const
Get the quality score.
SequenceWithAnnotation & operator=(const Sequence &s)
The Sequence generic assignment operator. This does not perform a hard copy of the alphabet object...
SequenceWithQuality & operator=(const SequenceWithQuality &sequence)
void addElement(size_t pos, const std::string &c, int q)
Add a character to a certain position in the list with quality.
void setQualities(const std::vector< int > &quality)
Set the whole quality scores.
virtual size_t size() const =0
Get the number of elements in the list.
void addElement(size_t pos, int v, int q)
Add a character to a certain position in the list with quality.
const std::vector< int > & getQualities() const
Get the whole quality scores.
virtual ~SequenceQuality()
static const std::string QUALITY_SCORE
An alphabet exception thrown when trying to specify a bad int to the alphabet.
static const int DEFAULT_QUALITY_VALUE
virtual size_t size() const
Get the number of elements in the list.
void append(const std::vector< int > &content)
Append the specified content to the sequence.
void addElement(int v, int q)
Add a character to the end of the list with quality.
SequenceQuality(size_t size=0, bool removable=true)
Build a new SequenceQuality object.
SequenceQuality(const std::vector< int > &quality, bool removable=true)
Build a new SequenceQuality object.
SequenceWithQuality * clone() const
virtual void addElement(const std::string &c)
Add a character to the end of the list.
SequenceWithQuality(const std::string &name, const std::vector< int > &sequence, const Alphabet *alpha)
Build a new SequenceWithQuality from a std::vector<int>
void append(const std::vector< int > &content, const std::vector< int > &qualities)
Append content with quality.
int & operator[](size_t i)
void beforeSequenceInserted(const SymbolListInsertionEvent &event)
void afterSequenceChanged(const SymbolListEditionEvent &event)
bool isValidWith(const SequenceWithAnnotation &sequence, bool throwException=true) const
Test is the annotation is valid for a given sequence.
void append(const std::vector< int > &content)
Append the specified content to the sequence.
SequenceWithQuality(const SequenceWithQuality &sequence)