SourceXtractorPlusPlus
1.0.3
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
SEImplementation
src
lib
Plugin
CoreThresholdPartition
CoreThresholdPartitionConfig.cpp
Go to the documentation of this file.
1
17
/*
18
* CoreThresholdPartitionConfig.cpp
19
*
20
* Created on: May 28, 2019
21
* Author: mkuemmel@usm.lmu.de
22
*/
23
24
#include <Configuration/ProgramOptionsHelper.h>
25
26
#include "
SEImplementation/Plugin/CoreThresholdPartition/CoreThresholdPartitionConfig.h
"
27
28
#include "
SEImplementation/Plugin/CoreThresholdPartition/CoreThresholdPartitionStep.h
"
29
#include "
SEImplementation/Configuration/PartitionStepConfig.h
"
30
#include "
SEImplementation/Configuration/MultiThresholdPartitionConfig.h
"
31
#include "
SEImplementation/Configuration/DetectionFrameConfig.h
"
32
33
34
namespace
po
=
boost::program_options
;
35
using namespace
Euclid::Configuration
;
36
37
namespace
SourceXtractor
{
38
39
static
const
std::string
CORE_THRESHOLD
{
"core-threshold-value"
};
40
static
const
std::string
CORE_MINAREA
{
"core-minimum-area"
};
41
static
const
std::string
CORE_THRESH_USE
{
"partition-corethreshold"
};
42
43
CoreThresholdPartitionConfig::CoreThresholdPartitionConfig
(
long
manager_id)
44
:
Configuration
(manager_id),
m_core_threshold
(0.),
m_core_minarea
(0) {
45
declareDependency<PartitionStepConfig>
();
46
declareDependency<DetectionFrameConfig>
();
47
48
// this is used to enforce the order the PartitionSteps are added and performed
49
ConfigManager::getInstance
(manager_id).
registerDependency
<
CoreThresholdPartitionConfig
,
MultiThresholdPartitionConfig
>();
50
}
51
52
std::map<std::string, Configuration::OptionDescriptionList>
CoreThresholdPartitionConfig::getProgramOptions
() {
53
return
{{
"Core threshold partitioning"
, {
54
{
CORE_THRESHOLD
.c_str(), po::value<double>()->default_value(0.0),
"The core threshold level"
},
55
{
CORE_MINAREA
.c_str(), po::value<int>()->default_value(0),
"The minimum pixel area for partitioning"
},
56
{
CORE_THRESH_USE
.c_str(), po::value<bool>()->default_value(
false
),
"Activate core threshold partitioning"
}
57
}}};
58
}
59
60
void
CoreThresholdPartitionConfig::initialize
(
const
UserValues
&args) {
61
m_core_threshold
= args.
find
(
CORE_THRESHOLD
)->second.as<
double
>();
62
m_core_minarea
= args.
find
(
CORE_MINAREA
)->second.as<
int
>();
63
64
if
(
m_core_threshold
< 0.) {
65
throw
Elements::Exception
() <<
"Invalid "
<<
CORE_THRESHOLD
<<
" value: "
<<
m_core_threshold
;
66
}
67
if
(
m_core_minarea
< 0) {
68
throw
Elements::Exception
() <<
"Invalid "
<<
CORE_MINAREA
<<
" value: "
<<
m_core_minarea
;
69
}
70
71
if
(
getDependency<DetectionFrameConfig>
().getDetectionFrames().size() > 0) {
72
if
(
m_core_threshold
> 0.0 &&
m_core_minarea
> 0 && args.
at
(
CORE_THRESH_USE
).as<
bool
>()) {
73
double
core_threshold =
m_core_threshold
;
74
int
core_minarea =
m_core_minarea
;
75
getDependency<PartitionStepConfig>
().addPartitionStepCreator([core_threshold, core_minarea](
std::shared_ptr<SourceFactory>
)
76
{
return
std::make_shared<CoreThresholdPartitionStep>
(core_threshold, core_minarea); } );
77
}
78
}
79
}
80
81
const
double
&
CoreThresholdPartitionConfig::getCoreThreshold
()
const
{
82
return
m_core_threshold
;
83
}
84
85
const
int
&
CoreThresholdPartitionConfig::getCoreMinArea
()
const
{
86
return
m_core_minarea
;
87
}
88
89
}
// end SExtractor
CoreThresholdPartitionConfig.h
CoreThresholdPartitionStep.h
DetectionFrameConfig.h
MultiThresholdPartitionConfig.h
PartitionStepConfig.h
std::map::at
T at(T... args)
std::string
Elements::Exception
Euclid::Configuration::ConfigManager::registerDependency
void registerDependency()
SourceXtractor::ConfigManager::getInstance
static ConfigManager & getInstance(long id)
Euclid::Configuration::Configuration::declareDependency
void declareDependency()
Euclid::Configuration::Configuration::Configuration
Configuration(long manager_id)
Euclid::Configuration::Configuration::UserValues
std::map< std::string, boost::program_options::variable_value > UserValues
Euclid::Configuration::Configuration::getDependency
T & getDependency()
SourceXtractor::CoreThresholdPartitionConfig::m_core_minarea
int m_core_minarea
Definition
CoreThresholdPartitionConfig.h:48
SourceXtractor::CoreThresholdPartitionConfig::initialize
void initialize(const UserValues &args) override
Definition
CoreThresholdPartitionConfig.cpp:60
SourceXtractor::CoreThresholdPartitionConfig::CoreThresholdPartitionConfig
CoreThresholdPartitionConfig(long manager_id)
Definition
CoreThresholdPartitionConfig.cpp:43
SourceXtractor::CoreThresholdPartitionConfig::getCoreThreshold
const double & getCoreThreshold() const
Definition
CoreThresholdPartitionConfig.cpp:81
SourceXtractor::CoreThresholdPartitionConfig::getCoreMinArea
const int & getCoreMinArea() const
Definition
CoreThresholdPartitionConfig.cpp:85
SourceXtractor::CoreThresholdPartitionConfig::m_core_threshold
double m_core_threshold
Definition
CoreThresholdPartitionConfig.h:47
SourceXtractor::CoreThresholdPartitionConfig::getProgramOptions
std::map< std::string, OptionDescriptionList > getProgramOptions() override
Definition
CoreThresholdPartitionConfig.cpp:52
SourceXtractor::MultiThresholdPartitionConfig
Definition
MultiThresholdPartitionConfig.h:32
std::map::find
T find(T... args)
std::make_shared
T make_shared(T... args)
std::map
Euclid::Configuration
SourceXtractor
Definition
Aperture.h:30
SourceXtractor::CORE_MINAREA
static const std::string CORE_MINAREA
Definition
CoreThresholdPartitionConfig.cpp:40
SourceXtractor::CORE_THRESH_USE
static const std::string CORE_THRESH_USE
Definition
CoreThresholdPartitionConfig.cpp:41
SourceXtractor::CORE_THRESHOLD
static const std::string CORE_THRESHOLD
Definition
CoreThresholdPartitionConfig.cpp:39
boost::program_options
std::shared_ptr
Generated by
1.15.0