File: Features.hpp

package info (click to toggle)
consensuscore 1.1.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 3,404 kB
  • sloc: cpp: 38,940; python: 2,083; ansic: 542; sh: 184; makefile: 82; cs: 10
file content (64 lines) | stat: -rw-r--r-- 2,051 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
61
62
63
64
// Author: David Alexander

#pragma once

#include <boost/range.hpp>
#include <boost/shared_array.hpp>
#include <boost/utility.hpp>
#include <string>
#include <vector>

#include <ConsensusCore/Feature.hpp>
#include <ConsensusCore/Types.hpp>

namespace ConsensusCore {
/// \brief An object containing observed features from a sequencing run.
struct SequenceFeatures
{
public:
    explicit SequenceFeatures(const std::string& seq);
    int Length() const { return sequence_.Length(); }
    Feature<char> Sequence() const { return sequence_; }

    /// Access to the sequence bases
    const char& operator[](int i) const { return sequence_[i]; }
    char ElementAt(int i) const { return (*this)[i]; }

private:
    Feature<char> sequence_;
};

/// \brief A features object that contains PulseToBase QV metrics
struct QvSequenceFeatures : public SequenceFeatures
{
    Feature<float> SequenceAsFloat;
    Feature<float> InsQv;
    Feature<float> SubsQv;
    Feature<float> DelQv;
    Feature<float> DelTag;
    Feature<float> MergeQv;

    explicit QvSequenceFeatures(const std::string& seq);

    QvSequenceFeatures(const std::string& seq, const float* insQv, const float* subsQv,
                       const float* delQv, const float* delTag, const float* mergeQv);

    QvSequenceFeatures(const std::string& seq, const Feature<float> insQv,
                       const Feature<float> subsQv, const Feature<float> delQv,
                       const Feature<float> delTag, const Feature<float> mergeQv);

    QvSequenceFeatures(const std::string& seq, const unsigned char* insQv,
                       const unsigned char* subsQv, const unsigned char* delQv,
                       const unsigned char* delTag, const unsigned char* mergeQv);
};

/// \brief A features object that contains sequence in channel space.
struct ChannelSequenceFeatures : SequenceFeatures
{
    Feature<int> Channel;

    explicit ChannelSequenceFeatures(const std::string& seq);

    ChannelSequenceFeatures(const std::string& seq, const std::vector<int>& channel);
};
}