File: MutationEnumerator.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 (60 lines) | stat: -rw-r--r-- 1,776 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
53
54
55
56
57
58
59
60
// Author: David Alexander, Lance Hepler

#pragma once

#include <ConsensusCore/Mutation.hpp>
#include <ConsensusCore/Types.hpp>
#include <ConsensusCore/Utils.hpp>

#include <string>
#include <vector>

namespace ConsensusCore {
namespace detail {
struct AbstractMutationEnumerator
{
    explicit AbstractMutationEnumerator(const std::string& tpl);
    virtual ~AbstractMutationEnumerator();

    virtual std::vector<Mutation> Mutations() const = 0;
    virtual std::vector<Mutation> Mutations(int beginPos, int endPos) const = 0;

protected:
    const std::string tpl_;
};
}  // detail

struct AllSingleBaseMutationEnumerator : detail::AbstractMutationEnumerator
{
    explicit AllSingleBaseMutationEnumerator(const std::string& tpl);

    std::vector<Mutation> Mutations() const;
    std::vector<Mutation> Mutations(int beginPos, int endPos) const;
};

struct UniqueSingleBaseMutationEnumerator : detail::AbstractMutationEnumerator
{
    explicit UniqueSingleBaseMutationEnumerator(const std::string& tpl);

    std::vector<Mutation> Mutations() const;
    std::vector<Mutation> Mutations(int beginPos, int endPos) const;
};

struct DinucleotideRepeatMutationEnumerator : detail::AbstractMutationEnumerator
{
    DinucleotideRepeatMutationEnumerator(const std::string& tpl, int minDinucRepeatElements = 3);

    std::vector<Mutation> Mutations() const;
    std::vector<Mutation> Mutations(int beginPos, int endPos) const;

private:
    int minDinucRepeatElements_;
};

template <typename T>
std::vector<Mutation> UniqueNearbyMutations(const T& mutationEnumerator,
                                            const std::vector<Mutation>& centers,
                                            int neighborhoodSize);
}

#include <ConsensusCore/Quiver/MutationEnumerator-inl.hpp>