SourceXtractorPlusPlus
0.21
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
SEImplementation
src
lib
Plugin
FlexibleModelFitting
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>
25
#include "
SEImplementation/Plugin/FlexibleModelFitting/FlexibleModelFitting.h
"
26
#include "
SEImplementation/Plugin/FlexibleModelFitting/FlexibleModelFittingTask.h
"
27
#include "
SEImplementation/Plugin/FlexibleModelFitting/FlexibleModelFittingIterativeTask.h
"
28
#include "
SEImplementation/Plugin/FlexibleModelFitting/FlexibleModelFittingTaskFactory.h
"
29
30
#include "
SEImplementation/Configuration/ModelFittingConfig.h
"
31
#include "
SEImplementation/Configuration/SamplingConfig.h
"
32
33
namespace
SourceXtractor
{
34
35
static
auto
logger
=
Elements::Logging::getLogger
(
"FlexibleModelFitting"
);
36
37
std::shared_ptr<Task>
FlexibleModelFittingTaskFactory::createTask
(
const
PropertyId
&
property_id
)
const
{
38
if
(
property_id
== PropertyId::create<FlexibleModelFitting>()) {
39
if
(
m_use_iterative_fitting
) {
40
return
std::make_shared<FlexibleModelFittingIterativeTask>
(
m_least_squares_engine
,
m_max_iterations
,
41
m_modified_chi_squared_scale
,
m_parameters
,
m_frames
,
m_priors
,
m_scale_factor
,
42
m_meta_iterations
,
m_deblend_factor
,
m_meta_iteration_stop
,
m_max_fit_size
);
43
}
else
{
44
return
std::make_shared<FlexibleModelFittingTask>
(
m_least_squares_engine
,
m_max_iterations
,
45
m_modified_chi_squared_scale
,
m_parameters
,
m_frames
,
m_priors
,
m_scale_factor
);
46
}
47
}
else
{
48
return
nullptr
;
49
}
50
}
51
52
void
FlexibleModelFittingTaskFactory::reportConfigDependencies
(
Euclid::Configuration::ConfigManager
&
manager
)
const
{
53
manager
.registerConfiguration<
ModelFittingConfig
>();
54
}
55
56
void
FlexibleModelFittingTaskFactory::configure
(
Euclid::Configuration::ConfigManager
&
manager
) {
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
78
std::string
approach
;
79
if
(
m_use_iterative_fitting
) {
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
95
void
FlexibleModelFittingTaskFactory::registerPropertyInstances
(
OutputRegistry
&
registry
) {
96
for
(
auto
& p :
m_outputs
) {
97
std::string
name = p.first;
98
std::vector<int>
properties
= p.second;
99
if
(
properties
.size() == 1) {
100
registry
.registerColumnConverter<
FlexibleModelFitting
,
double
>(name,
101
[
properties
](
const
FlexibleModelFitting
&
prop
) {
102
return
prop
.getParameterValue(
properties
[0]);
103
}
104
);
105
registry
.registerColumnConverter<
FlexibleModelFitting
,
double
>(name+
"_err"
,
106
[
properties
](
const
FlexibleModelFitting
&
prop
) {
107
return
prop
.getParameterSigma(
properties
[0]);
108
}
109
);
110
}
else
{
111
registry
.registerColumnConverter<
FlexibleModelFitting
,
std::vector<double>
>(name,
112
[
properties
](
const
FlexibleModelFitting
&
prop
) {
113
std::vector<double>
result
;
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"
,
121
[
properties
](
const
FlexibleModelFitting
&
prop
) {
122
std::vector<double>
result
;
123
for
(
int
id
:
properties
) {
124
result
.push_back(
prop
.getParameterSigma(
id
));
125
}
126
return
result
;
127
}
128
);
129
}
130
}
131
}
132
133
}
FlexibleModelFittingIterativeTask.h
FlexibleModelFittingTaskFactory.h
FlexibleModelFittingTask.h
FlexibleModelFitting.h
ModelFittingConfig.h
SamplingConfig.h
std::string
Elements::Logging::getLogger
static Logging getLogger(const std::string &name="")
Elements::Logging::info
void info(const std::string &logMessage)
Euclid::Configuration::ConfigManager
SourceXtractor::FlexibleModelFittingTaskFactory::m_least_squares_engine
std::string m_least_squares_engine
Definition
FlexibleModelFittingTaskFactory.h:48
SourceXtractor::FlexibleModelFittingTaskFactory::m_meta_iterations
int m_meta_iterations
Definition
FlexibleModelFittingTaskFactory.h:52
SourceXtractor::FlexibleModelFittingTaskFactory::m_meta_iteration_stop
double m_meta_iteration_stop
Definition
FlexibleModelFittingTaskFactory.h:54
SourceXtractor::FlexibleModelFittingTaskFactory::configure
void configure(Euclid::Configuration::ConfigManager &manager) override
Method which should initialize the object.
Definition
FlexibleModelFittingTaskFactory.cpp:56
SourceXtractor::FlexibleModelFittingTaskFactory::m_max_iterations
unsigned int m_max_iterations
Definition
FlexibleModelFittingTaskFactory.h:49
SourceXtractor::FlexibleModelFittingTaskFactory::m_parameters
std::vector< std::shared_ptr< FlexibleModelFittingParameter > > m_parameters
Definition
FlexibleModelFittingTaskFactory.h:56
SourceXtractor::FlexibleModelFittingTaskFactory::m_outputs
std::vector< std::pair< std::string, std::vector< int > > > m_outputs
Definition
FlexibleModelFittingTaskFactory.h:58
SourceXtractor::FlexibleModelFittingTaskFactory::registerPropertyInstances
void registerPropertyInstances(OutputRegistry &) override
Definition
FlexibleModelFittingTaskFactory.cpp:95
SourceXtractor::FlexibleModelFittingTaskFactory::m_use_iterative_fitting
bool m_use_iterative_fitting
Definition
FlexibleModelFittingTaskFactory.h:51
SourceXtractor::FlexibleModelFittingTaskFactory::m_scale_factor
double m_scale_factor
Definition
FlexibleModelFittingTaskFactory.h:61
SourceXtractor::FlexibleModelFittingTaskFactory::m_priors
std::vector< std::shared_ptr< FlexibleModelFittingPrior > > m_priors
Definition
FlexibleModelFittingTaskFactory.h:59
SourceXtractor::FlexibleModelFittingTaskFactory::m_max_fit_size
double m_max_fit_size
Definition
FlexibleModelFittingTaskFactory.h:62
SourceXtractor::FlexibleModelFittingTaskFactory::m_deblend_factor
double m_deblend_factor
Definition
FlexibleModelFittingTaskFactory.h:53
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:37
SourceXtractor::FlexibleModelFittingTaskFactory::reportConfigDependencies
void reportConfigDependencies(Euclid::Configuration::ConfigManager &manager) const override
Registers all the Configuration dependencies.
Definition
FlexibleModelFittingTaskFactory.cpp:52
SourceXtractor::FlexibleModelFittingTaskFactory::m_modified_chi_squared_scale
double m_modified_chi_squared_scale
Definition
FlexibleModelFittingTaskFactory.h:50
SourceXtractor::FlexibleModelFittingTaskFactory::m_frames
std::vector< std::shared_ptr< FlexibleModelFittingFrame > > m_frames
Definition
FlexibleModelFittingTaskFactory.h:57
SourceXtractor::FlexibleModelFitting
Definition
FlexibleModelFitting.h:40
SourceXtractor::ModelFittingConfig
Definition
ModelFittingConfig.h:34
SourceXtractor::OutputRegistry
Definition
OutputRegistry.h:37
SourceXtractor::PropertyId
Identifier used to set and retrieve properties.
Definition
PropertyId.h:40
SourceXtractor::SamplingConfig
Definition
SamplingConfig.h:25
std::function
Euclid::Configuration::logger
static Elements::Logging logger
SourceXtractor
Definition
Aperture.h:30
Generated by
1.10.0