remove annot class in favor of SeqSpan
[mussa.git] / alg / sequence.hpp
index 9c7ddd4a1e9fb8a397e1332f95dd346ac19ca462..c2de433fca1b9602f4c39065054c06f732047016 100644 (file)
 
 // Sequence data class
 
-//! Attach annotation information to a sequence track
-struct annot
+/* The way that motifs are found currently doesn't really 
+ * indicate that the match was a reverse compliment
+ */
+struct motif
 {
-  annot();
-  annot(int begin, int end, std::string type, std::string name);
-  ~annot();
-  
+  motif();
+  //motif(int begin, int end, std::string type, std::string name);
+  //! this constructor is for when we're adding motifs to our annotations
+  motif(int begin, std::string motif);
+  ~motif();
+
   int begin;
   int end;
   std::string type;
   std::string name;
+  std::string sequence;
+
+  friend bool operator==(const motif& left, const motif& right);
 
-  friend bool operator==(const annot& left, const annot& right);
-private:
   // boost::serialization support
+private:
   friend class boost::serialization::access;
   template<class Archive>
   void serialize(Archive& ar, const unsigned int /*version*/) {
@@ -60,29 +66,6 @@ private:
     ar & BOOST_SERIALIZATION_NVP(end);
     ar & BOOST_SERIALIZATION_NVP(type);
     ar & BOOST_SERIALIZATION_NVP(name);
-  }
-};
-BOOST_CLASS_EXPORT(annot);
-
-
-/* The way that motifs are found currently doesn't really 
- * indicate that the match was a reverse compliment
- */
-struct motif : public annot
-{
-  std::string sequence;
-
-  motif() : annot(), sequence("") {};
-  //! this constructor is for when we're adding motifs to our annotations
-  motif(int begin, std::string motif);
-  ~motif();
-
-  // boost::serialization support
-private:
-  friend class boost::serialization::access;
-  template<class Archive>
-  void serialize(Archive& ar, const unsigned int /*version*/) {
-    ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(annot);
     ar & BOOST_SERIALIZATION_NVP(sequence);
   }
 };
@@ -226,8 +209,12 @@ public:
    */
   void parse_annot(std::string data, int start_index=0, int end_index=0);
   //! add an annotation to our list of annotations
-  void add_annotation(const annot& a);
-  const std::list<annot>& annotations() const;
+  void add_annotation(const SeqSpanRef a);
+  //! add an annotation using tristan's mussa file paramenters
+  void add_annotation(std::string name, std::string type, size_type start, size_type stop);
+  //! create an initialized annotation with the "standard" types.
+  SeqSpanRef make_annotation(std::string name, std::string type, size_type start, size_type stop) const;
+  const SeqSpanRefList& annotations() const;
   const MotifList& motifs() const;
 
   //! add a motif to our list of motifs
@@ -251,8 +238,8 @@ protected:
   //! species name
   std::string species;
 
-  //! store our oldstyle annotations
-  std::list<annot> annots;
+  //! store annotation regions
+  SeqSpanRefListRef annotation_list;
   //! a seperate list for motifs since we're currently not saving them
   MotifListRef motif_list;
 
@@ -271,7 +258,7 @@ protected:
     ar & BOOST_SERIALIZATION_NVP(seq);
     ar & BOOST_SERIALIZATION_NVP(header);
     ar & BOOST_SERIALIZATION_NVP(species);
-    ar & BOOST_SERIALIZATION_NVP(annots);
+    ar & BOOST_SERIALIZATION_NVP(annotation_list);
     ar & BOOST_SERIALIZATION_NVP(motif_list);
   }
 };