// ----------------------------------------
// ---------- mussa_class.hh -----------
// ----------------------------------------
-#include <QObject>
+#include <QObject>
+#include <QString>
#include <boost/filesystem/path.hpp>
#include <boost/shared_ptr.hpp>
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<Mussa> 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<Sequence> 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 all of mussa
+ void save(const std::string& save_path) {
+ 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);
+ //! load a saved analysis
+ void load(const std::string& ana_path) {
+ 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 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(const std::string& para_file_path) {
+ load_mupa_file(boost::filesystem::path(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
//! must be in range [threshold..window size]
void set_soft_threshold(int sft_thres);
int get_soft_threshold() const;
+
+ //! should we append the window size to the analysis name
+ void set_append_window(bool v);
+ //! should we append the window size to the analysis name
+ bool get_append_window();
+
+ //! should we append the threshold to the analysis name
+ void set_append_threshold(bool v);
+ //! should we append the threshold to the analysis name
+ bool get_append_threshold();
void set_analysis_mode(enum analysis_modes new_ana_mode);
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?
*/
void analyze();
/*! Run the nway filtering algorithm,
- * this might be used when changing the soft threshhold?
+ * automatically called when the soft threshhold has changed?
*/
void nway();
*/
void set_motifs(const std::vector<Sequence>& motifs,
const std::vector<Color>& colors);
- //! load motifs from an ifstream
/*! The file should look something like
* <sequence> <red> <green> <blue>
* 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<Sequence>& motifs() const;
+ const motif_set& motifs() const;
//! return color mapper
boost::shared_ptr<AnnotationColors> colorMapper();
NwayPaths the_paths;
//! motif list
- std::set<Sequence> motif_sequences;
+ motif_set motif_sequences;
//! color manager
boost::shared_ptr<AnnotationColors> color_mapper;
//! path to our analysis
void seqcomp();
};
-//! provide a simple name to point to our Mussa shared_ptr
-typedef boost::shared_ptr<Mussa> MussaRef;
#endif