Ejemplo n.º 1
0
bool
aService::copyFile(const QString& srcFileName, const QString& destFileName, bool replaceIfExists)
{
	
	QFile srcFile(srcFileName);
	QFile destFile(destFileName);
	
	if(!srcFile.exists())
	{
		aLog::print(aLog::MT_ERROR, QObject::tr("aService copy: source file %1 not exist").arg(srcFileName));
		return false;
	}
	if(destFile.exists() && !replaceIfExists)
	{
		aLog::print(aLog::MT_ERROR, QObject::tr("aService copy: replace destination file %1").arg(destFileName));
		return false;
	}

	if(!srcFile.open( IO_ReadOnly ))
	{
		aLog::print(aLog::MT_ERROR, QObject::tr("aService copy: source file %1 open for read error").arg(srcFileName));
		return false;
	}
	if(!destFile.open( IO_WriteOnly))
	{
		aLog::print(aLog::MT_ERROR, QObject::tr("aService copy: destination file %1 open for write error").arg(destFileName));
		return false;
	}
	
	const int BUFFER_SIZE = 1024;
	Q_INT8 buffer[BUFFER_SIZE];
	QDataStream srcStream(&srcFile);
	QDataStream destStream(&destFile);

	while(!srcStream.atEnd())
	{
		int i = 0;
		while(!srcStream.atEnd() && i < BUFFER_SIZE)
		{
			srcStream >> buffer[i];
			i++;
		}
		for(int k = 0; k < i; k++)
		{
			destStream << buffer[k];
		}
	}
	srcFile.close();
	destFile.close();

	aLog::print(aLog::MT_INFO, QObject::tr("aService copy file %1 to %2 ok").arg(srcFileName).arg(destFileName));
	return true;
}
Ejemplo n.º 2
0
// Copy, recursively if necessary, the source to the destination
bool Foam::cp(const fileName& src, const fileName& dest)
{
    // Make sure source exists.
    if (!exists(src))
    {
        return false;
    }

    fileName destFile(dest);

    // Check type of source file.
    if (src.type() == fileName::FILE)
    {
        // If dest is a directory, create the destination file name.
        if (destFile.type() == fileName::DIRECTORY)
        {
            destFile = destFile/src.name();
        }

        // Make sure the destination directory exists.
        if (!isDir(destFile.path()) && !mkDir(destFile.path()))
        {
            return false;
        }

        // Open and check streams.
        std::ifstream srcStream(src.c_str());
        if (!srcStream)
        {
            return false;
        }

        std::ofstream destStream(destFile.c_str());
        if (!destStream)
        {
            return false;
        }

        // Copy character data.
        char ch;
        while (srcStream.get(ch))
        {
            destStream.put(ch);
        }

        // Final check.
        if (!srcStream.eof() || !destStream)
        {
            return false;
        }
    }
    else if (src.type() == fileName::DIRECTORY)
    {
        // If dest is a directory, create the destination file name.
        if (destFile.type() == fileName::DIRECTORY)
        {
            destFile = destFile/src.component(src.components().size() -1);
        }

        // Make sure the destination directory exists.
        if (!isDir(destFile) && !mkDir(destFile))
        {
            return false;
        }

        // Copy files
        fileNameList contents = readDir(src, fileName::FILE, false);
        forAll(contents, i)
        {
            if (POSIX::debug)
            {
                Info<< "Copying : " << src/contents[i]
                    << " to " << destFile/contents[i] << endl;
            }

            // File to file.
            cp(src/contents[i], destFile/contents[i]);
        }

        // Copy sub directories.
        fileNameList subdirs = readDir(src, fileName::DIRECTORY);
        forAll(subdirs, i)
        {
            if (POSIX::debug)
            {
                Info<< "Copying : " << src/subdirs[i]
                    << " to " << destFile << endl;
            }

            // Dir to Dir.
            cp(src/subdirs[i], destFile);
        }
    }

    return true;
}
Ejemplo n.º 3
0
/** reads the configuration file .cuterc*/
void readConfig()
{
	QDir dir = QDir::home();
	
	if( !dir.cd(".cute") ){
	dir.cd(".cute");
		QFileInfo fi(dir, ".cute");
		if(fi.exists()){
				if(fi.isDir())
					QMessageBox::warning(qApp->mainWidget(), "CUTE", "Cannot cd into .cute");
				else
					QMessageBox::warning(qApp->mainWidget(), "CUTE", "Cannot create directory");
			}
		else{
			QMessageBox::information(qApp->mainWidget(), "CUTE", "Creating ~/.cute directory");
			if(!dir.mkdir(".cute"))
				QMessageBox::information(qApp->mainWidget(), "CUTE", "Could not create ~/.cute directory");
			else{
				dir.cd(".cute");
				if(!dir.mkdir("scripts"))
					QMessageBox::information(qApp->mainWidget(), "CUTE", "Could not create ~/.cute/scripts directory");
				if(!dir.mkdir("macros"))
					QMessageBox::information(qApp->mainWidget(), "CUTE", "Could not create ~/.cute/macros directory");
				if(!dir.mkdir("sessions"))
					QMessageBox::information(qApp->mainWidget(), "CUTE", "Could not create ~/.cute/sessions directory");
			}
		}
	}

	// if cute version >= 0.1.6 langs dir is required
	if( !QDir(QDir::homeDirPath()+QDir::separator()+".cute"+QDir::separator()+"langs").exists() ) {
		QDir destDir = QDir::home();
		destDir.cd(".cute");
		destDir.mkdir("langs");
		destDir.cd("langs");
		QDir srcDir(LANG_DIR);
	
		QString data;
		QStringList dirList = srcDir.entryList();
		for( int i = 2; i < dirList.count(); i++)
			if( QFileInfo(srcDir.absPath()+QDir::separator()+dirList[i]).isFile()) {
				QFile srcFile(srcDir.absPath()+QDir::separator()+dirList[i]);
				QFile destFile(destDir.absPath()+QDir::separator()+dirList[i]);
				if(destFile.exists())
					continue;
				QTextStream destStream(&destFile);
				QTextStream srcStream(&srcFile);
				srcFile.open(IO_ReadOnly);
				destFile.open(IO_WriteOnly);
				data = srcStream.read();
				destStream << data;
				srcFile.close();
				destFile.close();
			}
	}
	
	QFile file(QDir::homeDirPath()+"/.cuterc");
	if(!file.exists()){
		QMessageBox::information(qApp->mainWidget(), "CUTE", "Creating ~/.cuterc");
		file.open(IO_ReadOnly);
		file.close();
		return;
	}
	
	//FILE *c_file = fopen("/home/heiko/.cuterc", "r");
	//PyRun_SimpleFile(c_file, ".cuterc");
	QString const_cmd("execfile(\".cuterc\")\n");
	dir = QDir::current();
	QDir::setCurrent( QDir::homeDirPath() );
	char *cmd = new char[1024];
	strcpy(cmd, const_cmd.latin1());
	PyRun_SimpleString(cmd);

	// read language config files
	QDir langDir = QDir(QDir::homeDirPath()+QDir::separator()+".cute"+QDir::separator()+"langs");
	QStringList langEntryList = langDir.entryList();
	QString langFile;
	for( int i = 2; i < langEntryList.count(); i++ ){
		QString langFile = langDir.absPath()+QDir::separator()+langEntryList[i];
		QFileInfo fi(langDir, langFile);
		if(fi.isFile()){
			langFile = QString("execfile(\"")+langFile+QString("\")\n");
			char *cmd = strdup(langFile);
			PyRun_SimpleString( cmd );
		}
	}

	QDir::setCurrent( dir.absPath() );
}
Ejemplo n.º 4
0
bool UiController::NewExperimenLoadfromCSV(const QString &fileName)
{
    QFile file(fileName);

    if(!file.open(QIODevice::ReadOnly))
        return false;
    QTextStream srcStream(&file);

    /* очень нужная штука для расшифровки кодировки*/
    QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
    if (codec!= NULL)
    {
        srcStream.setCodec(codec);
    }
    else
    {
        assert(1);
    }
    /* очень нужная штука для расшифровки кодировки*/

    QStringList evaluateFunction;
    int replicaDelimiter;
    int factorCount;
    int generalFactorCount;
    int replica_row_count;
    QString tmp_str = srcStream.readLine();
    QString function = tmp_str.split(QRegExp(";"))[1];
    QString measure = "";
    if ("" != function) {
        measure = srcStream.readLine().split(QRegExp(";"))[1];
        evaluateFunction << function << measure;
    } else {
        evaluateFunction << "" << "";
    }

    QString tmp;
    QStringList descriptions;
    QStringList tmpList;
    std::vector<double> *center;
    std::vector<double> *delta;
    double num;
    tmp = srcStream.readLine();
    if ("" == tmp.split(QRegExp(";"))[1]) {
        tmp = srcStream.readLine();
    }
    if ("" != tmp) {
        tmp = tmp.split(QRegExp(";"))[1];
        factorCount = tmp.toInt();
        tmp = srcStream.readLine().split(QRegExp(";"))[1];
        replica_row_count = tmp.toInt();
        tmp = srcStream.readLine().split(QRegExp(";"))[1];
        replicaDelimiter = tmp.toInt();
        tmp = srcStream.readLine().split(QRegExp(";"))[1];
        generalFactorCount = tmp.toInt();

        srcStream.readLine();

        center = new std::vector<double>(factorCount);
        delta  = new std::vector<double>(factorCount);
        for(size_t i = 0; i < factorCount; i++)
        {
            tmpList = srcStream.readLine().split(QRegExp(";"));
            tmp = ExperimentTable::doubleWithDot(tmpList[1]);
            num = tmp.toDouble();
            center->at(i) = num;
        }
        srcStream.readLine();
        for(size_t i = 0; i < factorCount; i++)
        {
            tmpList = srcStream.readLine().split(QRegExp(";"));
            tmp = ExperimentTable::doubleWithDot(tmpList[1]);
            num = tmp.toDouble();
            delta->at(i) = num*2;
        }

        quint64 descrCount;
        tmp = srcStream.readLine().split(QRegExp(";"))[1];
        descrCount = tmp.toULongLong();
        srcStream.readLine();
        if(descrCount > 0)
        {
            for(size_t i = 0; i < descrCount; i++)
            {
                tmpList = srcStream.readLine().split(QRegExp(";"));
                QString d = ExperimentTable::doubleWithDot(tmpList[1]);;
                descriptions << d.replace("\"","");
            }
        }
        QString intLevString = srcStream.readLine().split(QRegExp(";"))[1];
        _interactionLevel = intLevString.toInt();
    }
    // Model Type
    bool isMax = true;
    double strideParameter = 0.50;
    int numberStride = 7;
    double interestAllowedDeviation = 30;
    tmp = srcStream.readLine();
    tmp = tmp.split(QRegExp(";"))[1];
    if("MATHMODEL" == tmp)
    {
        _ModelType = MATHMODEL;
    }
    else
    {
        srcStream.readLine();
        tmp = srcStream.readLine();
        tmp = tmp.split(QRegExp(";"))[1];
        bool isMax = tmp.toInt();
        tmp = srcStream.readLine();
        tmp = ExperimentTable::doubleWithDot(tmp.split(QRegExp(";"))[1]);
        double strideParameter = tmp.toDouble();
        tmp = srcStream.readLine();
        tmp = tmp.split(QRegExp(";"))[1];
        int numberStride = tmp.toInt();
        tmp = srcStream.readLine();
        tmp = ExperimentTable::doubleWithDot(tmp.split(QRegExp(";"))[1]);
        double interestAllowedDeviation = tmp.toDouble();
        _ModelType = EXTRSEARCH;
    }


    quint64 size;
    vector<vector<YInfo> > m_values;
    tmp = srcStream.readLine();
    if ("" != tmp) {
        tmp = tmp.split(QRegExp(";"))[1];
        _paral = tmp.toULongLong();

        srcStream.readLine();
        ResponcesSourseFunction *src = new ResponcesSourseFunction();
        src->ActualFactNum = generalFactorCount;
        src->FactNum = factorCount;
        src->MinFactNum = -1;
        src->parall = _paral;
        src->PFEnum = pow(2., src->FactNum);
        src->Descriptions = descriptions;
        src->FactDivergences = *delta;
        src->FactValues = *center;
        if ("" == function)
        {
            src->SetEvaluateFunction("","");
        }
        else
        {
            QString tmpstr=function;
            if ("degrees" == measure)
            {
                tmpstr=src->CheckFormulaForTrinometricFunctions(tmpstr);
            }
            src->SetEvaluateFunction(function,tmpstr);
        }
        src->DrobRepl=2./3;
        _dataSrc = src;

        _experimentTable = ExperimentTable::createExperimentTable(ReplicaGradient, factorCount, replicaDelimiter, _interactionLevel, evaluateFunction.at(0), evaluateFunction.at(1), _ModelType);

        _experimentTable->setIsMax(isMax);
        _experimentTable->setStrideParameter(strideParameter);
        _experimentTable->setNumberStride(numberStride);
        _experimentTable->setInterestAllowedDeviation(interestAllowedDeviation);

        _experimentTable->x().setFactorsDescriptions(descriptions);

        assert(_dataSrc->inputsCount() == _experimentTable->x().count());
        assert(_dataSrc->actualInputsCount() == _experimentTable->x().generalFactorCount());
        assert(_experimentTable->rowCount() >= pow(2., _dataSrc->actualInputsCount()));

        _experimentTable->x().setFactorsDescriptions(_dataSrc->getDescriptions());

        for(int i = 0; i < _dataSrc->inputsCount(); i++)
        {
            _experimentTable->x().setXcenter(i, _dataSrc->centerFor(i));
            double min, max;
            _dataSrc->intervalFor(i, &min, &max);
            _experimentTable->x().setXdelta(i, max / 2.);
        }
        if ("" == evaluateFunction.at(0)) {
        m_values.resize(replica_row_count);
            for(size_t i = 0; i < replica_row_count; i++)
            {
                tmpList = srcStream.readLine().split(QRegExp(";"));
                if (_paral + 1 == tmpList.length()) {
                    for(size_t j = 0; j < _paral; j++)
                    {
                        double value;
                        bool IsTrusted;
                        tmp = ExperimentTable::doubleWithDot(tmpList[1 + j]);
                        value = tmp.toDouble();
                        YInfo yi;
                        yi.Value = value;
                        yi.IsTrusted = true;
                        m_values[i].push_back(yi);
                    }
                    _experimentTable->y().set_at(i, m_values[i]); //add it to table
                }
                else
                {
                    for(size_t j = 0; j < _paral; j++)
                    {
                        double value;
                        bool IsTrusted;
                        if (tmpList.length() > j+1) {
                            tmp = ExperimentTable::doubleWithDot(tmpList[1 + j]);
                            value = tmp.toDouble();
                        } else {
                            value = 0;
                        }
                        YInfo yi;
                        yi.Value = value;
                        yi.IsTrusted = true;
                        m_values[i].push_back(yi);
                    }
                    _experimentTable->y().set_at(i, m_values[i]); //add it to table
                }
            }
        } else {
            for(int i = 0; i < _experimentTable->rowCount(); i++)
            {
                std::vector<int> coords;

                for(int j = 0; j < _experimentTable->x().count(); j++)
                    coords.push_back((int)_experimentTable->x().norm_at(j, i));

                std::vector<double> yy = _dataSrc->getYdata(coords); //request y data for coords.
                std::vector<YInfo> info;

                for(size_t j = 0; j < yy.size(); j++)
                {
                    YInfo inf;
                    inf.IsTrusted = true;
                    inf.Value = yy[j];
                    info.push_back(inf);
                }

                _experimentTable->y().set_at(i, info); //add it to table
            }
        }
        _view->updateInputs(*_experimentTable);
        if (_isFormulaModel) {

            _view->updateYY(*_experimentTable);
        }
        this->calcY(0.2);
        this->calcB(0.2);
    }
    if (MATHMODEL == _ModelType)
    {
        _view->setOptimumDesabled();
    }
    return true;
}
Ejemplo n.º 5
0
bool UiController::loadModel(const QString &fileName)
{
    if (fileName=="") return false;
    //_experimentTable->load(fileName.toAscii().data());

    QFile file(fileName);

    if(!file.open(QIODevice::ReadOnly))
        return false;
    QTextStream srcStream(&file);

    /* очень нужная штука для расшифровки кодировки*/
    QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
    if (codec!= NULL)
    {
        srcStream.setCodec(codec);
    }
    else
    {
        assert(1);
    }

    int ModelType;
    srcStream >> ModelType;
    if (0 == ModelType)
    {
        _ModelType = EXTRSEARCH;
    }
    else
    {
        _ModelType = MATHMODEL;
    }
    _experimentTable = ExperimentTable::createExperimentTable(ReplicaGradient, 2, 1, 1, "", "grad");

    bool r = _experimentTable->load(fileName.toAscii().data());

    if(r)
    {
        size_t factors = _experimentTable->x().count();
        std::vector<double> d, v;

        for(size_t i = 0; i < factors; i++)
        {
            d.push_back(_experimentTable->x().xDelta((int)i) * 2);
            v.push_back(_experimentTable->x().xCenter((int)i));
        }

        QString displayFunction="";
        QString cornerMetric="";
        QStringList EvalFuncData;
        EvalFuncData.append(_experimentTable->getEvaluateFunction());
        if (EvalFuncData.count()>0)
        {
            displayFunction =_experimentTable->getEvaluateFunction().at(0);
            cornerMetric = _experimentTable->getEvaluateFunction().at(1);
        }
        setDataSource(_experimentTable->x().generalFactorCount(),
                      factors, v, d,
                      _experimentTable->x().factorsDescriptions(),
                      displayFunction,
                      cornerMetric
                     );
        _interactionLevel = _experimentTable->x().getInteractionLevel();

        if ("" != _experimentTable->getEvaluateFunction().at(0)) {
            //init _experimentTable from data source dataSrc
            int replicaDelim = pow(2., _dataSrc->inputsCount()) / pow(2., _dataSrc->actualInputsCount());


                QString displayFunction1 = _dataSrc->getEvaluateFunction().at(0);
                QString conerMeasure = _dataSrc->getEvaluateFunction().at(1);
                _experimentTable = ExperimentTable::createExperimentTable(ReplicaGradient, _dataSrc->inputsCount(), replicaDelim, _interactionLevel, displayFunction1, conerMeasure);

            assert(_dataSrc->inputsCount() == _experimentTable->x().count());
            assert(_dataSrc->actualInputsCount() == _experimentTable->x().generalFactorCount());
            assert(_experimentTable->rowCount() >= pow(2., _dataSrc->actualInputsCount()));

            _experimentTable->x().setFactorsDescriptions(_dataSrc->getDescriptions());

            for(int i = 0; i < _dataSrc->inputsCount(); i++)
            {
                _experimentTable->x().setXcenter(i, _dataSrc->centerFor(i));
                double min, max;
                _dataSrc->intervalFor(i, &min, &max);
                _experimentTable->x().setXdelta(i, max / 2.);
            }

                for(int i = 0; i < _experimentTable->rowCount(); i++)
                {
                    std::vector<int> coords;

                    for(int j = 0; j < _experimentTable->x().count(); j++)
                        coords.push_back((int)_experimentTable->x().norm_at(j, i));

                    std::vector<double> yy = _dataSrc->getYdata(coords); //request y data for coords.
                    std::vector<YInfo> info;

                    for(size_t j = 0; j < yy.size(); j++)
                    {
                        YInfo inf;
                        inf.IsTrusted = true;
                        inf.Value = yy[j];
                        info.push_back(inf);
                    }

                    _experimentTable->y().set_at(i, info); //add it to table
                }

            _view->updateInputs(*_experimentTable);
            if (_isFormulaModel)
                _view->updateYY(*_experimentTable);

            return true;
        } else {

            if (EvalFuncData.count()>0)
            {
                if (""!=EvalFuncData.at(0))
                {
                    for(int i = 0; i < _experimentTable->rowCount(); i++)
                    {
                        std::vector<int> coords;

                        for(int j = 0; j < _experimentTable->x().count(); j++)
                            coords.push_back((int)_experimentTable->x().norm_at(j, i));

                        std::vector<double> yy = _dataSrc->getYdata(coords); //request y data for coords.
                        std::vector<YInfo> info;

                        for(size_t j = 0; j < yy.size(); j++)
                        {
                            YInfo inf;
                            inf.IsTrusted = true;
                            inf.Value = yy[j];
                            info.push_back(inf);
                        }

                        _experimentTable->y().set_at(i, info); //add it to table
                    }
                }
            }
            _paral = _experimentTable->y().getParal();
            _interactionLevel = _experimentTable->x().getInteractionLevel();
            _modelHasData = true;
            _view->updateInputs(*_experimentTable);
            _view->updateBcoefs(*_experimentTable);
            _view->updateYY(*_experimentTable);
            //_view->updateGr(*_experimentTable);

        }

    }
    return r;
}