45 #include <Bpp/Text/TextTools.h> 49 size_t SequenceWalker::getAlignmentPosition(
size_t seqPos)
throw (Exception)
51 if (seqPos == seqPos_)
return alnPos_;
52 if (seqPos > seqPos_) {
54 while (alnPos_ < seq_->size() && seqPos_ < seqPos) {
55 if (alnPos_ == seq_->size() - 1)
56 throw Exception(
"SequenceWalker::getAlignmentPosition(). Forward1. Position out of bound.");
59 if ((*seq_)[alnPos_] != gap_) {
63 if (seqPos_ != seqPos)
64 throw Exception(
"SequenceWalker::getAlignmentPosition(). Forward2. Position out of bound (" + TextTools::toString(alnPos_) +
")");
68 throw Exception(
"SequenceWalker::getAlignmentPosition(). Backward. Position out of bound.");
69 while (alnPos_ > 0 && seqPos_ > seqPos) {
71 if ((*seq_)[alnPos_] != gap_) {
75 if (seqPos_ != seqPos)
76 throw Exception(
"SequenceWalker::getAlignmentPosition(). Position out of bound.");
81 size_t SequenceWalker::getSequencePosition(
size_t alnPos)
throw (Exception)
83 if (alnPos == alnPos_)
return seqPos_;
84 if (alnPos >= seq_->size())
85 throw Exception(
"SequenceWalker::getSequencePosition(). Position out of bound.");
86 if (alnPos > alnPos_) {
88 while (alnPos_ < alnPos) {
90 if ((*seq_)[alnPos_] != gap_) {
96 while (alnPos_ > alnPos) {
100 if ((*seq_)[alnPos_ + 1] != gap_) {
This alphabet is used to deal NumericAlphabet.