Ticket #1: main.cpp

File main.cpp, 27.7 KB (added by Ismail Sadiq, 12 years ago)
Line 
1/*
2 * main.cpp
3 *
4 * Created on: Feb 24, 2014
5 * Author: Ismail
6 */
7
8#include <time.h>
9#include <iostream>
10#include <stdio.h>
11#include <algorithm>
12#include <fstream>
13#include <string>
14#include <vector>
15#include <cstring>
16#include <cmath>
17#include <map>
18#include "functions.h"
19#include <stdio.h>
20#include <ctype.h>
21#include <sstream>
22using namespace std;
23
24
25int main()
26{
27
28 //cout << -DBL_MAX << endl;
29 //cout << "Enter the second number: ";
30 //cin >> num2;
31 //outputFile << "1" << "\t\t\t" << "0.7" << "\t\t\t" << "0.8" << endl;
32 //cout << "Enter the third number: ";
33 //cin >> num3;
34 //outputFile << num3 << endl;
35 //cout << "Enter the fourth number: ";
36 //cin >> num4;
37 //outputFile << num4 << endl;
38 //cout << "Enter the fifth number: ";
39 //cin >> num5;
40 //outputFile << num5 << endl;
41
42 //cout << "Done!\n";
43
44 //string number;
45 //ostringstream strstream;
46
47 /*
48 strstream << 111;
49 number = strstream.str();
50 cout << number << endl;
51 strstream.str("");
52 strstream << 110;
53 number = strstream.str();
54 cout << number << endl;
55 */
56
57
58 // 141 142 143
59 // 141 142 144
60 // 141 143 144
61 // 142 143 144
62
63 //cout << "Hello World!" << endl;
64
65 //int a = 10;
66 //int b = 20;
67 //double c = (double)a/b;
68
69 string one = "AAA";
70 string two = "AAA";
71
72 if (one == two)
73 {
74 int wait = 0;
75 }
76
77 //int dim3;
78 //for (dim3 = one.length(); dim3 >= 0; dim3--)
79 //{
80 //cout << dim3 << " ";
81 //}
82
83 int no_of_seqs = 3;
84 functions obj;
85
86 //obj.x1 = "GCGCCCUUAGCUC"; //obj.x1 = "GCGCCCUUAGCUC";
87 //obj.x2 = "GGCCCUAGCU"; //obj.x2 = "G-GCCCU-AGCU-";
88 //obj.x3 = "GCGCCCUACUC"; //obj.x3 = "GCGCCCU-A-CUC";
89 //obj.x1 = "GGGAAAUUAAUGUGAA"; //obj.x1 = "GGGAAAUUAAUGUGAA" "UGGGAAAUUAAUGUGAA";
90 //obj.x2 = "GGGAAUAAUGUGAA"; //obj.x2 = "GGGA-AU-AAUGUGAA" "UGG-AAAUUAAUG-GAA";
91 //obj.x3 = "GGGAAUUAAUGUGAA"; //obj.x3 = "GGGA-AUUAAUGUGAA" "UGG-AAAUUAAUGUGAA";
92 //obj.x1 = "GCGC";//obj.x1 = "GCGC";
93 //obj.x2 = "GCC"; //obj.x3 = "GC.C";
94 //obj.x3 = "GC"; //obj.x2 = "GC..";
95 //obj.x1 = "ACCCGGCCAUAGUGGCCGGGCAACACCCGGUCUCGUUUCGAACCCGGAAGUUAAGCCGGCCACGUCAGAACGGCCGUGAGGUCCGAGAGGCCUCGCAGCCGUUCUGAGCUGGGAU";
96 //obj.x2 = "ACCCGGCCAUAGCGGCCGGGCAACACCCGGACUCAUGUCGAACCCGGAAGUUAAGCCGGCCGCGUUGGGGGAUGCUGUGGGGUCCGCGAGGCCCCGCAGCGCCCCCAAGCCGGGAU";
97 //obj.x3 = "ACCCGGCAAUAGGCGCCGGUGCUACGCCCGGUCUCUUCAGAACCCGGAAGCUAAGGCCGGCGCCGCGGACGGGAGUACUGGGGUCCGCGAGGCCCCGGGAAACCGCCGUGCUGGGA";
98
99 //obj.x1 = "ACCCGGUCACAGUGAGCGGGCAACACCCGGACUCAUUUCGAACCCGGAAGUUAAGCCGCUCACGUUAGUGGGGCCGUGGAUACCGUGAGGAUCCGCAGCCCCACUAAGCUGGGAU";
100 //obj.x2 = "ACCCGGCCACAGUGAGCGGGCAACACCCGGACUCAUUUCGAACCCGGAAGUUAAGCCGCUCACGUUGGUGGGGCCGUGGAUACCGUGAGGAUCCGCAGCCCCACUAAGCUGGGAU";
101 //obj.x3 = "ACCCGGUCAUAGUGAGCGGGUAACACCCGGACUCGUUUCGAACCCGGAAGUUAAGCCGCUCACGUCAGAGGGGCCGUGGGAUCCGAGAGGGCCCGCAGCCUCUCUGAGCUGGGAU";
102
103 //obj.x1 = "GUAGCGGCCACAGCGGUGGGGUUCCUCCCGUACCCAUCCCGAACACGGAAGAUAAGCCCACCAGCGUUCCGGGGAUACUGGAGUGCGCGACCCUCUGGGAAACCGGGUUCGCCGCUAC";
104 //obj.x2 = "AGUGGUGGCCAUAUCGGCGGGGUUCCUCCCCGUACCCAUCCUGAACACGGAAGAUAAGCCCGCCAGCGUCCGGCAAUACUGGAGUGCGCGAGCCUCUGGGAAAUCCGGUUCGCCGCCAC";
105 //obj.x3 = "GGCGGCCACAGCGGUGGGGUUGCCUCCCGUACCCAUCCCGAACACGGAAGAUAAGCCCACCAGCGUUCCAGGGAUACUGGAGUGCGCGAGCCUCUGGGAAAUCCGGUUCGCCGCCA";
106
107 //obj.x1 = "UAAGGCGGCCAUAGCGGUGGGGUUACUCCCGUACCCAUCCCGAACACGGAAGAUAAGCCCGCCUGCGUUCCGGUCAGUACUGGAGUGCGCGAGCCUCUGGGAAAUCCGGUUCGCCGCCUACU";
108 //obj.x2 = "GCGGCCAGGGCGGAGGGGAAACACCCGUACCCAUUCCGAACACGGAAGUGAAGCCCUCCAGCGAACCAGCUAGUACUAGAGUGGGAGACCCUCUGGGAGCGCUGGUUCGCCGCC";
109 //obj.x3 = "UUGGCGACCAUAGCGGCGAGUGACCUCCCGUACCCAUCCCGAACACGGAAGAUAAGCUCGCCUGCGUUUCGGUCAGUACUGGAUUGGGCGACCCUCUGGGAAAUCUGAUUCGCCGCCACC";
110
111 //obj.x1 = "GCGGCCACAGCGGCGGGGCGACUCCCGUACCCAUCCCGAACACGGCAGAUAAGCCCGCCAGCGUUCCAGCGAGUACUGGAGUGUGCGAACCUCUGGGAAAACUG";
112 //obj.x2 = "GGGCGGCCAGAGCGGUGAGGUUCCACCCGUACCCAUCCCGAACACGGAAGUUAAGCUCGCCUGCGUUCUGGUCAGUACUGGAGUGAGCGAUCCUCUGGGAAAUCCAGUUCGCCGCCCCU";
113 //obj.x3 = "GGCGGCCAGAGCGGUGAGGUUCCACCCGUACCCAUCCCGAACACGGAAGUUAAGCUCACCUGCGUUCUGGUCAGUACUGGAGUGAGCGAUCCUCUGGGAAAUCCAGUUCGCCGCCC";
114
115
116 //obj.x1 = "AAUU"; //"A-AUU"
117 //obj.x2 = "AUAU"; //"AUAU-"
118 //obj.x3 = "AAU"; //"A--U-"
119
120 for (int count = 1; count < pow(2, no_of_seqs); count++)
121 {
122 obj.states.push_back(obj.dec_2_bin((long)count));
123 //cout << obj.states[count-1] << endl;
124 }
125
126 obj.string_parser_prob("hmmparam_states_3seq.txt"); // reading state transition parameters
127 obj.string_parser_prob("hmmparam_emissions_3seq.txt"); // reading state emission parameters
128 obj.prob_matrix_fill(); // forming matrix of all probabilities of emission
129 // cout << obj.emission_double.size() << endl;
130 obj.vector_assigner();
131
132 obj.map_fill();
133
134 char c[] = "emissions.txt";
135 obj.string_parser_emission(c);
136
137
138 /*// viterbi testing
139 obj.viterbi_matrix_initialisation();
140 obj.viterbi_3seq();
141 cout << "x1_aligned: " << obj.x1_aligned_reverse << endl;
142 cout << "x2_aligned: " << obj.x2_aligned_reverse << endl;
143 cout << "x3_aligned: " << obj.x3_aligned_reverse << endl;*/
144
145 //cout << "state trans: " << obj.prev_state_to_111["111"] << endl;
146
147 //cout << "index for '..C': " << obj.emission_indexes["..C"] << endl;
148 //cout << "index for '..G': " << obj.emission_indexes["..G"] << endl;
149 //cout << "index for 'AAA': " << obj.emission_indexes["AAA"] << endl;
150
151 // Reading Sequences
152
153 // printing sequences
154 // char a[] = "3_aligned_seq.aa";
155 // char a[] = "RF00005.seed.aa";
156 // char a[] = "RF00100.aa"; // 45 choose 3 possible combinations
157 // char a[] = "RF01689.aa"; // 144 choose 3 possible combinations
158 // obj.readfasta(a);
159
160 /*char a[] = "5s-rRNA.aa"; // 144 choose 3 possible combinations
161 obj.readfasta(a);
162 //cout << "length of seqs: " << obj.seqs.size() << endl;
163
164 //char b[] = "45choose3.txt";
165 char b[] = "120choose3.txt"; // testing for 487343 different combinations
166 obj.string_parser(b);
167 obj.standardiser();*/
168
169 //cout << "obj.seq_combinations.size: " << obj.seq_combinations.size() << endl;
170
171 //cout << "final combination: " << obj.seq_combinations[280839][0] << " " << obj.seq_combinations[280839][1] << " " << obj.seq_combinations[280839][2] << endl;
172
173 //cout << "seq1: " << obj.seqs[0] << endl;
174 //cout << "seq2: " << obj.seqs[1] << endl;
175 //cout << "seq3: " << obj.seqs[2] << endl;
176
177 //int seq_count;
178 //cout << "size of seq_comb: " << obj.seq_combinations.size() << endl;
179
180 //ofstream outputFile;
181 //outputFile.open("measurementparameters.txt");
182 cout << "combo#" << "\t\t" << "PPV" << "\t\t\t" << "Sensitivity" << endl;
183 //outputFile << "combo#" << "\t\t" << "PPV" << "\t\t\t" << "Sensitivity" << endl;
184
185 char a[] = "5s-rRNA.aa"; // 144 choose 3 possible combinations
186 obj.readfasta(a);
187
188 char b[] = "120choose3.txt"; // testing for 487343 different combinations
189 obj.string_parser(b);
190 obj.standardiser();
191
192 string known1, known2, known3;
193
194 //obj.x1_aligned_reverse = "AAA";
195 //obj.x2_aligned_reverse = "AAG";
196 //obj.x3_aligned_reverse = "A.A";
197
198 //obj.x1_aligned_reverse = "ACCCGGUCACAGUGAGCGGGCAACACCCGGACUCAUUUCGAACCCGGAAGUUAAGCCGCUCACGUUAGUGGG.GCCGUGGAUACCGUGAGGAUCCGCAG.CCCCACUAAGCUGGGAU";
199 //obj.x2_aligned_reverse = "ACCCGGCCACAGUGAGCGGGCAACACCCGGACUCAUUUCGAACCCGGAAGUUAAGCCGCUCACGUUGGUGGG.GCCGUGGAUACCGUGAGGAUCCGCAG.CCCCACUAAGCUGGGAU";
200 //obj.x3_aligned_reverse = "ACCCGGUCAUAGUGAGCGGGUAACACCCGGACUCGUUUCGAACCCGGAAGUUAAGCCGCUCA.CGUCAGAGGGGCCGUGGGAUCCGAGAGGGCCCGCAGCCUCUCUGA.GCUGGGAU";
201
202 //obj.x1_aligned_reverse = "ACCCGGCCAUAGUGGCCGG.GCAACACCCGGUCUCGUUUCGAACCCGGAAGUUAAGCCGGCCACGUCAGAACG....GCCGUGAGGUCCGAGAGGCCUCGCAGCCGUUCUGAGCUGGGAU";
203 //obj.x2_aligned_reverse = "ACCCGGCCAUAGCGGCCGG.GCAACACCCGGACUCAUGUCGAACCCGGAAGUUAAGCCGGCCGCGUUGG...GGGAUGCUGUGGGGUCCGCGAGGCCCCGCAGCGCCCCCAAGCCGGGAU";
204 //obj.x3_aligned_reverse = "ACCCGGCAAUAGGCGCCGGUGCUACGCCCGGUCUC.UUCAGAACCCGGAAGCUAAGGCCGGCGCCGCGG.ACGGGA.GUACUGGGGUCCGCGAGGCCCCGGGAAACCGCCGUGCUGGGA.";
205
206 //obj.known1 = "ACCCGGCCAUAGU.GGCCGGGCAACACCCGGUCUCGUUUCGAACCCGGAAGUUAAGCCGGCCACGUCAG..AACG.GCCGUGAGGUCCGAGAGG.CCUCGCAGCCGUU.CUGAGCUGGGAU";
207 //obj.known2 = "ACCCGGCCAUAGC.GGCCGGGCAACACCCGGACUCAUGUCGAACCCGGAAGUUAAGCCGGCCGCGUUGG..GGGAUGCUGUGGGGUCCGCGAGGCCCC.GCAGCGCCC.CCAAGCCGGGAU";
208 //obj.known3 = "ACCCGGCAAUAGGCGCCGGUGCUACGCCCGGUCUCUUCA.GAACCCGGAAGCUAAGGCCGGCG.CCGCGGACGGGAGUACUGGGGUCCGCGAGGCCCCGGGAA.ACCGCCGU.GCUGGGA.";
209
210 obj.x1_aligned_reverse = "G..CGGCCACAGCGGCGGGGCGACUCCCGUACCCAUCCCGAACACGGCAGAUAAGCCCGCCAGCGUUCCAGCGAGUACUGGAGUGUGCGAACCUCUGGGAAAACUG.............";
211 obj.x2_aligned_reverse = "GGGCGGCCAGAGCGGUGAGGUUCCACCCGUACCCAUCCCGAACACGGAAGUUAAGCUCGCCUGCGUUCUGGUCAGUACUGGAGUGAGCGAUCCUCUGGGAAAUCCAGUUCGCCGCCCCU";
212 obj.x3_aligned_reverse = "GG.CGGCCAGAGCGGUGAGGUUCCACCCGUACCCAUCCCGAACACGGAAGUUAAGCUCACCUGCGUUCUGGUCAGUACUGGAGUGAGCGAUCCUCUGGGAAAUCCAGUUCGCCGCCC..";
213
214 obj.known1 = "..GCGGCCACAGCGGCGGGGCGACUCCCGUACCCAUCCCGAACACGGCAGAUAAGCCCGCCAGCG.UUCCAGCGA.GUACUGGAGUGUGCGAACCUCUGGGAA.AACU....G........";
215 obj.known2 = "GGGCGGCCAGAGCGGUGAGGUUCCACCCGUACCCAUCCCGAACACGGAAGUUAAGCUCGCCUGCGUUC..UGGUCAGUACUGGAGUGAGCGAUCCUCUGGGAAAUCCAGUUCGCCGCCCCU";
216 obj.known3 = ".GGCGGCCAGAGCGGUGAGGUUCCACCCGUACCCAUCCCGAACACGGAAGUUAAGCUCACCUGCGUUC..UGGUCAGUACUGGAGUGAGCGAUCCUCUGGGAAAUCCAGUUCGCCGCCC..";
217
218
219 obj.alignment_scorer();
220 cout << "score_known: " << obj.score_known << endl;
221 cout << "score_pred: " << obj.score_pred << endl;
222 int wait = 1;
223
224
225
226 /*for (int i = 0; i < 50; i++)
227 {
228 int index1 = obj.seq_combinations[i][0] - 1;
229 int index2 = obj.seq_combinations[i][1] - 1;
230 int index3 = obj.seq_combinations[i][2] - 1;
231 //cout << "index1: " << index1 << endl;
232 //cout << "index2: " << index2 << endl;
233 //cout << "index3: " << index3 << endl;
234 obj.x1 = obj.seqs[index1];
235 obj.x2 = obj.seqs[index2];
236 obj.x3 = obj.seqs[index3];
237
238 obj.x1.erase(std::remove(obj.x1.begin(), obj.x1.end(), 'X'), obj.x1.end());
239 obj.x2.erase(std::remove(obj.x2.begin(), obj.x2.end(), 'X'), obj.x2.end());
240 obj.x3.erase(std::remove(obj.x3.begin(), obj.x3.end(), 'X'), obj.x3.end());
241
242 //cout << "i: " << i << endl;
243 //cout << "obj.seq_combinations[i][0]: " << obj.seq_combinations[i][0] << endl;
244 //cout << "obj.seq_combinations[i][1]: " << obj.seq_combinations[i][1] << endl;
245 //cout << "obj.seq_combinations[i][2]: " << obj.seq_combinations[i][2] << endl;
246 //cout << "x1_orig: " << obj.x1 << endl;
247 //cout << "x2_orig: " << obj.x2 << endl;
248 //cout << "x3_orig: " << obj.x3 << endl;
249
250 obj.standardiser2();
251 known1 = obj.x1;
252 known2 = obj.x2;
253 known3 = obj.x3;
254 //cout << "after processing: " << endl;
255 //cout << "known1: " << known1 << endl;
256 //cout << "known2: " << known2 << endl;
257 //cout << "known3: " << known3 << endl;
258
259 obj.standardiser3();
260 //cout << "x1: " << obj.x1 << endl;
261 //cout << "x2: " << obj.x2 << endl;
262 //cout << "x3: " << obj.x3 << endl;
263
264 obj.viterbi_matrix_initialisation();
265 obj.viterbi_3seq();
266
267 //cout << "x1: " << obj.x1 << endl;
268 //cout << "x2: " << obj.x2 << endl;
269 //cout << "x3: " << obj.x3 << endl;
270 //cout << "x1_aligned: " << obj.x1_aligned_reverse << endl;
271 //cout << "x2_aligned: " << obj.x2_aligned_reverse << endl;
272 //cout << "x3_aligned: " << obj.x3_aligned_reverse << endl;
273
274 obj.sensitivity_and_ppv_calculator(known1, known2, known3);
275
276 obj.x1_aligned.clear();
277 obj.x2_aligned.clear();
278 obj.x3_aligned.clear();
279 obj.x1_aligned_reverse.clear();
280 obj.x2_aligned_reverse.clear();
281 obj.x3_aligned_reverse.clear();
282
283 cout << i+1 << "\t\t\t" << obj.ppv << "\t\t\t" << obj.sensitivity << endl;
284 //outputFile << i+1 << "\t\t\t" << obj.ppv << "\t\t\t" << obj.sensitivity << endl;
285 }
286
287 //outputFile.close();
288 cout << "Done!" << endl;*/
289
290
291 //for (seq_count = 0; seq_count < obj.seq_combinations.size(); seq_count++)
292 //{
293 // cout << "index: " << seq_count << endl; // << " " << obj.seq_combinations[seq_count][0] << " "<< obj.seq_combinations[seq_count][1] << " " << obj.seq_combinations[seq_count][2] << endl;
294 //}
295
296 /*
297 obj.standardiser();
298 //obj.emission_prob_calc();
299 *
300 *
301 */
302
303 /*
304 string onefourtyone = "AUACUGAAGUUUGGUGGGGAAUCAGUGUGAAAUUCAUUGGCUCUACCUGGAACCGUAAAGUCGGAGCGCCACCCAGUAUAGUCCGUUGUUGAAUGAAGGCCAGGGAAAGUCUAGUUCUACUAAUAAUAA";
305 string onefourtytwo = "GUACUGUUAUUAAGGUGGGAAAUGAUGUGAAAUUCAUCAGCUGUGCUCGCAACGGUAAAUUAGUUAAAGUCCGAAGGCCACUCAGUAUAGUCCGGUGUUAGAAAGUAAUCGAGAAGAAUUACAAUCUUACAAUGAAAAA";
306 string onefourtythree = "UUCCUAAAAGCAUAGUGGGAAAGAGACGUGUAAUUCGUCCACAUUACUUGAUACGGUGAUAGUCCGAAUGCCACCUAGGAAUAGAUAGAGCAAGGAGACUCAAUGAAUAAAGUAACU";
307 string onefourtyfour = "AGGCUGAAAUGCAUGGUGGGAAAUCAGUGUGAAAUUCAUUGGCUGUUCCUGCAACCGUAAAGUCGGAGCGCCACCCAGCUUAGUCCGCUGAUGAAUGAUGGCCAGGAAAAGUCUAAUUCUAUAAUGAAAAA";
308 */
309
310 //cout << onefourtyone << endl;
311 //cout << onefourtytwo << endl;
312 //cout << onefourtythree << endl;
313
314 //obj.x1 = onefourtyone;
315 //obj.x2 = onefourtytwo;
316 //obj.x3 = onefourtythree;
317
318 //obj.x1 = onefourtyone;
319 //obj.x2 = onefourtytwo;
320 //obj.x3 = onefourtythree;
321
322 // rRNA seqs:
323 //obj.x1 = "ACCCGGCCAUAGUGGCCGGGCAACACCCGGUCUCGUUUCGAACCCGGAAGUUAAGCCGGCCACGUCAGAACGGCCGUGAGGUCCGAGAGGCCUCGCAGCCGUUCUGAGCUGGGAU";
324 //obj.x2 = "ACCCGGCCAUAGCGGCCGGGCAACACCCGGACUCAUGUCGAACCCGGAAGUUAAGCCGGCCGCGUUGGGGGAUGCUGUGGGGUCCGCGAGGCCCCGCAGCGCCCCCAAGCCGGGAU";
325 //obj.x3 = "ACCCGGCAAUAGGCGCCGGUGCUACGCCCGGUCUCUUCAGAACCCGGAAGCUAAGGCCGGCGCCGCGGACGGGAGUACUGGGGUCCGCGAGGCCCCGGGAAACCGCCGUGCUGGGA";
326
327 //obj.x1 = "ACCCGGUCACAGUGAGCGGGCAACACCCGGACUCAUUUCGAACCCGGAAGUUAAGCCGCUCACGUUAGUGGGGCCGUGGAUACCGUGAGGAUCCGCAGCCCCACUAAGCUGGGAU";
328 //obj.x2 = "ACCCGGCCACAGUGAGCGGGCAACACCCGGACUCAUUUCGAACCCGGAAGUUAAGCCGCUCACGUUGGUGGGGCCGUGGAUACCGUGAGGAUCCGCAGCCCCACUAAGCUGGGAU";
329 //obj.x3 = "ACCCGGUCAUAGUGAGCGGGUAACACCCGGACUCGUUUCGAACCCGGAAGUUAAGCCGCUCACGUCAGAGGGGCCGUGGGAUCCGAGAGGGCCCGCAGCCUCUCUGAGCUGGGAU";
330
331 //obj.x1 = "GUAGCGGCCACAGCGGUGGGGUUCCUCCCGUACCCAUCCCGAACACGGAAGAUAAGCCCACCAGCGUUCCGGGGAUACUGGAGUGCGCGACCCUCUGGGAAACCGGGUUCGCCGCUAC";
332 //obj.x2 = "AGUGGUGGCCAUAUCGGCGGGGUUCCUCCCCGUACCCAUCCUGAACACGGAAGAUAAGCCCGCCAGCGUCCGGCAAUACUGGAGUGCGCGAGCCUCUGGGAAAUCCGGUUCGCCGCCAC";
333 //obj.x3 = "GGCGGCCACAGCGGUGGGGUUGCCUCCCGUACCCAUCCCGAACACGGAAGAUAAGCCCACCAGCGUUCCAGGGAUACUGGAGUGCGCGAGCCUCUGGGAAAUCCGGUUCGCCGCCA";
334
335 //obj.x1 = "UAAGGCGGCCAUAGCGGUGGGGUUACUCCCGUACCCAUCCCGAACACGGAAGAUAAGCCCGCCUGCGUUCCGGUCAGUACUGGAGUGCGCGAGCCUCUGGGAAAUCCGGUUCGCCGCCUACU";
336 //obj.x2 = "GCGGCCAGGGCGGAGGGGAAACACCCGUACCCAUUCCGAACACGGAAGUGAAGCCCUCCAGCGAACCAGCUAGUACUAGAGUGGGAGACCCUCUGGGAGCGCUGGUUCGCCGCC";
337 //obj.x3 = "UUGGCGACCAUAGCGGCGAGUGACCUCCCGUACCCAUCCCGAACACGGAAGAUAAGCUCGCCUGCGUUUCGGUCAGUACUGGAUUGGGCGACCCUCUGGGAAAUCUGAUUCGCCGCCACC";
338
339 //obj.x1 = "GCGGCCACAGCGGCGGGGCGACUCCCGUACCCAUCCCGAACACGGCAGAUAAGCCCGCCAGCGUUCCAGCGAGUACUGGAGUGUGCGAACCUCUGGGAAAACUG";
340 //obj.x2 = "GGGCGGCCAGAGCGGUGAGGUUCCACCCGUACCCAUCCCGAACACGGAAGUUAAGCUCGCCUGCGUUCUGGUCAGUACUGGAGUGAGCGAUCCUCUGGGAAAUCCAGUUCGCCGCCCCU";
341 //obj.x3 = "GGCGGCCAGAGCGGUGAGGUUCCACCCGUACCCAUCCCGAACACGGAAGUUAAGCUCACCUGCGUUCUGGUCAGUACUGGAGUGAGCGAUCCUCUGGGAAAUCCAGUUCGCCGCCC";
342
343
344 //obj.x1 = "AUACUGAAGUUUGGUGGGGAAUCAGUGUG"; //"AUACUGAAG.UUUGGUGGGGAAUCAGUGUG"
345 //obj.x2 = "GUACUGUUAUUAAGGUGGGAAAUGAUGUG"; //"GUACUGUUAUUAAGGUGGGAAA.UGAUGUG"
346 //obj.x3 = "UUCCUAAAAGCAUAGUGGGAAAGAGACGUG"; //"UUCCUAAAAGCAUAGUGGGAAAGAGACGUG"
347
348
349 //obj.x1 = "GCGC"; //obj.x1 = "GCGC";
350 //obj.x2 = "GCG"; //obj.x2 = "GCG-";
351 //obj.x3 = "GC"; //obj.x3 = "G--C";
352
353 //obj.x1 = "GCGC"; //obj.x1 = "GCGC";
354 //obj.x2 = "GGC"; //obj.x3 = "G-GC";
355 //obj.x3 = "GG"; //obj.x2 = "G-G-";
356
357 //int sum = 0;
358
359
360 /*
361 // verifying emission probabilites
362 cout << "total emissions in state 010: " << obj.emission_in_states_count[10] << endl;
363 for ( map<string, double>::const_iterator iter = obj.emission_prob.begin(); iter != obj.emission_prob.end(); ++iter)
364 {
365 if (iter->first[0] == obj.gap && iter->first[1] != obj.gap && iter->first[2] == obj.gap)
366 {
367 //cout << "symbol: " << iter->first << " with count: " << iter->second << endl;
368 cout << "symbol: " << iter->first << " with prob: " << iter->second << endl;
369 sum += iter->second;
370 }
371 }
372
373 cout << sum << endl;
374
375 // verifying state transitions
376 cout << obj.prev_state_to_001["10"] << endl;
377 cout << obj.prev_state_to_010["10"] << endl;
378 cout << obj.prev_state_to_011["10"] << endl;
379 cout << obj.prev_state_to_100["10"] << endl;
380 cout << obj.prev_state_to_101["10"] << endl;
381 cout << obj.prev_state_to_110["10"] << endl;
382 cout << obj.prev_state_to_111["10"] << endl;
383
384
385
386
387 //cout << "size of emission prob. collection: " << obj.emission_prob_collection.size() << endl;
388 //obj.final_probability_calc();
389
390 //double sum = 0;
391
392
393 // traversing emission probabilities calculated from entire set of data
394 cout << "For state 001" << endl;
395 for ( map<string, double>::const_iterator iter = obj.emission_prob.begin(); iter != obj.emission_prob.end(); ++iter)
396 {
397 if (iter->first[0] == obj.gap && iter->first[1] == obj.gap && iter->first[2] != obj.gap)
398 {
399 cout << "emission: " << iter->first << " " << "prob: " << iter->second << endl;
400 sum += iter->second;
401 }
402 }
403
404
405 cout << "For state 010" << endl;
406 for ( map<string, double>::const_iterator iter = obj.emission_prob.begin(); iter != obj.emission_prob.end(); ++iter)
407 {
408 if (iter->first[0] == obj.gap && iter->first[1] != obj.gap && iter->first[2] == obj.gap)
409 {
410 cout << "emission: " << iter->first << " " << "prob: " << iter->second << endl;
411 sum += iter->second;
412 }
413 }
414
415 cout << "For state 011" << endl;
416 for ( map<string, double>::const_iterator iter = obj.emission_prob.begin(); iter != obj.emission_prob.end(); ++iter)
417 {
418 if (iter->first[0] == obj.gap && iter->first[1] != obj.gap && iter->first[2] != obj.gap)
419 {
420 cout << "emission: " << iter->first << " " << "prob: " << iter->second << endl;
421 sum += iter->second;
422 }
423 }
424
425 cout << "For state 100" << endl;
426 for ( map<string, double>::const_iterator iter = obj.emission_prob.begin(); iter != obj.emission_prob.end(); ++iter)
427 {
428 if (iter->first[0] != obj.gap && iter->first[1] == obj.gap && iter->first[2] == obj.gap)
429 {
430 cout << "emission: " << iter->first << " " << "prob: " << iter->second << endl;
431 sum += iter->second;
432 }
433 }
434
435 cout << "For state 101" << endl;
436 for ( map<string, double>::const_iterator iter = obj.emission_prob.begin(); iter != obj.emission_prob.end(); ++iter)
437 {
438 if (iter->first[0] != obj.gap && iter->first[1] == obj.gap && iter->first[2] != obj.gap)
439 {
440 cout << "emission: " << iter->first << " " << "prob: " << iter->second << endl;
441 sum += iter->second;
442 }
443 }
444
445 cout << "For state 110" << endl;
446 for ( map<string, double>::const_iterator iter = obj.emission_prob.begin(); iter != obj.emission_prob.end(); ++iter)
447 {
448 if (iter->first[0] != obj.gap && iter->first[1] != obj.gap && iter->first[2] == obj.gap)
449 {
450 cout << "emission: " << iter->first << " " << "prob: " << iter->second << endl;
451 sum += iter->second;
452 }
453 }
454
455 cout << "For state 111" << endl;
456 for ( map<string, double>::const_iterator iter = obj.emission_prob.begin(); iter != obj.emission_prob.end(); ++iter)
457 {
458 if (iter->first[0] != obj.gap && iter->first[1] != obj.gap && iter->first[2] != obj.gap)
459 {
460 cout << "emission: " << iter->first << " " << "prob: " << iter->second << endl;
461 sum += iter->second;
462 }
463 }*/
464
465
466 //cout << "sum of of emission probabilities in state: " << sum;
467
468 //for ( map<string, double>::const_iterator iter = obj.prev_state_to_001.begin(); iter != obj.prev_state_to_001.end(); ++iter)
469 //{
470 // cout << "state from: " << iter->first << " " << "prob: " << iter->second << endl;
471 //}
472
473 /*
474 string number;
475 stringstream strstream;
476 for(int it = 0; it < obj.states.size(); ++it)
477 {
478 strstream.str("");
479 strstream << obj.states[it];
480 number = strstream.str();
481 cout << "to state 001 from " << obj.states[it] << " " << "with prob: " << obj.prev_state_to_001[number] << endl;
482 cout << "to state 010 from " << obj.states[it] << " " << "with prob: " << obj.prev_state_to_010[number] << endl;
483 cout << "to state 011 from " << obj.states[it] << " " << "with prob: " << obj.prev_state_to_011[number] << endl;
484 cout << "to state 100 from " << obj.states[it] << " " << "with prob: " << obj.prev_state_to_100[number] << endl;
485 cout << "to state 101 from " << obj.states[it] << " " << "with prob: " << obj.prev_state_to_101[number] << endl;
486 cout << "to state 110 from " << obj.states[it] << " " << "with prob: " << obj.prev_state_to_110[number] << endl;
487 cout << "to state 111 from " << obj.states[it] << " " << "with prob: " << obj.prev_state_to_111[number] << endl;
488 }
489 */
490
491
492 /*cout << "printing emission_double" << endl;
493 for (int i = 0; i < obj.emission_double.size(); i++)
494 {
495 for (int j = 0; j < obj.emission_double[0].size(); j++)
496 {
497 cout << obj.emission_double[i][j] << " ";
498 }
499 cout << endl;
500 }*/
501
502
503 //cout << "index of ..A: " << obj.emission_indexes["..A"] << endl;
504 //cout << "index of ..C: " << obj.emission_indexes["..C"] << endl;
505 //cout << "value of prob1: " << obj.emission_double[obj.emission_indexes["..A"]][0] << endl;
506 //cout << "value of prob2: " << obj.emission_double[obj.emission_indexes["..C"]][0] << endl;
507
508 //obj.viterbi_matrix_initialisation();
509 //obj.viterbi_3seq();
510 //obj.forward_algo_3seq();
511 //obj.backward_algo_3seq();
512 //obj.max_expected_accuracy();
513
514 //cout << "x1_aligned: " << obj.x1_aligned_reverse << endl;
515 //cout << "x2_aligned: " << obj.x2_aligned_reverse << endl;
516 //cout << "x3_aligned: " << obj.x3_aligned_reverse << endl;
517
518 //cout << "aligned1: " << obj.align1 << endl;
519 //cout << "aligned2: " << obj.align2 << endl;
520 //cout << "aligned3: " << obj.align3 << endl;
521
522 /*cout << "x1: " << obj.x1 << endl;
523 cout << "x2: " << obj.x2 << endl;
524 cout << "x3: " << obj.x3 << endl;
525 cout << "x1_aligned_reversed: " << obj.x1_aligned << endl;
526 cout << "x2_aligned_reversed: " << obj.x2_aligned << endl;
527 cout << "x3_aligned_reversed: " << obj.x3_aligned << endl;*/
528
529 //obj.x1_aligned_reverse = "AUACUG.AAGUUUGGUGGGGAAUCAGUGUGAAAUUCAUUGGCUCUACCUGGAACCGUAA.........AGUCGGAGCGCCACCCAGUAUAGUCCGUUGUU.GAAUGAAGGCCAGGGAAAGUCUAGUUCUACUAAUAAUAA.......";
530 //obj.x2_aligned_reverse = "GUACUGUUAUUAAGGUGGGAAA.UGAUGUGAAAUUCAUCAGCUGUGCUCGCAACGGUAAAUUAGUUAAAGUCCGAAGGCCACUCAGUAUAGUCCGGUGUUAGAAAGUAAUCGAGAAGAAUUACAAUCUUACAAUGAAAAA.......";
531 //obj.x3_aligned_reverse = "UUCCUAAAAGCAUAGUGGGAAAGAGACGUGUAAUUCGUCCACAUUACUUGAUACGGUGAU........AGUCCGAAUGCCACCUAGGAA............UAGAUAGAGCAAGGAGA..........CUCAAUGAAUAAAGUAACU";
532
533 //string one_known = "AUACUGAAG.UUUGGUGGGGAAUCAGUGUGAAAUUCAUUGGCUCUACCUGGAACCGU...AA.A.....GUCGGAGCGCCACCCAGUAU.AGUCCGUUGUUGAAUGAAGGCCAGGGAAAGUC..U.AGUUCUACUAAUAAUA";
534 //string two_known = "GUACUGUUAUUAAGGUGGGAAA.UGAUGUGAAAUUCAUCAGCUGUGCUCGCAACGGUAAAUUAGUUAAAGUCCGAAGGCCACUCAGUAU.AGUCCGGUGUUAGAAAGUAAUCGAGAAGAAUU..ACAAUCUUAC.AAUGAAA";
535 //string three_known = "UUCCUAAAAGCAUAGUGGGAAAGAGACGUGUAAUUCGUCCACAUUACUUGAUACGGU...GAUA.....GUCCGAAUGCCACCUAGGAAUAGA...........U..AGAGCAAGGAGACUCAAUGAA...UAA.AGUAACU";
536
537 //string one_known = "AUACUGAAG..UUUGGUGGGGAAUCAGUGUGAAAUUCAUUGGCUCUACCUGGAACCGU...AA.A.....GUCGGAGCGCCACCCAGUAUAGUCCGUUGUUGAAUGAAGGCCAGGGAAAGUCU.AGUUCUACUAAUAAUAA.";
538 //string two_known = "GUACUGUUAU.UAAGGUGGGAAA.UGAUGUGAAAUUCAUCAGCUGUGCUCGCAACGGUAAAUUAGUUAAAGUCCGAAGGCCACUCAGUAUAGUCCGGUGUUAGAAAGUAAUCGAGAAGAAUUACAAUCUUAC.AAUGAAAAA";
539 //string three_known = "AGGCUGAAAUGCAUGGUGGGAAAUCAGUGUGAAAUUCAUUGGCUGUUCCUGCAACCGU...AA.A.....GUCGGAGCGCCACCCAGCUUAGUCCGCUGAUGAAUGAUGGCCAGGAAAAGUCU.AAUUCUAU.AAUGAAAAA";
540
541 //string one_known = "AUACUGAAG..UUUGGUGGGGAAUCAGUGUGAAAUUCAUUGGCUCUACCUGGAACCGUAA.AGUCGGAGCGCCACCCAGUAU.AGUCCGUUGUUGAAUGAAGGCCAGGGAAAGUC..U.AGUUCUACUAAUAAUAA.";
542 //string two_known = "UUCCUAAAAG.CAUAGUGGGAAAGAGACGUGUAAUUCGUCCACAUUACUUGAUACGGUGAUAGUCCGAAUGCCACCUAGGAAUAGA...........U..AGAGCAAGGAGACUCAAUGAA...UAA.AGUAACU..";
543 //string three_known = "AGGCUGAAAUGCAUGGUGGGAAAUCAGUGUGAAAUUCAUUGGCUGUUCCUGCAACCGUAA.AGUCGGAGCGCCACCCAGCUU.AGUCCGCUGAUGAAUGAUGGCCAGGAAAAGUC..U.AAUUCUAU.AAUGAAAAA";
544
545 //string one_known = "GUACUGUUAU.UAAGGUGGGAAA.UGAUGUGAAAUUCAUCAGCUGUGCUCGCAACGGUAAAUUAGUUAAAGUCCGAAGGCCACUCAGUAU.AGUCCGGUGUUAGAAAGUAAUCGAGAAGAAUU..ACAAUCUUAAAUGAAAAA";
546 //string two_known = "UUCCUAAAAG.CAUAGUGGGAAAGAGACGUGUAAUUCGUCCACAUUACUUGAUACGGU...GAUA.....GUCCGAAUGCCACCUAGGAAUAGA...........U..AGAGCAAGGAGACUCAAUGAA...UAAGUAACU..";
547 //string three_known = "AGGCUGAAAUGCAUGGUGGGAAAUCAGUGUGAAAUUCAUUGGCUGUUCCUGCAACCGU...AA.A.....GUCGGAGCGCCACCCAGCUU.AGUCCGCUGAUGAAUGAUGGCCAGGAAAAGUC..U.AAUUCUAAAUGAAAAA";
548
549 // rRNA seqs:
550 //string one_known = "ACCCGGCCAUAGU.GGCCGGGCAACACCCGGUCUCGUUUCGAACCCGGAAGUUAAGCCGGCCACGUCAG..AACG.GCCGUGAGGUCCGAGAGG.CCUCGCAGCCGUU.CUGAGCUGGGAU";
551 //string two_known = "ACCCGGCCAUAGC.GGCCGGGCAACACCCGGACUCAUGUCGAACCCGGAAGUUAAGCCGGCCGCGUUGG..GGGAUGCUGUGGGGUCCGCGAGGCCCC.GCAGCGCCC.CCAAGCCGGGAU";
552 //string three_known = "ACCCGGCAAUAGGCGCCGGUGCUACGCCCGGUCUCUUCA.GAACCCGGAAGCUAAGGCCGGCG.CCGCGGACGGGAGUACUGGGGUCCGCGAGGCCCCGGGAA.ACCGCCGU.GCUGGGA.";
553
554 //string one_known = "ACCCGGUCACAGUGAGCGGGCAACACCCGGACUCAUUUCGAACCCGGAAGUUAAGCCGCUCACGUUAGUGGG.GCCGUGGAUACCGUGAGGAUCCGCAG.CCCCACUAAGCUGGGAU";
555 //string two_known = "ACCCGGCCACAGUGAGCGGGCAACACCCGGACUCAUUUCGAACCCGGAAGUUAAGCCGCUCACGUUGGUGGG.GCCGUGGAUACCGUGAGGAUCCGCAG.CCCCACUAAGCUGGGAU";
556 //string three_known = "ACCCGGUCAUAGUGAGCGGGUAACACCCGGACUCGUUUCGAACCCGGAAGUUAAGCCGCUCA.CGUCAGAGGGGCCGUGGGAUCCGAGAGGGCCCGCAGCCUCUCUGA.GCUGGGAU";
557
558 //string one_known = ".GUAGCGGCCACAGCGGUGGGGUUCC.UC.CCGUACCCAUCCCGAACACGGAAGAUAAGCCCACCAGCGUUCCGGGGA.UACUGGAGUGCGCGACCCUCUGGGAA.ACCGGGUUCGCCGCUAC";
559 //string two_known = "AGUGGUGGCCAUAUCGGCGGGGUUCC.UCCCCGUACCCAUCCUGAACACGGAAGAUAAGCCCGCCAGCG..UCCGGCAAUACUGGAGUGCGCGAGCCUCUGGGAAAUCCGGU.UCGCCGCCAC";
560 //string three_known = "...GGCGGCCACAGCGGUGGGGUUGCCUC.CCGUACCCAUCCCGAACACGGAAGAUAAGCCCACCAGCGUUCCAGGGA.UACUGGAGUGCGCGAGCCUCUGGGAA.AUCCGGUUCGCCGCCA.";
561
562 //string one_known = "UAAGGCGGCCAUAGCGGUGGGGUUACUCCCGUACCCAUCCCGAACACGGAAGAUAAGCCCGCCUGCGUUCCGGUCAGUACUGGAGUGCGCGAGCCUCUGGGAAAUCCGGUUCGCCGCCUACU";
563 //string two_known = "....GCGGCCAGGGCGGAGGGGAAACACCCGUACCCAUUCCGAACACGGAAGUGAAGCCCUCCAGCGAACCAGCUAGUACUAGAGUGGGAGACCCUCUGGGAGCGCUGGUUCGCCGCC....";
564 //string three_known = ".UUGGCGACCAUAGCGGCGAGUGACCUCCCGUACCCAUCCCGAACACGGAAGAUAAGCUCGCCUGCGUUUCGGUCAGUACUGGAUUGGGCGACCCUCUGGGAAAUCUGAUUCGCCGCCACC.";
565
566 /*string one_known = "..GCGGCCACAGCGGCGGGGCGACUCCCGUACCCAUCCCGAACACGGCAGAUAAGCCCGCCAGCG.UUCCAGCGA.GUACUGGAGUGUGCGAACCUCUGGGAA.AACU....G........";
567 string two_known = "GGGCGGCCAGAGCGGUGAGGUUCCACCCGUACCCAUCCCGAACACGGAAGUUAAGCUCGCCUGCGUUC..UGGUCAGUACUGGAGUGAGCGAUCCUCUGGGAAAUCCAGUUCGCCGCCCCU";
568 string three_known = ".GGCGGCCAGAGCGGUGAGGUUCCACCCGUACCCAUCCCGAACACGGAAGUUAAGCUCACCUGCGUUC..UGGUCAGUACUGGAGUGAGCGAUCCUCUGGGAAAUCCAGUUCGCCGCCC..";
569
570 obj.sensitivity_and_ppv_calculator(one_known, two_known, three_known);*/
571 //cout << "sensitivity: " << obj.sensitivity << endl;
572 //cout << "ppv: " << obj.ppv << endl;
573
574 //comb 1:
575 //"AUACUGAAG.UUUGGUGGGGAAUCAGUGUGAAAUUCAUUGGCUCUACCUGGAACCGU...AA.A.....GUCGGAGCGCCACCCAGUAU.AGUCCGUUGUUGAAUGAAGGCCAGGGAAAGUC..U.AGUUCUACUAAUAAUA"
576 //"GUACUGUUAUUAAGGUGGGAAA.UGAUGUGAAAUUCAUCAGCUGUGCUCGCAACGGUAAAUUAGUUAAAGUCCGAAGGCCACUCAGUAU.AGUCCGGUGUUAGAAAGUAAUCGAGAAGAAUU..ACAAUCUUAC.AAUGAAA"
577 //"UUCCUAAAAGCAUAGUGGGAAAGAGACGUGUAAUUCGUCCACAUUACUUGAUACGGU...GAUA.....GUCCGAAUGCCACCUAGGAAUAGA...........U..AGAGCAAGGAGACUCAAUGAA...UAA.AGUAACU"
578
579 //comb 2:
580 //AUACUGAAG..UUUGGUGGGGAAUCAGUGUGAAAUUCAUUGGCUCUACCUGGAACCGU...AA.A.....GUCGGAGCGCCACCCAGUAUAGUCCGUUGUUGAAUGAAGGCCAGGGAAAGUCU.AGUUCUACUAAUAAUAA.
581 //GUACUGUUAU.UAAGGUGGGAAA.UGAUGUGAAAUUCAUCAGCUGUGCUCGCAACGGUAAAUUAGUUAAAGUCCGAAGGCCACUCAGUAUAGUCCGGUGUUAGAAAGUAAUCGAGAAGAAUUACAAUCUUAC.AAUGAAAAA
582 //AGGCUGAAAUGCAUGGUGGGAAAUCAGUGUGAAAUUCAUUGGCUGUUCCUGCAACCGU...AA.A.....GUCGGAGCGCCACCCAGCUUAGUCCGCUGAUGAAUGAUGGCCAGGAAAAGUCU.AAUUCUAU.AAUGAAAAA
583
584 //comb 4:
585 //GUACUGUUAU.UAAGGUGGGAAA.UGAUGUGAAAUUCAUCAGCUGUGCUCGCAACGGUAAAUUAGUUAAAGUCCGAAGGCCACUCAGUAU.AGUCCGGUGUUAGAAAGUAAUCGAGAAGAAUU..ACAAUCUUAAAUGAAAAA
586 //UUCCUAAAAG.CAUAGUGGGAAAGAGACGUGUAAUUCGUCCACAUUACUUGAUACGGU...GAUA.....GUCCGAAUGCCACCUAGGAAUAGA...........U..AGAGCAAGGAGACUCAAUGAA...UAAGUAACU..
587 //AGGCUGAAAUGCAUGGUGGGAAAUCAGUGUGAAAUUCAUUGGCUGUUCCUGCAACCGU...AA.A.....GUCGGAGCGCCACCCAGCUU.AGUCCGCUGAUGAAUGAUGGCCAGGAAAAGUC..U.AAUUCUAAAUGAAAAA
588
589 return 0;
590}