File: SseRecursor.hpp

package info (click to toggle)
consensuscore 1.1.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 3,184 kB
  • sloc: cpp: 38,940; python: 2,082; ansic: 542; sh: 184; makefile: 85; cs: 10
file content (52 lines) | stat: -rw-r--r-- 1,771 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Author: David Alexander

#pragma once

#include <ConsensusCore/Edna/EdnaEvaluator.hpp>
#include <ConsensusCore/Matrix/DenseMatrix.hpp>
#include <ConsensusCore/Matrix/SparseMatrix.hpp>
#include <ConsensusCore/Quiver/QvEvaluator.hpp>
#include <ConsensusCore/Quiver/SimpleRecursor.hpp>
#include <ConsensusCore/Quiver/detail/Combiner.hpp>
#include <ConsensusCore/Quiver/detail/RecursorBase.hpp>

namespace ConsensusCore {

template <typename M, typename E, typename C>
class SseRecursor : public detail::RecursorBase<M, E, C>
{
public:
    void FillAlpha(const E& e, const M& guide, M& alpha) const;
    void FillBeta(const E& e, const M& guide, M& beta) const;

    float LinkAlphaBeta(const E& e, const M& alpha, int alphaColumn, const M& beta, int betaColumn,
                        int absoluteColumn) const;

    void ExtendAlpha(const E& e, const M& alpha, int beginColumn, M& ext,
                     int numExtColumns = 2) const;

    void ExtendBeta(const E& e, const M& beta, int endColumn, M& ext, int numExtColumns = 2,
                    int lengthDiff = 0) const;

public:
    //
    // Constructors
    //
    SseRecursor(int movesAvailable, const BandingOptions& banding);

private:
    // Used during bringup
    SimpleRecursor<M, E, C> simpleRecursor_;
};

typedef SseRecursor<DenseMatrix, QvEvaluator, detail::ViterbiCombiner> SseQvRecursor;

typedef SseRecursor<DenseMatrix, QvEvaluator, detail::SumProductCombiner> SseQvSumProductRecursor;

typedef SseRecursor<SparseMatrix, QvEvaluator, detail::ViterbiCombiner> SparseSseQvRecursor;

typedef SseRecursor<SparseMatrix, QvEvaluator, detail::SumProductCombiner>
    SparseSseQvSumProductRecursor;

typedef SseRecursor<SparseMatrix, EdnaEvaluator, detail::SumProductCombiner> SparseSseEdnaRecursor;
}