69 descrs->AddFlag(
"print_exp",
"Print expected values instead of testing");
70 descrs->AddFlag(
"verbose",
"Print detailed test progress");
108 size_t num_aligns = 0;
109 while ( !
in.eof() ) {
116 if (limit > 0 && num_aligns >= limit)
break;
129 unique_ptr<TScopeAlnIdMap>& aln_id_map)
135 aln_id_map->push_back(**aln_it);
165 cout << aln_idx <<
" " << anchor <<
" " <<
row <<
" " << pw.
GetFlags() << endl;
177 cout <<
" aln=" << aln_idx <<
", anchor=" << anchor <<
", row=" <<
row << endl;
179 size_t expected_aln_idx;
180 int expected_row, expected_anchor;
181 int first_width, second_width;
183 in_exp >> expected_aln_idx >> expected_anchor >> expected_row >>
flags;
184 in_exp >> first_from >> first_to >> first_width;
186 in_exp >> second_from >> second_to >> second_width;
188 BOOST_CHECK(in_exp.good());
189 BOOST_CHECK(aln_idx == expected_aln_idx);
190 BOOST_CHECK(anchor == expected_anchor);
191 BOOST_CHECK(
row == expected_row);
193 BOOST_CHECK(pw.
GetFirstId()->GetSeqId().Equals(first_id));
194 BOOST_CHECK(pw.
GetSecondId()->GetSeqId().Equals(second_id));
208 << rg_it->GetSecondFrom() <<
" "
209 << rg_it->GetLength() <<
" "
213 in_exp >> first_from >> second_from >>
len >>
flags;
214 BOOST_CHECK(in_exp.good());
215 BOOST_CHECK(rg_it->GetFirstFrom() == first_from);
216 BOOST_CHECK(rg_it->GetSecondFrom() == second_from);
217 BOOST_CHECK(rg_it->GetLength() ==
len);
218 BOOST_CHECK(rg_it->IsDirect() == (
flags != 0));
228 BOOST_CHECK(in_exp.good());
235 cout <<
" " << gap->GetFirstFrom() <<
" "
236 << gap->GetSecondFrom() <<
" "
237 << gap->GetLength() <<
" "
238 << (gap->IsDirect() ? 1 : 0) << endl;
241 in_exp >> first_from >> second_from >>
len >>
flags;
242 BOOST_CHECK(in_exp.good());
243 BOOST_CHECK(gap->GetFirstFrom() == first_from);
244 BOOST_CHECK(gap->GetSecondFrom() == second_from);
245 BOOST_CHECK(gap->GetLength() ==
len);
246 BOOST_CHECK(gap->IsDirect() == (
flags != 0));
266 static const char* kGap =
"<GAP>";
267 static const char* kNoData =
"<NO SEQUENCE DATA>";
272 cout << sparse.
GetDim() <<
" "
279 int expected_dim, expected_numrows, expected_anchor;
280 in_exp >> expected_dim >> expected_numrows >> expected_anchor;
281 in_exp >> expected_aln_from >> expected_aln_to;
282 BOOST_CHECK(in_exp.good());
283 BOOST_CHECK(sparse.
GetDim() == expected_dim);
284 BOOST_CHECK(sparse.
GetNumRows() == expected_numrows);
285 BOOST_CHECK(sparse.
GetAnchor() == expected_anchor);
297 int expected_row, expected_width;
299 in_exp >> expected_row >> expected_width >>
MSerial_AsnText >> expected_id;
300 BOOST_CHECK(in_exp.good());
301 BOOST_CHECK(
row == expected_row);
303 BOOST_CHECK(sparse.
GetSeqId(
row).Equals(expected_id));
309 TSeqPos expected_seq_from, expected_seq_to,
310 expected_native_from, expected_native_to;
315 << native_rg.
GetFrom() <<
" " << native_rg.
GetTo() << endl;
318 in_exp >> expected_aln_from >> expected_aln_to
319 >> expected_seq_from >> expected_seq_to
320 >> expected_native_from >> expected_native_to;
321 BOOST_CHECK(in_exp.good());
324 BOOST_CHECK(rg.
GetFrom() == expected_seq_from);
325 BOOST_CHECK(rg.
GetTo() == expected_seq_to);
326 BOOST_CHECK(native_rg.
GetFrom() == expected_native_from);
327 BOOST_CHECK(native_rg.
GetTo() == expected_native_to);
330 if ( check_sequence ) {
331 string aln_sequence, row_sequence;
334 if ( aln_sequence.empty() ) {
335 aln_sequence = kNoData;
337 if ( row_sequence.empty() ) {
338 row_sequence = kNoData;
342 cout << aln_sequence << endl;
343 cout << row_sequence << endl;
347 cout <<
" whole row=" <<
row << endl;
349 string expected_aln_sequence, expected_row_sequence;
351 getline(in_exp, expected_aln_sequence);
352 getline(in_exp, expected_row_sequence);
353 BOOST_CHECK(in_exp.good());
354 BOOST_CHECK(aln_sequence == expected_aln_sequence);
355 BOOST_CHECK(row_sequence == expected_row_sequence);
360 for (; sparse_ci; ++sparse_ci) {
366 cout <<
" " << seg.
GetType() <<
" "
372 cout <<
" segment: row=" <<
row <<
", range=" <<
375 unsigned expected_seg_type;
378 in_exp >> expected_seg_type
379 >> expected_aln_from >> expected_aln_to
380 >> expected_seq_from >> expected_seq_to;
381 BOOST_CHECK(in_exp.good());
382 BOOST_CHECK(seg.
GetType() == expected_seg_type);
383 BOOST_CHECK(aln_rg.
GetFrom() == expected_aln_from);
384 BOOST_CHECK(aln_rg.
GetTo() == expected_aln_to);
385 BOOST_CHECK(seq_rg.
GetFrom() == expected_seq_from);
386 BOOST_CHECK(seq_rg.
GetTo() == expected_seq_to);
389 if ( check_sequence ) {
390 string aln_sequence, row_sequence;
391 string expected_aln_sequence, expected_row_sequence;
393 if ( !aln_rg.
Empty() ) {
395 if ( aln_sequence.empty() ) {
396 aln_sequence = kNoData;
402 if ( !seq_rg.
Empty() ) {
405 if ( row_sequence.empty() ) {
406 row_sequence = kNoData;
414 cout << aln_sequence << endl;
415 cout << row_sequence << endl;
419 getline(in_exp, expected_aln_sequence);
420 getline(in_exp, expected_row_sequence);
421 BOOST_CHECK(in_exp.good());
422 BOOST_CHECK(aln_sequence == expected_aln_sequence);
423 BOOST_CHECK(row_sequence == expected_row_sequence);
433 cout <<
"Test CAlnContainer and CAlnStats... (aligns1.asn / expected01.txt)" << endl;
443 size_t num_aligns =
LoadAligns(in_data, aligns);
446 cout << num_aligns << endl;
449 size_t expected_num_aligns;
450 in_exp >> expected_num_aligns;
451 BOOST_CHECK(num_aligns == expected_num_aligns);
454 unique_ptr<TScopeAlnIdMap> aln_id_map;
458 BOOST_CHECK(aln_stats->GetAlnCount() == num_aligns);
459 BOOST_CHECK(aln_stats->CanBeAnchored());
464 cout << (*id_it)->GetBaseWidth() <<
" ";
472 BOOST_CHECK(
id.
Equals((*id_it)->GetSeqId()));
473 BOOST_CHECK((*id_it)->GetBaseWidth() == width);
481 cout <<
"Test CPairwiseAln... (aligns1.asn / expected02.txt)" << endl;
491 size_t num_aligns =
LoadAligns(in_data, aligns);
494 cout << num_aligns << endl;
497 size_t expected_num_aligns;
498 in_exp >> expected_num_aligns;
499 BOOST_CHECK(num_aligns == expected_num_aligns);
502 unique_ptr<TScopeAlnIdMap> aln_id_map;
508 for (
size_t aln_idx = 0; aln_idx < aln_vec.size(); ++aln_idx) {
513 for (
int anchor = 0; anchor < 2; anchor++) {
515 for (
int row = 0;
row < aln_stats->GetDimForAln(aln_idx); ++
row) {
516 if (
row == anchor)
continue;
526 cout <<
" " << seg.GetFirstRange().GetFrom() <<
" "
527 << seg.GetFirstRange().GetTo() <<
" "
528 << seg.GetSecondRange().GetFrom() <<
" "
529 << seg.GetSecondRange().GetTo() <<
" "
530 << (seg.IsDirect() ? 1 : 0) <<
" "
531 << (seg.IsFirstDirect() ? 1 : 0) <<
" "
535 int direct, first_direct, aligned;
537 in_exp >> first_from >> first_to >> second_from >> second_to >>
538 direct >> first_direct >> aligned;
539 BOOST_CHECK(in_exp.good());
540 BOOST_CHECK(seg.GetFirstRange().GetFrom() == first_from);
541 BOOST_CHECK(seg.GetFirstRange().GetTo() == first_to);
542 BOOST_CHECK(seg.GetSecondRange().GetFrom() == second_from);
543 BOOST_CHECK(seg.GetSecondRange().GetTo() == second_to);
544 BOOST_CHECK(seg.IsDirect() == (direct != 0));
545 BOOST_CHECK(seg.IsFirstDirect() == (first_direct != 0));
558 cout <<
"Test ranged CPairwise_CI... (aligns1.asn / expected03.txt)" << endl;
580 size_t num_aligns =
LoadAligns(in_data, aligns);
583 cout << num_aligns << endl;
586 size_t expected_num_aligns;
587 in_exp >> expected_num_aligns;
588 BOOST_CHECK(num_aligns == expected_num_aligns);
591 unique_ptr<TScopeAlnIdMap> aln_id_map;
597 for (
size_t aln_idx = 0; aln_idx < aln_vec.size(); ++aln_idx) {
602 for (
int anchor = 0; anchor < 2; anchor++) {
604 for (
int row = 0;
row < aln_stats->GetDimForAln(aln_idx); ++
row) {
605 if (
row == anchor)
continue;
614 cout << aln_idx <<
" " << anchor <<
" " <<
row <<
" " << pw.
GetFlags() << endl;
626 cout <<
" aln=" << aln_idx <<
", anchor=" << anchor <<
", row=" <<
row << endl;
628 size_t expected_aln_idx;
629 int expected_row, expected_anchor;
630 int first_width, second_width,
flags;
632 in_exp >> expected_aln_idx >> expected_anchor >> expected_row >>
flags;
633 in_exp >> first_from >> first_to >> first_width;
635 in_exp >> second_from >> second_to >> second_width;
637 BOOST_CHECK(in_exp.good());
638 BOOST_CHECK(aln_idx == expected_aln_idx);
639 BOOST_CHECK(anchor == expected_anchor);
640 BOOST_CHECK(
row == expected_row);
642 BOOST_CHECK(pw.
GetFirstId()->GetSeqId().Equals(first_id));
643 BOOST_CHECK(pw.
GetSecondId()->GetSeqId().Equals(second_id));
652 if (pw.
size() < 2)
continue;
654 first_from = (pw.
begin()+1)->GetFirstFrom() + 1;
655 first_to = pw.
rbegin()->GetFirstFrom() - 2;
660 cout <<
" " << seg.GetFirstRange().GetFrom() <<
" "
661 << seg.GetFirstRange().GetTo() <<
" "
662 << seg.GetSecondRange().GetFrom() <<
" "
663 << seg.GetSecondRange().GetTo() <<
" "
664 << (seg.IsDirect() ? 1 : 0) <<
" "
665 << (seg.IsFirstDirect() ? 1 : 0) <<
" "
669 int direct, first_direct, aligned;
670 in_exp >> first_from >> first_to >> second_from >> second_to >>
671 direct >> first_direct >> aligned;
672 BOOST_CHECK(in_exp.good());
673 BOOST_CHECK(seg.GetFirstRange().GetFrom() == first_from);
674 BOOST_CHECK(seg.GetFirstRange().GetTo() == first_to);
675 BOOST_CHECK(seg.GetSecondRange().GetFrom() == second_from);
676 BOOST_CHECK(seg.GetSecondRange().GetTo() == second_to);
677 BOOST_CHECK(seg.IsDirect() == (direct != 0));
678 BOOST_CHECK(seg.IsFirstDirect() == (first_direct != 0));
690 cout <<
"Test CAnchoredAln... (aligns1.asn / expected04.txt)" << endl;
696 size_t num_aligns =
LoadAligns(in_data, aligns);
699 cout << num_aligns << endl;
702 size_t expected_num_aligns;
703 in_exp >> expected_num_aligns;
704 BOOST_CHECK(num_aligns == expected_num_aligns);
707 unique_ptr<TScopeAlnIdMap> aln_id_map;
710 for (
size_t aln_idx = 0; aln_idx < aligns.
size(); ++aln_idx) {
711 for (
int anchor = 0; anchor < aln_stats->GetDimForAln(aln_idx); ++anchor) {
714 aln_idx, user_options, anchor);
728 static const int kMergeFlags[] = {
737 cout <<
"Test built CAnchoredAln... (aligns2.asn / expected05.txt)" << endl;
743 while (!in_data.eof() && in_data.good()) {
746 in_data >> num_to_merge;
747 if (num_to_merge == 0 || !in_data.good())
break;
750 size_t num_aligns =
LoadAligns(in_data, aligns, num_to_merge);
753 cout << num_aligns << endl;
756 size_t expected_num_aligns;
757 in_exp >> expected_num_aligns;
758 BOOST_CHECK(num_aligns == expected_num_aligns);
761 unique_ptr<TScopeAlnIdMap> aln_id_map;
765 for (
size_t anchor_idx = 0; anchor_idx < aln_ids.size(); anchor_idx++) {
770 for (
size_t flags_idx = 0; flags_idx <
sizeof(kMergeFlags)/
sizeof(kMergeFlags[0]); flags_idx++) {
774 cout << anchor_idx <<
" "
779 cout <<
" set=" << setnum <<
", anchor=" << anchor_idx <<
" (" <<
780 anchor_id->GetSeqId().AsFastaString() <<
")" <<
781 ", flags_idx=" << flags_idx << endl;
783 size_t expected_anchor_idx;
785 in_exp >> expected_anchor_idx >> expected_flags;
786 BOOST_CHECK(in_exp.good());
787 BOOST_CHECK(anchor_idx == expected_anchor_idx);
788 BOOST_CHECK(user_options.
m_MergeFlags == expected_flags);
795 id->SetLocal().SetStr(
"pseudo-id");
798 BuildAln(anchored_aln_vec, built_aln, user_options, pseudo_id);
813 cout <<
"Test CSparseAln coordinates... (aligns2.asn / expected06.txt)" << endl;
819 while (!in_data.eof() && in_data.good()) {
822 in_data >> num_to_merge;
823 if (num_to_merge == 0 || !in_data.good())
break;
826 size_t num_aligns =
LoadAligns(in_data, aligns, num_to_merge);
829 cout << num_aligns << endl;
832 size_t expected_num_aligns;
833 in_exp >> expected_num_aligns;
834 BOOST_CHECK(num_aligns == expected_num_aligns);
837 unique_ptr<TScopeAlnIdMap> aln_id_map;
841 for (
size_t anchor_idx = 0; anchor_idx < aln_ids.size(); anchor_idx++) {
848 cout << anchor_idx <<
" "
853 cout <<
" set=" << setnum <<
", anchor=" << anchor_idx <<
" (" <<
854 anchor_id->GetSeqId().AsFastaString() <<
")" << endl;
856 size_t expected_anchor_idx;
857 in_exp >> expected_anchor_idx;
860 BOOST_CHECK(in_exp.good());
861 BOOST_CHECK(anchor_idx == expected_anchor_idx);
862 BOOST_CHECK(anchor_id->GetSeqId().Equals(expected_anchor_id));
869 id->SetLocal().SetStr(
"pseudo-id");
872 BuildAln(anchored_aln_vec, built_aln, user_options, pseudo_id);
884 cout <<
"Test CSparseAln sequence... (aligns3.asn / expected07.txt)" << endl;
890 while (!in_data.eof() && in_data.good()) {
893 in_data >> num_to_merge;
894 if (num_to_merge == 0 || !in_data.good())
break;
897 size_t num_aligns =
LoadAligns(in_data, aligns, num_to_merge);
900 cout << num_aligns << endl;
903 size_t expected_num_aligns;
904 in_exp >> expected_num_aligns;
905 BOOST_CHECK(num_aligns == expected_num_aligns);
908 unique_ptr<TScopeAlnIdMap> aln_id_map;
912 for (
size_t anchor_idx = 0; anchor_idx < aln_ids.size(); anchor_idx++) {
919 cout << anchor_idx <<
" "
924 cout <<
" set=" << setnum <<
", anchor=" << anchor_idx <<
" (" <<
925 anchor_id->GetSeqId().AsFastaString() <<
")" << endl;
927 size_t expected_anchor_idx;
928 in_exp >> expected_anchor_idx;
931 BOOST_CHECK(in_exp.good());
932 BOOST_CHECK(anchor_idx == expected_anchor_idx);
933 BOOST_CHECK(anchor_id->GetSeqId().Equals(expected_anchor_id));
940 id->SetLocal().SetStr(
"pseudo-id");
943 BuildAln(anchored_aln_vec, built_aln, user_options, pseudo_id);
958 BOOST_CHECK(aln->
Equals(expected_aln));
966 cout <<
"Test seq-align types... (aligns4.asn / expected08.txt)" << endl;
972 size_t num_aligns =
LoadAligns(in_data, aligns);
975 cout << num_aligns << endl;
978 size_t expected_num_aligns;
979 in_exp >> expected_num_aligns;
980 BOOST_CHECK(num_aligns == expected_num_aligns);
983 unique_ptr<TScopeAlnIdMap> aln_id_map;
986 for (
size_t aln_idx = 0; aln_idx < aligns.
size(); ++aln_idx) {
987 for (
int anchor = 0; anchor < aln_stats->GetDimForAln(aln_idx); ++anchor) {
990 if (aln_stats->GetAlnVec()[aln_idx]->GetSegs().IsSparse() && anchor > 0) {
996 aln_idx, user_options, anchor);
void BuildAln(TAnchoredAlnVec &in_alns, CAnchoredAln &out_aln, const CAlnUserOptions &options, TAlnSeqIdIRef pseudo_seqid=TAlnSeqIdIRef())
Build anchored alignment from a set of alignmnets.
void ConvertSeqAlignToPairwiseAln(CPairwiseAln &pairwise_aln, const objects::CSeq_align &sa, objects::CSeq_align::TDim row_1, objects::CSeq_align::TDim row_2, CAlnUserOptions::EDirection direction=CAlnUserOptions::eBothDirections, const TAlnSeqIdVec *ids=0)
Build pairwise alignment from the selected rows of a seq-align.
void CreateAnchoredAlnVec(_TAlnStats &aln_stats, TAnchoredAlnVec &out_vec, const CAlnUserOptions &options)
Create anchored alignment from each seq-align in the stats.
CRef< CAnchoredAln > CreateAnchoredAlnFromAln(const _TAlnStats &aln_stats, size_t aln_idx, const CAlnUserOptions &options, objects::CSeq_align::TDim explicit_anchor_row=-1)
Create an anchored alignment from Seq-align using hints.
CRef< CSeq_align > CreateSeqAlignFromAnchoredAln(const CAnchoredAln &anchored_aln, CSeq_align::TSegs::E_Choice choice, CScope *scope=NULL)
Convert CAnchoredAln to seq-align of the selected type.
CAlnStats< TScopeAlnIdMap > TScopeAlnStats
CAlnIdMap< vector< const CSeq_align * >, TScopeIdExtract > TScopeAlnIdMap
const_iterator begin() const
const_reverse_iterator rbegin() const
TSignedSeqPos GetSecondPosByFirstPos(position_type pos, ESearchDirection dir=eNone) const
position_type GetFirstFrom() const
@ fDefaultPolicy
do not store insertions
const TInsertions & GetInsertions() const
Each insertion shows where the 'first' sequence has a gap while the 'second' sequence has the inserti...
vector< TAlignRange > TInsertions
position_type GetFirstTo() const
CAlignRange Represents an element of pairwise alignment of two sequences.
const_iterator insert(const CSeq_align &seq_align)
Insert new CSeq_align into the list.
size_type size(void) const
Default IAlnSeqId implementation based on CSeq_id_Handle.
_TAlnIdVec::TAlnVec TAlnVec
Vector of original seq-aligns.
_TAlnIdVec::TIdVec TIdVec
Vector of ids used in all alignments.
Options for different alignment manager operations.
void SetAnchorId(const TAlnSeqIdIRef &anchor_id)
Set anchor id.
@ eBothDirections
No filtering: use both direct and reverse sequences.
@ fUseAnchorAsAlnSeq
Use the anchor sequence as the alignment sequence.
@ fAllowTranslocation
Allow translocations on the same row.
@ fAnchorRowFirst
Store anchor row in the first pairwise alignment (by default it's stored in the last one).
@ fTruncateOverlaps
Truncate overlapping ranges.
@ fIgnoreInsertions
Do not collect and store insertions (gaps on the anchor).
Query-anchored alignment can be 2 or multi-dimentional.
const TPairwiseAlnVector & GetPairwiseAlns(void) const
The vector of pairwise alns.
TDim GetAnchorRow(void) const
Which is the anchor row?
static TRegisterLoaderInfo RegisterInObjectManager(CObjectManager &om, CReader *reader=0, CObjectManager::EIsDefault is_default=CObjectManager::eDefault, CObjectManager::TPriority priority=CObjectManager::kPriority_NotSet)
static CNcbiApplication * Instance(void)
Singleton method.
A pairwise aln is a collection of ranges for a pair of rows.
int GetSecondBaseWidth(void) const
Base width of the second row.
const TAlnSeqIdIRef & GetFirstId(void) const
Get first sequence id.
int GetFirstBaseWidth(void) const
Base width of the first row.
const TAlnSeqIdIRef & GetSecondId(void) const
Get second sequence id.
CPairwiseAln iterator. Iterates over aligned ranges and gaps.
Scope-aware seq-id converter.
void Validate(bool full_test=false) const
TSignedSeqPos GetSeqAlnStart(TNumrow row) const
TRng GetAlnRange(void) const
Get whole alignment range.
TNumrow GetNumRows(void) const
Synonym of the above.
int GetBaseWidth(TNumrow row) const
Get base width for the sequence (1 for nucleotides, 3 for proteins).
TSignedSeqPos GetSeqAlnStop(TNumrow row) const
TRange GetSeqRange(TNumrow row) const
Get sequence range in sequence coords.
CAnchoredAln::TDim TDim
Synonym of TNumrow.
_TRange AlnRangeToNativeSeqRange(TNumrow row, _TRange aln_range) const
Convert alignment range (genomic coordinates) on the selected row to real sequence range.
string & GetAlnSeqString(TNumrow row, string &buffer, const TSignedRange &rq_aln_rng, bool force_translation=false) const
Fetch alignment sequence data.
TDim GetDim(void) const
Alignment dimension (number of sequence rows in the alignment)
TNumrow GetAnchor(void) const
Get anchor row index.
string & GetSeqString(TNumrow row, string &buffer, TSeqPos seq_from, TSeqPos seq_to, bool force_translation=false) const
Fetch sequence data for the given row and range.
const objects::CSeq_id & GetSeqId(TNumrow row) const
Get seq-id for the row.
Implementation of IAlnSegmentIterator for CSparseAln.
@ eAllSegments
Iterate all segments.
Alignment segment interface.
virtual const TSignedRange & GetRange(void) const =0
Get the selected row range.
virtual TSegTypeFlags GetType(void) const =0
Get current segment type.
virtual const TSignedRange & GetAlnRange(void) const =0
Get alignment range for the segment.
unsigned int TSeqPos
Type for sequence locations and lengths.
virtual const CArgs & GetArgs(void) const
Get parsed command line arguments.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
int TSignedSeqPos
Type for signed sequence position.
#define MSerial_AsnText
I/O stream manipulators –.
virtual bool Equals(const CSerialObject &object, ESerialRecursionMode how=eRecursive) const
Check if both objects contain the same values.
static CRef< CObjectManager > GetInstance(void)
Return the existing object manager or create one.
void AddDefaults(TPriority pri=kPriority_Default)
Add default data loaders from object manager.
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
void Reset(void)
Reset reference object.
position_type GetFirstFrom(void) const
static TThisType GetWhole(void)
IO_PREFIX::istream CNcbiIstream
Portable alias for istream.
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
unsigned int
A callback function used to compare two keys in a database.
static bool Equals(const CVariation::TPlacements &p1, const CVariation::TPlacements &p2)
Defines the CNcbiApplication and CAppException classes for creating NCBI applications.
std::istream & in(std::istream &in_, double &x_)
vector< CRef< CAnchoredAln > > TAnchoredAlnVec
Collection of anchored alignments.
#define row(bind, expected)
Utility stuff for more convenient using of Boost.Test library.
CRef< TScopeAlnStats > InitAlnStats(const CAlnContainer &aligns, unique_ptr< TScopeAlnIdMap > &aln_id_map)
size_t LoadAligns(CNcbiIstream &in, CAlnContainer &aligns, size_t limit=0)
void CheckSparseAln(CNcbiIstream &in_exp, const CSparseAln &sparse, bool check_sequence)
NCBITEST_INIT_CMDLINE(descrs)
void CheckPairwiseAln(CNcbiIstream &in_exp, const CPairwiseAln &pw, size_t aln_idx, int anchor, int row)
BOOST_AUTO_TEST_CASE(s_TestLoadAlign)