Skip to content
This repository has been archived by the owner on Jan 31, 2020. It is now read-only.

Commit

Permalink
print MAF=0 instead of NaN in vcf-report
Browse files Browse the repository at this point in the history
when there are no samples with data.
  • Loading branch information
Travis Abbott committed Feb 13, 2015
1 parent 41e0417 commit cf1c34d
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 4 deletions.
20 changes: 17 additions & 3 deletions src/lib/metrics/Metrics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,18 @@ void EntryMetrics::identifyNovelAlleles() {

double EntryMetrics::minorAlleleFrequency() const {
if(!_allelicDistribution.empty()) {
uint32_t totalAlleles = accumulate(_allelicDistribution.begin(), _allelicDistribution.end(), 0);
return (double) *min_element(_allelicDistribution.begin(), _allelicDistribution.end(), minorAlleleSort) / totalAlleles;

// this is iterator guaranteed to be valid since _allelicDistribution cannot be empty
auto minorAlleleIter = min_element(
_allelicDistribution.begin(), _allelicDistribution.end(),
minorAlleleSort);

auto num = *minorAlleleIter;
auto totalAlleles = accumulate(_allelicDistribution.begin(), _allelicDistribution.end(), 0);
if (num == 0 || totalAlleles == 0)
return 0;

return double(num)/totalAlleles;
}
else {
throw runtime_error("Unable to calculate minorAlleleFrequency if the allelic distribution is empty");
Expand All @@ -217,7 +227,11 @@ const std::vector<double> EntryMetrics::alleleFrequencies() const {
uint32_t totalAlleles = accumulate(_allelicDistribution.begin(), _allelicDistribution.end(), 0);
std::vector<double> frequencies;
for(auto allele = _allelicDistribution.begin(); allele != _allelicDistribution.end(); ++allele) {
frequencies.push_back((double) *allele / totalAlleles);
double value = 0.0;
if (totalAlleles != 0) {
value = (double) *allele / totalAlleles;
}
frequencies.push_back(value);
}
return frequencies;
}
Expand Down
17 changes: 16 additions & 1 deletion test/lib/metrics/TestMetrics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,19 @@ namespace {
"0/1:DIE\t"
"0/1:DIE\t"

//,
,
// ENTRY 4
"2\t3500\t.\tA\tG,C,T\t.\t.\t.\tGT:FT\t"
"0/3:DIE\t"
"0/0:DIE\t"
"0/0:DIE\t"
"0/0:DIE\t"

"0/0:DIE\t"
"0/0:DIE\t"
"0/0:DIE\t"
"0/0:DIE\t"


};
}
Expand Down Expand Up @@ -240,6 +251,10 @@ TEST_F(TestMetrics, minorAlleleFrequency) {
ASSERT_NEAR(5.0/18.0, _metrics[0].minorAlleleFrequency(), 1e-14);
}

TEST_F(TestMetrics, allHomRef) {
ASSERT_EQ(0.0, _metrics[3].minorAlleleFrequency());
}

// The next test probably warrants an explanation.
//
// The test is parameterized by the reference allele to use.
Expand Down

0 comments on commit cf1c34d

Please sign in to comment.