Raptor 4.0.0-rc.1
A fast and space-efficient pre-filter
Loading...
Searching...
No Matches
shared.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2006-2026 Knut Reinert & Freie Universität Berlin
2// SPDX-FileCopyrightText: 2016-2026 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 bool const is_hibf = [&]()
44 {
46 return arguments.is_hibf;
47 else
48 return false;
49 }();
50
51 if (!is_hibf && !parser.is_option_set("window"))
52 arguments.window_size = arguments.shape.size();
53 else if (arguments.shape.size() > arguments.window_size)
54 throw sharg::parser_error{"The k-mer size cannot be bigger than the window size."};
55}
56
57} // namespace raptor
Provides raptor::build_arguments.
T from_chars(T... args)
T min(T... args)
Provides raptor::prepare_arguments.
Hide me