kaori
A C++ library for barcode extraction and matching
|
Search against known barcode sequences with segmented mismatches. More...
#include <BarcodeSearch.hpp>
Classes | |
struct | Options |
Optional parameters for a SegmentedBarcodeSearch . More... | |
struct | State |
State of the search. More... | |
Public Member Functions | |
SegmentedBarcodeSearch ()=default | |
SegmentedBarcodeSearch (const BarcodePool &barcode_pool, std::array< SeqLength, num_segments_ > segments, const Options &options) | |
State | initialize () const |
void | reduce (State &state) |
void | search (const std::string &search_seq, State &state) const |
void | search (const std::string &search_seq, State &state, std::array< int, num_segments_ > allowed_mismatches) const |
Search against known barcode sequences with segmented mismatches.
Given an input sequence, this class performs exact and mismatch-aware searches for known sequences with "segmented" mismatches. Specifically, we split the sequence into segments whereby the number of mismatches in each segment is limited - see SegmentedMismatches
for details. We use caching to avoid redundant work when a mismatching sequence has been previously encountered.
num_segments_ | Number of segments to consider. |
|
default |
Default constructor. This is only provided for composition purposes; methods of this class should only be called on properly constructed instance.
|
inline |
barcode_pool | Pool of barcode sequences. |
segments | Size of each segment. All values should be positive and their sum should be equal to the barcode length in barcode_pool . |
options | Optional parameters. |
|
inline |
|
inline |
Incorporate the mismatch cache from state
into the cache for this SegmentedBarcodeSEarch
instance. This enables regular synchronization of the cache (and its related search optimizations) across threads.
state | A state object generated by initialize() . Typically this has already been used in search() . |
|
inline |
Search the known sequences in the barcode pool against an input sequence. The number of allowed mismatches in each segment is equal to the Options::max_mismatches
specified in the constructor.
search_seq | The input sequence to use for searching. This is expected to have the same length as the known sequences. |
state | A state object generated by initialize() . On return, state is filled with the details of the best-matching barcode sequence, if any exists. |
|
inline |
Search the known sequences in the barcode pool for an input sequence with a user-supplied number of allowed mismatches in each segment. It is expected that each element of allowed_mismatches
is no greater than the corresponding element of Options::max_mismatches
specified in the constructor. Lower values can improve efficiency in situations where some mismatches have already been "used up", e.g., by matching the template sequence in ScanTemplate
.
search_seq | The input sequence to use for searching. This is expected to have the same length as the known sequences. |
state | A state object generated by initialize() . On return, state is filled with the details of the best-matching barcode sequence, if any exists. |
allowed_mismatches | Allowed number of mismatches in each segment. Each value should not be greater than the corresponding value of Options::max_mismatches specified in the constructor. |