double MOOptVector::value(const QString &name,bool &ok,int iScan,int iPoint) { VariableResult* var = this->findItem(name); if(var) { ok = true; return var->finalValue(iScan,iPoint); } else { ok = false; return 0; } }
void WidgetSelectVars::addVariables() { QModelIndexList proxyIndexes = ui->listVars->selectionModel()->selectedIndexes(); QModelIndex curProxyIndex; QModelIndex curSourceIndex; Variable* varSelected; VariableResult* optVarSelected; // Adding selected variables in overwritedVariables bool alreadyIn; foreach(curProxyIndex, proxyIndexes) // loop through and remove them { curSourceIndex = variableProxyModel->mapToSource(curProxyIndex); if(_useOpt) { VariableResult *newVar; optVarSelected=_allOptVariables->at(curSourceIndex.row()); qDebug() << optVarSelected; qDebug() << curProxyIndex.internalPointer(); qDebug() << curSourceIndex.internalPointer(); alreadyIn = _selectedOptVariables->alreadyIn(optVarSelected->name()); if (!alreadyIn) { newVar = new VariableResult(*optVarSelected); _selectedOptVariables->addItem(newVar);; } } else { Variable *newVar; varSelected=_allVariables->at(curSourceIndex.row()); alreadyIn = _selectedVariables->alreadyIn(varSelected->name()); qDebug() << varSelected; qDebug() << curProxyIndex.internalPointer(); qDebug() << curSourceIndex.internalPointer(); if (!alreadyIn) { newVar = new Variable(*varSelected); _selectedVariables->addItem(newVar);; } } }
QString MOOptVector::toCSV(int iPoint) { QString csv; VariableResult* var; for(int iV=0;iV<size();iV++) { var = items.at(iV); csv+=var->name()+"\t"; } csv+="\n"; for(int iS=0;iS<nbScans();iS++) { for(int iV=0;iV<size();iV++) { var = items.at(iV); csv+=QString::number(var->finalValue(iS,iPoint))+"\t"; } csv+="\n"; } return csv; }
void MOOptVector::updateFromCsv(QString text) { QStringList lines = text.split("\n",QString::KeepEmptyParts); QStringList firstLine = lines[0].split("\t",QString::SkipEmptyParts); int nbCols = firstLine.size(); QStringList curLine; int iPoint=0; // read first column and create or not variables QString colName; QString modelName; QString varName; QRegExp varExp("^(\\S*)#(\\S*)"); QList<int> indexes; VariableResult* curVar; for(int i=0;i<nbCols;i++) { // get var and model names colName = firstLine.at(i); if(colName.indexOf(varExp)==0) { modelName = varExp.capturedTexts().at(1); varName = varExp.capturedTexts().at(2); } else { modelName.clear(); varName = colName; } curVar = this->findVariable(modelName,varName); if(!curVar) { curVar = new VariableResult(); curVar->setName(varName); curVar->setModel(modelName); this->addItem(curVar); } indexes.push_back(this->_items.indexOf(curVar)); } double value; bool ok; int index; int iScan=0; for (int iLine = 1; iLine<lines.size(); iLine++) { curLine = lines[iLine].split("\t",QString::SkipEmptyParts); if(curLine.isEmpty()) { // start a new scan iScan++; iPoint = 0; } if(curLine.size()==nbCols) { for (int iCol = 0; iCol < nbCols; iCol++) { value = curLine[iCol].toDouble(&ok); index = indexes.at(iCol); if(ok && (index>-1)) this->at(index)->setFinalValue(iScan,iPoint,value); } iPoint++; } } }