X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=blobdiff_plain;f=alg%2Fsequence.hpp;h=c2de433fca1b9602f4c39065054c06f732047016;hp=9c7ddd4a1e9fb8a397e1332f95dd346ac19ca462;hb=67888dae3b16b9d69aa846e393f11e7ff3633f16;hpb=5c3dc8c42679629c19ece07c0e63a53b1c69663f diff --git a/alg/sequence.hpp b/alg/sequence.hpp index 9c7ddd4..c2de433 100644 --- a/alg/sequence.hpp +++ b/alg/sequence.hpp @@ -38,21 +38,27 @@ // 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 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 - 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& 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 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); } };