Skip to content

Commit a1262e2

Browse files
author
Daniel Cooke
committed
Use policy enum in get_called_alleles rather than bool switch
Also fixes a bug in NormalContamination and MedianSomaticMappingQuality resulting from trimming reference alleles.
1 parent f014fd4 commit a1262e2

14 files changed

+44
-27
lines changed

src/core/csr/measures/base_mismatch_count.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ Measure::ResultType BaseMismatchCount::do_evaluate(const VcfRecord& call, const
8282
result.reserve(samples.size());
8383
for (const auto& sample : samples) {
8484
std::vector<Allele> alleles; bool has_ref;
85-
std::tie(alleles, has_ref) = get_called_alleles(call, sample, true);
85+
std::tie(alleles, has_ref) = get_called_alleles(call, sample);
8686
int sample_result {0};
8787
if (!alleles.empty()) {
8888
const auto sample_allele_support = compute_allele_support(alleles, assignments, sample);

src/core/csr/measures/denovo_contamination.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ void sort_unique(Container& values)
6363

6464
auto get_denovo_alleles(const VcfRecord& denovo, const Trio& trio)
6565
{
66-
auto parent_alleles = concat(get_called_alleles(denovo, trio.mother(), true).first,
67-
get_called_alleles(denovo, trio.father(), true).first);
68-
auto child_alleles = get_called_alleles(denovo, trio.child(), true).first;
66+
auto parent_alleles = concat(get_called_alleles(denovo, trio.mother()).first,
67+
get_called_alleles(denovo, trio.father()).first);
68+
auto child_alleles = get_called_alleles(denovo, trio.child()).first;
6969
sort_unique(parent_alleles); sort_unique(child_alleles);
7070
std::vector<Allele> result {};
7171
result.reserve(child_alleles.size());

src/core/csr/measures/mapping_quality_divergence.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ Measure::ResultType MappingQualityDivergence::do_evaluate(const VcfRecord& call,
145145
boost::optional<int> sample_result {};
146146
if (call.is_heterozygous(sample)) {
147147
std::vector<Allele> alleles; bool has_ref;
148-
std::tie(alleles, has_ref) = get_called_alleles(call, sample, true);
148+
std::tie(alleles, has_ref) = get_called_alleles(call, sample);
149149
if (!alleles.empty()) {
150150
const auto sample_allele_support = compute_allele_support(alleles, assignments, sample);
151151
const auto mapping_qualities = extract_mapping_qualities(sample_allele_support);

src/core/csr/measures/median_base_quality.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ Measure::ResultType MedianBaseQuality::do_evaluate(const VcfRecord& call, const
7979
boost::optional<int> sample_result {};
8080
if (is_evaluable(call, sample)) {
8181
std::vector<Allele> alleles; bool has_ref;
82-
std::tie(alleles, has_ref) = get_called_alleles(call, sample, true);
82+
std::tie(alleles, has_ref) = get_called_alleles(call, sample);
8383
if (has_ref) alleles.erase(std::cbegin(alleles));
8484
if (!alleles.empty()) {
8585
const auto sample_allele_support = compute_allele_support(alleles, assignments, sample);

src/core/csr/measures/median_somatic_mapping_quality.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ std::unique_ptr<Measure> MedianSomaticMappingQuality::do_clone() const
3535

3636
namespace {
3737

38+
auto extract_called_alleles(const VcfRecord& call, const VcfRecord::SampleName& sample)
39+
{
40+
return get_called_alleles(call, sample, ReferencePadPolicy::trim_alt_alleles).first;
41+
}
42+
3843
template <typename Container>
3944
void sort_unique(Container& values)
4045
{
@@ -47,10 +52,10 @@ auto get_somatic_alleles(const VcfRecord& somatic, const std::vector<SampleName>
4752
{
4853
std::vector<Allele> somatic_sample_alleles {}, normal_sample_alleles {};
4954
for (const auto& sample : somatic_samples) {
50-
utils::append(get_called_alleles(somatic, sample, true).first, somatic_sample_alleles);
55+
utils::append(extract_called_alleles(somatic, sample), somatic_sample_alleles);
5156
}
5257
for (const auto& sample : normal_samples) {
53-
utils::append(get_called_alleles(somatic, sample, true).first, normal_sample_alleles);
58+
utils::append(extract_called_alleles(somatic, sample), normal_sample_alleles);
5459
}
5560
sort_unique(somatic_sample_alleles); sort_unique(normal_sample_alleles);
5661
std::vector<Allele> result {};

src/core/csr/measures/mismatch_count.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ Measure::ResultType MismatchCount::do_evaluate(const VcfRecord& call, const Face
5757
result.reserve(samples.size());
5858
for (const auto& sample : samples) {
5959
std::vector<Allele> alleles; bool has_ref;
60-
std::tie(alleles, has_ref) = get_called_alleles(call, sample, true);
60+
std::tie(alleles, has_ref) = get_called_alleles(call, sample);
6161
int sample_result {0};
6262
if (!alleles.empty()) {
6363
const auto sample_allele_support = compute_allele_support(alleles, assignments, sample);

src/core/csr/measures/normal_contamination.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ std::unique_ptr<Measure> NormalContamination::do_clone() const
3333

3434
namespace {
3535

36+
auto extract_called_alleles(const VcfRecord& call, const VcfRecord::SampleName& sample)
37+
{
38+
return get_called_alleles(call, sample, ReferencePadPolicy::trim_alt_alleles).first;
39+
}
40+
3641
template <typename Container>
3742
void sort_unique(Container& values)
3843
{
@@ -45,10 +50,10 @@ auto get_somatic_alleles(const VcfRecord& somatic, const std::vector<SampleName>
4550
{
4651
std::vector<Allele> somatic_sample_alleles {}, normal_sample_alleles {};
4752
for (const auto& sample : somatic_samples) {
48-
utils::append(get_called_alleles(somatic, sample, true).first, somatic_sample_alleles);
53+
utils::append(extract_called_alleles(somatic, sample), somatic_sample_alleles);
4954
}
5055
for (const auto& sample : normal_samples) {
51-
utils::append(get_called_alleles(somatic, sample, true).first, normal_sample_alleles);
56+
utils::append(extract_called_alleles(somatic, sample), normal_sample_alleles);
5257
}
5358
sort_unique(somatic_sample_alleles); sort_unique(normal_sample_alleles);
5459
std::vector<Allele> result {};

src/core/csr/measures/read_end_bias.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ Measure::ResultType ReadEndBias::do_evaluate(const VcfRecord& call, const FacetM
136136
const EndDefinition end_def {end_fraction_};
137137
for (const auto& sample : samples) {
138138
std::vector<Allele> alleles; bool has_ref;
139-
std::tie(alleles, has_ref) = get_called_alleles(call, sample, true);
139+
std::tie(alleles, has_ref) = get_called_alleles(call, sample);
140140
if (!alleles.empty()) {
141141
const auto allele_support = compute_allele_support(alleles, assignments, sample);
142142
result.push_back(calculate_max_tail_bias(allele_support, end_def));

src/core/csr/measures/read_side_bias.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ Measure::ResultType ReadSideBias::do_evaluate(const VcfRecord& call, const Facet
115115
result.reserve(samples.size());
116116
for (const auto& sample : samples) {
117117
std::vector<Allele> alleles; bool has_ref;
118-
std::tie(alleles, has_ref) = get_called_alleles(call, sample, true);
118+
std::tie(alleles, has_ref) = get_called_alleles(call, sample);
119119
if (!alleles.empty()) {
120120
const auto allele_support = compute_allele_support(alleles, assignments, sample);
121121
auto position_bias = calculate_position_bias(allele_support);

src/core/csr/measures/read_tail_bias.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ Measure::ResultType ReadTailBias::do_evaluate(const VcfRecord& call, const Facet
126126
const TailDefinition tail_def {tail_fraction_};
127127
for (const auto& sample : samples) {
128128
std::vector<Allele> alleles; bool has_ref;
129-
std::tie(alleles, has_ref) = get_called_alleles(call, sample, true);
129+
std::tie(alleles, has_ref) = get_called_alleles(call, sample);
130130
if (!alleles.empty()) {
131131
const auto allele_support = compute_allele_support(alleles, assignments, sample);
132132
result.push_back(calculate_max_tail_bias(allele_support, tail_def));

0 commit comments

Comments
 (0)