24 #include "cheetah/spsift/test/SpSiftTest.h" 32 SpSiftTest::SpSiftTest()
37 SpSiftTest::~SpSiftTest()
41 void SpSiftTest::SetUp()
45 void SpSiftTest::TearDown()
49 TEST_F(SpSiftTest, test_sift_dm)
51 typedef data::SpCcl<uint8_t>::BlocksType::value_type::element_type TimeFrequencyType;
56 data::SpCcl<uint8_t> cand_list;
58 ASSERT_EQ(cand_list.tf_blocks().size(),std::size_t(0));
61 typename Config::Dm dm(12.0 * pss::astrotypes::units::parsecs_per_cube_cm);
63 typename Config::MsecTimeType width(0.001 * boost::units::si::seconds);
65 data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType tstart(2.0 * boost::units::si::seconds);
69 for (idx=0; idx<10; ++idx)
71 data::SpCcl<uint8_t>::SpCandidateType candidate(dm, tstart, width, sigma, idx);
72 cand_list.push_back(candidate);
73 tstart += data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType(1.0*boost::units::si::seconds);
74 dm +=
typename Config::Dm(1.0 * pss::astrotypes::units::parsecs_per_cube_cm);
80 typename Config::Dm dm_thresh(17.0 * pss::astrotypes::units::parsecs_per_cube_cm);
81 typename Config::MsecTimeType width_thresh(0.025 * boost::units::si::seconds);
82 float sigma_threshold = 8.0;
83 config.dm_threshold(dm_thresh);
84 config.pulse_width_threshold(width_thresh);
85 config.sigma_threshold(sigma_threshold);
87 SpSift sifter(config);
91 ASSERT_EQ(cand_list.size(), 5U);
93 for (std::uint8_t ii = 0 ; ii < cand_list.size(); ++ii)
95 ASSERT_LE(dm_thresh.value() , cand_list[ii].dm().value());
99 TEST_F(SpSiftTest, test_sift_width)
101 typedef data::SpCcl<uint8_t>::BlocksType::value_type::element_type TimeFrequencyType;
106 data::SpCcl<uint8_t> cand_list;
108 ASSERT_EQ(cand_list.tf_blocks().size(),std::size_t(0));
111 typename Config::Dm dm(12.0 * pss::astrotypes::units::parsecs_per_cube_cm);
113 typename Config::MsecTimeType width(0.001 * boost::units::si::seconds);
115 data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType tstart(2.0 * boost::units::si::seconds);
119 for(idx=0; idx<10; ++idx)
121 data::SpCcl<uint8_t>::SpCandidateType candidate(dm, tstart, width, sigma, idx);
122 cand_list.push_back(candidate);
123 tstart += data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType(1.0*boost::units::si::seconds);
124 width += data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType(0.005 * boost::units::si::seconds);
130 typename Config::Dm dm_thresh(10.0 * pss::astrotypes::units::parsecs_per_cube_cm);
131 typename Config::MsecTimeType width_thresh(0.025 * boost::units::si::seconds);
132 float sigma_threshold = 8.0;
133 config.dm_threshold(dm_thresh);
134 config.pulse_width_threshold(width_thresh);
135 config.sigma_threshold(sigma_threshold);
137 SpSift sifter(config);
141 ASSERT_EQ(cand_list.size(), 5U);
143 for(std::uint8_t ii = 0; ii < cand_list.size(); ++ii)
145 ASSERT_GT(width_thresh, cand_list[ii].width());
150 TEST_F(SpSiftTest, test_sift_sigma)
152 typedef data::SpCcl<uint8_t>::BlocksType::value_type::element_type TimeFrequencyType;
157 data::SpCcl<uint8_t> cand_list;
159 ASSERT_EQ(cand_list.tf_blocks().size(),std::size_t(0));
162 typename Config::Dm dm(12.0 * pss::astrotypes::units::parsecs_per_cube_cm);
164 typename Config::MsecTimeType width(0.001 * boost::units::si::seconds);
166 data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType tstart(2.0 * boost::units::si::seconds);
170 for(idx=0; idx<10; ++idx)
172 data::SpCcl<uint8_t>::SpCandidateType candidate(dm, tstart, width, sigma, idx);
173 cand_list.push_back(candidate);
174 tstart += data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType(1.0*boost::units::si::seconds);
181 typename Config::Dm dm_thresh(10.0 * pss::astrotypes::units::parsecs_per_cube_cm);
182 typename Config::MsecTimeType width_thresh(0.025 * boost::units::si::seconds);
183 float sigma_threshold = 15.0;
184 config.dm_threshold(dm_thresh);
185 config.pulse_width_threshold(width_thresh);
186 config.sigma_threshold(sigma_threshold);
188 SpSift sifter(config);
192 ASSERT_EQ(cand_list.size(), 5U);
194 for (std::uint8_t ii = 0; ii < cand_list.size(); ++ii)
196 ASSERT_LE(sigma_threshold, (
float) cand_list[ii].sigma());
201 TEST_F(SpSiftTest, test_sift_many_candidates)
203 typedef data::SpCcl<uint8_t>::BlocksType::value_type::element_type TimeFrequencyType;
206 data::SpCcl<uint8_t> cand_list;
208 ASSERT_EQ(cand_list.tf_blocks().size(),std::size_t(0));
211 typename Config::Dm dm(12.0 * pss::astrotypes::units::parsecs_per_cube_cm);
213 typename Config::MsecTimeType width(0.001 * boost::units::si::seconds);
215 data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType tstart(2.0 * boost::units::si::seconds);
219 for(std::size_t idx=0; idx<100000; ++idx)
221 data::SpCcl<uint8_t>::SpCandidateType candidate(dm, tstart, width, sigma, idx);
222 cand_list.push_back(candidate);
223 tstart += data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType(1.0*boost::units::si::seconds);
230 typename Config::Dm dm_thresh(10.0 * pss::astrotypes::units::parsecs_per_cube_cm);
231 typename Config::MsecTimeType width_thresh(0.025 * boost::units::si::seconds);
232 float sigma_threshold = 15.0;
233 config.dm_threshold(dm_thresh);
234 config.pulse_width_threshold(width_thresh);
235 config.sigma_threshold(sigma_threshold);
236 config.maximum_candidates(50000);
238 SpSift sifter(config);
242 ASSERT_EQ(cand_list.size(), 50000U);
245 TEST_F(SpSiftTest, test_sift_many_candidates_0threshold)
247 typedef data::SpCcl<uint8_t>::BlocksType::value_type::element_type TimeFrequencyType;
250 data::SpCcl<uint8_t> cand_list;
252 ASSERT_EQ(cand_list.tf_blocks().size(),std::size_t(0));
255 typename Config::Dm dm(12.0 * pss::astrotypes::units::parsecs_per_cube_cm);
257 typename Config::MsecTimeType width(0.001 * boost::units::si::seconds);
259 data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType tstart(2.0 * boost::units::si::seconds);
263 for(std::size_t idx=0; idx<100000; ++idx)
265 data::SpCcl<uint8_t>::SpCandidateType candidate(dm, tstart, width, sigma, idx);
266 cand_list.push_back(candidate);
267 tstart += data::SpCcl<uint8_t>::SpCandidateType::MsecTimeType(1.0*boost::units::si::seconds);
274 typename Config::Dm dm_thresh(10.0 * pss::astrotypes::units::parsecs_per_cube_cm);
275 typename Config::MsecTimeType width_thresh(0.025 * boost::units::si::seconds);
276 float sigma_threshold = 0.0;
277 config.dm_threshold(dm_thresh);
278 config.pulse_width_threshold(width_thresh);
279 config.sigma_threshold(sigma_threshold);
280 config.maximum_candidates(0);
282 SpSift sifter(config);
286 ASSERT_EQ(cand_list.size(), 100000U);
Some limits and constants for FLDO.