HIBF 1.0.0-rc.1
Loading...
Searching...
No Matches
seqan::hibf::layout::layout::diagnostic Struct Reference

A finding of seqan::hibf::layout::layout::validate. More...

#include <hibf/layout/layout.hpp>

Public Types

enum class  code : uint8_t {
  empty_layout , no_technical_bins , technical_bin_overflow , user_bin_out_of_range ,
  duplicate_user_bin , missing_user_bin , overlapping_technical_bins , top_level_max_bin_entry ,
  max_bin_without_ibf , duplicate_max_bin , invalid_max_bin , max_bin_exceeds_root ,
  missing_max_bin , technical_bin_exceeds_tmax , single_bin_ibf , unexpected_empty_bins ,
  empty_technical_bins
}
 The kind of finding. The errors are listed roughly in the order the checks are run. More...
 
enum class  severity : uint8_t { note , warning , error }
 How grave a finding is.
 

Public Attributes

std::optional< std::vector< size_t > > ibf {}
 The merged bins on the path to the affected IBF, empty for the Root-IBF. std::nullopt: no IBF.
 
severity level {}
 How grave the finding is.
 
std::string message {}
 A human-readable description.
 
std::optional< size_t > technical_bin {}
 The affected technical bin of ibf, if any.
 
std::optional< size_t > user_bin {}
 The affected user bin index, if any.
 
code what {}
 

Friends

template<typename stream_type , std::same_as< diagnostic > diagnostic_t>
requires std::derived_from<stream_type, std::ostream>
stream_type & operator<< (stream_type &stream, diagnostic_t const &object)
 Prints [HIBF LAYOUT <SEVERITY>] <message>, like std::format("{}", object).
 

Detailed Description

A finding of seqan::hibf::layout::layout::validate.

Errors describe layouts that cannot be used to build an HIBF. Warnings describe layouts that can be used, but probably do not match the intention. Notes are informational.

Member Enumeration Documentation

◆ code

enum class seqan::hibf::layout::layout::diagnostic::code : uint8_t
strong

The kind of finding. The errors are listed roughly in the order the checks are run.

Enumerator
empty_layout 

The layout contains no user bins.

no_technical_bins 

A user bin occupies zero technical bins.

technical_bin_overflow 

An IBF would have more than 2^64 - 64 technical bins.

user_bin_out_of_range 

A user bin index is not below config.number_of_user_bins.

duplicate_user_bin 

A user bin index occurs more than once.

missing_user_bin 

A user bin index is missing from the layout.

overlapping_technical_bins 

Within an IBF, a technical bin is used more than once.

top_level_max_bin_entry 

max_bins contains an entry for the top-level IBF.

max_bin_without_ibf 

max_bins contains an entry for an IBF that does not exist.

duplicate_max_bin 

max_bins contains more than one entry for an IBF.

invalid_max_bin 

A max bin is neither a merged bin nor a user bin's first technical bin.

max_bin_exceeds_root 

A max bin spans more than next_multiple_of_64(#TBs of the Root-IBF) TBs.

missing_max_bin 

max_bins contains no entry for a lower-level IBF.

technical_bin_exceeds_tmax 

An IBF, with its empty bins, exceeds next_multiple_of_64(tmax) TBs.

single_bin_ibf 

A lower-level IBF only contains a single user bin or merged bin.

unexpected_empty_bins 

An IBF does not end with the empty TBs config.empty_bin_fraction implies.

empty_technical_bins 

An IBF has empty technical bins between its used technical bins.

Member Data Documentation

◆ what

code seqan::hibf::layout::layout::diagnostic::what {}

The kind of finding.


The documentation for this struct was generated from the following file: