13 //#include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
14 #include "qui/mussa_setup_dialog/SequenceSetupFrame.hpp"
15 #include "qui/mussa_setup_dialog/MussaSetupWidget.hpp"
16 #include "qui/mussa_setup_dialog/SetupInfo.hpp"
17 #include "alg/mussa.hpp"
18 #include "mussa_exceptions.hpp"
20 MussaSetupWidget::MussaSetupWidget(QWidget *parent)
22 createPushButton(tr("Create")),
23 cancelPushButton(tr("Cancel")),
28 QLabel *analysisNameLabel = new QLabel(tr("Analysis Name"));
29 analysisNameLabel->setBuddy(&analysisNameLineEdit);
32 QLabel *windowLabel = new QLabel(tr("Window"));
33 windowLabel->setBuddy(&windowLineEdit);
36 QLabel *thresholdLabel = new QLabel(tr("Threshold"));
37 thresholdLabel->setBuddy(&thresholdLineEdit);
39 // Number of sequences
40 QLabel *numOfSequencesLabel = new QLabel(tr("Number of sequences"));
41 numOfSequencesLabel->setBuddy(&numOfSequencesSpinBox);
42 numOfSequencesSpinBox.setMinimum(1);
44 //Sequence setup frame
45 seqSetupFrame = new SequenceSetupFrame;
47 connect(&numOfSequencesSpinBox, SIGNAL(valueChanged(int)),
48 seqSetupFrame, SLOT(changeSequenceCount(int)));
50 numOfSequencesSpinBox.setValue(2);
52 // Create Experiment Button
53 connect(&createPushButton, SIGNAL(pressed()),
54 this, SLOT(mussaCreatePushed()));
57 connect(&cancelPushButton, SIGNAL(pressed()),
58 this, SLOT(mussaCancelPushed()));
61 QHBoxLayout *row1Layout = new QHBoxLayout;
62 QHBoxLayout *row2Layout = new QHBoxLayout;
63 QVBoxLayout *mainLayout = new QVBoxLayout;
64 QHBoxLayout *buttonLayout = new QHBoxLayout;
66 row1Layout->addWidget(analysisNameLabel);
67 row1Layout->addWidget(&analysisNameLineEdit);
69 row2Layout->addWidget(windowLabel);
70 row2Layout->addWidget(&windowLineEdit);
71 row2Layout->addWidget(thresholdLabel);
72 row2Layout->addWidget(&thresholdLineEdit);
73 row2Layout->addWidget(numOfSequencesLabel);
74 row2Layout->addWidget(&numOfSequencesSpinBox);
76 buttonLayout->addWidget(&createPushButton);
77 buttonLayout->addWidget(&cancelPushButton);
79 mainLayout->addLayout(row1Layout);
80 mainLayout->addLayout(row2Layout);
81 mainLayout->addWidget(seqSetupFrame);
82 mainLayout->addLayout(buttonLayout);
83 setLayout(mainLayout);
87 void MussaSetupWidget::mussaCreatePushed()
89 emit createButtonPushed();
92 void MussaSetupWidget::mussaCancelPushed()
94 emit cancelButtonPushed();
97 Mussa* MussaSetupWidget::getMussaObject()
99 Mussa *mussa = new Mussa;
102 std::string annotFile;
107 list<SetupInfo *> setupInfoList = seqSetupFrame->getSetupInfo();
109 for (list<SetupInfo *>::iterator setup_item = setupInfoList.begin();
110 setup_item != setupInfoList.end();
113 seqFile = (*setup_item)->getSeqFile();
114 annotFile = (*setup_item)->getAnnotFile();
115 fastaIndex = (*setup_item)->getFastaIndex();
116 start = (*setup_item)->getSubSeqStart();
117 end = (*setup_item)->getSubSeqEnd();
119 mussa->load_sequence(seqFile, annotFile, fastaIndex, start, end);
121 setupInfoList.clear();
123 int win_size = windowLineEdit.text().toInt();
124 int threshold = thresholdLineEdit.text().toInt();
125 if (win_size == 0 or threshold == 0) {
126 throw mussa_load_error("must set analysis parameters");
128 mussa->analyze(win_size, threshold, Mussa::TransitiveNway, 0.0);
134 //MussaSetupWidget::MussaSetupWidget(const MussaSetupWidget& msw)
135 // : analysisNameLineEdit(msw.analysisNameLineEdit),
136 // windowLineEdit(msw.windowLineEdit),
137 // thresholdLineEdit(msw.thresholdLineEdit),
138 // numOfSequencesLineEdit(msw.numOfSequencesLineEdit),
139 // seqSetupFrame(msw.seqSetupFrame)