#include "derreprfbr2013window.h" #include "ui_derreprfbr2013window.h" #include "createdialogs.h" #include "DEC-0.0/DerevyankoReport.h" #include DerRepRFBR2013window::DerRepRFBR2013window(QWidget *parent) : QWidget(parent), ui(new Ui::DerRepRFBR2013window) { ui->setupUi(this); setParametersSettings(); editText_flag = 0; connect(this, SIGNAL(drawGraph(QCustomPlot *)), &derRep2013Qplot, SLOT(drawGraphics(QCustomPlot*))); } DerRepRFBR2013window::~DerRepRFBR2013window() { delete ui; } void DerRepRFBR2013window::startDraw() { emit drawGraph(ui->Plot_widget); } void DerRepRFBR2013window::setParametersSettings() { ui->birthRate_doubleSpinBox->setRange(0, 100); ui->birthRate_doubleSpinBox->setSingleStep(0.1); ui->birthRate_doubleSpinBox->setValue(0.25f); ui->deltaBirth_doubleSpinBox->setRange(0, 100); ui->deltaBirth_doubleSpinBox->setSingleStep(0.01); ui->deltaBirth_doubleSpinBox->setValue(0.0002f); ui->migr_f_G_spinBox->setRange(0, 10000); ui->migr_f_G_spinBox->setSingleStep(50); ui->migr_f_G_spinBox->setValue(100); ui->migr_A_B_spinBox->setRange(0, 10000); ui->migr_A_B_spinBox->setSingleStep(50); ui->migr_A_B_spinBox->setValue(100); ui->migr_A_C_spinBox->setRange(0, 10000); ui->migr_A_C_spinBox->setSingleStep(50); ui->migr_A_C_spinBox->setValue(150); ui->migr_A_D_spinBox->setRange(0, 10000); ui->migr_A_D_spinBox->setSingleStep(50); ui->migr_A_D_spinBox->setValue(200); ui->migr_A_E_spinBox->setRange(0, 10000); ui->migr_A_E_spinBox->setSingleStep(50); ui->migr_A_E_spinBox->setValue(250); ui->migr_A_F_spinBox->setRange(0, 10000); ui->migr_A_F_spinBox->setSingleStep(50); ui->migr_A_F_spinBox->setValue(300); ui->part_f_G_doubleSpinBox->setRange(0, 100); ui->part_f_G_doubleSpinBox->setSingleStep(0.01); ui->part_f_G_doubleSpinBox->setValue(0.01f); ui->part_G_f_doubleSpinBox->setRange(0, 100); ui->part_G_f_doubleSpinBox->setSingleStep(0.01); ui->part_G_f_doubleSpinBox->setValue(0.01f); ui->part_A_B_doubleSpinBox->setRange(0, 100); ui->part_A_B_doubleSpinBox->setSingleStep(0.01); ui->part_A_B_doubleSpinBox->setValue(0.01f); ui->part_B_A_doubleSpinBox->setRange(0, 100); ui->part_B_A_doubleSpinBox->setSingleStep(0.01); ui->part_B_A_doubleSpinBox->setValue(0.01f); ui->part_A_C_doubleSpinBox->setRange(0, 100); ui->part_A_C_doubleSpinBox->setSingleStep(0.01); ui->part_A_C_doubleSpinBox->setValue(0.01f); ui->part_A_D_doubleSpinBox->setRange(0, 100); ui->part_A_D_doubleSpinBox->setSingleStep(0.01); ui->part_A_D_doubleSpinBox->setValue(0.01f); ui->part_A_E_doubleSpinBox->setRange(0, 100); ui->part_A_E_doubleSpinBox->setSingleStep(0.01); ui->part_A_E_doubleSpinBox->setValue(0.01f); ui->part_A_F_doubleSpinBox->setRange(0, 100); ui->part_A_F_doubleSpinBox->setSingleStep(0.01); ui->part_A_F_doubleSpinBox->setValue(0.01f); ui->pop_comboBox->addItem("Pop_f", QVariant(0)); ui->pop_comboBox->addItem("Pop_G", QVariant(1)); ui->evolTime_spinBox->setRange(0, 100000); ui->evolTime_spinBox->setSingleStep(100); ui->evolTime_spinBox->setValue(10); } void DerRepRFBR2013window::on_pop_comboBox_currentIndexChanged(int index) { if (editText_flag == 0) { int ind = ui->pop_comboBox->itemData(ui->pop_comboBox->currentIndex()).toInt(); ui->textEdit->clear(); ui->textEdit->setTextBackgroundColor(Qt::cyan); ui->textEdit->setText("Males"); int i = 0; std::cout << ind << std::endl; for (std::list::iterator it = DerevyankoReport::pops[ind]->males.begin(); it != DerevyankoReport::pops[ind]->males.end(); it++) { i++; if (i < 10) { ui->textEdit->append(QString::fromStdString((*it)->getGenotype().toSimpleFasta())); } } ui->textEdit->setTextBackgroundColor(Qt::magenta); ui->textEdit->append("Females"); int j = 0; for (std::list::iterator it = DerevyankoReport::pops[ind]->females.begin(); it != DerevyankoReport::pops[ind]->females.end(); it++) { j++; if (j < 10) { ui->textEdit->append(QString::fromStdString((*it)->getGenotype().toSimpleFasta())); } } } } void DerRepRFBR2013window::on_split_pushButton_clicked() { CreateDialogs dialog(this, 6, "report2013"); int ret = dialog.exec(); if (ret == QDialog::Rejected) { return; } if (dialog.checkPopName()) { QMessageBox::information(this, "Information", "Enter pop name!", QMessageBox::Ok, 0); return; } DerevyankoReport::separatePop(dialog.getPopName(), dialog.getFounderVal(), dialog.getSepPopInd()); //DerevyankoReport::evolution(dialog.getEvolTime()); ui->pop_comboBox->addItem(DerevyankoReport::populNames[DerevyankoReport::populNames.size() - 1]); ui->pop_comboBox->addItem(DerevyankoReport::populNames[DerevyankoReport::populNames.size() - 2]); emit drawGraph(ui->Plot_widget); } void DerRepRFBR2013window::on_evol_pushButton_clicked() { DerevyankoReport::evolution(ui->evolTime_spinBox->value()); emit drawGraph(ui->Plot_widget); }