1 #ifndef LOCARNA_ALIGNER_PARAMS_HH
2 #define LOCARNA_ALIGNER_PARAMS_HH
8 #include "scoring_fwd.hh"
9 #include "named_arguments.hh"
10 #include "free_endgaps.hh"
18 template <
typename Tuple1,
typename Tuple2>
21 template <
typename... Ts,
typename... Us>
22 struct tuple_cat_type<std::tuple<Ts...>,std::tuple<Us...>> {
using type = std::tuple<Ts...,Us...>;};
24 template <
typename Tuple1,
typename Tuple2>
51 DEFINE_NAMED_ARG_FEATURE(seqA,
const Sequence *);
52 DEFINE_NAMED_ARG_FEATURE(seqB,
const Sequence *);
53 DEFINE_NAMED_ARG_FEATURE(scoring,
const Scoring *);
56 DEFINE_NAMED_ARG_DEFAULT_FEATURE(no_lonely_pairs,
bool,
false);
57 DEFINE_NAMED_ARG_DEFAULT_FEATURE(struct_local,
bool,
false);
58 DEFINE_NAMED_ARG_DEFAULT_FEATURE(sequ_local,
bool,
false);
60 DEFINE_NAMED_ARG_DEFAULT_FEATURE(
DO_TRACE,
bool,
true);
61 DEFINE_NAMED_ARG_DEFAULT_FEATURE(max_diff_am,
int, -1);
62 DEFINE_NAMED_ARG_DEFAULT_FEATURE(max_diff_at_am,
int, -1);
63 DEFINE_NAMED_ARG_DEFAULT_FEATURE(stacking,
bool,
false);
64 DEFINE_NAMED_ARG_DEFAULT_FEATURE(constraints,
const AnchorConstraints *,
nullptr);
66 using valid_args = std::tuple<seqA,
83 template <
class... Args>
88 "Invalid type in named arguments pack." );
89 construct(std::make_tuple(argpack...));
95 template <
class ArgTuple>
97 construct(
const ArgTuple &args) {
100 seqA_ = get_named_arg<seqA>(args);
101 seqB_ = get_named_arg<seqB>(args);
102 scoring_ = get_named_arg<scoring>(args);
103 trace_controller_ = get_named_arg<trace_controller>(args);
106 no_lonely_pairs_ = get_named_arg_opt<no_lonely_pairs>(args);
107 struct_local_ = get_named_arg_opt<struct_local>(args);
108 sequ_local_ = get_named_arg_opt<sequ_local>(args);
109 free_endgaps_ = get_named_arg_opt<free_endgaps>(args);
110 DO_TRACE_ = get_named_arg_opt<DO_TRACE>(args);
111 max_diff_am_ = get_named_arg_opt<max_diff_am>(args);
112 max_diff_at_am_ = get_named_arg_opt<max_diff_at_am>(args);
113 stacking_ = get_named_arg_opt<stacking>(args);
114 constraints_ = get_named_arg_opt<constraints>(args);
121 template <
typename T>
124 using pf_score_t = T;
126 DEFINE_NAMED_ARG_DEFAULT_FEATURE(min_am_prob,
double, 0);
127 DEFINE_NAMED_ARG_DEFAULT_FEATURE(min_bm_prob,
double, 0);
128 DEFINE_NAMED_ARG_DEFAULT_FEATURE(pf_scale, pf_score_t, 1.0);
130 using valid_args = tuple_cat_type_t<
131 AlignerParams::valid_args,
132 std::tuple<min_am_prob,
139 template <
class... Args>
143 std::tuple<Args...> ,
144 tuple_cat_type_t<valid_args, AlignerParams::valid_args>
146 "Invalid type in named arguments pack." );
148 auto args = std::make_tuple(argpack...);
150 AlignerParams::construct(args);
152 min_am_prob_ = get_named_arg_opt<min_am_prob>(args);
153 min_bm_prob_ = get_named_arg_opt<min_bm_prob>(args);
154 pf_scale_ = get_named_arg_opt<pf_scale>(args);
166 using valid_args = tuple_cat_type_t<
167 AlignerParams::valid_args,
168 std::tuple<AlignerNParams::sparsification_mapperA,
169 AlignerNParams::sparsification_mapperB>>;
174 template <
class... Args>
178 std::tuple<Args...> ,
179 tuple_cat_type_t<valid_args, AlignerParams::valid_args>
181 "Invalid type in named arguments pack." );
183 auto args = std::make_tuple(argpack...);
185 AlignerParams::construct(args);
186 sparsification_mapperA_ = get_named_arg<sparsification_mapperA>(args);
187 sparsification_mapperB_ = get_named_arg<sparsification_mapperB>(args);
parameters for AlignerN
Definition: aligner_params.hh:161
AlignerNParams(Args... argpack)
Definition: aligner_params.hh:175
parameters for AlignerP
Definition: aligner_params.hh:122
AlignerPParams(Args... argpack)
Definition: aligner_params.hh:140
Computes partition function of alignment, arc match and base match probabilities.
Definition: aligner_p.hh:54
Parameter for alignment by Aligner.
Definition: aligner_params.hh:49
AlignerParams(Args... argpack)
Definition: aligner_params.hh:84
Represents anchor constraints between two sequences.
Definition: anchor_constraints.hh:66
Maintains the relevant arc matches and their scores.
Definition: arc_matches.hh:116
Description of free end gaps.
Definition: free_endgaps.hh:15
Provides methods for the scoring of alignments.
Definition: scoring.hh:271
"Sequence View" of multiple alignment as array of column vectors
Definition: sequence.hh:17
Represents the mapping for sparsification.
Definition: sparsification_mapper.hh:30
Controls the matrix cells valid for traces.
Definition: trace_controller.hh:200
const bool DO_TRACE
Switch on/off trace back.
Definition: locarna.cc:52
Definition: aligner.cc:15
type of two concattenated tuples
Definition: aligner_params.hh:19
Definition: named_arguments.hh:56