/* -------------------------- gnuCurveFit class --------------------------
This is a class to create an object to handle curve fitting.
This file is part of Xgfe: X Windows GUI front end to Gnuplot
Copyright (C) 1998 David Ishee
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
------------------------------------------------------------------------*/
#include "gnuCurveFit.h"
gnuCurveFit::gnuCurveFit()
{
functionName = "";
functionValue = "";
dataFile = "";
varXRangeName = "";
varXRangeMin = "";
varXRangeMax = "";
varYRangeName = "";
varYRangeMin = "";
varYRangeMax = "";
paramFile = "";
paramFileFlag = 0;
paramCSLFlag = 1;
paramCSL = "";
fitLimit = "";
fitMaxIter = "";
dataSetStart = "";
dataSetEnd = "";
dataSetInc = "";
pointInc = "";
lineInc = "";
startPoint = "";
startLine = "";
endPoint = "";
endLine = "";
xColumn = "";
yColumn = "";
zColumn = "";
format = "";
rawFormat = "";
}
string gnuCurveFit::getFitCmd()
{
string fitcmd;
// define function
fitcmd += functionName;
fitcmd += " = ";
fitcmd += functionValue;
fitcmd += "\n";
// define fitting variables
// ---- fit limit
fitcmd += "FIT_LIMIT = ";
if (fitLimit != "")
fitcmd += fitLimit;
else
fitcmd += "1e-5";
fitcmd += "\n";
// ---- fit maxiter
fitcmd += "FIT_MAXITER = ";
if (fitMaxIter != "")
fitcmd += fitMaxIter;
else
fitcmd += "0";
fitcmd += "\n";
// define start of command
fitcmd += "fit ";
// insert x range
if ((varXRangeName != "") || (varXRangeMin != "") || (varXRangeMax != ""))
{
fitcmd += " [";
if (varXRangeName != "")
{
fitcmd += varXRangeName;
fitcmd += "=";
}
if ((varXRangeMin != "") || (varXRangeMax != ""))
{
fitcmd += varXRangeMin;
fitcmd += ":";
fitcmd += varXRangeMax;
}
fitcmd += "]";
}
// insert Y range
if ((varYRangeName != "") || (varYRangeMin != "") || (varYRangeMax != ""))
{
fitcmd += " [";
if (varYRangeName != "")
{
fitcmd += varYRangeName;
fitcmd += "=";
}
if ((varYRangeMin != "") || (varYRangeMax != ""))
{
fitcmd += varYRangeMin;
fitcmd += ":";
fitcmd += varYRangeMax;
}
fitcmd += "]";
}
// insert function
fitcmd += " ";
fitcmd += functionName;
// define datafile
fitcmd += " '";
fitcmd += dataFile;
fitcmd += "' ";
// define datafile modifiers
// ---- insert "index" command
if ((dataSetStart != "") && (dataSetEnd != "") && (dataSetInc != ""))
{
fitcmd += " index ";
fitcmd += dataSetStart;
fitcmd += ":";
fitcmd += dataSetEnd;
fitcmd += ":";
fitcmd += dataSetInc;
}
if ((dataSetStart != "") && (dataSetEnd != "") && (dataSetInc == ""))
{
fitcmd += " index ";
fitcmd += dataSetStart;
fitcmd += ":";
fitcmd += dataSetEnd;
}
if ((dataSetStart != "") && (dataSetEnd == "") && (dataSetInc == ""))
{
fitcmd += " index ";
fitcmd += dataSetStart;
}
// insert "every" command
if ((pointInc != "") || (lineInc != "") ||
(startPoint != "") || (startLine != "") ||
(endPoint != "") || (endLine != ""))
{
if (endLine != "")
{
fitcmd += " every ";
fitcmd += pointInc;
fitcmd += ":";
fitcmd += lineInc;
fitcmd += ":";
fitcmd += startPoint;
fitcmd += ":";
fitcmd += startLine;
fitcmd += ":";
fitcmd += endPoint;
fitcmd += ":";
fitcmd += endLine;
}
else if (endPoint != "")
{
fitcmd += " every ";
fitcmd += pointInc;
fitcmd += ":";
fitcmd += lineInc;
fitcmd += ":";
fitcmd += startPoint;
fitcmd += ":";
fitcmd += startLine;
fitcmd += ":";
fitcmd += endPoint;
}
else if (startLine != "")
{
fitcmd += " every ";
fitcmd += pointInc;
fitcmd += ":";
fitcmd += lineInc;
fitcmd += ":";
fitcmd += startPoint;
fitcmd += ":";
fitcmd += startLine;
}
else if (startPoint != "")
{
fitcmd += " every ";
fitcmd += pointInc;
fitcmd += ":";
fitcmd += lineInc;
fitcmd += ":";
fitcmd += startPoint;
}
else if (lineInc != "")
{
fitcmd += " every ";
fitcmd += pointInc;
fitcmd += ":";
fitcmd += lineInc;
}
else if (pointInc != "")
{
fitcmd += " every ";
fitcmd += pointInc;
}
}
// ---- insert using command if columns or format string is specified
// ---- and a raw format string is not specified
if (rawFormat == "")
{
if ((xColumn != "") || (yColumn != "") || (zColumn != "") ||
(format != ""))
{
fitcmd += " using ";
fitcmd += xColumn;
fitcmd += ":";
fitcmd += yColumn;
if (zColumn != "")
{
fitcmd += ":";
fitcmd += zColumn;
}
fitcmd += " ";
fitcmd += format;
}
}
else
{
fitcmd += " using ";
fitcmd += rawFormat;
}
// insert via parameters
fitcmd += " via ";
if (paramFileFlag == 1)
{
fitcmd += "'";
fitcmd += paramFile;
fitcmd += "'";
}
else if (paramCSLFlag == 1)
{
fitcmd += paramCSL;
}
return fitcmd;
}
void gnuCurveFit::setFunctionName(string name)
{
functionName = name;
}
string gnuCurveFit::getFunctionName()
{
return functionName;
}
void gnuCurveFit::setFunctionValue(string function)
{
functionValue = function;
}
string gnuCurveFit::getFunctionValue()
{
return functionValue;
}
void gnuCurveFit::setDataFile(string file)
{
dataFile = file;
}
string gnuCurveFit::getDataFile()
{
return dataFile;
}
void gnuCurveFit::setVarXRangeName(string range)
{
varXRangeName = range;
}
string gnuCurveFit::getVarXRangeName()
{
return varXRangeName;
}
void gnuCurveFit::setVarXRangeMin(string min)
{
varXRangeMin = min;
}
string gnuCurveFit::getVarXRangeMin()
{
return varXRangeMin;
}
void gnuCurveFit::setVarXRangeMax(string max)
{
varXRangeMax = max;
}
string gnuCurveFit::getVarXRangeMax()
{
return varXRangeMax;
}
void gnuCurveFit::setVarYRangeName(string range)
{
varYRangeName = range;
}
string gnuCurveFit::getVarYRangeName()
{
return varYRangeName;
}
void gnuCurveFit::setVarYRangeMin(string min)
{
varYRangeMin = min;
}
string gnuCurveFit::getVarYRangeMin()
{
return varYRangeMin;
}
void gnuCurveFit::setVarYRangeMax(string max)
{
varYRangeMax = max;
}
string gnuCurveFit::getVarYRangeMax()
{
return varYRangeMax;
}
void gnuCurveFit::setParamFile(string file)
{
paramFile = file;
}
string gnuCurveFit::getParamFile()
{
return paramFile;
}
void gnuCurveFit::setParamFileFlag(int flag)
{
paramFileFlag = flag;
}
int gnuCurveFit::getParamFileFlag()
{
return paramFileFlag;
}
void gnuCurveFit::setParamCSLFlag(int flag)
{
paramCSLFlag = flag;
}
int gnuCurveFit::getParamCSLFlag()
{
return paramCSLFlag;
}
void gnuCurveFit::setParamCSL(string list)
{
paramCSL = list;
}
string gnuCurveFit::getParamCSL()
{
return paramCSL;
}
void gnuCurveFit::setFitLimit(string limit)
{
fitLimit = limit;
}
string gnuCurveFit::getFitLimit()
{
return fitLimit;
}
void gnuCurveFit::setFitMaxIter(string iter)
{
fitMaxIter = iter;
}
string gnuCurveFit::getFitMaxIter()
{
return fitMaxIter;
}
void gnuCurveFit::setDataSetStart(string start)
{
dataSetStart = start;
}
string gnuCurveFit::getDataSetStart()
{
return dataSetStart;
}
void gnuCurveFit::setDataSetEnd(string end)
{
dataSetEnd = end;
}
string gnuCurveFit::getDataSetEnd()
{
return dataSetEnd;
}
void gnuCurveFit::setDataSetInc(string inc)
{
dataSetInc = inc;
}
string gnuCurveFit::getDataSetInc()
{
return dataSetInc;
}
void gnuCurveFit::setPointInc(string inc)
{
pointInc = inc;
}
string gnuCurveFit::getPointInc()
{
return pointInc;
}
void gnuCurveFit::setLineInc(string inc)
{
lineInc = inc;
}
string gnuCurveFit::getLineInc()
{
return lineInc;
}
void gnuCurveFit::setStartPoint(string start)
{
startPoint = start;
}
string gnuCurveFit::getStartPoint()
{
return startPoint;
}
void gnuCurveFit::setStartLine(string start)
{
startLine = start;
}
string gnuCurveFit::getStartLine()
{
return startLine;
}
void gnuCurveFit::setEndPoint(string end)
{
endPoint = end;
}
string gnuCurveFit::getEndPoint()
{
return endPoint;
}
void gnuCurveFit::setEndLine(string end)
{
endLine = end;
}
string gnuCurveFit::getEndLine()
{
return endLine;
}
void gnuCurveFit::setXColumn(string col)
{
xColumn = col;
}
string gnuCurveFit::getXColumn()
{
return xColumn;
}
void gnuCurveFit::setYColumn(string col)
{
yColumn = col;
}
string gnuCurveFit::getYColumn()
{
return yColumn;
}
void gnuCurveFit::setZColumn(string col)
{
zColumn = col;
}
string gnuCurveFit::getZColumn()
{
return zColumn;
}
void gnuCurveFit::setFormat(string informat)
{
format = informat;
}
string gnuCurveFit::getFormat()
{
return format;
}
void gnuCurveFit::setRawFormat(string format)
{
rawFormat = format;
}
string gnuCurveFit::getRawFormat()
{
return rawFormat;
}
syntax highlighted by Code2HTML, v. 0.9.1