retval->
SetPacked_int().AddInterval(*
id, (*itr).GetFrom(), (*itr).GetTo());
100vector<TSeqRange> range_vec;
102range_vec.push_back(
TSeqRange(73011288, 73011591));
103range_vec.push_back(
TSeqRange(73080052, 73080223));
104range_vec.push_back(
TSeqRange(73096483, 73096589));
105range_vec.push_back(
TSeqRange(73097765, 73097864));
106range_vec.push_back(
TSeqRange(73113762, 73113809));
107range_vec.push_back(
TSeqRange(73119266, 73119340));
108range_vec.push_back(
TSeqRange(73168955, 73169141));
109range_vec.push_back(
TSeqRange(73178294, 73178376));
110range_vec.push_back(
TSeqRange(73220818, 73220920));
111range_vec.push_back(
TSeqRange(73223091, 73223365));
114ofstream o1(
"temploc1.out.asn");
122 SSeqLocsubj_seqloc(ssl1, scope);
123subjects.push_back(subj_seqloc);
127BOOST_CHECK_EQUAL(10, (
int) sav.size());
132BOOST_CHECK_EQUAL((
int)303, num_ident);
137ofstream o(
"seqalign.out.asn");
162subjects.push_back(
SSeqLoc(local_loc, local_scope));
214 int& counter = *
reinterpret_cast<int*
>(progress_info->
user_data);
224pair<int, int>& progress_pair =
225*
reinterpret_cast<pair<int, int>*
>(progress_info->
user_data);
227 if(++progress_pair.first == progress_pair.second) {
237 static intnum_calls = 0;
238 if(++num_calls < 3) {
264x_drop_ungapped = 22;
270x_drop_ungapped = 16;
276x_drop_ungapped = 22;
280x_drop_ungapped = 22;
288x_drop_ungapped = 22;
298gap_trigger = 19;
break;
300gap_trigger = 23;
break;
302gap_trigger = 23;
break;
304gap_trigger = 23;
break;
306gap_trigger = 19;
break;
315BOOST_CHECK_EQUAL(x_drop_ungapped,
317BOOST_CHECK_EQUAL(33, raw_cutoffs->
x_drop_gap);
324BOOST_CHECK_EQUAL(x_drop_ungapped,
326BOOST_CHECK_EQUAL(13, raw_cutoffs->
x_drop_gap);
333BOOST_CHECK_EQUAL(38, raw_cutoffs->
x_drop_gap);
339BOOST_CHECK_EQUAL(x_drop_ungapped,
350 size_tnum_total_alns = num_queries * num_subjects;
353BOOST_REQUIRE_EQUAL(result_alnvec.size(), num_total_alns);
360vector< CConstRef<CSeq_id> > id_prev_subjects;
361id_prev_subjects.resize(num_subjects);
363 boolprev_query_available =
false;
364vector<bool> prev_subjects_available(num_subjects,
false);
374 for(
size_ti_query = 0; i_query < num_queries; i_query++)
376prev_query_available =
false;
377 for(
size_ti_subject = 0; i_subject < num_subjects; i_subject++)
379 size_ti_lin_index = i_query * num_subjects + i_subject;
383BOOST_REQUIRE(aln_set.
NotNull());
387 if(aln_set->
Get().size() > 0)
396prev_query_available)
406prev_subjects_available[i_subject])
410id_prev_subjects[i_subject].GetObject()));
414prev_subjects_available[i_subject] =
true;
415id_prev_subjects[i_subject] = id_subject;
418prev_query_available =
true;
419id_prev_query = id_query;
434BOOST_CHECK_EQUAL(314, (
int)ungapped_stats->
lookup_hits);
437BOOST_CHECK_EQUAL(1, gapped_stats->
extensions);
441BOOST_CHECK_EQUAL(157, (
int)ungapped_stats->
lookup_hits);
444BOOST_CHECK_EQUAL(3, gapped_stats->
extensions);
448BOOST_CHECK_EQUAL(30, (
int)ungapped_stats->
lookup_hits);
451BOOST_CHECK_EQUAL(1, gapped_stats->
extensions);
455BOOST_CHECK_EQUAL(582, (
int)ungapped_stats->
lookup_hits);
462BOOST_CHECK_EQUAL(1, gapped_stats->
extensions);
466BOOST_CHECK_EQUAL(282, (
int)ungapped_stats->
lookup_hits);
469BOOST_CHECK_EQUAL(1, gapped_stats->
extensions);
473BOOST_CHECK_EQUAL(157, (
int)ungapped_stats->
lookup_hits);
476BOOST_CHECK_EQUAL(1, gapped_stats->
extensions);
480BOOST_CHECK_EQUAL(5, (
int)ungapped_stats->
lookup_hits);
483BOOST_CHECK_EQUAL(1, gapped_stats->
extensions);
487BOOST_CHECK_EQUAL(2590, (
int)ungapped_stats->
lookup_hits);
492BOOST_CHECK_EQUAL(18587, (
int)ungapped_stats->
lookup_hits);
497BOOST_CHECK_EQUAL(210, (
int)ungapped_stats->
lookup_hits);
500BOOST_CHECK_EQUAL(3, gapped_stats->
extensions);
504BOOST_CHECK_EQUAL(15, (
int)ungapped_stats->
lookup_hits);
507BOOST_CHECK_EQUAL(2, gapped_stats->
extensions);
511BOOST_CHECK_EQUAL(2129, (
int)ungapped_stats->
lookup_hits);
514BOOST_CHECK_EQUAL(8, gapped_stats->
extensions);
518BOOST_CHECK_EQUAL(963, (
int)ungapped_stats->
lookup_hits);
521BOOST_CHECK_EQUAL(11, gapped_stats->
extensions);
531BOOST_CHECK_EQUAL(3579, (
int)ungapped_stats->
lookup_hits);
534BOOST_CHECK_EQUAL(3580, (
int)ungapped_stats->
lookup_hits);
539BOOST_CHECK_EQUAL(3939, (
int)ungapped_stats->
lookup_hits);
542BOOST_CHECK_EQUAL(27, gapped_stats->
extensions);
546BOOST_CHECK_EQUAL(2666, (
int)ungapped_stats->
lookup_hits);
549BOOST_CHECK_EQUAL(2, gapped_stats->
extensions);
553BOOST_CHECK_EQUAL(5950, (
int)ungapped_stats->
lookup_hits);
556BOOST_CHECK_EQUAL(2, gapped_stats->
extensions);
560BOOST_CHECK_EQUAL(108, (
int)ungapped_stats->
lookup_hits);
566BOOST_CHECK_EQUAL(3, gapped_stats->
extensions);
570BOOST_CHECK_EQUAL(14, (
int)ungapped_stats->
lookup_hits);
573BOOST_CHECK_EQUAL(1, gapped_stats->
extensions);
588BOOST_REQUIRE(sav[0].NotEmpty());
589BOOST_REQUIRE( !sav[0]->IsEmpty() );
590BOOST_REQUIRE(sav[0]->
Get().begin()->NotEmpty());
601ofstream o(
"0.asn");
605BOOST_CHECK_EQUAL(232, num_ident);
617BOOST_CHECK_EQUAL((
size_t)1, ancillary_data.size());
618BOOST_CHECK( ancillary_data.front()->GetGappedKarlinBlk() !=
NULL);
619BOOST_CHECK( ancillary_data.front()->GetUngappedKarlinBlk() !=
NULL);
620BOOST_CHECK( ancillary_data.front()->GetSearchSpace() != (
Int8)0 );
630unique_ptr<SSeqLoc> subj(
638ofstream o(
"1.asn");
643BOOST_CHECK_EQUAL(1, (
int)sar->
GetSegs().
GetStd().size());
647 intscore = 0, comp_adj = 0;
650BOOST_CHECK_EQUAL(26, score);
651BOOST_CHECK_EQUAL(2, comp_adj);
656BOOST_CHECK_EQUAL((
size_t)1, ancillary_data.size());
657BOOST_REQUIRE( ancillary_data.front().NotEmpty() );
658BOOST_CHECK( ancillary_data.front()->GetGappedKarlinBlk() !=
NULL);
659BOOST_CHECK( ancillary_data.front()->GetUngappedKarlinBlk() !=
NULL);
660BOOST_CHECK( ancillary_data.front()->GetSearchSpace() != (
Int8)0 );
668pair<TSeqPos, TSeqPos> range(150000, 170000);
674BOOST_CHECK_EQUAL(11, (
int) sav[0]->
Get().
size());
676BOOST_CHECK_EQUAL(1, (
int)sar->
GetSegs().
GetStd().size());
677vector < CRef< CSeq_loc > > locs = sar->
GetSegs().
GetStd().front()->GetLoc();
681BOOST_CHECK_EQUAL(161, num_ident);
683ofstream o(
"minus1.new.asn");
701BOOST_CHECK_EQUAL(1, (
int) sav[0]->
Get().
size());
703BOOST_CHECK_EQUAL(1, (
int)sar->
GetSegs().
GetStd().size());
704vector < CRef< CSeq_loc > > locs = sar->
GetSegs().
GetStd().front()->GetLoc();
708BOOST_CHECK_EQUAL(11, num_ident);
710ofstream o(
"minus2.asn");
723unique_ptr<SSeqLoc> subj(
732BOOST_CHECK_EQUAL(1, (
int)sar->
GetSegs().
GetStd().size());
736BOOST_CHECK_EQUAL(229, num_ident);
738ofstream o(
"2.asn");
746BOOST_CHECK_EQUAL((
size_t)1, ancillary_data.size());
747BOOST_CHECK( ancillary_data.front()->GetGappedKarlinBlk() !=
NULL);
748BOOST_CHECK( ancillary_data.front()->GetUngappedKarlinBlk() !=
NULL);
749BOOST_CHECK( ancillary_data.front()->GetSearchSpace() != (
Int8)0 );
758unique_ptr<SSeqLoc> subj(
770BOOST_CHECK_EQUAL(1, (
int)sav[0]->Size());
778ofstream o(
"3.asn");
782BOOST_CHECK_EQUAL(5, num_ident);
803ofstream o(
"4.asn");
807BOOST_CHECK_EQUAL(377, num_ident);
819BOOST_CHECK_EQUAL((
size_t)1, ancillary_data.size());
820BOOST_CHECK( ancillary_data.front()->GetGappedKarlinBlk() !=
NULL);
821BOOST_CHECK( ancillary_data.front()->GetUngappedKarlinBlk() !=
NULL);
822BOOST_CHECK( ancillary_data.front()->GetSearchSpace() != (
Int8)0 );
835unique_ptr<SSeqLoc>
query(
851!
strcmp(
"BLASTN penalty must be negative",
858 CSeq_idqid(
"ref|NT_024524.13");
859pair<TSeqPos, TSeqPos> range(27886902, 27886932);
860unique_ptr<SSeqLoc>
query(
865 CSeq_idsid(
"emb|BX641126.1");
866unique_ptr<SSeqLoc> subj(
870options->SetTraditionalBlastnDefaults();
871options->SetMismatchPenalty(-1);
872options->SetMatchReward(1);
873options->SetGapXDropoff(100);
874options->SetMaskAtHash(
false);
883 const boolkHasProteinQuery(
true);
900unique_ptr<CAutoEnvironmentVariable> envvar1, envvar2;
907BOOST_REQUIRE_NO_THROW(
results= blaster.
Run());
908BOOST_REQUIRE_EQUAL(3U,
results->size());
909 for(
size_tquery_idx = 0; query_idx <
results->size(); query_idx++) {
910 const string& warnings((*
results)[query_idx].GetWarningStrings());
911 const string& errors((*
results)[query_idx].GetErrorStrings());
915oss <<
"Forced splitting of queries: ";
917oss <<
"No splitting of queries: ";
920 if(query_idx == 0 || query_idx == 2) {
921oss <<
" expected no warnings/errors, got errors='"<< errors <<
"'; " 922<<
"warnings='"<< warnings <<
"'";
928<<
"; instead got '"<< warnings <<
"'";
943BOOST_REQUIRE(fnptr ==
NULL);
946 try{ sav = blaster.
Run(); }
948BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
958query_vec.push_back(*ql);
965subj_vec.push_back(*sl);
977 CLocalBlastblaster(queries, tblastn_opts, db_adapter);
981BOOST_CHECK_EQUAL((
size_t)1,
results->GetNumResults());
983BOOST_CHECK(
result.HasAlignments());
985BOOST_CHECK_EQUAL((
size_t)1, alignment->
Size());
988BOOST_CHECK_EQUAL(
static_cast<int>(
eNa_strand_unknown),
static_cast<int>((*aln)->GetSeqStrand(0)));
990BOOST_CHECK_EQUAL(
static_cast<int>(
eNa_strand_plus),
static_cast<int>((*aln)->GetSeqStrand(1)));
1003BOOST_REQUIRE(fnptr ==
NULL);
1006 try{ sav = blaster.
Run(); }
1008BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1019BOOST_REQUIRE(fnptr ==
NULL);
1022 try{ sav = blaster.
Run(); }
1024BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1031 CSeq_idsubj_id(
"gi|129295");
1037BOOST_REQUIRE(fnptr ==
NULL);
1040 try{ sav = blaster.
Run(); }
1042BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1055BOOST_REQUIRE(fnptr ==
NULL);
1058 try{ sav = blaster.
Run(); }
1060BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1065 CSeq_idquery_id(
"gi|129295");
1073BOOST_REQUIRE(fnptr ==
NULL);
1076 try{ sav = blaster.
Run(); }
1078BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1082 #define ARRAY_SIZE(a) (sizeof(a)/sizeof(*a)) 1088 TIntIdprotein_gis[] = { 6, 129295, 15606659, 4336138, 5556 };
1089 TIntIdnucl_gis[] = { 272208, 272217, 272211, 272247, 272227, 272236,
1092vector<TIntId> q_gis, s_gis;
1093 if(query_is_nucl) {
1096back_inserter(q_gis));
1098 copy(&protein_gis[0],
1100back_inserter(q_gis));
1106back_inserter(s_gis));
1108 copy(&protein_gis[0],
1110back_inserter(s_gis));
1115 ITERATE(vector<TIntId>, itr, q_gis) {
1121queries.push_back(
SSeqLoc(loc, scope));
1125 ITERATE(vector<TIntId>, itr, s_gis) {
1131subjects.push_back(
SSeqLoc(loc, scope));
1143 intnum_callbacks_executed(0);
1146(
void*) &num_callbacks_executed);
1147BOOST_REQUIRE(fnptr ==
NULL);
1151 intmax_interrupt_callbacks =
r.GetRand(1, num_callbacks_executed);
1152pair<int, int> progress_pair(make_pair(0, max_interrupt_callbacks));
1155(
void*)&progress_pair);
1159 try{ sav = blaster->Run(); }
1161BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1170 intnum_callbacks_executed(0);
1173(
void*)&num_callbacks_executed);
1174BOOST_REQUIRE(fnptr ==
NULL);
1178 intmax_interrupt_callbacks =
r.GetRand(1, num_callbacks_executed);
1179pair<int, int> progress_pair(make_pair(0, max_interrupt_callbacks));
1182(
void*)&progress_pair);
1186 try{ sav = blaster->Run(); }
1188BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1198 intnum_callbacks_executed(0);
1201(
void*) & num_callbacks_executed);
1202BOOST_REQUIRE(fnptr ==
NULL);
1206 intmax_interrupt_callbacks =
r.GetRand(1, num_callbacks_executed);
1207pair<int, int> progress_pair(make_pair(0, max_interrupt_callbacks));
1210(
void*)&progress_pair);
1214 try{ sav = blaster->Run(); }
1216BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1225 intnum_callbacks_executed(0);
1228(
void*)&num_callbacks_executed);
1229BOOST_REQUIRE(fnptr ==
NULL);
1233 intmax_interrupt_callbacks =
r.GetRand(1, num_callbacks_executed);
1234pair<int, int> progress_pair(make_pair(0, max_interrupt_callbacks));
1237(
void*)&progress_pair);
1241 try{ sav = blaster->Run(); }
1243BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1252 intnum_callbacks_executed(0);
1255(
void*) & num_callbacks_executed);
1256BOOST_REQUIRE(fnptr ==
NULL);
1260 intmax_interrupt_callbacks =
r.GetRand(1, num_callbacks_executed);
1261pair<int, int> progress_pair(make_pair(0, max_interrupt_callbacks));
1264(
void*)&progress_pair);
1268 try{ sav = blaster->Run(); }
1270BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1281BOOST_REQUIRE(fnptr ==
NULL);
1284 try{ sav = blaster.
Run(); }
1286BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1297BOOST_REQUIRE(fnptr ==
NULL);
1300 try{ sav = blaster->Run(); }
1302BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1312BOOST_REQUIRE(fnptr ==
NULL);
1315 try{ sav = blaster->Run(); }
1317BOOST_REQUIRE_EQUAL((
size_t)0, sav.size());
1322vector<TIntId> q_gis, s_gis;
1325q_gis.push_back(129295);
1326q_gis.push_back(-1);
1329s_gis.push_back(129295);
1330s_gis.push_back(4336138);
1333 ITERATE(vector<TIntId>, itr, q_gis) {
1339queries.push_back(
SSeqLoc(loc, scope));
1343 ITERATE(vector<TIntId>, itr, s_gis) {
1349subjects.push_back(
SSeqLoc(loc, scope));
1358BOOST_REQUIRE_EQUAL(subjects.size()*queries.size(), sas_v.size());
1360BOOST_REQUIRE(m[0].
empty());
1361BOOST_REQUIRE(!m[1].
empty());
1365BOOST_REQUIRE(qm.front()->GetMessage().find(
"Cannot resolve") !=
1370BOOST_REQUIRE_EQUAL(0, (
int) sas_v[2]->Size());
1374BOOST_REQUIRE_EQUAL(q_gis.size()*s_gis.size(), res->
GetNumResults());
1383vector<TIntId> q_gis, s_gis;
1386q_gis.push_back(296863684);
1387q_gis.push_back(129295);
1390s_gis.push_back(129296);
1393 ITERATE(vector<TIntId>, itr, q_gis) {
1399queries.push_back(
SSeqLoc(loc, scope));
1403 ITERATE(vector<TIntId>, itr, s_gis) {
1409subjects.push_back(
SSeqLoc(loc, scope));
1418BOOST_REQUIRE_EQUAL(subjects.size()*queries.size(), sas_v.size());
1420BOOST_REQUIRE(!m[0].
empty());
1421BOOST_REQUIRE(m[1].
empty());
1430 const TSeqPoskFakeBioseqLength = 12;
1431 const char byte(0);
1432vector<char> na_data(kFakeBioseqLength/4,
byte);
1436fake_bioseq->
SetInst().SetLength(kFakeBioseqLength);
1437fake_bioseq->
SetInst().SetSeq_data().SetNcbi2na().Set().swap(na_data);
1440fake_bioseq->
SetId().push_back(fake_id);
1446unique_ptr<SSeqLoc> sl_bad(
new SSeqLoc(*fake_loc, *scope));
1449BOOST_REQUIRE_EQUAL(kFakeBioseqLength,
len);
1452queries.push_back(*sl1);
1453queries.push_back(*sl_bad);
1454queries.push_back(*sl2);
1458unique_ptr<SSeqLoc> subj_loc
1461 subject.push_back(*subj_loc);;
1464opts_handle->SetMaskAtHash(
false);
1467sas_v = bl2seq.
Run();
1470BOOST_REQUIRE_EQUAL(sas_v.size(), m.size());
1471BOOST_REQUIRE_EQUAL(queries.size(), sas_v.size());
1473BOOST_REQUIRE(m[0].
empty());
1474BOOST_REQUIRE(!m[1].
empty());
1475BOOST_REQUIRE(m[2].
empty());
1480BOOST_REQUIRE(qm.size() == 1);
1483BOOST_REQUIRE((*itr)->GetMessage().find(
"Could not calculate " 1484 "ungapped Karlin-Altschul " 1491BOOST_REQUIRE((*alignments)->GetSegs().IsDisc());
1492BOOST_REQUIRE((*alignments)->GetSegs().GetDisc().Get().empty());
1521 SSeqLocsubj_seqloc(ssl, scope);
1525BOOST_REQUIRE_EQUAL(0
U, sav[0]->
Get().
size());
1531 const boolis_protein(
false);
1547subj_vec.push_back(
SSeqLoc(ssl, scope));
1554 size_tnum_queries = seqs->Size();
1555 size_tnum_subjects = subj_vec.size();
1556BOOST_REQUIRE_EQUAL((
size_t)1, num_queries);
1557BOOST_REQUIRE_EQUAL((
size_t)1, num_subjects);
1560 CLocalBlastblaster(queries, opts_handle, subjects);
1563BOOST_REQUIRE_EQUAL((num_queries*num_subjects),
1565BOOST_REQUIRE_EQUAL((num_queries*num_subjects),
results->size());
1566BOOST_REQUIRE_EQUAL(num_queries,
results->GetNumQueries());
1567BOOST_REQUIRE_EQUAL(num_subjects,
1582vector<TIntId> q_gis;
1592queries.push_back(
SSeqLoc(loc, scope));
1595BOOST_REQUIRE_THROW(
CLocalBlastblaster(query_fact, opts, subject_adapter),
1606 const string kFileName(
"data/blastp_compstats.fa");
1609 throwruntime_error(
"Failed to open "+
kFileName);
1611 throwruntime_error(
"Failed to read sequence from "+
kFileName);
1614 const stringkSeqIdString1(
"lcl|1");
1623opts_handle->SetWordSize(2);
1624opts_handle->SetEvalueThreshold(20000);
1625opts_handle->SetFilterString(
"F");
1626opts_handle->SetMatrixName(
"PAM30");
1627opts_handle->SetGapOpeningCost(9);
1628opts_handle->SetGapExtensionCost(1);
1629opts_handle->SetOptions().SetCompositionBasedStats(
1632 CBl2Seqblaster(ss1, *ss2, *opts_handle);
1640unique_ptr<SSeqLoc>
query(
1642 query->genetic_code_id = 1;
1651BOOST_REQUIRE_EQUAL(1, (
int)sar->
GetSegs().
GetStd().size());
1662mask_vector.push_back(
TSeqRange(0, 44));
1663mask_vector.push_back(
TSeqRange(69, 582));
1664mask_vector.push_back(
TSeqRange(610, 834));
1665mask_vector.push_back(
TSeqRange(854, 1000));
1672unique_ptr<SSeqLoc>
subject(
new SSeqLoc(ssl, scope, subj_mask));
1676BOOST_REQUIRE_EQUAL((
size_t)1, sav.front()->Get().size());
1684BOOST_REQUIRE_EQUAL((
size_t)4, sav.front()->Get().size());
1690unique_ptr<SSeqLoc> sl(
1695 CBl2Seqblaster(*sl, *sl, *opts);
1705sav = blaster.
Run();
1706BOOST_REQUIRE_EQUAL(1, (
int)sav.size());
1707sar = *(sav[0]->Get().begin());
1715sav = blaster.
Run();
1716sar = *(sav[0]->Get().begin());
1723 CSeq_idquery_id(
"gi|2655203");
1724unique_ptr<SSeqLoc> ql(
1728 CSeq_idsubject_id(
"gi|200811");
1729unique_ptr<SSeqLoc> sl(
1737opts->SetTraditionalMegablastDefaults();
1738opts->SetMatchReward(1);
1739opts->SetMismatchPenalty(-2);
1740opts->SetGapOpeningCost(3);
1741opts->SetGapExtensionCost(1);
1742opts->SetWordSize(24);
1746 CBl2Seqblaster(*ql, *sl, *opts);
1750BOOST_REQUIRE_EQUAL(1U, res->
size());
1753BOOST_REQUIRE_EQUAL(1U, sas->
Get().size());
1757BOOST_REQUIRE_EQUAL(832, score);
1760BOOST_REQUIRE_EQUAL(1U, alignments.size());
1761sa = alignments[0]->Get().front();
1763BOOST_REQUIRE_EQUAL(832, score);
1772ifstream in1(
"data/greedy1a.fsa");
1774 throwruntime_error(
"Failed to open file1");
1776 throwruntime_error(
"Failed to read sequence from file1");
1779 const stringkSeqIdString1(
"lcl|1");
1785ifstream in2(
"data/greedy1b.fsa");
1787 throwruntime_error(
"Failed to open file2");
1789 throwruntime_error(
"Failed to read sequence from file2");
1792 const stringkSeqIdString2(
"lcl|2");
1798handle->SetGapOpeningCost(0);
1799handle->SetGapExtensionCost(0);
1800handle->SetDustFiltering(
false);
1804 CBl2Seqblaster1(ss1, ss2, *handle);
1807BOOST_REQUIRE_EQUAL(1, (
int)sav[0]->Size());
1812BOOST_REQUIRE((*itr)->IsSetId());
1813 if((*itr)->GetId().GetStr() ==
"score") {
1814BOOST_REQUIRE_EQUAL(619, (*itr)->GetValue().GetInt());
1819handle->SetMatchReward(10);
1820handle->SetMismatchPenalty(-25);
1821handle->SetGapXDropoff(100.0);
1822handle->SetGapXDropoffFinal(100.0);
1824 CBl2Seqblaster2(ss1, ss2, *handle);
1825sav = blaster2.
Run();
1826sar = *(sav[0]->Get().begin());
1827BOOST_REQUIRE_EQUAL(1, (
int)sav[0]->Size());
1832BOOST_REQUIRE((*itr)->IsSetId());
1833 if((*itr)->GetId().GetStr() ==
"score") {
1834BOOST_REQUIRE_EQUAL(6035, (*itr)->GetValue().GetInt());
1843 CSeq_idquery_id(
"gi|56384585");
1844unique_ptr<SSeqLoc> ql(
1848 CSeq_idsubject_id(
"gi|56384585");
1849unique_ptr<SSeqLoc> sl(
1854opts->SetTraditionalMegablastDefaults();
1855opts->SetMatchReward(1);
1856opts->SetMismatchPenalty(-2);
1857opts->SetGapOpeningCost(0);
1858opts->SetGapExtensionCost(0);
1859opts->SetWordSize(28);
1863 CBl2Seqblaster(*ql, *sl, *opts);
1867BOOST_REQUIRE_EQUAL(1U, res->
size());
1873BOOST_REQUIRE_EQUAL(3794584, score);
1878unique_ptr<SSeqLoc>
query(
1887BOOST_REQUIRE_EQUAL(1, (
int)sar->
GetSegs().
GetStd().size());
1892unique_ptr<SSeqLoc>
query(
1901BOOST_REQUIRE(sav[0]->IsEmpty() ==
true);
1907unique_ptr<SSeqLoc> sl(
1913BOOST_REQUIRE_EQUAL(39, (
int)sar->
GetSegs().
GetStd().size());
1920unique_ptr<SSeqLoc> sl(
1926BOOST_REQUIRE_EQUAL(11, (
int)sar->
GetSegs().
GetStd().size());
1931unique_ptr<SSeqLoc> sl(
1937BOOST_REQUIRE_EQUAL(12, (
int)sar->
GetSegs().
GetStd().size());
1942 const inttotal_num_hsps = 49;
1943 const intnum_hsps_to_check = 8;
1944 const intscore_array[num_hsps_to_check] =
1945{ 947, 125, 820, 113, 624, 221, 39, 778};
1946 const intsum_n_array[num_hsps_to_check] =
1947{ 2, 2, 2, 2, 3, 3, 3, 0};
1949unique_ptr<SSeqLoc> qsl(
1952pair<TSeqPos, TSeqPos> range(15185000, 15195000);
1953unique_ptr<SSeqLoc> ssl(
1964list< CRef<CStd_seg> >& segs = sar->
SetSegs().SetStd();
1965BOOST_REQUIRE_EQUAL(total_num_hsps, (
int)segs.size());
1968 constvector< CRef< CScore > >& score_v = (*itr)->GetScores();
1970BOOST_REQUIRE((*sitr)->IsSetId());
1971 if((*sitr)->GetId().GetStr() ==
"score") {
1972BOOST_REQUIRE_EQUAL(score_array[index],
1973(*sitr)->GetValue().GetInt());
1974}
else if((*sitr)->GetId().GetStr() ==
"sum_n") {
1975BOOST_REQUIRE_EQUAL(sum_n_array[index],
1976(*sitr)->GetValue().GetInt());
1979 if(++index == num_hsps_to_check)
2001unique_ptr<SSeqLoc>
query(
2006 const stringkRepeatDb(
"junk");
2009BOOST_REQUIRE(is_repeat_filtering_on);
2013BOOST_REQUIRE_EQUAL(kRepeatDb, repeat_db);
2022unique_ptr<SSeqLoc>
query(
2026opts->SetTraditionalMegablastDefaults();
2027opts->SetRepeatFiltering(
true);
2028 stringrepeat_db(opts->GetRepeatFilteringDB()
2029? opts->GetRepeatFilteringDB()
2033 const stringkRepeatDb(
"repeat/repeat_9606");
2034opts->SetRepeatFilteringDB(kRepeatDb.c_str());
2035repeat_db.assign(opts->GetRepeatFilteringDB()
2036? opts->GetRepeatFilteringDB()
2038BOOST_REQUIRE_EQUAL(kRepeatDb, repeat_db);
2040 boolis_repeat_filtering_on = opts->GetRepeatFiltering();
2041BOOST_REQUIRE(is_repeat_filtering_on);
2052unique_ptr<SSeqLoc>
query(
2056opts->SetTraditionalMegablastDefaults();
2058opts->SetWindowMaskerDatabase(kWindowMaskerDb.c_str());
2059 stringwmdb(opts->GetWindowMaskerDatabase()
2060? opts->GetWindowMaskerDatabase() :
kEmptyStr);
2061BOOST_REQUIRE_EQUAL(kWindowMaskerDb, wmdb);
2062BOOST_REQUIRE_EQUAL(0, opts->GetWindowMaskerTaxId());
2072unique_ptr<SSeqLoc>
query(
2076opts->SetTraditionalMegablastDefaults();
2077opts->SetWindowMaskerTaxId(9606);
2087unique_ptr<SSeqLoc>
query(
2092 const stringkWindowMaskerDb(
"Dummydb");
2096BOOST_REQUIRE_EQUAL(kWindowMaskerDb, wmdb);
2104unique_ptr<SSeqLoc>
query(
2109 const intkInvalidTaxId = -1;
2119BOOST_CHECK_EQUAL(1, rv);
2121BOOST_CHECK_EQUAL(1, rv);
2126BOOST_CHECK_EQUAL(0, rv);
2132unique_ptr<SSeqLoc>
query(
2136opts->SetTraditionalMegablastDefaults();
2139opts->SetWindowMaskerTaxId(-1);
2158unique_ptr<SSeqLoc>
query(
2161 CSeq_idsid(
"NT_007914.14");
2163unique_ptr<SSeqLoc> subj(
2167opts->SetTraditionalMegablastDefaults();
2168opts->SetRepeatFiltering(
true);
2178unique_ptr<SSeqLoc>
query(
2182unique_ptr<SSeqLoc> subj(
2186opts->SetTraditionalBlastnDefaults();
2210sav = blaster.
Run();
2211sar = *(sav[0]->Get().begin());
2230sav = blaster.
Run();
2231BOOST_REQUIRE_EQUAL(1, (
int)sav.size());
2232sar = *(sav[0]->Get().begin());
2238unique_ptr<SSeqLoc>
query(
2242unique_ptr<SSeqLoc> subj(
2247opts->SetTraditionalBlastnDefaults();
2248 CBl2Seqblaster(*subj, *subj, *opts);
2255sav = blaster.
Run();
2256BOOST_REQUIRE_EQUAL(2, (
int)sav[0]->Size());
2257sar = *(sav[0]->Get().begin());
2263unique_ptr<SSeqLoc>
query(
2267unique_ptr<SSeqLoc> subj(
2272opts->SetTraditionalBlastnDefaults();
2280sav = blaster.
Run();
2281sar = *(sav[0]->Get().begin());
2291sequences.push_back(*sl1);
2295sequences.push_back(*sl2);
2306BOOST_REQUIRE_EQUAL(4, (
int)seqalign_v.size());
2307BOOST_REQUIRE_EQUAL(2, (
int)sequences.size());
2311BOOST_REQUIRE_EQUAL(1U, seqalign_v[0]->
Get().
size());
2312sar = *(seqalign_v[0]->Get().begin());
2315BOOST_REQUIRE_EQUAL((
size_t)2, seqalign_v[1]->
Get().
size());
2316sar = *(seqalign_v[1]->Get().begin());
2318sar = *(++(seqalign_v[1]->Get().begin()));
2321BOOST_REQUIRE_EQUAL((
size_t)3, seqalign_v[2]->
Get().
size());
2322sar = *(seqalign_v[2]->Get().begin());
2324sar = *(++(seqalign_v[2]->Get().begin()));
2327BOOST_REQUIRE_EQUAL((
size_t)1, seqalign_v[3]->
Get().
size());
2328sar = *(seqalign_v[3]->Get().begin());
2344unique_ptr<SSeqLoc> sl1(
2346sequences.push_back(*sl1);
2347BOOST_REQUIRE(sl1->mask.Empty());
2350unique_ptr<SSeqLoc> sl2(
2352sequences.push_back(*sl2);
2353BOOST_REQUIRE(sl2->mask.Empty());
2357BOOST_REQUIRE_EQUAL(2, (
int)sequences.size());
2358BOOST_REQUIRE_EQUAL(4, (
int)seqalign_v.size());
2364sar = *(seqalign_v[2]->Get().begin());
2376 voidDoSearchWordSize4(
const char*file1,
const char*file2) {
2381ifstream in1(file1);
2383 throwruntime_error(
"Failed to open file1");
2385 throwruntime_error(
"Failed to read sequence from file1");
2386scope->AddTopLevelSeqEntry(*seq_entry1);
2388 const stringkSeqIdString1(
"lcl|1");
2390seqloc1->SetWhole(*id1);
2394ifstream in2(file2);
2396 throwruntime_error(
"Failed to open file2");
2398 throwruntime_error(
"Failed to read sequence from file2");
2399scope->AddTopLevelSeqEntry(*seq_entry2);
2401 const stringkSeqIdString2(
"lcl|2");
2403seqloc2->SetWhole(*id2);
2414 CBl2Seqblaster(ss1, ss2, handle);
2415blaster.RunWithoutSeqalignGeneration();
2418BOOST_REQUIRE(
results->hitlist_array[0] !=
NULL);
2419BOOST_REQUIRE(
results->hitlist_array[0]->hsplist_array[0] !=
NULL);
2421BOOST_REQUIRE(hsp_list->
hspcnt> 0);
2427 for(
int i= 0;
i< hsp_list->
hspcnt;
i++) {
2429BOOST_REQUIRE(hsp !=
NULL);
2444BOOST_REQUIRE_EQUAL(1, res->
size());
2446BOOST_REQUIRE(
r.HasAlignments());
2453DoSearchWordSize4(
"data/blastn_size4a.fsa",
2454 "data/blastn_size4b.fsa");
2460DoSearchWordSize4(
"data/blastn_size4c.fsa",
2461 "data/blastn_size4d.fsa");
2474opts->SetOutOfFrameMode();
2475opts->SetFrameShiftPenalty(10);
2476opts->SetFilterString(
"m;L");
2477opts->SetEvalueThreshold(0.01);
2482BOOST_REQUIRE_EQUAL(1, (
int)sav.size());
2484BOOST_REQUIRE_EQUAL(2, (
int)sav[0]->Size());
2499opts->SetOutOfFrameMode();
2500opts->SetFrameShiftPenalty(5);
2502opts->SetFilterString(
"L");
2507BOOST_REQUIRE_EQUAL(3, (
int)sav[0]->Size());
2514BOOST_REQUIRE((*itr)->IsSetId());
2515 if((*itr)->GetId().GetStr() ==
"num_ident") {
2516BOOST_REQUIRE_EQUAL(80, (*itr)->GetValue().GetInt());
2526unique_ptr<SSeqLoc>
query(
2532opts->SetOutOfFrameMode();
2533opts->SetFrameShiftPenalty(10);
2535opts->SetFilterString(
"m;L");
2536opts->SetEvalueThreshold(0.01);
2541BOOST_REQUIRE_EQUAL(2, (
int)sav[0]->Size());
2552unique_ptr<SSeqLoc>
query(
2558opts->SetOutOfFrameMode();
2559opts->SetFrameShiftPenalty(10);
2560opts->SetFilterString(
"L");
2565BOOST_REQUIRE_EQUAL(5, (
int)sav[0]->Size());
2572 stringaligned_strands) {
2575vector< pair<TSignedSeqPos, TSignedSeqPos> > starts;
2576starts.push_back(make_pair(7685759, 10));
2577starts.push_back(make_pair(7685758, -1));
2578starts.push_back(make_pair(7685718, 269));
2579starts.push_back(make_pair(7685717, -1));
2580starts.push_back(make_pair(7685545, 309));
2582 const size_tkNumSegments(starts.size());
2585vector<TSeqPos> lengths;
2586lengths.reserve(kNumSegments);
2587lengths.push_back(259);
2588lengths.push_back(1);
2589lengths.push_back(40);
2590lengths.push_back(1);
2591lengths.push_back(172);
2594 typedefvector< pair<ENa_strand, ENa_strand> > TStrandPairs;
2595TStrandPairs strands(kNumSegments,
2599 if(aligned_strands ==
"plus-minus") {
2600reverse(starts.begin(), starts.end());
2601reverse(lengths.begin(), lengths.end());
2603 swap(itr->first, itr->second);
2606BOOST_REQUIRE_EQUAL(kNumSegments, lengths.size());
2607BOOST_REQUIRE_EQUAL(kNumSegments, strands.size());
2611BOOST_REQUIRE_EQUAL(1, (
int)sav[0]->Size());
2615 const size_tkNumDim(ds.
GetDim());
2616vector< TSignedSeqPos > seg_starts = ds.
GetStarts();
2617vector< TSeqPos> seg_lengths = ds.
GetLens();
2618vector< ENa_strand> seg_strands = ds.
GetStrands();
2619BOOST_REQUIRE_EQUAL(kNumSegments, seg_lengths.size());
2620BOOST_REQUIRE_EQUAL(kNumSegments*kNumDim, seg_starts.size());
2623 for(
size_tindex = 0; index < kNumSegments; ++index) {
2625os <<
"Segment "<< index <<
": expected "<< lengths[index]
2626<<
" actual "<< seg_lengths[index];
2627BOOST_REQUIRE_MESSAGE(lengths[index] == seg_lengths[index],
2631os <<
"Segment "<< index <<
": expected "<< starts[index].first
2632<<
" actual "<< seg_starts[2*index];
2633BOOST_REQUIRE_MESSAGE(starts[index].
first== seg_starts[2*index],
2636os <<
"Segment "<< index <<
": expected "<< starts[index].second
2637<<
" actual "<< seg_starts[2*index];
2638BOOST_REQUIRE_MESSAGE(starts[index].second == seg_starts[2*index+1],
2641os <<
"Segment "<< index <<
": expected "<< (
int)strands[index].
first 2642<<
" actual "<< (
int)seg_strands[2*index];
2643BOOST_REQUIRE_MESSAGE(strands[index].
first== seg_strands[2*index],
2646os <<
"Segment "<< index <<
": expected "<< (
int)strands[index].second
2647<<
" actual "<< (
int)seg_strands[2*index];
2648BOOST_REQUIRE_MESSAGE(strands[index].second == seg_strands[2*index+1],
2655 const intnum_segs = 5;
2656 const intnum_starts = 10;
2657 const intstarts[num_starts] = { 7685759, 0, 7685758, -1, 7685718,
2658269, 7685717, -1, 7685545, 309 };
2659 const intlengths[num_segs] = { 269, 1, 40, 1, 172 };
2663BOOST_REQUIRE_EQUAL(1, (
int)sav[0]->Size());
2665vector< TSignedSeqPos > seg_starts = segs_itr->GetStarts();
2666vector< TSeqPos> seg_lengths = segs_itr->GetLens();
2667vector< ENa_strand> seg_strands = segs_itr->GetStrands();
2668BOOST_REQUIRE_EQUAL(num_segs, (
int)seg_lengths.size());
2669BOOST_REQUIRE_EQUAL(num_starts, (
int)seg_starts.size());
2670 for(index = 0; index < num_segs; ++index) {
2671BOOST_REQUIRE_EQUAL(lengths[index], (
int)seg_lengths[index]);
2672BOOST_REQUIRE_EQUAL(starts[2*index], (
int)seg_starts[2*index]);
2673BOOST_REQUIRE_EQUAL(starts[2*index+1], (
int)seg_starts[2*index+1]);
2681 const intnum_segs = 5;
2682 const intnum_starts = 10;
2683 const intstarts[num_starts] = { 309, 7685545, -1, 7685717, 269, 7685718,
2684-1, 7685758, 0, 7685759 };
2685 const intlengths[num_segs] = { 172, 1, 40, 1, 269 };
2689BOOST_REQUIRE_EQUAL(1, (
int)sav[0]->Size());
2691vector< TSignedSeqPos > seg_starts = segs_itr->GetStarts();
2692vector< TSeqPos> seg_lengths = segs_itr->GetLens();
2693vector< ENa_strand> seg_strands = segs_itr->GetStrands();
2694BOOST_REQUIRE_EQUAL(num_segs, (
int)seg_lengths.size());
2695BOOST_REQUIRE_EQUAL(num_starts, (
int)seg_starts.size());
2696 for(index = 0; index < num_segs; ++index) {
2697BOOST_REQUIRE_EQUAL(lengths[index], (
int)seg_lengths[index]);
2698BOOST_REQUIRE_EQUAL(starts[2*index], (
int)seg_starts[2*index]);
2699BOOST_REQUIRE_EQUAL(starts[2*index+1], (
int)seg_starts[2*index+1]);
2708 CSeq_idqid(
"NT_004487.15");
2709pair<TSeqPos, TSeqPos> range(7685545, 7686027);
2710unique_ptr<SSeqLoc>
query(
2717unique_ptr<SSeqLoc> subj(
2731 CSeq_idqid(
"NT_004487.15");
2732pair<TSeqPos, TSeqPos> range(7685545, 7686027);
2733unique_ptr<SSeqLoc>
query(
2740unique_ptr<SSeqLoc> subj(
2745opts->SetTraditionalBlastnDefaults();
2754 CSeq_idqid(
"NT_004487.15");
2755pair<TSeqPos, TSeqPos> range(7685545, 7686027);
2756unique_ptr<SSeqLoc>
query(
2763unique_ptr<SSeqLoc> subj(
2768opts->SetTraditionalBlastnDefaults();
2777 CSeq_idqid(
"NT_004487.15");
2778pair<TSeqPos, TSeqPos> range(7685545, 7686027);
2779unique_ptr<SSeqLoc>
query(
2786unique_ptr<SSeqLoc> subj(
2791opts->SetTraditionalBlastnDefaults();
2794BOOST_REQUIRE(sav[0]->IsEmpty() ==
true);
2800 CSeq_idqid(
"NT_004487.15");
2801pair<TSeqPos, TSeqPos> range(7685545, 7686027);
2802unique_ptr<SSeqLoc>
query(
2809unique_ptr<SSeqLoc> subj(
2814opts->SetTraditionalBlastnDefaults();
2824 CSeq_idqid(
"NT_004487.15");
2825pair<TSeqPos, TSeqPos> range(7685545, 7686027);
2826unique_ptr<SSeqLoc>
query(
2833unique_ptr<SSeqLoc> subj(
2838opts->SetTraditionalBlastnDefaults();
2841BOOST_REQUIRE(sav[0]->IsEmpty() ==
true);
2847 CSeq_idqid(
"NT_004487.15");
2848pair<TSeqPos, TSeqPos> range(7685545, 7686027);
2849unique_ptr<SSeqLoc>
query(
2856unique_ptr<SSeqLoc> subj(
2861opts->SetTraditionalBlastnDefaults();
2864BOOST_REQUIRE(sav[0]->IsEmpty() ==
true);
2870 CSeq_idqid(
"NT_004487.15");
2871pair<TSeqPos, TSeqPos> range(7685545, 7686027);
2872unique_ptr<SSeqLoc>
query(
2879unique_ptr<SSeqLoc> subj(
2884opts->SetTraditionalBlastnDefaults();
2893 CSeq_idqid(
"NT_004487.15");
2894pair<TSeqPos, TSeqPos> range(7685545, 7686027);
2895unique_ptr<SSeqLoc>
query(
2902unique_ptr<SSeqLoc> subj(
2907opts->SetTraditionalBlastnDefaults();
2920pair<TSeqPos, TSeqPos> range(7685545, 7686027);
2921unique_ptr<SSeqLoc> subj(
2926opts->SetTraditionalBlastnDefaults();
2935pair<TSeqPos, TSeqPos> range(7685545, 7686027);
2936unique_ptr<SSeqLoc>
query(
2944opts->SetTraditionalBlastnDefaults();
2951vector<TIntId> q_gis, s_gis;
2955q_gis.push_back(129295);
2956q_gis.push_back(15606659);
2959s_gis.push_back(129295);
2961s_gis.push_back(4336138);
2962s_gis.push_back(15606659);
2963s_gis.push_back(5556);
2966 ITERATE(vector<TIntId>, itr, q_gis) {
2972queries.push_back(
SSeqLoc(loc, scope));
2976 ITERATE(vector<TIntId>, itr, s_gis) {
2982subjects.push_back(
SSeqLoc(loc, scope));
2985 size_tnum_queries = queries.size();
2986 size_tnum_subjects = subjects.size();
2991BOOST_REQUIRE_EQUAL(num_queries*num_subjects, sas_v.size());
3001vector<TIntId> q_gis, s_gis;
3005q_gis.push_back(129295);
3006q_gis.push_back(15606659);
3009s_gis.push_back(129295);
3011s_gis.push_back(4336138);
3012s_gis.push_back(15606659);
3013s_gis.push_back(5556);
3016 ITERATE(vector<TIntId>, itr, q_gis) {
3022queries.push_back(
SSeqLoc(loc, scope));
3026 ITERATE(vector<TIntId>, itr, s_gis) {
3032subjects.push_back(
SSeqLoc(loc, scope));
3035 size_tnum_queries = queries.size();
3036 size_tnum_subjects = subjects.size();
3042BOOST_REQUIRE_EQUAL((num_queries*num_subjects),
3047 for(
size_t i= 0;
i< num_queries;
i++)
3049 for(
size_tj = 0; j < num_subjects; j++)
3055sas_v.push_back(aln_set);
3062BOOST_REQUIRE_EQUAL(num_queries*num_subjects, sas_v.size());
3073vector<TIntId> q_gis, s_gis;
3077q_gis.push_back(129295);
3078q_gis.push_back(15606659);
3081s_gis.push_back(129295);
3083s_gis.push_back(4336138);
3084s_gis.push_back(15606659);
3085s_gis.push_back(5556);
3088 ITERATE(vector<TIntId>, itr, q_gis) {
3094query_vec.push_back(
SSeqLoc(loc, scope));
3102 ITERATE(vector<TIntId>, itr, s_gis) {
3108subj_vec.push_back(
SSeqLoc(loc, scope));
3116 size_tnum_queries = query_vec.size();
3117 size_tnum_subjects = subj_vec.size();
3120 CLocalBlastblaster(queries, opts_handle, subjects);
3123BOOST_REQUIRE_EQUAL((num_queries*num_subjects),
3125BOOST_REQUIRE_EQUAL((num_queries*num_subjects),
results->size());
3126BOOST_REQUIRE_EQUAL(num_queries,
results->GetNumQueries());
3127BOOST_REQUIRE_EQUAL(num_subjects,
3132 for(
size_t i= 0;
i< num_queries;
i++)
3134 for(
size_tj = 0; j < num_subjects; j++)
3140sas_v.push_back(aln_set);
3146BOOST_REQUIRE_EQUAL(num_queries*num_subjects, sas_v.size());
3153vector<TIntId> q_gis, s_gis;
3156q_gis.push_back(816838863);
3159s_gis.push_back(16130156);
3160s_gis.push_back(15644111);
3161s_gis.push_back(126699345);
3162s_gis.push_back(504220075);
3163s_gis.push_back(21222553);
3164s_gis.push_back(24376189);
3165s_gis.push_back(15598078);
3166s_gis.push_back(15599919);
3167s_gis.push_back(15597767);
3168s_gis.push_back(16131833);
3169s_gis.push_back(15599742);
3170s_gis.push_back(15598387);
3171s_gis.push_back(15600358);
3172s_gis.push_back(24375949);
3173s_gis.push_back(126698248);
3174s_gis.push_back(24375956);
3175s_gis.push_back(24375382);
3176s_gis.push_back(126698598);
3179 ITERATE(vector<TIntId>, itr, q_gis) {
3185query_vec.push_back(
SSeqLoc(loc, scope));
3193 ITERATE(vector<TIntId>, itr, s_gis) {
3199subj_vec.push_back(
SSeqLoc(loc, scope));
3203opts_handle,
true));
3207 size_tnum_queries = query_vec.size();
3208 size_tnum_subjects = subj_vec.size();
3211 CLocalBlastblaster(queries, opts_handle, subjects);
3214BOOST_REQUIRE_EQUAL(num_queries,
3216BOOST_REQUIRE_EQUAL(num_queries,
results->size());
3217BOOST_REQUIRE_EQUAL(num_queries,
results->GetNumQueries());
3225BOOST_REQUIRE_EQUAL(num_subjects+1, aln_set->
Size());
3231unique_ptr<CBlastOptionsHandle> megablast_options_handle(
3234BOOST_REQUIRE(megablast_options_handle->GetOptions() ==
3241BOOST_REQUIRE(prot_options_handle.
GetOptions() !=
3245unique_ptr<CBlastOptionsHandle> blastn_options_handle(
3247BOOST_REQUIRE(blastn_options_handle->GetOptions() !=
3253BOOST_REQUIRE(prot_options_handle.
GetOptions() !=
3260unique_ptr<SSeqLoc>
query(
3266BOOST_REQUIRE_EQUAL(1, (
int)sav.size());
3275 CSeq_idqid(
"NT_004487.16");
3277pair<TSeqPos, TSeqPos> qrange(7868209-1, 7868602-1);
3278pair<TSeqPos, TSeqPos> srange(2-1, 397-1);
3279unique_ptr<SSeqLoc>
query(
3282unique_ptr<SSeqLoc> subj(
3289BOOST_REQUIRE_EQUAL(1, (
int)sav.size());
3301 const intnum_subjects = 15;
3302 const intresults_size[num_subjects] =
3303{ 1, 1, 0, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 2, 1 };
3304 const intquery_gi = 7274302;
3305 const intgi_diff = 28;
3307unique_ptr<SSeqLoc> sl(
3310 query.push_back(*sl);
3313 for(index = 0; index < num_subjects; ++index) {
3318subjects.push_back(*sl);
3322BOOST_REQUIRE_EQUAL(num_subjects, (
int)seqalign_v.size());
3328BOOST_REQUIRE_EQUAL(results_size[index], (
int) (*itr)->Get().size());
3335 const size_tnum_seqs = 19;
3336 const intgi_list[num_seqs] =
3337{ 1346057, 125527, 121064, 1711551, 125412, 128337, 2507199,
33381170625, 1730070, 585365, 140977, 1730069, 20455504, 125206,
3339125319, 114152, 1706450, 1706307, 125565 };
3340 const intscore_cutoff = 70;
3344 for(index = 0; index < num_seqs; ++index) {
3346unique_ptr<SSeqLoc> sl(
3348seq_vec.push_back(*sl);
3352prot_opts->SetSegFiltering(
false);
3353prot_opts->SetCutoffScore(score_cutoff);
3354 CBl2Seqblaster(seq_vec, seq_vec, *prot_opts);
3356blaster.RunWithoutSeqalignGeneration();
3359 intqindex, sindex, qindex1, sindex1;
3360 for(qindex = 0; qindex < num_seqs; ++qindex) {
3361 for(sindex = 0; sindex <
results->hitlist_array[qindex]->hsplist_count;
3364hsp_list1 =
results->hitlist_array[qindex]->hsplist_array[sindex];
3365qindex1 = hsp_list1->
oid;
3367 for(sindex1 = 0; sindex1 < hitlist->
hsplist_count; ++sindex1) {
3373BOOST_REQUIRE(hsp_list2 !=
NULL);
3375 for(hindex = 0; hindex < hsp_list1->
hspcnt; ++hindex) {
3378BOOST_REQUIRE(hindex < hsp_list2->hspcnt);
3389BOOST_REQUIRE_EQUAL(num_seqs*num_seqs, res->
GetNumResults());
3390BOOST_REQUIRE_EQUAL(num_seqs*num_seqs, res->
size());
3397BOOST_REQUIRE(
results.HasAlignments());
3400BOOST_REQUIRE_EQUAL((size_type)1, sas->
Get().size());
3404BOOST_REQUIRE(qid.
Match(sid));
3408&*seq_vec[q].scope);
3409BOOST_REQUIRE_EQUAL(seqlen, num_ident);
3412BOOST_REQUIRE_EQUAL(
results.HasAlignments(),
3414 if( !
results.HasAlignments() ) {
3425BOOST_REQUIRE_EQUAL(sas1->
Get().size(), sas2->
Get().size());
3426CSeq_align_set::Tdata::const_iterator i1 = sas1->
Get().begin(),
3427i2 = sas2->
Get().begin();
3428 for(; i1 != sas1->
Get().end(); ++i1, ++i2) {
3436 intscore1 = 0, score2 = 0;
3439BOOST_REQUIRE_EQUAL(score1, score2);
3441 doublebit_score1 = .0, bit_score2 = .0;
3444BOOST_REQUIRE_CLOSE(bit_score1, bit_score2, 10e-2);
3446 doubleevalue1 = .0, evalue2 = .0;
3449BOOST_REQUIRE_CLOSE(evalue1, evalue2, 10e-5);
3457BOOST_REQUIRE_EQUAL(num_seqs*num_seqs, alignments.size());
3458 for(
size_tq = 0; q < num_seqs; q++) {
3459 for(
size_ts = 0; s < num_seqs; s++) {
3460 size_tidx1 = q*num_seqs + s;
3462 if(idx1 == (q*num_seqs+q)) {
3464BOOST_REQUIRE_EQUAL(1U, al1->
Get().size());
3468BOOST_REQUIRE(qid.
Match(sid));
3472&*seq_vec[q].scope);
3473BOOST_REQUIRE_EQUAL(seqlen, num_ident);
3476 size_tidx2 = s*num_seqs + q;
3479BOOST_REQUIRE_EQUAL(al1.
Empty(), al2.
Empty());
3492 intscore1 = 0, score2 = 0;
3495BOOST_REQUIRE_EQUAL(score1, score2);
3497 doublebit_score1 = .0, bit_score2 = .0;
3500BOOST_REQUIRE_CLOSE(bit_score1, bit_score2, 10e-2);
3502 doubleevalue1 = .0, evalue2 = .0;
3505BOOST_REQUIRE_CLOSE(evalue1, evalue2, 10e-5);
3519BOOST_REQUIRE(fnptr ==
NULL);
3527BOOST_REQUIRE(fnptr == null_fnptr);
3534sav = blaster.
Run();
3535BOOST_REQUIRE_EQUAL(1, (
int)sav.size());
3536sar = *(sav[0]->Get().begin());
3546BOOST_REQUIRE(fnptr ==
NULL);
3549BOOST_REQUIRE_EQUAL(1, (
int)sav.size());
3554 #if SEQLOC_MIX_QUERY_OK 3556 const size_tkNumInts = 20;
3557 const size_tkStarts[kNumInts] =
3558{ 838, 1838, 6542, 7459, 9246, 10431, 14807, 16336, 19563,
355920606, 21232, 22615, 23822, 27941, 29597, 30136, 31287,
356031786, 33315, 35402 };
3561 const size_tkEnds[kNumInts] =
3562{ 961, 2010, 6740, 7573, 9408, 10609, 15043, 16511, 19783,
356320748, 21365, 22817, 24049, 28171, 29839, 30348, 31362,
356431911, 33485, 37952 };
3569 for(index = 0; index < kNumInts; ++index) {
3571next_loc->SetInt().SetFrom(kStarts[index]);
3572next_loc->SetInt().SetTo(kEnds[index]);
3573next_loc->SetInt().SetId(qid);
3574qloc->SetMix().Set().push_back(next_loc);
3578scope->AddDefaults();
3580unique_ptr<SSeqLoc>
query(
new SSeqLoc(qloc, scope));
3583pair<TSeqPos, TSeqPos> range(15595732, 15705419);
3597pair<TSeqPos, TSeqPos> range(662070, 662129);
3602unique_ptr<SSeqLoc>
query(
new SSeqLoc(qloc, scope));
3609BOOST_REQUIRE(sas->
Get().empty());
User-defined methods of the data storage class.
BLAST formatter utilities.
static const char * kFileName
Declares the CBl2Seq (BLAST 2 Sequences) class.
void testBlastHitCounts(CBl2Seq &blaster, EBl2seqTest test_id)
CRef< CSeq_loc > s_MakePackedInt2(CRef< CSeq_id > id, vector< TSeqRange > &range_vec)
static CRef< CBl2Seq > s_SetupWithMultipleQueriesAndSubjects(bool query_is_nucl, bool subj_is_nucl, EProgram program)
Boolean do_not_interrupt(SBlastProgress *)
Returns false so that the processing never stops in spite of a callback function to interrupt the pro...
BOOST_AUTO_TEST_CASE_TIMEOUT(testInterruptBlastSetup, 3)
Boolean interrupt_after3calls(SBlastProgress *)
The interruption occurs after 3 invokations of this callback.
BOOST_AUTO_TEST_CASE(NucleotideMultipleSeqLocs1)
Boolean callback_counter(SBlastProgress *progress_info)
This callback never interrupts the BLAST search, its only purpose is to count the number of times thi...
Boolean interrupt_immediately(SBlastProgress *)
Returns true so that the processing stops upon the first invocation of this callback.
static void testWholeIntervalAlignment(TSeqAlignVector &sav)
void testRawCutoffs(CBl2Seq &blaster, EProgram program, EBl2seqTest test_id)
static void testIntervalWholeAlignment(TSeqAlignVector &sav)
Boolean interrupt_at_random(SBlastProgress *progress_info)
This callback interrupts the BLAST search after the callback has been executed the requested number o...
Boolean interrupt_on_traceback(SBlastProgress *progress_info)
The interruption occurs after starting the traceback stage.
void testResultAlignments(size_t num_queries, size_t num_subjects, TSeqAlignVector result_alnvec)
void x_TestAlignmentQuerySubjStrandCombinations(TSeqAlignVector &sav, string aligned_strands)
@ eDiscMegablast_U02544_U61969
@ eTblastn_129295_555_large_word
Boolean(* TInterruptFnPtr)(SBlastProgress *progress_info)
Prototype for function pointer to determine whether the BLAST search should proceed or be interrupted...
@ eTracebackSearch
Traceback stage.
Interface for reading SRA sequences into blast input.
Interface for converting sources of sequence data into blast sequence input.
const char * kBlastErrMsg_CantCalculateUngappedKAParams
Declares the CBlastNucleotideOptionsHandle class.
@ eGreedyScoreOnly
Greedy extension (megaBlast)
@ eGreedyTbck
Greedy extension (megaBlast)
#define kDefaultRepeatFilterDb
Default value for repeats database filtering.
@ eCompressedAaLookupTable
compressed alphabet (blastp) lookup table
Declares the CBlastOptionsHandle and CBlastOptionsFactory classes.
Declares the CBlastProteinOptionsHandle class.
vector< CRef< objects::CSeq_align_set > > TSeqAlignVector
Vector of Seq-align-sets.
@ eDatabaseSearch
Seq-aligns in the style of a database search.
@ eSequenceComparison
Seq-aligns in the BLAST 2 Sequence style (one alignment per query-subject pair)
EProgram
This enumeration is to evolve into a task/program specific list that specifies sets of default parame...
@ eTblastx
Translated nucl-Translated nucl.
@ eBlastn
Nucl-Nucl (traditional blastn)
@ eBlastp
Protein-Protein.
@ eTblastn
Protein-Translated nucl.
@ eMegablast
Nucl-Nucl (traditional megablast)
@ eDiscMegablast
Nucl-Nucl using discontiguous megablast.
@ eBlastx
Translated nucl-Protein.
BOOST_AUTO_TEST_SUITE_END() static int s_GetSegmentFlags(const CBioseq &bioseq)
Declares the CBlastxOptionsHandle class.
ncbi::TMaskedQueryRegions mask
CAutoEnvironmentVariable â.
Runs the BLAST algorithm between 2 sequences.
Defines BLAST error codes (user errors included)
Class representing a text file containing sequences in fasta format.
Class that centralizes the configuration data for sequences to be converted.
void SetLowercaseMask(bool mask)
Turn lowercase masking on/off.
Generalized converter from an abstract source of biological sequence data to collections of blast inp...
Handle to the nucleotide-nucleotide options to the BLAST algorithm.
Handle to the protein-protein options to the BLAST algorithm.
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.
Handle to the translated nucleotide-protein options to the BLAST algorithm.
Handle to the nucleotide-nucleotide options to the discontiguous BLAST algorithm.
Base class for reading FASTA sequences.
Class to perform a BLAST search on local BLAST databases Note that PHI-BLAST can be run using this cl...
Interface to create a BlastSeqSrc suitable for use in CORE BLAST from a a variety of BLAST database/s...
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
NCBI C++ Object Manager dependant implementation of IQueryFactory.
vector< CRange< TSeqPos > > TRanges
Search Results for One Query.
Tdata::size_type Size() const
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
bool GetNamedScore(const string &id, int &score) const
Get score.
TSeqPos GetSeqStart(TDim row) const
static CRef< CScope > NewScope(bool with_defaults=true)
Return a new scope, possibly (by default) with default loaders, which will include the Genbank loader...
Handle to the protein-translated nucleotide options to the BLAST algorithm.
static CTestObjMgr & Instance()
Template class for iteration on objects of class C.
Class for the messages for an individual query sequence.
typedef for the messages for an entire BLAST search, which could be comprised of multiple query seque...
@ eCompositionBasedStats
Composition-based statistics as in NAR 29:2994-3005, 2001.
@ eNoCompositionBasedStats
Don't use composition based statistics.
static const string kMismatch
Declares the CDiscNucleotideOptionsHandle class.
Operators to edit gaps in sequences.
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
void SetCompositionBasedStats(ECompoAdjustModes mode)
void SetEvalueThreshold(double eval)
Sets EvalueThreshold.
void SetWindowSize(int w)
void SetSubject(const SSeqLoc &subject)
Set the subject sequence.
string WindowMaskerTaxidToDb(int taxid)
Get the windowmasker file path for a given taxid.
void GetMessages(TSearchMessages &messages) const
Returns error messages/warnings.
void SetMatchReward(int r)
Sets MatchReward.
CConstRef< objects::CSeq_align_set > GetSeqAlign() const
Accessor for the Seq-align results.
void SetWindowMaskerTaxId(int taxid)
Enable window masker and select a taxid (or 0 to disable).
CRef< CSearchResultSet > Run()
Executes the search.
TInterruptFnPtr SetInterruptCallback(TInterruptFnPtr fnptr, void *user_data=NULL)
Set a function callback to be invoked by the CORE of BLAST to allow interrupting a BLAST search in pr...
static CBlastOptionsHandle * Create(EProgram program, EAPILocality locality=CBlastOptions::eLocal)
Creates an options handle object configured with default options for the requested program,...
void SetWordThreshold(double w)
Sets WordThreshold.
CBlastOptions & SetOptions()
Returns a reference to the internal options class which this object is a handle for.
const char * GetWindowMaskerDatabase() const
Get the window masker database name (or NULL if not set).
size_type GetNumQueries() const
Return the number of unique query ID's represented by this object.
void SetTraditionalBlastnDefaults()
Sets TraditionalBlastnDefaults.
void SetMismatchPenalty(int p)
Sets MismatchPenalty.
void WindowMaskerPathReset()
Resets the path to the windowmasker data files.
void SetRepeatFilteringDB(const char *db)
Enable repeat filtering.
virtual TSeqAlignVector Run()
Perform BLAST search Assuming N queries and M subjects, the structure of the returned vector is as fo...
size_type size() const
Identical to GetNumResults, provided to facilitate STL-style iteration.
void SetTraditionalBlastnDefaults()
NOTE: Unavailable for discontiguous megablast.
vector< value_type >::size_type size_type
size_type type definition
const CBlastOptions & GetOptions() const
Return the object which this object is a handle for.
CRef< CSearchResultSet > RunEx()
Performs the same functionality as Run(), but it returns a different data type.
void SetTraditionalMegablastDefaults()
Sets TraditionalMegablastDefaults.
void SetMatrixName(const char *matrix)
Sets MatrixName.
void GetAncillaryResults(CSearchResultSet::TAncillaryVector &retval) const
Get the ancillary results for a BLAST search (to be used with the Run() method)
bool GetRepeatFiltering() const
Is repeat filtering enabled?
CBlastOptionsHandle & SetOptionsHandle()
Set the options handle.
int GetWindowMaskerTaxId() const
Get the window masker taxid (or 0 if not set).
EResultType GetResultType() const
Get the type of results contained in this object.
const char * GetRepeatFilteringDB() const
Get the repeat filtering database.
void SetWordSize(int ws)
Sets WordSize.
void SetDustFiltering(bool val)
Enable dust filtering.
void SetWindowMaskerDatabase(const char *db)
Enable window masker and select a database (or NULL to disable).
void SetMaxNumHspPerSequence(int m)
Sets MaxNumHspPerSequence.
vector< CRef< CBlastAncillaryData > > TAncillaryVector
typedef for a vector of CRef<CBlastAncillaryData>
void SetQuery(const SSeqLoc &query)
Set the query.
int WindowMaskerPathInit(const string &window_masker_path)
Initialize the path to the windowmasker data files.
size_type GetNumResults() const
Return the number of results contained by this object.
void SetLookupTableType(ELookupTableType type)
CSearchResults & GetResults(size_type qi, size_type si)
Retrieve results for a query-subject pair contained by this object.
BlastDiagnostics * GetDiagnostics() const
Retrieves the diagnostics information returned from the engine.
bool IsDbScanMode() const
Returns true if this is not a database but is database scanning mode.
bool HasAlignments() const
Return true if there are any alignments for this query.
@ eBlastDbIsNucleotide
nucleotide
@ eBlastDbIsProtein
protein
#define GI_FROM(T, value)
unsigned int TSeqPos
Type for sequence locations and lengths.
#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.
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
const string & GetMsg(void) const
Get message string.
static string GetCwd(void)
Get the current working directory.
#define MSerial_AsnText
I/O stream manipulators â.
bool Match(const CSeq_id &sid2) const
Match() - TRUE if SeqIds are equivalent.
void SetPacked_int(TPacked_int &v)
CBeginInfo Begin(C &obj)
Get starting point of object hierarchy.
TSeqPos GetLength(const CSeq_id &id, CScope *scope)
Get sequence length if scope not null, else return max possible TSeqPos.
ENa_strand GetStrand(const CSeq_loc &loc, CScope *scope=0)
Returns eNa_strand_unknown if multiple Bioseqs in loc Returns eNa_strand_other if multiple strands in...
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.
CSeq_entry_Handle AddTopLevelSeqEntry(CSeq_entry &top_entry, TPriority pri=kPriority_Default, EExist action=eExist_Default)
Add seq_entry, default priority is higher than for defaults or loaders Add object to the score with p...
void AddDefaults(TPriority pri=kPriority_Default)
Add default data loaders from object manager.
bool Empty(void) const THROWS_NONE
Check if CConstRef is empty â not pointing to any object which means having a null value.
TObjectType * GetPointer(void) const THROWS_NONE
Get pointer,.
bool NotNull(void) const THROWS_NONE
Check if pointer is not null â same effect as NotEmpty().
void Reset(void)
Reset reference object.
void Reset(void)
Reset reference object.
bool NotEmpty(void) const THROWS_NONE
Check if CRef is not empty â pointing to an object and has a non-null value.
bool NotEmpty(void) const THROWS_NONE
Check if CConstRef is not empty â pointing to an object and has a non-null value.
TObjectType & GetObject(void) const
Get object.
int64_t Int8
8-byte (64-bit) signed integer
Uint4 TValue
Type of the generated integer value and/or the seed value.
CRange< TSeqPos > TSeqRange
typedefs for sequence ranges
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
static string SizetToString(size_t value, TNumToStringFlags flags=0, int base=10)
Convert size_t to string.
static bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
const TDenseg & GetDenseg(void) const
Get the variant data.
vector< CRef< CScore > > TScore
const TStarts & GetStarts(void) const
Get the Starts member data.
void SetSegs(TSegs &value)
Assign a value to Segs data member.
const TLens & GetLens(void) const
Get the Lens member data.
TDim GetDim(void) const
Get the Dim member data.
const TStd & GetStd(void) const
Get the variant data.
bool IsSetScore(void) const
for whole alignment Check if a value has been assigned to Score data member.
TNumseg GetNumseg(void) const
Get the Numseg member data.
list< CRef< CSeq_align > > Tdata
const TScore & GetScore(void) const
Get the Score member data.
const TDisc & GetDisc(void) const
Get the variant data.
const TStrands & GetStrands(void) const
Get the Strands member data.
const Tdata & Get(void) const
Get the member data.
const TSegs & GetSegs(void) const
Get the Segs member data.
ENa_strand
strand of nucleic acid
@ eNa_strand_both
in forward orientation
@ e_Gi
GenInfo Integrated Database.
TId & SetId(void)
Assign a value to Id data member.
void SetInst(TInst &value)
Assign a value to Inst data member.
@ eRepr_raw
continuous sequence
@ eMol_na
just a nucleic acid
unsigned int
A callback function used to compare two keys in a database.
Main class to perform a BLAST search on the local machine.
Declares class which provides internal BLAST database representations to the internal BLAST APIs.
static void byte(MDB_val *v)
const TYPE & Get(const CNamedParameterList *param)
constexpr bool empty(list< Ts... >) noexcept
const struct ncbi::grid::netcache::search::fields::SIZE size
int strcmp(const char *str1, const char *str2)
Uint1 Boolean
bool replacment for C
#define TRUE
bool replacment for C indicating true.
#define FALSE
bool replacment for C indicating false.
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...
BOOST_AUTO_TEST_SUITE(psiblast_iteration)
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
vector< SSeqLoc > TSeqLocVector
Vector of sequence locations.
BlastUngappedStats * ungapped_stat
Ungapped extension counts.
BlastRawCutoffs * cutoffs
Various raw values for the cutoffs.
BlastGappedStats * gapped_stat
Gapped extension counts.
Structure containing hit counts from the gapped stage of a BLAST search.
Int4 good_extensions
Number of HSPs below the e-value threshold after gapped extension.
Int4 extensions
Total number of gapped extensions performed.
The structure to hold all HSPs for a given sequence after the gapped alignment.
Int4 oid
The ordinal id of the subject sequence this HSP list is for.
Int4 hspcnt
Number of HSPs saved.
BlastHSP ** hsp_array
Array of pointers to individual HSPs.
The structure to contain all BLAST results, for multiple queries.
Structure holding all information about an HSP.
BlastSeg query
Query sequence info.
BlastSeg subject
Subject sequence info.
Int4 score
This HSP's raw score.
The structure to contain all BLAST results for one query sequence.
BlastHSPList ** hsplist_array
Array of HSP lists for individual database hits.
Int4 hsplist_count
Filled size of the HSP lists array.
Structure holding raw cutoff and gap-x-drop values.
Int4 ungapped_cutoff
Minimal raw score for starting gapped extension.
Int4 x_drop_gap_final
Raw value of the x-dropoff for gapped extensions with traceback.
Int4 x_drop_gap
Raw value of the x-dropoff for preliminary gapped extensions.
Int4 x_drop_ungapped
Raw value of the x-dropoff for ungapped extensions.
Int4 gapped_start
Where the gapped extension started.
Int4 offset
Start of hsp.
Structure containing hit counts from the ungapped stage of a BLAST search.
Int8 lookup_hits
Number of successful lookup table hits.
Int4 init_extends
Number of initial words found and extended.
Int4 good_init_extends
Number of successful initial extensions, i.e.
Progress monitoring structure.
EBlastStage stage
Stage of the BLAST search currently in progress.
void * user_data
Pointer to user-provided data.
Structure to represent a single sequence to be fed to BLAST.
Declares the CTBlastnOptionsHandle class.
Utility stuff for more convenient using of Boost.Test library.
static const char * kMatch
Interface to retrieve list of available windowmasker filtering.
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