Skip to content
This repository has been archived by the owner on Dec 16, 2022. It is now read-only.

Commit

Permalink
Fixes #245
Browse files Browse the repository at this point in the history
  • Loading branch information
jmthibault79 committed Sep 24, 2014
1 parent 8ab3965 commit c70e3b7
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
12 changes: 12 additions & 0 deletions gamgee/individual_field_value.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "utils/hts_memory.h"
#include "utils/utils.h"
#include "utils/variant_field_type.h"
#include "missing.h"

#include "htslib/vcf.h"

Expand Down Expand Up @@ -157,6 +158,17 @@ class IndividualFieldValue {
VALUE_TYPE front() const { return operator[](0); } ///< @brief convenience function to access the first element
VALUE_TYPE back() const { return operator[](m_format_ptr->n - 1); } ///< @brief convenience function to access the last element

/**
* @brief returns true if all of the values are missing
*/
bool missing() const {
for (const auto value : *this)
// use qualifier to avoid recursion
if (!gamgee::missing(value))
return false;
return true;
}

private:
std::shared_ptr<bcf1_t> m_body;
const bcf_fmt_t* m_format_ptr;
Expand Down
17 changes: 17 additions & 0 deletions test/variant_reader_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -638,8 +638,13 @@ BOOST_AUTO_TEST_CASE( single_variant_reader_missing_data )
for (const auto& record : SingleVariantReader{"testdata/test_variants_missing_data.vcf"}){ // include all 11 samples
BOOST_CHECK_EQUAL(record.n_samples(), 11u);
const auto gt_for_all_samples = record.genotypes();
const auto ad_for_all_samples = record.integer_individual_field("AD");
const auto gq_for_all_samples = record.integer_individual_field("GQ");
const auto pl_for_all_samples = record.integer_individual_field("PL");

for (const auto& gt_for_single_sample: gt_for_all_samples) {
BOOST_CHECK(missing(gt_for_single_sample));
BOOST_CHECK(gt_for_single_sample.missing());
BOOST_CHECK_EQUAL(gt_for_single_sample.size(), 2u);
BOOST_CHECK(missing(gt_for_single_sample.allele_string(0)));
BOOST_CHECK(missing(gt_for_single_sample.allele_string(1)));
Expand All @@ -648,6 +653,18 @@ BOOST_AUTO_TEST_CASE( single_variant_reader_missing_data )
BOOST_CHECK(missing(gt_for_single_sample[0]));
BOOST_CHECK(missing(gt_for_single_sample[1]));
}
for (const auto& ad_for_single_sample: ad_for_all_samples) {
BOOST_CHECK(missing(ad_for_single_sample));
BOOST_CHECK(ad_for_single_sample.missing());
}
for (const auto& gq_for_single_sample: gq_for_all_samples) {
BOOST_CHECK(missing(gq_for_single_sample));
BOOST_CHECK(gq_for_single_sample.missing());
}
for (const auto& pl_for_single_sample: pl_for_all_samples) {
BOOST_CHECK(missing(pl_for_single_sample));
BOOST_CHECK(pl_for_single_sample.missing());
}
}
}

Expand Down

0 comments on commit c70e3b7

Please sign in to comment.