// ----------------------------------------
// ---------- 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;
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 seqcomp();
};
-//! provide a simple name to point to our Mussa shared_ptr
-typedef boost::shared_ptr<Mussa> MussaRef;
#endif