Ymir  .9
Fast\C++toolforcomputationofassemblingprobabilities,statisticalinferenceofassemblingstatisticalmodelandgenerationofartificialsequencesofT-cellreceptorsdata.
testutils.h
1 //
2 // Created by Vadim N. on 20/02/2016.
3 //
4 
5 #ifndef YMIR_TESTUTILS_H_H
6 #define YMIR_TESTUTILS_H_H
7 
8 
9 #include <iostream>
10 #include <list>
11 #include <sstream>
12 
13 #include "Inference"
14 
15 
16 namespace ymir {
17 
18 #define YMIR_TEST(res) { all_tests += 1; if (res.size() == 0) {tests_passed += 1;} \
19  else { \
20  failed_test_info.push_back(TestInfo(#res, res)); \
21  } \
22  }
23 
24 #define YMIR_TEST_START(funname) vector<string> funname() { std::cout << " --- " << (#funname) << std::endl; vector<string> _failed_cases;
25 #define YMIR_ASSERT(expr) { if (!(expr)) { _failed_cases.push_back(#expr); } };
26 #define YMIR_ASSERT2(expr1, expr2) { if ((expr1) != (expr2)) { std::stringstream ss; ss << #expr1 << " == " << #expr2 << " (result: " << (expr1) << ", need: " << (expr2) << ")";_failed_cases.push_back(ss.str()); } };
27 #define YMIR_TEST_END std::cout << std::endl; return _failed_cases; }
28 
29 #define YMIR_TEST_PRECISION 1e-14
30 
31  struct TestInfo {
32  string test_name;
33  vector<string> failed_cases;
34 
35  TestInfo(const string& name, const vector<string> vec) : test_name(name), failed_cases(vec) {}
36  };
37 
38  ModelParameterVector make_test_events_vj() {
39  vector<prob_t> v1; // param vec
40  vector<event_ind_t> v2; // lens vec
41  vector<event_ind_t> v3; // event classes
42  vector<seq_len_t> v4; // event family col numbers
43 
44  // V-J
45  v1.push_back(.05); v1.push_back(.025); v1.push_back(.035); // J1
46  v1.push_back(.045); v1.push_back(.055); v1.push_back(.065); // J2
47  v1.push_back(.075); v1.push_back(.085); v1.push_back(.565); // J3
48  v2.push_back(9);
49 
50  v3.push_back(0);
51  v4.push_back(3);
52 
53  // V del
54  v1.push_back(.4); v1.push_back(.5); v1.push_back(.05); v1.push_back(.02); v1.push_back(.03);
55  v2.push_back(5);
56 
57  v1.push_back(.3); v1.push_back(.1); v1.push_back(.2); v1.push_back(.4);
58  v2.push_back(4);
59 
60  v1.push_back(.75); v1.push_back(.005); v1.push_back(.01); v1.push_back(.02);
61  v1.push_back(.03); v1.push_back(.04); v1.push_back(.145);
62  v2.push_back(7);
63 
64  v3.push_back(1);
65  v4.push_back(0);
66  v4.push_back(0);
67  v4.push_back(0);
68 
69  // J del
70  v1.push_back(.07); v1.push_back(.2); v1.push_back(.3);
71  v1.push_back(.34); v1.push_back(.03); v1.push_back(.05);
72  v1.push_back(.01);
73  v2.push_back(7);
74  v4.push_back(0);
75 
76  v1.push_back(.125); v1.push_back(.175); v1.push_back(.3);
77  v1.push_back(.19); v1.push_back(.21);
78  v2.push_back(5);
79  v4.push_back(0);
80 
81  v1.push_back(.1); v1.push_back(.2); v1.push_back(.01); v1.push_back(.02);
82  v1.push_back(.03); v1.push_back(.04); v1.push_back(.6);
83  v2.push_back(7);
84  v4.push_back(0);
85 
86  v3.push_back(4);
87 
88  // VJ ins len
89  v1.push_back(.05); v1.push_back(.1); v1.push_back(.15); v1.push_back(.2); v1.push_back(.25); v1.push_back(.24); v1.push_back(.01);
90  v2.push_back(7);
91  v4.push_back(0);
92 
93  v3.push_back(7);
94 
95  // VJ ins nuc
96  v1.push_back(.1); v1.push_back(.2); v1.push_back(.3); v1.push_back(.4);
97  v2.push_back(4);
98  v4.push_back(0);
99 
100  v3.push_back(8);
101 
102  return ModelParameterVector(VJ_RECOMB, v1, v2, v3, v4, vector<prob_t>(), 0.03);
103  }
104 
105 
106  ModelParameterVector make_test_events_vj2() {
107  vector<prob_t> v1; // param vec
108  vector<event_ind_t> v2; // lens vec
109  vector<event_ind_t> v3; // event classes
110  vector<seq_len_t> v4; // event family col numbers
111 
112  // V-J
113  v1.push_back(.049); v1.push_back(.026); v1.push_back(.035); // J1
114  v1.push_back(.046); v1.push_back(.054); v1.push_back(.065); // J2
115  v1.push_back(.075); v1.push_back(.084); v1.push_back(.566); // J3
116  v2.push_back(9);
117 
118  v3.push_back(0);
119  v4.push_back(3);
120 
121  // V del
122  v1.push_back(.5); v1.push_back(.4); v1.push_back(.06); v1.push_back(.01); v1.push_back(.03);
123  v2.push_back(5);
124 
125  v1.push_back(.4); v1.push_back(.11); v1.push_back(.1); v1.push_back(.39);
126  v2.push_back(4);
127 
128  v1.push_back(.75); v1.push_back(.005); v1.push_back(.01); v1.push_back(.02);
129  v1.push_back(.03); v1.push_back(.04); v1.push_back(.145);
130  v2.push_back(7);
131 
132  v3.push_back(1);
133  v4.push_back(0);
134  v4.push_back(0);
135  v4.push_back(0);
136 
137  // J del
138  v1.push_back(.07); v1.push_back(.2); v1.push_back(.3);
139  v1.push_back(.34); v1.push_back(.03); v1.push_back(.05);
140  v1.push_back(.01);
141  v2.push_back(7);
142  v4.push_back(0);
143 
144  v1.push_back(.125); v1.push_back(.175); v1.push_back(.3);
145  v1.push_back(.19); v1.push_back(.21);
146  v2.push_back(5);
147  v4.push_back(0);
148 
149  v1.push_back(.1); v1.push_back(.2); v1.push_back(.01); v1.push_back(.02);
150  v1.push_back(.03); v1.push_back(.04); v1.push_back(.6);
151  v2.push_back(7);
152  v4.push_back(0);
153 
154  v3.push_back(4);
155 
156  // VJ ins len
157  v1.push_back(.1); v1.push_back(.05); v1.push_back(.2); v1.push_back(.15); v1.push_back(.24); v1.push_back(.01); v1.push_back(.25);
158  v2.push_back(7);
159  v4.push_back(0);
160 
161  v3.push_back(7);
162 
163  // VJ ins nuc
164  v1.push_back(.4); v1.push_back(.3); v1.push_back(.2); v1.push_back(.1);
165  v2.push_back(4);
166  v4.push_back(0);
167 
168  v3.push_back(8);
169 
170  return ModelParameterVector(VJ_RECOMB, v1, v2, v3, v4, vector<prob_t>(), 0.03);
171  }
172 
173 
174  ModelParameterVector make_test_events_vdj() {
175  vector<prob_t> v1; // param vec
176  vector<event_ind_t> v2; // lens vec
177  vector<event_ind_t> v3; // event classes
178  vector<seq_len_t> v4; // event family col numbers
179 
180  // V
181  v1.push_back(.5); v1.push_back(.25); v1.push_back(.25);
182  v2.push_back(3);
183 
184  v3.push_back(0);
185  v4.push_back(0);
186 
187  // J-D
188  // J-D (3 Js - 3 Ds)
189  v1.push_back(.01); v1.push_back(.02); v1.push_back(.03);
190  v1.push_back(.04); v1.push_back(.05); v1.push_back(.07);
191  v1.push_back(.08); v1.push_back(.09); v1.push_back(.61);
192 
193  v2.push_back(9);
194 
195  v3.push_back(1);
196  v4.push_back(3);
197 
198  // V del
199  v1.push_back(.4); v1.push_back(.5); v1.push_back(.05); v1.push_back(.02); v1.push_back(.03);
200  v2.push_back(5);
201 
202  v1.push_back(.3); v1.push_back(.1); v1.push_back(.2); v1.push_back(.4);
203  v2.push_back(4);
204 
205  v1.push_back(.75); v1.push_back(.005); v1.push_back(.01); v1.push_back(.02);
206  v1.push_back(.03); v1.push_back(.04); v1.push_back(.145);
207  v2.push_back(7);
208 
209  v3.push_back(2);
210  v4.push_back(0);
211  v4.push_back(0);
212  v4.push_back(0);
213 
214  // J del
215  v1.push_back(.07); v1.push_back(.2); v1.push_back(.3);
216  v1.push_back(.34); v1.push_back(.03); v1.push_back(.05);
217  v1.push_back(.01);
218  v2.push_back(7);
219 
220  v1.push_back(.125); v1.push_back(.175); v1.push_back(.3);
221  v1.push_back(.19); v1.push_back(.21);
222  v2.push_back(5);
223 
224  v1.push_back(.1); v1.push_back(.2); v1.push_back(.01); v1.push_back(.02);
225  v1.push_back(.03); v1.push_back(.04); v1.push_back(.6);
226  v2.push_back(7);
227 
228  v3.push_back(5);
229  v4.push_back(0);
230  v4.push_back(0);
231  v4.push_back(0);
232 
233  // D1 dels
234  // max 1 D3' del
235  // max 1 D5' del
236  v1.push_back(.17); // first row
237  v1.push_back(.27);
238  v1.push_back(.37); // second row
239  v1.push_back(.19);
240 
241  v2.push_back(4);
242  v4.push_back(2);
243 
244  // D2 dels
245  // max 2 D3' del
246  // max 1 D5' del
247  // 3 rows 2 columns
248  v1.push_back(.11); v1.push_back(.12);
249  v1.push_back(.13); v1.push_back(.14);
250  v1.push_back(.15); v1.push_back(.35);
251 
252  v2.push_back(6);
253  v4.push_back(2);
254 
255  // D3 dels
256  // max 1 D3' del
257  // max 1 D5' del
258  v1.push_back(.11); // first row
259  v1.push_back(.22);
260  v1.push_back(.33); // second row
261  v1.push_back(.34);
262 
263  v2.push_back(4);
264  v4.push_back(2);
265 
266  v3.push_back(8);
267 
268  // VD ins len
269  v1.push_back(.05); v1.push_back(.1); v1.push_back(.15); v1.push_back(.2); v1.push_back(.25); v1.push_back(.24); v1.push_back(.01);
270  v2.push_back(7);
271 
272  v3.push_back(11);
273  v4.push_back(0);
274 
275  // DJ ins len
276  v1.push_back(.1); v1.push_back(.24); v1.push_back(.25); v1.push_back(.05); v1.push_back(.01); v1.push_back(.15); v1.push_back(.2);
277  v2.push_back(7);
278 
279  v3.push_back(12);
280  v4.push_back(0);
281 
282  // VD ins nuc
283  // prev A
284  v1.push_back(.05); v1.push_back(.08); v1.push_back(.03); v1.push_back(.84);
285  v2.push_back(4);
286 
287  v3.push_back(13);
288  v4.push_back(0);
289 
290  // prev C
291  v1.push_back(.4); v1.push_back(.1); v1.push_back(.3); v1.push_back(.2);
292  v2.push_back(4);
293 
294  v3.push_back(14);
295  v4.push_back(0);
296 
297  // prev G
298  v1.push_back(.25); v1.push_back(.1); v1.push_back(.15); v1.push_back(.5);
299  v2.push_back(4);
300 
301  v3.push_back(15);
302  v4.push_back(0);
303 
304  // prev T
305  v1.push_back(.15); v1.push_back(.1); v1.push_back(.25); v1.push_back(.5);
306  v2.push_back(4);
307 
308  v3.push_back(16);
309  v4.push_back(0);
310 
311  // DJ ins nuc
312  // prev A
313  v1.push_back(.25); v1.push_back(.1); v1.push_back(.15); v1.push_back(.5);
314  v2.push_back(4);
315 
316  v3.push_back(17);
317  v4.push_back(0);
318 
319  // prev C
320  v1.push_back(.15); v1.push_back(.1); v1.push_back(.25); v1.push_back(.5);
321  v2.push_back(4);
322 
323  v3.push_back(18);
324  v4.push_back(0);
325 
326  // prev G
327  v1.push_back(.05); v1.push_back(.08); v1.push_back(.03); v1.push_back(.84);
328  v2.push_back(4);
329 
330  v3.push_back(19);
331  v4.push_back(0);
332 
333  // prev T
334  v1.push_back(.4); v1.push_back(.1); v1.push_back(.3); v1.push_back(.2);
335  v2.push_back(4);
336 
337  v3.push_back(20);
338  v4.push_back(0);
339 
340  vector<seq_len_t> v5; // min D genes len == 3
341  v5.push_back(3);
342  v5.push_back(3);
343  v5.push_back(3);
344 
345  return ModelParameterVector(VDJ_RECOMB, v1, v2, v3, v4, vector<prob_t>(), 0.03, true, v5);
346  }
347 
348 
349  ModelParameterVector make_test_events_vdj2() {
350  vector<prob_t> v1; // param vec
351  vector<event_ind_t> v2; // lens vec
352  vector<event_ind_t> v3; // event classes
353  vector<seq_len_t> v4; // event family col numbers
354 
355  // V
356  v1.push_back(.5); v1.push_back(.15); v1.push_back(.35);
357  v2.push_back(3);
358 
359  v3.push_back(0);
360  v4.push_back(0);
361 
362  // J-D
363  // J-D (3 Js - 3 Ds)
364  v1.push_back(.02); v1.push_back(.03); v1.push_back(.03);
365  v1.push_back(.03); v1.push_back(.04); v1.push_back(.06);
366  v1.push_back(.07); v1.push_back(.1); v1.push_back(.62);
367 
368  v2.push_back(9);
369 
370  v3.push_back(1);
371  v4.push_back(3);
372 
373  // V del
374  v1.push_back(.5); v1.push_back(.4); v1.push_back(.04); v1.push_back(.03); v1.push_back(.03);
375  v2.push_back(5);
376 
377  v1.push_back(.35); v1.push_back(.05); v1.push_back(.25); v1.push_back(.35);
378  v2.push_back(4);
379 
380  v1.push_back(.74); v1.push_back(.006); v1.push_back(.02); v1.push_back(.01);
381  v1.push_back(.04); v1.push_back(.039); v1.push_back(.145);
382  v2.push_back(7);
383 
384  v3.push_back(2);
385  v4.push_back(0);
386  v4.push_back(0);
387  v4.push_back(0);
388 
389  // J del
390  v1.push_back(.08); v1.push_back(.1); v1.push_back(.2);
391  v1.push_back(.33); v1.push_back(.13); v1.push_back(.15);
392  v1.push_back(.01);
393  v2.push_back(7);
394 
395  v1.push_back(.125); v1.push_back(.175); v1.push_back(.3);
396  v1.push_back(.19); v1.push_back(.21);
397  v2.push_back(5);
398 
399  v1.push_back(.11); v1.push_back(.1); v1.push_back(.02); v1.push_back(.02);
400  v1.push_back(.02); v1.push_back(.03); v1.push_back(.7);
401  v2.push_back(7);
402 
403  v3.push_back(5);
404  v4.push_back(0);
405  v4.push_back(0);
406  v4.push_back(0);
407 
408  // D1 dels
409  // max 1 D3' del
410  // max 1 D5' del
411  v1.push_back(.18); // first row
412  v1.push_back(.28);
413  v1.push_back(.36); // second row
414  v1.push_back(.18);
415 
416  v2.push_back(4);
417  v4.push_back(2);
418 
419  // D2 dels
420  // max 2 D3' del
421  // max 1 D5' del
422  // 3 rows 2 columns
423  v1.push_back(.12); v1.push_back(.11);
424  v1.push_back(.14); v1.push_back(.13);
425  v1.push_back(.16); v1.push_back(.34);
426 
427  v2.push_back(6);
428  v4.push_back(2);
429 
430  // D3 dels
431  // max 1 D3' del
432  // max 1 D5' del
433  v1.push_back(.12); // first row
434  v1.push_back(.23);
435  v1.push_back(.32); // second row
436  v1.push_back(.33);
437 
438  v2.push_back(4);
439  v4.push_back(2);
440 
441  v3.push_back(8);
442 
443  // VD ins len
444  v1.push_back(.05); v1.push_back(.1); v1.push_back(.15); v1.push_back(.2); v1.push_back(.25); v1.push_back(.24); v1.push_back(.01);
445  v2.push_back(7);
446 
447  v3.push_back(11);
448  v4.push_back(0);
449 
450  // DJ ins len
451  v1.push_back(.1); v1.push_back(.24); v1.push_back(.25); v1.push_back(.05); v1.push_back(.01); v1.push_back(.15); v1.push_back(.2);
452  v2.push_back(7);
453 
454  v3.push_back(12);
455  v4.push_back(0);
456 
457  // VD ins nuc
458  // prev A
459  v1.push_back(.04); v1.push_back(.09); v1.push_back(.03); v1.push_back(.84);
460  v2.push_back(4);
461 
462  v3.push_back(13);
463  v4.push_back(0);
464 
465  // prev C
466  v1.push_back(.4); v1.push_back(.2); v1.push_back(.2); v1.push_back(.2);
467  v2.push_back(4);
468 
469  v3.push_back(14);
470  v4.push_back(0);
471 
472  // prev G
473  v1.push_back(.25); v1.push_back(.15); v1.push_back(.1); v1.push_back(.5);
474  v2.push_back(4);
475 
476  v3.push_back(15);
477  v4.push_back(0);
478 
479  // prev T
480  v1.push_back(.15); v1.push_back(.15); v1.push_back(.2); v1.push_back(.5);
481  v2.push_back(4);
482 
483  v3.push_back(16);
484  v4.push_back(0);
485 
486  // DJ ins nuc
487  // prev A
488  v1.push_back(.24); v1.push_back(.1); v1.push_back(.16); v1.push_back(.5);
489  v2.push_back(4);
490 
491  v3.push_back(17);
492  v4.push_back(0);
493 
494  // prev C
495  v1.push_back(.16); v1.push_back(.1); v1.push_back(.24); v1.push_back(.5);
496  v2.push_back(4);
497 
498  v3.push_back(18);
499  v4.push_back(0);
500 
501  // prev G
502  v1.push_back(.04); v1.push_back(.09); v1.push_back(.03); v1.push_back(.84);
503  v2.push_back(4);
504 
505  v3.push_back(19);
506  v4.push_back(0);
507 
508  // prev T
509  v1.push_back(.4); v1.push_back(.11); v1.push_back(.29); v1.push_back(.2);
510  v2.push_back(4);
511 
512  v3.push_back(20);
513  v4.push_back(0);
514 
515  vector<seq_len_t> v5; // min D genes len == 3
516  v5.push_back(3);
517  v5.push_back(3);
518  v5.push_back(3);
519 
520  return ModelParameterVector(VDJ_RECOMB, v1, v2, v3, v4, vector<prob_t>(), 0.03, true, v5);
521  }
522 
523 }
524 
525 #endif //YMIR_TESTUTILS_H_H
Definition: aligner.h:37
Definition: testutils.h:31
Class for storing parameters of assembling statistical model. Note: event with index 0 (zero) is "nul...
Definition: modelparametervector.h:68