bpp-seq  2.2.0
SequenceContainer.h
Go to the documentation of this file.
1 //
2 // File: SequenceContainer.h
3 // Created by: Guillaume Deuchst
4 // Julien Dutheil
5 // Created on: Fri Jul 25 2003
6 //
7 
8 /*
9 Copyright or © or Copr. Bio++ Development Team, (November 17, 2004)
10 
11 This software is a computer program whose purpose is to provide classes
12 for sequences analysis.
13 
14 This software is governed by the CeCILL license under French law and
15 abiding by the rules of distribution of free software. You can use,
16 modify and/ or redistribute the software under the terms of the CeCILL
17 license as circulated by CEA, CNRS and INRIA at the following URL
18 "http://www.cecill.info".
19 
20 As a counterpart to the access to the source code and rights to copy,
21 modify and redistribute granted by the license, users are provided only
22 with a limited warranty and the software's author, the holder of the
23 economic rights, and the successive licensors have only limited
24 liability.
25 
26 In this respect, the user's attention is drawn to the risks associated
27 with loading, using, modifying and/or developing or reproducing the
28 software by the user in light of its specific status of free software,
29 that may mean that it is complicated to manipulate, and that also
30 therefore means that it is reserved for developers and experienced
31 professionals having in-depth computer knowledge. Users are therefore
32 encouraged to load and test the software's suitability as regards their
33 requirements in conditions enabling the security of their systems and/or
34 data to be ensured and, more generally, to use and operate it in the
35 same conditions as regards security.
36 
37 The fact that you are presently reading this means that you have had
38 knowledge of the CeCILL license and that you accept its terms.
39 */
40 
41 #ifndef _SEQUENCECONTAINER_H_
42 #define _SEQUENCECONTAINER_H_
43 
44 #include "../Alphabet/Alphabet.h"
45 #include "../Sequence.h"
47 #include <Bpp/Clonable.h>
48 
49 // From the STL:
50 #include <string>
51 
52 namespace bpp
53 {
54 
81  public virtual Clonable
82 {
83  public:
85  virtual ~SequenceContainer() {}
86 
87  public:
93  virtual const Alphabet* getAlphabet() const = 0;
94 
102  virtual const std::vector<int>& getContent(const std::string& name) const throw (SequenceNotFoundException) = 0;
103 
111  virtual std::string toString(const std::string& name) const throw (SequenceNotFoundException) = 0;
112 
120  virtual const Sequence& getSequence(const std::string& name) const throw (SequenceNotFoundException) = 0;
121 
128  virtual bool hasSequence(const std::string& name) const = 0;
129 
139  virtual void addSequence(const Sequence& sequence, bool checkName) throw (Exception) = 0;
140 
153  virtual void setSequence(const std::string& name, const Sequence& sequence, bool checkName) throw (Exception) = 0;
154 
162  virtual Sequence* removeSequence(const std::string& name) throw (SequenceNotFoundException, Exception) = 0;
163 
171  virtual void deleteSequence(const std::string& name) throw (SequenceNotFoundException, Exception) = 0;
172 
178  virtual size_t getNumberOfSequences() const = 0;
179 
185  virtual std::vector<std::string> getSequencesNames() const = 0;
186 
197  virtual void setSequencesNames(const std::vector<std::string>& names, bool checkNames) throw (Exception) = 0;
198 
207  virtual const Comments& getComments(const std::string& name) const throw (SequenceNotFoundException) = 0;
208 
217  virtual void setComments(const std::string& name, const Comments& comments) throw (SequenceNotFoundException) = 0;
218 
224  virtual const Comments& getGeneralComments() const = 0;
225 
231  virtual void setGeneralComments(const Comments& comments) = 0;
232 
236  virtual void deleteGeneralComments() = 0;
237 
241  virtual void clear() = 0;
242 
251  virtual SequenceContainer* createEmptyContainer() const = 0;
252 
273  virtual int& valueAt(const std::string& sequenceName, size_t elementIndex) throw (SequenceNotFoundException, IndexOutOfBoundsException) = 0;
274 
285  virtual const int& valueAt(const std::string& sequenceName, size_t elementIndex) const throw (SequenceNotFoundException, IndexOutOfBoundsException) = 0;
286 
297  virtual int& operator()(const std::string& sequenceName, size_t elementIndex) = 0;
298 
309  virtual const int& operator()(const std::string& sequenceName, size_t elementIndex) const = 0;
311 };
312 
313 } //end of namespace bpp.
314 
315 #endif // _SEQUENCECONTAINER_H_
316 
Exception thrown when a sequence is not found The sequence not found exception base class...
virtual void setSequence(const std::string &name, const Sequence &sequence, bool checkName)=0
Replace a sequence in the container.
virtual Sequence * removeSequence(const std::string &name)=0
Extract (and remove) a sequence from the container.
std::vector< std::string > Comments
Declaration of Comments type.
Definition: Sequence.h:60
virtual void setSequencesNames(const std::vector< std::string > &names, bool checkNames)=0
Set all sequence names.
virtual void clear()=0
Delete all sequences in the container.
This alphabet is used to deal NumericAlphabet.
virtual std::string toString(const std::string &name) const =0
Convert a particular sequence to a string.
The Alphabet interface.
Definition: Alphabet.h:130
virtual int & valueAt(const std::string &sequenceName, size_t elementIndex)=0
Element access function.
virtual void deleteGeneralComments()=0
Delete the comments associated to this container.
virtual size_t getNumberOfSequences() const =0
Get the number of sequences in the container.
virtual int & operator()(const std::string &sequenceName, size_t elementIndex)=0
Element access operator.
virtual const Comments & getGeneralComments() const =0
Get the comments of this container.
virtual void deleteSequence(const std::string &name)=0
Delete a sequence of the container.
virtual const Comments & getComments(const std::string &name) const =0
Get comments of a particular sequence.
virtual const Sequence & getSequence(const std::string &name) const =0
Retrieve a sequence object from the container.
virtual void addSequence(const Sequence &sequence, bool checkName)=0
Add a sequence to the container.
virtual std::vector< std::string > getSequencesNames() const =0
Get all the names of the sequences in the container.
virtual bool hasSequence(const std::string &name) const =0
Check if a sequence with a given name is present in the container.
The sequence interface.
Definition: Sequence.h:74
virtual void setComments(const std::string &name, const Comments &comments)=0
Set the comments of a particular sequence.
virtual const std::vector< int > & getContent(const std::string &name) const =0
Get the content of a sequence.
virtual SequenceContainer * createEmptyContainer() const =0
Return a copy of this container, but with no sequence inside.
virtual const Alphabet * getAlphabet() const =0
Get sequence container&#39;s alphabet.
virtual void setGeneralComments(const Comments &comments)=0
Set the comments of this container.
The SequenceContainer interface.