1#ifndef KAORI_DUAL_BARCODES_SINGLE_END_WITH_DIAGNOSTICS_HPP
2#define KAORI_DUAL_BARCODES_SINGLE_END_WITH_DIAGNOSTICS_HPP
25template<SeqLength max_size_,
int num_variable_>
38 const char* template_seq,
40 const std::vector<BarcodePool>& barcode_pools,
68 DualBarcodesSingleEnd<max_size_> my_dual_handler;
69 CombinatorialBarcodesSingleEnd<max_size_, num_variable_> my_combo_handler;
77 State(
typename DualBarcodesSingleEnd<max_size_>::State ds,
typename CombinatorialBarcodesSingleEnd<max_size_, num_variable_>::State cs) :
78 dual_state(std::move(ds)), combo_state(std::move(cs)) {}
83 typename DualBarcodesSingleEnd<max_size_>::State dual_state;
84 typename CombinatorialBarcodesSingleEnd<max_size_, num_variable_>::State combo_state;
90 State initialize()
const {
91 return State(my_dual_handler.initialize(), my_combo_handler.initialize());
94 void reduce(State& s) {
95 my_dual_handler.reduce(s.dual_state);
96 my_combo_handler.reduce(s.combo_state);
99 constexpr static bool use_names =
false;
108 void process(State& state,
const std::pair<const char*, const char*>& x)
const {
110 if (!my_dual_handler.process(state.dual_state, x)) {
111 my_combo_handler.process(state.combo_state, x);
125 return my_dual_handler.get_counts();
133 return my_combo_handler.get_combinations();
140 return my_dual_handler.get_total();
Process single-end combinatorial barcodes.
Process single-end dual barcodes.
Hash a combination of barcode indices.
Definition utils.hpp:286
Handler for dual barcodes with extra diagnostics.
Definition DualBarcodesSingleEndWithDiagnostics.hpp:26
DualBarcodesSingleEndWithDiagnostics(const char *template_seq, SeqLength template_length, const std::vector< BarcodePool > &barcode_pools, const typename DualBarcodesSingleEnd< max_size_ >::Options &options)
Definition DualBarcodesSingleEndWithDiagnostics.hpp:37
Count get_total() const
Definition DualBarcodesSingleEndWithDiagnostics.hpp:139
const std::unordered_map< std::array< BarcodeIndex, num_variable_ >, Count, CombinationHash< num_variable_ > > & get_combinations() const
Definition DualBarcodesSingleEndWithDiagnostics.hpp:132
const std::vector< Count > & get_counts() const
Definition DualBarcodesSingleEndWithDiagnostics.hpp:124
Namespace for the kaori barcode-matching library.
Definition BarcodePool.hpp:16
std::size_t SeqLength
Definition utils.hpp:37
unsigned long long Count
Definition utils.hpp:67
Optional parameters for CombinatorialBarcodeSingleEnd.
Definition CombinatorialBarcodesSingleEnd.hpp:37
bool use_first
Definition CombinatorialBarcodesSingleEnd.hpp:46
DuplicateAction duplicates
Definition CombinatorialBarcodesSingleEnd.hpp:56
SearchStrand strand
Definition CombinatorialBarcodesSingleEnd.hpp:51
int max_mismatches
Definition CombinatorialBarcodesSingleEnd.hpp:41
Optional parameters for DualBarcodeSingleEnd.
Definition DualBarcodesSingleEnd.hpp:36
int max_mismatches
Definition DualBarcodesSingleEnd.hpp:40
bool use_first
Definition DualBarcodesSingleEnd.hpp:45
SearchStrand strand
Definition DualBarcodesSingleEnd.hpp:50
Utilites for sequence matching.