/** * @class illumina::interop::model::metrics::extraction_metric * @test Confirm version 2 of the metric can be written to and read from a stream * @test Confirm version 2 of the metric matches known binary file */ TYPED_TEST(extraction_metrics_test, test_read_write) { EXPECT_EQ(TypeParam::actual_metric_set.version(), TypeParam::VERSION); EXPECT_EQ(TypeParam::actual_metric_set.size(), TypeParam::expected_metric_set.size()); EXPECT_EQ(TypeParam::actual_metric_set.max_cycle(), TypeParam::expected_metric_set.max_cycle()); for(typename TypeParam::const_iterator itExpected=TypeParam::expected_metric_set.begin(), itActual = TypeParam::actual_metric_set.begin(); itExpected != TypeParam::expected_metric_set.end() && itActual != TypeParam::actual_metric_set.end(); itExpected++,itActual++) { EXPECT_EQ(itExpected->lane(), itActual->lane()); EXPECT_EQ(itExpected->tile(), itActual->tile()); EXPECT_EQ(itExpected->cycle(), itActual->cycle()); EXPECT_EQ(itExpected->dateTime(), itActual->dateTime()); std::time_t t = static_cast<std::time_t>(itActual->dateTime()); std::tm* tm = std::localtime(&t); EXPECT_NE(tm, static_cast<std::tm*>(0)); for(size_t i=0;i<extraction_metric::MAX_CHANNELS;i++) { EXPECT_EQ(itExpected->max_intensity(i), itActual->max_intensity(i)); EXPECT_NEAR(itExpected->focusScore(i), itActual->focusScore(i), 1e-7); } } }
/** * @class illumina::interop::model::metrics::tile_metric * @test Confirm version 2 of the metric can be written to and read from a stream * @test Confirm version 2 of the metric matches known binary file */ TYPED_TEST(tile_metrics_test, test_read_write) { EXPECT_EQ(TypeParam::actual_metric_set.version(), TypeParam::VERSION); EXPECT_EQ(TypeParam::actual_metrics.size(), TypeParam::expected_metrics.size()); const float tol = 1e-7f / 0.01f; for(typename TypeParam::const_iterator itExpected=TypeParam::expected_metrics.begin(), itActual = TypeParam::actual_metrics.begin(); itExpected != TypeParam::expected_metrics.end() && itActual != TypeParam::actual_metrics.end(); itExpected++,itActual++) { EXPECT_EQ(itExpected->lane(), itActual->lane()); EXPECT_EQ(itExpected->tile(), itActual->tile()); EXPECT_NEAR(itExpected->clusterDensity(), itActual->clusterDensity(), tol); EXPECT_NEAR(itExpected->clusterDensityPf(), itActual->clusterDensityPf(), tol); EXPECT_NEAR(itExpected->clusterCount(), itActual->clusterCount(), tol); EXPECT_NEAR(itExpected->clusterCountPf(), itActual->clusterCountPf(), tol); EXPECT_EQ(itExpected->read_metrics().size(), itActual->read_metrics().size()); for(typename TypeParam::metric_type::read_metric_vector::const_iterator itReadExpected = itExpected->read_metrics().begin(), itReadActual = itActual->read_metrics().begin(); itReadExpected != itExpected->read_metrics().end() && itReadActual != itActual->read_metrics().end(); itReadExpected++, itReadActual++) { EXPECT_EQ(itReadExpected->read(), itReadActual->read()); EXPECT_NEAR(itReadExpected->percent_aligned(), itReadActual->percent_aligned(), tol); EXPECT_NEAR(itReadExpected->percent_phasing(), itReadActual->percent_phasing(), tol); EXPECT_NEAR(itReadExpected->percent_prephasing(), itReadActual->percent_prephasing(), tol); } } }
/** * @class illumina::interop::model::metrics::corrected_intensity_metric * @test Confirm version 2 of the metric can be written to and read from a stream * @test Confirm version 3 of the metric can be written to and read from a stream * @test Confirm version 2 of the metric matches known binary file * @test Confirm version 3 of the metric matches known binary file */ TYPED_TEST(corrected_intensity_metrics_test, test_read_write) { EXPECT_EQ(TypeParam::actual_metric_set.version(), TypeParam::VERSION); EXPECT_EQ(TypeParam::actual_metrics.size(), TypeParam::expected_metrics.size()); EXPECT_EQ(TypeParam::actual_metric_set.max_cycle(), TypeParam::expected_metric_set.max_cycle()); for(typename TypeParam::const_iterator itExpected=TypeParam::expected_metrics.begin(), itActual = TypeParam::actual_metrics.begin(); itExpected != TypeParam::expected_metrics.end() && itActual != TypeParam::actual_metrics.end(); itExpected++,itActual++) { EXPECT_EQ(itExpected->lane(), itActual->lane()); EXPECT_EQ(itExpected->tile(), itActual->tile()); EXPECT_EQ(itExpected->cycle(), itActual->cycle()); if(TypeParam::VERSION < 3) { EXPECT_EQ(itExpected->averageCycleIntensity(), itActual->averageCycleIntensity()); } if(TypeParam::VERSION == 2) { if (!std::isnan(itExpected->signalToNoise()) || !std::isnan(itActual->signalToNoise())) EXPECT_NEAR(itExpected->signalToNoise(), itActual->signalToNoise(), 1e-7f); } for(ptrdiff_t i=-1;i<constants::NUM_OF_BASES;i++) EXPECT_EQ(itExpected->calledCounts(i), itActual->calledCounts(i)); for(size_t i=0;i<constants::NUM_OF_BASES;i++) { EXPECT_EQ(itExpected->correctedIntCalled(i), itActual->correctedIntCalled(i)); if(TypeParam::VERSION < 3) { EXPECT_EQ(itExpected->correctedIntAll(i), itActual->correctedIntAll(i)); } } } }
/** * @class illumina::interop::model::metrics::error_metric * @test Confirm version 3 of the metric can be written to and read from a stream * @test Confirm version 3 of the metric matches known binary file */ TYPED_TEST(error_metrics_test, test_read_write) { EXPECT_EQ(TypeParam::actual_metric_set.version(), TypeParam::VERSION); EXPECT_EQ(TypeParam::actual_metric_set.size(), TypeParam::expected_metric_set.size()); EXPECT_EQ(TypeParam::actual_metric_set.max_cycle(), TypeParam::expected_metric_set.max_cycle()); for(typename TypeParam::const_iterator itExpected=TypeParam::expected_metric_set.begin(), itActual = TypeParam::actual_metric_set.begin(); itExpected != TypeParam::expected_metric_set.end() && itActual != TypeParam::actual_metric_set.end(); itExpected++,itActual++) { EXPECT_EQ(itExpected->lane(), itActual->lane()); EXPECT_EQ(itExpected->tile(), itActual->tile()); EXPECT_EQ(itExpected->cycle(), itActual->cycle()); EXPECT_EQ(itExpected->mismatch_count(), itActual->mismatch_count()); EXPECT_NEAR(itExpected->errorRate(), itActual->errorRate(), 1e-7f); for(ptrdiff_t i=0;i<static_cast<ptrdiff_t>(itExpected->mismatch_count());i++) EXPECT_EQ(itExpected->mismatch_cluster_count(i), itActual->mismatch_cluster_count(i)); } }