25 #include "cheetah/tdao/test_utils/TdaoTester.h" 26 #include "cheetah/data/TimeSeries.h" 27 #include "cheetah/utils/Architectures.h" 28 #include "cheetah/data/DedispersionMeasure.h" 29 #include "panda/Log.h" 31 #include <boost/units/quantity.hpp> 32 #include <boost/units/systems/si/codata_constants.hpp> 39 template<
typename ArchitectureTag,
typename ArchitectureCapability>
40 TdaoTesterTraits<ArchitectureTag,ArchitectureCapability>::TdaoTesterTraits()
45 template<
typename ArchitectureTag,
typename ArchitectureCapability>
46 tdao::Tdao& TdaoTesterTraits<ArchitectureTag,ArchitectureCapability>::api()
51 template<
typename ArchitectureTag,
typename ArchitectureCapability>
52 tdao::Config& TdaoTesterTraits<ArchitectureTag,ArchitectureCapability>::config()
57 template <
typename DeviceType,
typename DataType>
66 Signal(std::size_t bin,
float strength)
67 :bin(bin),strength(strength){}
73 std::vector<Signal> test_signals;
74 test_signals.push_back(Signal(50,10.0));
75 test_signals.push_back(Signal(123,100.0));
76 test_signals.push_back(Signal(3333,1000.0));
77 DataType input(0.001 * data::hz);
78 input.resize(10000,0.0);
81 std::size_t expected_candidates = 0;
82 for (
auto& signal: test_signals)
84 input[signal.bin] = signal.strength;
85 if (signal.strength > power_threshold)
86 ++expected_candidates;
90 data::DedispersionMeasureType<float> dm = 0.0f * data::parsecs_per_cube_cm;
91 data::AccelerationType acc = 30.0 * data::metres_per_second_squared;
92 api.
process(device,input,output,dm,acc,1);
94 float accel_fact = (acc.value() / (input.frequency_step().value() * boost::units::si::constants::codata::c)).value();
95 ASSERT_EQ(output.
size(),expected_candidates);
97 std::size_t cand_idx = 0;
98 for (
auto& signal : test_signals)
100 if (signal.strength > power_threshold)
102 ASSERT_NEAR(output[cand_idx].period().value()/1000.0, input.bin_to_period(signal.bin).value(), 0.00001);
103 ASSERT_NEAR(output[cand_idx].pdot().value(), input.bin_to_period(signal.bin).value() * accel_fact, 0.00001);
110 template <
typename TestTraits>
116 template <
typename TestTraits>
121 template<
typename TestTraits>
127 template<
typename TestTraits>
132 ALGORITHM_TYPED_TEST_P(
TdaoTester, test_execution)
141 REGISTER_TYPED_TEST_CASE_P(
TdaoTester, test_execution);
data::FourierFrequencyType maximum_frequency() const
The maximum frequency to search for candidates at.
std::size_t size() const
Retrieve the size of the underlying vector.
float significance_threshold() const
The significance threshold for candidates.
void process(panda::PoolResource< Arch > &resource, data::PowerSeries< Arch, T, Alloc > const &input, data::Ccl &output, data::DedispersionMeasureType< float >const &dm, data::AccelerationType const &acc, std::size_t nharmonics, Args &&... args)
Find significant peaks in a power series.
data::FourierFrequencyType minimum_frequency() const
The minumum frequency to search for candidates at.
Some limits and constants for FLDO.
Time Domain Spectral Peak Detection and Candidate List Output.