Skip to content

Commit 9bb584c

Browse files
author
Daniel Cooke
committed
Relax restriction on active Measures for annotations
1 parent 2a96cb4 commit 9bb584c

File tree

5 files changed

+18
-9
lines changed

5 files changed

+18
-9
lines changed

src/core/csr/filters/conditional_threshold_filter.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ ConditionalThresholdVariantCallFilter::ConditionalThresholdVariantCallFilter(Fac
4343
, soft_ranges_ {}
4444
, chooser_ {std::move(chooser)}
4545
, unique_filter_keys_ {}
46+
, first_chooser_measure_index_ {}
4647
, num_chooser_measures_ {chooser_measures.size()}
4748
{
4849
measures_.shrink_to_fit();
@@ -60,6 +61,7 @@ ConditionalThresholdVariantCallFilter::ConditionalThresholdVariantCallFilter(Fac
6061
unique_filter_keys_.push_back(are_all_unique(filter_keys));
6162
k += p.soft.size();
6263
}
64+
first_chooser_measure_index_ = i;
6365
}
6466

6567
bool ConditionalThresholdVariantCallFilter::passes_all_hard_filters(const MeasureVector& measures) const
@@ -85,7 +87,9 @@ std::vector<std::string> ConditionalThresholdVariantCallFilter::get_failing_vcf_
8587

8688
std::size_t ConditionalThresholdVariantCallFilter::choose_filter(const MeasureVector& measures) const
8789
{
88-
const MeasureVector chooser_measures(std::prev(std::cend(measures), num_chooser_measures_), std::cend(measures));
90+
const auto first_chooser_measure_itr = std::next(std::cbegin(measures), first_chooser_measure_index_);
91+
const auto last_chooser_measure_itr = std::next(first_chooser_measure_itr, num_chooser_measures_);
92+
const MeasureVector chooser_measures {first_chooser_measure_itr, last_chooser_measure_itr};
8993
return chooser_(chooser_measures);
9094
}
9195

src/core/csr/filters/conditional_threshold_filter.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class ConditionalThresholdVariantCallFilter : public ThresholdVariantCallFilter
4747
std::vector<MeasureIndexRange> hard_ranges_, soft_ranges_;
4848
std::function<std::size_t(std::vector<Measure::ResultType>)> chooser_;
4949
std::vector<bool> unique_filter_keys_;
50-
std::size_t num_chooser_measures_;
50+
std::size_t first_chooser_measure_index_, num_chooser_measures_;
5151

5252
virtual bool passes_all_hard_filters(const MeasureVector& measures) const override;
5353
virtual bool passes_all_soft_filters(const MeasureVector& measures) const override;

src/core/csr/filters/random_forest_filter.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,17 +129,17 @@ RandomForestFilter::RandomForestFilter(FacetFactory facet_factory,
129129
, forest_paths_ {std::move(ranger_forests)}
130130
, chooser_ {std::move(chooser)}
131131
, forest_measure_info_ {}
132+
, first_chooser_measure_index_ {0}
132133
, num_chooser_measures_ {chooser_measures.size()}
133134
, options_ {std::move(options)}
134135
, threading_ {threading}
135136
, num_records_ {0}
136137
, data_buffer_ {}
137138
{
138139
forest_measure_info_.reserve(ranger_forests.size());
139-
std::size_t index {0};
140140
for (const auto& measures : forest_measures) {
141-
forest_measure_info_.push_back({index, measures.size()});
142-
index += measures.size();
141+
forest_measure_info_.push_back({first_chooser_measure_index_, measures.size()});
142+
first_chooser_measure_index_ += measures.size();
143143
}
144144
}
145145

@@ -185,7 +185,9 @@ Phred<double> RandomForestFilter::min_soft_call_quality() const noexcept
185185

186186
std::int8_t RandomForestFilter::choose_forest(const MeasureVector& measures) const
187187
{
188-
const MeasureVector chooser_measures(std::prev(std::cend(measures), num_chooser_measures_), std::cend(measures));
188+
const auto first_chooser_measure_itr = std::next(std::cbegin(measures), first_chooser_measure_index_);
189+
const auto last_chooser_measure_itr = std::next(first_chooser_measure_itr, num_chooser_measures_);
190+
const MeasureVector chooser_measures {first_chooser_measure_itr, last_chooser_measure_itr};
189191
return chooser_(chooser_measures);
190192
}
191193

src/core/csr/filters/random_forest_filter.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class RandomForestFilter : public DoublePassVariantCallFilter
8181
std::vector<std::unique_ptr<ranger::Forest>> forests_;
8282
std::function<std::int8_t(std::vector<Measure::ResultType>)> chooser_;
8383
std::vector<ForestMeasureInfo> forest_measure_info_;
84-
std::size_t num_chooser_measures_;
84+
std::size_t first_chooser_measure_index_, num_chooser_measures_;
8585
Options options_;
8686
ConcurrencyPolicy threading_;
8787

src/core/csr/filters/variant_call_filter.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include "utils/parallel_transform.hpp"
3131
#include "io/variant/vcf_writer.hpp"
3232
#include "io/variant/vcf_spec.hpp"
33+
#include "core/csr/measures/measure_factory.hpp"
3334

3435
namespace octopus { namespace csr {
3536

@@ -66,7 +67,7 @@ VariantCallFilter::VariantCallFilter(FacetFactory facet_factory,
6667
: measures_ {std::move(measures)}
6768
, debug_log_ {logging::get_debug_log()}
6869
, facet_factory_ {std::move(facet_factory)}
69-
, facet_names_ {get_all_requirements(measures_)}
70+
, facet_names_ {}
7071
, output_config_ {output_config}
7172
, duplicate_measures_ {}
7273
, workers_ {get_pool_size(threading)}
@@ -83,9 +84,11 @@ VariantCallFilter::VariantCallFilter(FacetFactory facet_factory,
8384
logging::WarningLogger warn_log {};
8485
for (const auto& annotation : output_config_.annotations) {
8586
if (!contains(measures_, annotation)) {
86-
stream(warn_log) << "The measure " << annotation << " is not active and will not be reported";
87+
measures_.push_back(make_measure(annotation));
8788
}
8889
}
90+
measures_.shrink_to_fit();
91+
facet_names_ = get_all_requirements(measures_);
8992
}
9093

9194
inline VcfHeader read_header(const VcfWriter& writer)

0 commit comments

Comments
 (0)