Mantid
|
Provides a layer to hook into the protected functions of IFunction. More...
#include <IFunctionAdapter.h>
Public Member Functions | |
double | activeParameter (size_t i) const override |
Override this method to make fitted parameters different from the declared. More... | |
const std::string | category () const override |
Specify a category for the function. More... | |
void | declareAttribute (const std::string &name, const boost::python::object &defaultValue) |
Declare an attribute with an initial value. More... | |
void | declareAttribute (const std::string &name, const boost::python::object &defaultValue, const boost::python::object &validator) |
Declare an attribute with an initial value and validator. More... | |
void | declareFitParameter (const std::string &name, double initValue, const std::string &description) |
Declare a named parameter with initial value & description. More... | |
void | declareFitParameterNoDescr (const std::string &name, double initValue) |
Declare a named parameter with initial value. More... | |
void | declareFitParameterZeroInit (const std::string &name) |
Declare a named parameter with initial value = 0.0. More... | |
IFunctionAdapter (const IFunctionAdapter &)=delete | |
The PyObject must be supplied to construct the object. More... | |
IFunctionAdapter (PyObject *self, std::string functionMethod, std::string derivMethod) | |
A constructor that looks like a Python init method. More... | |
void | init () override |
Declare all attributes & parameters. More... | |
std::string | name () const override |
Returns the name of the function. More... | |
IFunctionAdapter & | operator= (const IFunctionAdapter &)=delete |
Disable assignment operator. More... | |
void | setActiveParameter (size_t i, double value) override |
Override this method to make fitted parameters different from the declared. More... | |
void | setAttribute (const std::string &attName, const API::IFunction::Attribute &attr) override |
Called by the framework when an attribute has been set. More... | |
Public Member Functions inherited from Mantid::API::IFunction | |
std::string | asString () const |
Writes itself into a string. More... | |
bool | cancellationRequestReceived () const |
Returns true if a progress reporter is set & evalaution has been requested to stop. More... | |
virtual const std::vector< std::string > | categories () const |
Function to return all of the categories that contain this algorithm. More... | |
virtual const std::string | category () const |
The categories the Fit function belong to. More... | |
virtual const std::string | categorySeparator () const |
Function to return the sperator token for the category string. More... | |
virtual std::shared_ptr< IFunction > | clone () const |
Virtual copy constructor. More... | |
virtual int64_t | estimateNoProgressCalls () const |
Returns an estimate of the number of progress reports a single evaluation of the function will have. More... | |
virtual void | function (const FunctionDomain &domain, FunctionValues &values) const =0 |
Evaluates the function for all arguments in the domain. More... | |
virtual void | functionDeriv (const FunctionDomain &domain, Jacobian &jacobian) |
Derivatives of function with respect to active parameters. More... | |
IFunction () | |
Constructor. More... | |
IFunction (const IFunction &)=delete | |
No copying. More... | |
virtual void | initialize () |
Iinialize the function. More... | |
virtual void | iterationFinished () |
Called at the end of an iteration. More... | |
virtual void | iterationStarting () |
Called at the start of each iteration. More... | |
virtual std::string | name () const =0 |
Returns the function's name. More... | |
IFunction & | operator= (const IFunction &)=delete |
No copying. More... | |
virtual void | registerFunctionUsage (bool internal) |
Registers the usage of the algorithm with the UsageService. More... | |
void | reportProgress (const std::string &msg="") const |
Reports progress with an optional message. More... | |
virtual void | setMatrixWorkspace (std::shared_ptr< const API::MatrixWorkspace > workspace, size_t wi, double startX, double endX) |
Set matrix workspace. More... | |
void | setProgressReporter (std::shared_ptr< Kernel::ProgressBase > reporter) |
Attach a progress reporter. More... | |
virtual void | setWorkspace (std::shared_ptr< const Workspace > ws) |
Set the workspace. More... | |
virtual | ~IFunction () |
Virtual destructor. More... | |
virtual void | setParameter (size_t, const double &value, bool explicitlySet=true)=0 |
Set i-th parameter. More... | |
virtual void | setParameterDescription (size_t, const std::string &description)=0 |
Set i-th parameter description. More... | |
virtual double | getParameter (size_t i) const =0 |
Get i-th parameter. More... | |
virtual void | setParameter (const std::string &name, const double &value, bool explicitlySet=true)=0 |
Set parameter by name. More... | |
virtual void | setParameterDescription (const std::string &name, const std::string &description)=0 |
Set description of parameter by name. More... | |
virtual double | getParameter (const std::string &name) const =0 |
Get parameter by name. More... | |
virtual bool | hasParameter (const std::string &name) const =0 |
Check if function has a parameter with this name. More... | |
virtual size_t | nParams () const =0 |
Total number of parameters. More... | |
virtual size_t | parameterIndex (const std::string &name) const =0 |
Returns the index of parameter name. More... | |
virtual std::string | parameterName (size_t i) const =0 |
Returns the name of parameter i. More... | |
virtual std::string | parameterDescription (size_t i) const =0 |
Returns the description of parameter i. More... | |
virtual bool | isExplicitlySet (size_t i) const =0 |
Checks if a parameter has been set explicitly. More... | |
virtual double | getError (size_t i) const =0 |
Get the fitting error for a parameter. More... | |
virtual double | getError (const std::string &name) const =0 |
Get the fitting error for a parameter by name. More... | |
virtual void | setError (size_t i, double err)=0 |
Set the fitting error for a parameter. More... | |
virtual void | setError (const std::string &name, double err)=0 |
Set the fitting error for a parameter by name. More... | |
bool | isFixed (size_t i) const |
Check if a parameter i is fixed. More... | |
bool | isFixedByDefault (size_t i) const |
Check if a parameter i is fixed by default (not by user). More... | |
void | fix (size_t i, bool isDefault=false) |
Removes a parameter i from the list of active. More... | |
void | unfix (size_t i) |
Restores a declared parameter i to the active status. More... | |
void | fixParameter (const std::string &name, bool isDefault=false) |
Fix a parameter. More... | |
void | unfixParameter (const std::string &name) |
Free a parameter. More... | |
void | fixAll (bool isDefault=false) |
Fix all parameters. More... | |
void | unfixAll () |
Free all parameters. More... | |
void | unfixAllDefault () |
Free all parameters fixed by default. More... | |
void | fixAllActive (bool isDefault=false) |
Fix all active parameters. More... | |
virtual size_t | getParameterIndex (const ParameterReference &ref) const =0 |
Return parameter index from a parameter reference. More... | |
std::vector< std::string > | getParameterNames () const |
Return a vector with all parameter names. More... | |
virtual std::string | nameOfActive (size_t i) const |
Returns the name of active parameter i. More... | |
virtual std::string | descriptionOfActive (size_t i) const |
Returns the name of active parameter i. More... | |
bool | isActive (size_t i) const |
Check if an active parameter i is actually active. More... | |
virtual void | tie (const std::string &parName, const std::string &expr, bool isDefault=false) |
Tie a parameter to other parameters (or a constant) More... | |
virtual void | addTies (const std::string &ties, bool isDefault=false) |
Add several ties. More... | |
virtual void | applyTies () |
Apply the ties. More... | |
virtual void | removeTie (const std::string &parName) |
Removes the tie off a parameter. More... | |
virtual void | clearTies () |
Remove all ties. More... | |
virtual bool | removeTie (size_t i) |
Removes i-th parameter's tie. More... | |
virtual ParameterTie * | getTie (size_t i) const |
Get the tie of i-th parameter. More... | |
virtual bool | ignoreTie (const ParameterTie &) const |
Ignore a tie. More... | |
void | sortTies () |
Put all ties in order in which they will be applied correctly. More... | |
std::string | writeTies () const |
Write a parameter tie to a string. More... | |
virtual void | addConstraints (const std::string &str, bool isDefault=false) |
Add a list of conatraints from a string. More... | |
virtual void | addConstraint (std::unique_ptr< IConstraint > ic) |
Add a constraint to function. More... | |
virtual IConstraint * | getConstraint (size_t i) const |
Get constraint of i-th parameter. More... | |
virtual void | removeConstraint (const std::string &parName) |
Remove a constraint. More... | |
virtual void | setConstraintPenaltyFactor (const std::string &parName, const double &c) |
Set a constraint penalty. More... | |
std::string | writeConstraints () const |
Write a parameter constraint to a string. More... | |
virtual void | clearConstraints () |
Remove all constraints. More... | |
virtual size_t | nAttributes () const |
Returns the number of attributes associated with the function. More... | |
virtual std::vector< std::string > | getAttributeNames () const |
Returns a list of attribute names. More... | |
virtual std::string | attributeName (size_t index) const |
Get name of ith attribute. More... | |
virtual Attribute | getAttribute (const std::string &name) const |
Return a value of attribute attName. More... | |
virtual bool | hasAttribute (const std::string &name) const |
Check if attribute attName exists. More... | |
template<typename T > | |
void | setAttributeValue (const std::string &attName, const T &value) |
Set an attribute value. More... | |
void | setAttributeValue (const std::string &attName, const char *value) |
Overload for const char* values. More... | |
void | setAttributeValue (const std::string &attName, const std::string &value) |
Set string attribute by value. More... | |
virtual std::shared_ptr< IFunction > | getFunction (size_t i) const |
Returns the pointer to i-th child function. More... | |
virtual std::size_t | nFunctions () const |
Number of child functions. More... | |
virtual void | setUpForFit () |
Set up the function for a fit. More... | |
virtual size_t | getValuesSize (const FunctionDomain &domain) const |
Get number of values for a given domain. More... | |
virtual size_t | getNumberDomains () const |
Get number of domains required by this function. More... | |
virtual std::vector< std::shared_ptr< IFunction > > | createEquivalentFunctions () const |
Split this function (if needed) into a list of independent functions. More... | |
void | calNumericalDeriv (const FunctionDomain &domain, Jacobian &jacobian) |
Calculate numerical derivatives. More... | |
double | calculateStepSize (const double parameterValue) const |
Calculate step size for the given parameter value. More... | |
void | setCovarianceMatrix (const std::shared_ptr< Kernel::Matrix< double > > &covar) |
Set the covariance matrix. More... | |
std::shared_ptr< const Kernel::Matrix< double > > | getCovarianceMatrix () const |
Get the covariance matrix. More... | |
void | setReducedChiSquared (double chi2) |
Set the reduced chi^2. More... | |
double | getReducedChiSquared () const |
Get the reduced chi^2. More... | |
void | setParallel (bool on) |
Set the parallel hint. More... | |
bool | isParallel () const |
Get the parallel hint. More... | |
void | setHandler (std::unique_ptr< FunctionHandler > handler) |
Set a function handler. More... | |
FunctionHandler * | getHandler () const |
Return the handler. More... | |
virtual void | setParameterStatus (size_t i, ParameterStatus status)=0 |
Change status of parameter. More... | |
virtual ParameterStatus | getParameterStatus (size_t i) const =0 |
Get status of parameter. More... | |
virtual void | setStepSizeMethod (const StepSizeMethod method) |
Sets the StepSizeMethod to use when calculation the step size. More... | |
Static Public Member Functions | |
static boost::python::list | createPythonEquivalentFunctions (const IFunction &self) |
Split this function (if needed) into a list of independent functions. More... | |
static PyObject * | getAttributeValue (const IFunction &self, const API::IFunction::Attribute &attr) |
Returns the attribute's value as a Python object. More... | |
static PyObject * | getAttributeValue (const IFunction &self, const std::string &name) |
Get a named attribute value. More... | |
static void | setAttributePythonValue (IFunction &self, const std::string &name, const boost::python::object &value) |
Set the attribute's value. More... | |
Protected Member Functions | |
bool | derivativeOverridden () const |
void | evaluateDerivative (API::Jacobian *out, const double *xValues, const size_t nData) const |
Evaluate the derivative by calling the overridden method. More... | |
void | evaluateFunction (double *out, const double *xValues, const size_t nData) const |
Evaluate the function by calling the overridden method. More... | |
PyObject * | getSelf () const |
Protected Member Functions inherited from Mantid::API::IFunction | |
virtual void | declareParameter (const std::string &name, double initValue=0, const std::string &description="")=0 |
Declare a new parameter. More... | |
double | convertValue (double value, Kernel::Unit_sptr &outUnit, const std::shared_ptr< const MatrixWorkspace > &ws, size_t wsIndex) const |
Convert a value from one unit (inUnit) to unit defined in workspace (ws) More... | |
void | convertValue (std::vector< double > &values, Kernel::Unit_sptr &outUnit, const std::shared_ptr< const MatrixWorkspace > &ws, size_t wsIndex) const |
Convert values from unit defined in workspace (ws) to outUnit. More... | |
virtual void | declareAttributes () |
Override to declare function attributes. More... | |
virtual void | declareParameters () |
Override to declare function parameters. More... | |
void | declareAttribute (const std::string &name, const API::IFunction::Attribute &defaultValue) |
Declare a single attribute. More... | |
void | declareAttribute (const std::string &name, const API::IFunction::Attribute &defaultValue, const Kernel::IValidator &validator) |
Declare a single attribute with validator. More... | |
void | checkAttributeName (const std::string &name) |
Check Attribute to declare does not already exist. More... | |
void | storeAttributeValue (const std::string &name, const API::IFunction::Attribute &value) |
Store an attribute's value. More... | |
void | storeReadOnlyAttribute (const std::string &name, const API::IFunction::Attribute &value) const |
A read-only ("mutable") attribute can be stored in a const method. More... | |
virtual void | addTie (std::unique_ptr< ParameterTie > tie) |
Add a new tie. Derived classes must provide storage for ties. More... | |
bool | hasOrderedTies () const |
void | applyOrderedTies () |
virtual std::string | writeToString (const std::string &parentLocalAttributesStr="") const |
Writes itself into a string. More... | |
Private Attributes | |
std::string | m_derivName |
The name of the method to evaluate the derivative. More... | |
bool | m_derivOveridden |
Flag if the derivateive method is overridden (avoids multiple checks) More... | |
std::string | m_functionName |
The name of the method to evaluate the function. More... | |
PyObject * | m_self |
The Python portion of the object. More... | |
Additional Inherited Members | |
Public Types inherited from Mantid::API::IFunction | |
enum | ParameterStatus { Active , Fixed , FixedByDefault , Tied } |
Describe parameter status in relation to fitting: Active: Fit varies such parameter directly. More... | |
enum class | StepSizeMethod { DEFAULT , SQRT_EPSILON } |
Describes the method in which the step size will be calculated: DEFAULT: Uses the traditional Mantid method of calculating the step size. More... | |
Protected Attributes inherited from Mantid::API::IFunction | |
bool | m_isParallel |
Flag to hint that the function is being used in parallel computations. More... | |
std::unique_ptr< FunctionHandler > | m_handler |
Pointer to a function handler. More... | |
std::shared_ptr< Kernel::ProgressBase > | m_progReporter |
Pointer to the progress handler. More... | |
Provides a layer to hook into the protected functions of IFunction.
Definition at line 23 of file IFunctionAdapter.h.
Mantid::PythonInterface::IFunctionAdapter::IFunctionAdapter | ( | PyObject * | self, |
std::string | functionMethod, | ||
std::string | derivMethod | ||
) |
A constructor that looks like a Python init method.
Construct the wrapper and stores the reference to the PyObject.
self | A reference to the calling Python object |
functionMethod | The name of the function method that must be present |
derivMethod | The name of the derivative method that may be overridden |
Definition at line 81 of file IFunctionAdapter.cpp.
References m_functionName, and Mantid::PythonInterface::typeHasAttribute().
|
delete |
The PyObject must be supplied to construct the object.
|
overridevirtual |
Override this method to make fitted parameters different from the declared.
Value of i-th active parameter.
If this functions is overridden in Python then it returns the value of the ith active Parameter If not it simple returns the base class result
i | The index of the parameter |
Reimplemented from Mantid::API::IFunction.
Definition at line 234 of file IFunctionAdapter.cpp.
References Mantid::API::IFunction::activeParameter(), and getSelf().
|
overridevirtual |
Specify a category for the function.
Reimplemented from Mantid::API::IFunction.
Definition at line 98 of file IFunctionAdapter.cpp.
References Mantid::API::IFunction::category(), and getSelf().
Referenced by export_IFunction().
|
static |
Split this function (if needed) into a list of independent functions.
self | :: A reference to a function object. If it's a multi-domain function the result should in general contain more than 1 function. For a single domain function it should have a single element (self). |
Definition at line 219 of file IFunctionAdapter.cpp.
References Mantid::API::IFunction::createEquivalentFunctions().
Referenced by export_IFunction().
void Mantid::PythonInterface::IFunctionAdapter::declareAttribute | ( | const std::string & | name, |
const boost::python::object & | defaultValue | ||
) |
Declare an attribute with an initial value.
Declare an attribute on the given function from a python object.
name | :: The name of the new attribute |
defaultValue | :: The default value for the attribute |
Definition at line 113 of file IFunctionAdapter.cpp.
References Mantid::API::IFunction::declareAttribute(), Mantid::API::IFunction::getAttribute(), getSelf(), Mantid::API::IFunction::hasAttribute(), and name().
Referenced by export_IFunction().
void Mantid::PythonInterface::IFunctionAdapter::declareAttribute | ( | const std::string & | name, |
const boost::python::object & | defaultValue, | ||
const boost::python::object & | validator | ||
) |
Declare an attribute with an initial value and validator.
Declare an attribute on the given function from a python object, with a validator.
name | :: The name of the new attribute |
defaultValue | :: The default value for the attribute |
validator | :: The validator used to restrict the attribute values |
Definition at line 130 of file IFunctionAdapter.cpp.
References Mantid::API::IFunction::declareAttribute(), Mantid::API::IFunction::getAttribute(), getSelf(), Mantid::API::IFunction::hasAttribute(), and name().
|
inline |
Declare a named parameter with initial value & description.
name | :: The name of the parameter |
initValue | :: The initial value |
description | :: A short description of the parameter |
Definition at line 66 of file IFunctionAdapter.h.
References Mantid::API::IFunction::declareParameter().
Referenced by declareFitParameterNoDescr(), declareFitParameterZeroInit(), and export_IFunction().
|
inline |
Declare a named parameter with initial value.
name | :: The name of the parameter |
initValue | :: The initial value |
Definition at line 75 of file IFunctionAdapter.h.
References declareFitParameter().
Referenced by export_IFunction().
|
inline |
Declare a named parameter with initial value = 0.0.
name | :: The name of the parameter |
Definition at line 83 of file IFunctionAdapter.h.
References declareFitParameter().
Referenced by export_IFunction().
|
inlineprotected |
Definition at line 95 of file IFunctionAdapter.h.
References m_derivOveridden.
Referenced by Mantid::PythonInterface::IFunction1DAdapter::functionDeriv1D(), and Mantid::PythonInterface::IPeakFunctionAdapter::functionDerivLocal().
|
protected |
Evaluate the derivative by calling the overridden method.
If the method does not exist on the derived type then then base implementation is called.
out | Am output Jacobian accept the result values |
xValues | The input domain |
nData | The size of the input and output arrays |
Definition at line 316 of file IFunctionAdapter.cpp.
References getSelf(), and m_derivName.
Referenced by Mantid::PythonInterface::IFunction1DAdapter::functionDeriv1D(), and Mantid::PythonInterface::IPeakFunctionAdapter::functionDerivLocal().
|
protected |
Evaluate the function by calling the overridden method.
The result is copied from the numpy array that is returned into the provided output array.
out | A pre-sized array to accept the result values |
xValues | The input domain |
nData | The size of the input and output arrays |
Definition at line 264 of file IFunctionAdapter.cpp.
References dtype(), getSelf(), and m_functionName.
Referenced by Mantid::PythonInterface::IFunction1DAdapter::function1D(), and Mantid::PythonInterface::IPeakFunctionAdapter::functionLocal().
|
static |
Returns the attribute's value as a Python object.
Get the value of the given attribute as a Python object.
self | :: A reference to a function object that has the attribute. |
attr | An attribute object |
Definition at line 166 of file IFunctionAdapter.cpp.
References Mantid::API::IFunction::Attribute::asBool(), Mantid::API::IFunction::Attribute::asDouble(), Mantid::API::IFunction::Attribute::asInt(), Mantid::API::IFunction::Attribute::asString(), Mantid::API::IFunction::Attribute::asVector(), Mantid::API::IFunction::Attribute::type(), and UNUSED_ARG.
|
static |
Get a named attribute value.
Get the value of the named attribute as a Python object.
self | :: A reference to a function object that has the attribute. |
name | :: The name of the new attribute. |
Definition at line 155 of file IFunctionAdapter.cpp.
References Mantid::API::IFunction::getAttribute(), getAttributeValue(), and name().
Referenced by export_IFunction(), getAttributeValue(), and setAttribute().
|
inlineprotected |
Definition at line 93 of file IFunctionAdapter.h.
References m_self.
Referenced by activeParameter(), category(), Mantid::PythonInterface::IPeakFunctionAdapter::centre(), declareAttribute(), evaluateDerivative(), evaluateFunction(), Mantid::PythonInterface::IFunction1DAdapter::function1D(), Mantid::PythonInterface::IPeakFunctionAdapter::functionDerivLocal(), Mantid::PythonInterface::IPeakFunctionAdapter::functionLocal(), Mantid::PythonInterface::IPeakFunctionAdapter::fwhm(), Mantid::PythonInterface::IPeakFunctionAdapter::height(), init(), name(), setActiveParameter(), setAttribute(), Mantid::PythonInterface::IPeakFunctionAdapter::setCentre(), Mantid::PythonInterface::IPeakFunctionAdapter::setFwhm(), and Mantid::PythonInterface::IPeakFunctionAdapter::setHeight().
|
overridevirtual |
Declare all attributes & parameters.
Reimplemented from Mantid::API::IFunction.
Definition at line 106 of file IFunctionAdapter.cpp.
References getSelf().
|
overridevirtual |
Returns the name of the function.
Implements Mantid::API::IFunction.
Definition at line 93 of file IFunctionAdapter.cpp.
References getSelf().
Referenced by declareAttribute(), getAttributeValue(), and setAttributePythonValue().
|
delete |
Disable assignment operator.
|
overridevirtual |
Override this method to make fitted parameters different from the declared.
Sets the value of i-th active parameter.
If this functions is overridden in Python then it should set the value of the ith active parameter. If not calls the base class function
i | The index of the parameter |
value | The new value of the active parameter |
Reimplemented from Mantid::API::IFunction.
Definition at line 249 of file IFunctionAdapter.cpp.
References getSelf(), Mantid::API::IFunction::setActiveParameter(), and value.
|
overridevirtual |
Called by the framework when an attribute has been set.
Calls setAttributeValue on the Python object if it exists otherwise calls the base class method.
attName | The name of the attribute |
attr | An attribute object |
Reimplemented from Mantid::API::IFunction.
Definition at line 203 of file IFunctionAdapter.cpp.
References getAttributeValue(), getSelf(), Mantid::API::IFunction::setAttribute(), Mantid::API::IFunction::storeAttributeValue(), and value.
|
static |
Set the attribute's value.
Set the attribute's value in the default IFunction's cache.
self | :: A reference to a function object that has the attribute. |
name | :: The name of the attribute |
value | :: The value to set |
Definition at line 192 of file IFunctionAdapter.cpp.
References Mantid::API::IFunction::getAttribute(), name(), Mantid::API::IFunction::setAttribute(), and value.
Referenced by export_IFunction().
|
private |
The name of the method to evaluate the derivative.
Definition at line 107 of file IFunctionAdapter.h.
Referenced by evaluateDerivative().
|
private |
Flag if the derivateive method is overridden (avoids multiple checks)
Definition at line 109 of file IFunctionAdapter.h.
Referenced by derivativeOverridden().
|
private |
The name of the method to evaluate the function.
Definition at line 105 of file IFunctionAdapter.h.
Referenced by evaluateFunction(), and IFunctionAdapter().
|
private |
The Python portion of the object.
Definition at line 103 of file IFunctionAdapter.h.
Referenced by getSelf().