// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

#include <RcppThread.h>
#include <Rcpp.h>

using namespace Rcpp;

#ifdef RCPP_USE_GLOBAL_ROSTREAM
Rcpp::Rostream<true>&  Rcpp::Rcout = Rcpp::Rcpp_cout_get();
Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
#endif

// add_multi_cpp
Rcpp::NumericMatrix add_multi_cpp(const std::vector<std::string>& seqs, const int k, const std::vector<std::string>& alph);
RcppExport SEXP _universalmotif_add_multi_cpp(SEXP seqsSEXP, SEXP kSEXP, SEXP alphSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type seqs(seqsSEXP);
    Rcpp::traits::input_parameter< const int >::type k(kSEXP);
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type alph(alphSEXP);
    rcpp_result_gen = Rcpp::wrap(add_multi_cpp(seqs, k, alph));
    return rcpp_result_gen;
END_RCPP
}
// get_alphabet_cpp
std::string get_alphabet_cpp(const std::string& x);
RcppExport SEXP _universalmotif_get_alphabet_cpp(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(get_alphabet_cpp(x));
    return rcpp_result_gen;
END_RCPP
}
// calc_wins_cpp2
std::vector<std::vector<std::size_t>> calc_wins_cpp2(const std::size_t seqlen, const std::size_t window, const std::size_t overlap, const bool return_incomplete_window);
RcppExport SEXP _universalmotif_calc_wins_cpp2(SEXP seqlenSEXP, SEXP windowSEXP, SEXP overlapSEXP, SEXP return_incomplete_windowSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const std::size_t >::type seqlen(seqlenSEXP);
    Rcpp::traits::input_parameter< const std::size_t >::type window(windowSEXP);
    Rcpp::traits::input_parameter< const std::size_t >::type overlap(overlapSEXP);
    Rcpp::traits::input_parameter< const bool >::type return_incomplete_window(return_incomplete_windowSEXP);
    rcpp_result_gen = Rcpp::wrap(calc_wins_cpp2(seqlen, window, overlap, return_incomplete_window));
    return rcpp_result_gen;
END_RCPP
}
// dust_cpp
double dust_cpp(const std::string& x);
RcppExport SEXP _universalmotif_dust_cpp(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const std::string& >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(dust_cpp(x));
    return rcpp_result_gen;
END_RCPP
}
// trifonov_fast_cpp
double trifonov_fast_cpp(const std::string& x, int maxWordSize, std::string alph);
RcppExport SEXP _universalmotif_trifonov_fast_cpp(SEXP xSEXP, SEXP maxWordSizeSEXP, SEXP alphSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const std::string& >::type x(xSEXP);
    Rcpp::traits::input_parameter< int >::type maxWordSize(maxWordSizeSEXP);
    Rcpp::traits::input_parameter< std::string >::type alph(alphSEXP);
    rcpp_result_gen = Rcpp::wrap(trifonov_fast_cpp(x, maxWordSize, alph));
    return rcpp_result_gen;
END_RCPP
}
// trifonov_cpp
double trifonov_cpp(const std::string& x, int maxWordSize, std::string alph);
RcppExport SEXP _universalmotif_trifonov_cpp(SEXP xSEXP, SEXP maxWordSizeSEXP, SEXP alphSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const std::string& >::type x(xSEXP);
    Rcpp::traits::input_parameter< int >::type maxWordSize(maxWordSizeSEXP);
    Rcpp::traits::input_parameter< std::string >::type alph(alphSEXP);
    rcpp_result_gen = Rcpp::wrap(trifonov_cpp(x, maxWordSize, alph));
    return rcpp_result_gen;
END_RCPP
}
// wootton_federhen_fast_cpp
double wootton_federhen_fast_cpp(const std::string& x, std::string alph);
RcppExport SEXP _universalmotif_wootton_federhen_fast_cpp(SEXP xSEXP, SEXP alphSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const std::string& >::type x(xSEXP);
    Rcpp::traits::input_parameter< std::string >::type alph(alphSEXP);
    rcpp_result_gen = Rcpp::wrap(wootton_federhen_fast_cpp(x, alph));
    return rcpp_result_gen;
END_RCPP
}
// wootton_federhen_cpp
double wootton_federhen_cpp(const std::string& x, std::string alph);
RcppExport SEXP _universalmotif_wootton_federhen_cpp(SEXP xSEXP, SEXP alphSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const std::string& >::type x(xSEXP);
    Rcpp::traits::input_parameter< std::string >::type alph(alphSEXP);
    rcpp_result_gen = Rcpp::wrap(wootton_federhen_cpp(x, alph));
    return rcpp_result_gen;
END_RCPP
}
// slide_windows_cpp
std::vector<std::string> slide_windows_cpp(const std::string& x, const std::size_t window, const std::size_t overlap, const bool return_incomplete_window, const int nthreads);
RcppExport SEXP _universalmotif_slide_windows_cpp(SEXP xSEXP, SEXP windowSEXP, SEXP overlapSEXP, SEXP return_incomplete_windowSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const std::string& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const std::size_t >::type window(windowSEXP);
    Rcpp::traits::input_parameter< const std::size_t >::type overlap(overlapSEXP);
    Rcpp::traits::input_parameter< const bool >::type return_incomplete_window(return_incomplete_windowSEXP);
    Rcpp::traits::input_parameter< const int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(slide_windows_cpp(x, window, overlap, return_incomplete_window, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// sliding_complexity_cpp
std::vector<double> sliding_complexity_cpp(const std::string& x, const std::size_t window, const std::size_t overlap, const std::string metric, std::string alph, int maxWordSize, const int nthreads);
RcppExport SEXP _universalmotif_sliding_complexity_cpp(SEXP xSEXP, SEXP windowSEXP, SEXP overlapSEXP, SEXP metricSEXP, SEXP alphSEXP, SEXP maxWordSizeSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const std::string& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const std::size_t >::type window(windowSEXP);
    Rcpp::traits::input_parameter< const std::size_t >::type overlap(overlapSEXP);
    Rcpp::traits::input_parameter< const std::string >::type metric(metricSEXP);
    Rcpp::traits::input_parameter< std::string >::type alph(alphSEXP);
    Rcpp::traits::input_parameter< int >::type maxWordSize(maxWordSizeSEXP);
    Rcpp::traits::input_parameter< const int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(sliding_complexity_cpp(x, window, overlap, metric, alph, maxWordSize, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// average_cpp
double average_cpp(const std::vector<double>& scores, const std::string& type);
RcppExport SEXP _universalmotif_average_cpp(SEXP scoresSEXP, SEXP typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<double>& >::type scores(scoresSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type type(typeSEXP);
    rcpp_result_gen = Rcpp::wrap(average_cpp(scores, type));
    return rcpp_result_gen;
END_RCPP
}
// compare_motifs_cpp
std::vector<double> compare_motifs_cpp(const Rcpp::List& mots, const std::vector<int>& index1, const std::vector<int>& index2, const std::string& method, double minoverlap, const bool RC, std::vector<std::vector<double>>& bkg, const int type, const bool relative, const double minic, const bool norm, const int nthreads, const double posic, const std::vector<double>& nsites, const std::string& strat);
RcppExport SEXP _universalmotif_compare_motifs_cpp(SEXP motsSEXP, SEXP index1SEXP, SEXP index2SEXP, SEXP methodSEXP, SEXP minoverlapSEXP, SEXP RCSEXP, SEXP bkgSEXP, SEXP typeSEXP, SEXP relativeSEXP, SEXP minicSEXP, SEXP normSEXP, SEXP nthreadsSEXP, SEXP posicSEXP, SEXP nsitesSEXP, SEXP stratSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type mots(motsSEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type index1(index1SEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type index2(index2SEXP);
    Rcpp::traits::input_parameter< const std::string& >::type method(methodSEXP);
    Rcpp::traits::input_parameter< double >::type minoverlap(minoverlapSEXP);
    Rcpp::traits::input_parameter< const bool >::type RC(RCSEXP);
    Rcpp::traits::input_parameter< std::vector<std::vector<double>>& >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< const int >::type type(typeSEXP);
    Rcpp::traits::input_parameter< const bool >::type relative(relativeSEXP);
    Rcpp::traits::input_parameter< const double >::type minic(minicSEXP);
    Rcpp::traits::input_parameter< const bool >::type norm(normSEXP);
    Rcpp::traits::input_parameter< const int >::type nthreads(nthreadsSEXP);
    Rcpp::traits::input_parameter< const double >::type posic(posicSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type nsites(nsitesSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type strat(stratSEXP);
    rcpp_result_gen = Rcpp::wrap(compare_motifs_cpp(mots, index1, index2, method, minoverlap, RC, bkg, type, relative, minic, norm, nthreads, posic, nsites, strat));
    return rcpp_result_gen;
END_RCPP
}
// compare_motifs_all_cpp
std::vector<std::vector<double>> compare_motifs_all_cpp(const Rcpp::List& mots, const std::string& method, double minoverlap, const bool RC, std::vector<std::vector<double>>& bkg, const int type, const bool relative, const double minic, const bool norm, const int nthreads, const double posic, const std::vector<double>& nsites, const std::string& strat);
RcppExport SEXP _universalmotif_compare_motifs_all_cpp(SEXP motsSEXP, SEXP methodSEXP, SEXP minoverlapSEXP, SEXP RCSEXP, SEXP bkgSEXP, SEXP typeSEXP, SEXP relativeSEXP, SEXP minicSEXP, SEXP normSEXP, SEXP nthreadsSEXP, SEXP posicSEXP, SEXP nsitesSEXP, SEXP stratSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type mots(motsSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type method(methodSEXP);
    Rcpp::traits::input_parameter< double >::type minoverlap(minoverlapSEXP);
    Rcpp::traits::input_parameter< const bool >::type RC(RCSEXP);
    Rcpp::traits::input_parameter< std::vector<std::vector<double>>& >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< const int >::type type(typeSEXP);
    Rcpp::traits::input_parameter< const bool >::type relative(relativeSEXP);
    Rcpp::traits::input_parameter< const double >::type minic(minicSEXP);
    Rcpp::traits::input_parameter< const bool >::type norm(normSEXP);
    Rcpp::traits::input_parameter< const int >::type nthreads(nthreadsSEXP);
    Rcpp::traits::input_parameter< const double >::type posic(posicSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type nsites(nsitesSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type strat(stratSEXP);
    rcpp_result_gen = Rcpp::wrap(compare_motifs_all_cpp(mots, method, minoverlap, RC, bkg, type, relative, minic, norm, nthreads, posic, nsites, strat));
    return rcpp_result_gen;
END_RCPP
}
// get_comparison_matrix
Rcpp::NumericMatrix get_comparison_matrix(const std::vector<double>& ans, const std::vector<int>& index1, const std::vector<int>& index2, const std::string& method, const Rcpp::StringVector& motnames);
RcppExport SEXP _universalmotif_get_comparison_matrix(SEXP ansSEXP, SEXP index1SEXP, SEXP index2SEXP, SEXP methodSEXP, SEXP motnamesSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<double>& >::type ans(ansSEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type index1(index1SEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type index2(index2SEXP);
    Rcpp::traits::input_parameter< const std::string& >::type method(methodSEXP);
    Rcpp::traits::input_parameter< const Rcpp::StringVector& >::type motnames(motnamesSEXP);
    rcpp_result_gen = Rcpp::wrap(get_comparison_matrix(ans, index1, index2, method, motnames));
    return rcpp_result_gen;
END_RCPP
}
// view_motifs_prep
Rcpp::List view_motifs_prep(const Rcpp::List& mots, const std::string& method, const bool RC, double minoverlap, const double minic, const double posic, std::vector<std::vector<double>>& bkg, const bool relative, const bool norm, const Rcpp::StringVector& rnames, const std::vector<double>& nsites, const std::string& strat);
RcppExport SEXP _universalmotif_view_motifs_prep(SEXP motsSEXP, SEXP methodSEXP, SEXP RCSEXP, SEXP minoverlapSEXP, SEXP minicSEXP, SEXP posicSEXP, SEXP bkgSEXP, SEXP relativeSEXP, SEXP normSEXP, SEXP rnamesSEXP, SEXP nsitesSEXP, SEXP stratSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type mots(motsSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type method(methodSEXP);
    Rcpp::traits::input_parameter< const bool >::type RC(RCSEXP);
    Rcpp::traits::input_parameter< double >::type minoverlap(minoverlapSEXP);
    Rcpp::traits::input_parameter< const double >::type minic(minicSEXP);
    Rcpp::traits::input_parameter< const double >::type posic(posicSEXP);
    Rcpp::traits::input_parameter< std::vector<std::vector<double>>& >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< const bool >::type relative(relativeSEXP);
    Rcpp::traits::input_parameter< const bool >::type norm(normSEXP);
    Rcpp::traits::input_parameter< const Rcpp::StringVector& >::type rnames(rnamesSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type nsites(nsitesSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type strat(stratSEXP);
    rcpp_result_gen = Rcpp::wrap(view_motifs_prep(mots, method, RC, minoverlap, minic, posic, bkg, relative, norm, rnames, nsites, strat));
    return rcpp_result_gen;
END_RCPP
}
// merge_motifs_cpp
Rcpp::List merge_motifs_cpp(const Rcpp::List& mots, const std::string& method, const bool RC, double minoverlap, const double minic, const double posic, std::vector<std::vector<double>>& bkg, const bool relative, const bool norm, const std::vector<double>& nsites, const std::string& strat);
RcppExport SEXP _universalmotif_merge_motifs_cpp(SEXP motsSEXP, SEXP methodSEXP, SEXP RCSEXP, SEXP minoverlapSEXP, SEXP minicSEXP, SEXP posicSEXP, SEXP bkgSEXP, SEXP relativeSEXP, SEXP normSEXP, SEXP nsitesSEXP, SEXP stratSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type mots(motsSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type method(methodSEXP);
    Rcpp::traits::input_parameter< const bool >::type RC(RCSEXP);
    Rcpp::traits::input_parameter< double >::type minoverlap(minoverlapSEXP);
    Rcpp::traits::input_parameter< const double >::type minic(minicSEXP);
    Rcpp::traits::input_parameter< const double >::type posic(posicSEXP);
    Rcpp::traits::input_parameter< std::vector<std::vector<double>>& >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< const bool >::type relative(relativeSEXP);
    Rcpp::traits::input_parameter< const bool >::type norm(normSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type nsites(nsitesSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type strat(stratSEXP);
    rcpp_result_gen = Rcpp::wrap(merge_motifs_cpp(mots, method, RC, minoverlap, minic, posic, bkg, relative, norm, nsites, strat));
    return rcpp_result_gen;
END_RCPP
}
// compare_columns_cpp
double compare_columns_cpp(const std::vector<double>& p1, const std::vector<double>& p2, const std::vector<double>& b1, const std::vector<double>& b2, const double n1, const double n2, const std::string& m);
RcppExport SEXP _universalmotif_compare_columns_cpp(SEXP p1SEXP, SEXP p2SEXP, SEXP b1SEXP, SEXP b2SEXP, SEXP n1SEXP, SEXP n2SEXP, SEXP mSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<double>& >::type p1(p1SEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type p2(p2SEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type b1(b1SEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type b2(b2SEXP);
    Rcpp::traits::input_parameter< const double >::type n1(n1SEXP);
    Rcpp::traits::input_parameter< const double >::type n2(n2SEXP);
    Rcpp::traits::input_parameter< const std::string& >::type m(mSEXP);
    rcpp_result_gen = Rcpp::wrap(compare_columns_cpp(p1, p2, b1, b2, n1, n2, m));
    return rcpp_result_gen;
END_RCPP
}
// pval_extractor
std::vector<double> pval_extractor(const std::vector<int>& ncols, const std::vector<double>& scores, const std::vector<int>& indices1, const std::vector<int>& indices2, const std::string& method, const std::vector<int>& subject, const std::vector<int>& target, const std::vector<double>& paramA, const std::vector<double>& paramB, const std::vector<std::string>& distribution, const int nthreads);
RcppExport SEXP _universalmotif_pval_extractor(SEXP ncolsSEXP, SEXP scoresSEXP, SEXP indices1SEXP, SEXP indices2SEXP, SEXP methodSEXP, SEXP subjectSEXP, SEXP targetSEXP, SEXP paramASEXP, SEXP paramBSEXP, SEXP distributionSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<int>& >::type ncols(ncolsSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type scores(scoresSEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type indices1(indices1SEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type indices2(indices2SEXP);
    Rcpp::traits::input_parameter< const std::string& >::type method(methodSEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type subject(subjectSEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type paramA(paramASEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type paramB(paramBSEXP);
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type distribution(distributionSEXP);
    Rcpp::traits::input_parameter< const int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(pval_extractor(ncols, scores, indices1, indices2, method, subject, target, paramA, paramB, distribution, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// count_klets_alph_cpp
std::vector<std::vector<int>> count_klets_alph_cpp(const std::vector<std::string>& sequences, const std::string& alph, const int& k, const int& nthreads);
RcppExport SEXP _universalmotif_count_klets_alph_cpp(SEXP sequencesSEXP, SEXP alphSEXP, SEXP kSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type sequences(sequencesSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type alph(alphSEXP);
    Rcpp::traits::input_parameter< const int& >::type k(kSEXP);
    Rcpp::traits::input_parameter< const int& >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(count_klets_alph_cpp(sequences, alph, k, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// calc_seq_probs_cpp
std::vector<double> calc_seq_probs_cpp(const std::vector<std::string>& seqs, const std::vector<double>& bkg, const std::string& alph, const int& nthreads);
RcppExport SEXP _universalmotif_calc_seq_probs_cpp(SEXP seqsSEXP, SEXP bkgSEXP, SEXP alphSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type seqs(seqsSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type alph(alphSEXP);
    Rcpp::traits::input_parameter< const int& >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(calc_seq_probs_cpp(seqs, bkg, alph, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// peakfinder_cpp
Rcpp::IntegerVector peakfinder_cpp(const Rcpp::NumericVector& x, int m);
RcppExport SEXP _universalmotif_peakfinder_cpp(SEXP xSEXP, SEXP mSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type x(xSEXP);
    Rcpp::traits::input_parameter< int >::type m(mSEXP);
    rcpp_result_gen = Rcpp::wrap(peakfinder_cpp(x, m));
    return rcpp_result_gen;
END_RCPP
}
// linbin_cpp
std::vector<double> linbin_cpp(const std::vector<int>& x, const std::vector<int>& gpoints);
RcppExport SEXP _universalmotif_linbin_cpp(SEXP xSEXP, SEXP gpointsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<int>& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type gpoints(gpointsSEXP);
    rcpp_result_gen = Rcpp::wrap(linbin_cpp(x, gpoints));
    return rcpp_result_gen;
END_RCPP
}
// motif_pvalue_cpp
std::vector<long double> motif_pvalue_cpp(const Rcpp::List& motifs, const Rcpp::List& bkg, const std::vector<double>& scores, const int& k, const int& nthreads, const bool allow_nonfinite);
RcppExport SEXP _universalmotif_motif_pvalue_cpp(SEXP motifsSEXP, SEXP bkgSEXP, SEXP scoresSEXP, SEXP kSEXP, SEXP nthreadsSEXP, SEXP allow_nonfiniteSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type motifs(motifsSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type scores(scoresSEXP);
    Rcpp::traits::input_parameter< const int& >::type k(kSEXP);
    Rcpp::traits::input_parameter< const int& >::type nthreads(nthreadsSEXP);
    Rcpp::traits::input_parameter< const bool >::type allow_nonfinite(allow_nonfiniteSEXP);
    rcpp_result_gen = Rcpp::wrap(motif_pvalue_cpp(motifs, bkg, scores, k, nthreads, allow_nonfinite));
    return rcpp_result_gen;
END_RCPP
}
// motif_score_cpp
std::vector<double> motif_score_cpp(const Rcpp::List& motifs, const std::vector<double>& pvals, const int seed, const int k, const int nthreads, const int randtries, const bool allow_nonfinite);
RcppExport SEXP _universalmotif_motif_score_cpp(SEXP motifsSEXP, SEXP pvalsSEXP, SEXP seedSEXP, SEXP kSEXP, SEXP nthreadsSEXP, SEXP randtriesSEXP, SEXP allow_nonfiniteSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type motifs(motifsSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type pvals(pvalsSEXP);
    Rcpp::traits::input_parameter< const int >::type seed(seedSEXP);
    Rcpp::traits::input_parameter< const int >::type k(kSEXP);
    Rcpp::traits::input_parameter< const int >::type nthreads(nthreadsSEXP);
    Rcpp::traits::input_parameter< const int >::type randtries(randtriesSEXP);
    Rcpp::traits::input_parameter< const bool >::type allow_nonfinite(allow_nonfiniteSEXP);
    rcpp_result_gen = Rcpp::wrap(motif_score_cpp(motifs, pvals, seed, k, nthreads, randtries, allow_nonfinite));
    return rcpp_result_gen;
END_RCPP
}
// branch_and_bound_cpp_exposed
Rcpp::IntegerMatrix branch_and_bound_cpp_exposed(Rcpp::IntegerMatrix mat, const int score);
RcppExport SEXP _universalmotif_branch_and_bound_cpp_exposed(SEXP matSEXP, SEXP scoreSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type mat(matSEXP);
    Rcpp::traits::input_parameter< const int >::type score(scoreSEXP);
    rcpp_result_gen = Rcpp::wrap(branch_and_bound_cpp_exposed(mat, score));
    return rcpp_result_gen;
END_RCPP
}
// expand_scores
Rcpp::IntegerVector expand_scores(const Rcpp::IntegerMatrix& scores);
RcppExport SEXP _universalmotif_expand_scores(SEXP scoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::IntegerMatrix& >::type scores(scoresSEXP);
    rcpp_result_gen = Rcpp::wrap(expand_scores(scores));
    return rcpp_result_gen;
END_RCPP
}
// paths_alph_unsort
Rcpp::IntegerMatrix paths_alph_unsort(const Rcpp::IntegerMatrix& paths, const Rcpp::IntegerMatrix& alph);
RcppExport SEXP _universalmotif_paths_alph_unsort(SEXP pathsSEXP, SEXP alphSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::IntegerMatrix& >::type paths(pathsSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerMatrix& >::type alph(alphSEXP);
    rcpp_result_gen = Rcpp::wrap(paths_alph_unsort(paths, alph));
    return rcpp_result_gen;
END_RCPP
}
// paths_to_alph
Rcpp::StringVector paths_to_alph(const Rcpp::IntegerMatrix& paths, const Rcpp::StringVector& alph);
RcppExport SEXP _universalmotif_paths_to_alph(SEXP pathsSEXP, SEXP alphSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::IntegerMatrix& >::type paths(pathsSEXP);
    Rcpp::traits::input_parameter< const Rcpp::StringVector& >::type alph(alphSEXP);
    rcpp_result_gen = Rcpp::wrap(paths_to_alph(paths, alph));
    return rcpp_result_gen;
END_RCPP
}
// motif_pvalue_dynamic_single_cpp
Rcpp::NumericVector motif_pvalue_dynamic_single_cpp(const Rcpp::NumericMatrix& mot, const Rcpp::NumericVector& bkg, const Rcpp::NumericVector& scores);
RcppExport SEXP _universalmotif_motif_pvalue_dynamic_single_cpp(SEXP motSEXP, SEXP bkgSEXP, SEXP scoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type mot(motSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type scores(scoresSEXP);
    rcpp_result_gen = Rcpp::wrap(motif_pvalue_dynamic_single_cpp(mot, bkg, scores));
    return rcpp_result_gen;
END_RCPP
}
// motif_score_dynamic_single_cpp
Rcpp::NumericVector motif_score_dynamic_single_cpp(const Rcpp::NumericMatrix& mot, const Rcpp::NumericVector& bkg, const Rcpp::NumericVector& pvalues);
RcppExport SEXP _universalmotif_motif_score_dynamic_single_cpp(SEXP motSEXP, SEXP bkgSEXP, SEXP pvaluesSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type mot(motSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type pvalues(pvaluesSEXP);
    rcpp_result_gen = Rcpp::wrap(motif_score_dynamic_single_cpp(mot, bkg, pvalues));
    return rcpp_result_gen;
END_RCPP
}
// calc_hit_gc
Rcpp::NumericVector calc_hit_gc(const Rcpp::StringVector& hits, const bool ignoreN);
RcppExport SEXP _universalmotif_calc_hit_gc(SEXP hitsSEXP, SEXP ignoreNSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::StringVector& >::type hits(hitsSEXP);
    Rcpp::traits::input_parameter< const bool >::type ignoreN(ignoreNSEXP);
    rcpp_result_gen = Rcpp::wrap(calc_hit_gc(hits, ignoreN));
    return rcpp_result_gen;
END_RCPP
}
// switch_antisense_coords_cpp
Rcpp::DataFrame switch_antisense_coords_cpp(const Rcpp::DataFrame& res);
RcppExport SEXP _universalmotif_switch_antisense_coords_cpp(SEXP resSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::DataFrame& >::type res(resSEXP);
    rcpp_result_gen = Rcpp::wrap(switch_antisense_coords_cpp(res));
    return rcpp_result_gen;
END_RCPP
}
// add_gap_dots_cpp
std::vector<std::string> add_gap_dots_cpp(std::vector<std::string> seqs, const std::vector<std::vector<int>>& gaplocs);
RcppExport SEXP _universalmotif_add_gap_dots_cpp(SEXP seqsSEXP, SEXP gaplocsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::vector<std::string> >::type seqs(seqsSEXP);
    Rcpp::traits::input_parameter< const std::vector<std::vector<int>>& >::type gaplocs(gaplocsSEXP);
    rcpp_result_gen = Rcpp::wrap(add_gap_dots_cpp(seqs, gaplocs));
    return rcpp_result_gen;
END_RCPP
}
// scan_sequences_cpp
Rcpp::DataFrame scan_sequences_cpp(const Rcpp::List& score_mats, const std::vector<std::string>& seq_vecs, const int& k, const std::string& alph, const std::vector<double>& min_scores, const int& nthreads, const bool& allow_nonfinite, const bool& warnNA);
RcppExport SEXP _universalmotif_scan_sequences_cpp(SEXP score_matsSEXP, SEXP seq_vecsSEXP, SEXP kSEXP, SEXP alphSEXP, SEXP min_scoresSEXP, SEXP nthreadsSEXP, SEXP allow_nonfiniteSEXP, SEXP warnNASEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type score_mats(score_matsSEXP);
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type seq_vecs(seq_vecsSEXP);
    Rcpp::traits::input_parameter< const int& >::type k(kSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type alph(alphSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type min_scores(min_scoresSEXP);
    Rcpp::traits::input_parameter< const int& >::type nthreads(nthreadsSEXP);
    Rcpp::traits::input_parameter< const bool& >::type allow_nonfinite(allow_nonfiniteSEXP);
    Rcpp::traits::input_parameter< const bool& >::type warnNA(warnNASEXP);
    rcpp_result_gen = Rcpp::wrap(scan_sequences_cpp(score_mats, seq_vecs, k, alph, min_scores, nthreads, allow_nonfinite, warnNA));
    return rcpp_result_gen;
END_RCPP
}
// shuffle_markov_cpp
std::vector<std::string> shuffle_markov_cpp(const std::vector<std::string>& sequences, const int& k, const int& nthreads, const int& seed);
RcppExport SEXP _universalmotif_shuffle_markov_cpp(SEXP sequencesSEXP, SEXP kSEXP, SEXP nthreadsSEXP, SEXP seedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type sequences(sequencesSEXP);
    Rcpp::traits::input_parameter< const int& >::type k(kSEXP);
    Rcpp::traits::input_parameter< const int& >::type nthreads(nthreadsSEXP);
    Rcpp::traits::input_parameter< const int& >::type seed(seedSEXP);
    rcpp_result_gen = Rcpp::wrap(shuffle_markov_cpp(sequences, k, nthreads, seed));
    return rcpp_result_gen;
END_RCPP
}
// shuffle_euler_cpp
std::vector<std::string> shuffle_euler_cpp(const std::vector<std::string>& sequences, const int& k, const int& nthreads, const int& seed);
RcppExport SEXP _universalmotif_shuffle_euler_cpp(SEXP sequencesSEXP, SEXP kSEXP, SEXP nthreadsSEXP, SEXP seedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type sequences(sequencesSEXP);
    Rcpp::traits::input_parameter< const int& >::type k(kSEXP);
    Rcpp::traits::input_parameter< const int& >::type nthreads(nthreadsSEXP);
    Rcpp::traits::input_parameter< const int& >::type seed(seedSEXP);
    rcpp_result_gen = Rcpp::wrap(shuffle_euler_cpp(sequences, k, nthreads, seed));
    return rcpp_result_gen;
END_RCPP
}
// shuffle_seq_local_cpp
std::vector<std::string> shuffle_seq_local_cpp(const std::vector<std::string>& sequences, const int& k, const int& nthreads, const int& seed, const std::vector<std::vector<int>>& starts, const std::vector<std::vector<int>>& stops, const int& method);
RcppExport SEXP _universalmotif_shuffle_seq_local_cpp(SEXP sequencesSEXP, SEXP kSEXP, SEXP nthreadsSEXP, SEXP seedSEXP, SEXP startsSEXP, SEXP stopsSEXP, SEXP methodSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type sequences(sequencesSEXP);
    Rcpp::traits::input_parameter< const int& >::type k(kSEXP);
    Rcpp::traits::input_parameter< const int& >::type nthreads(nthreadsSEXP);
    Rcpp::traits::input_parameter< const int& >::type seed(seedSEXP);
    Rcpp::traits::input_parameter< const std::vector<std::vector<int>>& >::type starts(startsSEXP);
    Rcpp::traits::input_parameter< const std::vector<std::vector<int>>& >::type stops(stopsSEXP);
    Rcpp::traits::input_parameter< const int& >::type method(methodSEXP);
    rcpp_result_gen = Rcpp::wrap(shuffle_seq_local_cpp(sequences, k, nthreads, seed, starts, stops, method));
    return rcpp_result_gen;
END_RCPP
}
// shuffle_linear_cpp
std::vector<std::string> shuffle_linear_cpp(const std::vector<std::string>& sequences, const int& k, const int& nthreads, const int& seed);
RcppExport SEXP _universalmotif_shuffle_linear_cpp(SEXP sequencesSEXP, SEXP kSEXP, SEXP nthreadsSEXP, SEXP seedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type sequences(sequencesSEXP);
    Rcpp::traits::input_parameter< const int& >::type k(kSEXP);
    Rcpp::traits::input_parameter< const int& >::type nthreads(nthreadsSEXP);
    Rcpp::traits::input_parameter< const int& >::type seed(seedSEXP);
    rcpp_result_gen = Rcpp::wrap(shuffle_linear_cpp(sequences, k, nthreads, seed));
    return rcpp_result_gen;
END_RCPP
}
// shuffle_k1_cpp
std::vector<std::string> shuffle_k1_cpp(const std::vector<std::string>& sequences, const int& nthreads, const int& seed);
RcppExport SEXP _universalmotif_shuffle_k1_cpp(SEXP sequencesSEXP, SEXP nthreadsSEXP, SEXP seedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type sequences(sequencesSEXP);
    Rcpp::traits::input_parameter< const int& >::type nthreads(nthreadsSEXP);
    Rcpp::traits::input_parameter< const int& >::type seed(seedSEXP);
    rcpp_result_gen = Rcpp::wrap(shuffle_k1_cpp(sequences, nthreads, seed));
    return rcpp_result_gen;
END_RCPP
}
// count_klets_cpp
std::vector<std::vector<int>> count_klets_cpp(const std::vector<std::string>& sequences, const int& k, const int& nthreads);
RcppExport SEXP _universalmotif_count_klets_cpp(SEXP sequencesSEXP, SEXP kSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type sequences(sequencesSEXP);
    Rcpp::traits::input_parameter< const int& >::type k(kSEXP);
    Rcpp::traits::input_parameter< const int& >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(count_klets_cpp(sequences, k, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// split_seq_by_win
std::vector<std::string> split_seq_by_win(std::string& seq1, const std::vector<int>& start, const std::vector<int>& stop);
RcppExport SEXP _universalmotif_split_seq_by_win(SEXP seq1SEXP, SEXP startSEXP, SEXP stopSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::string& >::type seq1(seq1SEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type start(startSEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type stop(stopSEXP);
    rcpp_result_gen = Rcpp::wrap(split_seq_by_win(seq1, start, stop));
    return rcpp_result_gen;
END_RCPP
}
// get_klets_cpp
std::vector<std::string> get_klets_cpp(std::vector<std::string>& alph, const int& k);
RcppExport SEXP _universalmotif_get_klets_cpp(SEXP alphSEXP, SEXP kSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::vector<std::string>& >::type alph(alphSEXP);
    Rcpp::traits::input_parameter< const int& >::type k(kSEXP);
    rcpp_result_gen = Rcpp::wrap(get_klets_cpp(alph, k));
    return rcpp_result_gen;
END_RCPP
}
// create_sequences_cpp
std::vector<std::string> create_sequences_cpp(const int seqlen, const int seqnum, const std::vector<std::string>& alph, const int k, const std::vector<double>& freqs, const int nthreads, const int seed, const Rcpp::NumericMatrix& transitions);
RcppExport SEXP _universalmotif_create_sequences_cpp(SEXP seqlenSEXP, SEXP seqnumSEXP, SEXP alphSEXP, SEXP kSEXP, SEXP freqsSEXP, SEXP nthreadsSEXP, SEXP seedSEXP, SEXP transitionsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const int >::type seqlen(seqlenSEXP);
    Rcpp::traits::input_parameter< const int >::type seqnum(seqnumSEXP);
    Rcpp::traits::input_parameter< const std::vector<std::string>& >::type alph(alphSEXP);
    Rcpp::traits::input_parameter< const int >::type k(kSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type freqs(freqsSEXP);
    Rcpp::traits::input_parameter< const int >::type nthreads(nthreadsSEXP);
    Rcpp::traits::input_parameter< const int >::type seed(seedSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type transitions(transitionsSEXP);
    rcpp_result_gen = Rcpp::wrap(create_sequences_cpp(seqlen, seqnum, alph, k, freqs, nthreads, seed, transitions));
    return rcpp_result_gen;
END_RCPP
}
// trim_motif_internal
Rcpp::NumericMatrix trim_motif_internal(const Rcpp::NumericMatrix& motif, const Rcpp::NumericVector& ic_scores, double min_ic, const int trim_from);
RcppExport SEXP _universalmotif_trim_motif_internal(SEXP motifSEXP, SEXP ic_scoresSEXP, SEXP min_icSEXP, SEXP trim_fromSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type motif(motifSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type ic_scores(ic_scoresSEXP);
    Rcpp::traits::input_parameter< double >::type min_ic(min_icSEXP);
    Rcpp::traits::input_parameter< const int >::type trim_from(trim_fromSEXP);
    rcpp_result_gen = Rcpp::wrap(trim_motif_internal(motif, ic_scores, min_ic, trim_from));
    return rcpp_result_gen;
END_RCPP
}
// universalmotif_cpp
Rcpp::S4 universalmotif_cpp(Rcpp::NumericMatrix motif, Rcpp::String name, Rcpp::StringVector altname, Rcpp::StringVector family, Rcpp::StringVector organism, Rcpp::StringVector alphabet, Rcpp::StringVector type, Rcpp::NumericVector icscore, Rcpp::NumericVector nsites, double pseudocount, Rcpp::NumericVector bkg, Rcpp::NumericVector bkgsites, Rcpp::StringVector consensus, Rcpp::String strand, Rcpp::NumericVector pval, Rcpp::NumericVector qval, Rcpp::NumericVector eval, Rcpp::StringVector extrainfo, Rcpp::LogicalVector isgapped, Rcpp::NumericVector gaploc, Rcpp::NumericVector mingap, Rcpp::NumericVector maxgap);
RcppExport SEXP _universalmotif_universalmotif_cpp(SEXP motifSEXP, SEXP nameSEXP, SEXP altnameSEXP, SEXP familySEXP, SEXP organismSEXP, SEXP alphabetSEXP, SEXP typeSEXP, SEXP icscoreSEXP, SEXP nsitesSEXP, SEXP pseudocountSEXP, SEXP bkgSEXP, SEXP bkgsitesSEXP, SEXP consensusSEXP, SEXP strandSEXP, SEXP pvalSEXP, SEXP qvalSEXP, SEXP evalSEXP, SEXP extrainfoSEXP, SEXP isgappedSEXP, SEXP gaplocSEXP, SEXP mingapSEXP, SEXP maxgapSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type motif(motifSEXP);
    Rcpp::traits::input_parameter< Rcpp::String >::type name(nameSEXP);
    Rcpp::traits::input_parameter< Rcpp::StringVector >::type altname(altnameSEXP);
    Rcpp::traits::input_parameter< Rcpp::StringVector >::type family(familySEXP);
    Rcpp::traits::input_parameter< Rcpp::StringVector >::type organism(organismSEXP);
    Rcpp::traits::input_parameter< Rcpp::StringVector >::type alphabet(alphabetSEXP);
    Rcpp::traits::input_parameter< Rcpp::StringVector >::type type(typeSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type icscore(icscoreSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type nsites(nsitesSEXP);
    Rcpp::traits::input_parameter< double >::type pseudocount(pseudocountSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type bkgsites(bkgsitesSEXP);
    Rcpp::traits::input_parameter< Rcpp::StringVector >::type consensus(consensusSEXP);
    Rcpp::traits::input_parameter< Rcpp::String >::type strand(strandSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type pval(pvalSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type qval(qvalSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type eval(evalSEXP);
    Rcpp::traits::input_parameter< Rcpp::StringVector >::type extrainfo(extrainfoSEXP);
    Rcpp::traits::input_parameter< Rcpp::LogicalVector >::type isgapped(isgappedSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type gaploc(gaplocSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type mingap(mingapSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type maxgap(maxgapSEXP);
    rcpp_result_gen = Rcpp::wrap(universalmotif_cpp(motif, name, altname, family, organism, alphabet, type, icscore, nsites, pseudocount, bkg, bkgsites, consensus, strand, pval, qval, eval, extrainfo, isgapped, gaploc, mingap, maxgap));
    return rcpp_result_gen;
END_RCPP
}
// validObject_universalmotif
Rcpp::StringVector validObject_universalmotif(const Rcpp::S4& motif, const bool throw_error);
RcppExport SEXP _universalmotif_validObject_universalmotif(SEXP motifSEXP, SEXP throw_errorSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::S4& >::type motif(motifSEXP);
    Rcpp::traits::input_parameter< const bool >::type throw_error(throw_errorSEXP);
    rcpp_result_gen = Rcpp::wrap(validObject_universalmotif(motif, throw_error));
    return rcpp_result_gen;
END_RCPP
}
// summarise_motifs_cpp
Rcpp::DataFrame summarise_motifs_cpp(const Rcpp::List& motifs);
RcppExport SEXP _universalmotif_summarise_motifs_cpp(SEXP motifsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type motifs(motifsSEXP);
    rcpp_result_gen = Rcpp::wrap(summarise_motifs_cpp(motifs));
    return rcpp_result_gen;
END_RCPP
}
// universalmotif_to_list
Rcpp::List universalmotif_to_list(const Rcpp::S4& motif);
RcppExport SEXP _universalmotif_universalmotif_to_list(SEXP motifSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::S4& >::type motif(motifSEXP);
    rcpp_result_gen = Rcpp::wrap(universalmotif_to_list(motif));
    return rcpp_result_gen;
END_RCPP
}
// round_motif_cpp
Rcpp::NumericMatrix round_motif_cpp(const Rcpp::NumericMatrix& mot, const double pct_tolerance);
RcppExport SEXP _universalmotif_round_motif_cpp(SEXP motSEXP, SEXP pct_toleranceSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type mot(motSEXP);
    Rcpp::traits::input_parameter< const double >::type pct_tolerance(pct_toleranceSEXP);
    rcpp_result_gen = Rcpp::wrap(round_motif_cpp(mot, pct_tolerance));
    return rcpp_result_gen;
END_RCPP
}
// pval_str2double
double pval_str2double(const std::string& pval);
RcppExport SEXP _universalmotif_pval_str2double(SEXP pvalSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type pval(pvalSEXP);
    rcpp_result_gen = Rcpp::wrap(pval_str2double(pval));
    return rcpp_result_gen;
END_RCPP
}
// split_gapped
Rcpp::List split_gapped(const Rcpp::NumericMatrix& mot, const std::vector<int>& gaploc);
RcppExport SEXP _universalmotif_split_gapped(SEXP motSEXP, SEXP gaplocSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type mot(motSEXP);
    Rcpp::traits::input_parameter< const std::vector<int>& >::type gaploc(gaplocSEXP);
    rcpp_result_gen = Rcpp::wrap(split_gapped(mot, gaploc));
    return rcpp_result_gen;
END_RCPP
}
// generate_motif
Rcpp::NumericMatrix generate_motif(const int ncol, const std::vector<double>& bkg);
RcppExport SEXP _universalmotif_generate_motif(SEXP ncolSEXP, SEXP bkgSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const int >::type ncol(ncolSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type bkg(bkgSEXP);
    rcpp_result_gen = Rcpp::wrap(generate_motif(ncol, bkg));
    return rcpp_result_gen;
END_RCPP
}
// min_max_ints
Rcpp::List min_max_ints();
RcppExport SEXP _universalmotif_min_max_ints() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    rcpp_result_gen = Rcpp::wrap(min_max_ints());
    return rcpp_result_gen;
END_RCPP
}
// min_max_doubles
Rcpp::List min_max_doubles();
RcppExport SEXP _universalmotif_min_max_doubles() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    rcpp_result_gen = Rcpp::wrap(min_max_doubles());
    return rcpp_result_gen;
END_RCPP
}
// comb2_cpp
std::vector<std::vector<int>> comb2_cpp(const int n);
RcppExport SEXP _universalmotif_comb2_cpp(SEXP nSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const int >::type n(nSEXP);
    rcpp_result_gen = Rcpp::wrap(comb2_cpp(n));
    return rcpp_result_gen;
END_RCPP
}
// table_cpp
Rcpp::IntegerVector table_cpp(const Rcpp::StringVector& x);
RcppExport SEXP _universalmotif_table_cpp(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::StringVector& >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(table_cpp(x));
    return rcpp_result_gen;
END_RCPP
}
// order_char_cpp
Rcpp::IntegerVector order_char_cpp(const Rcpp::CharacterVector x);
RcppExport SEXP _universalmotif_order_char_cpp(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::CharacterVector >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(order_char_cpp(x));
    return rcpp_result_gen;
END_RCPP
}
// sort_unique_cpp
Rcpp::StringVector sort_unique_cpp(const Rcpp::StringVector& x);
RcppExport SEXP _universalmotif_sort_unique_cpp(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::StringVector& >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(sort_unique_cpp(x));
    return rcpp_result_gen;
END_RCPP
}
// collapse_rows_mat
Rcpp::StringVector collapse_rows_mat(const Rcpp::CharacterMatrix& seqs_k);
RcppExport SEXP _universalmotif_collapse_rows_mat(SEXP seqs_kSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::CharacterMatrix& >::type seqs_k(seqs_kSEXP);
    rcpp_result_gen = Rcpp::wrap(collapse_rows_mat(seqs_k));
    return rcpp_result_gen;
END_RCPP
}
// collapse_cols_mat
Rcpp::StringVector collapse_cols_mat(const Rcpp::CharacterMatrix& seqs_k);
RcppExport SEXP _universalmotif_collapse_cols_mat(SEXP seqs_kSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::CharacterMatrix& >::type seqs_k(seqs_kSEXP);
    rcpp_result_gen = Rcpp::wrap(collapse_cols_mat(seqs_k));
    return rcpp_result_gen;
END_RCPP
}
// collapse_rows_df
Rcpp::StringVector collapse_rows_df(const Rcpp::DataFrame& seqs_k);
RcppExport SEXP _universalmotif_collapse_rows_df(SEXP seqs_kSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::DataFrame& >::type seqs_k(seqs_kSEXP);
    rcpp_result_gen = Rcpp::wrap(collapse_rows_df(seqs_k));
    return rcpp_result_gen;
END_RCPP
}
// collapse_cpp
Rcpp::String collapse_cpp(const Rcpp::StringVector& x);
RcppExport SEXP _universalmotif_collapse_cpp(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::StringVector& >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(collapse_cpp(x));
    return rcpp_result_gen;
END_RCPP
}
// print_pb
void print_pb(const R_xlen_t& out);
RcppExport SEXP _universalmotif_print_pb(SEXP outSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const R_xlen_t& >::type out(outSEXP);
    print_pb(out);
    return R_NilValue;
END_RCPP
}
// update_pb
void update_pb(const R_xlen_t& i, const R_xlen_t& max, const bool printLF);
RcppExport SEXP _universalmotif_update_pb(SEXP iSEXP, SEXP maxSEXP, SEXP printLFSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const R_xlen_t& >::type i(iSEXP);
    Rcpp::traits::input_parameter< const R_xlen_t& >::type max(maxSEXP);
    Rcpp::traits::input_parameter< const bool >::type printLF(printLFSEXP);
    update_pb(i, max, printLF);
    return R_NilValue;
END_RCPP
}
// all_checks_collapse
Rcpp::String all_checks_collapse(const Rcpp::StringVector& checks);
RcppExport SEXP _universalmotif_all_checks_collapse(SEXP checksSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::StringVector& >::type checks(checksSEXP);
    rcpp_result_gen = Rcpp::wrap(all_checks_collapse(checks));
    return rcpp_result_gen;
END_RCPP
}
// pcm_to_ppmC
std::vector<double> pcm_to_ppmC(std::vector<double> pos, const double pseudocount);
RcppExport SEXP _universalmotif_pcm_to_ppmC(SEXP posSEXP, SEXP pseudocountSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::vector<double> >::type pos(posSEXP);
    Rcpp::traits::input_parameter< const double >::type pseudocount(pseudocountSEXP);
    rcpp_result_gen = Rcpp::wrap(pcm_to_ppmC(pos, pseudocount));
    return rcpp_result_gen;
END_RCPP
}
// ppm_to_pcmC
std::vector<double> ppm_to_pcmC(std::vector<double> pos, double nsites);
RcppExport SEXP _universalmotif_ppm_to_pcmC(SEXP posSEXP, SEXP nsitesSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::vector<double> >::type pos(posSEXP);
    Rcpp::traits::input_parameter< double >::type nsites(nsitesSEXP);
    rcpp_result_gen = Rcpp::wrap(ppm_to_pcmC(pos, nsites));
    return rcpp_result_gen;
END_RCPP
}
// ppm_to_pwmC
std::vector<double> ppm_to_pwmC(std::vector<double> pos, std::vector<double> bkg, const double pseudocount, double nsites);
RcppExport SEXP _universalmotif_ppm_to_pwmC(SEXP posSEXP, SEXP bkgSEXP, SEXP pseudocountSEXP, SEXP nsitesSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::vector<double> >::type pos(posSEXP);
    Rcpp::traits::input_parameter< std::vector<double> >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< const double >::type pseudocount(pseudocountSEXP);
    Rcpp::traits::input_parameter< double >::type nsites(nsitesSEXP);
    rcpp_result_gen = Rcpp::wrap(ppm_to_pwmC(pos, bkg, pseudocount, nsites));
    return rcpp_result_gen;
END_RCPP
}
// pwm_to_ppmC
std::vector<double> pwm_to_ppmC(std::vector<double> pos, std::vector<double> bkg);
RcppExport SEXP _universalmotif_pwm_to_ppmC(SEXP posSEXP, SEXP bkgSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::vector<double> >::type pos(posSEXP);
    Rcpp::traits::input_parameter< std::vector<double> >::type bkg(bkgSEXP);
    rcpp_result_gen = Rcpp::wrap(pwm_to_ppmC(pos, bkg));
    return rcpp_result_gen;
END_RCPP
}
// ppm_to_icmC
std::vector<double> ppm_to_icmC(std::vector<double> pos, std::vector<double> bkg, const bool relative_entropy);
RcppExport SEXP _universalmotif_ppm_to_icmC(SEXP posSEXP, SEXP bkgSEXP, SEXP relative_entropySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::vector<double> >::type pos(posSEXP);
    Rcpp::traits::input_parameter< std::vector<double> >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< const bool >::type relative_entropy(relative_entropySEXP);
    rcpp_result_gen = Rcpp::wrap(ppm_to_icmC(pos, bkg, relative_entropy));
    return rcpp_result_gen;
END_RCPP
}
// position_icscoreC
double position_icscoreC(std::vector<double> pos, std::vector<double> bkg, const std::string& type, const double pseudocount, double nsites, const bool relative_entropy);
RcppExport SEXP _universalmotif_position_icscoreC(SEXP posSEXP, SEXP bkgSEXP, SEXP typeSEXP, SEXP pseudocountSEXP, SEXP nsitesSEXP, SEXP relative_entropySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::vector<double> >::type pos(posSEXP);
    Rcpp::traits::input_parameter< std::vector<double> >::type bkg(bkgSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type type(typeSEXP);
    Rcpp::traits::input_parameter< const double >::type pseudocount(pseudocountSEXP);
    Rcpp::traits::input_parameter< double >::type nsites(nsitesSEXP);
    Rcpp::traits::input_parameter< const bool >::type relative_entropy(relative_entropySEXP);
    rcpp_result_gen = Rcpp::wrap(position_icscoreC(pos, bkg, type, pseudocount, nsites, relative_entropy));
    return rcpp_result_gen;
END_RCPP
}
// icm_to_ppmC
std::vector<double> icm_to_ppmC(std::vector<double> pos);
RcppExport SEXP _universalmotif_icm_to_ppmC(SEXP posSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::vector<double> >::type pos(posSEXP);
    rcpp_result_gen = Rcpp::wrap(icm_to_ppmC(pos));
    return rcpp_result_gen;
END_RCPP
}
// get_consensusC
std::string get_consensusC(std::vector<double> pos, const std::string& alphabet, const std::string& type, const double pseudocount);
RcppExport SEXP _universalmotif_get_consensusC(SEXP posSEXP, SEXP alphabetSEXP, SEXP typeSEXP, SEXP pseudocountSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::vector<double> >::type pos(posSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type alphabet(alphabetSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type type(typeSEXP);
    Rcpp::traits::input_parameter< const double >::type pseudocount(pseudocountSEXP);
    rcpp_result_gen = Rcpp::wrap(get_consensusC(pos, alphabet, type, pseudocount));
    return rcpp_result_gen;
END_RCPP
}
// consensus_to_ppmC
std::vector<double> consensus_to_ppmC(const std::string& letter);
RcppExport SEXP _universalmotif_consensus_to_ppmC(SEXP letterSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type letter(letterSEXP);
    rcpp_result_gen = Rcpp::wrap(consensus_to_ppmC(letter));
    return rcpp_result_gen;
END_RCPP
}
// consensus_to_ppmAAC
std::vector<double> consensus_to_ppmAAC(const std::string& letter);
RcppExport SEXP _universalmotif_consensus_to_ppmAAC(SEXP letterSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type letter(letterSEXP);
    rcpp_result_gen = Rcpp::wrap(consensus_to_ppmAAC(letter));
    return rcpp_result_gen;
END_RCPP
}
// get_consensusAAC
std::string get_consensusAAC(std::vector<double> pos, const std::string& type, const double pseudocount);
RcppExport SEXP _universalmotif_get_consensusAAC(SEXP posSEXP, SEXP typeSEXP, SEXP pseudocountSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< std::vector<double> >::type pos(posSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type type(typeSEXP);
    Rcpp::traits::input_parameter< const double >::type pseudocount(pseudocountSEXP);
    rcpp_result_gen = Rcpp::wrap(get_consensusAAC(pos, type, pseudocount));
    return rcpp_result_gen;
END_RCPP
}
// check_fun_params
std::vector<std::string> check_fun_params(const Rcpp::List& param_args, std::vector<int> param_len, std::vector<bool> param_null, int expected_type);
RcppExport SEXP _universalmotif_check_fun_params(SEXP param_argsSEXP, SEXP param_lenSEXP, SEXP param_nullSEXP, SEXP expected_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type param_args(param_argsSEXP);
    Rcpp::traits::input_parameter< std::vector<int> >::type param_len(param_lenSEXP);
    Rcpp::traits::input_parameter< std::vector<bool> >::type param_null(param_nullSEXP);
    Rcpp::traits::input_parameter< int >::type expected_type(expected_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(check_fun_params(param_args, param_len, param_null, expected_type));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_universalmotif_add_multi_cpp", (DL_FUNC) &_universalmotif_add_multi_cpp, 3},
    {"_universalmotif_get_alphabet_cpp", (DL_FUNC) &_universalmotif_get_alphabet_cpp, 1},
    {"_universalmotif_calc_wins_cpp2", (DL_FUNC) &_universalmotif_calc_wins_cpp2, 4},
    {"_universalmotif_dust_cpp", (DL_FUNC) &_universalmotif_dust_cpp, 1},
    {"_universalmotif_trifonov_fast_cpp", (DL_FUNC) &_universalmotif_trifonov_fast_cpp, 3},
    {"_universalmotif_trifonov_cpp", (DL_FUNC) &_universalmotif_trifonov_cpp, 3},
    {"_universalmotif_wootton_federhen_fast_cpp", (DL_FUNC) &_universalmotif_wootton_federhen_fast_cpp, 2},
    {"_universalmotif_wootton_federhen_cpp", (DL_FUNC) &_universalmotif_wootton_federhen_cpp, 2},
    {"_universalmotif_slide_windows_cpp", (DL_FUNC) &_universalmotif_slide_windows_cpp, 5},
    {"_universalmotif_sliding_complexity_cpp", (DL_FUNC) &_universalmotif_sliding_complexity_cpp, 7},
    {"_universalmotif_average_cpp", (DL_FUNC) &_universalmotif_average_cpp, 2},
    {"_universalmotif_compare_motifs_cpp", (DL_FUNC) &_universalmotif_compare_motifs_cpp, 15},
    {"_universalmotif_compare_motifs_all_cpp", (DL_FUNC) &_universalmotif_compare_motifs_all_cpp, 13},
    {"_universalmotif_get_comparison_matrix", (DL_FUNC) &_universalmotif_get_comparison_matrix, 5},
    {"_universalmotif_view_motifs_prep", (DL_FUNC) &_universalmotif_view_motifs_prep, 12},
    {"_universalmotif_merge_motifs_cpp", (DL_FUNC) &_universalmotif_merge_motifs_cpp, 11},
    {"_universalmotif_compare_columns_cpp", (DL_FUNC) &_universalmotif_compare_columns_cpp, 7},
    {"_universalmotif_pval_extractor", (DL_FUNC) &_universalmotif_pval_extractor, 11},
    {"_universalmotif_count_klets_alph_cpp", (DL_FUNC) &_universalmotif_count_klets_alph_cpp, 4},
    {"_universalmotif_calc_seq_probs_cpp", (DL_FUNC) &_universalmotif_calc_seq_probs_cpp, 4},
    {"_universalmotif_peakfinder_cpp", (DL_FUNC) &_universalmotif_peakfinder_cpp, 2},
    {"_universalmotif_linbin_cpp", (DL_FUNC) &_universalmotif_linbin_cpp, 2},
    {"_universalmotif_motif_pvalue_cpp", (DL_FUNC) &_universalmotif_motif_pvalue_cpp, 6},
    {"_universalmotif_motif_score_cpp", (DL_FUNC) &_universalmotif_motif_score_cpp, 7},
    {"_universalmotif_branch_and_bound_cpp_exposed", (DL_FUNC) &_universalmotif_branch_and_bound_cpp_exposed, 2},
    {"_universalmotif_expand_scores", (DL_FUNC) &_universalmotif_expand_scores, 1},
    {"_universalmotif_paths_alph_unsort", (DL_FUNC) &_universalmotif_paths_alph_unsort, 2},
    {"_universalmotif_paths_to_alph", (DL_FUNC) &_universalmotif_paths_to_alph, 2},
    {"_universalmotif_motif_pvalue_dynamic_single_cpp", (DL_FUNC) &_universalmotif_motif_pvalue_dynamic_single_cpp, 3},
    {"_universalmotif_motif_score_dynamic_single_cpp", (DL_FUNC) &_universalmotif_motif_score_dynamic_single_cpp, 3},
    {"_universalmotif_calc_hit_gc", (DL_FUNC) &_universalmotif_calc_hit_gc, 2},
    {"_universalmotif_switch_antisense_coords_cpp", (DL_FUNC) &_universalmotif_switch_antisense_coords_cpp, 1},
    {"_universalmotif_add_gap_dots_cpp", (DL_FUNC) &_universalmotif_add_gap_dots_cpp, 2},
    {"_universalmotif_scan_sequences_cpp", (DL_FUNC) &_universalmotif_scan_sequences_cpp, 8},
    {"_universalmotif_shuffle_markov_cpp", (DL_FUNC) &_universalmotif_shuffle_markov_cpp, 4},
    {"_universalmotif_shuffle_euler_cpp", (DL_FUNC) &_universalmotif_shuffle_euler_cpp, 4},
    {"_universalmotif_shuffle_seq_local_cpp", (DL_FUNC) &_universalmotif_shuffle_seq_local_cpp, 7},
    {"_universalmotif_shuffle_linear_cpp", (DL_FUNC) &_universalmotif_shuffle_linear_cpp, 4},
    {"_universalmotif_shuffle_k1_cpp", (DL_FUNC) &_universalmotif_shuffle_k1_cpp, 3},
    {"_universalmotif_count_klets_cpp", (DL_FUNC) &_universalmotif_count_klets_cpp, 3},
    {"_universalmotif_split_seq_by_win", (DL_FUNC) &_universalmotif_split_seq_by_win, 3},
    {"_universalmotif_get_klets_cpp", (DL_FUNC) &_universalmotif_get_klets_cpp, 2},
    {"_universalmotif_create_sequences_cpp", (DL_FUNC) &_universalmotif_create_sequences_cpp, 8},
    {"_universalmotif_trim_motif_internal", (DL_FUNC) &_universalmotif_trim_motif_internal, 4},
    {"_universalmotif_universalmotif_cpp", (DL_FUNC) &_universalmotif_universalmotif_cpp, 22},
    {"_universalmotif_validObject_universalmotif", (DL_FUNC) &_universalmotif_validObject_universalmotif, 2},
    {"_universalmotif_summarise_motifs_cpp", (DL_FUNC) &_universalmotif_summarise_motifs_cpp, 1},
    {"_universalmotif_universalmotif_to_list", (DL_FUNC) &_universalmotif_universalmotif_to_list, 1},
    {"_universalmotif_round_motif_cpp", (DL_FUNC) &_universalmotif_round_motif_cpp, 2},
    {"_universalmotif_pval_str2double", (DL_FUNC) &_universalmotif_pval_str2double, 1},
    {"_universalmotif_split_gapped", (DL_FUNC) &_universalmotif_split_gapped, 2},
    {"_universalmotif_generate_motif", (DL_FUNC) &_universalmotif_generate_motif, 2},
    {"_universalmotif_min_max_ints", (DL_FUNC) &_universalmotif_min_max_ints, 0},
    {"_universalmotif_min_max_doubles", (DL_FUNC) &_universalmotif_min_max_doubles, 0},
    {"_universalmotif_comb2_cpp", (DL_FUNC) &_universalmotif_comb2_cpp, 1},
    {"_universalmotif_table_cpp", (DL_FUNC) &_universalmotif_table_cpp, 1},
    {"_universalmotif_order_char_cpp", (DL_FUNC) &_universalmotif_order_char_cpp, 1},
    {"_universalmotif_sort_unique_cpp", (DL_FUNC) &_universalmotif_sort_unique_cpp, 1},
    {"_universalmotif_collapse_rows_mat", (DL_FUNC) &_universalmotif_collapse_rows_mat, 1},
    {"_universalmotif_collapse_cols_mat", (DL_FUNC) &_universalmotif_collapse_cols_mat, 1},
    {"_universalmotif_collapse_rows_df", (DL_FUNC) &_universalmotif_collapse_rows_df, 1},
    {"_universalmotif_collapse_cpp", (DL_FUNC) &_universalmotif_collapse_cpp, 1},
    {"_universalmotif_print_pb", (DL_FUNC) &_universalmotif_print_pb, 1},
    {"_universalmotif_update_pb", (DL_FUNC) &_universalmotif_update_pb, 3},
    {"_universalmotif_all_checks_collapse", (DL_FUNC) &_universalmotif_all_checks_collapse, 1},
    {"_universalmotif_pcm_to_ppmC", (DL_FUNC) &_universalmotif_pcm_to_ppmC, 2},
    {"_universalmotif_ppm_to_pcmC", (DL_FUNC) &_universalmotif_ppm_to_pcmC, 2},
    {"_universalmotif_ppm_to_pwmC", (DL_FUNC) &_universalmotif_ppm_to_pwmC, 4},
    {"_universalmotif_pwm_to_ppmC", (DL_FUNC) &_universalmotif_pwm_to_ppmC, 2},
    {"_universalmotif_ppm_to_icmC", (DL_FUNC) &_universalmotif_ppm_to_icmC, 3},
    {"_universalmotif_position_icscoreC", (DL_FUNC) &_universalmotif_position_icscoreC, 6},
    {"_universalmotif_icm_to_ppmC", (DL_FUNC) &_universalmotif_icm_to_ppmC, 1},
    {"_universalmotif_get_consensusC", (DL_FUNC) &_universalmotif_get_consensusC, 4},
    {"_universalmotif_consensus_to_ppmC", (DL_FUNC) &_universalmotif_consensus_to_ppmC, 1},
    {"_universalmotif_consensus_to_ppmAAC", (DL_FUNC) &_universalmotif_consensus_to_ppmAAC, 1},
    {"_universalmotif_get_consensusAAC", (DL_FUNC) &_universalmotif_get_consensusAAC, 3},
    {"_universalmotif_check_fun_params", (DL_FUNC) &_universalmotif_check_fun_params, 4},
    {NULL, NULL, 0}
};

RcppExport void R_init_universalmotif(DllInfo *dll) {
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
}
