bool CMCATask::initialize(const OutputFlag & of, COutputHandler * pOutputHandler, std::ostream * pOstream) { assert(mpProblem && mpMethod); CMCAProblem* pProblem = dynamic_cast<CMCAProblem *>(mpProblem); assert(pProblem); bool success = mpMethod->isValidProblem(mpProblem); //we need to resize an initialize the result matrices before initializing the output success &= updateMatrices(); //initialize reporting success &= CCopasiTask::initialize(of, pOutputHandler, pOstream); CSteadyStateTask *pSubTask = pProblem->getSubTask(); if (pSubTask) success &= pSubTask->initialize(CCopasiTask::NO_OUTPUT, NULL, mReport.getStream()); return success; }
bool CQLNAWidget::loadTask() { CLNATask * pTask = dynamic_cast< CLNATask * >(mpTask); if (!pTask) return false; CLNAProblem * pProblem = dynamic_cast< CLNAProblem * >(mpTask->getProblem()); if (!pProblem) return false; loadCommon(); loadMethod(); mpCheckSteadyState->setChecked(pProblem->isSteadyStateRequested()); if (mpCheckSteadyState->isChecked()) { CSteadyStateTask * pSteadyStateTask = dynamic_cast<CSteadyStateTask *>(&CCopasiRootContainer::getDatamodelList()->operator[](0).getTaskList()->operator[]("Steady-State")); if (pSteadyStateTask != NULL) { mpMethodWidget->pushMethod(pSteadyStateTask->getMethod()); } } mChanged = false; return true; }
/** * Set whether the steady state analysis is requested. * @param bool * steadyStateRequested */ void CLNAProblem::setSteadyStateRequested(const bool & steadyStateRequested) { CSteadyStateTask * pSubTask = NULL; CDataModel* pDataModel = getObjectDataModel(); if (pDataModel && pDataModel->getTaskList()) pSubTask = dynamic_cast<CSteadyStateTask *>(&pDataModel->getTaskList()->operator[]("Steady-State")); if (steadyStateRequested && pSubTask) setValue("Steady-State", pSubTask->getKey()); else setValue("Steady-State", std::string("")); }
/** * Set whether the steady state analysis is requested. * @param bool * steadyStateRequested */ void CLNAProblem::setSteadyStateRequested(const bool & steadyStateRequested) { CSteadyStateTask * pSubTask = NULL; CCopasiDataModel* pDataModel = getObjectDataModel(); assert(pDataModel != NULL); if (pDataModel && pDataModel->getTaskList()) pSubTask = dynamic_cast<CSteadyStateTask *>((*pDataModel->getTaskList())["Steady-State"]); if (steadyStateRequested && pSubTask) setValue("Steady-State", pSubTask->getKey()); else setValue("Steady-State", std::string("")); }
bool SteadyStateWidget::taskFinishedEvent() { bool success = false; CSteadyStateTask* pSteadyStateTask = dynamic_cast<CSteadyStateTask *>(mpObject); if (pSteadyStateTask == NULL) return success; switch (pSteadyStateTask->getResult()) { case CSteadyStateMethod::found: case CSteadyStateMethod::foundEquilibrium: success = true; break; case CSteadyStateMethod::foundNegative: if (mpMethod != NULL) { const CCopasiParameter *pParm = mpMethod->getParameter("Accept Negative Concentrations"); if (pParm != NULL) { success = *pParm->getValue().pBOOL; } } break; default: break; } CQSteadyStateResult *pResult = dynamic_cast< CQSteadyStateResult * >(mpListView->findWidgetFromId(211)); if (pResult) pResult->loadResult(); if (success && isVisible()) mpListView->switchToOtherWidget(211, ""); //change to the results window return success; }
bool CMCATask::process(const bool & useInitialValues) { bool success = true; assert(mpMethod); CMCAMethod* pMethod = dynamic_cast<CMCAMethod *>(mpMethod); assert(pMethod); // pMethod->setModel(mpProblem->getModel()); CSteadyStateTask *pSubTask = dynamic_cast<CMCAProblem *>(mpProblem)->getSubTask(); if (pSubTask) { pSubTask->setCallBack(mpCallBack); success &= pSubTask->process(useInitialValues); if (!success && useInitialValues) { mpContainer->applyInitialValues(); } pMethod->setSteadyStateTask(pSubTask); } else { pMethod->setSteadyStateTask(NULL); if (useInitialValues) { mpContainer->applyInitialValues(); } } CCopasiTask::output(COutputInterface::BEFORE); pMethod->process(); CCopasiTask::output(COutputInterface::DURING); CCopasiTask::output(COutputInterface::AFTER); return success; }
bool SteadyStateWidget::saveTask() { saveCommon(); saveMethod(); CSteadyStateTask* mSteadyStateTask = dynamic_cast<CSteadyStateTask *>(CCopasiRootContainer::getKeyFactory()->get(mKey)); if (mSteadyStateTask == NULL) return false; CSteadyStateProblem* steadystateproblem = dynamic_cast<CSteadyStateProblem *>(mSteadyStateTask->getProblem()); if (steadystateproblem == NULL) return false; CSteadyStateMethod* steadystatemethod = dynamic_cast<CSteadyStateMethod *>(mSteadyStateTask->getMethod()); if (steadystatemethod == NULL) return false; bool bJacobian = taskJacobian->isChecked(); bool bStatistics = taskStability->isChecked(); steadystateproblem->setJacobianRequested(bJacobian); steadystateproblem->setStabilityAnalysisRequested(bStatistics); if (mChanged) { if (mpDataModel != NULL) { mpDataModel->changed(); } mChanged = false; } return true; }
bool CQLNAWidget::saveParameterTable() { size_t i, k; QString value; CCopasiParameter::Type Type; for (i = 0; i < mpMethod->size(); i++) { value = mpMethodWidget->mpTableParameter->item((int) i, 0)->text(); if (value != getParameterValue(mpMethod, i, &Type)) { setParameterValue(mpMethod, i, value); mChanged = true; } } if (mpCheckSteadyState->isChecked()) { assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CSteadyStateTask * pSteadyStateTask = dynamic_cast<CSteadyStateTask *>((*(*CCopasiRootContainer::getDatamodelList())[0]->getTaskList())["Steady-State"]); if (!pSteadyStateTask) return false; CCopasiMethod * pMethod = pSteadyStateTask->getMethod(); for (i = mpMethod->size(), k = 0; k < pMethod->size(); i++, k++) { value = mpMethodWidget->mpTableParameter->item((int) i, 0)->text(); if (value != getParameterValue(pMethod, k, &Type)) { setParameterValue(pMethod, k, value); mChanged = true; } } } return true; }
void CQLNAWidget::slotSteadyStateChecked() { if (mpCheckSteadyState->isChecked()) { CSteadyStateTask * pSteadyStateTask = dynamic_cast<CSteadyStateTask *>(&CCopasiRootContainer::getDatamodelList()->operator[](0).getTaskList()->operator[]("Steady-State")); if (pSteadyStateTask != NULL) { mpMethodWidget->pushMethod(pSteadyStateTask->getMethod()); } } else { CSteadyStateTask * pSteadyStateTask = dynamic_cast<CSteadyStateTask *>(&CCopasiRootContainer::getDatamodelList()->operator[](0).getTaskList()->operator[]("Steady-State")); if (pSteadyStateTask != NULL) { mpMethodWidget->popMethod(pSteadyStateTask->getMethod()); } } }
bool SteadyStateWidget::loadTask() { loadCommon(); loadMethod(); CSteadyStateTask* mSteadyStateTask = dynamic_cast<CSteadyStateTask *>(CCopasiRootContainer::getKeyFactory()->get(mKey)); if (mSteadyStateTask == NULL) return false; CSteadyStateProblem* steadystateproblem = dynamic_cast<CSteadyStateProblem *>(mSteadyStateTask->getProblem()); if (steadystateproblem == NULL) return false; CSteadyStateMethod* steadystatemethod = dynamic_cast<CSteadyStateMethod *>(mSteadyStateTask->getMethod()); if (steadystatemethod == NULL) return false; bool bJacobian = steadystateproblem->isJacobianRequested(); bool bStatistics = steadystateproblem->isStabilityAnalysisRequested(); taskJacobian->setChecked(bJacobian); if (bJacobian) { taskStability->setEnabled(true); taskStability->setChecked(bStatistics); } mChanged = false; return true; }
bool CQLNAWidget::loadParameterTable() { bool init = (mpMethodWidget->mpTableParameter->rowCount() == 0); size_t NumRows = mpMethod->size(); assert(CCopasiRootContainer::getDatamodelList()->size() > 0); if (mpCheckSteadyState->isChecked()) { CSteadyStateTask * pSteadyStateTask = dynamic_cast<CSteadyStateTask *>((*(*CCopasiRootContainer::getDatamodelList())[0]->getTaskList())["Steady-State"]); if (!pSteadyStateTask) return false; NumRows += pSteadyStateTask->getMethod()->size(); } mpMethodWidget->mpTableParameter->setRowCount((int) NumRows); size_t i, k; CCopasiParameter::Type Type; QString value; for (i = 0; i < mpMethod->size() && init; i++) { mpMethodWidget->mpTableParameter->setVerticalHeaderItem((int) i, new QTableWidgetItem()); mpMethodWidget->mpTableParameter->verticalHeaderItem((int) i)->setText(FROM_UTF8(mpMethod->getName(i))); value = getParameterValue(mpMethod, i, &Type); QTableWidgetItem *itemValue = new QTableWidgetItem(value); itemValue->setTextAlignment(Qt::AlignRight); mpMethodWidget->mpTableParameter->setItem((int) i, 0, itemValue); } if (mpCheckSteadyState->isChecked()) { CSteadyStateTask * pSteadyStateTask = dynamic_cast<CSteadyStateTask *>((*(*CCopasiRootContainer::getDatamodelList())[0]->getTaskList())["Steady-State"]); if (!pSteadyStateTask) return false; CCopasiMethod * pMethod = pSteadyStateTask->getMethod(); for (i = mpMethod->size(), k = 0; k < pMethod->size(); k++, i++) { // create item of the current row and give it a name mpMethodWidget->mpTableParameter->setVerticalHeaderItem((int) i, new QTableWidgetItem()); mpMethodWidget->mpTableParameter->verticalHeaderItem((int) i)->setText(FROM_UTF8(pMethod->getName(k))); value = getParameterValue(pMethod, k, &Type); QTableWidgetItem *itemValue = new QTableWidgetItem(value); itemValue->setTextAlignment(Qt::AlignRight); mpMethodWidget->mpTableParameter->setItem((int) i, 0, itemValue); } } // the table will be automatically adjusted -> 31.10.09 return true; }