BornAgain
1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
|
Holds vector of SimDataPairs (experimental data and simulation results) for use in fitting. Thereby supports simultaneous fitting of several data sets and model functions, as demonstrated in example fit52/multiple_datasets.
Definition at line 42 of file FitObjective.h.
Public Member Functions | |
FitObjective () | |
virtual | ~FitObjective () |
SimulationResult | absoluteDifference (size_t i_item=0) const |
Returns absolute value of difference between simulation and experimental data in the form of SimulationResult. More... | |
void | addSimulationAndData (const PyBuilderCallback &callback, const std::vector< double > &data, const std::vector< double > &stdv, double weight=1.0) |
void | addSimulationAndData (const PyBuilderCallback &callback, const std::vector< double > &data, double weight=1.0) |
void | addSimulationAndData (const PyBuilderCallback &callback, const std::vector< std::vector< double >> &data, const std::vector< std::vector< double >> &stdv, double weight=1.0) |
Constructs simulation/data pair for later fit. More... | |
void | addSimulationAndData (const PyBuilderCallback &callback, const std::vector< std::vector< double >> &data, double weight=1.0) |
Constructs simulation/data pair for later fit. More... | |
bool | allPairsHaveUncertainties () const |
Returns true if all the data pairs in FitObjective instance contain uncertainties. More... | |
bool | containsUncertainties (size_t i_item) const |
Returns true if the specified DataPair element contains uncertainties. More... | |
const SimDataPair & | dataPair (size_t i_item=0) const |
Returns a reference to i-th SimDataPair. More... | |
virtual double | evaluate (const mumufit::Parameters ¶ms) |
virtual std::vector< double > | evaluate_residuals (const mumufit::Parameters ¶ms) |
void | execAddSimulationAndData (const simulation_builder_t &builder, const Datafield &data, std::unique_ptr< Datafield > &&stdv, double weight=1.0) |
Constructs simulation/data pair for later fit. More... | |
void | execSimulations (const mumufit::Parameters ¶ms) |
std::vector< double > | experimental_array () const |
Returns one-dimensional array representing merged experimental data. The area outside of the region of interest is not included, masked data is nullified. More... | |
SimulationResult | experimentalData (size_t i_item=0) const |
Returns experimental data in the form of SimulationResult. More... | |
void | finalize (const mumufit::MinimizerResult &result) |
Should be explicitly called on last iteration to notify all observers. More... | |
unsigned | fitObjectCount () const |
void | initPlot (int every_nth, fit_observer_t &&observer) |
void | initPlot (int every_nth, PyObserverCallback &callback) |
Initializes observer callback to be called on every_nth fit iteration. More... | |
void | initPrint (int every_nth) |
Initializes printing to standard output on every_nth fit iteration. More... | |
void | interruptFitting () |
bool | isCompleted () const |
bool | isFirstIteration () const |
bool | isInterrupted () const |
IterationInfo | iterationInfo () const |
mumufit::MinimizerResult | minimizerResult () const |
SimulationResult | relativeDifference (size_t i_item=0) const |
Returns relative difference between simulation and experimental data in the form of SimulationResult. More... | |
void | setChiSquaredModule (const IChiSquaredModule &module) |
void | setObjectiveMetric (const std::string &metric) |
void | setObjectiveMetric (const std::string &metric, const std::string &norm) |
Sets objective metric to the FitObjective. More... | |
void | setObjectiveMetric (std::unique_ptr< ObjectiveMetric > metric) |
std::vector< double > | simulation_array () const |
Returns one-dimensional array representing merged simulated intensities data. The area outside of the region of interest is not included, masked data is nullified. More... | |
SimulationResult | simulationResult (size_t i_item=0) const |
Returns simulation result in the form of SimulationResult. More... | |
std::vector< double > | uncertainties () const |
Returns one-dimensional array representing merged data uncertainties. The area outside of the region of interest is not included, masked data is nullified. More... | |
SimulationResult | uncertaintyData (size_t i_item=0) const |
Returns experimental data uncertainties in the form of SimulationResult. More... | |
std::vector< double > | weights_array () const |
Returns one-dimensional array representing merged user weights. The area outside of the region of interest is not included, masked data is nullified. More... | |
Static Public Member Functions | |
static std::string | availableMetricOptions () |
Returns available metrics and norms. More... | |
Private Types | |
using | DataPairAccessor = std::vector< double >(SimDataPair::*)() const |
Private Member Functions | |
std::vector< double > | composeArray (DataPairAccessor getter) const |
Private Attributes | |
std::vector< SimDataPair > | m_fit_objects |
std::unique_ptr< FitStatus > | m_fit_status |
std::unique_ptr< IMetricWrapper > | m_metric_module |
|
private |
Definition at line 136 of file FitObjective.h.
FitObjective::FitObjective | ( | ) |
Definition at line 125 of file FitObjective.cpp.
|
virtualdefault |
SimulationResult FitObjective::absoluteDifference | ( | size_t | i_item = 0 | ) | const |
Returns absolute value of difference between simulation and experimental data in the form of SimulationResult.
Definition at line 224 of file FitObjective.cpp.
References SimDataPair::absoluteDifference(), and dataPair().
void FitObjective::addSimulationAndData | ( | const PyBuilderCallback & | callback, |
const std::vector< double > & | data, | ||
const std::vector< double > & | stdv, | ||
double | weight = 1.0 |
||
) |
Definition at line 170 of file FitObjective.cpp.
References DataUtils::Array::createPField1D(), and execAddSimulationAndData().
void FitObjective::addSimulationAndData | ( | const PyBuilderCallback & | callback, |
const std::vector< double > & | data, | ||
double | weight = 1.0 |
||
) |
Definition at line 155 of file FitObjective.cpp.
References DataUtils::Array::createPField1D(), and execAddSimulationAndData().
void FitObjective::addSimulationAndData | ( | const PyBuilderCallback & | callback, |
const std::vector< std::vector< double >> & | data, | ||
const std::vector< std::vector< double >> & | stdv, | ||
double | weight = 1.0 |
||
) |
Constructs simulation/data pair for later fit.
callback | simulation builder capable of producing simulations |
data | experimental data array |
stdv | data uncertainties array |
weight | weight of dataset in metric calculations |
Definition at line 162 of file FitObjective.cpp.
References DataUtils::Array::createPField2D(), and execAddSimulationAndData().
void FitObjective::addSimulationAndData | ( | const PyBuilderCallback & | callback, |
const std::vector< std::vector< double >> & | data, | ||
double | weight = 1.0 |
||
) |
Constructs simulation/data pair for later fit.
callback | simulation builder capable of producing simulations |
data | experimental data array |
weight | weight of dataset in metric calculations |
Definition at line 148 of file FitObjective.cpp.
References DataUtils::Array::createPField2D(), and execAddSimulationAndData().
bool FitObjective::allPairsHaveUncertainties | ( | ) | const |
Returns true if all the data pairs in FitObjective instance contain uncertainties.
Definition at line 366 of file FitObjective.cpp.
References SimDataPair::containsUncertainties(), dataPair(), and fitObjectCount().
|
static |
Returns available metrics and norms.
Definition at line 375 of file FitObjective.cpp.
References ObjectiveMetricUtils::availableMetricOptions().
|
private |
Definition at line 380 of file FitObjective.cpp.
References m_fit_objects.
Referenced by experimental_array(), simulation_array(), uncertainties(), and weights_array().
bool FitObjective::containsUncertainties | ( | size_t | i_item | ) | const |
Returns true if the specified DataPair element contains uncertainties.
Definition at line 360 of file FitObjective.cpp.
References SimDataPair::containsUncertainties(), and dataPair().
const SimDataPair & FitObjective::dataPair | ( | size_t | i_item = 0 | ) | const |
Returns a reference to i-th SimDataPair.
Definition at line 257 of file FitObjective.cpp.
References m_fit_objects.
Referenced by absoluteDifference(), allPairsHaveUncertainties(), containsUncertainties(), experimentalData(), relativeDifference(), simulationResult(), and uncertaintyData().
|
virtual |
Definition at line 178 of file FitObjective.cpp.
References execSimulations(), m_fit_objects, m_fit_status, m_metric_module, and mumufit::Parameters::size().
Referenced by evaluate_residuals().
|
virtual |
Definition at line 186 of file FitObjective.cpp.
References evaluate(), experimental_array(), and simulation_array().
void FitObjective::execAddSimulationAndData | ( | const simulation_builder_t & | builder, |
const Datafield & | data, | ||
std::unique_ptr< Datafield > && | stdv, | ||
double | weight = 1.0 |
||
) |
Constructs simulation/data pair for later fit.
builder | simulation builder capable of producing simulations |
data | experimental data array |
stdv | data uncertainties array |
weight | weight of dataset in metric calculations |
Should be private, but is used in several tests.
Definition at line 141 of file FitObjective.cpp.
References m_fit_objects.
Referenced by addSimulationAndData().
void FitObjective::execSimulations | ( | const mumufit::Parameters & | params | ) |
Definition at line 318 of file FitObjective.cpp.
References m_fit_objects, and m_fit_status.
Referenced by evaluate().
std::vector< double > FitObjective::experimental_array | ( | ) | const |
Returns one-dimensional array representing merged experimental data. The area outside of the region of interest is not included, masked data is nullified.
Definition at line 231 of file FitObjective.cpp.
References composeArray(), and SimDataPair::experimental_array().
Referenced by evaluate_residuals().
SimulationResult FitObjective::experimentalData | ( | size_t | i_item = 0 | ) | const |
Returns experimental data in the form of SimulationResult.
Definition at line 204 of file FitObjective.cpp.
References dataPair(), and SimDataPair::experimentalData().
void FitObjective::finalize | ( | const mumufit::MinimizerResult & | result | ) |
Should be explicitly called on last iteration to notify all observers.
Definition at line 293 of file FitObjective.cpp.
References m_fit_status.
unsigned FitObjective::fitObjectCount | ( | ) | const |
Definition at line 298 of file FitObjective.cpp.
References m_fit_objects.
Referenced by allPairsHaveUncertainties().
void FitObjective::initPlot | ( | int | every_nth, |
fit_observer_t && | observer | ||
) |
Definition at line 267 of file FitObjective.cpp.
References m_fit_status.
void FitObjective::initPlot | ( | int | every_nth, |
PyObserverCallback & | callback | ||
) |
Initializes observer callback to be called on every_nth fit iteration.
Definition at line 272 of file FitObjective.cpp.
References m_fit_status, and PyObserverCallback::update().
void FitObjective::initPrint | ( | int | every_nth | ) |
Initializes printing to standard output on every_nth fit iteration.
Definition at line 262 of file FitObjective.cpp.
References m_fit_status.
void FitObjective::interruptFitting | ( | ) |
Definition at line 303 of file FitObjective.cpp.
References m_fit_status.
bool FitObjective::isCompleted | ( | ) | const |
Definition at line 278 of file FitObjective.cpp.
References m_fit_status.
Referenced by FitPrintService::print().
bool FitObjective::isFirstIteration | ( | ) | const |
Definition at line 313 of file FitObjective.cpp.
References IterationInfo::iterationCount(), and iterationInfo().
Referenced by FitPrintService::print().
bool FitObjective::isInterrupted | ( | ) | const |
Definition at line 308 of file FitObjective.cpp.
References m_fit_status.
IterationInfo FitObjective::iterationInfo | ( | ) | const |
Definition at line 283 of file FitObjective.cpp.
References m_fit_status.
Referenced by isFirstIteration(), FitPrintService::iterationHeaderString(), and FitPrintService::parameterString().
mumufit::MinimizerResult FitObjective::minimizerResult | ( | ) | const |
Definition at line 288 of file FitObjective.cpp.
References m_fit_status.
Referenced by FitPrintService::fitResultString().
SimulationResult FitObjective::relativeDifference | ( | size_t | i_item = 0 | ) | const |
Returns relative difference between simulation and experimental data in the form of SimulationResult.
Definition at line 217 of file FitObjective.cpp.
References dataPair(), and SimDataPair::relativeDifference().
void FitObjective::setChiSquaredModule | ( | const IChiSquaredModule & | module | ) |
Definition at line 331 of file FitObjective.cpp.
References IChiSquaredModule::clone(), and m_metric_module.
void FitObjective::setObjectiveMetric | ( | const std::string & | metric | ) |
Definition at line 347 of file FitObjective.cpp.
References ObjectiveMetricUtils::createMetric(), ObjectiveMetricUtils::defaultNormName(), and m_metric_module.
void FitObjective::setObjectiveMetric | ( | const std::string & | metric, |
const std::string & | norm | ||
) |
Sets objective metric to the FitObjective.
metric | metric name |
norm | metric norm name (defaults to L2-norm) |
Definition at line 353 of file FitObjective.cpp.
References ObjectiveMetricUtils::createMetric(), and m_metric_module.
void FitObjective::setObjectiveMetric | ( | std::unique_ptr< ObjectiveMetric > | metric | ) |
Definition at line 342 of file FitObjective.cpp.
References m_metric_module.
std::vector< double > FitObjective::simulation_array | ( | ) | const |
Returns one-dimensional array representing merged simulated intensities data. The area outside of the region of interest is not included, masked data is nullified.
Definition at line 238 of file FitObjective.cpp.
References composeArray(), and SimDataPair::simulation_array().
Referenced by evaluate_residuals().
SimulationResult FitObjective::simulationResult | ( | size_t | i_item = 0 | ) | const |
Returns simulation result in the form of SimulationResult.
Definition at line 198 of file FitObjective.cpp.
References dataPair(), and SimDataPair::simulationResult().
std::vector< double > FitObjective::uncertainties | ( | ) | const |
Returns one-dimensional array representing merged data uncertainties. The area outside of the region of interest is not included, masked data is nullified.
Definition at line 245 of file FitObjective.cpp.
References composeArray(), and SimDataPair::uncertainties_array().
SimulationResult FitObjective::uncertaintyData | ( | size_t | i_item = 0 | ) | const |
Returns experimental data uncertainties in the form of SimulationResult.
Definition at line 210 of file FitObjective.cpp.
References dataPair(), and SimDataPair::uncertainties().
std::vector< double > FitObjective::weights_array | ( | ) | const |
Returns one-dimensional array representing merged user weights. The area outside of the region of interest is not included, masked data is nullified.
Definition at line 252 of file FitObjective.cpp.
References composeArray(), and SimDataPair::user_weights_array().
|
private |
Definition at line 140 of file FitObjective.h.
Referenced by composeArray(), dataPair(), evaluate(), execAddSimulationAndData(), execSimulations(), and fitObjectCount().
|
private |
Definition at line 142 of file FitObjective.h.
Referenced by evaluate(), execSimulations(), finalize(), initPlot(), initPrint(), interruptFitting(), isCompleted(), isInterrupted(), iterationInfo(), and minimizerResult().
|
private |
Definition at line 141 of file FitObjective.h.
Referenced by evaluate(), setChiSquaredModule(), and setObjectiveMetric().