X-Git-Url: http://woldlab.caltech.edu/gitweb/?a=blobdiff_plain;f=alg%2Fmussa.hpp;h=152d8217349568755913e67c1a77fed6aaa6eaa6;hb=6d25d4d945af696134bdf788b111f38b197b1a15;hp=84fcd92ab9a0670416048a14b323c104202811c6;hpb=cc7ad593973bcff9562c53ae42601d3f548d5ed3;p=mussa.git diff --git a/alg/mussa.hpp b/alg/mussa.hpp index 84fcd92..152d821 100644 --- a/alg/mussa.hpp +++ b/alg/mussa.hpp @@ -13,7 +13,8 @@ // ---------------------------------------- // ---------- mussa_class.hh ----------- // ---------------------------------------- -#include +#include +#include #include #include @@ -31,21 +32,31 @@ std::string int_to_str(int an_int); +class Mussa; +//! provide a simple name to point to our Mussa shared_ptr +typedef boost::shared_ptr MussaRef; + class Mussa : public QObject { Q_OBJECT signals: //! call whatever signaling system we want - void progress(const std::string& description, int cur, int max); + void progress(const QString& description, int cur, int max); + //! triggered when our state changes between unsaved(true) and saved(false) + void isModified(bool); public: + typedef std::set motif_set; enum analysis_modes { TransitiveNway, RadialNway, EntropyNway, RecursiveNway }; Mussa(); Mussa(const Mussa &); + //! dynamically construct a new Mussa object and return a reference to it + static MussaRef init(); + //! save all of mussa void save(boost::filesystem::path save_path=""); //! save the nway comparison @@ -54,19 +65,31 @@ public: void load(boost::filesystem::path ana_path); // ! return path to the where the analysis is stored boost::filesystem::path get_analysis_path() const; + //! set analysis path + void set_analysis_path(boost::filesystem::path); //! clear parameters and initialize data lists void clear(); //! set parameters from a file - 'mupa' ~ mussa parameters - void load_mupa_file(std::string para_file_path) { load_mupa_file(boost::filesystem::path(para_file_path));} + void load_mupa_file(std::string para_file_path); void load_mupa_file(boost::filesystem::path para_file_path); + //! load mussa parameters from a stream, specifing output location + void load_mupa_stream( + std::istream & para_file, + boost::filesystem::path& file_path_base + ); + // set parameters individually (eg from user input into gui classes) //! set analysis name void set_name(std::string a_name); //! return name for this analysis - std::string get_name(); + std::string get_name() const; + //! return a reasonable window title for this analysis + /*! this returns the "variable" portion for a title + */ + std::string get_title() const; //! return number of sequences in this analyzis /*! this returns either the_seqs.size() or seq_files.size() @@ -93,6 +116,8 @@ public: enum analysis_modes get_analysis_mode() const; //! return a string name for an analysis mode std::string get_analysis_mode_name() const; + //! set our current dirty state + void set_dirty(bool); //! return if we have unsaved changes bool is_dirty() const; //! is there anything loaded into this analysis? @@ -162,18 +187,24 @@ public: */ void set_motifs(const std::vector& motifs, const std::vector& colors); - //! load motifs from an ifstream /*! The file should look something like * * where sequence is a string of IUPAC symbols * and red,green,blue are a white space separated list of floats * in the range [0.0, 1.0] */ - void load_motifs(std::istream &); //! load a list of motifs from a file named filename void load_motifs(boost::filesystem::path filename); + //! load motifs from an ifstream + /*! \sa Mussa::load_motifs(boost::filesystem::path) + */ + void load_motifs(std::istream &); + //! save motif list to the specified filename + void save_motifs(boost::filesystem::path filename); + //! save motif list to an ostream + void save_motifs(std::ostream &); //! return our motifs; - const std::set& motifs() const; + const motif_set& motifs() const; //! return color mapper boost::shared_ptr colorMapper(); @@ -208,7 +239,7 @@ public: NwayPaths the_paths; //! motif list - std::set motif_sequences; + motif_set motif_sequences; //! color manager boost::shared_ptr color_mapper; //! path to our analysis @@ -221,6 +252,4 @@ public: void seqcomp(); }; -//! provide a simple name to point to our Mussa shared_ptr -typedef boost::shared_ptr MussaRef; #endif