53 ingroup_(vector<bool>()),
69 ingroup_(names.size()),
71 group_(names.size()) {}
77 ingroup_(sc.getNumberOfSequences(), true),
78 count_(sc.getNumberOfSequences(), 1),
79 group_(sc.getNumberOfSequences(), 1) {}
115 ingroup_(sc.getNumberOfSequences(), true),
116 count_(sc.getNumberOfSequences(), 1),
117 group_(sc.getNumberOfSequences(), 1) {}
153 ingroup_(psc.getNumberOfSequences()),
154 count_(psc.getNumberOfSequences()),
155 group_(psc.getNumberOfSequences())
175 for (
size_t i = 0; i < nbSeq; i++)
201 count_.erase(
count_.begin() +
static_cast<ptrdiff_t
>(index));
203 group_.erase(
group_.begin() +
static_cast<ptrdiff_t
>(index));
261 count_.push_back(frequency);
278 count_.insert(
count_.begin() +
static_cast<ptrdiff_t
>(sequenceIndex), frequency);
279 ingroup_.insert(
ingroup_.begin() +
static_cast<ptrdiff_t
>(sequenceIndex),
true);
280 group_.insert(
group_.begin() +
static_cast<ptrdiff_t
>(sequenceIndex), 0);
321 for (
size_t i = 0; i <
group_.size(); i++)
323 grp_ids.insert(
group_[i]);
446 throw BadIntegerException(
"PolymorphismSequenceContainer::setSequenceCount: count can't be < 1.",
static_cast<int>(
count));
497 if (
count_[index] - 1 < 1)
498 throw BadIntegerException(
"PolymorphismSequenceContainer::decrementSequenceCount: count can't be < 1.",
static_cast<int>(
count_[index] - 1));
551 for (
unsigned int j = 0; j < freq; ++j) {
552 unique_ptr<Sequence> seqdup(seq.
clone());
554 sites->addSequence(*seqdup);
557 sites->addSequence(seq);
560 return sites.release();
virtual const Sequence & getSequence(size_t sequenceIndex) const=0
virtual size_t getNumberOfSequences() const=0
The PolymorphismSequenceContainer class.
void clear()
Clear the container of all its sequences.
std::vector< unsigned int > count_
void setAsIngroupMember(size_t index)
Set a sequence as ingroup member by index.
void setAsOutgroupMember(size_t index)
Set a sequence as outgroup member by index.
virtual ~PolymorphismSequenceContainer()
Destroy a PolymorphismSequenceContainer.
bool isIngroupMember(size_t index) const
Tell if the sequence is ingroup by index.
unsigned int getSequenceCount(size_t index) const
Get the count of a sequence by index.
SiteContainer * toSiteContainer() const
convert the container to a site container, with sequences dulicated according to their respective fre...
void addSequenceWithFrequency(const Sequence &sequence, unsigned int frequency, bool checkName=true)
Add a sequence to the container.
PolymorphismSequenceContainer & operator=(const PolymorphismSequenceContainer &psc)
Operator= : copy operator.
void incrementSequenceCount(size_t index)
Add 1 to the sequence count.
void decrementSequenceCount(size_t index)
Removz 1 to the sequence count.
std::set< size_t > getAllGroupsIds() const
Get all the groups identifiers.
void setSequenceCount(size_t index, unsigned int count)
Set the count of a sequence by index.
size_t getNumberOfGroups() const
Get the number of groups.
PolymorphismSequenceContainer(const Alphabet *alpha)
Build a new empty PolymorphismSequenceContainer.
void deleteSequence(size_t index)
Delete a sequence by index.
Sequence * removeSequence(size_t index)
Remove a sequence by index and return a pointer to this removed sequence.
void setGroupId(size_t index, size_t group_id)
Set the group identifier of a sequence.
std::vector< size_t > group_
size_t getGroupId(size_t index) const
Get the group identifier of the sequence.
std::vector< bool > ingroup_
Sequence * clone() const=0
virtual const std::string & getName() const=0
virtual const Alphabet * getAlphabet() const=0
const Sequence & getSequence(size_t sequenceIndex) const
void addSequence(const Sequence &sequence, bool checkName=true)
VectorSiteContainer & operator=(const VectorSiteContainer &vsc)
VectorSiteContainer(const std::vector< const CruxSymbolListSite * > &vs, const Alphabet *alpha, bool checkPositions=true)
Sequence * removeSequence(size_t sequenceIndex)
size_t getSequencePosition(const std::string &name) const
size_t getNumberOfSequences() const
std::string toString(T t)
std::size_t count(const std::string &s, const std::string &pattern)