CMAPLE 1.0.0
C++ MAximum Parsimonious Likelihood Estimation
Loading...
Searching...
No Matches
seqregion.h
1#include "mutation.h"
2
3#pragma once
4#include <array>
5#include <memory> // for unique_ptr
6
7namespace cmaple {
9class SeqRegion : public Mutation {
10 public:
15 using LHType = std::array<cmaple::RealNumType, NUM_STATES>;
19 using LHPtrType = std::unique_ptr<LHType>;
25 enum SeqType {
30 };
31
32 private:
36 void computeLhAmbiguity(const LHType& entries);
37
44 void convertAmbiguiousState(cmaple::SeqRegion::SeqType seq_type,
45 int max_num_states);
46
52 void convertAmbiguiousStateDNA(int max_num_states);
53
59 void convertAmbiguiousStateAA(int max_num_states);
60
61 public:
67 cmaple::RealNumType plength_observation2node = -1;
68
79 cmaple::RealNumType plength_observation2root = -1;
80
84 LHPtrType likelihood;
85
89 cmaple::RealNumType getLH(int pos) const {
90 assert(type == TYPE_O);
91 return (*likelihood)[static_cast<unsigned long>(pos)];
92 }
93
97 SeqRegion() = default;
98
102 SeqRegion(cmaple::StateType n_type,
103 cmaple::PositionType n_position,
104 cmaple::RealNumType n_plength_observation = -1,
105 cmaple::RealNumType n_plength_from_root = -1,
106 LHPtrType n_likelihood = nullptr);
107
111 SeqRegion(cmaple::StateType n_type,
112 cmaple::PositionType n_position,
113 cmaple::RealNumType n_plength_observation,
114 cmaple::RealNumType n_plength_from_root,
115 const LHType& n_likelihood);
116
123 SeqRegion(cmaple::StateType n_type,
124 cmaple::PositionType n_position,
126 int max_num_states);
127
134 SeqRegion(Mutation* n_mutation,
136 int max_num_states);
137
141 // SeqRegion(SeqRegion* region, StateType num_states, bool copy_likelihood =
142 // true);
143
147 SeqRegion(SeqRegion&& region) noexcept = default;
151 SeqRegion& operator=(SeqRegion&& region) noexcept = default;
152
156 static inline SeqRegion clone(const SeqRegion& from) {
157 if (from.likelihood)
158 return SeqRegion(from.type, from.position, from.plength_observation2node,
159 from.plength_observation2root, *from.likelihood);
160 else
161 return SeqRegion(from.type, from.position, from.plength_observation2node,
162 from.plength_observation2root);
163 }
164
168 ~SeqRegion() = default;
169
173 bool operator==(const SeqRegion& seqregion_1) const;
174
180 static SeqType parseSeqType(const std::string& n_seqtype_str);
182};
183} // namespace cmaple
Definition seqregion.h:9
SeqType
Definition seqregion.h:25
@ SEQ_DNA
Definition seqregion.h:26
@ SEQ_PROTEIN
Definition seqregion.h:27
@ SEQ_UNKNOWN
Definition seqregion.h:29
@ SEQ_AUTO
Definition seqregion.h:28