Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
/**
 * 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(""));
}
Example #4
0
/**
 * 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(""));
}
Example #5
0
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;
}
Example #6
0
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;
}
Example #7
0
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;
}
Example #8
0
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;
}
Example #9
0
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());
        }
    }
}
Example #10
0
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;
}
Example #11
0
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;
}