1 | ///////////////////////////////////////////////////////////// |
---|
2 | // StemCandidate.hpp |
---|
3 | // Profile Stem Candidate calcurated by profile base pairing |
---|
4 | // probability matrix |
---|
5 | //////////////////////////////////////////////////////////// |
---|
6 | |
---|
7 | #ifndef __STEMCANDIDATE_HPP__ |
---|
8 | #define __STEMCANDIDATE_HPP__ |
---|
9 | |
---|
10 | #include <string> |
---|
11 | #include <vector> |
---|
12 | |
---|
13 | using namespace std; |
---|
14 | |
---|
15 | namespace MXSCARNA { |
---|
16 | class StemCandidate { |
---|
17 | private: |
---|
18 | int numSeq; /* the number of sequences in the profile */ |
---|
19 | int length; /* length of profile stem candidate of fixed length */ |
---|
20 | int position; /* 5' start position of SC in profile */ |
---|
21 | int distance; |
---|
22 | std::vector<std::string> substr; /* profile base string of SC */ |
---|
23 | std::vector<std::string> rvstr; /* profile base string of stem partner of SC */ |
---|
24 | int rvposition; /* 3' end position of stem partner of SC */ |
---|
25 | int rvscnumber; /* SC number of stem partner */ |
---|
26 | int contPos; /* previous stem that corresponds continuous stem and has position -1. */ |
---|
27 | int beforePos; /* most recent stem that doesn't overlap to SC and has position -len. */ |
---|
28 | float score; /* score of the sum of base pairing probability matrix */ |
---|
29 | std::vector<float> baseScore; |
---|
30 | float stacking; /* the mean of stacking energy */ |
---|
31 | float stemStacking; /* the mean of 1-continuous stacking energy */ |
---|
32 | |
---|
33 | public: |
---|
34 | StemCandidate() : numSeq(0), length(0), position(0), distance(0), |
---|
35 | rvposition(0), rvscnumber(0), contPos(-1), beforePos(0), |
---|
36 | score(0), stacking(0), stemStacking(0) {} |
---|
37 | StemCandidate(int numSeq, int length) : numSeq(numSeq), length(length), |
---|
38 | substr(numSeq), rvstr(numSeq), |
---|
39 | contPos(-1) { } |
---|
40 | |
---|
41 | void SetNumSeq(int num) { numSeq = num; } |
---|
42 | void SetLength(int len) { length = len; } |
---|
43 | void SetNumSubstr(int num) { |
---|
44 | substr.resize(num); |
---|
45 | for(int i = 0; i < num; i++) { |
---|
46 | string &tmpStr = substr[i]; |
---|
47 | tmpStr = ""; |
---|
48 | substr[i] = tmpStr; |
---|
49 | } |
---|
50 | } |
---|
51 | void SetNumRvstr(int num) { |
---|
52 | rvstr.resize(num); |
---|
53 | |
---|
54 | for(int i = 0; i < num; i++) { |
---|
55 | string &tmpStr = rvstr[i]; |
---|
56 | tmpStr = ""; |
---|
57 | rvstr[i] = tmpStr; |
---|
58 | } |
---|
59 | } |
---|
60 | void SetPosition(int pos) { position = pos; } |
---|
61 | |
---|
62 | void AddSubstr(int num, char word) { |
---|
63 | std::string &tmpStr = substr[num]; |
---|
64 | tmpStr += word; |
---|
65 | substr[num] = tmpStr; |
---|
66 | } |
---|
67 | |
---|
68 | void AddRvstr(int num, char word) { |
---|
69 | std::string &tmpStr = rvstr[num]; |
---|
70 | tmpStr += word; |
---|
71 | rvstr[num] = tmpStr; |
---|
72 | } |
---|
73 | |
---|
74 | void AddBaseScore(float score) { |
---|
75 | baseScore.push_back(score); |
---|
76 | } |
---|
77 | |
---|
78 | void SetRvposition(int pos) { rvposition = pos; } |
---|
79 | void SetRvscnumber(int num) { rvscnumber = num; } |
---|
80 | void SetContPos(int pos) { contPos = pos; } |
---|
81 | void SetBeforePos(int pos) { beforePos = pos; } |
---|
82 | void SetDistance(int d) { distance = d; } |
---|
83 | void SetScore(float s) { score = s; } |
---|
84 | void AddScore(float s) { score += s; } |
---|
85 | void SetStacking(float s) { stacking = s; } |
---|
86 | void AddStacking(float s) { stacking += s; } |
---|
87 | void SetStemStacking(float s) { stemStacking = s; } |
---|
88 | int GetNumSeq() const { return numSeq; } |
---|
89 | int GetLength() const { return length; } |
---|
90 | int GetPosition() const { return position; } |
---|
91 | |
---|
92 | string GetSubstr(int num) const { |
---|
93 | const std::string &tmpStr = substr[num]; |
---|
94 | return tmpStr; |
---|
95 | } |
---|
96 | string GetRvstr(int num) const { |
---|
97 | const std::string &tmpStr = rvstr[num]; |
---|
98 | return tmpStr; |
---|
99 | } |
---|
100 | float GetBaseScore(int i) const { |
---|
101 | return baseScore[i]; |
---|
102 | } |
---|
103 | int GetRvposition() const { |
---|
104 | return rvposition; |
---|
105 | } |
---|
106 | int GetRvscnumber() const { |
---|
107 | return rvscnumber; |
---|
108 | } |
---|
109 | int GetContPos() const { |
---|
110 | return contPos; |
---|
111 | } |
---|
112 | int GetBeforePos() const { |
---|
113 | return beforePos; |
---|
114 | } |
---|
115 | int GetDistance() const { |
---|
116 | return distance; |
---|
117 | } |
---|
118 | float GetScore() const { |
---|
119 | return score; |
---|
120 | } |
---|
121 | float GetStacking() const { |
---|
122 | return stacking; |
---|
123 | } |
---|
124 | float GetStemStacking() const { |
---|
125 | return stemStacking; |
---|
126 | } |
---|
127 | }; |
---|
128 | } |
---|
129 | #endif // __STEMCANDIDATE_HPP__ |
---|