15 #ifndef BORNAGAIN_CORE_FITTING_FITOBJECTIVE_H
16 #define BORNAGAIN_CORE_FITTING_FITOBJECTIVE_H
Defines various functions to interact from numpy on Python side.
std::function< void(const FitObjective &)> fit_observer_t
std::function< std::unique_ptr< Simulation >(const Fit::Parameters &)> simulation_builder_t
Defines class IterationInfo.
Defines class MinimizerResult.
Defines class SimDataPair.
Holds vector of SimDataPairs (experimental data and simulation results) for use in fitting.
void run_simulations(const Fit::Parameters ¶ms)
SimulationResult uncertaintyData(size_t i_item=0) const
Returns experimental data uncertainties in the form of SimulationResult.
void addSimulationAndData(PyBuilderCallback &callback, const T &data, const T &uncertainties, double weight=1.0)
Constructs simulation/data pair for later fit.
std::unique_ptr< IMetricWrapper > m_metric_module
bool isFirstIteration() const
virtual double evaluate(const Fit::Parameters ¶ms)
IterationInfo iterationInfo() const
void addSimulationAndData(simulation_builder_t builder, const OutputData< double > &data, std::unique_ptr< OutputData< double >> uncertainties, double weight=1.0)
Constructs simulation/data pair for later fit.
bool allPairsHaveUncertainties() const
Returns true if all the data pairs in FitObjective instance contain uncertainties.
SimulationResult relativeDifference(size_t i_item=0) const
Returns relative difference between simulation and experimental data in the form of SimulationResult.
void addSimulationAndData(PyBuilderCallback &callback, const T &data, double weight=1.0)
Constructs simulation/data pair for later fit.
void finalize(const Fit::MinimizerResult &result)
Should be explicitely called on last iteration to notify all observers.
void initPlot(int every_nth, PyObserverCallback &callback)
Initializes observer callback to be called on every_nth fit iteration.
std::vector< SimDataPair > m_fit_objects
static simulation_builder_t simulationBuilder(PyBuilderCallback &callback)
size_t check_index(size_t index) const
void setObjectiveMetric(const std::string &metric)
std::vector< double > composeArray(DataPairAccessor getter) const
std::vector< double > uncertainties() const
Returns one-dimensional array representing merged data uncertainties.
SimulationResult experimentalData(size_t i_item=0) const
Returns experimental data in the form of SimulationResult.
unsigned fitObjectCount() const
void setChiSquaredModule(const IChiSquaredModule &module)
std::vector< double >(SimDataPair::* DataPairAccessor)() const
static std::string availableMetricOptions()
Returns available metrics and norms.
bool containsUncertainties(size_t i_item) const
Returns true if the specified DataPair element contains uncertainties.
SimulationResult simulationResult(size_t i_item=0) const
Returns simulation result in the form of SimulationResult.
void initPrint(int every_nth)
Initializes printing to standard output on every_nth fit iteration.
std::vector< double > weights_array() const
Returns one-dimensional array representing merged user weights.
size_t numberOfFitElements() const
std::vector< double > experimental_array() const
Returns one dimensional array representing merged experimental data.
Fit::MinimizerResult minimizerResult() const
SimulationResult absoluteDifference(size_t i_item=0) const
Returns absolute value of difference between simulation and experimental data in the form of Simulati...
bool isInterrupted() const
std::unique_ptr< FitStatus > m_fit_status
const SimDataPair & dataPair(size_t i_item=0) const
Returns a reference to i-th SimDataPair.
virtual std::vector< double > evaluate_residuals(const Fit::Parameters ¶ms)
std::vector< double > simulation_array() const
Returns one dimensional array representing merged simulated intensities data.
Contains status of the fitting (running, interupted etc) and all intermediate information which has t...
Result of minimization round.
A collection of fit parameters.
Interface residual calculations.
Stores fit iteration info to track fit flow from various observers.
Base class for metric implementations.
Builds simulation object using a Python callable.
Observer for FitObjective based on Python callable.
Holds pair of simulation/experimental data to fit.
Wrapper around OutputData<double> that also provides unit conversions.
CreateDataImpl::ReturnType< T > createData(const T &vec)
Creates OutputData array from input vector.