qui/mussa_setup_dialog/MussaSetupDialog.hpp \
qui/mussa_setup_dialog/SequenceSetupWidget.hpp \
qui/mussa_setup_dialog/SequenceSetupFrame.hpp \
+ qui/mussa_setup_dialog/SetupInfo.hpp \
alg/annotation_colors.hpp \
alg/color.hpp \
alg/conserved_path.hpp \
qui/mussa_setup_dialog/MussaSetupDialog.cpp \
qui/mussa_setup_dialog/SequenceSetupWidget.cpp \
qui/mussa_setup_dialog/SequenceSetupFrame.cpp \
+ qui/mussa_setup_dialog/SetupInfo.cpp \
alg/annotation_colors.cpp \
alg/color.cpp \
alg/conserved_path.cpp \
if (msd->exec())
{
std::cout << "New mussa exp. defined!\n";
+ Mussa *m = 0;
+ m = msd->getMussa();
+ std::cout << " Mussa Object at: " << m << "\n";
+ delete m;
}
else
{
#include "qui/mussa_setup_dialog/MussaSetupWidget.hpp"
#include "qui/mussa_setup_dialog/MussaSetupDialog.hpp"
+#include "alg/mussa.hpp"
MussaSetupDialog::MussaSetupDialog(QWidget *parent, Qt::WFlags f)
{
setupWidget = new MussaSetupWidget;
+ connect(setupWidget, SIGNAL(createButtonPushed()),
+ this, SLOT(accept()));
+ connect(setupWidget, SIGNAL(cancelButtonPushed()),
+ this, SLOT(reject()));
+
+
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(setupWidget);
std::cout << "Rejected\n";
done(0);
}
+
+Mussa* MussaSetupDialog::getMussa()
+{
+ return setupWidget->getMussaObject();
+}
#include <QWidget>
class MussaSetupWidget;
+class Mussa;
class MussaSetupDialog : public QDialog
{
public:
MussaSetupDialog(QWidget *parent = 0, Qt::WFlags f = 0);
+ Mussa* getMussa();
+
public slots:
void accept();
void reject();
#include <QFrame>
#include <QLabel>
#include <QLineEdit>
+#include <QSpinBox>
#include <QVBoxLayout>
#include <QHBoxLayout>
+#include <QPushButton>
+
+#include <list>
//#include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
#include "qui/mussa_setup_dialog/SequenceSetupFrame.hpp"
#include "qui/mussa_setup_dialog/MussaSetupWidget.hpp"
+#include "qui/mussa_setup_dialog/SetupInfo.hpp"
+#include "alg/mussa.hpp"
MussaSetupWidget::MussaSetupWidget(QWidget *parent)
: QWidget(parent),
analysisNameLineEdit(0),
windowLineEdit(0),
thresholdLineEdit(0),
- numOfSequencesLineEdit(0),
+ numOfSequencesSpinBox(0),
+ createPushButton(0),
+ cancelPushButton(0),
seqSetupFrame(0)
{
thresholdLabel->setBuddy(thresholdLineEdit);
// Number of sequences
- numOfSequencesLineEdit = new QLineEdit;
+ numOfSequencesSpinBox = new QSpinBox;
QLabel *numOfSequencesLabel = new QLabel(tr("Number of sequences"));
- numOfSequencesLabel->setBuddy(numOfSequencesLineEdit);
-
- // frame
- //sequenceFrame = new QFrame;
- //sequenceFrame->setFrameStyle(QFrame::Panel | QFrame::Sunken);
- //
- //QVBoxLayout *sequenceLayout = new QVBoxLayout;
- //
- //SequenceSetupWidget *seq1 = new SequenceSetupWidget;
- //sequenceLayout->addWidget(seq1);
- //
- //SequenceSetupWidget *seq2 = new SequenceSetupWidget;
- //sequenceLayout->addWidget(seq2);
- //
- //sequenceFrame->setLayout(sequenceLayout);
+ numOfSequencesLabel->setBuddy(numOfSequencesSpinBox);
+ numOfSequencesSpinBox->setMinimum(1);
+
+
+ //Sequence setup frame
seqSetupFrame = new SequenceSetupFrame;
- seqSetupFrame->changeSequenceCount(3);
- seqSetupFrame->changeSequenceCount(2);
- //connect(numOfSequencesLineEdit, SIGNAL(changed,
- // seqSetupFrame, SLOT(changeSequenceCount(int)));
+ connect(numOfSequencesSpinBox, SIGNAL(valueChanged(int)),
+ seqSetupFrame, SLOT(changeSequenceCount(int)));
+
+ numOfSequencesSpinBox->setValue(1);
+
+ // Create Experiment Button
+ createPushButton = new QPushButton(tr("Create"));
+ connect(createPushButton, SIGNAL(pressed()),
+ this, SLOT(mussaCreatePushed()));
+
+ // Cancle Button
+ cancelPushButton = new QPushButton(tr("Cancel"));
+ connect(cancelPushButton, SIGNAL(pressed()),
+ this, SLOT(mussaCancelPushed()));
// LAYOUT
QHBoxLayout *row1Layout = new QHBoxLayout;
QHBoxLayout *row2Layout = new QHBoxLayout;
QVBoxLayout *mainLayout = new QVBoxLayout;
+ QHBoxLayout *buttonLayout = new QHBoxLayout;
row1Layout->addWidget(analysisNameLabel);
row1Layout->addWidget(analysisNameLineEdit);
row2Layout->addWidget(thresholdLabel);
row2Layout->addWidget(thresholdLineEdit);
row2Layout->addWidget(numOfSequencesLabel);
- row2Layout->addWidget(numOfSequencesLineEdit);
+ row2Layout->addWidget(numOfSequencesSpinBox);
+
+ buttonLayout->addWidget(createPushButton);
+ buttonLayout->addWidget(cancelPushButton);
mainLayout->addLayout(row1Layout);
mainLayout->addLayout(row2Layout);
mainLayout->addWidget(seqSetupFrame);
+ mainLayout->addLayout(buttonLayout);
setLayout(mainLayout);
}
-MussaSetupWidget::MussaSetupWidget(const MussaSetupWidget& msw)
- : analysisNameLineEdit(msw.analysisNameLineEdit),
- windowLineEdit(msw.windowLineEdit),
- thresholdLineEdit(msw.thresholdLineEdit),
- numOfSequencesLineEdit(msw.numOfSequencesLineEdit),
- seqSetupFrame(msw.seqSetupFrame)
+void MussaSetupWidget::mussaCreatePushed()
+{
+ emit createButtonPushed();
+}
+
+void MussaSetupWidget::mussaCancelPushed()
{
+ emit cancelButtonPushed();
}
+
+Mussa* MussaSetupWidget::getMussaObject()
+{
+ Mussa *mussa = new Mussa;
+
+
+
+ std::string seqFile;
+ std::string annotFile;
+ int fastaIndex;
+ int start;
+ int end;
+
+ std::list<SetupInfo *> setupInfoList = seqSetupFrame->getSetupInfo();
+
+ const int count = setupInfoList.size();
+
+ SetupInfo *setupInfo = 0;
+ for (int i=0; i < count; i++)
+ {
+ setupInfo = setupInfoList.back();
+ setupInfoList.pop_back();
+
+ seqFile = setupInfo->getSeqFile();
+ annotFile = setupInfo->getAnnotFile();
+ fastaIndex = setupInfo->getFastaIndex();
+ start = setupInfo->getSubSeqStart();
+ end = setupInfo->getSubSeqEnd();
+
+ mussa->load_sequence(seqFile, annotFile, fastaIndex, start, end);
+ delete setupInfo;
+ }
+
+ mussa->analyze(0, 0, Mussa::TransitiveNway, 0.0);
+
+ return mussa;
+}
+
+//MussaSetupWidget::MussaSetupWidget(const MussaSetupWidget& msw)
+// : analysisNameLineEdit(msw.analysisNameLineEdit),
+// windowLineEdit(msw.windowLineEdit),
+// thresholdLineEdit(msw.thresholdLineEdit),
+// numOfSequencesLineEdit(msw.numOfSequencesLineEdit),
+// seqSetupFrame(msw.seqSetupFrame)
+//{
+//}
//class QFrame;
class QLineEdit;
+class QSpinBox;
+class QPushButton;
class SequenceSetupFrame;
+class Mussa;
class MussaSetupWidget : public QWidget
{
public:
MussaSetupWidget(QWidget *parent = 0);
- MussaSetupWidget(const MussaSetupWidget&);
+ // MussaSetupWidget(const MussaSetupWidget&);
+
+ Mussa* getMussaObject();
+
+signals:
+ void createButtonPushed();
+ void cancelButtonPushed();
+
+private slots:
+ void mussaCreatePushed();
+ void mussaCancelPushed();
private:
+
QLineEdit *analysisNameLineEdit;
QLineEdit *windowLineEdit;
QLineEdit *thresholdLineEdit;
- QLineEdit *numOfSequencesLineEdit;
+ QSpinBox *numOfSequencesSpinBox;
+ QPushButton *createPushButton;
+ QPushButton *cancelPushButton;
SequenceSetupFrame *seqSetupFrame;
};
#include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
#include "qui/mussa_setup_dialog/SequenceSetupFrame.hpp"
+#include "qui/mussa_setup_dialog/SetupInfo.hpp"
SequenceSetupFrame::SequenceSetupFrame(QWidget *parent)
sequenceFrame = new QFrame;
sequenceFrame->setFrameStyle(QFrame::Panel | QFrame::Sunken);
- sequenceLayout = new QVBoxLayout;
-
-
+ sequenceLayout = new QVBoxLayout;
sequenceFrame->setLayout(sequenceLayout);
mainLayout->addWidget(sequenceFrame);
setLayout(mainLayout);
+ //Initialize to one sequence
+ changeSequenceCount(1);
}
-SequenceSetupFrame::SequenceSetupFrame(const SequenceSetupFrame &ssf)
- : sequenceFrame(ssf.sequenceFrame),
- sequenceLayout(ssf.sequenceLayout),
- seqCount(ssf.seqCount)//,
- //seqList(0)
-{
-}
+
+//SequenceSetupFrame::SequenceSetupFrame(const SequenceSetupFrame &ssf)
+// : sequenceFrame(ssf.sequenceFrame),
+// sequenceLayout(ssf.sequenceLayout),
+// seqCount(ssf.seqCount)//,
+// //seqList(0)
+//{
+//}
void SequenceSetupFrame::changeSequenceCount(int newSeqCount)
{
{
int numSeqsToAdd = newSeqCount - curSeqCount;
+ SequenceSetupWidget *seq = 0;
for (int i = 1; i <= numSeqsToAdd; i++)
{
- SequenceSetupWidget *seq = new SequenceSetupWidget;
- seqList.push_back(*seq);
+ seq = new SequenceSetupWidget;
+ seqList.push_back(seq);
sequenceLayout->addWidget(seq);
}
}
numSeqsToRemove = curSeqCount;
}
- //SequenceSetupWidget *seqWidget = 0;
+ SequenceSetupWidget *seqWidget = 0;
for (int i=1; i <= numSeqsToRemove; i++)
{
- SequenceSetupWidget& seqWidget(seqList.back());
- sequenceLayout->removeWidget(&seqWidget);
+ seqWidget = seqList.back();
+ sequenceLayout->removeWidget(seqWidget);
seqList.pop_back();
- //delete seqWidget;
+ delete seqWidget;
}
}
+}
+
+std::list<SetupInfo *> SequenceSetupFrame::getSetupInfo()
+{
+ const int curSeqCount = seqList.size();
+
+ std::list<SetupInfo *> setupInfoList;
+
+ QString seqFile;
+ QString annotFile;
+ int fastaIndex;
+ int start;
+ int end;
+
+
+ SequenceSetupWidget *seq = 0;
+ //SetupInfo *setupInfo = 0;
+ for (int i = 0; i < curSeqCount; i++)
+ {
+ seq = seqList.back();
+
+ seqFile = seq->getSeqFile();
+ annotFile = seq->getAnnotFile();
+ fastaIndex = seq->getFastaIndex();
+ start = seq->getStart();
+ end = seq->getEnd();
+
+ seqList.push_front(seq);
+ seqList.pop_back();
+ setupInfoList.push_back(new SetupInfo(seqFile.toStdString(),
+ annotFile.toStdString(),
+ fastaIndex, start, end));
+
+ }
+
+ return setupInfoList;
}
+
//#include <QList>
#include <QWidget>
#include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
+#include "qui/mussa_setup_dialog/SetupInfo.hpp"
class QFrame;
class QVBoxLayout;
public:
SequenceSetupFrame(QWidget *parent = 0);
- SequenceSetupFrame(const SequenceSetupFrame&);
+ //SequenceSetupFrame(const SequenceSetupFrame&);
+
+ std::list<SetupInfo *> getSetupInfo();
public slots:
void changeSequenceCount(int seqCount);
//QList<SequenceSetupWidget> *seqList;
- std::list<SequenceSetupWidget> seqList;
+ std::list<SequenceSetupWidget*> seqList;
QFrame *sequenceFrame;
QVBoxLayout *sequenceLayout;
setLayout(mainLayout);
}
-SequenceSetupWidget::SequenceSetupWidget(const SequenceSetupWidget& ssw) :
- sequenceLineEdit(ssw.sequenceLineEdit),
- annotLineEdit(ssw.annotLineEdit),
- fastaIndexLineEdit(ssw.fastaIndexLineEdit),
- seqStartLineEdit(ssw.seqStartLineEdit),
- seqStopLineEdit(ssw.seqStopLineEdit)
-{
-}
+//SequenceSetupWidget::SequenceSetupWidget(const SequenceSetupWidget& ssw) :
+// sequenceLineEdit(ssw.sequenceLineEdit),
+// annotLineEdit(ssw.annotLineEdit),
+// fastaIndexLineEdit(ssw.fastaIndexLineEdit),
+// seqStartLineEdit(ssw.seqStartLineEdit),
+// seqStopLineEdit(ssw.seqStopLineEdit)
+//{
+//}
void SequenceSetupWidget::promptForFastaFile()
{
#define _SEQUENCE_SETUP_WIDGET_H_
#include <QWidget>
-
-class QLineEdit;
+#include <QString>
+#include <QLineEdit>
class SequenceSetupWidget : public QWidget
{
public:
SequenceSetupWidget(QWidget *parent = 0);
- SequenceSetupWidget(const SequenceSetupWidget&);
+ // SequenceSetupWidget(const SequenceSetupWidget&);
+
+ QString getSeqFile() { return sequenceLineEdit->text(); }
+ QString getAnnotFile() { return annotLineEdit->text(); }
+ int getFastaIndex() { return fastaIndexLineEdit->text().toInt(); }
+ int getStart() { return seqStartLineEdit->text().toInt(); }
+ int getEnd() { return seqStopLineEdit->text().toInt(); }
+
public slots:
void promptForFastaFile();
--- /dev/null
+#include "qui/mussa_setup_dialog/SetupInfo.hpp"
+
+SetupInfo::SetupInfo(std::string newSeqFile, std::string newAnnotFile,
+ int newFastaIndex, int newSubSeqStart, int newSubSeqEnd)
+ : seqFile(newSeqFile),
+ annotFile(newAnnotFile),
+ fastaIndex(newFastaIndex),
+ subSeqStart(newSubSeqStart),
+ subSeqEnd(newSubSeqEnd)
+{
+
+}
--- /dev/null
+#ifndef _SETUP_INFO_H_
+#define _SETUP_INFO_H_
+
+#include <string>
+
+class SetupInfo
+{
+public:
+ SetupInfo(std::string seqFile,
+ std::string annotFile,
+ int fastaIndex,
+ int subSeqStart=0,
+ int subSeqEnd=0);
+
+ std::string getSeqFile() { return seqFile; };
+ std::string getAnnotFile() { return annotFile; };
+ int getFastaIndex() { return fastaIndex; };
+ int getSubSeqStart() { return subSeqStart; };
+ int getSubSeqEnd() { return subSeqEnd; };
+
+private:
+ std::string seqFile;
+ std::string annotFile;
+ int fastaIndex;
+ int subSeqStart;
+ int subSeqEnd;
+
+};
+
+#endif