SourceXtractorPlusPlus 0.21
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
FlexibleModelFittingTaskFactory.cpp
Go to the documentation of this file.
1
17/*
18 * FlexibleModelFittingTaskFactory.cpp
19 *
20 * Created on: Sep 17, 2018
21 * Author: mschefer
22 */
23
24#include <ElementsKernel/Logging.h>
29
32
33namespace SourceXtractor {
34
35static auto logger = Elements::Logging::getLogger("FlexibleModelFitting");
36
51
55
57 auto& model_fitting_config = manager.getConfiguration<ModelFittingConfig>();
58 auto& sampling_config = manager.getConfiguration<SamplingConfig>();
59
60 for (auto const& i : model_fitting_config.getParameters()) {
61 m_parameters.push_back(i.second);
62 }
63
64 m_frames = model_fitting_config.getFrames();
65
66 for (auto const& p : model_fitting_config.getPriors()) {
67 m_priors.push_back(p.second);
68 }
69
70 m_least_squares_engine = model_fitting_config.getLeastSquaresEngine();
71 m_max_iterations = model_fitting_config.getMaxIterations();
72 m_modified_chi_squared_scale = model_fitting_config.getModifiedChiSquaredScale();
73 m_use_iterative_fitting = model_fitting_config.getUseIterativeFitting();
74 m_meta_iterations = model_fitting_config.getMetaIterations();
75 m_deblend_factor = model_fitting_config.getDeblendFactor();
76 m_meta_iteration_stop = model_fitting_config.getMetaIterationStop();
77
80 approach = "iterative";
81 } else {
82 approach = "classic";
83 }
84
85 logger.info() << "Using engine " << m_least_squares_engine << " with the "
86 << approach << " implementation and "
87 << m_max_iterations << " maximum number of iterations";
88
89 m_outputs = model_fitting_config.getOutputs();
90
91 m_scale_factor = sampling_config.getScaleFactor();
92 m_max_fit_size = sampling_config.getMaxFitSize();
93}
94
96 for (auto& p : m_outputs) {
97 std::string name = p.first;
99 if (properties.size() == 1) {
100 registry.registerColumnConverter<FlexibleModelFitting, double>(name,
102 return prop.getParameterValue(properties[0]);
103 }
104 );
105 registry.registerColumnConverter<FlexibleModelFitting, double>(name+"_err",
107 return prop.getParameterSigma(properties[0]);
108 }
109 );
110 } else {
111 registry.registerColumnConverter<FlexibleModelFitting, std::vector<double>>(name,
114 for (int id : properties) {
115 result.push_back(prop.getParameterValue(id));
116 }
117 return result;
118 }
119 );
120 registry.registerColumnConverter<FlexibleModelFitting, std::vector<double>>(name+"_err",
123 for (int id : properties) {
124 result.push_back(prop.getParameterSigma(id));
125 }
126 return result;
127 }
128 );
129 }
130 }
131}
132
133}
static Logging getLogger(const std::string &name="")
void info(const std::string &logMessage)
void configure(Euclid::Configuration::ConfigManager &manager) override
Method which should initialize the object.
std::vector< std::shared_ptr< FlexibleModelFittingParameter > > m_parameters
std::vector< std::pair< std::string, std::vector< int > > > m_outputs
std::vector< std::shared_ptr< FlexibleModelFittingPrior > > m_priors
std::shared_ptr< Task > createTask(const PropertyId &property_id) const override
Returns a Task producing a Property corresponding to the given PropertyId.
void reportConfigDependencies(Euclid::Configuration::ConfigManager &manager) const override
Registers all the Configuration dependencies.
std::vector< std::shared_ptr< FlexibleModelFittingFrame > > m_frames
Identifier used to set and retrieve properties.
Definition PropertyId.h:40
static Elements::Logging logger