diff --git a/Core/Algorithms/FitElement.h b/Core/Algorithms/FitElement.h index 7da5670fa611be04e93f21f8900b66b8917ebd42..b95609c39bf3c4b2a15ad01f5a427ca758ee4247 100644 --- a/Core/Algorithms/FitElement.h +++ b/Core/Algorithms/FitElement.h @@ -21,7 +21,7 @@ //! @class FitElement //! @ingroup fitting_internal -//! @brief Data stucture containing real data and simulation results for single detector cell. +//! @brief Measured ("real") and simulated scattering intensity value for one detector cell. //! Used for chi2/residual calculations. class BA_CORE_API_ FitElement @@ -33,16 +33,11 @@ public: FitElement &operator=(const FitElement &other); size_t getIndex() const; - double getSimulValue() const; - double getRealValue() const; - double getWeight() const; - double getSquaredDifference() const; void setSquaredDifference(double value); - double getResidual() const; void setResidual(double value); @@ -98,4 +93,3 @@ inline void FitElement::setResidual(double value) } #endif - diff --git a/Core/PythonAPI/libBornAgainCore.py b/Core/PythonAPI/libBornAgainCore.py index 2fb19d95c21776303f75a2a2eb77ba1def38b6eb..ae95e45d2679a9f5da5f5117f773c73002e58e10 100644 --- a/Core/PythonAPI/libBornAgainCore.py +++ b/Core/PythonAPI/libBornAgainCore.py @@ -21369,8 +21369,6 @@ class RealParameterWrapper(_object): self.this.append(this) except: self.this = this - __swig_destroy__ = _libBornAgainCore.delete_RealParameterWrapper - __del__ = lambda self: None def setValue(self, value): """ @@ -21439,6 +21437,8 @@ class RealParameterWrapper(_object): """__ne__(RealParameterWrapper self, RealParameterWrapper other) -> bool""" return _libBornAgainCore.RealParameterWrapper___ne__(self, other) + __swig_destroy__ = _libBornAgainCore.delete_RealParameterWrapper + __del__ = lambda self: None RealParameterWrapper_swigregister = _libBornAgainCore.RealParameterWrapper_swigregister RealParameterWrapper_swigregister(RealParameterWrapper) diff --git a/Core/PythonAPI/libBornAgainCore_wrap.cxx b/Core/PythonAPI/libBornAgainCore_wrap.cxx index 6e3a2d1c9e6936ee4bb0d94d55471a427945d8bb..33079209033d6706fe32f83f6eed042327ebcbe7 100644 --- a/Core/PythonAPI/libBornAgainCore_wrap.cxx +++ b/Core/PythonAPI/libBornAgainCore_wrap.cxx @@ -86581,27 +86581,6 @@ fail: } -SWIGINTERN PyObject *_wrap_delete_RealParameterWrapper(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - RealParameterWrapper *arg1 = (RealParameterWrapper *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - - if (!PyArg_ParseTuple(args,(char *)"O:delete_RealParameterWrapper",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_RealParameterWrapper, SWIG_POINTER_DISOWN | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_RealParameterWrapper" "', argument " "1"" of type '" "RealParameterWrapper *""'"); - } - arg1 = reinterpret_cast< RealParameterWrapper * >(argp1); - delete arg1; - resultobj = SWIG_Py_Void(); - return resultobj; -fail: - return NULL; -} - - SWIGINTERN PyObject *_wrap_RealParameterWrapper_setValue(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; RealParameterWrapper *arg1 = (RealParameterWrapper *) 0 ; @@ -86788,6 +86767,27 @@ fail: } +SWIGINTERN PyObject *_wrap_delete_RealParameterWrapper(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + RealParameterWrapper *arg1 = (RealParameterWrapper *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_RealParameterWrapper",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_RealParameterWrapper, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_RealParameterWrapper" "', argument " "1"" of type '" "RealParameterWrapper *""'"); + } + arg1 = reinterpret_cast< RealParameterWrapper * >(argp1); + delete arg1; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + SWIGINTERN PyObject *RealParameterWrapper_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; @@ -101299,12 +101299,6 @@ static PyMethodDef SwigMethods[] = { "RealParameterWrapper::RealParameterWrapper(const RealParameterWrapper &other)\n" "\n" ""}, - { (char *)"delete_RealParameterWrapper", _wrap_delete_RealParameterWrapper, METH_VARARGS, (char *)"\n" - "delete_RealParameterWrapper(RealParameterWrapper self)\n" - "\n" - "RealParameterWrapper::~RealParameterWrapper()\n" - "\n" - ""}, { (char *)"RealParameterWrapper_setValue", _wrap_RealParameterWrapper_setValue, METH_VARARGS, (char *)"\n" "RealParameterWrapper_setValue(RealParameterWrapper self, double value) -> bool\n" "\n" @@ -101345,6 +101339,12 @@ static PyMethodDef SwigMethods[] = { ""}, { (char *)"RealParameterWrapper___eq__", _wrap_RealParameterWrapper___eq__, METH_VARARGS, (char *)"RealParameterWrapper___eq__(RealParameterWrapper self, RealParameterWrapper other) -> bool"}, { (char *)"RealParameterWrapper___ne__", _wrap_RealParameterWrapper___ne__, METH_VARARGS, (char *)"RealParameterWrapper___ne__(RealParameterWrapper self, RealParameterWrapper other) -> bool"}, + { (char *)"delete_RealParameterWrapper", _wrap_delete_RealParameterWrapper, METH_VARARGS, (char *)"\n" + "delete_RealParameterWrapper(RealParameterWrapper self)\n" + "\n" + "RealParameterWrapper::~RealParameterWrapper()\n" + "\n" + ""}, { (char *)"RealParameterWrapper_swigregister", RealParameterWrapper_swigregister, METH_VARARGS, NULL}, { (char *)"new_Rectangle", _wrap_new_Rectangle, METH_VARARGS, (char *)"\n" "new_Rectangle(double xlow, double ylow, double xup, double yup) -> Rectangle\n" diff --git a/Core/Tools/AttLimits.h b/Core/Tools/AttLimits.h index 4b38f888487cf88c8c554be6a5b96fb08cf3452d..713ead8449b1e9ac6910ad9733f3017b0813189b 100644 --- a/Core/Tools/AttLimits.h +++ b/Core/Tools/AttLimits.h @@ -19,12 +19,11 @@ #include "WinDllMacros.h" #include "Numeric.h" #include <iostream> -#include <iomanip> //! @class AttLimits //! @ingroup fitting -//! @brief Limits for fit parameters +//! @brief Attributes and limits for a fit parameter. Currently, the only attribute is fixed/free. class BA_CORE_API_ AttLimits { @@ -118,22 +117,7 @@ class BA_CORE_API_ AttLimits double m_lower_limit; //! minimum allowed value double m_upper_limit; //! maximum allowed value - //! Prints class - void print(std::ostream& ostr) const - { - if(isFixed()) { - ostr << "fixed"; - }else if(!hasLowerLimit() && !hasUpperLimit() ) { - ostr << "free"; - } else if(hasLowerLimit() && !hasUpperLimit()) { - ostr << "lim(" << std::fixed <<std::setprecision(2) << m_lower_limit << ",)"; - }else if(hasUpperLimit() && !hasLowerLimit()) { - ostr << "lim(," << std::fixed <<std::setprecision(2) << m_upper_limit << ",)"; - }else if(hasLowerAndUpperLimits()) { - ostr << "lim(" << std::fixed <<std::setprecision(2) << m_lower_limit << "," << std::fixed <<std::setprecision(2) << m_upper_limit << ")"; - - } - } + void print(std::ostream& ostr) const; }; @@ -158,7 +142,4 @@ inline bool AttLimits::operator!=(const AttLimits &other) const return !(*this == other); } - #endif // LIMITS_H - - diff --git a/Core/Tools/IObserver.cpp b/Core/Tools/IObserver.cpp index dd0df25641278543f9a8dabf8f6a40a79edb8afe..0c53acf942a6f16bb201dfb00354970903e71aa8 100644 --- a/Core/Tools/IObserver.cpp +++ b/Core/Tools/IObserver.cpp @@ -26,5 +26,3 @@ void IObservable::notifyObservers() (*it)->notify(this); } } - - diff --git a/Core/Tools/RealParameterWrapper.h b/Core/Tools/RealParameterWrapper.h index a815c6b95d260e80478acf957942e1fcf8d5b3ce..a9b7436d7b2d0ee4d5b849294d230296b5a887ff 100644 --- a/Core/Tools/RealParameterWrapper.h +++ b/Core/Tools/RealParameterWrapper.h @@ -32,7 +32,6 @@ public: explicit RealParameterWrapper(double *par, const AttLimits &limits = AttLimits::limitless()); RealParameterWrapper(const RealParameterWrapper& other ); RealParameterWrapper& operator=(const RealParameterWrapper& other); - ~RealParameterWrapper() {} //! Sets value of wrapped parameter and emit signal bool setValue(double value); @@ -95,5 +94,4 @@ inline bool RealParameterWrapper::operator!=(const RealParameterWrapper &other) return !(*this == other); } - #endif // REALPARAMETERPROXY_H diff --git a/Core/Tools/SafePointerVector.h b/Core/Tools/SafePointerVector.h index 62f1748e550f13aa750bc66c5d2b5787b2d09436..e8652afb7618afc2863ccef6789b5290c0b5a6a7 100644 --- a/Core/Tools/SafePointerVector.h +++ b/Core/Tools/SafePointerVector.h @@ -23,7 +23,7 @@ using std::size_t; //! @class SafePointerVector //! @ingroup tools_internal -//! @brief Safe handling of vectors of pointers that are owned by the vector +//! @brief A vector of pointers, owned by *this, with methods to handle them safely. //! //! The objects pointed to must support the ICLoneable interface. @@ -47,8 +47,6 @@ public: iterator end() { return m_pointers.end(); } const_iterator end() const { return m_pointers.end(); } - std::vector<const T *> getSTLVector() const; - bool deleteElement(T* pointer); T *back() { return m_pointers.back(); } @@ -64,8 +62,7 @@ template<class T> SafePointerVector<T>::SafePointerVector() : m_pointers() template<class T> SafePointerVector<T>::SafePointerVector(const SafePointerVector<T>& other) { - for (const_iterator it = other.begin(); - it != other.end(); ++it) { + for (const_iterator it = other.begin(); it != other.end(); ++it) { m_pointers.push_back((*it)->clone()); } } @@ -80,8 +77,7 @@ template<class T> SafePointerVector<T>& SafePointerVector<T>::operator=( { if (this ==& right) return *this; clear(); - for (const_iterator it = right.begin(); - it != right.end(); ++it) { + for (const_iterator it = right.begin(); it != right.end(); ++it) { m_pointers.push_back((*it)->clone()); } return *this; @@ -117,21 +113,10 @@ inline const T* SafePointerVector<T>::operator[](size_t index) const return m_pointers[index]; } -template<class T> -inline std::vector<const T *> SafePointerVector<T>::getSTLVector() const -{ - std::vector<const T *> result; - for (size_t i=0; i<m_pointers.size(); ++i) { - result.push_back(m_pointers[i]); - } - return result; -} - template<class T> inline bool SafePointerVector<T>::deleteElement(T *pointer) { - typename std::vector<T *>::iterator it = std::find(m_pointers.begin(), - m_pointers.end(), pointer); + iterator it = std::find(m_pointers.begin(), m_pointers.end(), pointer); if (it == m_pointers.end()) return false; m_pointers.erase(it); delete pointer; @@ -147,5 +132,3 @@ template<class T> void SafePointerVector<T>::clear() } #endif /* SAFEPOINTERVECTOR_H_ */ - - diff --git a/Fit/FitKernel/FitKernel.h b/Fit/FitKernel/FitKernel.h index da59986a3e3cf2c587071cd1249bcbd836841adf..6df72a1cecf2406f136a070ed7c41510e87b97f2 100644 --- a/Fit/FitKernel/FitKernel.h +++ b/Fit/FitKernel/FitKernel.h @@ -22,19 +22,15 @@ #include "FitSuiteParameters.h" #include "FitSuiteStrategies.h" #include "ChiSquaredModule.h" -#include "IMinimizer.h" #include "IObserver.h" + #include <string> -#include <boost/date_time/posix_time/posix_time.hpp> #include <memory> +#include <boost/date_time/posix_time/posix_time.hpp> #ifndef GCCXML_SKIP_THIS #include <atomic> #endif -class GISASSimulation; -class ParameterPool; -class FitSuite; - //! @class FitKernel //! @ingroup fitting_internal //! @brief Fitting kernel for FitSuite @@ -42,14 +38,14 @@ class FitSuite; class BA_CORE_API_ FitKernel { public: - FitKernel(FitSuite *fit_suite); + FitKernel(class FitSuite *fit_suite); virtual ~FitKernel(); - //! clear all and prepare for the next fit + //! Resets most state variables, to get prepared for the next fit void clear(); //! Adds pair of (simulation, real data) for consecutive simulation - void addSimulationAndRealData(const GISASSimulation& simulation, + void addSimulationAndRealData(const class GISASSimulation& simulation, const OutputData<double>& real_data, double weight); @@ -62,15 +58,15 @@ class BA_CORE_API_ FitKernel void addFitStrategy(const IFitStrategy &strategy); //! Sets minimizer - void setMinimizer(IMinimizer *minimizer); + void setMinimizer(class IMinimizer *minimizer); //! Returns minimizer - IMinimizer *getMinimizer(); + class IMinimizer *getMinimizer(); - //! run fitting which may consist of several minimization rounds + //! Runs a fit, which may consist of several minimization rounds virtual void runFit(); - //! run single minimization round (called by FitSuiteStrategy) + //! Runs a single minimization round (called by FitSuiteStrategy) void minimize(); //! Returns reference to the kit with data @@ -92,10 +88,13 @@ class BA_CORE_API_ FitKernel //! Returns the number of current strategy size_t getCurrentStrategyIndex() const; - //! Prints results of the screen + //! Prints fit results to stdout void printResults() const; + //! Returns current fit options FitOptions &getOptions(); + + //! Sets fit options void setOptions(const FitOptions &fit_options); //! Returns total wall time in seconds which was spend for run fit @@ -120,7 +119,7 @@ private: FitSuiteObjects m_fit_objects; FitSuiteParameters m_fit_parameters; FitSuiteStrategies m_fit_strategies; - std::unique_ptr<IMinimizer> m_minimizer; + std::unique_ptr<class IMinimizer> m_minimizer; FitSuiteChiSquaredFunction m_function_chi2; FitSuiteGradientFunction m_function_gradient; bool m_is_last_iteration; @@ -129,9 +128,7 @@ private: #endif boost::posix_time::ptime m_start_time; boost::posix_time::ptime m_end_time; - FitSuite *m_fit_suite; + class FitSuite *m_fit_suite; }; #endif // FITKERNEL_H - - diff --git a/Fit/FitKernel/FitObject.h b/Fit/FitKernel/FitObject.h index d86adb55356aff11fc3fce5d067c18da34a278e9..b4b83868d65d5d0145edf99937ada22f0e2a4939 100644 --- a/Fit/FitKernel/FitObject.h +++ b/Fit/FitKernel/FitObject.h @@ -88,5 +88,3 @@ private: }; #endif // FITOBJECT_H - - diff --git a/Fit/FitKernel/FitSuite.cpp b/Fit/FitKernel/FitSuite.cpp index 1396806d5757e4d324cb12034d35aa331c2734b1..e1186483fcfca1dfdadc0a0dda4742c9888f612f 100644 --- a/Fit/FitKernel/FitSuite.cpp +++ b/Fit/FitKernel/FitSuite.cpp @@ -24,7 +24,11 @@ FitSuite::FitSuite() : m_kernel(new FitKernel(this)) { +} +FitSuite::~FitSuite() +{ + delete m_kernel; } void FitSuite::addSimulationAndRealData(const GISASSimulation &simulation, diff --git a/Fit/FitKernel/FitSuite.h b/Fit/FitKernel/FitSuite.h index 620a08161489039cd6594bf3f1f8b3828d8aeb93..f3bf303fd5a8ab6f031f72a99e8f5df4c4de9d50 100644 --- a/Fit/FitKernel/FitSuite.h +++ b/Fit/FitKernel/FitSuite.h @@ -17,30 +17,30 @@ #define FITSUITE_H #include "IObserver.h" -#include "FitKernel.h" #include "IHistogram.h" #include "OutputData.h" - +#include "AttLimits.h" //! @class FitSuite //! @ingroup fitting -//! @brief Main class to setup and run GISAS fitting in BornAgain. +//! @brief User interface class that wraps all fit methods. class BA_CORE_API_ FitSuite : public IObservable { public: FitSuite(); + ~FitSuite(); // ------------------------------------------------------------------------ // Fitting setup // ------------------------------------------------------------------------ //! Assigns pair of (simulation, real data) for fitting. More than one pair can be added. - void addSimulationAndRealData(const GISASSimulation& simulation, + void addSimulationAndRealData(const class GISASSimulation& simulation, const OutputData<double>& real_data, double weight=1); //! Assigns pair of (simulation, real data) for fitting. More than one pair can be added. - void addSimulationAndRealData(const GISASSimulation& simulation, + void addSimulationAndRealData(const class GISASSimulation& simulation, const IHistogram& real_data, double weight=1); //! Adds fit parameter @@ -60,16 +60,16 @@ public: const std::string& minimizer_options=std::string()); //! Replaces default ChiSquaredModule with new one - void setChiSquaredModule(const IChiSquaredModule &chi2_module); + void setChiSquaredModule(const class IChiSquaredModule &chi2_module); //! Adds fit strategy - void addFitStrategy(const IFitStrategy &strategy); + void addFitStrategy(const class IFitStrategy &strategy); //! Sets minimizer - void setMinimizer(IMinimizer *minimizer); + void setMinimizer(class IMinimizer *minimizer); //! Returns minimizer - IMinimizer *getMinimizer(); + class IMinimizer *getMinimizer(); //! Initializes printing to standard output during the fitting. //! Prints also the summary when completed. @@ -97,24 +97,24 @@ public: //! returns real data histogram //! @param i_item The index of fit object - IHistogram * getRealData(size_t i_item = 0) const; + IHistogram* getRealData(size_t i_item = 0) const; //! returns simulated data histogram //! @param i_item The index of fit object - IHistogram * getSimulationData(size_t i_item = 0) const; + IHistogram* getSimulationData(size_t i_item = 0) const; //! returns chi2 histogram calculated for (real, simulated) data pair //! @param i_item The index of fit object - IHistogram * getChiSquaredMap(size_t i_item = 0) const; + IHistogram* getChiSquaredMap(size_t i_item = 0) const; //! returns FitObject (pair of simulation/real data) - FitSuiteObjects *getFitObjects(); + class FitSuiteObjects* getFitObjects(); //! Returns reference to fit parameters - FitSuiteParameters *getFitParameters(); + class FitSuiteParameters* getFitParameters(); //! Returns reference to fit parameters - FitSuiteStrategies *getFitStrategies(); + class FitSuiteStrategies* getFitStrategies(); //! if the last iteration is done (used by observers to print summary) bool isLastIteration() const; @@ -131,28 +131,26 @@ public: double getChi2() const; //! Returns general setting of fit kernel - FitOptions &getOptions(); + class FitOptions& getOptions(); //! Sets general setting of fit kernel void setOptions(const FitOptions &fit_options); void interruptFitting(); - void resetInterrupt(); - bool isInterrupted(); const OutputData<double> *getRealOutputData(size_t i_item = 0) const; - const OutputData<double> *getSimulationOutputData(size_t i_item = 0) const; - const OutputData<double> *getChiSquaredOutputData(size_t i_item = 0) const; private: FitSuite& operator=(const FitSuite& ); FitSuite(const FitSuite& ); - std::unique_ptr<FitKernel> m_kernel; + class FitKernel* m_kernel; //!< pointer to implementation + // do not use unique_ptr here; + // otherwise no instance of FitSuite can be created without knowing the size of FitKernel }; #endif diff --git a/Fit/FitKernel/FitSuitePrintObserver.cpp b/Fit/FitKernel/FitSuitePrintObserver.cpp index 2bc7f62ae0875bcbae051642d7ece5f1e42dc51a..32f98b5701b351d407033db06bf07d6204c2ed21 100644 --- a/Fit/FitKernel/FitSuitePrintObserver.cpp +++ b/Fit/FitKernel/FitSuitePrintObserver.cpp @@ -15,13 +15,15 @@ #include "FitSuitePrintObserver.h" #include "FitSuite.h" +#include "FitSuiteStrategies.h" +#include "FitSuiteParameters.h" FitSuitePrintObserver::FitSuitePrintObserver(int print_every_nth) : IFitObserver(print_every_nth) , m_fit_suite(0) { - m_last_call_time = boost::posix_time::second_clock::local_time(); + m_last_call_time = boost::posix_time::second_clock::local_time(); } void FitSuitePrintObserver::update(FitSuite *fit_suite) diff --git a/Fit/FitKernel/IFitObserver.cpp b/Fit/FitKernel/IFitObserver.cpp index 20371c3c579f23981fa4f1d5d5cdee6b7fdee5f9..5276b81e88ee7fcaf7003d482b752863e4e6e18e 100644 --- a/Fit/FitKernel/IFitObserver.cpp +++ b/Fit/FitKernel/IFitObserver.cpp @@ -15,6 +15,7 @@ #include "IFitObserver.h" #include "FitSuite.h" +#include "FitSuiteStrategies.h" IFitObserver::IFitObserver(int update_every_nth) diff --git a/Fit/FitKernel/IFitStrategy.h b/Fit/FitKernel/IFitStrategy.h index f1ff4d9ad1522d12d23fb04cd7f2d07149434d48..98a3016dee1bf75fcbbb39d59ae329940b882790 100644 --- a/Fit/FitKernel/IFitStrategy.h +++ b/Fit/FitKernel/IFitStrategy.h @@ -18,7 +18,6 @@ #include "INamed.h" #include <iostream> -class FitKernel; //! @class IFitStrategy //! @ingroup fitting_internal @@ -35,7 +34,7 @@ public: virtual IFitStrategy *clone() const = 0; virtual ~IFitStrategy(); - virtual void init(FitKernel *fit_suite); + virtual void init(class FitKernel *fit_suite); virtual void execute() = 0; friend std::ostream &operator<<(std::ostream &ostr, const IFitStrategy &m) @@ -44,11 +43,10 @@ public: return ostr; } - protected: virtual void print(std::ostream &ostr) const; - FitKernel *m_fit_kernel; + class FitKernel *m_fit_kernel; IFitStrategy(const IFitStrategy &other); private: @@ -68,7 +66,4 @@ class BA_CORE_API_ FitStrategyDefault : public IFitStrategy virtual void execute(); }; - #endif // FITSTRATEGY_H - - diff --git a/Fit/PythonAPI/libBornAgainFit_wrap.cxx b/Fit/PythonAPI/libBornAgainFit_wrap.cxx index e9ad2415dfce29b4183935f10f82f07bda034728..20db181d4eefd8e8765ebd5124f3fd7960224569 100644 --- a/Fit/PythonAPI/libBornAgainFit_wrap.cxx +++ b/Fit/PythonAPI/libBornAgainFit_wrap.cxx @@ -6048,12 +6048,11 @@ SWIGINTERN void std_vector_Sl_std_string_Sg__insert__SWIG_1(std::vector< std::st #include <numpy/arrayobject.h> - - #include "ChiSquaredModule.h" #include "FitObject.h" #include "FitOptions.h" #include "FitParameter.h" +#include "FitKernel.h" #include "FitSuite.h" #include "FitSuiteObjects.h" #include "FitSuiteParameters.h" @@ -6071,15 +6070,10 @@ SWIGINTERN void std_vector_Sl_std_string_Sg__insert__SWIG_1(std::vector< std::st #include "MinimizerOptions.h" #include "FitStrategyAdjustMinimizer.h" - - //! file containig additional exposers #include "PythonFitExposer.h" - - - struct SWIG_null_deleter { void operator() (void const *) const { } diff --git a/Fit/StandardFits/IMinimizerFunctionalTest.cpp b/Fit/StandardFits/IMinimizerFunctionalTest.cpp index ab276c436b85ed9400d5c8c35ca8816e696e6cc6..86f8cf2f5a3500cc54180f0deb7aecfd3f3406f6 100644 --- a/Fit/StandardFits/IMinimizerFunctionalTest.cpp +++ b/Fit/StandardFits/IMinimizerFunctionalTest.cpp @@ -14,11 +14,12 @@ // ************************************************************************** // #include "Units.h" -#include "IMinimizerFunctionalTest.h" +#include "FitKernel.h" #include "SampleBuilderFactory.h" #include "SimulationRegistry.h" #include "OutputData.h" #include "FitSuite.h" +#include "IMinimizerFunctionalTest.h" #include "MinimizerFactory.h" #include <memory> #include <boost/format.hpp> diff --git a/Fit/StandardFits/MinimizerFunctionalTests.cpp b/Fit/StandardFits/MinimizerFunctionalTests.cpp index 6703e989ff1c6bc426d6bcd2095094e16d5642bd..c27693d1644a7d0fb0a142bfbf0444ef77655441 100644 --- a/Fit/StandardFits/MinimizerFunctionalTests.cpp +++ b/Fit/StandardFits/MinimizerFunctionalTests.cpp @@ -15,6 +15,7 @@ #include "MinimizerFunctionalTests.h" #include "FitSuite.h" +#include "FitKernel.h" #include "MinimizerFactory.h" Minuit2MigradTest::Minuit2MigradTest() @@ -56,7 +57,7 @@ std::unique_ptr<FitSuite> GSLSimulatedAnnealingTest::createFitSuite() minimizer->getOptions()->setValue("t_min", 1.0); result->setMinimizer(minimizer); for (size_t i = 0; i < m_parameters.size(); ++i) { - result->addFitParameter(m_parameters[i].m_name, m_parameters[i].m_start_value, + result->addFitParameter(m_parameters[i].m_name, m_parameters[i].m_start_value, AttLimits::limited(4.0, 6.0), m_parameters[i].m_start_value / 100.); } diff --git a/GUI/coregui/Views/FitWidgets/FitTools.cpp b/GUI/coregui/Views/FitWidgets/FitTools.cpp index 627677b68dbd96fcc571ebd904e309d389abbe8c..d3f495bfbc4330ce71ecdcbd876ccfae8d014e2e 100644 --- a/GUI/coregui/Views/FitWidgets/FitTools.cpp +++ b/GUI/coregui/Views/FitWidgets/FitTools.cpp @@ -14,7 +14,6 @@ // // ************************************************************************** // -#include "FitTools.h" #include "JobItem.h" #include "FilterPropertyProxy.h" #include "JobModel.h" @@ -31,6 +30,9 @@ #include "ParameterTreeItems.h" #include "SessionItem.h" #include "RealDataWindow.h" + +#include "FitTools.h" + #include <boost/scoped_ptr.hpp> #include <QHBoxLayout> #include <QLabel> diff --git a/GUI/coregui/Views/FitWidgets/RunFitManager.h b/GUI/coregui/Views/FitWidgets/RunFitManager.h index d0910a9abf97709db447af0f427dc79ded99db1f..23be3005607793df1f259aabd400c4b79d6a1a81 100644 --- a/GUI/coregui/Views/FitWidgets/RunFitManager.h +++ b/GUI/coregui/Views/FitWidgets/RunFitManager.h @@ -29,7 +29,6 @@ class BA_CORE_API_ RunFitManager : public QObject Q_OBJECT public: - RunFitManager(QObject *parent); void setFitSuite(std::shared_ptr<FitSuite> suite); @@ -37,21 +36,17 @@ public: void runFitting(); public slots: - void interruptFitting(); signals: - void finishedFitting(); void startedFitting(); void error(const QString &message); - // only used by manager for communication with FittingWorker private slots: - void intern_workerFinished(); void intern_workerStarted(); @@ -59,15 +54,11 @@ private slots: void intern_error(const QString &mesg); signals: - void intern_interruptFittingWorker(); - private: - std::shared_ptr<FitSuite> m_fitSuite; std::atomic<bool> m_is_fit_running; - }; #endif diff --git a/GUI/coregui/Views/FitWidgets/RunFitWidget.cpp b/GUI/coregui/Views/FitWidgets/RunFitWidget.cpp index 0b240d0a5327b20e26b25ea90dfb43e7ce878236..2792fa52b805e53164d9bbc7bc463a1714448d1b 100644 --- a/GUI/coregui/Views/FitWidgets/RunFitWidget.cpp +++ b/GUI/coregui/Views/FitWidgets/RunFitWidget.cpp @@ -14,7 +14,6 @@ // // ************************************************************************** // -#include "RunFitWidget.h" #include "RunFitManager.h" #include "SampleBuilderFactory.h" #include "SimulationRegistry.h" @@ -31,6 +30,9 @@ #include "InstrumentItem.h" #include "SessionModel.h" #include "IntensityDataIOFactory.h" + +#include "RunFitWidget.h" + #include <QWidget> #include <QPushButton> #include <QSlider> diff --git a/GUI/coregui/Views/FitWidgets/RunFitWidget.h b/GUI/coregui/Views/FitWidgets/RunFitWidget.h index d6725ae6bb860f1463d5e3fb8bd14ac190414e5b..5905f509ccd1b549269d61830521a331c03767a0 100644 --- a/GUI/coregui/Views/FitWidgets/RunFitWidget.h +++ b/GUI/coregui/Views/FitWidgets/RunFitWidget.h @@ -38,26 +38,19 @@ class BA_CORE_API_ RunFitWidget : public QWidget Q_OBJECT public: - RunFitWidget(FitModel *fitModel, QWidget *parent = 0); // test only std::shared_ptr<FitSuite> init_test_fitsuite(); public slots: - void onIntervalChanged(int value); - void onStartClicked(); - void onStopClicked(); - void onFittingStarted(); - void onFittingFinished(); private: - QPushButton *m_start_button; QPushButton *m_stop_button; QLabel *m_interval_label; diff --git a/dev-tools/swig/libBornAgainCore.i b/dev-tools/swig/libBornAgainCore.i index 71af994d0f90b11ab0cd1ec267b42597ba6ecf9a..51a42ab6783cc53adb8e330823b4025340bf235d 100644 --- a/dev-tools/swig/libBornAgainCore.i +++ b/dev-tools/swig/libBornAgainCore.i @@ -202,8 +202,8 @@ #include "WavevectorInfo.h" %} -// import headers to be exported to Python interace. -// Note that the order of inclusion matters, as base classes must be imported before derived classes +// The following goes verbatim from libBornAgainCore.i to libBornAgainCore_wrap.cxx. +// Note that the order matters, as base classes must be included before derived classes. %include "AttLimits.h" %include "ICloneable.h" diff --git a/dev-tools/swig/libBornAgainFit.i b/dev-tools/swig/libBornAgainFit.i index 965b0519fa33a9ddffa6ac97fa7346aa8adc6d36..cf3161b3631ef1e05d0c731bdcdd4983ec9b5b1b 100644 --- a/dev-tools/swig/libBornAgainFit.i +++ b/dev-tools/swig/libBornAgainFit.i @@ -17,47 +17,19 @@ %feature("autodoc"); -//%feature("director"); - - // gives libBornAgainFit knowledge of the libBornAgainCore python module - // %import "../../Core/PythonAPI/libBornAgainCore.i" - %include "stdint.i" %include "std_complex.i" %include "std_string.i" %include "std_vector.i" %include "std_shared_ptr.i" - // import list of shared pointers (common between Core and Fit) %include "shared_pointers.i" %include "doxygen_fit.i" %include "warnings.i" %include "ignores.i" - - - %include "directors.i" - //%shared_ptr(ISampleBuilder) - //%shared_ptr(IParametrized) - //%shared_ptr(INamed) - //%template(SampleBuilder_t) boost::shared_ptr<ISampleBuilder>; - - - - //%shared_ptr(FitSuite) - - - -/* -%feature("director") IObserver; -%feature("director") IObservable; -%feature("director") IFitObserver; -%feature("director") IFitSuite; -/**/ - -// // from PythonCoreExposer.h %template(vdouble1d_t) std::vector<double>; %template(vdouble2d_t) std::vector< std::vector<double> >; %template(vector_integer_t) std::vector<int >; @@ -65,20 +37,6 @@ %template(vector_complex_t) std::vector< std::complex<double> >; %template(vector_string_t) std::vector<std::string>; - - - - - - - -// fix smart pointer problem -//%ignore IFitObserver::notify(IObservable*); -//%ignore IFitObserver::update(FitSuite*); - - - - #define SWIG_FILE_WITH_INIT %{ @@ -89,62 +47,24 @@ %include "numpy.i" %init %{ import_array(); -%} +%} #define GCCXML_SKIP_THIS 1 -#define GCC_DIAG_OFF(x) -#define GCC_DIAG_ON(x) - - +#define GCC_DIAG_OFF(x) +#define GCC_DIAG_ON(x) #ifndef BORNAGAIN_PYTHON #define BORNAGAIN_PYTHON #endif - - - - %import "WinDllMacros.h" - - - - //%import "INamed.h" - //%import "IParameterized.h" - //%import "ISample.h" - //%import "IMaterial.h" - //%import "IAxis.h" - //%import "VariableBinAxis.h" - //%import "ICompositeSample.h" - //%import "IClusteredParticles.h" - //%import "IShape2D.h" - - //%import "IFormFactor.h" - //%import "IFormFactorDecorator.h" - //%import "IFormFactorBorn.h" - //%import "IDetector2D.h" - //%import "RealParameterWrapper.h" - //%import "IParticle.h" - //%import "ParameterDistribution.h" - //%import "SafePointerVector.h" - - //%import "Simulation.h" - //%import "IHistogram.h" - - //%import "IPixelMap.h" - //%import "SphericalDetector.h" - - - //%import "IRoughness.h" - %{ - - #include "ChiSquaredModule.h" #include "FitObject.h" #include "FitOptions.h" #include "FitParameter.h" +#include "FitKernel.h" #include "FitSuite.h" #include "FitSuiteObjects.h" #include "FitSuiteParameters.h" @@ -162,13 +82,8 @@ import_array(); #include "MinimizerOptions.h" #include "FitStrategyAdjustMinimizer.h" - - //! file containig additional exposers #include "PythonFitExposer.h" - - - %} %import(module="libBornAgainCore") "AttLimits.h" @@ -177,34 +92,27 @@ import_array(); %import(module="libBornAgainCore") "IParameterized.h" %import(module="libBornAgainCore") "IObserver.h" +// The following goes verbatim from libBornAgainFit.i to libBornAgainFit_wrap.cxx. +// Note that the order matters, as base classes must be included before derived classes. %include "IMinimizer.h" - %include "IChiSquaredModule.h" %include "IFitObserver.h" %include "IFitStrategy.h" %include "IIntensityFunction.h" %include "IIntensityNormalizer.h" - %include "ISquaredFunction.h" - - %include "ChiSquaredModule.h" %include "FitObject.h" %include "FitOptions.h" %include "FitParameter.h" - %include "FitSuite.h" %include "FitSuiteObjects.h" %include "FitSuiteParameters.h" - %include "MathFunctions.h" - %include "MinimizerOptions.h" %include "MinimizerFactory.h" - - %include "FitStrategyAdjustMinimizer.h" - // extends included at end because swig needs to know something about the extended classes beforehand + // included at end because swig needs to know something about the extended classes beforehand %include "extends.i"