70 m_TreeAlignMerger.SetScope(&Scope);
73 QueryIter, AccumResults->Get()) {
75 int BestRank = QueryIter->second->GetBestRank();
76 if(BestRank > m_Threshold || BestRank == -1) {
78 << QueryIter->second->GetQueryId()->AsFastaString()
79 <<
" needs Merging.");
82 Results = x_MergeAlignments(*QueryIter->second, Scope);
84 if(!Results->
Get().empty()) {
85 ERR_POST(
Info <<
"Merge created " << Results->
Get().size() <<
" aligns");
110 for(
int i = 0;
i < 1;
i++) {
111 list< CRef<CSeq_align_set> > compartments;
119 if(
out && !
out->Set().empty() ) {
121 Merged->
Set().push_back(*AlignIter);
134 Pluses->Set().push_back(*AlignIter);
136 Minuses->
Set().push_back(*AlignIter);
141 if(!Pluses->Set().empty()) {
145 if(!Minuses->
Set().empty()) {
152 Merged->
Set().push_back(*AlignIter);
156 Merged->
Set().push_back(*AlignIter);
169 list<CRef<CSeq_align> > In;
215 if(
Out->Set().empty())
229 return (Lengths[0] > Lengths[1]);
236 int Scores[2] = {0, 0};
239 return (Scores[0] > Scores[1]);
245 vector<CRef<CSeq_align> > TempVec;
246 TempVec.reserve(AlignSet.
Set().size());
247 copy(AlignSet.
Set().begin(), AlignSet.
Set().end(),
255 AlignSet.
Set().clear();
256 copy(TempVec.begin(), TempVec.end(),
257 insert_iterator<CSeq_align_set::Tdata>(AlignSet.
Set(), AlignSet.
Set().end()));
Declares the CBl2Seq (BLAST 2 Sequences) class.
Declares the CBlastNucleotideOptionsHandle class.
Declares the CBlastOptionsHandle and CBlastOptionsFactory classes.
Definitions of special type used in BLAST.
Main argument class for BLASTN application.
class CAlignCleanup implements an alignment cleanup utility based on the C++ alignment manager.
void FillUnaligned(bool b)
Fill any unaligned regions with explicit gaps.
void Cleanup(const TAligns &aligns_in, TAligns &aligns_out, EMode mode=eDefault)
ENa_strand GetSeqStrand(TDim row) const
void Reverse(void)
Reverse the segments' orientation.
CRef< CDense_seg > FillUnaligned() const
Create a new dense-seg with added all unaligned pieces (implicit inserts), if any,...
void Assign(const CSerialObject &obj, ESerialRecursionMode how=eRecursive)
overloaded Assign()
@ eAlignCleanup
Use the older (CAlignCleanup) merge algorithm.
@ eTreeAlignMerger
Use the new (CTreeAlignMerger) merge algorithm.
void x_SortAlignSet(objects::CSeq_align_set &AlignSet, int CompartFlags=0)
CRef< objects::CSeq_align_set > x_MergeAlignments(CQuerySet &QueryAligns, objects::CScope &Scope)
CTreeAlignMerger m_TreeAlignMerger
CRef< objects::CSeq_align_set > x_MergeSeqAlignSet(objects::CSeq_align_set &InAligns, objects::CScope &Scope)
TAssemblyToSubjectSet & Get()
TSeqPos GetAlignLength(const CSeq_align &align, bool ungapped=false)
Compute the length of the alignment (= length of all segments, gaps + aligned)
void SetNamedScore(const string &id, int score)
void Merge(const list< CRef< objects::CSeq_align > > &Input, list< CRef< objects::CSeq_align > > &Output)
Declares the CDiscNucleotideOptionsHandle class.
std::ofstream out("events_result.xml")
main entry point for tests
void FindCompartments(const list< CRef< CSeq_align > > &aligns, list< CRef< CSeq_align_set > > &align_sets, TCompartOptions options=fCompart_Defaults, float diff_len_filter=3.0f)
@ fCompart_AllowIntersections
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.
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
void Error(CExceptionArgs_Base &args)
string ReportAll(TDiagPostFlags flags=eDPF_Exception) const
Report all exceptions.
void Info(CExceptionArgs_Base &args)
bool IsNull(void) const THROWS_NONE
Check if pointer is null – same effect as Empty().
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_SCOPE(ns)
Define a new scope.
Tdata & Set(void)
Assign a value to data member.
void SetSegs(TSegs &value)
Assign a value to Segs data member.
TDim GetDim(void) const
Get the Dim member data.
TStrands & SetStrands(void)
Assign a value to Strands data member.
bool CanGetStrands(void) const
Check if it is safe to call GetStrands method.
TNumseg GetNumseg(void) const
Get the Numseg member data.
list< CRef< CSeq_align > > Tdata
const TStrands & GetStrands(void) const
Get the Strands member data.
const Tdata & Get(void) const
Get the member data.
Main class to perform a BLAST search on the local machine.
static bool s_SortByScore(const CRef< objects::CSeq_align > &A, const CRef< objects::CSeq_align > &B)
static bool s_SortByAlignedLength(const CRef< objects::CSeq_align > &A, const CRef< objects::CSeq_align > &B)
constexpr auto sort(_Init &&init)
Magic spell ;-) needed for some weird compilers... very empiric.
Defines NCBI C++ exception handling.
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)
void Out(T t, int w, CNcbiOstream &to=cout)