61 mpCorrelations->setLegendEnabled(
false);
62 mpFisherInformationMatrix->setLegendEnabled(
false);
63 mpFisherInformationEigenvalues->setLegendEnabled(
false);
64 mpFisherInformationEigenvectors->setLegendEnabled(
false);
65 mpFisherInformationScaledMatrix->setLegendEnabled(
false);
66 mpFisherInformationScaledEigenvalues->setLegendEnabled(
false);
67 mpFisherInformationScaledEigenvectors->setLegendEnabled(
false);
88 assert(pDataModel != NULL);
103 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpExperiments),
true);
104 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpValues),
true);
105 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCorrelations),
true);
106 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpFisherInformationPage),
true);
108 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCrossValidations),
true);
109 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCrossValidationValues),
true);
113 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpExperiments),
false);
114 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpValues),
false);
115 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCorrelations),
false);
116 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpFisherInformationPage),
false);
118 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCrossValidations),
false);
119 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCrossValidationValues),
false);
123 QTableWidgetItem * pItem;
137 mpParameters->setRowCount((
int) imax);
139 QColor BackgroundColor = mpParameters->palette().brush(QPalette::Active, QPalette::Base).color();
142 BackgroundColor.getHsv(&h, &s, &v);
149 BackgroundColor.setHsv(0, s, v);
151 for (i = 0; i != imax; i++)
159 std::string Experiments =
160 static_cast<CFitItem *
>(Items[i])->getExperiments();
162 if (Experiments !=
"")
163 Experiments =
"; {" + Experiments +
"}";
168 pItem =
new QTableWidgetItem(
"Not Found");
170 mpParameters->setItem((
int) i, 0, pItem);
172 const C_FLOAT64 & Solution = i < Solutions.
size() ? Solutions[i] : std::numeric_limits<double>::quiet_NaN();
177 mpParameters->setItem((
int) i, 1, pItem);
181 pItem->setBackgroundColor(BackgroundColor);
186 pItem->setForeground(QColor(120, 120, 140));
187 mpParameters->setItem((
int) i, 2, pItem);
190 pItem =
new QTableWidgetItem(QString::number(Solution));
191 mpParameters->setItem((
int) i, 3, pItem);
195 mpParameters->setItem((
int) i, 4, pItem);
199 pItem->setBackgroundColor(BackgroundColor);
202 const C_FLOAT64 & StdDeviation = i < StdDeviations.
size() ? StdDeviations[i] : std::numeric_limits<double>::quiet_NaN();
204 pItem =
new QTableWidgetItem(QString::number(StdDeviation));
206 mpParameters->setItem((
int) i, 5, pItem);
208 pItem =
new QTableWidgetItem(QString::number(fabs(100.0 * StdDeviation / Solution)));
210 mpParameters->setItem((
int) i, 6, pItem);
212 pItem =
new QTableWidgetItem(QString::number(i < Gradients.
size() ? Gradients[i] : std::numeric_limits<double>::quiet_NaN()));
214 mpParameters->setItem((
int) i, 7, pItem);
217 mpParameters->resizeColumnsToContents();
218 mpParameters->resizeRowsToContents();
228 mpExperiments->setRowCount((
int) imax);
230 for (i = 0; i != imax; i++)
234 mpExperiments->setItem((
int) i, 0, pItem);
236 mpExperiments->setItem((
int) i, 1, pItem);
237 pItem =
new QTableWidgetItem(QString::number(Experiment.
getRMS()));
238 mpExperiments->setItem((
int) i, 2, pItem);
239 pItem =
new QTableWidgetItem(QString::number(Experiment.
getErrorMean()));
240 mpExperiments->setItem((
int) i, 3, pItem);
241 pItem =
new QTableWidgetItem(QString::number(Experiment.
getErrorMeanSD()));
242 mpExperiments->setItem((
int) i, 4, pItem);
245 mpExperiments->resizeColumnsToContents();
246 mpExperiments->resizeRowsToContents();
254 mpValues->setRowCount((
int) imax);
256 for (i = 0; i != imax; i++)
263 pItem =
new QTableWidgetItem(
"Not Found");
265 mpValues->setItem((
int) i, 0, pItem);
268 mpValues->setItem((
int) i, 1, pItem);
269 pItem =
new QTableWidgetItem(QString::number(Experiments.
getDependentRMS()[i]));
270 mpValues->setItem((
int) i, 2, pItem);
272 mpValues->setItem((
int) i, 3, pItem);
274 mpValues->setItem((
int) i, 4, pItem);
277 mpValues->resizeColumnsToContents();
278 mpValues->resizeRowsToContents();
287 mpCorrelations->setColorCoding(tcs);
288 mpCorrelations->setColorScalingAutomatic(
true);
292 mpFisherInformationMatrix->setColorCoding(tcs);
293 mpFisherInformationMatrix->setColorScalingAutomatic(
true);
297 mpFisherInformationEigenvalues->setColorCoding(tcs);
298 mpFisherInformationEigenvalues->setColorScalingAutomatic(
true);
300 mpFisherInformationEigenvalues->mpComboRows->setCurrentIndex(1);
303 mpFisherInformationEigenvectors->setColorCoding(tcs);
304 mpFisherInformationEigenvectors->setColorScalingAutomatic(
true);
306 mpFisherInformationEigenvectors->mpComboRows->setCurrentIndex(1);
309 mpFisherInformationScaledMatrix->setColorCoding(tcs);
310 mpFisherInformationScaledMatrix->setColorScalingAutomatic(
true);
314 mpFisherInformationScaledEigenvalues->setColorCoding(tcs);
315 mpFisherInformationScaledEigenvalues->setColorScalingAutomatic(
true);
317 mpFisherInformationScaledEigenvalues->mpComboRows->setCurrentIndex(1);
320 mpFisherInformationScaledEigenvectors->setColorCoding(tcs);
321 mpFisherInformationScaledEigenvectors->setColorScalingAutomatic(
true);
323 mpFisherInformationScaledEigenvectors->mpComboRows->setCurrentIndex(1);
327 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCrossValidations), Enable);
328 mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCrossValidationValues), Enable);
338 mpCrossValidations->setRowCount(imax);
340 for (i = 0; i != imax; i++)
344 mpCrossValidations->setItem(i, 0, pItem);
346 mpCrossValidations->setItem(i, 1, pItem);
347 pItem =
new QTableWidgetItem(QString::number(Experiment.
getRMS()));
348 mpCrossValidations->setItem(i, 2, pItem);
349 pItem =
new QTableWidgetItem(QString::number(Experiment.
getErrorMean()));
350 mpCrossValidations->setItem(i, 3, pItem);
351 pItem =
new QTableWidgetItem(QString::number(Experiment.
getErrorMeanSD()));
352 mpCrossValidations->setItem(i, 4, pItem);
355 mpCrossValidations->resizeColumnsToContents();
356 mpCrossValidations->resizeRowsToContents();
364 mpCrossValidationValues->setRowCount(imax);
366 for (i = 0; i != imax; i++)
373 pItem =
new QTableWidgetItem(
"Not Found");
375 mpCrossValidationValues->setItem(i, 0, pItem);
377 mpCrossValidationValues->setItem(i, 1, pItem);
378 pItem =
new QTableWidgetItem(QString::number(CrossValidations.
getDependentRMS()[i]));
379 mpCrossValidationValues->setItem(i, 2, pItem);
381 mpCrossValidationValues->setItem(i, 3, pItem);
383 mpCrossValidationValues->setItem(i, 4, pItem);
386 mpCrossValidationValues->resizeColumnsToContents();
387 mpCrossValidationValues->resizeRowsToContents();
394 C_INT32 Answer = QMessageBox::No;
397 while (Answer == QMessageBox::No)
403 "TEXT Files (*.txt)",
406 if (fileName.isEmpty())
return;
408 if (!fileName.endsWith(
".txt") &&
409 !fileName.endsWith(
".")) fileName +=
".txt";
411 fileName = fileName.remove(QRegExp(
"\\.$"));
415 if (Answer == QMessageBox::Cancel)
return;
420 if (file.fail())
return;
425 file <<
"Objective Value\tRoot Mean Square\tStandard Deviation" << std::endl;
430 file <<
"Function Evaluations\tCPU Time [s]\tEvaluations/second [1/s]" << std::endl;
433 file << FunctionEvaluations <<
"\t";
434 file << ExecutionTime <<
"\t";
435 file << FunctionEvaluations / ExecutionTime << std::endl << std::endl;
437 if (mpParameters->isEnabled())
440 file <<
"Parameters:" << std::endl;
441 file <<
"Parameter\tLower Bound\tStart Value\tValue\tUpper Bound\tStd. Deviation\tCoeff. of Variation [%]\tGradient" << std::endl;
444 imax = mpParameters->rowCount();
446 for (i = 0; i != imax; i++)
448 file <<
TO_UTF8(mpParameters->item((
int) i, 0)->text()) <<
"\t";
449 file <<
TO_UTF8(mpParameters->item((
int) i, 1)->text()) <<
"\t";
450 file <<
TO_UTF8(mpParameters->item((
int) i, 2)->text()) <<
"\t";
451 file <<
TO_UTF8(mpParameters->item((
int) i, 3)->text()) <<
"\t";
452 file <<
TO_UTF8(mpParameters->item((
int) i, 4)->text()) <<
"\t";
453 file <<
TO_UTF8(mpParameters->item((
int) i, 5)->text()) <<
"\t";
454 file <<
TO_UTF8(mpParameters->item((
int) i, 6)->text()) <<
"\t";
455 file <<
TO_UTF8(mpParameters->item((
int) i, 7)->text()) << std::endl;
461 if (mpExperiments->isEnabled())
464 file <<
"Experiments:" << std::endl;
465 file <<
"Experiment\tObjective Value\tRoot Mean Square\tError Mean\tError Mean Std. Deviation" << std::endl;
468 imax = mpExperiments->rowCount();
470 for (i = 0; i != imax; i++)
472 file <<
TO_UTF8(mpExperiments->item((
int) i, 0)->text()) <<
"\t";
473 file <<
TO_UTF8(mpExperiments->item((
int) i, 1)->text()) <<
"\t";
474 file <<
TO_UTF8(mpExperiments->item((
int) i, 2)->text()) <<
"\t";
475 file <<
TO_UTF8(mpExperiments->item((
int) i, 3)->text()) <<
"\t";
476 file <<
TO_UTF8(mpExperiments->item((
int) i, 4)->text()) << std::endl;
482 if (mpValues->isEnabled())
485 file <<
"Fitted Values:" << std::endl;
486 file <<
"Fitted Value\tObjective Value\tRoot Mean Square\tError Mean\tError Mean Std. Deviation" << std::endl;
489 imax = mpValues->rowCount();
491 for (i = 0; i != imax; i++)
493 file <<
TO_UTF8(mpValues->item((
int) i, 0)->text()) <<
"\t";
494 file <<
TO_UTF8(mpValues->item((
int) i, 1)->text()) <<
"\t";
495 file <<
TO_UTF8(mpValues->item((
int) i, 2)->text()) <<
"\t";
496 file <<
TO_UTF8(mpValues->item((
int) i, 3)->text()) <<
"\t";
497 file <<
TO_UTF8(mpValues->item((
int) i, 4)->text()) << std::endl;
524 if (mpValues->isEnabled())
527 file <<
"Validations:" << std::endl;
528 file <<
"Validation Experiment\t Objective Value\tRoot Mean Square\tError Mean\tError Mean Std. Deviation" << std::endl;
531 imax = mpCrossValidations->rowCount();
533 for (i = 0; i != imax; i++)
535 file <<
TO_UTF8(mpCrossValidations->item((
int) i, 0)->text()) <<
"\t";
536 file <<
TO_UTF8(mpCrossValidations->item((
int) i, 1)->text()) <<
"\t";
537 file <<
TO_UTF8(mpCrossValidations->item((
int) i, 2)->text()) <<
"\t";
538 file <<
TO_UTF8(mpCrossValidations->item((
int) i, 3)->text()) <<
"\t";
539 file <<
TO_UTF8(mpCrossValidations->item((
int) i, 4)->text()) << std::endl;
545 if (mpValues->isEnabled())
548 file <<
"Validation Fitted Values:" << std::endl;
549 file <<
"Validation Fitted Value\tObjective Value\tRoot Mean Square\tError Mean\tError Mean Std. Deviation" << std::endl;
552 imax = mpCrossValidationValues->rowCount();
554 for (i = 0; i != imax; i++)
556 file <<
TO_UTF8(mpCrossValidationValues->item((
int) i, 0)->text()) <<
"\t";
557 file <<
TO_UTF8(mpCrossValidationValues->item((
int) i, 1)->text()) <<
"\t";
558 file <<
TO_UTF8(mpCrossValidationValues->item((
int) i, 2)->text()) <<
"\t";
559 file <<
TO_UTF8(mpCrossValidationValues->item((
int) i, 3)->text()) <<
"\t";
560 file <<
TO_UTF8(mpCrossValidationValues->item((
int) i, 4)->text()) << std::endl;
CCopasiObject * getDataObject(const CCopasiObjectName &CN) const
virtual std::string getObjectDisplayName(bool regular=true, bool richtext=false) const
CCopasiProblem * getProblem()
const CVector< CCopasiObject * > & getDependentObjects() const
const C_FLOAT64 & getObjectiveValue() const
const std::string & getObjectName() const
const std::string getUpperBound() const
CArrayAnnotation & getScaledFisherInformationEigenvectors() const
const CVector< C_FLOAT64 > & getVariableStdDeviations() const
const CVector< C_FLOAT64 > & getVariableGradients() const
const C_FLOAT64 & getLastStartValue() const
const CExperimentSet & getExperiementSet() const
CExperiment * getExperiment(const size_t &index)
const CVector< C_FLOAT64 > & getDependentRMS() const
CArrayAnnotation & getCorrelations() const
virtual bool enterProtected()
CArrayAnnotation & getFisherInformation() const
const C_FLOAT64 & getRMS() const
const C_FLOAT64 & getSolutionValue() const
const C_FLOAT64 & getExecutionTime() const
const CVector< C_FLOAT64 > & getDependentObjectiveValues() const
const C_FLOAT64 & getErrorMean() const
CArrayAnnotation & getScaledFisherInformation() const
const std::vector< COptItem * > & getOptItemList() const
virtual bool update(ListViews::ObjectType objectType, ListViews::Action action, const std::string &key)
CArrayAnnotation & getFisherInformationEigenvalues() const
const C_FLOAT64 & getErrorMeanSD() const
C_INT32 checkSelection(const QString &file)
const CVector< C_FLOAT64 > & getDependentErrorMean() const
CArrayAnnotation & getFisherInformationEigenvectors() const
const CCrossValidationSet & getCrossValidationSet() const
CCopasiVectorN< CCopasiTask > * getTaskList()
const C_FLOAT64 * getLowerBoundValue() const
static CCopasiVector< CCopasiDataModel > * getDatamodelList()
const CVector< C_FLOAT64 > & getSolutionVariables() const
CArrayAnnotation & getScaledFisherInformationEigenvalues() const
const C_FLOAT64 & getStdDeviation() const
const CVector< C_FLOAT64 > & getDependentErrorMeanSD() const
const std::string getLowerBound() const
CQFittingResult(QWidget *parent=0, const char *name=0)
const C_FLOAT64 * getUpperBoundValue() const
const bool & getCalculateStatistics() const
static CLocaleString fromUtf8(const std::string &utf8)
const unsigned C_INT32 & getFunctionEvaluations() const
const C_FLOAT64 & getRMS() const
const CFitProblem * mpProblem
size_t getExperimentCount() const
static QString getSaveFileName(QWidget *parent=0, const char *name=0, const QString &startWith=QString::null, const QString &filter=QString::null, const QString &caption=QString::null, QString *pSelectedFilter=NULL, QFileDialog::Options options=0)