void SliderDialog::editSlider() { SliderSettingsDialog* pSettingsDialog = new SliderSettingsDialog(this); // set the list of sliders that is already known CCopasiObject* object = (CCopasiObject*)getTaskForFolderId(mCurrentFolderId); if (!object) return; CCopasiDataModel * pDataModel = object->getObjectDataModel(); assert(pDataModel != NULL); pSettingsDialog->setModel(pDataModel->getModel()); std::vector<CSlider*>* pVector = getCSlidersForCurrentFolderId(); pSettingsDialog->setDefinedSliders(*pVector); //pSettingsDialog->disableObjectChoosing(true); pSettingsDialog->setSlider(mpCurrSlider->getCSlider()); if (pSettingsDialog->exec() == QDialog::Accepted) { addSlider(pSettingsDialog->getSlider()); mpCurrSlider->updateSliderData(); /* if ((!mpCurrSlider->isEnabled()) && mpCurrSlider->getCSlider()->compile()) { mpCurrSlider->setEnabled(true); } */ } delete pSettingsDialog; delete pVector; }
bool CReportDefinition::preCompileTable(const std::vector< CCopasiContainer * > & listOfContainer) { bool success = true; mHeaderVector.clear(); mBodyVector.clear(); mFooterVector.clear(); std::vector<CRegisteredObjectName>::const_iterator it = mTableVector.begin(); std::vector<CRegisteredObjectName>::const_iterator end = mTableVector.end(); CCopasiDataModel* pDataModel = getObjectDataModel(); CCopasiObject * pObject; for (; it != end; ++it) { pObject = pDataModel->ObjectFromName(listOfContainer, *it); if (pObject != NULL) { addTableElement(pObject); } else { CCopasiMessage(CCopasiMessage::WARNING, MCCopasiTask + 6, it->c_str()); } } return success; }
bool CQSpecieDM::insertRows(int position, int rows, const QModelIndex&) { CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; if (pDataModel->getModel()->getCompartments().size() == 0) { pDataModel->getModel()->createCompartment("compartment"); emit notifyGUI(ListViews::COMPARTMENT, ListViews::ADD, pDataModel->getModel()->getCompartments()[0]->getKey()); } beginInsertRows(QModelIndex(), position, position + rows - 1); for (int row = 0; row < rows; ++row) { mpSpecies = pDataModel->getModel()->createMetabolite(TO_UTF8(createNewName("species", COL_NAME_SPECIES)), "", 1.0, CModelEntity::REACTIONS); if (mNotify) { emit notifyGUI(ListViews::METABOLITE, ListViews::ADD, mpSpecies->getKey()); } } endInsertRows(); return true; }
void CQCompartment::deleteCompartment() { assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); CModel * pModel = pDataModel->getModel(); if (pModel == NULL) return; if (mpCompartment == NULL) return; QMessageBox::StandardButton choice = CQMessageBox::confirmDelete(this, "compartment", FROM_UTF8(mpCompartment->getObjectName()), mpCompartment->getDeletedObjects()); switch (choice) { case QMessageBox::Ok: { pDataModel->getModel()->removeCompartment(mKey); protectedNotify(ListViews::COMPARTMENT, ListViews::DELETE, mKey); protectedNotify(ListViews::COMPARTMENT, ListViews::DELETE, ""); //Refresh all as there may be dependencies. break; } default: break; } mpListView->switchToOtherWidget(111, ""); }
void CQReportDefinition::btnCopyReportClicked() { btnCommitClicked(); CCopasiDataModel* pDataModel = mpObject->getObjectDataModel(); if (pDataModel == NULL) return; CReportDefinition * pRep = new CReportDefinition(*dynamic_cast<CReportDefinition*>(CCopasiRootContainer::getKeyFactory()->get(mKey))); std::string baseName = pRep->getObjectName() + "_copy"; std::string name = baseName; int i = 1; while (pDataModel->getReportDefinitionList()->getIndex(name) != C_INVALID_INDEX) { i++; name = baseName + TO_UTF8(QString::number(i)); } pRep->setObjectName(name); pDataModel->getReportDefinitionList()->add(pRep, true); std::string key = pRep->getKey(); protectedNotify(ListViews::REPORT, ListViews::ADD, key); enter(key); mpListView->switchToOtherWidget(C_INVALID_INDEX, key); }
RemoveAllReactionRowsCommand::RemoveAllReactionRowsCommand(CQReactionDM * pReaDM, const QModelIndex&) { mpReactionDM = pReaDM; assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); CModel * pModel = pDataModel->getModel(); assert(pModel != NULL); for (int i = 0; i != pReaDM->rowCount() - 1; ++i) { UndoReactionData *data = new UndoReactionData(); CReactionInterface* ri = new CReactionInterface((*CCopasiRootContainer::getDatamodelList())[0]->getModel()); if (pModel->getReactions()[i]) { data->setName(pModel->getReactions()[i]->getObjectName()); ri->initFromReaction(pModel->getReactions()[i]->getKey()); data->setRi(ri); mpReaData.append(data); } } mType = REACTIONREMOVEALL; setEntityType("Reaction"); this->setText(removeAllReactionRowsText()); }
void CCopasiSelectionDialog::setFilter(const CQSimpleSelectionTree::ObjectClasses & classes) { CCopasiDataModel * pDataModel = ListViews::dataModel(this); assert(pDataModel != NULL); this->mpSelectionWidget->populateTree(pDataModel->getModel(), classes); }
void insertReactionRowsCommand::redo() { mpReactionDM->insertNewReactionRow(mPosition, mRows, QModelIndex()); assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); CModel * pModel = pDataModel->getModel(); assert(pModel != NULL); mpReaction = pModel->getReactions()[mPosition]; std::string sName = mpReaction->getObjectName(); if (mpReactionData != NULL) mpReactionData->setName(sName); CReactionInterface* ri = new CReactionInterface((*CCopasiRootContainer::getDatamodelList())[0]->getModel()); ri->initFromReaction(mpReaction); if (mpReactionData != NULL) mpReactionData->setRi(ri); setUndoState(true); setAction("Add to list"); if (mpReactionData != NULL) setName(mpReactionData->getName()); else setName(sName); }
void InsertCompartmentRowsCommand::redo() { if (firstTime) { mpCompartmentDM->insertNewCompartmentRow(mPosition, mRows, QModelIndex()); assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); CModel * pModel = pDataModel->getModel(); assert(pModel != NULL); CCompartment *pCompartment = pModel->getCompartments()[mPosition]; mpCompartmentData->setName(pCompartment->getObjectName()); mpCompartmentData->setStatus(pCompartment->getStatus()); mpCompartmentData->setInitialValue(pCompartment->getInitialValue()); firstTime = false; } else { mpCompartmentDM->addCompartmentRow(mpCompartmentData); } setUndoState(true); setAction("Add to list"); setName(mpCompartmentData->getName()); }
void test000053::test4_bug1000() { // load the CPS file // export to SBML // check the resulting SBML model CCopasiDataModel* pDataModel = pCOPASIDATAMODEL; CPPUNIT_ASSERT(pDataModel->importSBMLFromString(test000053::MODEL_STRING_4)); const CModel* pModel = pDataModel->getModel(); CPPUNIT_ASSERT(pModel != NULL); CPPUNIT_ASSERT(pModel->getCompartments().size() == 1); CPPUNIT_ASSERT(pModel->getModelValues().size() == 0); CPPUNIT_ASSERT(pModel->getReactions().size() == 0); CPPUNIT_ASSERT(pModel->getMetabolites().size() == 1); const CMetab* pMetab = pModel->getMetabolites()[0]; CPPUNIT_ASSERT(pMetab != NULL); CPPUNIT_ASSERT(pMetab->getObjectName() == "A"); CPPUNIT_ASSERT(pMetab->getStatus() == CModelEntity::ASSIGNMENT); const CExpression* pExpr = pMetab->getExpressionPtr(); CPPUNIT_ASSERT(pExpr != NULL); const CEvaluationNode* pRoot = pExpr->getRoot(); CPPUNIT_ASSERT(pRoot != NULL); CPPUNIT_ASSERT(pRoot->mainType() == CEvaluationNode::T_NUMBER); CPPUNIT_ASSERT((pRoot->subType()) == CEvaluationNode::S_DOUBLE); const CEvaluationNodeNumber* pNumberNode = dynamic_cast<const CEvaluationNodeNumber*>(pRoot); CPPUNIT_ASSERT(pNumberNode != NULL); CPPUNIT_ASSERT(fabs((pNumberNode->getValue() - 1.5) / 1.5) < 1e-6); }
RemoveGlobalQuantityRowsCommand::RemoveGlobalQuantityRowsCommand( QModelIndexList rows, CQGlobalQuantityDM * pGlobalQuantityDM, const QModelIndex&) : CCopasiUndoCommand("Global Quantity", GLOBALQUANTITY_REMOVE) , mpGlobalQuantityDM(pGlobalQuantityDM) , mRows(rows) , mpGlobalQuantityData() , mFirstTime(true) { CCopasiDataModel * pDataModel = pGlobalQuantityDM->getDataModel(); assert(pDataModel != NULL); CModel * pModel = pDataModel->getModel(); assert(pModel != NULL); QModelIndexList::const_iterator i; for (i = rows.begin(); i != rows.end(); ++i) { CModelValue* pModelValue = &pModel->getModelValues()[i->row()]; if (pGlobalQuantityDM->isDefaultRow(*i) || pModelValue == NULL) continue; UndoGlobalQuantityData *data = new UndoGlobalQuantityData(pModelValue); mpGlobalQuantityData.append(data); } setText(QObject::tr(": Removed Global Quantity")); }
void test000080::test_mass_action_recognition_bug() { CCopasiDataModel* pDataModel = pCOPASIDATAMODEL; try { CPPUNIT_ASSERT(pDataModel->importSBMLFromString(test000080::MODEL_STRING1)); } catch (...) { // there should not be an exception CPPUNIT_ASSERT(false); } const CModel* pModel = pDataModel->getModel(); CPPUNIT_ASSERT(pModel != NULL); CPPUNIT_ASSERT(pModel->getReactions().size() == 1); const CReaction* pReaction = pModel->getReactions()[0]; CPPUNIT_ASSERT(pReaction != NULL); const CFunction* pFun = pReaction->getFunction(); CPPUNIT_ASSERT(pFun != NULL); CPPUNIT_ASSERT(pFun->getType() == CEvaluationTree::UserDefined); }
void test000047::test_delay() { CCopasiDataModel* pDataModel = pCOPASIDATAMODEL; CPPUNIT_ASSERT(pDataModel->importSBMLFromString(MODEL_STRING)); CModel* pModel = pDataModel->getModel(); CPPUNIT_ASSERT(pModel != NULL); CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() == CUnit::mMol); CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() == CUnit::ml); CPPUNIT_ASSERT(pModel->getTimeUnitEnum() == CUnit::s); CPPUNIT_ASSERT(pModel->getCompartments().size() == 1); const CCompartment* pCompartment = pModel->getCompartments()[0]; CPPUNIT_ASSERT(pCompartment != NULL); CPPUNIT_ASSERT(pCompartment->getStatus() == CModelEntity::FIXED); CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2); const CMetab* pB = pModel->getMetabolites()[1]; CPPUNIT_ASSERT(pB != NULL); CPPUNIT_ASSERT(pB->getStatus() == CModelEntity::FIXED); CMetab* pA = pModel->getMetabolites()[0]; CPPUNIT_ASSERT(pA != NULL); CPPUNIT_ASSERT(pA->getStatus() == CModelEntity::ASSIGNMENT); const CExpression* pExpr = pA->getExpressionPtr(); CPPUNIT_ASSERT(pExpr != NULL); const CEvaluationNode* pNode = pExpr->getRoot(); CPPUNIT_ASSERT(pNode != NULL); const CEvaluationNodeDelay* pDelayNode = dynamic_cast<const CEvaluationNodeDelay*>(pNode); CPPUNIT_ASSERT(pDelayNode != NULL); const CEvaluationNodeObject* pObjectNode = dynamic_cast<const CEvaluationNodeObject*>(pDelayNode->getChild()); CPPUNIT_ASSERT(pObjectNode != NULL); CCopasiObjectName objectCN = pObjectNode->getObjectCN(); CPPUNIT_ASSERT(!objectCN.empty()); std::vector<CCopasiContainer*> listOfContainers; listOfContainers.push_back(pModel); const CCopasiObject* pObject = pCOPASIDATAMODEL->ObjectFromName(listOfContainers, objectCN); CPPUNIT_ASSERT(pObject != NULL); CPPUNIT_ASSERT(pObject->isReference() == true); CPPUNIT_ASSERT(pObject->getObjectName() == std::string("Concentration")); CPPUNIT_ASSERT(pObject->getObjectParent() == pB); const CEvaluationNodeNumber* pNumberNode = dynamic_cast<const CEvaluationNodeNumber*>(pObjectNode->getSibling()); CPPUNIT_ASSERT(pNumberNode != NULL); CPPUNIT_ASSERT(((CEvaluationNodeNumber::SubType)CEvaluationNode::subType(pNumberNode->getType())) == CEvaluationNodeNumber::DOUBLE); CPPUNIT_ASSERT(fabs((pNumberNode->getValue() - 0.5) / 0.5) < 1e-3); CPPUNIT_ASSERT(pNumberNode->getSibling() == NULL); CPPUNIT_ASSERT(pModel->getModelValues().size() == 1); const CModelValue* pModelValue = pModel->getModelValues()[0]; CPPUNIT_ASSERT(pModelValue != NULL); CPPUNIT_ASSERT(pModelValue->getStatus() == CModelEntity::FIXED); CPPUNIT_ASSERT(pModel->getReactions().size() == 0); //CPPUNIT_ASSERT(CCopasiMessage::size() == 2); CCopasiMessage message = CCopasiMessage::getLastMessage(); CPPUNIT_ASSERT(message.getType() == CCopasiMessage::WARNING); std::string s = message.getText(); CPPUNIT_ASSERT(!s.empty()); CPPUNIT_ASSERT(s.find(std::string("COPASI does not support time delays. Calculations on this model will most likely lead to unusable results.")) != std::string::npos); // right now, we don't care about the last message since it is a units // warning from libSBML }
void test000046::test_stoichiometricExpression() { CCopasiDataModel* pDataModel = pCOPASIDATAMODEL; CPPUNIT_ASSERT(pDataModel->importSBMLFromString(MODEL_STRING)); CModel* pModel = pDataModel->getModel(); CPPUNIT_ASSERT(pModel != NULL); CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() == CModel::mMol); CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() == CModel::ml); CPPUNIT_ASSERT(pModel->getTimeUnitEnum() == CModel::s); CPPUNIT_ASSERT(pModel->getCompartments().size() == 1); const CCompartment* pCompartment = pModel->getCompartments()[0]; CPPUNIT_ASSERT(pCompartment != NULL); CPPUNIT_ASSERT(pCompartment->getStatus() == CModelEntity::FIXED); CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2); CMetab* pA = pModel->getMetabolites()[0]; CPPUNIT_ASSERT(pA != NULL); CPPUNIT_ASSERT(pA->getStatus() == CModelEntity::REACTIONS); const CMetab* pB = pModel->getMetabolites()[1]; CPPUNIT_ASSERT(pB != NULL); CPPUNIT_ASSERT(pB->getStatus() == CModelEntity::REACTIONS); CPPUNIT_ASSERT(pModel->getModelValues().size() == 1); const CModelValue* pModelValue = pModel->getModelValues()[0]; CPPUNIT_ASSERT(pModelValue != NULL); CPPUNIT_ASSERT(pModelValue->getStatus() == CModelEntity::FIXED); CPPUNIT_ASSERT(fabs((pModelValue->getInitialValue() - 3.7) / 3.7) < 1e-3); CPPUNIT_ASSERT(pModel->getReactions().size() == 1); const CReaction* pReaction1 = pModel->getReactions()[0]; CPPUNIT_ASSERT(pReaction1 != NULL); CPPUNIT_ASSERT(pReaction1->isReversible() == true); // check the kinetic law const CFunction* pKineticFunction = pReaction1->getFunction(); CPPUNIT_ASSERT(pKineticFunction != NULL); const CMassAction* pMassAction = dynamic_cast<const CMassAction*>(pKineticFunction); CPPUNIT_ASSERT(pMassAction != NULL); const CChemEq* pChemEq = &pReaction1->getChemEq(); CPPUNIT_ASSERT(pChemEq != NULL); CPPUNIT_ASSERT(pChemEq->getCompartmentNumber() == 1); CPPUNIT_ASSERT(pChemEq->getSubstrates().size() == 1); const CChemEqElement* pElement = pChemEq->getSubstrates()[0]; CPPUNIT_ASSERT(pElement != NULL); CPPUNIT_ASSERT(fabs((pElement->getMultiplicity() - 1.85) / 1.85) < 1e-3); CPPUNIT_ASSERT(pElement->getMetabolite() == pA); CPPUNIT_ASSERT(pChemEq->getProducts().size() == 1); pElement = pChemEq->getProducts()[0]; CPPUNIT_ASSERT(pElement != NULL); CPPUNIT_ASSERT(fabs((pElement->getMultiplicity() - 3.35) / 3.35) / 3.35 < 1e-3); CPPUNIT_ASSERT(pElement->getMetabolite() == pB); CPPUNIT_ASSERT(pChemEq->getModifiers().size() == 0); //CPPUNIT_ASSERT(CCopasiMessage::size() == 5); CCopasiMessage message = CCopasiMessage::getLastMessage(); CPPUNIT_ASSERT(message.getType() == CCopasiMessage::WARNING); std::string s = message.getText(); CPPUNIT_ASSERT(!s.empty()); CPPUNIT_ASSERT(s.find(std::string("One or more stoichiometric expressions were evaluated and converted to constants values.")) != std::string::npos); // the other four messages are libSBML unit warnings I don't care about right // now. }
void CQReportDefinitionSelect::loadReportDefinitionVector() { CCopasiDataModel* pDataModel = mpListView->getDataModel(); assert(pDataModel != NULL); CReportDefinitionVector* pReportDefinitionVector = pDataModel->getReportDefinitionList(); unsigned C_INT32 i; for (i = 0; i < pReportDefinitionVector->size(); i++) mpComboDefinition-> insertItem(mpComboDefinition->count(), FROM_UTF8(pReportDefinitionVector->operator[](i).getObjectName())); // if it is an empty list if (mpComboDefinition->count() == 0) { std::string name = "ReportDefinition_0"; pDataModel->getReportDefinitionList()->createReportDefinition(name, ""); mpComboDefinition->insertItem(mpComboDefinition->count(), FROM_UTF8(name)); mpComboDefinition->setCurrentIndex(1); mpReport->setReportDefinition(&pDataModel->getReportDefinitionList()->operator[](0)); //first one report definition mpReport->setAppend(mpCheckAppend->isChecked()); mpReport->setConfirmOverwrite(mpCheckConfirmOverwrite->isChecked()); mpReport->setTarget(TO_UTF8(mpEditTarget->text())); mpListView->getDataModelGUI()->notify(ListViews::REPORT, ListViews::CHANGE, ""); //notify Table Definition to if (CQMessageBox::question(NULL, "No Report Template Defined", "No report definition defined, COPASI has already created a new one for you.\n Do you want to switch to the GUI to edit it?", QMessageBox::Ok | QMessageBox::No, QMessageBox::Ok) == QMessageBox::Ok) slotEdit(); return; } if (!mpReport->getReportDefinition()) { C_INT32 row; row = mpComboDefinition->currentIndex(); mpReport->setReportDefinition(&pReportDefinitionVector->operator[](row)); mpReport->setAppend(mpCheckAppend->isChecked()); mpReport->setConfirmOverwrite(mpCheckConfirmOverwrite->isChecked()); mpReport->setTarget(TO_UTF8(mpEditTarget->text())); return; } else { C_INT32 i; // no use to compare the last one for (i = mpComboDefinition->count() - 1; i >= 1; i--) if (mpComboDefinition->itemText(i) == FROM_UTF8(mpReport->getReportDefinition()->getObjectName())) break; mpComboDefinition->setCurrentIndex(i); mpCheckAppend->setChecked(mpReport->append()); mpCheckConfirmOverwrite->setChecked(mpReport->confirmOverwrite()); mpEditTarget->setText(FROM_UTF8(mpReport->getTarget())); } }
void test000052::test_bug988() { CCopasiDataModel* pDataModel = pCOPASIDATAMODEL; CPPUNIT_ASSERT(pDataModel->importSBMLFromString(MODEL_STRING)); CModel* pModel = pDataModel->getModel(); CPPUNIT_ASSERT(pModel != NULL); CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() == CModel::mMol); CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() == CModel::ml); CPPUNIT_ASSERT(pModel->getTimeUnitEnum() == CModel::s); CPPUNIT_ASSERT(pModel->getCompartments().size() == 1); const CCompartment* pCompartment = pModel->getCompartments()[0]; CPPUNIT_ASSERT(pCompartment != NULL); CPPUNIT_ASSERT(pCompartment->getStatus() == CModelEntity::FIXED); CPPUNIT_ASSERT(pModel->getMetabolites().size() == 1); CMetab* pA = pModel->getMetabolites()[0]; CPPUNIT_ASSERT(pA != NULL); CPPUNIT_ASSERT(pA->getStatus() == CModelEntity::ASSIGNMENT); const CExpression* pExpr = pA->getExpressionPtr(); // check the expression const CEvaluationNode* pNode = pExpr->getRoot(); CPPUNIT_ASSERT(pNode != NULL); const CEvaluationNodeChoice* pChoiceNode = dynamic_cast<const CEvaluationNodeChoice*>(pNode); CPPUNIT_ASSERT(pChoiceNode != NULL); pNode = dynamic_cast<const CEvaluationNode*>(pChoiceNode->getChild()); CPPUNIT_ASSERT(pNode != NULL); const CEvaluationNodeLogical* pLogicalNode = dynamic_cast<const CEvaluationNodeLogical*>(pNode); CPPUNIT_ASSERT(pLogicalNode != NULL); CPPUNIT_ASSERT(((CEvaluationNodeLogical::SubType)CEvaluationNode::subType(pLogicalNode->getType())) == CEvaluationNodeLogical::LT); const CEvaluationNodeObject* pObjectNode = dynamic_cast<const CEvaluationNodeObject*>(pLogicalNode->getChild()); CPPUNIT_ASSERT(pObjectNode != NULL); CCopasiObjectName objectCN = pObjectNode->getObjectCN(); CPPUNIT_ASSERT(!objectCN.empty()); std::vector<CCopasiContainer*> listOfContainers; listOfContainers.push_back(pModel); const CCopasiObject* pObject = pCOPASIDATAMODEL->ObjectFromName(listOfContainers, objectCN); CPPUNIT_ASSERT(pObject != NULL); CPPUNIT_ASSERT(pObject->isReference() == true); CPPUNIT_ASSERT(pObject->getObjectName() == std::string("Time")); CPPUNIT_ASSERT(pObject->getObjectParent() == pModel); const CEvaluationNodeNumber* pNumberNode = dynamic_cast<const CEvaluationNodeNumber*>(pObjectNode->getSibling()); CPPUNIT_ASSERT(pNumberNode != NULL); CPPUNIT_ASSERT(((CEvaluationNodeNumber::SubType)CEvaluationNode::subType(pNumberNode->getType())) == CEvaluationNodeNumber::DOUBLE); CPPUNIT_ASSERT(fabs((pNumberNode->getValue() - 5.0) / 5.0) < 1e-3); pNumberNode = dynamic_cast<const CEvaluationNodeNumber*>(pLogicalNode->getSibling()); CPPUNIT_ASSERT(pNumberNode != NULL); CPPUNIT_ASSERT(((CEvaluationNodeNumber::SubType)CEvaluationNode::subType(pNumberNode->getType())) == CEvaluationNodeNumber::DOUBLE); CPPUNIT_ASSERT(pNumberNode->getValue() < 1e-3); pNumberNode = dynamic_cast<const CEvaluationNodeNumber*>(pNumberNode->getSibling()); CPPUNIT_ASSERT(pNumberNode != NULL); CPPUNIT_ASSERT(((CEvaluationNodeNumber::SubType)CEvaluationNode::subType(pNumberNode->getType())) == CEvaluationNodeNumber::DOUBLE); CPPUNIT_ASSERT(fabs((pNumberNode->getValue() - 10.0) / 10.0) < 1e-3); CPPUNIT_ASSERT(pModel->getModelValues().size() == 0); CPPUNIT_ASSERT(pModel->getReactions().size() == 0); }
void CQReportDefinitionSelect::slotEdit() { CCopasiDataModel* pDataModel = mpListView->getDataModel(); assert(pDataModel != NULL); CReportDefinitionVector* pReportDefinitionVector = pDataModel->getReportDefinitionList(); C_INT32 row; row = mpComboDefinition->currentIndex(); mpListView->switchToOtherWidget(C_INVALID_INDEX, pReportDefinitionVector->operator[](row).getKey()); accept(); // if shown then close mShow = false; // if not shown then close }
/** * Creates the Tasks for SEDML. This will always create a task running a time course * simulation. If the parameter scan has been specified, it will be exported as well. */ void CSEDMLExporter::createTasks(CCopasiDataModel& dataModel, std::string & modelRef) { std::string modelId = modelRef.substr(0, modelRef.length() - 4); // create time course task std::string taskId = createTimeCourseTask(dataModel, modelId); createDataGenerators(dataModel, taskId, (*dataModel.getTaskList())["Time-Course"]); taskId = createScanTask(dataModel, modelId); if (!taskId.empty()) createDataGenerators(dataModel, taskId, (*dataModel.getTaskList())["Scan"]); }
bool HistoWidget::LoadFromCurveSpec(const CPlotItem * curve) { if (!curve) { // We need to reset the widget to defaults mpEditTitle->setText(""); mpObjectX = NULL; mpEditVariable->setText(""); mpEditIncrement->setText(""); mpCheckBefore->setChecked(false); mpCheckDuring->setChecked(true); mpCheckAfter->setChecked(false); return true; } if (curve->getType() != CPlotItem::histoItem1d) return false; if (curve->getChannels().size() != 1) return false; //title mpEditTitle->setText(FROM_UTF8(curve->getTitle())); //variable mpObjectX = NULL; CCopasiDataModel* pDataModel = mpModel->getObjectDataModel(); assert(pDataModel != NULL); if (curve->getChannels().size() >= 1) mpObjectX = CObjectInterface::DataObject(pDataModel->getObjectFromCN(curve->getChannels()[0])); if (mpObjectX == pDataModel) { mpObjectX = NULL; } if (mpObjectX != NULL) mpEditVariable->setText(FROM_UTF8(mpObjectX->getObjectDisplayName())); else mpEditVariable->setText(""); //other parameters: mpEditIncrement->setText(QString::number(curve->getValue< C_FLOAT64 >("increment"))); mpCheckBefore->setChecked(curve->getActivity() & COutputInterface::BEFORE); mpCheckDuring->setChecked(curve->getActivity() & COutputInterface::DURING); mpCheckAfter->setChecked(curve->getActivity() & COutputInterface::AFTER); return true; //TODO }
void CQReportListItem::refreshText() { assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); const CCopasiObject * pObject = pDataModel->getDataObject(mCN); if (pObject) setText(FROM_UTF8(pObject->getObjectDisplayName())); else setText(QString("Not found: ") + FROM_UTF8(mCN)); }
// virtual void CScanWidgetScan::load(const CCopasiParameterGroup * pItem) { if (pItem == NULL) return; *mpData = *pItem; void * tmp; if (!(tmp = mpData->getValue("Type").pVOID)) return; CScanProblem::Type type = *(CScanProblem::Type*)tmp; if (type != CScanProblem::SCAN_LINEAR) return; if (!(tmp = mpData->getValue("Number of steps").pVOID)) return; lineEditNumber->setText(QString::number(*(C_INT32*)tmp)); if (!(tmp = mpData->getValue("Object").pVOID)) return; std::string tmpString = *(std::string*)tmp; if (tmpString == "") mpObject = NULL; else { assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); mpObject = pDataModel->getDataObject(tmpString); } if (mpObject) lineEditObject->setText(FROM_UTF8(mpObject->getObjectDisplayName())); else lineEditObject->setText(""); if (!(tmp = mpData->getValue("Minimum").pVOID)) return; lineEditMin->setText(QString::number(*(C_FLOAT64*)tmp)); if (!(tmp = mpData->getValue("Maximum").pVOID)) return; lineEditMax->setText(QString::number(*(C_FLOAT64*)tmp)); if (!(tmp = mpData->getValue("log").pVOID)) return; checkBoxLog->setChecked(*(bool*)tmp); return; }
bool CQUnitDM::removeRows(QModelIndexList rows, const QModelIndex&) { if (rows.isEmpty()) return false; assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = &CCopasiRootContainer::getDatamodelList()->operator[](0); assert(pDataModel != NULL); CModel * pModel = pDataModel->getModel(); if (pModel == NULL) return false; // Build the list of pointers to items to be deleted // before actually deleting any item. QList <CUnitDefinition *> pUnitDefQList; QModelIndexList::const_iterator i; CUnitDefinition * pUnitDef; for (i = rows.begin(); i != rows.end(); ++i) { if (!isDefaultRow(*i) && (pUnitDef = &CCopasiRootContainer::getUnitList()->operator[](i->row())) != NULL && pModel->getUnitSymbolUsage(pUnitDef->getSymbol()).empty() && !pUnitDef->isReadOnly())//Don't delete built-ins or used units pUnitDefQList.append(&CCopasiRootContainer::getUnitList()->operator[](i->row())); } for (QList <CUnitDefinition *>::const_iterator j = pUnitDefQList.begin(); j != pUnitDefQList.end(); ++j) { size_t delRow = CCopasiRootContainer::getUnitList()->CCopasiVector< CUnitDefinition >::getIndex(*j); if (delRow != C_INVALID_INDEX) { CCopasiObject::DataObjectSet DeletedObjects; DeletedObjects.insert(*j); QMessageBox::StandardButton choice = CQMessageBox::confirmDelete(NULL, "unit", FROM_UTF8((*j)->getObjectName()), DeletedObjects); if (choice == QMessageBox::Ok) removeRow((int) delRow); } } return true; }
RemoveAllGlobalQuantityRowsCommand::RemoveAllGlobalQuantityRowsCommand(CQGlobalQuantityDM * pGlobalQuantityDM, const QModelIndex&) { mpGlobalQuantityDM = pGlobalQuantityDM; assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); CModel * pModel = pDataModel->getModel(); assert(pModel != NULL); for (int i = 0; i != pGlobalQuantityDM->rowCount() - 1; ++i) { UndoGlobalQuantityData *data = new UndoGlobalQuantityData(); if (pModel->getModelValues()[i]) { data->setName(pModel->getModelValues()[i]->getObjectName()); data->setStatus(pModel->getModelValues()[i]->getStatus()); if (pModel->getModelValues()[i]->getStatus() != CModelEntity::ASSIGNMENT) { data->setInitialValue(pModel->getModelValues()[i]->getInitialValue()); } // set expression if (pModel->getModelValues()[i]->getStatus() != CModelEntity::FIXED) { data->setExpression(pModel->getModelValues()[i]->getExpression()); } // set initial expression if (pModel->getModelValues()[i]->getStatus() != CModelEntity::ASSIGNMENT) { data->setInitialExpression(pModel->getModelValues()[i]->getInitialExpression()); } setDependentObjects(pModel->getModelValues()[i]->getDeletedObjects()); data->setReactionDependencyObjects(getReactionData()); data->setSpecieDependencyObjects(getSpecieData()); data->setEventDependencyObjects(getEventData()); mpGlobalQuantityData.append(data); } } mType = GLOBALQUANTITYREMOVEALL; setEntityType("Global Quantity"); this->setText(removeAllGlobalQuantityRowsText()); }
/** * 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 CSlider::setSliderObject(CCopasiObject * pObject) { mpSliderObject = pObject; if (!pObject) { mInitialRefreshes.clear(); return false; } mCN = pObject->getCN(); std::set< const CCopasiObject * > ChangedObjects; ChangedObjects.insert(pObject); CCopasiDataModel* pDataModel = getObjectDataModel(); assert(pDataModel != NULL); mInitialRefreshes = pDataModel->getModel()->buildInitialRefreshSequence(ChangedObjects); if (mpSliderObject->isValueInt()) { this->setSliderType(Integer); } else if (mpSliderObject->isValueDbl()) { this->setSliderType(Float); } else { this->setSliderType(Undefined); } if (this->mSync) this->sync(); C_FLOAT64 value = this->getSliderValue(); this->mOriginalValue = value; if (this->mMinValue > value) { this->mMinValue = value; } if (this->mMaxValue < value) { this->mMaxValue = value; } return true; }
bool CScanWidgetRandom::initFromScanItem(CCopasiParameterGroup * pg, const CModel* model) { if (!model) return false; mpModel = model; unsigned C_INT32 * tmp; if (!(tmp = pg->getValue("Type").pUINT)) return false; if (*(CScanProblem::Type *) tmp != CScanProblem::SCAN_RANDOM) return false; std::string *pString; if (!(pString = pg->getValue("Object").pSTRING)) return false; if (*pString == "") mpObject = NULL; else { assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); mpObject = pDataModel->getObject(*pString); } if (mpObject) lineEditObject->setText(FROM_UTF8(mpObject->getObjectDisplayName())); else lineEditObject->setText(""); if (!(tmp = pg->getValue("Distribution type").pUINT)) return false; comboBoxType->setCurrentItem(*tmp); changeType(); lineEditMin->setText(getParameterValue(pg, "Minimum")); lineEditMax->setText(getParameterValue(pg, "Maximum")); bool * pBool; if (!(pBool = pg->getValue("log").pBOOL)) return false; checkBoxLog->setChecked(* pBool); return true; }
void DataModelGUI::linkDataModelToGUI() { assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); std::set< ListViews * >::iterator it = mListViews.begin(); std::set< ListViews * >::iterator end = mListViews.end(); for (; it != end; ++it) { (*it)->setDataModel(this); } pDataModel->deleteOldData(); }
void CQPlotsWidget::slotBtnDeactivateAllClicked() { CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); if (!pDataModel->getModel()) return; for (size_t i = 0; i < pDataModel->getPlotDefinitionList()->size(); i++) { CPlotSpecification *pPS = static_cast<CPlotSpecification *>(pDataModel->getPlotDefinitionList()->operator[](i)); pPS->setActive(false); } mpTblPlots->doItemsLayout(); }
/** * Creates the simulations for SEDML. */ std::string CSEDMLExporter::createTimeCourseTask(CCopasiDataModel& dataModel, const std::string & modelId) { mpTimecourse = this->mpSEDMLDocument->createUniformTimeCourse(); mpTimecourse->setId(SEDMLUtils::getNextId("sim", mpSEDMLDocument->getNumSimulations())); //presently SEDML only supports time course CCopasiTask* pTask = (*dataModel.getTaskList())["Time-Course"]; CTrajectoryProblem* tProblem = static_cast<CTrajectoryProblem*>(pTask->getProblem()); mpTimecourse->setInitialTime(0.0); mpTimecourse->setOutputStartTime(tProblem->getOutputStartTime()); mpTimecourse->setOutputEndTime(tProblem->getStepNumber()*tProblem->getStepSize()); mpTimecourse->setNumberOfPoints(tProblem->getStepNumber()); // set the correct KISAO Term SedAlgorithm* alg = mpTimecourse->createAlgorithm(); if (pTask->getMethod()->getObjectName().find("Stochastic") != std::string::npos) alg->setKisaoID("KISAO:0000241"); else alg->setKisaoID("KISAO:0000019"); mpTimecourseTask = this->mpSEDMLDocument->createTask(); std::string taskId = SEDMLUtils::getNextId("task", mpSEDMLDocument->getNumTasks()); mpTimecourseTask->setId(taskId); mpTimecourseTask->setSimulationReference(mpTimecourse->getId()); mpTimecourseTask->setModelReference(modelId); return taskId; }
void CCopasiTask::initObjects() { addObjectReference("Output counter", mOutputCounter, CCopasiObject::ValueInt); new CCopasiTimer(CCopasiTimer::WALL, this); new CCopasiTimer(CCopasiTimer::PROCESS, this); CCopasiDataModel *pDataModel = getObjectDataModel(); if (pDataModel != NULL) { if (pDataModel->getModel() != NULL) { setMathContainer(&pDataModel->getModel()->getMathContainer()); } } }