NCBI C++ ToolKit
blast_scope_src_unit_test.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: blast_scope_src_unit_test.cpp 93625 2021-05-06 15:07:08Z ucko $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Author: Christiam Camacho
27  *
28  */
29 
30 /** @file blast_scope_src_unit_test.cpp
31  */
32 #define NCBI_TEST_APPLICATION
33 #include <ncbi_pch.hpp>
34 #define NCBI_BOOST_NO_AUTO_TEST_MAIN
35 #include <corelib/test_boost.hpp>
40 #include <objmgr/seq_vector.hpp>
41 
46 #if defined(NCBI_COMPILER_WORKSHOP) && defined(NDEBUG) && defined(NCBI_WITHOUT_MT) && defined(__i386) && NCBI_COMPILER_VERSION == 550
47 # define BUGGY_COMPILER
48 #endif
49 
50 #if !defined(SKIP_DOXYGEN_PROCESSING) && !defined(BUGGY_COMPILER)
51 
53 USING_SCOPE(blast);
55 
56 const char* CAutoNcbiConfigFile::kSection = "BLAST";
57 const char* CAutoNcbiConfigFile::kDataLoaders = "DATA_LOADERS";
59  = "BLASTDB_PROT_DATA_LOADER";
61  = "BLASTDB_NUCL_DATA_LOADER";
62 
63 BOOST_AUTO_TEST_SUITE(blast_scope_src)
64 
65 BOOST_AUTO_TEST_CASE(RetrieveFromBlastDb_TestSequenceData)
66 {
67  CSeq_id seqid(CSeq_id::e_Gi, 129295);
68 
69  const char* seq =
70 "QIKDLLVSSSTDLDTTLVLVNAIYFKGMWKTAFNAEDTREMPFHVTKQESKPVQMMCMNNSFNVATLPAEKMKILELPFASGDLSMLVLLPDEVSDLERIEKTINFEKLTEWTNPNTMEKRRVKVYLPQMKIEEKYNLTSVLMALGMTDLFIPSANLTGISSAESLKISQAVHGAFMELSEDGIEMAGSTGVIEDIKHSPESEQFRADHPFLFLIKHNPTNTIVYFGRYWSP";
71 
74  SDataLoaderConfig dlconfig(true);
75  BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName,
77  CBlastScopeSourceWrapper scope_source(dlconfig);
78  CRef<CScope> scope = scope_source.NewScope();
79  string data_loader_name("BLASTDB_");
81  data_loader_name += "Protein";
82  BOOST_REQUIRE_EQUAL(data_loader_name,
83  scope_source.GetBlastDbLoaderName());
84 
85  CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
87 
88  for (size_t i = 0; i < sv.size(); i++) {
89  BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
90  }
91 }
92 
93 // This is supposed to similate the absence of a .ncbirc file
94 BOOST_AUTO_TEST_CASE(RetrieveFromDefaultBlastDb_NoNcbirc)
95 {
96  CSeq_id seqid(CSeq_id::e_Gi, 129295);
97 
98  const char* seq =
99 "QIKDLLVSSSTDLDTTLVLVNAIYFKGMWKTAFNAEDTREMPFHVTKQESKPVQMMCMNNSFNVATLPAEKMKILELPFASGDLSMLVLLPDEVSDLERIEKTINFEKLTEWTNPNTMEKRRVKVYLPQMKIEEKYNLTSVLMALGMTDLFIPSANLTGISSAESLKISQAVHGAFMELSEDGIEMAGSTGVIEDIKHSPESEQFRADHPFLFLIKHNPTNTIVYFGRYWSP";
100 
101  CAutoEnvironmentVariable auto_env1("NCBI", "/dev/null");
102  CAutoEnvironmentVariable auto_env2("BLASTDB", "/blast/db/blast");
105 
106  SDataLoaderConfig dlconfig(true);
107  BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName,
109  CBlastScopeSourceWrapper scope_source(dlconfig);
110  CRef<CScope> scope = scope_source.NewScope();
111  string data_loader_name("BLASTDB_");
113  data_loader_name += "Protein";
114  BOOST_REQUIRE_EQUAL(data_loader_name,
115  scope_source.GetBlastDbLoaderName());
116 
117  CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
119 
120  for (size_t i = 0; i < sv.size(); i++) {
121  BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
122  }
124 }
125 
126 // Motivated by JIRA WB-235
127 BOOST_AUTO_TEST_CASE(RetrieveFromBlastDbOnly_TestSequenceDataWithAccession)
128 {
129  vector<string> accessions;
130  // note the order, this comes second in the BLAST DB
131  accessions.push_back("CCD68076");
132  accessions.push_back("NP_001024503");
133 
134  const string kNonStdDb("prot_dbs");
135  SDataLoaderConfig dlconfig(kNonStdDb, true,
137  BOOST_CHECK(dlconfig.m_BlastDbName == kNonStdDb);
138  CBlastScopeSourceWrapper scope_source(dlconfig);
139  CRef<CScope> scope = scope_source.NewScope();
140  string data_loader_name("BLASTDB_");
141  data_loader_name += kNonStdDb;
142  data_loader_name += "Protein";
143  BOOST_REQUIRE_EQUAL(data_loader_name,
144  scope_source.GetBlastDbLoaderName());
145 
146  ITERATE(vector<string>, acc, accessions) {
147  CSeq_id id(*acc);
148 
149  const char* seq ="\
150 MADDSENFVLTVDIGTTTIRSVVYDSKCKERGSYQEKVNTIYTTRNDDEVLVEIEPEQLFLQFLRVIKKAYETLPPNAHV\
151 DVGLCTQRNSIVLWNKRTLKEETRIICWNDKRANNKCHNLNNSFLLKALNLAGGFLHFVTRKNRFLAAQRLKFLGGMVSH\
152 RLMVTIDRSEKLKLMKADGDLCYGSLETWLLMRSSKSNILCVEASNISPSGMFDPWIGAYNTLIMKIIGFPTDMLFPIVD\
153 SNLKDMNKLPIIDSSHIGKEFTISSIIADQQAAMFGCGTWERGDVKITLGTGTFVNVHTGKVPYASMSGLYPLVGWRING\
154 ETDFIAEGNAHDTAVILHWAQSIGLFNDVTETSDIALSVNDSNGVVFIPAFCGIQTPINDETACSGFMCIRPDTTKVHMV\
155 RAILESIAFRVYQIYAAAESEVNINKNSPVRICGGVSNNNFICQCIADLLGRKVERMTDSDHVAARGVALLTGFSSGIWT\
156 KEKLRELVTVEDIFTPNYESRKGLLKTFQTWKKAVDRCLGFYH";
157 
158  CBioseq_Handle bh = scope->GetBioseqHandle(id);
160 
161  CNcbiOstrstream os;
162  os << "Failed on accession " << *acc;
163  const string msg = CNcbiOstrstreamToString(os);
164  for (size_t i = 0; i < sv.size(); i++) {
165  BOOST_REQUIRE_MESSAGE((char)seq[i] == (char)sv[i], msg);
166  }
167  }
168 }
169 
170 BOOST_AUTO_TEST_CASE(ConfigFileTest_RetrieveFromBlastDb_TestSequenceData)
171 {
172  CSeq_id seqid("P01013.1");
173 
174  const char* seq =
175 "QIKDLLVSSSTDLDTTLVLVNAIYFKGMWKTAFNAEDTREMPFHVTKQESKPVQMMCMNNSFNVATLPAEKMKILELPFASGDLSMLVLLPDEVSDLERIEKTINFEKLTEWTNPNTMEKRRVKVYLPQMKIEEKYNLTSVLMALGMTDLFIPSANLTGISSAESLKISQAVHGAFMELSEDGIEMAGSTGVIEDIKHSPESEQFRADHPFLFLIKHNPTNTIVYFGRYWSP";
176 
177 
180  SDataLoaderConfig dlconfig(true);
181  BOOST_CHECK(dlconfig.m_UseBlastDbs == true);
182  BOOST_CHECK(dlconfig.m_UseGenbank == false);
183  BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName,
185  CBlastScopeSourceWrapper scope_source(dlconfig);
186  CRef<CScope> scope = scope_source.NewScope();
187  string data_loader_name("BLASTDB_");
189  data_loader_name += "Protein";
190  BOOST_REQUIRE_EQUAL(data_loader_name,
191  scope_source.GetBlastDbLoaderName());
192 
193  CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
195 
196  for (size_t i = 0; i < sv.size(); i++) {
197  BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
198  }
199 }
200 
202  (ConfigFileTest_RetrieveFromNonStandardBlastDb_Config_TestSequenceData)
203 {
204  CSeq_id seqid(CSeq_id::e_Gi, 1787519);
205 
206  const char* seq = "MKAIFVLKGWWRTS";
207 
208  const string kNonStdDb("ecoli.aa");
210  acf.SetProteinBlastDbDataLoader(kNonStdDb);
211  SDataLoaderConfig dlconfig(true);
212  BOOST_CHECK(dlconfig.m_UseBlastDbs == true);
213  BOOST_CHECK(dlconfig.m_UseGenbank == false);
214  BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName, kNonStdDb);
215  CBlastScopeSourceWrapper scope_source(dlconfig);
216  CRef<CScope> scope = scope_source.NewScope();
217  string data_loader_name("BLASTDB_");
218  data_loader_name += kNonStdDb + "Protein";
219  BOOST_REQUIRE_EQUAL(data_loader_name,
220  scope_source.GetBlastDbLoaderName());
221 
222  CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
224 
225  for (size_t i = 0; i < sv.size(); i++) {
226  BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
227  }
228 }
229 
230 // Since this uses the SDataLoaderConfig constructor which specifies the BLAST
231 // database, it doesn't matter what the config value has
233  (ConfigFileTest_RetrieveFromNonStandardBlastDb_ForcedDb_TestSequenceData)
234 {
235  CSeq_id seqid(CSeq_id::e_Gi, 1787519);
236 
237  const char* seq = "MKAIFVLKGWWRTS";
238 
239  const string kNonStdDb("ecoli.aa");
241  acf.SetProteinBlastDbDataLoader("dummy db");
242  SDataLoaderConfig dlconfig(kNonStdDb, true,
244  BOOST_CHECK(dlconfig.m_UseBlastDbs == true);
245  BOOST_CHECK(dlconfig.m_UseGenbank == false);
246  BOOST_CHECK(dlconfig.m_BlastDbName == kNonStdDb);
247  CBlastScopeSourceWrapper scope_source(dlconfig);
248  CRef<CScope> scope = scope_source.NewScope();
249  string data_loader_name("BLASTDB_");
250  data_loader_name += kNonStdDb + "Protein";
251  BOOST_REQUIRE_EQUAL(data_loader_name,
252  scope_source.GetBlastDbLoaderName());
253 
254  CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
256 
257  for (size_t i = 0; i < sv.size(); i++) {
258  BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
259  }
260 }
261 
262 BOOST_AUTO_TEST_CASE(ConfigFileTest_RetrieveFromGenbank_TestSequenceData)
263 {
264  CSeq_id seqid(CSeq_id::e_Gi, 129295);
265 
266  const char* seq =
267 "QIKDLLVSSSTDLDTTLVLVNAIYFKGMWKTAFNAEDTREMPFHVTKQESKPVQMMCMNNSFNVATLPAEKMKILELPFASGDLSMLVLLPDEVSDLERIEKTINFEKLTEWTNPNTMEKRRVKVYLPQMKIEEKYNLTSVLMALGMTDLFIPSANLTGISSAESLKISQAVHGAFMELSEDGIEMAGSTGVIEDIKHSPESEQFRADHPFLFLIKHNPTNTIVYFGRYWSP";
268 
269 
271  SDataLoaderConfig dlconfig(true);
272  BOOST_CHECK(dlconfig.m_UseBlastDbs == false);
273  BOOST_CHECK(dlconfig.m_UseGenbank == true);
274  BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName, kEmptyStr);
275  CBlastScopeSourceWrapper scope_source(dlconfig);
276  CRef<CScope> scope = scope_source.NewScope();
277  BOOST_REQUIRE(scope_source.GetBlastDbLoaderName() == kEmptyStr);
278 
279  CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
281 
282  for (size_t i = 0; i < sv.size(); i++) {
283  BOOST_CHECK_EQUAL((char)seq[i], (char)sv[i]);
284  }
285 }
286 
287 // not the best thing to do, but supported nonetheless...
288 BOOST_AUTO_TEST_CASE(ConfigFileTest_UseNoDataLoaders)
289 {
290  CSeq_id seqid(CSeq_id::e_Gi, 129295);
291 
293  SDataLoaderConfig dlconfig("pdbaa", true);
294  BOOST_CHECK(dlconfig.m_UseBlastDbs == false);
295  BOOST_CHECK(dlconfig.m_UseGenbank == false);
296  BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName, kEmptyStr);
297  CBlastScopeSourceWrapper scope_source(dlconfig);
298  CRef<CScope> scope = scope_source.NewScope();
299  BOOST_REQUIRE(scope_source.GetBlastDbLoaderName() == kEmptyStr);
300 
301  CBioseq_Handle bh = scope->GetBioseqHandle(seqid);
302  BOOST_CHECK(bh.State_NoData());
303 }
304 
305 static
307  const string& dbname,
308  bool is_prot,
309  TSeqPos kExpectedLength)
310 {
311  const CSeq_id seqid(CSeq_id::e_Gi, gi);
312 
316  SDataLoaderConfig dlconfig(dbname, is_prot);
317  BOOST_CHECK(dlconfig.m_UseBlastDbs == true);
318  BOOST_CHECK(dlconfig.m_UseGenbank == true);
319  BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName, dbname);
320  CBlastScopeSourceWrapper scope_source(dlconfig);
321 
322  CRef<CScope> scope = scope_source.NewScope();
323  TSeqPos length = sequence::GetLength(seqid, scope);
324  BOOST_CHECK_EQUAL(kExpectedLength, length);
325 }
326 
327 BOOST_AUTO_TEST_CASE(RetrieveFromBlastDb) {
328  s_RetrieveSequenceLength(129295, "nr", true, 232);
329 }
330 
331 // This gi has been removed from the BLAST databases
332 BOOST_AUTO_TEST_CASE(RetrieveFromGenbank) {
333  s_RetrieveSequenceLength(7450545, "nr", true, 443);
334 }
335 
336 BOOST_AUTO_TEST_CASE(RetrieveFromGenbank_NewlyAddedSequenceToGenbank) {
337 
338  // Get today's date
339  CTime t;
340  t.SetCurrent().SetFormat("Y/M/D");
341  const string query_str(t.AsString() + "[PDAT]");
342 
343  // Search sequences publishe recently
344  CEntrez2Client entrez;
345  vector<TGi> results;
346  entrez.Query(query_str, "nucleotide", results);
347  if (results.empty()) {
348  // No newly added sequences today :(
349  return;
350  }
351 
352  const CSeq_id seqid(CSeq_id::e_Gi, results.front());
353  CBlastScopeSourceWrapper scope_source;
354 
355  TSeqPos length = sequence::GetLength(seqid, scope_source.NewScope());
356  s_RetrieveSequenceLength(results.front(), "nt", false, length);
357 }
358 
359 BOOST_AUTO_TEST_CASE(RetrieveFromGenbank_NoBlastDbDataLoader) {
360  const CSeq_id seqid(CSeq_id::e_Gi, 7450545);
361  CBlastScopeSourceWrapper scope_source;
362  CRef<CScope> scope = scope_source.NewScope();
363  TSeqPos length = sequence::GetLength(seqid, scope);
364  const TSeqPos kExpectedLength = 443;
365  BOOST_CHECK_EQUAL(kExpectedLength, length);
366 }
367 
368 BOOST_AUTO_TEST_CASE(RetrieveFromGenbank_IncorrectBlastDbType) {
369  s_RetrieveSequenceLength(7450545, "sts", false, 443);
370 }
371 
375 private:
377 };
378 
379 BOOST_AUTO_TEST_CASE(InvalidBlastDatabase) {
380  try {
381  SDiagRestorer d;
382  s_RetrieveSequenceLength(129295, "dummy", true, 232);
383  } catch (const CException& e) {
384  const string kExpectedMsg(" BLAST database 'dummy' does not exist in");
385  BOOST_CHECK(e.GetMsg().find(kExpectedMsg) != NPOS);
386  }
387 }
388 
389 BOOST_AUTO_TEST_CASE(ForceRemoteBlastDbLoader) {
392  acf.RemoveBLASTDBEnvVar();
394 
395  const CSeq_id seqid(CSeq_id::e_Gi, 129295);
396 
397  SDataLoaderConfig dlconfig(true);
398  dlconfig.m_UseGenbank = false;
399  BOOST_CHECK(dlconfig.m_UseBlastDbs == true);
400  BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName,
402  CBlastScopeSourceWrapper scope_source(dlconfig);
403 
404  CRef<CScope> scope = scope_source.NewScope();
405  TSeqPos length = sequence::GetLength(seqid, scope);
406  const TSeqPos kExpectedLength = 232;
407  BOOST_CHECK_EQUAL(kExpectedLength, length);
408 
409  string data_loader_name("REMOTE_BLASTDB_");
411  data_loader_name += "Protein";
412  BOOST_REQUIRE_EQUAL(data_loader_name,
413  scope_source.GetBlastDbLoaderName());
414 }
415 
416 BOOST_AUTO_TEST_CASE(RetrieveSeqUsingPDBIds)
417 {
418  const string dbname="data/pdb_test";
421  SDataLoaderConfig dlconfig(dbname, true);
422  dlconfig.m_UseGenbank = false;
423  BOOST_CHECK_EQUAL(dlconfig.m_BlastDbName, dbname);
424  CBlastScopeSourceWrapper scope_source(dlconfig);
425  CRef<CScope> scope = scope_source.NewScope();
426 
427  CNcbiIfstream ids_file("data/test.pdb_ids");
428  string line;
429  while (getline(ids_file, line)) {
430  vector<string> d;
431  NStr::Split(line, " ", d);
432  const CSeq_id seqid(d[0]);
433  TSeqPos length = sequence::GetLength(seqid, scope);
434  BOOST_CHECK_EQUAL(NStr::StringToInt(d[1]), length);
435  }
436 }
437 
439 #endif /* SKIP_DOXYGEN_PROCESSING */
Interface for reading SRA sequences into blast input.
Interface for converting sources of sequence data into blast sequence input.
Declares the CAutoNcbiConfigFile class.
Declares CBlastScopeSource class to create properly configured CScope objects to invoke the BLAST dat...
static void s_RetrieveSequenceLength(TGi gi, const string &dbname, bool is_prot, TSeqPos kExpectedLength)
USING_SCOPE(blast)
BOOST_AUTO_TEST_CASE(RetrieveFromBlastDb_TestSequenceData)
BOOST_AUTO_TEST_SUITE_END() static int s_GetSegmentFlags(const CBioseq &bioseq)
CAutoEnvironmentVariable –.
Definition: ncbienv.hpp:173
Auxiliary class to write temporary NCBI configuration files in the local directory for the purpose of...
CBioseq_Handle –.
RAII class for the CBlastScopeSource.
void Query(const string &query, const string &db, vector< TUid > &result_uids, size_t start_offs=0, size_t count=0, TReply *reply=0)
Some other simplified interfaces.
@ fAlwaysReload
Reload unconditionally.
Definition: metareg.hpp:54
static CNcbiApplication * Instance(void)
Singleton method.
Definition: ncbiapp.cpp:244
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
Definition: ncbistre.hpp:802
CSeqVector –.
Definition: seq_vector.hpp:65
CTime –.
Definition: ncbitime.hpp:296
static const char * kProtBlastDbDataLoader
static const char * kNuclBlastDbDataLoader
static const char * kDataLoaders
void SetProteinBlastDbDataLoader(const string &prot_db_name)
void SetNucleotideBlastDbDataLoader(const string &nucl_db_name)
bool ReloadConfig(CMetaRegistry::TFlags flags=CMetaRegistry::fReloadIfChanged, IRegistry::TFlags reg_flags=IRegistry::fWithNcbirc)
Reload the configuration file.
unsigned int TSeqPos
Type for sequence locations and lengths.
Definition: ncbimisc.hpp:875
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
Definition: ncbimisc.hpp:815
string
Definition: cgiapp.hpp:687
EDiagSev SetDiagPostLevel(EDiagSev post_sev=eDiag_Error)
Set the threshold severity for posting the messages.
Definition: ncbidiag.cpp:6129
EDiagSev
Severity level for the posted diagnostics.
Definition: ncbidiag.hpp:650
const string & GetMsg(void) const
Get message string.
Definition: ncbiexpt.cpp:461
TSeqPos GetLength(const CSeq_id &id, CScope *scope)
Get sequence length if scope not null, else return max possible TSeqPos.
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
Definition: scope.cpp:95
bool State_NoData(void) const
CSeqVector GetSeqVector(EVectorCoding coding, ENa_strand strand=eNa_strand_plus) const
Get sequence: Iupacna or Iupacaa if use_iupac_coding is true.
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
TSeqPos size(void) const
Definition: seq_vector.hpp:291
bool IncludeNcbircIfAllowed(TFlags flags=fWithNcbirc)
Attempt to load a systemwide configuration file (.ncbirc on Unix, ncbi.ini on Windows) as a low-prior...
Definition: ncbireg.cpp:1634
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
Definition: ncbistre.hpp:439
#define kEmptyStr
Definition: ncbistr.hpp:123
static int StringToInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to int.
Definition: ncbistr.cpp:630
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
Definition: ncbistr.cpp:3457
#define NPOS
Definition: ncbistr.hpp:133
CNcbiRegistry & NcbiTestGetRWConfig(void)
Wrapper to get the application's configuration parameters, accessible to read-write.
@ e_Gi
GenInfo Integrated Database.
Definition: Seq_id_.hpp:106
char * dbname(DBPROCESS *dbproc)
Get name of current database.
Definition: dblib.c:6929
int i
EIPRangeType t
Definition: ncbi_localip.c:101
BOOST_AUTO_TEST_SUITE(psiblast_iteration)
Definition of SSeqLoc structure.
Configuration structure for the CBlastScopeSource.
bool m_UseGenbank
Use the Genbank data loader.
static const char * kDefaultProteinBlastDb
Default protein BLAST database to use for the BLAST DB data loaders.
string m_BlastDbName
Name of the BLAST database to use (non-empty if m_UseBlastDbs is true)
bool m_UseBlastDbs
Use the BLAST database data loaders.
@ eUseNoDataLoaders
Do not add any data loaders.
@ eUseBlastDbDataLoader
Use the local BLAST database loader first, if this fails, use the remote BLAST database data loader.
@ eUseGenbankDataLoader
Use the Genbank data loader.
Utility stuff for more convenient using of Boost.Test library.
static HENV env
Definition: transaction2.c:38
Modified on Sat Dec 02 09:20:03 2023 by modify_doxy.py rev. 669887