SourceXtractorPlusPlus
0.21
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
SEImplementation
src
lib
Plugin
GrowthCurve
GrowthCurveResampledTask.cpp
Go to the documentation of this file.
1
18
#include <MathUtils/interpolation/interpolation.h>
19
20
#include "
SEImplementation/Plugin/GrowthCurve/GrowthCurve.h
"
21
#include "
SEImplementation/Plugin/GrowthCurve/GrowthCurveResampled.h
"
22
#include "
SEImplementation/Plugin/GrowthCurve/GrowthCurveResampledTask.h
"
23
24
using namespace
Euclid::MathUtils
;
25
using namespace
Euclid::NdArray
;
26
27
namespace
SourceXtractor
{
28
29
GrowthCurveResampledTask::GrowthCurveResampledTask
(
const
std::vector<unsigned>
&
instances
,
size_t
nsamples
)
30
: m_instances{
instances
}, m_nsamples{
nsamples
} {}
31
32
void
GrowthCurveResampledTask::computeProperties
(
SourceInterface
&
source
)
const
{
33
NdArray<DetectionImage::PixelType>
data{
m_instances
.
size
(),
m_nsamples
};
34
std::vector<double>
step_sizes
(
m_instances
.
size
());
35
36
for
(
size_t
i
= 0;
i
<
m_instances
.
size
(); ++
i
) {
37
auto
&
growth_curve_prop
=
source
.getProperty<
GrowthCurve
>(
m_instances
[
i
]);
38
auto
&
growth_curve
=
growth_curve_prop
.getCurve();
39
auto
step_size
=
growth_curve_prop
.getStepSize();
40
auto
new_step_size
=
growth_curve_prop
.getMax() /
m_nsamples
;
41
step_sizes
[
i
] =
new_step_size
;
42
43
std::vector<double>
steps
(
growth_curve
.size());
44
for
(
size_t
s = 0; s <
steps
.size(); ++s) {
45
steps
[s] = (s + 1) *
step_size
;
46
}
47
48
auto
interpolated
=
interpolate
(
steps
,
growth_curve
, InterpolationType::LINEAR,
true
);
49
for
(
size_t
s = 0; s <
m_nsamples
; ++s) {
50
data.at(
i
, s) = (*interpolated)((s + 1) *
new_step_size
);
51
}
52
}
53
source
.setProperty<
GrowthCurveResampled
>(
std::move
(data),
std::move
(
step_sizes
));
54
}
55
56
}
// end of namespace SourceXtractor
GrowthCurveResampledTask.h
GrowthCurveResampled.h
GrowthCurve.h
SourceXtractor::GrowthCurveResampledTask::m_instances
std::vector< unsigned > m_instances
Definition
GrowthCurveResampledTask.h:34
SourceXtractor::GrowthCurveResampledTask::computeProperties
void computeProperties(SourceInterface &source) const override
Computes one or more properties for the Source.
Definition
GrowthCurveResampledTask.cpp:32
SourceXtractor::GrowthCurveResampledTask::GrowthCurveResampledTask
GrowthCurveResampledTask(const std::vector< unsigned > &instances, size_t nsamples)
Definition
GrowthCurveResampledTask.cpp:29
SourceXtractor::GrowthCurveResampledTask::m_nsamples
size_t m_nsamples
Definition
GrowthCurveResampledTask.h:35
SourceXtractor::GrowthCurveResampled
Definition
GrowthCurveResampled.h:31
SourceXtractor::GrowthCurve
Definition
GrowthCurve.h:30
SourceXtractor::SourceInterface
The SourceInterface is an abstract "source" that has properties attached to it.
Definition
SourceInterface.h:46
std::function
std::move
T move(T... args)
Euclid::MathUtils
Euclid::MathUtils::interpolate
ELEMENTS_API std::unique_ptr< Function > interpolate(const std::vector< double > &x, const std::vector< double > &y, InterpolationType type, bool extrapolate=false)
Euclid::NdArray
SourceXtractor
Definition
Aperture.h:30
std::vector::size
T size(T... args)
Generated by
1.10.0