DP-HLS
 All Classes Namespaces Files Functions Variables Typedefs Macros Pages
solutions.h File Reference
#include <map>
#include <iostream>
#include <array>
#include <string>
#include <limits>
#include <fstream>
#include <iomanip>
#include <complex>
#include <set>

Go to the source code of this file.

Namespaces

 SolutionUtils
 
 SolutionUtils::Profile
 

Functions

template<int ALPHABET_SIZE>
float SolutionUtils::Profile::score_mult (const std::array< int, ALPHABET_SIZE > &query, const std::array< int, ALPHABET_SIZE > &reference, const std::array< std::array< float, ALPHABET_SIZE >, ALPHABET_SIZE > &A)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void profile_alignment_solution (std::vector< std::array< int, 5 >> query, std::vector< std::array< int, 5 >> reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, std::vector< char > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void global_linear_solution (std::string query, std::string reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS, int SOL_BANDWIDTH>
void fixed_banding_global_linear_solution (std::string query, std::string reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void global_affine_solution (std::string query, std::string reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< string, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void local_linear_solution (std::string query, std::string reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void local_affine_solution (std::string query, std::string reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< string, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void semi_global_linear_long_short_solution (std::string query, std::string reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void semi_global_linear_short_long_solution (std::string query, std::string reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void overlap_linear_prefix_suffix_solution (std::string query, std::string reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void overlap_linear_suffix_prefix_solution (std::string query, std::string reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void local_two_piece_affine_solution (std::string query, std::string reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< string, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void global_dtw_solution (std::vector< std::complex< float >> query, std::vector< std::complex< float >> reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< string, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void global_two_piece_affine_solution (std::string query, std::string reference, PENALTY_T &penalties, array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &score_mat, array< array< string, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &tb_mat, map< string, string > &alignments)
 
template<typename T , int M, int N>
void print_matrix (array< array< T, N >, M > &mat, string name, std::set< std::tuple< int, int, int >> incorrect_coordinates, int layer_k)
 
template<typename T , int M, int N>
void fprint_matrix (ofstream &file, array< array< T, N >, M > &mat, string name)
 
template<typename T , int M, int N>
void fprint_matrix (ofstream &file, array< array< T, N >, M > &mat, string query, string reference, string name)
 
template<typename T , int N>
void print_vector (array< T, N > &vec, string name)
 

Function Documentation

template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS, int SOL_BANDWIDTH>
void fixed_banding_global_linear_solution ( std::string  query,
std::string  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)
template<typename T , int M, int N>
void fprint_matrix ( ofstream &  file,
array< array< T, N >, M > &  mat,
string  name 
)
template<typename T , int M, int N>
void fprint_matrix ( ofstream &  file,
array< array< T, N >, M > &  mat,
string  query,
string  reference,
string  name 
)
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void global_affine_solution ( std::string  query,
std::string  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< string, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void global_dtw_solution ( std::vector< std::complex< float >>  query,
std::vector< std::complex< float >>  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< string, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void global_linear_solution ( std::string  query,
std::string  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void global_two_piece_affine_solution ( std::string  query,
std::string  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< string, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void local_affine_solution ( std::string  query,
std::string  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< string, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void local_linear_solution ( std::string  query,
std::string  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void local_two_piece_affine_solution ( std::string  query,
std::string  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< string, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void overlap_linear_prefix_suffix_solution ( std::string  query,
std::string  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)

Overlap case 1: query and ref are reads, align prefix of ref with suffix of query

template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void overlap_linear_suffix_prefix_solution ( std::string  query,
std::string  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)

Overlap case 2: query and ref are reads, align suffix of ref with prefix of query

template<typename T , int M, int N>
void print_matrix ( array< array< T, N >, M > &  mat,
string  name,
std::set< std::tuple< int, int, int >>  incorrect_coordinates,
int  layer_k 
)
template<typename T , int N>
void print_vector ( array< T, N > &  vec,
string  name 
)
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void profile_alignment_solution ( std::vector< std::array< int, 5 >>  query,
std::vector< std::array< int, 5 >>  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
std::vector< char > &  alignments 
)
template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void semi_global_linear_long_short_solution ( std::string  query,
std::string  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)

Semi-global case 1: aligning a long query sequence with a short reference sequence

template<typename PENALTY_T , int SOL_MAX_QUERY_LENGTH, int SOL_MAX_REFERENCE_LENGTH, int SOL_N_LAYERS>
void semi_global_linear_short_long_solution ( std::string  query,
std::string  reference,
PENALTY_T &  penalties,
array< array< array< float, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH >, SOL_N_LAYERS > &  score_mat,
array< array< char, SOL_MAX_REFERENCE_LENGTH >, SOL_MAX_QUERY_LENGTH > &  tb_mat,
map< string, string > &  alignments 
)

Semi-global case 2: aligning a short query sequence with a long query sequence