Raptor
A fast and space-efficient pre-filter
All Classes Namespaces Files Functions Variables Macros Pages Concepts
shared.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2006-2024 Knut Reinert & Freie Universität Berlin
2// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
3// SPDX-License-Identifier: BSD-3-Clause
4
10#pragma once
11
12#include <sharg/parser.hpp>
13
16
17namespace raptor
18{
19
20template <typename argument_t>
22void validate_shape(sharg::parser & parser, argument_t & arguments)
23{
24 if (parser.is_option_set("shape"))
25 {
26 if (parser.is_option_set("kmer"))
27 throw sharg::parser_error{"You cannot set both shape and k-mer arguments."};
28
29 uint64_t tmp{};
30
31 std::from_chars(arguments.shape_string.data(),
32 arguments.shape_string.data() + arguments.shape_string.size(),
33 tmp,
34 2);
35
36 arguments.shape = seqan3::shape{seqan3::bin_literal{tmp}};
37 }
38 else
39 {
40 arguments.shape = seqan3::shape{seqan3::ungapped{arguments.kmer_size}};
41 }
42
43 if (!parser.is_option_set("window"))
44 arguments.window_size = arguments.shape.size();
45 else if (arguments.shape.size() > arguments.window_size)
46 throw sharg::parser_error{"The k-mer size cannot be bigger than the window size."};
47}
48
49} // namespace raptor
Provides raptor::build_arguments.
T from_chars(T... args)
T min(T... args)
Provides raptor::prepare_arguments.
Hide me