1 #ifndef GENESIS_POPULATION_FILTER_VARIANT_FILTER_POSITIONAL_H_
2 #define GENESIS_POPULATION_FILTER_VARIANT_FILTER_POSITIONAL_H_
50 namespace population {
68 bool complement =
false
70 return [region, complement](
Variant const& variant ){
71 return complement ^
is_covered( region, variant );
86 std::shared_ptr<GenomeRegionList> regions,
87 bool complement =
false
90 throw std::invalid_argument(
91 "Can only used make_variant_filter_by_region_excluding() "
92 "with a valid shared pointer to a GenomeRegionList."
95 return [regions, complement](
Variant const& variant ){
96 return complement ^
is_covered( *regions, variant );
104 std::shared_ptr<GenomeLocusSet> loci,
105 bool complement =
false
108 throw std::invalid_argument(
109 "Can only used make_variant_filter_by_region_excluding() "
110 "with a valid shared pointer to a GenomeLocusSet."
113 return [loci, complement](
Variant const& variant ){
114 return complement ^
is_covered( *loci, variant );
141 bool complement =
false
144 throw std::invalid_argument(
145 "Can only use VariantFilterTag::kMaskedPosition or VariantFilterTag::kMaskedRegion "
146 "as tags for make_variant_filter_by_region_tagging()."
149 return [region, tag, complement](
Variant& variant )
151 if( ! variant.status.passing() ) {
154 auto const keep = complement ^
is_covered( region, variant );
156 variant.status.set( tag );
178 std::shared_ptr<GenomeRegionList> regions,
180 bool complement =
false
183 throw std::invalid_argument(
184 "Can only use VariantFilterTag::kMaskedPosition or VariantFilterTag::kMaskedRegion "
185 "as tags for make_variant_filter_by_region_tagging()."
189 throw std::invalid_argument(
190 "Can only used make_variant_filter_by_region_tagging() "
191 "with a valid shared pointer to a GenomeRegionList."
194 return [regions, tag, complement](
Variant& variant )
196 if( ! variant.status.passing() ) {
199 auto const keep = complement ^
is_covered( *regions, variant );
201 variant.status.set( tag );
210 std::shared_ptr<GenomeLocusSet> loci,
212 bool complement =
false
215 throw std::invalid_argument(
216 "Can only use VariantFilterTag::kMaskedPosition or VariantFilterTag::kMaskedRegion "
217 "as tags for make_variant_filter_by_region_tagging()."
221 throw std::invalid_argument(
222 "Can only used make_variant_filter_by_region_tagging() "
223 "with a valid shared pointer to a GenomeLocusSet."
226 return [loci, tag, complement](
Variant& variant )
228 if( ! variant.status.passing() ) {
231 auto const keep = complement ^
is_covered( *loci, variant );
233 variant.status.set( tag );
241 #endif // include guard