X-Git-Url: http://woldlab.caltech.edu/gitweb/?a=blobdiff_plain;f=alg%2Fmussa.hpp;h=152d8217349568755913e67c1a77fed6aaa6eaa6;hb=6d25d4d945af696134bdf788b111f38b197b1a15;hp=5713a6dd9f0523bc8a71968c6ba09c0596f6f14f;hpb=bf446426ac0dadaa19a706213fa1aefdfa356cb3;p=mussa.git diff --git a/alg/mussa.hpp b/alg/mussa.hpp index 5713a6d..152d821 100644 --- a/alg/mussa.hpp +++ b/alg/mussa.hpp @@ -13,7 +13,8 @@ // ---------------------------------------- // ---------- mussa_class.hh ----------- // ---------------------------------------- -#include +#include +#include #include #include @@ -31,39 +32,64 @@ 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 &); - void save(); + //! 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 void save_muway(boost::filesystem::path save_path); //! load a saved analysis directory 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() @@ -90,6 +116,12 @@ 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? + bool empty() const; //! return the refined paths found by the nway analysis. const NwayPaths& paths() const; @@ -155,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(); @@ -183,6 +221,7 @@ public: int window; //! how many base pairs need to match order to record a window as conserved int threshold; + //! stores current filter used by GUI to change the connections shown int soft_thres; //! which nway comparison algorithm to use. enum analysis_modes ana_mode; @@ -200,9 +239,13 @@ 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 + boost::filesystem::path analysis_path; + //! flag indicating if we have unsaved changes + bool dirty; // Private methods //! runs all the seqcomps needed to support the nway comparison