File: ScanData.hpp

package info (click to toggle)
pbseqlib 5.3.5%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 7,020 kB
  • sloc: cpp: 77,250; python: 331; sh: 103; makefile: 41
file content (74 lines) | stat: -rw-r--r-- 2,388 bytes parent folder | download | duplicates (5)
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
65
66
67
68
69
70
71
72
73
74
// Author: Mark Chaisson

#ifndef DATASTRUCTURES_READS_SCAN_DATA_H_
#define DATASTRUCTURES_READS_SCAN_DATA_H_

#include <map>
#include <string>

#include <pbdata/Enumerations.h>
#include <pbdata/PacBioDefs.h>
#include <pbdata/reads/AcqParams.hpp>

class HDFScanDataReader;
class HDFScanDataWriter;

class ScanData
{
    friend class HDFScanDataReader;
    friend class HDFScanDataWriter;

public:
    // Convert base map from a std::map<char, size_t> to a std::string.
    // e.g., {{'A', 2}, {'C', 1}, {'T', 0}, {'G', 3}} --> TCAG
    static std::string BaseMapToStr(const std::map<char, size_t>& baseMap);

    // Convert base map from a std::string to a std::map<char, size_t>.
    // e.g., TCAG --> {{'A', 2}, {'C', 1}, {'T', 0}, {'G', 3}}
    static std::map<char, size_t> StrToBaseMap(const std::string& baseMapStr);

    // A baseMap must contain maps from bases (e.g., ACGT) to indices (e.g., 0, 1, 2, 3).
    static bool IsValidBaseMap(const std::map<char, size_t>& baseMap);

public:
    PlatformId platformId;
    float frameRate;
    unsigned int numFrames;
    std::string movieName, runCode;
    std::string whenStarted;
    std::map<char, size_t> baseMap;

    ScanData(const AcqParams& acqParams = AcqParams());
    std::string GetMovieName();

    ScanData& PlatformID(const PlatformId& id);
    ScanData& FrameRate(const float& rate);
    ScanData& NumFrames(const unsigned int& num);
    ScanData& MovieName(const std::string& name);
    ScanData& RunCode(const std::string& code);
    ScanData& WhenStarted(const std::string& when);
    ScanData& BaseMap(const std::map<char, size_t>& bmp);
    ScanData& BaseMap(const std::string& baseMapStr);
    ScanData& SequencingKit(const std::string sequencingKit);
    ScanData& BindingKit(const std::string bindingKit);
    ScanData& SetAcqParams(const AcqParams& acqParams);

    PlatformId PlatformID(void) const;
    float FrameRate(void) const;
    unsigned int NumFrames(void) const;
    std::string MovieName(void) const;
    std::string RunCode(void) const;
    std::string WhenStarted(void) const;
    std::map<char, size_t> BaseMap(void) const;
    std::string BaseMapStr(void) const;
    std::string SequencingKit(void) const;
    std::string BindingKit(void) const;
    AcqParams GetAcqParams(void) const;

private:
    std::string sequencingKit_;
    std::string bindingKit_;
    AcqParams acqParams_;
};

#endif