本文整理汇总了C++中CCopasiDataModel::getTaskList方法的典型用法代码示例。如果您正苦于以下问题:C++ CCopasiDataModel::getTaskList方法的具体用法?C++ CCopasiDataModel::getTaskList怎么用?C++ CCopasiDataModel::getTaskList使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CCopasiDataModel
的用法示例。
在下文中一共展示了CCopasiDataModel::getTaskList方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: prepareModel
std::string Arguments::prepareModel() const
{
if (!isValid()) return "";
CCopasiDataModel* model = (*CCopasiRootContainer::getDatamodelList())[0];
model->loadModel(getFilename(), NULL);
if (mDisablePlots)
{
for (size_t index = 0; index < model->getPlotDefinitionList()->size(); ++index)
{
(*model->getPlotDefinitionList())[index]->setActive(false);
}
}
if (mClearTargets)
{
for (size_t index = 0; index < model->getTaskList()->size(); ++index)
{
(*model->getTaskList())[index]->getReport().setTarget("");
}
}
CCopasiTask *task = getTask();
if (task != NULL)
{
if (isGenerateOutput())
{
// calls initialize which is private
COutputAssistant::getListOfDefaultOutputDescriptions();
// generate the output
COutputAssistant::createDefaultOutput(mGenerateOutput, task, model);
}
if (haveReportFile())
task->getReport().setTarget(mReportFile);
COptTask* optTask = dynamic_cast<COptTask*>(task);
if (optTask != NULL)
{
COptProblem *problem = (COptProblem *)optTask->getProblem();
if (mSetSolutionStatistic)
optTask->setMethodType(CCopasiMethod::Statistics);
if (isDisableRandomizeStartValues())
problem->setRandomizeStartValues(false);
if (isDisableStatistic())
problem->setCalculateStatistics(false);
}
}
model->saveModel(getFilename() + ".view.cps", NULL, true);
return getFilename() + ".view.cps";
}
示例2: createTasks
/**
* 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"]);
}
示例3: setSteadyStateRequested
/**
* 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(""));
}
示例4: createTimeCourseTask
/**
* 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;
}
示例5: createSteadyStateTask
/**
* Creates the simulations for SEDML.
*/
std::string CSEDMLExporter::createSteadyStateTask(CCopasiDataModel& dataModel, const std::string & modelId)
{
SedSteadyState *steady = this->mpSEDMLDocument->createSteadyState();
steady->setId(SEDMLUtils::getNextId("steady", mpSEDMLDocument->getNumSimulations()));
//presently SEDML only supports time course
CCopasiTask* pTask = (*dataModel.getTaskList())["Steady-State"];
CTrajectoryProblem* tProblem = static_cast<CTrajectoryProblem*>(pTask->getProblem());
// set the correct KISAO Term
SedAlgorithm* alg = steady->createAlgorithm();
alg->setKisaoID("KISAO:0000282");
SedTask *task = this->mpSEDMLDocument->createTask();
std::string taskId = SEDMLUtils::getNextId("task", mpSEDMLDocument->getNumTasks());
task->setId(taskId);
task->setSimulationReference(steady->getId());
task->setModelReference(modelId);
return taskId;
}
示例6: initSubtask
bool CScanTask::initSubtask(const OutputFlag & /* of */,
COutputHandler * pOutputHandler,
std::ostream * pOstream)
{
if (!mpProblem) fatalError();
CScanProblem * pProblem = dynamic_cast<CScanProblem *>(mpProblem);
if (!pProblem) fatalError();
//get the parameters from the problem
CCopasiTask::Type type = *(CCopasiTask::Type*) pProblem->getValue("Subtask").pUINT;
CCopasiDataModel* pDataModel = getObjectDataModel();
assert(pDataModel != NULL);
switch (type)
{
case CCopasiTask::steadyState:
mpSubtask = dynamic_cast<CCopasiTask*>
((*pDataModel->getTaskList())["Steady-State"]);
break;
case CCopasiTask::timeCourse:
mpSubtask = dynamic_cast<CCopasiTask*>
((*pDataModel->getTaskList())["Time-Course"]);
break;
case CCopasiTask::mca:
mpSubtask = dynamic_cast<CCopasiTask*>
((*pDataModel->getTaskList())["Metabolic Control Analysis"]);
break;
case CCopasiTask::lyap:
mpSubtask = dynamic_cast<CCopasiTask*>
((*pDataModel->getTaskList())["Lyapunov Exponents"]);
break;
case CCopasiTask::optimization:
mpSubtask = dynamic_cast<CCopasiTask*>
((*pDataModel->getTaskList())["Optimization"]);
break;
case CCopasiTask::parameterFitting:
mpSubtask = dynamic_cast<CCopasiTask*>
((*pDataModel->getTaskList())["Parameter Estimation"]);
break;
case CCopasiTask::sens:
mpSubtask = dynamic_cast<CCopasiTask*>
((*pDataModel->getTaskList())["Sensitivities"]);
break;
case CCopasiTask::lna:
mpSubtask = dynamic_cast<CCopasiTask*>
((*pDataModel->getTaskList())["Linear Noise Approximation"]);
break;
case CCopasiTask::tssAnalysis :
mpSubtask = dynamic_cast<CCopasiTask*>
((*pDataModel->getTaskList())[CCopasiTask::TypeName[tssAnalysis]]);
break;
case CCopasiTask::crosssection:
mpSubtask = dynamic_cast<CCopasiTask*>
((*pDataModel->getTaskList())["Cross Section"]);
break;
default:
mpSubtask = NULL;
}
mOutputInSubtask = * pProblem->getValue("Output in subtask").pBOOL;
mUseInitialValues = !pProblem->getContinueFromCurrentState();
if (!mpSubtask) return false;
mpSubtask->getProblem()->setModel(pDataModel->getModel()); //TODO
mpSubtask->setCallBack(NULL);
if (mOutputInSubtask)
return mpSubtask->initialize(OUTPUT, pOutputHandler, pOstream);
else
return mpSubtask->initialize(NO_OUTPUT, pOutputHandler, pOstream);
return true;
}
示例7: main
//.........这里部分代码省略.........
}
try
{
// Create the global data model.
CCopasiDataModel* pDataModel = CCopasiRootContainer::addDatamodel();
// Import the SBML File
pDataModel->importSBML(pSBMLFilename);
//pDataModel->getModel()->forceCompile();
// create a report with the correct filename and all the species against
// time.
CReportDefinitionVector* pReports = pDataModel->getReportDefinitionList();
CReportDefinition* pReport = pReports->createReportDefinition("Report", "Output for SBML testsuite run");
pReport->setTaskType(CCopasiTask::timeCourse);
pReport->setIsTable(true);
std::vector<CRegisteredObjectName>* pTable = pReport->getTableAddr();
pTable->push_back(CCopasiObjectName(pDataModel->getModel()->getCN() + ",Reference=Time"));
iMax = iMax - 6;
const CCopasiVector<CMetab>& metabolites = pDataModel->getModel()->getMetabolites();
for (i = 0; i < iMax; ++i)
{
unsigned int j, jMax = metabolites.size();
for (j = 0; j < jMax; ++j)
{
if (metabolites[j]->getSBMLId() == pSBMLSpeciesIds[i])
{
pTable->push_back(metabolites[j]->getObject(CCopasiObjectName("Reference=Concentration"))->getCN());
//std::cout << "adding metabolite " << metabolites[j]->getObjectName() << " to report." << std::endl;
break;
}
}
if (j == jMax)
{
std::cerr << "Could not find a metabolite for the SBML id " << pSBMLSpeciesIds[i] << std::endl;
exit(1);
}
}
// create a trajectory task
pTrajectoryTask = new CTrajectoryTask();
pTrajectoryTask->getProblem()->setModel(pDataModel->getModel());
pTrajectoryTask->setScheduled(true);
pTrajectoryTask->getReport().setReportDefinition(pReport);
pTrajectoryTask->getReport().setTarget(CWD + "/" + pOutputFilename);
pTrajectoryTask->getReport().setAppend(false);
CTrajectoryProblem* pProblem = dynamic_cast<CTrajectoryProblem*>(pTrajectoryTask->getProblem());
pProblem->setStepNumber((const unsigned C_INT32)stepNumber);
pProblem->setDuration((const C_FLOAT64)endTime);
pProblem->setTimeSeriesRequested(true);
//pProblem->setInitialState(pDataModel->getModel()->getInitialState());
CTrajectoryMethod* pMethod = dynamic_cast<CTrajectoryMethod*>(pTrajectoryTask->getMethod());
pMethod->getParameter("Absolute Tolerance")->setValue(1.0e-20);
CCopasiVectorN< CCopasiTask > & TaskList = * pDataModel->getTaskList();
TaskList.remove("Time-Course");
TaskList.add(pTrajectoryTask, true);
// save the file for control purposes
std::string saveFilename = pSBMLFilename;
saveFilename = saveFilename.substr(0, saveFilename.length() - 4) + ".cps";
pDataModel->saveModel(saveFilename, NULL, true);
// Run the trajectory task
pTrajectoryTask->initialize(CCopasiTask::OUTPUT_UI, pDataModel, NULL);
pTrajectoryTask->process(true);
pTrajectoryTask->restore();
// create another report that will write to the directory where the input file came from
// this can be used for debugging
// create a trajectory task
pTrajectoryTask->getReport().setTarget(pOutputFilename);
pTrajectoryTask->initialize(CCopasiTask::OUTPUT_UI, pDataModel, NULL);
pTrajectoryTask->process(true);
pTrajectoryTask->restore();
}
catch (CCopasiException Exception)
{
std::cerr << Exception.getMessage().getText() << std::endl;
}
CCopasiRootContainer::destroy();
return 0;
}
示例8: initialize
bool CFitProblem::initialize()
{
mHaveStatistics = false;
if (!COptProblem::initialize())
{
while (CCopasiMessage::peekLastMessage().getNumber() == MCOptimization + 5 ||
CCopasiMessage::peekLastMessage().getNumber() == MCOptimization + 7)
CCopasiMessage::getLastMessage();
if (CCopasiMessage::getHighestSeverity() > CCopasiMessage::WARNING &&
CCopasiMessage::peekLastMessage().getNumber() != MCCopasiMessage + 1)
return false;
}
std::vector< CCopasiContainer * > ContainerList;
ContainerList.push_back(getObjectAncestor("Vector"));
CCopasiDataModel* pDataModel = getObjectDataModel();
assert(pDataModel != NULL);
mpSteadyState =
dynamic_cast< CSteadyStateTask * >(pDataModel->ObjectFromName(ContainerList, *mpParmSteadyStateCN));
if (mpSteadyState == NULL)
mpSteadyState =
static_cast<CSteadyStateTask *>((*pDataModel->getTaskList())["Steady-State"]);
// We only need to initialize the steady-state task if steady-state data is present.
if (mpExperimentSet->hasDataForTaskType(CCopasiTask::steadyState))
{
mpSteadyState->initialize(CCopasiTask::NO_OUTPUT, NULL, NULL);
}
mpTrajectory =
dynamic_cast< CTrajectoryTask * >(pDataModel->ObjectFromName(ContainerList, *mpParmTimeCourseCN));
if (mpTrajectory == NULL)
mpTrajectory =
static_cast<CTrajectoryTask *>((*pDataModel->getTaskList())["Time-Course"]);
// We only need to initialize the trajectory task if time course data is present.
if (mpExperimentSet->hasDataForTaskType(CCopasiTask::timeCourse))
{
mpTrajectory->initialize(CCopasiTask::NO_OUTPUT, NULL, NULL);
}
ContainerList.clear();
ContainerList.push_back(mpModel);
CFitTask * pTask = dynamic_cast<CFitTask *>(getObjectParent());
if (pTask)
{
ContainerList.push_back(pTask);
ContainerList.push_back(mpSteadyState);
ContainerList.push_back(mpTrajectory);
}
if (!mpExperimentSet->compile(ContainerList)) return false;
// Build a matrix of experiment and experiment local items.
mExperimentUpdateMethods.resize(mpExperimentSet->getExperimentCount(),
mpOptItems->size());
mExperimentUpdateMethods = NULL;
mExperimentInitialRefreshes.resize(mpExperimentSet->getExperimentCount());
std::vector< std::set< const CCopasiObject * > > ObjectSet;
ObjectSet.resize(mpExperimentSet->getExperimentCount());
std::vector<COptItem * >::iterator it = mpOptItems->begin();
std::vector<COptItem * >::iterator end = mpOptItems->end();
std::vector<COptItem * >::iterator itTmp;
CFitItem * pItem;
unsigned C_INT32 i, imax;
unsigned C_INT32 j;
unsigned C_INT32 Index;
imax = mSolutionVariables.size();
mFisher.resize(imax, imax);
mpFisherMatrix->resize();
mCorrelation.resize(imax, imax);
mpCorrelationMatrix->resize();
for (j = 0; it != end; ++it, j++)
{
pItem = static_cast<CFitItem *>(*it);
pItem->updateBounds(mpOptItems->begin());
std::string Annotation = pItem->getObjectDisplayName();
imax = pItem->getExperimentCount();
if (imax == 0)
{
for (i = 0, imax = mpExperimentSet->getExperimentCount(); i < imax; i++)
{
mExperimentUpdateMethods(i, j) = pItem->COptItem::getUpdateMethod();
//.........这里部分代码省略.........
示例9: elevateChildren
bool CFitProblem::elevateChildren()
{
// This call is necessary since CFitProblem is derived from COptProblem.
if (!COptProblem::elevateChildren()) return false;
// Due to a naming conflict the following parameters may have been overwritten during
// the load of a CopasiML file we replace them with default values if that was the case.
mpParmSteadyStateCN =
assertParameter("Steady-State", CCopasiParameter::CN, CCopasiObjectName(""))->getValue().pCN;
mpParmTimeCourseCN =
assertParameter("Time-Course", CCopasiParameter::CN, CCopasiObjectName(""))->getValue().pCN;
CCopasiVectorN< CCopasiTask > * pTasks = NULL;
CCopasiDataModel* pDataModel = getObjectDataModel();
if (pDataModel)
pTasks = pDataModel->getTaskList();
if (pTasks == NULL)
pTasks = dynamic_cast<CCopasiVectorN< CCopasiTask > *>(getObjectAncestor("Vector"));
if (pTasks)
{
unsigned C_INT32 i, imax = pTasks->size();
if (!mpParmSteadyStateCN->compare(0, 5 , "Task_") ||
*mpParmSteadyStateCN == "")
for (i = 0; i < imax; i++)
if ((*pTasks)[i]->getType() == CCopasiTask::steadyState)
{
*mpParmSteadyStateCN = (*pTasks)[i]->getCN();
break;
}
if (!mpParmTimeCourseCN->compare(0, 5 , "Task_") ||
*mpParmTimeCourseCN == "")
for (i = 0; i < imax; i++)
if ((*pTasks)[i]->getType() == CCopasiTask::timeCourse)
{
*mpParmTimeCourseCN = (*pTasks)[i]->getCN();
break;
}
}
std::map<std::string, std::string> ExperimentMap;
CCopasiParameterGroup * pGroup;
CExperiment * pExperiment;
std::vector<CCopasiParameter *> * pExperiments =
getGroup("Experiment Set")->CCopasiParameter::getValue().pGROUP;
std::vector<CCopasiParameter *>::iterator itExp;
std::vector<CCopasiParameter *>::iterator endExp;
for (itExp = pExperiments->begin(), endExp = pExperiments->end(); itExp != endExp; ++itExp)
if ((pGroup = dynamic_cast< CCopasiParameterGroup * >(*itExp)) != NULL &&
pGroup->getParameter("Key") != NULL)
ExperimentMap[*pGroup->getValue("Key").pKEY] = (*itExp)->getObjectName();
mpExperimentSet =
elevate<CExperimentSet, CCopasiParameterGroup>(getGroup("Experiment Set"));
if (!mpExperimentSet) return false;
std::map<std::string, std::string>::iterator itMap;
std::map<std::string, std::string>::iterator endMap;
for (itMap = ExperimentMap.begin(), endMap = ExperimentMap.end(); itMap != endMap; ++itMap)
{
pExperiment = mpExperimentSet->getExperiment(itMap->second);
itMap->second = pExperiment->CCopasiParameter::getKey();
pExperiment->setValue("Key", itMap->second);
}
std::vector<COptItem * >::iterator it = mpOptItems->begin();
std::vector<COptItem * >::iterator end = mpOptItems->end();
for (; it != end; ++it)
{
if (!((*it) = elevate<CFitItem, COptItem>(*it)))
return false;
pExperiments =
(*it)->getParameter("Affected Experiments")->getValue().pGROUP;
for (itExp = pExperiments->begin(), endExp = pExperiments->end(); itExp != endExp; ++itExp)
(*itExp)->setValue(ExperimentMap[*(*itExp)->getValue().pKEY]);
}
it = mpConstraintItems->begin();
end = mpConstraintItems->end();
for (; it != end; ++it)
{
if (!((*it) = elevate<CFitConstraint, COptItem>(*it)))
return false;
pExperiments =
(*it)->getParameter("Affected Experiments")->getValue().pGROUP;
//.........这里部分代码省略.........
示例10: enterProtected
bool CQFittingResult::enterProtected()
{
assert(CCopasiRootContainer::getDatamodelList()->size() > 0);
CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0];
assert(pDataModel != NULL);
mpTask =
dynamic_cast<CFitTask *>((*pDataModel->getTaskList())["Parameter Estimation"]);
if (!mpTask) return false;
mpProblem = dynamic_cast<const CFitProblem *>(mpTask->getProblem());
if (!mpProblem) return false;
mpMain->load(mpProblem);
if (mpProblem->getCalculateStatistics())
{
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpExperiments), true);
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpValues), true);
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCorrelations), true);
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpFisherInformation), true);
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCrossValidations), true);
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCrossValidationValues), true);
}
else
{
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpExperiments), false);
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpValues), false);
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCorrelations), false);
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpFisherInformation), false);
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCrossValidations), false);
mpTabWidget->setTabEnabled(mpTabWidget->indexOf(mpCrossValidationValues), false);
}
size_t i, imax;
QTableWidgetItem * pItem;
// Loop over the optimization items
const std::vector< COptItem * > & Items = mpProblem->getOptItemList();
const CVector< C_FLOAT64 > & Solutions = mpProblem->getSolutionVariables();
const CVector< C_FLOAT64 > & StdDeviations = mpProblem->getVariableStdDeviations();
const CVector< C_FLOAT64 > & Gradients = mpProblem->getVariableGradients();
imax = Items.size();
if (mpProblem->getFunctionEvaluations() == 0)
imax = 0;
//the parameters table
mpParameters->setRowCount((int) imax);
QColor BackgroundColor = mpParameters->palette().brush(QPalette::Active, QPalette::Base).color();
int h, s, v;
BackgroundColor.getHsv(&h, &s, &v);
if (s < 20)
{
s = 20;
}
BackgroundColor.setHsv(0, s, v);
for (i = 0; i != imax; i++)
{
//1st column: parameter name
const CCopasiObject *pObject =
pDataModel->getDataObject(Items[i]->getObjectCN());
if (pObject)
{
std::string Experiments =
static_cast<CFitItem *>(Items[i])->getExperiments();
if (Experiments != "")
Experiments = "; {" + Experiments + "}";
pItem = new QTableWidgetItem(FROM_UTF8(pObject->getObjectDisplayName() + Experiments));
}
else
pItem = new QTableWidgetItem("Not Found");
mpParameters->setItem((int) i, 0, pItem);
const C_FLOAT64 & Solution = i < Solutions.size() ? Solutions[i] : std::numeric_limits<double>::quiet_NaN();
//2nd column: lower bound
const COptItem *current = Items[i];
pItem = new QTableWidgetItem(FROM_UTF8(current->getLowerBound()));
mpParameters->setItem((int) i, 1, pItem);
if (current->getLowerBoundValue() != NULL && 1.01 * *current->getLowerBoundValue() > Solution)
{
pItem->setBackgroundColor(BackgroundColor);
}
//.........这里部分代码省略.........
示例11: populateTree
//.........这里部分代码省略.........
pObject = pModel->getObject(CCopasiObjectName("Array=Reduced stoichiometry(ann)"));
if (filter(classes, pObject))
{
// pItem = new QListViewItem(matrixSubtree, "Reduced stoichiometry(ann)");
pItem = new Q3ListViewItem(mpModelMatrixSubtree, FROM_UTF8(pObject->getObjectName()));
treeItems[pItem] = pObject;
}
}
const CMatrix<C_FLOAT64> &LinkMatrix = pModel->getL0();
if (LinkMatrix.array())
{
pObject = pModel->getObject(CCopasiObjectName("Array=Link matrix(ann)"));
if (filter(classes, pObject))
{
// pItem = new QListViewItem(matrixSubtree, "Link matrix(ann)");
pItem = new Q3ListViewItem(mpModelMatrixSubtree, FROM_UTF8(pObject->getObjectName()));
treeItems[pItem] = pObject;
}
}
removeEmptySubTree(&mpModelMatrixSubtree);
// find all result matrices
// Metabolic Control Analysis
CCopasiTask *task;
assert(CCopasiRootContainer::getDatamodelList()->size() > 0);
CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0];
assert(pDataModel != NULL);
// MCA
task = dynamic_cast<CCopasiTask*>((*pDataModel->getTaskList())["Metabolic Control Analysis"]);
try
{
if (task && task->updateMatrices())
{
//for mca the result is in the method
CMCAMethod* pMethod = dynamic_cast<CMCAMethod *>(task->getMethod());
const CCopasiContainer::objectMap * pObjects = & pMethod->getObjects();
CCopasiContainer::objectMap::const_iterator its = pObjects->begin();
CArrayAnnotation *ann;
for (; its != pObjects->end(); ++its)
{
ann = dynamic_cast<CArrayAnnotation*>(its->second);
if (!ann) continue;
if (!ann->isEmpty() && filter(classes, ann))
{
pItem = new Q3ListViewItem(this->mpResultMCASubtree, FROM_UTF8(ann->getObjectName()));
treeItems[pItem] = ann;
}
}
}
}
catch (...)
{}
// Steady State
task = dynamic_cast<CCopasiTask *>((*pDataModel->getTaskList())["Steady-State"]);
示例12: createScanTask
/**
* Creates the simulations for SEDML.
*/
std::string CSEDMLExporter::createScanTask(CCopasiDataModel& dataModel, const std::string & modelId)
{
// need L1V2 to export repeated tasks
if (mpSEDMLDocument->getVersion() != 2) return "";
CScanTask* pTask = dynamic_cast<CScanTask*>((*dataModel.getTaskList())["Scan"]);
if (pTask == NULL) return "";
CScanProblem* pProblem = dynamic_cast<CScanProblem*>(pTask->getProblem());
size_t numItems = pProblem->getNumberOfScanItems();
if (numItems == 0)
return "";
if (pProblem->getSubtask() != CCopasiTask::steadyState &&
pProblem->getSubtask() != CCopasiTask::timeCourse)
{
CCopasiMessage(CCopasiMessage::WARNING, "This version of COPASI only allows the export of time course or steady state scans.");
return "";
}
std::string subTaskId;
if (pProblem->getSubtask() == CCopasiTask::steadyState)
{
subTaskId = createSteadyStateTask(dataModel, modelId);
}
else
{
subTaskId = mpTimecourseTask->getId();
}
SedRepeatedTask* task = mpSEDMLDocument->createRepeatedTask();
std::string taskId = SEDMLUtils::getNextId("task", mpSEDMLDocument->getNumTasks());
task->setId(taskId);
task->setResetModel(!pProblem->getContinueFromCurrentState());
// craete ranges / changes
for (size_t i = 0; i < numItems; ++i)
{
CCopasiParameterGroup* current = pProblem->getScanItem(i);
CScanProblem::Type type = (CScanProblem::Type)(*current->getParameter("Type")->getValue().pUINT);
// ignore random items
if (type == CScanProblem::SCAN_RANDOM)
{
CCopasiMessage(CCopasiMessage::WARNING, "This version of COPASI cannot export random scan items, they will be ignored.");
continue;
}
int numSteps = (*current->getParameter("Number of steps")->getValue().pUINT);
// handle repeats
if (type == CScanProblem::SCAN_REPEAT)
{
SedUniformRange *range = task->createUniformRange();
range->setId(SEDMLUtils::getNextId("range", task->getNumRanges()));
range->setStart(0);
range->setEnd(numSteps);
range->setNumberOfPoints(numSteps);
range->setType("linear");
if (task->isSetRangeId())
task->setRangeId(range->getId());
continue;
}
// handle scans
if (type == CScanProblem::SCAN_LINEAR)
{
double min = (*current->getParameter("Minimum")->getValue().pDOUBLE);
double max = (*current->getParameter("Maximum")->getValue().pDOUBLE);
bool log = (*current->getParameter("log")->getValue().pBOOL);
SedUniformRange *range = task->createUniformRange();
range->setId(SEDMLUtils::getNextId("range", task->getNumRanges()));
range->setStart(min);
range->setEnd(max);
range->setNumberOfPoints(numSteps);
range->setType(log ? "log" : "linear");
const CRegisteredObjectName& cn = (*current->getParameter("Object")->getValue().pCN);
std::string xpath = SEDMLUtils::getXPathForObject(*static_cast<const CCopasiObject*>(dataModel.getObject(cn)));
if (xpath.empty())
{
CCopasiMessage(CCopasiMessage::WARNING, "This version of COPASI cannot export the selected scan object, it will be ignored.");
continue;
}
SedSetValue *change = task->createTaskChange();
change->setModelReference(modelId);
if (xpath == SEDML_TIME_URN)
{
//.........这里部分代码省略.........
示例13: main
//.........这里部分代码省略.........
for (i = 0; i < iMax; ++i)
{
pHeader->push_back(Separator.getCN());
pBody->push_back(Separator.getCN());
unsigned int j, jMax = metabolites.size();
std::string SBMLId = unQuote(pSBMLSpeciesIds[i]);
for (j = 0; j < jMax; ++j)
{
if (metabolites[j]->getSBMLId() == SBMLId)
{
break;
}
}
if (j == jMax)
{
std::cerr << "Could not find a metabolite for the SBML id \"" << pSBMLSpeciesIds[i] << "\"" << std::endl;
exit(1);
}
pHeader->push_back(CCopasiStaticString(SBMLId).getCN());
pBody->push_back(metabolites[j]->getObject(CCopasiObjectName("Reference=ParticleNumber"))->getCN());
}
// create a trajectory task
pTrajectoryTask = new CTrajectoryTask();
pTrajectoryTask->setMethodType(MethodType);
pTrajectoryTask->getProblem()->setModel(pDataModel->getModel());
pTrajectoryTask->setScheduled(false);
//pTrajectoryTask->getReport().setReportDefinition(pReport);
//pTrajectoryTask->getReport().setTarget(CWD + "/" + pOutputFilename);
//pTrajectoryTask->getReport().setAppend(false);
CTrajectoryProblem* pProblem = dynamic_cast<CTrajectoryProblem*>(pTrajectoryTask->getProblem());
pProblem->setStepNumber((const unsigned C_INT32)stepNumber);
pProblem->setDuration((const C_FLOAT64)endTime);
pProblem->setTimeSeriesRequested(true);
pProblem->setTimeSeriesRequested(false);
//pProblem->setInitialState(pDataModel->getModel()->getInitialState());
CCopasiVectorN< CCopasiTask > & TaskList = * pDataModel->getTaskList();
TaskList.remove("Time-Course");
TaskList.add(pTrajectoryTask, true);
// create a scan task
pScanTask = new CScanTask(pDataModel);
CScanProblem* pScanProblem = dynamic_cast<CScanProblem*>(pScanTask->getProblem());
pScanProblem->setModel(pDataModel->getModel());
pScanTask->setScheduled(true);
pScanTask->getReport().setReportDefinition(pReport);
pScanTask->getReport().setTarget(CWD + "/" + pOutputFilename);
pScanTask->getReport().setAppend(false);
pScanProblem->setSubtask(CCopasiTask::timeCourse);
pScanProblem->createScanItem(CScanProblem::SCAN_REPEAT, repeats);
pScanProblem->setOutputInSubtask(true);
pScanProblem->setContinueFromCurrentState(false);
TaskList.remove("Scan");
TaskList.add(pScanTask, true);
// save the file for control purposes
std::string saveFilename = pSBMLFilename;
saveFilename = saveFilename.substr(0, saveFilename.length() - 4) + ".cps";
pDataModel->saveModel(saveFilename, NULL, true);
// Run the trajectory task
pScanTask->initialize(CCopasiTask::OUTPUT_SE, pDataModel, NULL);
pScanTask->process(true);
pScanTask->restore();
// create another report that will write to the directory where the input file came from
// this can be used for debugging
// create a trajectory task
// pScanTask->getReport().setTarget(pOutputFilename);
// pScanTask->initialize(CCopasiTask::OUTPUT_SE, pDataModel, NULL);
// pScanTask->process(true);
// pScanTask->restore();
}
catch (CCopasiException Exception)
{
std::cerr << Exception.getMessage().getText() << std::endl;
}
CCopasiRootContainer::destroy();
return 0;
}
示例14: main
int main(int argc, char** argv)
{
// initialize the backend library
CCopasiRootContainer::init(argc, argv);
assert(CCopasiRootContainer::getRoot() != NULL);
// create a new datamodel
CCopasiDataModel* pDataModel = CCopasiRootContainer::addDatamodel();
assert(CCopasiRootContainer::getDatamodelList()->size() == 1);
// the only argument to the main routine should be the name of an SBML file
if (argc == 2)
{
std::string filename = argv[1];
try
{
// load the model without progress report
pDataModel->importSBML(filename, NULL);
}
catch (...)
{
std::cerr << "Error while importing the model from file named \"" << filename << "\"." << std::endl;
CCopasiRootContainer::destroy();
return 1;
}
CModel* pModel = pDataModel->getModel();
assert(pModel != NULL);
// create a report with the correct filename and all the species against
// time.
CReportDefinitionVector* pReports = pDataModel->getReportDefinitionList();
// create a new report definition object
CReportDefinition* pReport = pReports->createReportDefinition("Report", "Output for timecourse");
// set the task type for the report definition to timecourse
pReport->setTaskType(CTaskEnum::timeCourse);
// we don't want a table
pReport->setIsTable(false);
// the entries in the output should be seperated by a ", "
pReport->setSeparator(", ");
// we need a handle to the header and the body
// the header will display the ids of the metabolites and "time" for
// the first column
// the body will contain the actual timecourse data
std::vector<CRegisteredObjectName>* pHeader = pReport->getHeaderAddr();
std::vector<CRegisteredObjectName>* pBody = pReport->getBodyAddr();
pBody->push_back(CCopasiObjectName(pDataModel->getModel()->getCN() + ",Reference=Time"));
pBody->push_back(CRegisteredObjectName(pReport->getSeparator().getCN()));
pHeader->push_back(CCopasiStaticString("time").getCN());
pHeader->push_back(pReport->getSeparator().getCN());
size_t i, iMax = pModel->getMetabolites().size();
for (i = 0; i < iMax; ++i)
{
CMetab* pMetab = &pModel->getMetabolites()[i];
assert(pMetab != NULL);
// we don't want output for FIXED metabolites right now
if (pMetab->getStatus() != CModelEntity::FIXED)
{
// we want the concentration oin the output
// alternatively, we could use "Reference=Amount" to get the
// particle number
pBody->push_back(pMetab->getObject(CCopasiObjectName("Reference=Concentration"))->getCN());
// after each entry, we need a seperator
pBody->push_back(pReport->getSeparator().getCN());
// add the corresponding id to the header
pHeader->push_back(CCopasiStaticString(pMetab->getSBMLId()).getCN());
// and a seperator
pHeader->push_back(pReport->getSeparator().getCN());
}
}
if (iMax > 0)
{
// delete the last separator
// since we don't need one after the last element on each line
if ((*pBody->rbegin()) == pReport->getSeparator().getCN())
{
pBody->erase(--pBody->end());
}
if ((*pHeader->rbegin()) == pReport->getSeparator().getCN())
{
pHeader->erase(--pHeader->end());
}
}
// get the task list
CCopasiVectorN< CCopasiTask > & TaskList = * pDataModel->getTaskList();
// get the trajectory task object
CTrajectoryTask* pTrajectoryTask = dynamic_cast<CTrajectoryTask*>(&TaskList["Time-Course"]);
// if there isn't one
if (pTrajectoryTask == NULL)
{
// remove any existing trajectory task just to be sure since in
//.........这里部分代码省略.........
示例15: enterProtected
bool CQFittingResult::enterProtected()
{
assert(CCopasiRootContainer::getDatamodelList()->size() > 0);
CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0];
assert(pDataModel != NULL);
mpTask =
dynamic_cast<CFitTask *>((*pDataModel->getTaskList())["Parameter Estimation"]);
if (!mpTask) return false;
mpProblem = dynamic_cast<const CFitProblem *>(mpTask->getProblem());
if (!mpProblem) return false;
mpMain->load(mpProblem);
unsigned C_INT32 i, imax;
// Loop over the optimization items
const std::vector< COptItem * > & Items = mpProblem->getOptItemList();
const CVector< C_FLOAT64 > & Solutions = mpProblem->getSolutionVariables();
const CVector< C_FLOAT64 > & StdDeviations = mpProblem->getVariableStdDeviations();
const CVector< C_FLOAT64 > & Gradients = mpProblem->getVariableGradients();
imax = Items.size();
if (mpProblem->getFunctionEvaluations() == 0)
imax = 0;
mpParameters->setNumRows(imax);
for (i = 0; i != imax; i++)
{
const CCopasiObject *pObject =
pDataModel->getObject(Items[i]->getObjectCN());
if (pObject)
{
std::string Experiments =
static_cast<CFitItem *>(Items[i])->getExperiments();
if (Experiments != "")
Experiments = "; {" + Experiments + "}";
mpParameters->setText(i, 0, FROM_UTF8(pObject->getObjectDisplayName() + Experiments));
}
else
mpParameters->setText(i, 0, "Not Found");
const C_FLOAT64 & Solution = Solutions[i];
mpParameters->setText(i, 1, QString::number(Solution));
const C_FLOAT64 & StdDeviation = StdDeviations[i];
mpParameters->setText(i, 2, QString::number(StdDeviation));
mpParameters->setText(i, 3, QString::number(fabs(100.0 * StdDeviation / Solution)));
mpParameters->setText(i, 4, QString::number(Gradients[i]));
}
for (i = 0, imax = mpParameters->numCols(); i != imax; i++)
mpParameters->adjustColumn(i);
// Loop over the experiments
const CExperimentSet & Experiments = mpProblem->getExperiementSet();
imax = Experiments.getExperimentCount();
if (mpProblem->getFunctionEvaluations() == 0)
imax = 0;
mpExperiments->setNumRows(imax);
for (i = 0; i != imax; i++)
{
const CExperiment & Experiment = * Experiments.getExperiment(i);
mpExperiments->setText(i, 0, FROM_UTF8(Experiment.getObjectName()));
mpExperiments->setText(i, 1, QString::number(Experiment.getObjectiveValue()));
mpExperiments->setText(i, 2, QString::number(Experiment.getRMS()));
mpExperiments->setText(i, 3, QString::number(Experiment.getErrorMean()));
mpExperiments->setText(i, 4, QString::number(Experiment.getErrorMeanSD()));
}
for (i = 0, imax = mpExperiments->numCols(); i != imax; i++)
mpExperiments->adjustColumn(i);
// Loop over the dependent objects
imax = Experiments.getDependentObjects().size();
if (mpProblem->getFunctionEvaluations() == 0)
imax = 0;
mpValues->setNumRows(imax);
for (i = 0; i != imax; i++)
{
const CCopasiObject * pObject = Experiments.getDependentObjects()[i];
if (pObject)
mpValues->setText(i, 0, FROM_UTF8(pObject->getObjectDisplayName()));
else
mpValues->setText(i, 0, "Not Found");
//.........这里部分代码省略.........