Ejemplo n.º 1
0
void EnsembleGenerator::generate(unsigned int multi_state_model_size) {
  init();
  if(ensembles_.size() < multi_state_model_size) {
    std::cerr << "Only MultiStateModels up to " << multi_state_model_size
              << " states are supported" << std::endl;
    return;
  }
  for(unsigned int i=1; i<multi_state_model_size; i++) {
    if(ensembles_[i-1].size() > 0) {
      add_one_state(ensembles_[i-1], ensembles_[i]);

      Ensemble rescored_ensemble;
      Vector<Vector<saxs::WeightedFitParameters> > rescored_fps;
      rescore(ensembles_[i], rescored_ensemble, rescored_fps);
      std::cout << "initial size " << ensembles_[i].size() << " after rescoring "
                << rescored_ensemble.size() << std::endl;
      output(rescored_ensemble, rescored_fps);

      if(rescored_ensemble.size() > 0) {
        for(unsigned int j = 0; j < scorers_.size(); j++) {
          SAXSMultiStateModelScore<saxs::ChiScore> *s =
            dynamic_cast<SAXSMultiStateModelScore<saxs::ChiScore>*>(scorers_[j]);
          if(s != NULL) s->set_average_c1_c2(rescored_fps[j]);
        }
      }
    }
  }
}
Ejemplo n.º 2
0
void EnsembleGenerator::init() {
  // reserve space
  ensembles_.insert(ensembles_.begin(), 100, Ensemble());
  ensembles_[0].reserve(N_);

  // generate & score N MultiStateModels of size 1 (=SingleStateModels)
  for(unsigned int i=0; i<N_; i++) {
    MultiStateModel m(1);
    m.add_state(i);
    //m.set_score(get_score(e));

    double min_score = std::numeric_limits<double>::max();
    for (unsigned int j=0; j<scorers_.size(); j++) {
      double score = scorers_[j]->get_score(m);
      if(score < min_score) min_score = score;
    }
    m.set_score(min_score);

    ensembles_[0].push_back(m);
  }

  std::sort(ensembles_[0].begin(), ensembles_[0].end(), CompareMultiStateModels());

  // erase low scoring MultiStateModels
  if(ensembles_[0].size() > K_) {
    ensembles_[0].erase(ensembles_[0].begin()+K_, ensembles_[0].end());
    std::cout << "Number of MultiStateModels of size 1: " << ensembles_[0].size() << std::endl;
  }

  Ensemble rescored_ensemble;
  Vector<Vector<saxs::WeightedFitParameters> > rescored_fps;
  rescore(ensembles_[0], rescored_ensemble, rescored_fps);
  output(rescored_ensemble, rescored_fps);
}
Ejemplo n.º 3
0
/*! update options when dialog accepted
 */
void ContestOptionsDialog::updateOptions()
{
    // need to rescore log if dupe mode, multimode, or mults view change
    settings->setValue(c_masterfile,MasterLineEdit->text());

    bool oldMultiMode=settings->value(c_multimode,c_multimode_def).toBool();
    bool newMultiMode=MultiModeCheckBox->isChecked();
    settings->setValue(c_multimode,newMultiMode);
    if (oldMultiMode!=newMultiMode) emit(multiModeChanged());

    settings->setValue(c_mastermode,MasterCheckBox->isChecked());
    settings->setValue(c_sprintmode,SprintCheckBox->isChecked());
    settings->setValue(c_showmode,ShowModeCheckBox->isChecked());

    int oldDupeMode=settings->value(c_dupemode,c_dupemode_def).toInt();
    int newDupeMode=dupesComboBox->currentIndex();
    settings->setValue(c_dupemode,newDupeMode);

    bool oldShowMults=settings->value(c_showmults,c_showmults_def).toBool();
    bool newShowMults=ShowMultsCheckBox->isChecked();
    settings->setValue(c_showmults,newShowMults);

    bool oldMultsBand=settings->value(c_multsband,c_multsband_def).toBool();
    bool newMultsBand=MultsByBandCheckBox->isChecked();
    settings->setValue(c_multsband,newMultsBand);

    if ((newDupeMode!=oldDupeMode && (oldDupeMode==NO_DUPE_CHECKING || newDupeMode==NO_DUPE_CHECKING))
            || oldShowMults!=newShowMults || oldMultiMode!=newMultiMode
            || oldMultsBand!=newMultsBand) emit(rescore());

    settings->setValue(c_sentexch1,lineEditExch1->text());
    settings->setValue(c_sentexch2,lineEditExch2->text());
    settings->setValue(c_sentexch3,lineEditExch3->text());
    settings->setValue(c_sentexch4,lineEditExch4->text());

    // off time calculation
    bool oldOffTimeEnabled=settings->value(c_off_time_enable,c_off_time_enable_def).toBool();
    bool newOffTimeEnabled=OffTimeCheckBox->isChecked();
    settings->setValue(c_off_time_enable,newOffTimeEnabled);

    int oldMin=settings->value(c_off_time_min,c_off_time_min_def).toInt();
    int newMin=offMinimumLineEdit->text().toInt();
    settings->setValue(c_off_time_min,newMin);

    QDateTime oldStartDate=settings->value(c_off_time_start,c_off_time_start_def).toDateTime();
    QDateTime newStartDate=startDateTimeEdit->dateTime();
    settings->setValue(c_off_time_start,newStartDate);

    QDateTime oldEndDate=settings->value(c_off_time_end,c_off_time_end_def).toDateTime();
    QDateTime newEndDate=endDateTimeEdit->dateTime();
    settings->setValue(c_off_time_end,newEndDate);

    if (oldOffTimeEnabled!=newOffTimeEnabled ||
            oldMin!=newMin || oldStartDate!=newStartDate || oldEndDate!=newEndDate) emit(updateOffTime());

    settings->sync();
  }