;
92 const stringkSeqEntryFile(
"data/7450545.seqentry.asn");
93m_SeqEntry = TestUtil::ReadObject<CSeq_entry>(kSeqEntryFile);
97BOOST_REQUIRE(m_Pssm &&
105 const stringkPssmFile(
"data/pssm_freq_ratios.asn");
106m_Pssm = TestUtil::ReadObject<CPssmWithParameters>(kPssmFile);
119x_ReadPssmFromFile();
123x_ReadSeqEntriesFromFile();
127m_OptHandle.
Reset();
130m_SeqEntry.
Reset();
140 const CSeq_id& seqid = (*itr)->GetSeq_id(1);
143 if(new_gi != last_gi)
149 else if( !seqid.
Equals(last_id) ) {
165subjects.push_back(ssl);
179subjects.push_back(ssl);
207m_OptHandle->SetEvalueThreshold(1.5);
211 CPsiBlastpsiblast(query_factory, dbadapter, m_OptHandle);
214BOOST_REQUIRE(
results[0].GetErrors().empty());
216 const intkNumExpectedMatchingSeqs = 3;
219BOOST_REQUIRE_EQUAL(kNumExpectedMatchingSeqs, s_CountNumberUniqueGIs(sas));
221 const size_tkNumExpectedHSPs = 3;
225expected_results[0].score = 64;
226expected_results[0].evalue = 2.46806e-1;
227expected_results[0].bit_score = 292610051e-7;
228expected_results[0].num_ident = 18;
229expected_results[0].starts.push_back(34);
230expected_results[0].starts.push_back(95);
231expected_results[0].lengths.push_back(53);
235 intstarts[] = { 203, 280, 220, -1, 226, 297, 258, -1, 265, 329 };
236 intlengths[] = { 17, 6, 32, 7, 39 };
237expected_results[1].score = 63;
238expected_results[1].evalue = 3.48342e-1;
239expected_results[1].bit_score = 288758055e-7;
240expected_results[1].num_ident = 24;
242back_inserter(expected_results[1].starts));
244back_inserter(expected_results[1].lengths));
249 intstarts[] = { 180, 97, 204, -1, 205, 121, -1, 127, 211, 128,
250241, -1, 242, 158, -1, 197, 281, 201, 306, -1, 318, 226, 323,
252 intlengths[] = { 24, 1, 6, 1, 30, 1, 39, 4, 25, 12, 5, 4, 35 };
253expected_results[2].score = 60;
254expected_results[2].evalue = 7.36231e-1;
255expected_results[2].bit_score = 277202068e-7;
256expected_results[2].num_ident = 42;
258back_inserter(expected_results[2].starts));
260back_inserter(expected_results[2].lengths));
284qa::CSeqAlignCmpOpts opts;
285qa::CSeqAlignCmp
cmp(expected_results, actual_results, opts);
287 boolidentical_results =
cmp.Run(&errors);
289BOOST_REQUIRE_MESSAGE(identical_results, errors);
297 CPsiBlastpsiblast(query_factory, dbadapter, m_OptHandle);
300BOOST_REQUIRE(
results[0].GetErrors().empty());
302 const intkNumExpectedMatchingSeqs = 4;
305BOOST_REQUIRE_EQUAL(kNumExpectedMatchingSeqs, s_CountNumberUniqueGIs(sas));
307 const size_tkNumExpectedHSPs = 4;
311expected_results[0].score = 63;
312expected_results[0].evalue = 2.96035e-1;
313expected_results[0].bit_score = 288758056e-7;
314expected_results[0].starts.push_back(34);
315expected_results[0].starts.push_back(95);
316expected_results[0].lengths.push_back(53);
317expected_results[0].num_ident = 18;
320expected_results[1].score = 59;
321expected_results[1].evalue = 9.29330e-1;
322expected_results[1].bit_score = 273350073e-7;
323expected_results[1].starts.push_back(203);
324expected_results[1].starts.push_back(280);
325expected_results[1].starts.push_back(220);
326expected_results[1].starts.push_back(-1);
327expected_results[1].starts.push_back(226);
328expected_results[1].starts.push_back(297);
329expected_results[1].starts.push_back(258);
330expected_results[1].starts.push_back(-1);
331expected_results[1].starts.push_back(265);
332expected_results[1].starts.push_back(329);
333expected_results[1].lengths.push_back(17);
334expected_results[1].lengths.push_back(6);
335expected_results[1].lengths.push_back(32);
336expected_results[1].lengths.push_back(7);
337expected_results[1].lengths.push_back(39);
338expected_results[1].num_ident = 24;
341expected_results[2].score = 52;
342expected_results[2].evalue = 6.67208;
343expected_results[2].bit_score = 246386102e-7;
344expected_results[2].starts.push_back(322);
345expected_results[2].starts.push_back(46);
346expected_results[2].lengths.push_back(28);
347expected_results[2].num_ident = 10;
351expected_results[3].score = 50;
352expected_results[3].evalue = 6.81719;
353expected_results[3].bit_score = 23.8682;
354expected_results[3].starts.push_back(295);
355expected_results[3].starts.push_back(23);
356expected_results[3].starts.push_back(301);
357expected_results[3].starts.push_back(-1);
358expected_results[3].starts.push_back(304);
359expected_results[3].starts.push_back(29);
360expected_results[3].lengths.push_back(6);
361expected_results[3].lengths.push_back(3);
362expected_results[3].lengths.push_back(23);
363expected_results[3].num_ident = 16;
368qa::CSeqAlignCmpOpts opts;
369qa::CSeqAlignCmp
cmp(expected_results, actual_results, opts);
371 boolidentical_results =
cmp.Run(&errors);
373BOOST_REQUIRE_MESSAGE(identical_results, errors);
378m_OptHandle->SetEvalueThreshold(5.0);
382 CPsiBlastpsiblast(query_factory, dbadapter, m_OptHandle);
385BOOST_REQUIRE(
results[0].GetErrors().empty());
387 const intkNumExpectedMatchingSeqs = 3;
390BOOST_REQUIRE_EQUAL(kNumExpectedMatchingSeqs, s_CountNumberUniqueGIs(sas));
392 const size_tkNumExpectedHSPs = 3;
396expected_results[0].score = 59;
397expected_results[0].evalue = 8.66100e-1;
398expected_results[0].bit_score = 273350073e-7;
399expected_results[0].starts.push_back(34);
400expected_results[0].starts.push_back(95);
401expected_results[0].lengths.push_back(53);
402expected_results[0].sequence_gis.SetQuery(7450545);
403expected_results[0].sequence_gis.SetSubject(22982149);
404expected_results[0].num_ident = 18;
408 intstarts[] = { 322 , 46 , -1 , 75 , 351 , 81 , -1 , 94 , 364 ,
40997 , -1 , 106 , 373 , 109 };
410 intlengths[] = { 29 , 6 , 13 , 3 , 9 , 3 , 17 };
411expected_results[1].score = 53;
412expected_results[1].evalue = 4.15768;
413expected_results[1].bit_score = 250238098e-7;
414expected_results[1].sequence_gis.SetQuery(7450545);
415expected_results[1].sequence_gis.SetSubject(43121985);
416expected_results[1].num_ident = 19;
418back_inserter(expected_results[1].starts));
420back_inserter(expected_results[1].lengths));
425 intstarts[] = { 125 , 199 , 146 , -1 , 148 , 220 , -1 , 228 ,
426156 , 233 , -1 , 250 , 173 , 252 , 179 , -1 , 181 , 258 ,
427220 , -1 , 226 , 297 , 258 , -1 , 265 , 329 };
428 intlengths[] = { 21 , 2 , 8 , 5 , 17 , 2 , 6 , 2 , 39 , 6 , 32 ,
430expected_results[2].score = 54;
431expected_results[2].evalue = 4.40967;
432expected_results[2].bit_score = 254090094e-7;
433expected_results[2].sequence_gis.SetQuery(7450545);
434expected_results[2].sequence_gis.SetSubject(13242404);
435expected_results[2].num_ident = 39;
437back_inserter(expected_results[2].starts));
439back_inserter(expected_results[2].lengths));
461qa::CSeqAlignCmpOpts opts;
462qa::CSeqAlignCmp
cmp(expected_results, actual_results, opts);
464 boolidentical_results =
cmp.Run(&errors);
466BOOST_REQUIRE_MESSAGE(identical_results, errors);
474 CPsiBlastpsiblast(query_factory, dbadapter, m_OptHandle);
477BOOST_REQUIRE(
results[0].GetErrors().empty());
479 const intkNumExpectedMatchingSeqs = 6;
482BOOST_REQUIRE_EQUAL(kNumExpectedMatchingSeqs, s_CountNumberUniqueGIs(sas));
484 const size_tkNumExpectedHSPs = 6;
488expected_results[0].score = 59;
489expected_results[0].evalue = 8.66100e-1;
490expected_results[0].bit_score = 273350073e-7;
491expected_results[0].starts.push_back(34);
492expected_results[0].starts.push_back(95);
493expected_results[0].lengths.push_back(53);
494expected_results[0].sequence_gis.SetQuery(7450545);
495expected_results[0].sequence_gis.SetSubject(22982149);
496expected_results[0].num_ident = 18;
500 intstarts[] = { 322 , 46 , -1 , 75 , 351 , 81 , -1 , 94 , 364 ,
50197 , -1 , 106 , 373 , 109 };
502 intlengths[] = { 29 , 6 , 13 , 3 , 9 , 3 , 17 };
503expected_results[1].score = 53;
504expected_results[1].evalue = 4.15768;
505expected_results[1].bit_score = 250238098e-7;
506expected_results[1].sequence_gis.SetQuery(7450545);
507expected_results[1].sequence_gis.SetSubject(43121985);
508expected_results[1].num_ident = 19;
510back_inserter(expected_results[1].starts));
512back_inserter(expected_results[1].lengths));
518 intstarts[] = { 125 , 199 , 146 , -1 , 148 , 220 , -1 , 228 ,
519156 , 233 , -1 , 250 , 173 , 252 , 179 , -1 , 181 , 258 ,
520220 , -1 , 226 , 297 , 258 , -1 , 265 , 329 };
521 intlengths[] = { 21 , 2 , 8 , 5 , 17 , 2 , 6 , 2 , 39 , 6 , 32 ,
523expected_results[2].score = 54;
524expected_results[2].evalue = 4.40967;
525expected_results[2].bit_score = 254090094e-7;
526expected_results[2].sequence_gis.SetQuery(7450545);
527expected_results[2].sequence_gis.SetSubject(13242404);
528expected_results[2].num_ident = 39;
530back_inserter(expected_results[2].starts));
532back_inserter(expected_results[2].lengths));
549qa::CSeqAlignCmpOpts opts;
550qa::CSeqAlignCmp
cmp(expected_results, actual_results, opts);
552 boolidentical_results =
cmp.Run(&errors);
554BOOST_REQUIRE_MESSAGE(identical_results, errors);
558 const intkNumIterations = 4;
559 const intkNumExpectedIterations = 2;
566 CPsiBlastpsiblast(query_factory, dbadapter, m_OptHandle);
568 inthits_below_threshold[kNumIterations] = { 0, 0, 0, 0 };
569 size_tnumber_hits[kNumIterations] = { 11, 14, 0, 0 };
571 intiteration_counter = 0;
574BOOST_REQUIRE(
results[0].GetErrors().empty());
576BOOST_REQUIRE_EQUAL(number_hits[iteration_counter],
577alignment->
Get().size());
582 stringm(
"On round ");
585BOOST_REQUIRE_MESSAGE(
586hits_below_threshold[iteration_counter]==(
int)ids.
size(), m);
591x_ComputePssmForNextIteration(*bioseq, alignment,
592m_OptHandle,
results[0].GetAncillaryData());
598BOOST_REQUIRE_EQUAL(kNumExpectedIterations, iteration_counter);
605 CPsiBlastpsiblast(m_Pssm, dbadapter, m_OptHandle);
608BOOST_REQUIRE(
results[0].GetErrors().empty());
610 const intkNumExpectedMatchingSeqs = 6;
612BOOST_REQUIRE_EQUAL(kNumExpectedMatchingSeqs, s_CountNumberUniqueGIs(sas));
614 const size_tkNumExpectedHSPs = 7;
619 intstarts[] = { 0, 941, -1, 1093, 152, 1094 };
620 intlengths[] = { 152, 1, 80 };
621expected_results[0].score = 595;
622expected_results[0].evalue = 2.70189-71;
623expected_results[0].bit_score = 233623298e-6;
624expected_results[0].num_ident = 101;
626back_inserter(expected_results[0].starts));
628back_inserter(expected_results[0].lengths));
633 intstarts[] = { 0, 154, -1, 308, 154, 309 };
634 intlengths[] = { 154, 1, 24 };
635expected_results[1].score = 424;
636expected_results[1].evalue = 6.54598e-49;
637expected_results[1].bit_score = 167754171e-6;
638expected_results[1].num_ident = 73;
640back_inserter(expected_results[1].starts));
642back_inserter(expected_results[1].lengths));
648{ 0, 190, 65, -1, 67, 255, 91, -1, 92, 279, 111, -1, 113, 298,
649-1, 304, 119, 305, 151, -1, 152, 337, 163, -1, 164, 348,
650-1, 374, 190, 380, 200, -1, 202, 390 };
652{ 65, 2, 24, 1, 19, 2, 6, 1, 32, 1, 11, 1, 26, 6, 10, 2, 30 };
653expected_results[2].score = 372;
654expected_results[2].evalue = 1.67386e-43;
655expected_results[2].bit_score = 147723793e-6;
656expected_results[2].num_ident = 87;
658back_inserter(expected_results[2].starts));
660back_inserter(expected_results[2].lengths));
664expected_results[3].score = 53;
665expected_results[3].evalue = 2.43336;
666expected_results[3].bit_score = 248451288e-7;
667expected_results[3].num_ident = 8;
668expected_results[3].starts.push_back(206);
669expected_results[3].starts.push_back(46);
670expected_results[3].lengths.push_back(19);
674 intstarts[] = { 177, 100, -1, 106, 183, 107, 205, -1, 215, 129 };
675 intlengths[] = { 6, 1, 22, 10, 14 };
676expected_results[4].score = 52;
677expected_results[4].evalue = 3.12771;
678expected_results[4].bit_score = 244599292e-7;
679expected_results[4].num_ident = 11;
681back_inserter(expected_results[4].starts));
683back_inserter(expected_results[4].lengths));
688 intstarts[] = { 74, 181, 108, -1, 109, 215 };
689 intlengths[] = { 34, 1, 23 };
690expected_results[5].score = 49;
691expected_results[5].evalue = 8.37737;
692expected_results[5].bit_score = 233043305e-7;
693expected_results[5].num_ident = 14;
695back_inserter(expected_results[5].starts));
697back_inserter(expected_results[5].lengths));
701expected_results[6].score = 49;
702expected_results[6].evalue = 8.62465;
703expected_results[6].bit_score = 233043305e-7;
704expected_results[6].num_ident = 6;
705expected_results[6].starts.push_back(188);
706expected_results[6].starts.push_back(709);
707expected_results[6].lengths.push_back(30);
712qa::CSeqAlignCmpOpts opts;
713qa::CSeqAlignCmp
cmp(expected_results, actual_results, opts);
715 boolidentical_results =
cmp.Run(&errors);
717BOOST_REQUIRE_MESSAGE(identical_results, errors);
724 CPsiBlastpsiblast(m_Pssm, dbadapter, m_OptHandle);
727BOOST_REQUIRE(
results[0].GetErrors().empty());
729 const intkNumExpectedMatchingSeqs = 4;
731BOOST_REQUIRE_EQUAL(kNumExpectedMatchingSeqs, s_CountNumberUniqueGIs(sas));
733 const size_tkNumExpectedHSPs = 5;
738 intstarts[] = { 0, 941, -1, 1093, 152, 1094 };
739 intlengths[] = { 152, 1, 80 };
740expected_results[0].score = 593;
741expected_results[0].evalue = 1.15934e-71;
742expected_results[0].bit_score = 232843196e-6;
743expected_results[0].sequence_gis.SetQuery(129295);
744expected_results[0].sequence_gis.SetSubject(34878800);
745expected_results[0].num_ident = 101;
747back_inserter(expected_results[0].starts));
749back_inserter(expected_results[0].lengths));
754 intstarts[] = { 0, 154, -1, 308, 154, 309 };
755 intlengths[] = { 154, 1, 24 };
756expected_results[1].score = 417;
757expected_results[1].evalue = 5.13954e-48;
758expected_results[1].bit_score = 165048071e-6;
759expected_results[1].sequence_gis.SetQuery(129295);
760expected_results[1].sequence_gis.SetSubject(34878800);
761expected_results[1].num_ident = 73;
763back_inserter(expected_results[1].starts));
765back_inserter(expected_results[1].lengths));
771{ 0, 190, 65, -1, 67, 255, 93, -1, 94, 281, 111, -1, 113, 298,
772-1, 304, 119, 305, 153, -1, 154, 339, 164, -1, 165, 349,
775{ 65, 2, 26, 1, 17, 2, 6, 1, 34, 1, 10, 1, 29, 4, 38 };
776expected_results[2].score = 359;
777expected_results[2].evalue = 1.18595e-41;
778expected_results[2].bit_score = 142706496e-6;
779expected_results[2].sequence_gis.SetQuery(129295);
780expected_results[2].sequence_gis.SetSubject(20092202);
781expected_results[2].num_ident = 85;
783back_inserter(expected_results[2].starts));
785back_inserter(expected_results[2].lengths));
789expected_results[3].score = 53;
790expected_results[3].evalue = 2.14427;
791expected_results[3].bit_score = 248354256e-7;
792expected_results[3].sequence_gis.SetQuery(129295);
793expected_results[3].sequence_gis.SetSubject(44343511);
794expected_results[3].starts.push_back(206);
795expected_results[3].starts.push_back(46);
796expected_results[3].lengths.push_back(19);
797expected_results[3].num_ident = 8;
800expected_results[4].score = 51;
801expected_results[4].evalue = 5.09267;
802expected_results[4].bit_score = 240650265e-7;
803expected_results[4].sequence_gis.SetQuery(129295);
804expected_results[4].sequence_gis.SetSubject(23481125);
805expected_results[4].starts.push_back(188);
806expected_results[4].starts.push_back(709);
807expected_results[4].lengths.push_back(30);
808expected_results[4].num_ident = 6;
829qa::CSeqAlignCmpOpts opts;
830qa::CSeqAlignCmp
cmp(expected_results, actual_results, opts);
832 boolidentical_results =
cmp.Run(&errors);
834BOOST_REQUIRE_MESSAGE(identical_results, errors);
843 CPsiBlastpsiblast(m_Pssm, dbadapter, m_OptHandle);
848 const intkNumExpectedMatchingSeqs = 6;
850BOOST_REQUIRE_EQUAL(kNumExpectedMatchingSeqs, s_CountNumberUniqueGIs(sas));
852 const size_tkNumExpectedHSPs = 7;
857 intstarts[] = { 0, 941, -1, 1093, 152, 1094 };
858 intlengths[] = { 152, 1, 80 };
859expected_results[0].score = 595;
860expected_results[0].evalue = 307180919e-71;
861expected_results[0].bit_score = 233623298e-6;
862expected_results[0].num_ident = 101;
864back_inserter(expected_results[0].starts));
866back_inserter(expected_results[0].lengths));
871 intstarts[] = { 0, 154, -1, 308, 154, 309 };
872 intlengths[] = { 154, 1, 24 };
873expected_results[1].score = 424;
874expected_results[1].evalue = 20700336e-50;
875expected_results[1].bit_score = 167754171e-6;
876expected_results[1].num_ident = 73;
878back_inserter(expected_results[1].starts));
880back_inserter(expected_results[1].lengths));
886{ 0, 190, 65, -1, 67, 255, 91, -1, 92, 279, 111, -1, 113, 298,
887-1, 304, 119, 305, 151, -1, 152, 337, 163, -1, 164, 348,
888-1, 374, 190, 380, 200, -1, 202, 390 };
890{ 65, 2, 24, 1, 19, 2, 6, 1, 32, 1, 11, 1, 26, 6, 10, 2, 30 };
891expected_results[2].score = 372;
892expected_results[2].evalue = 221677687e-45;
893expected_results[2].bit_score = 147723793e-6;
894expected_results[2].num_ident = 87;
896back_inserter(expected_results[2].starts));
898back_inserter(expected_results[2].lengths));
902expected_results[3].score = 53;
903expected_results[3].evalue = 216713461e-8;
904expected_results[3].bit_score = 248451288e-7;
905expected_results[3].num_ident = 8;
906expected_results[3].starts.push_back(206);
907expected_results[3].starts.push_back(46);
908expected_results[3].lengths.push_back(19);
912 intstarts[] = { 177, 100, -1, 106, 183, 107, 205, -1, 215, 129 };
913 intlengths[] = { 6, 1, 22, 10, 14 };
914expected_results[4].score = 52;
915expected_results[4].evalue = 283036546e-8;
916expected_results[4].bit_score = 244599292e-7;
917expected_results[4].num_ident = 11;
919back_inserter(expected_results[4].starts));
921back_inserter(expected_results[4].lengths));
926 intstarts[] = { 74, 181, 108, -1, 109, 215 };
927 intlengths[] = { 34, 1, 23 };
928expected_results[5].score = 49;
929expected_results[5].evalue = 630539642e-8;
930expected_results[5].bit_score = 233043305e-7;
931expected_results[5].num_ident = 14;
933back_inserter(expected_results[5].starts));
935back_inserter(expected_results[5].lengths));
939expected_results[6].score = 49;
940expected_results[6].evalue = 630539642e-8;
941expected_results[6].bit_score = 233043305e-7;
942expected_results[6].num_ident = 6;
943expected_results[6].starts.push_back(188);
944expected_results[6].starts.push_back(709);
945expected_results[6].lengths.push_back(30);
950qa::CSeqAlignCmpOpts opts;
951qa::CSeqAlignCmp
cmp(expected_results, actual_results, opts);
953 boolidentical_results =
cmp.Run(&errors);
955BOOST_REQUIRE_MESSAGE(identical_results, errors);
962 CPsiBlastpsiblast(m_Pssm, dbadapter, m_OptHandle);
967 const intkNumExpectedMatchingSeqs = 6;
969BOOST_REQUIRE_EQUAL(kNumExpectedMatchingSeqs, s_CountNumberUniqueGIs(sas));
971 const size_tkNumExpectedHSPs = 7;
976 intstarts[] = { 0, 941, -1, 1093, 152, 1094 };
977 intlengths[] = { 152, 1, 80 };
978expected_results[0].score = 595;
979expected_results[0].evalue = 307180919e-71;
980expected_results[0].bit_score = 233623298e-6;
981expected_results[0].num_ident = 101;
983back_inserter(expected_results[0].starts));
985back_inserter(expected_results[0].lengths));
990 intstarts[] = { 0, 154, -1, 308, 154, 309 };
991 intlengths[] = { 154, 1, 24 };
992expected_results[1].score = 424;
993expected_results[1].evalue = 20700336e-50;
994expected_results[1].bit_score = 167754171e-6;
995expected_results[1].num_ident = 73;
997back_inserter(expected_results[1].starts));
999back_inserter(expected_results[1].lengths));
1005{ 0, 190, 65, -1, 67, 255, 91, -1, 92, 279, 111, -1, 113, 298,
1006-1, 304, 119, 305, 151, -1, 152, 337, 163, -1, 164, 348,
1007-1, 374, 190, 380, 200, -1, 202, 390 };
1009{ 65, 2, 24, 1, 19, 2, 6, 1, 32, 1, 11, 1, 26, 6, 10, 2, 30 };
1010expected_results[2].score = 372;
1011expected_results[2].evalue = 221677687e-45;
1012expected_results[2].bit_score = 147723793e-6;
1013expected_results[2].num_ident = 87;
1015back_inserter(expected_results[2].starts));
1017back_inserter(expected_results[2].lengths));
1021expected_results[3].score = 53;
1022expected_results[3].evalue = 216713461e-8;
1023expected_results[3].bit_score = 248451288e-7;
1024expected_results[3].num_ident = 8;
1025expected_results[3].starts.push_back(206);
1026expected_results[3].starts.push_back(46);
1027expected_results[3].lengths.push_back(19);
1031 intstarts[] = { 177, 100, -1, 106, 183, 107, 205, -1, 215, 129 };
1032 intlengths[] = { 6, 1, 22, 10, 14 };
1033expected_results[4].score = 52;
1034expected_results[4].evalue = 283036546e-8;
1035expected_results[4].bit_score = 244599292e-7;
1036expected_results[4].num_ident = 11;
1038back_inserter(expected_results[4].starts));
1040back_inserter(expected_results[4].lengths));
1045 intstarts[] = { 74, 181, 108, -1, 109, 215 };
1046 intlengths[] = { 34, 1, 23 };
1047expected_results[5].score = 49;
1048expected_results[5].evalue = 630539642e-8;
1049expected_results[5].bit_score = 233043305e-7;
1050expected_results[5].num_ident = 14;
1052back_inserter(expected_results[5].starts));
1054back_inserter(expected_results[5].lengths));
1058expected_results[6].score = 49;
1059expected_results[6].evalue = 630539642e-8;
1060expected_results[6].bit_score = 233043305e-7;
1061expected_results[6].num_ident = 6;
1062expected_results[6].starts.push_back(188);
1063expected_results[6].starts.push_back(709);
1064expected_results[6].lengths.push_back(30);
1069qa::CSeqAlignCmpOpts opts;
1070qa::CSeqAlignCmp
cmp(expected_results, actual_results, opts);
1072 boolidentical_results =
cmp.Run(&errors);
1074BOOST_REQUIRE_MESSAGE(identical_results, errors);
1081 const intkNumIterations = 4;
1082 const intkNumExpectedIterations = 2;
1086 CPsiBlastpsiblast(m_Pssm, dbadapter, m_OptHandle);
1088 inthits_below_threshold[kNumIterations] = { 2, 2, 0, 0 };
1089 intnumber_hits[kNumIterations] = { 6, 5, 0, 0 };
1091 intiteration_counter = 0;
1094BOOST_REQUIRE(
results[0].GetErrors().empty());
1097BOOST_REQUIRE_EQUAL(number_hits[iteration_counter],
1098s_CountNumberUniqueGIs(alignment));
1103 stringm(
"On round ");
1106BOOST_REQUIRE_EQUAL(hits_below_threshold[iteration_counter],
1107(
int)ids.
size());
1111 const CBioseq&
query= m_Pssm->GetPssm().GetQuery().GetSeq();
1113x_ComputePssmForNextIteration(
query, alignment,
1114m_OptHandle,
results[0].GetAncillaryData());
1117iteration_counter++;
1120BOOST_REQUIRE_EQUAL(kNumExpectedIterations, iteration_counter);
1126 const intkNumIterations = 4;
1127 const intkNumExpectedIterations = 2;
1131 CPsiBlastpsiblast(m_Pssm, dbadapter, m_OptHandle);
1133 inthits_below_threshold[kNumIterations] = { 2, 2, 0, 0 };
1134 intnumber_hits[kNumIterations] = { 4, 3, 0, 0 };
1136 intiteration_counter = 0;
1139BOOST_REQUIRE(
results[0].GetErrors().empty());
1141BOOST_REQUIRE(alignment.
NotEmpty());
1142BOOST_REQUIRE_EQUAL(number_hits[iteration_counter],
1143s_CountNumberUniqueGIs(alignment));
1148 stringm(
"On round ");
1151BOOST_REQUIRE_EQUAL(hits_below_threshold[iteration_counter],
1152(
int)ids.
size());
1156 const CBioseq&
query= m_Pssm->GetPssm().GetQuery().GetSeq();
1158x_ComputePssmForNextIteration(
query, alignment,
1159m_OptHandle,
results[0].GetAncillaryData());
1162iteration_counter++;
1165BOOST_REQUIRE_EQUAL(kNumExpectedIterations, iteration_counter);
1179BOOST_REQUIRE_THROW(
CPsiBlastpsiblast(query_factory, dbadapter, m_OptHandle),
1185m_Pssm->SetPssm().SetIntermediateData().SetFreqRatios()) {
1190 CPsiBlastpsiblast(m_Pssm, dbadapter, m_OptHandle);
1193BOOST_REQUIRE( !messages.empty() );
1195 stringexpected_warning(
"Frequency ratios for PSSM are all zeros");
1199((*m)->GetMessage().find(expected_warning) != string::npos)) {
1200warning = (*m)->GetMessage();
1204BOOST_REQUIRE_MESSAGE(!warning.empty(),
"Did not find expected warning");
1210BOOST_REQUIRE_THROW(
CPsiBlastpsiblast(m_Pssm, dbadapter, m_OptHandle),
1216 CPsiBlastpsiblast(m_Pssm, dbadapter, m_OptHandle);
1222m_SearchDb->SetDatabaseName(
"dummy");
1224 CPsiBlastpsiblast(m_Pssm, dbadapter, m_OptHandle);
1229m_OptHandle.Reset();
1233BOOST_REQUIRE_THROW(
CPsiBlastpsiblast(query_factory, dbadapter, m_OptHandle),
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
Definitions which are dependant on the NCBI C++ Object Manager.
PSIDiagnosticsRequest * PSIDiagnosticsRequestNew(void)
Allocates a PSIDiagnosticsRequest structure, setting all fields to false.
Declares CBlastScopeSource class to create properly configured CScope objects to invoke the BLAST dat...
BOOST_AUTO_TEST_SUITE_END() static int s_GetSegmentFlags(const CBioseq &bioseq)
Defines BLAST error codes (user errors included)
Class whose purpose is to create CScope objects which have data loaders added with different prioriti...
CRef< objects::CScope > NewScope()
Create a new, properly configured CScope.
Interface to create a BlastSeqSrc suitable for use in CORE BLAST from a a variety of BLAST database/s...
NCBI C++ Object Manager dependant implementation of IQueryFactory.
Handle to the protein-protein options to the BLAST algorithm.
Wrapper class for PSIDiagnosticsRequest .
Represents the iteration state in PSI-BLAST.
Runs a single iteration of the PSI-BLAST algorithm on a BLAST database.
Search Results for All Queries.
Template class for iteration on objects of class C (non-medifiable version)
Source of query sequence data for BLAST Provides an interface for search classes to retrieve sequence...
Class for the messages for an individual query sequence.
@ eCompositionBasedStats
Composition-based statistics as in NAR 29:2994-3005, 2001.
@ eCompoForceFullMatrixAdjust
Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, unconditionally.
@ eNoCompositionBasedStats
Don't use composition based statistics.
@ eCompositionMatrixAdjust
Composition-based score adjustment as in Bioinformatics 21:902-911, 2005, conditioned on sequence pro...
CRef< CSearchResultSet > Run()
Run the PSI-BLAST engine for one iteration.
unsigned int GetIterationNumber() const
Return the number of the current iteration.
void SetPssm(CConstRef< objects::CPssmWithParameters > pssm)
This method allows the same object to be reused when performing multiple iterations.
ECompoAdjustModes GetCompositionBasedStats() const
Returns this mode, which mostly specifies whether composition of db sequence is taken into account wh...
const CBlastOptions & GetOptions() const
Return the object which this object is a handle for.
CRef< objects::CPssmWithParameters > PsiBlastComputePssmFromAlignment(const objects::CBioseq &query, CConstRef< objects::CSeq_align_set > alignment, CRef< objects::CScope > database_scope, const CPSIBlastOptionsHandle &opts_handle, CConstRef< CBlastAncillaryData > ancillary_data, PSIDiagnosticsRequest *diagnostics_req=0)
Computes a PSSM from the result of a PSI-BLAST iteration.
void PsiBlastComputePssmScores(CRef< objects::CPssmWithParameters > pssm, const CBlastOptions &opts)
Given a PSSM with frequency ratios and options, invoke the PSSM engine to compute the scores.
void Advance(const TSeqIds &list)
Advance the iterator by passing it the list of Seq-ids which passed the inclusion criteria for the cu...
static void GetSeqIds(CConstRef< objects::CSeq_align_set > seqalign, CConstRef< CPSIBlastOptionsHandle > opts, TSeqIds &retval)
Extract the sequence ids from the sequence alignment which identify those sequences that will be used...
@ eBlastDbIsProtein
protein
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
virtual bool Equals(const CSerialObject &object, ESerialRecursionMode how=eRecursive) const
Check if both objects contain the same values.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Optimized implementation of CSerialObject::Assign, which is not so efficient.
static bool PreferAccessionOverGi(void)
Check if the option to prefer accession.version over GI is enabled (SeqId/PreferAccessionOverGi or SE...
void SetId(CSeq_id &id)
set the 'id' field in all parts of this location
CConstBeginInfo ConstBegin(const C &obj)
Get starting point of non-modifiable object hierarchy.
CBioseq_Handle AddBioseq(CBioseq &bioseq, TPriority pri=kPriority_Default, EExist action=eExist_Throw)
Add bioseq, return bioseq handle.
static CRef< CObjectManager > GetInstance(void)
Return the existing object manager or create one.
void Reset(void)
Reset reference object.
bool NotEmpty(void) const THROWS_NONE
Check if CConstRef is not empty â pointing to an object and has a non-null value.
static string SizetToString(size_t value, TNumToStringFlags flags=0, int base=10)
Convert size_t to string.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
bool CanGetIntermediateData(void) const
Check if it is safe to call GetIntermediateData method.
const TFinalData & GetFinalData(void) const
Get the FinalData member data.
bool CanGetFinalData(void) const
Check if it is safe to call GetFinalData method.
void SetPssm(TPssm &value)
Assign a value to Pssm data member.
bool CanGetQuery(void) const
Check if it is safe to call GetQuery method.
bool CanGetScores(void) const
Check if it is safe to call GetScores method.
list< double > TFreqRatios
bool CanGetPssm(void) const
Check if it is safe to call GetPssm method.
const TPssm & GetPssm(void) const
Get the Pssm member data.
list< CRef< CSeq_align > > Tdata
const Tdata & Get(void) const
Get the member data.
TGi GetGi(void) const
Get the variant data.
TSet & SetSet(void)
Select the variant.
TSeq_set & SetSeq_set(void)
Assign a value to Seq_set data member.
Declares class which provides internal BLAST database representations to the internal BLAST APIs.
constexpr bool empty(list< Ts... >) noexcept
Magic spell ;-) needed for some weird compilers... very empiric.
std::vector< SeqAlign > TSeqAlignSet
Vector of neutral sequence alignments.
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)
NOTE: This file contains work in progress and the APIs are likely to change, please do not rely on th...
Defines a concrete strategy to obtain PSSM input data for PSI-BLAST.
Declares CPsiBlast, the C++ API for the PSI-BLAST engine.
Declarations of auxiliary functions/classes for PSI-BLAST.
Defines class which represents the iteration state in PSI-BLAST.
#define STATIC_ARRAY_SIZE(array)
Calculate the size of a static array.
BOOST_AUTO_TEST_CASE(TestSingleIteration_ProteinAsQuery_NoCBS)
C++ API for the PSI-BLAST PSSM engine.
static bool GetSeqId(const T &d, set< string > &labels, const string name="", bool detect=false, bool found=false)
API to compare CSeq-aligns produced by BLAST.
void SeqAlignSetConvert(const objects::CSeq_align_set &ss, std::vector< SeqAlign > &retval)
Converts a Seq-align-set into a neutral seqalign for use with the CSeqAlignCmp class.
Defines BLAST database access classes.
vector< SSeqLoc > TSeqLocVector
Vector of sequence locations.
CRef< CPssmWithParameters > x_ComputePssmForNextIteration(const CBioseq &query, CConstRef< CSeq_align_set > sset, CConstRef< CPSIBlastOptionsHandle > opts_handle, CConstRef< CBlastAncillaryData > ancillary_data)
IQueryFactory * s_SetupSubject(CConstRef< CBioseq_set > bioseq_set)
IQueryFactory * s_SetupSubject(CConstRef< CBioseq > bioseq)
void x_ReadSeqEntriesFromFile()
CRef< CPSIBlastOptionsHandle > m_OptHandle
CSearchDatabase * m_SearchDb
CRef< CSeq_entry > m_SeqEntry
Contains a single Bioseq.
void x_ReadPssmFromFile()
int s_CountNumberUniqueGIs(CConstRef< CSeq_align_set > sas)
CRef< CSeq_entry > m_SeqSet
Contains a Bioseq-set with two Bioseqs, gi 7450545 and gi 129295.
CRef< CPssmWithParameters > m_Pssm
Boolean frequency_ratios
request frequency ratios
Structure to represent a single sequence to be fed to BLAST.
Utility stuff for more convenient using of Boost.Test library.
Uniform BLAST Search Interface.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4