52 #undef NCBI_BOOST_NO_AUTO_TEST_MAIN
56 #ifndef SKIP_DOXYGEN_PROCESSING
62 template<
class ASNOBJ>
70 template<
class ASNOBJ>
78 template<
class ASNOBJ>
98 CSeq_align::TScore::iterator iter_score = score_entries.begin();
99 while (iter_score != score_entries.end())
102 if (score_entry->CanGetId() && score_entry->GetId().IsStr())
104 string str_id = score_entry->GetId().GetStr();
105 if (str_id ==
"use_this_gi")
107 bool bIsLegalGiEntry = score_entry->CanGetValue() && score_entry->GetValue().IsInt();
108 BOOST_REQUIRE(bIsLegalGiEntry);
109 Uint4 gi_v = (
Uint4) (score_entry->GetValue().GetInt());
120 BOOST_REQUIRE(id->
IsGi());
132 return find(list_gis.begin(), list_gis.end(), gi) != list_gis.end();
137 bool is_missing =
false;
139 list<TGi>::iterator it;
140 for (it = list_sub.begin(); it != list_sub.end() && !is_missing; it++)
158 return binary_search(vec_gis.begin(), vec_gis.end(), gi);
162 list<TGi>& list_sa_filtered)
164 list<TGi> list_sa_full;
167 for (list<TGi>::iterator it = list_sa_full.begin();
168 it != list_sa_full.end(); it++)
172 list_sa_filtered.push_back(*it);
176 return !list_sa_filtered.empty();
185 list<TGi>& list_orig_filtered,
186 list<TGi>& list_new_filtered)
198 int oid1 = -1, oid2 = -1;
202 BOOST_REQUIRE(oid1 > 0);
203 BOOST_REQUIRE(oid2 > 0);
204 BOOST_REQUIRE(oid1 == oid2);
211 vector<TGi>& vec_all_gis)
213 list<TGi> list_orig_filtered;
214 list<TGi> list_new, list_new_filtered;
220 list_orig_filtered, list_new_filtered);
227 list<TGi> list_extra_gis;
230 for (list<TGi>::iterator it_extra_gi = list_extra_gis.begin();
231 it_extra_gi != list_extra_gis.end(); it_extra_gi++)
253 string fname_in_rel =
"blast/algo/unit_tests/blast_format/data/in_test.txt";
254 string fname_out =
"data/out_test.txt";
255 string fname_gis =
"data/gilist_test.txt";
280 bool found_gi =
false;
284 if (gi == gi_filtered)
290 BOOST_REQUIRE(found_gi);
297 string fname_in_rel =
"blast/algo/unit_tests/blast_format/data/in_test.txt";
298 string fname_out =
"data/out_test.txt";
299 string fname_gis =
"data/gilist_test.txt";
307 string db_name =
"nt";
308 bool use_prot =
false;
313 BOOST_REQUIRE_NO_THROW(db = filter.
PrepareSeqDB(db_name, use_prot, fname_gis););
333 if (gi == gi_filtered)
User-defined methods of the data storage class.
Declarations of auxiliary functions using IBlastSeqInfoSrc to retrieve ids and related sequence infor...
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
void FilterSeqalignsExt(const string &fname_in_seqaligns, const string &fname_out_seqaligns, CRef< CSeqDB > db)
Filter Seqaligns - extended file-based version.
CRef< CSeqDB > PrepareSeqDB(const string &fname_db, bool is_prot, const string &fname_gis_to_filter)
Load a SeqDB database with the given gi-list.
void ReadGiList(const string &fname, list< TGi > &list_gis, bool sorted=false)
Read a gi list from a file and, optionally, sort it.
void ReadGiVector(const string &fname, vector< TGi > &vec_gis, bool sorted=false)
Read a gi vector from a file and, optionally, sort it.
void FilterSeqaligns(const string &fname_in_seqaligns, const string &fname_out_seqaligns, const string &fname_gis_to_filter)
Filter Seqaligns - file-based version.
bool GiToOid(TGi gi, int &oid) const
Translate a GI to an OID.
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
#define GI_FROM(T, value)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
static char GetPathSeparator(void)
Get path separator symbol specific for the current platform.
static string ConcatPath(const string &first, const string &second)
Concatenate two parts of the path for the current OS.
#define MSerial_AsnText
I/O stream manipulators –.
@ eSerial_AsnText
ASN.1 text.
static CObjectIStream * Open(ESerialDataFormat format, CNcbiIstream &inStream, bool deleteInStream)
Create serial object reader and attach it to an input stream.
uint32_t Uint4
4-byte (32-bit) unsigned integer
TScore & SetScore(void)
Assign a value to Score data member.
vector< CRef< CScore > > TScore
list< CRef< CSeq_align > > Tdata
const Tdata & Get(void) const
Get the member data.
bool IsGi(void) const
Check if variant Gi is selected.
BOOST_AUTO_TEST_SUITE(psiblast_iteration)
static bool s_AreListsEqual(list< TGi > &list1, list< TGi > &list2)
static bool s_GetFilteredGiList(CRef< CSeq_align > sa, vector< TGi > &vec_all_gis, list< TGi > &list_sa_filtered)
static void s_Check_GiEquivalenceInDB(TGi gi1, TGi gi2, CRef< CSeqDB > db)
static void s_LoadSeqAlignsFromFile(CSeq_align_set &aln_all, const string &fname)
static void s_GetUseThisGiEntries(CRef< CSeq_align > sa, list< TGi > &list_gis)
void s_Unstringify(const string &s, ASNOBJ &a)
void s_Stringify(const ASNOBJ &a, string &s)
static bool s_IsGiInVector(TGi gi, vector< TGi > &vec_gis)
CRef< ASNOBJ > s_Duplicate(const ASNOBJ &a)
static bool s_IsGiInList(TGi gi, list< TGi > &list_gis)
static void s_DoEquivalenceCheck(CRef< CSeq_align > sa_new, CRef< CSeqDB > db)
static void s_Check_GiListConsistency(CRef< CSeq_align >, CRef< CSeq_align > sa_new, list< TGi > &list_orig_filtered, list< TGi > &list_new_filtered)
static TGi s_GetAlignedSeqGi(CRef< CSeq_align > sa)
BOOST_AUTO_TEST_CASE(s_TestSimpleFiltering)
static void s_DoConsistencyCheck(CRef< CSeq_align > sa_orig, CRef< CSeq_align > sa_new, vector< TGi > &vec_all_gis)
static void s_GetFullGiList(CRef< CSeq_align > sa, list< TGi > &list_gis)
static bool s_IsListSubset(list< TGi > &list_all, list< TGi > &list_sub)
Defines BLAST database access classes.
Defines a concrete strategy for the IBlastSeqInfoSrc interface for sequence identifiers retrieval fro...
Utility stuff for more convenient using of Boost.Test library.
Defines location of test data folder at NCBI.
static const char * NCBI_GetTestDataPath(void)
Get the directory where test data is stored at NCBI.