SourceXtractorPlusPlus  0.15
Please provide a description of the project.
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>
28 
31 
32 namespace SourceXtractor {
33 
34 static auto logger = Elements::Logging::getLogger("FlexibleModelFitting");
35 
37  if (property_id == PropertyId::create<FlexibleModelFitting>()) {
38  return std::make_shared<FlexibleModelFittingTask>(m_least_squares_engine, m_max_iterations,
40  } else {
41  return nullptr;
42  }
43 }
44 
47 }
48 
50  auto& model_fitting_config = manager.getConfiguration<ModelFittingConfig>();
51  auto& sampling_config = manager.getConfiguration<SamplingConfig>();
52 
53  for (auto const& i : model_fitting_config.getParameters()) {
54  m_parameters.push_back(i.second);
55  }
56 
57  m_frames = model_fitting_config.getFrames();
58 
59  for (auto const& p : model_fitting_config.getPriors()) {
60  m_priors.push_back(p.second);
61  }
62 
63  m_least_squares_engine = model_fitting_config.getLeastSquaresEngine();
64  m_max_iterations = model_fitting_config.getMaxIterations();
65  m_modified_chi_squared_scale = model_fitting_config.getModifiedChiSquaredScale();
66 
67  logger.info() << "Using engine " << m_least_squares_engine << " with "
68  << m_max_iterations << " maximum number of iterations";
69 
70  m_outputs = model_fitting_config.getOutputs();
71 
72  m_scale_factor = sampling_config.getScaleFactor();
73 }
74 
76  for (auto& p : m_outputs) {
77  std::string name = p.first;
78  std::vector<int> properties = p.second;
79  if (properties.size() == 1) {
80  registry.registerColumnConverter<FlexibleModelFitting, double>(name,
81  [properties](const FlexibleModelFitting& prop) {
82  return prop.getParameterValue(properties[0]);
83  }
84  );
85  registry.registerColumnConverter<FlexibleModelFitting, double>(name+"_err",
86  [properties](const FlexibleModelFitting& prop) {
87  return prop.getParameterSigma(properties[0]);
88  }
89  );
90  } else {
92  [properties](const FlexibleModelFitting& prop) {
93  std::vector<double> result;
94  for (int id : properties) {
95  result.push_back(prop.getParameterValue(id));
96  }
97  return result;
98  }
99  );
101  [properties](const FlexibleModelFitting& prop) {
102  std::vector<double> result;
103  for (int id : properties) {
104  result.push_back(prop.getParameterSigma(id));
105  }
106  return result;
107  }
108  );
109  }
110  }
111 }
112 
113 }
SourceXtractor::FlexibleModelFittingTaskFactory::m_scale_factor
double m_scale_factor
Definition: FlexibleModelFittingTaskFactory.h:57
Euclid::Configuration::ConfigManager::registerConfiguration
void registerConfiguration()
std::string
STL class.
std::shared_ptr
STL class.
SourceXtractor::FlexibleModelFittingTaskFactory::registerPropertyInstances
void registerPropertyInstances(OutputRegistry &) override
Definition: FlexibleModelFittingTaskFactory.cpp:75
ModelFittingConfig.h
SourceXtractor::SamplingConfig
Definition: SamplingConfig.h:25
Euclid::Configuration::ConfigManager
std::vector< int >
std::vector::size
T size(T... args)
SourceXtractor::FlexibleModelFittingTaskFactory::m_least_squares_engine
std::string m_least_squares_engine
Definition: FlexibleModelFittingTaskFactory.h:48
FlexibleModelFittingTask.h
SourceXtractor::OutputRegistry
Definition: OutputRegistry.h:36
Euclid::Configuration::ConfigManager::getConfiguration
T & getConfiguration()
FlexibleModelFittingTaskFactory.h
std::vector::push_back
T push_back(T... args)
SourceXtractor::PropertyId
Identifier used to set and retrieve properties.
Definition: PropertyId.h:40
SourceXtractor::FlexibleModelFittingTaskFactory::m_frames
std::vector< std::shared_ptr< FlexibleModelFittingFrame > > m_frames
Definition: FlexibleModelFittingTaskFactory.h:53
SourceXtractor
Definition: Aperture.h:30
SourceXtractor::FlexibleModelFittingTaskFactory::configure
void configure(Euclid::Configuration::ConfigManager &manager) override
Method which should initialize the object.
Definition: FlexibleModelFittingTaskFactory.cpp:49
SourceXtractor::FlexibleModelFittingTaskFactory::m_modified_chi_squared_scale
double m_modified_chi_squared_scale
Definition: FlexibleModelFittingTaskFactory.h:50
SourceXtractor::FlexibleModelFittingTaskFactory::m_max_iterations
unsigned int m_max_iterations
Definition: FlexibleModelFittingTaskFactory.h:49
FlexibleModelFitting.h
SourceXtractor::logger
static auto logger
Definition: WCS.cpp:44
SourceXtractor::FlexibleModelFittingTaskFactory::createTask
std::shared_ptr< Task > createTask(const PropertyId &property_id) const override
Returns a Task producing a Property corresponding to the given PropertyId.
Definition: FlexibleModelFittingTaskFactory.cpp:36
Elements::Logging::getLogger
static Logging getLogger(const std::string &name="")
SourceXtractor::FlexibleModelFittingTaskFactory::m_outputs
std::vector< std::pair< std::string, std::vector< int > > > m_outputs
Definition: FlexibleModelFittingTaskFactory.h:54
SourceXtractor::FlexibleModelFittingTaskFactory::m_parameters
std::vector< std::shared_ptr< FlexibleModelFittingParameter > > m_parameters
Definition: FlexibleModelFittingTaskFactory.h:52
SourceXtractor::FlexibleModelFitting
Definition: FlexibleModelFitting.h:40
SourceXtractor::ModelFittingConfig
Definition: ModelFittingConfig.h:34
SourceXtractor::FlexibleModelFittingTaskFactory::reportConfigDependencies
void reportConfigDependencies(Euclid::Configuration::ConfigManager &manager) const override
Registers all the Configuration dependencies.
Definition: FlexibleModelFittingTaskFactory.cpp:45
SourceXtractor::FlexibleModelFittingTaskFactory::m_priors
std::vector< std::shared_ptr< FlexibleModelFittingPrior > > m_priors
Definition: FlexibleModelFittingTaskFactory.h:55
Logging.h
SourceXtractor::OutputRegistry::registerColumnConverter
void registerColumnConverter(std::string column_name, ColumnConverter< PropertyType, OutType > converter, std::string column_unit="", std::string column_description="")
Definition: OutputRegistry.h:46
SamplingConfig.h