12#include <hibf/config.hpp>
13#include <hibf/layout/data_store.hpp>
14#include <hibf/misc/subtract_empty_bins.hpp>
17namespace seqan::hibf::layout
32 size_t num_user_bins{};
34 size_t num_technical_bins{};
37 struct maximum_bin_tracker
42 void update_max(
size_t const new_id,
size_t const new_size)
44 if (new_size > max_size)
69 data{
std::addressof(data_)},
70 num_user_bins{data->positions.size()},
72 : needed_technical_bins(num_user_bins)}
82 [[nodiscard]]
size_t needed_technical_bins(
size_t const requested_num_ub)
const;
87 [[nodiscard]]
size_t max_merge_levels(
size_t const num_ubs_in_merge)
const;
139 void backtrack_merged_bin(
size_t trace_j,
142 maximum_bin_tracker & max_tracker,
143 bool is_first_row =
false);
145 void backtrack_split_bin(
size_t trace_j,
146 size_t const number_of_bins,
148 maximum_bin_tracker & max_tracker);
153 data_store initialise_libf_data(
size_t const trace_j)
const;
155 void process_merged_bin(
data_store & libf_data,
size_t const bin_id)
const;
157 void update_libf_data(
data_store & libf_data,
size_t const bin_id)
const;
159 size_t add_lower_level(
data_store & libf_data)
const;
Hierarchical binning algorithm.
Definition hierarchical_binning.hpp:24
size_t execute()
Executes the hierarchical binning algorithm and layouts user bins into technical bins.
hierarchical_binning()=default
Defaulted.
hierarchical_binning & operator=(hierarchical_binning &&)=default
Defaulted.
hierarchical_binning(hierarchical_binning const &)=delete
Deleted. Would modify same data.
hierarchical_binning(data_store &data_, seqan::hibf::config const &config_)
The constructor from user bin names, their kmer counts and a config.
Definition hierarchical_binning.hpp:67
hierarchical_binning(hierarchical_binning &&)=default
Defaulted.
~hierarchical_binning()=default
Defaulted.
hierarchical_binning & operator=(hierarchical_binning const &)=delete
Deleted. Would modify same data.
constexpr size_t subtract_empty_bins(size_t const tmax, double const fraction) noexcept
Returns the number of technical bins available for use.
Definition subtract_empty_bins.hpp:21
The configuration used to build an (H)IBF.
Definition config.hpp:75
Contains information used for the layout.
Definition data_store.hpp:25