Esempio n. 1
0
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;
    }
}
Esempio n. 2
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);;
            }
        }
    }
Esempio n. 3
0
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;

}
Esempio n. 4
0
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++;
        }
    }

}