|
cuDDL
|
Namespaces | |
| namespace | detail |
Classes | |
| struct | database |
| Fully decoded A48 reference database. More... | |
| struct | database_metadata |
| Per-database construction metadata decoded from the A48 file-level header. More... | |
| struct | oracle_result |
| Independent host oracle for one query over a decoded reference database. More... | |
| struct | record |
| One decoded DDL score row plus its stable record identity and construction metadata. More... | |
| struct | record_metadata |
| Metadata attached to one decoded A48 record. More... | |
| struct | row_summary |
| Exact bucket-classification counts for one decoded row pair. More... | |
Functions | |
| std::optional< uint64_t > | decode_a48_token (std::string_view token) |
| Decodes one A48 (base-64, ASCII-offset-48) token to its integer value. | |
| std::string | encode_a48_token (uint64_t value) |
| Encodes an integer as an A48 (base-64, ASCII-offset-48) token. | |
| uint16_t | promote_score (uint16_t loaded, int32_t offset, uint8_t exponent_bits) |
| Reconstructs one absolute 16-bit bucket maxima from an A48-decoded value. | |
| std::vector< std::string_view > | split_fields (std::string_view text, char separator, bool keep_trailing_empty=false) |
Splits text on separator. | |
| bool | is_record_header (std::string_view key) |
True when key is a record-level header (part of a record block) rather than a file-level header that precedes every record. | |
| Result< record_metadata > | parse_record_headers (std::string_view block) |
Parses a record header block (one "#key\tvalue" per line) into record_metadata. | |
| Result< std::vector< uint16_t > > | decode_a48_row (std::string_view row, record_metadata const &metadata, uint8_t exponent_bits) |
| Decodes one A48 data row into absolute 16-bit bucket scores. | |
| Result< database > | decode_a48_tsv (std::string_view input) |
| Decodes an uncompressed A48-encoded DDL TSV into score rows and metadata. | |
| Result< database > | decode_a48_tsv_parallel (std::string_view input, unsigned requested_threads=std::thread::hardware_concurrency()) |
| Multithreaded variant of decode_a48_tsv. | |
| oracle_result | exhaustive_oracle (std::vector< uint16_t > const &rows, std::vector< uint16_t > const &query, size_t bucket_count, uint32_t minimum_matches) |
| Exact match counts and pair summaries for one flat query row. | |
| oracle_result | exhaustive_oracle (std::vector< std::vector< uint16_t > > const &rows, std::vector< uint16_t > const &query, uint32_t minimum_matches) |
| Convenience overload over decoded records instead of one flat score array. | |
|
inline |
Decodes one A48 data row into absolute 16-bit bucket scores.
Definition at line 264 of file a48.hpp.
|
inline |
Decodes one A48 (base-64, ASCII-offset-48) token to its integer value.
Returns std::nullopt when a character is outside the A48 alphabet (ASCII 48..111), i.e. the token is malformed.
Definition at line 84 of file a48.hpp.
Decodes an uncompressed A48-encoded DDL TSV into score rows and metadata.
The decoder is intentionally strict about the structural invariants that would otherwise yield silent garbage: A48 alphabet violations, an omitted #len disagreeing with the data row, a bucket count that changes between records, an absent #exponent on a relative-encoded file, and records without any bucket values are all reported as malformed input. It does not, however, depend on the large official RefSeq asset, so a small deterministic fixture can exercise the code paths in unit tests.
Definition at line 292 of file a48.hpp.
|
inline |
Multithreaded variant of decode_a48_tsv.
One pass discovers file-level metadata, record header blocks, and data-row spans. The first record is decoded synchronously to establish the bucket width; the remaining independent records are decoded by a fixed pool and written directly to their ordinal slots, so order and strict validation are identical to the single-threaded decoder.
requested_threads defaults to std::thread::hardware_concurrency().
One undecoded record: its header block, data row, and file ordinal.
Definition at line 435 of file a48.hpp.
|
inline |
Encodes an integer as an A48 (base-64, ASCII-offset-48) token.
Definition at line 100 of file a48.hpp.
|
inline |
Convenience overload over decoded records instead of one flat score array.
Definition at line 718 of file a48.hpp.
|
inline |
Exact match counts and pair summaries for one flat query row.
Definition at line 680 of file a48.hpp.
|
inline |
True when key is a record-level header (part of a record block) rather than a file-level header that precedes every record.
Definition at line 170 of file a48.hpp.
|
inline |
Parses a record header block (one "#key\tvalue" per line) into record_metadata.
Definition at line 177 of file a48.hpp.
|
inline |
Reconstructs one absolute 16-bit bucket maxima from an A48-decoded value.
Matches BBTools' DynamicDemiLog.fromArray: when offset is >= 0 the stored value is relative to the record's global NLZ and must be promoted back into the full 16-bit space; when offset is -1 the stored value is already an absolute score. exponent_bits selects the split between the exponent (NLZ tier) and mantissa fields.
Definition at line 119 of file a48.hpp.
|
inline |
Splits text on separator.
With keep_trailing_empty the split is exactly BBTools' LineParser1 term layout: a line ending in a separator produces one final empty field, which parseLongA48 decodes as zero. Header parsing drops that field instead (a trailing empty value is not a distinct header).
Definition at line 136 of file a48.hpp.