list<T> TypeList;
64 size_tCount = List.size();
67 ITERATE(
typenameTypeList, Iter, List) {
74 template<
typenameT>
76 typedeflist<T> TypeList;
77 size_tCount = List.size();
79 doubleRunningTotal = 0;
80 ITERATE(
typenameTypeList, Iter, List) {
81RunningTotal += ((*Iter - Mean) * (*Iter - Mean))/
double(Count);
84 returnsqrt(RunningTotal);
87 template<
typenameT>
88 void s_CalcDevs(
constlist<T>& Values,
TMean,
doubleStdDev, list<double>& Devs) {
89 typedeflist<T> TypeList;
91 ITERATE(
typenameTypeList, Iter, Values) {
92 doubleDist =
fabs(
double(*Iter) -
double(Mean));
93 doubleDev = (Dist/StdDev);
103OrigHandle =
m_Scope->GetBioseqHandle(Id);
126OrigHandle =
m_Scope->GetBioseqHandle(
Loc);
157MergedAligns.push_back(Fixed);
162TIdPairToAlignListMap PairsMap;
165PairIdStr = (*AlignIter)->GetSeq_id(0).AsFastaString() +
"_" 166+ (*AlignIter)->GetSeq_id(1).AsFastaString();
167PairsMap[PairIdStr].push_back(*AlignIter);
171MergedAligns.clear();
173 ERR_POST(
Info<<
"CUnorderedSplitter::CombineAlignments:: "<< PairMapIter->first);
175 if(AlignList.size() == 1) {
176MergedAligns.push_back(AlignList.front());
181 if(AlignList.size() == 1)
182MergedAligns.push_back(AlignList.front());
183 else if(!AlignList.empty()) {
187 if(!
x_IsAllGap((*AlignIter)->GetSegs().GetDenseg()))
188Disc->
SetSegs().SetDisc().Set().push_back(*AlignIter);
190MergedAligns.push_back(Disc);
201 const string& PartIdString = PartIter->first;
203SplitIdList.push_back(PartId);
216 stringOrigIdStr = Id.GetSeqIdString(
true);
220CurrBioseq->
SetInst().SetLength(0);
223CurrBioseq->
SetInst().SetExt().SetDelta().Set();
243 if(BioRange.
Empty() ) {
249CurrInterval->
SetId().Assign(Id);
263SplitIds.push_back(CurrId);
264CurrBioseq->
SetId().push_back(CurrId);
266 m_Scope->AddBioseq(*CurrBioseq);
270CurrBioseq->
SetInst().SetLength(0);
273CurrBioseq->
SetInst().SetExt().SetDelta().Set();
293InsertSeq->Assign(Seq);
298 if(Inter.
Empty()) {
299SegStart += SeqLength;
302InsertSeq->SetLoc().SetInt().SetId().Assign(Id);
304InsertSeq->SetLoc().SetInt().SetFrom(Inter.
GetFrom());
305InsertSeq->SetLoc().SetInt().SetTo(Inter.
GetTo());
311CurrBioseq->
SetInst().SetExt().SetDelta().Set().push_back(InsertSeq);
314SegStart += SeqLength;
321 if(CurrRange.
Empty())
326 if(Inter.
Empty()) {
333CurrInterval->
SetId().Assign(Id);
335CurrInterval->
SetTo() = CurrRange.
GetTo();
347SplitIds.push_back(CurrId);
348CurrBioseq->
SetId().push_back(CurrId);
350 m_Scope->AddBioseq(*CurrBioseq);
364 stringNs(100,
'n');
366 stringOrigIdStr = Id.GetSeqIdString(
true);
371 size_tStart = 0, Found = 0;
373Found = IupacStr.find(Ns, Start);
375 if(Found != string::npos) {
378CurrRange.
SetTo(Found-1);
382 if(Inter.
Empty()) {
383Start = Found+Ns.size();
390CurrInterval->
SetId().Assign(Id);
392CurrInterval->
SetTo() = CurrRange.
GetTo();
404SplitIds.push_back(CurrId);
406DeltaSeq->SetLoc().SetInt().Assign(*CurrInterval);
412CurrBioseq->
SetInst().SetExt().SetDelta().Set();
414CurrBioseq->
SetInst().SetExt().SetDelta().Set().push_back(DeltaSeq);
415CurrBioseq->
SetId().push_back(CurrId);
417 m_Scope->AddBioseq(*CurrBioseq);
419Start = Found+Ns.size();
422}
while(Found != string::npos);
424 if(Start <= Vec.
size()) {
431 if(Inter.
Empty()) {
438CurrInterval->
SetId().Assign(Id);
440CurrInterval->
SetTo() = CurrRange.
GetTo();
452SplitIds.push_back(CurrId);
454DeltaSeq->SetLoc().SetInt().Assign(*CurrInterval);
460CurrBioseq->
SetInst().SetExt().SetDelta().Set();
462CurrBioseq->
SetInst().SetExt().SetDelta().Set().push_back(DeltaSeq);
463CurrBioseq->
SetId().push_back(CurrId);
465 m_Scope->AddBioseq(*CurrBioseq);
474Fixed->
Assign(SourceAlignment);
476 if(SourceAlignment.GetSegs().IsDisc()) {
477Fixed->
SetSegs().SetDisc().Set().clear();
481 if(!FixedPart.
IsNull())
482Fixed->
SetSegs().SetDisc().Set().push_back(FixedPart);
493 if(SourceInterval.
IsNull())
497Denseg.
SetIds()[0]->Assign(SourceInterval->
GetId());
507QueryStarts[0] =
A->GetSeqStart(0);
508QueryStarts[1] =
B->GetSeqStart(0);
511 return( QueryStarts[0] > QueryStarts[1] );
517vector<CRef<CSeq_align> > TempVec;
518TempVec.reserve(AlignSet.size());
519TempVec.resize(AlignSet.size());
520 copy(AlignSet.begin(), AlignSet.end(), TempVec.begin());
523 copy(TempVec.begin(), TempVec.end(),
524insert_iterator<TSeqAlignList>(AlignSet, AlignSet.end()));
530TSeqAlignList::iterator Outer, Inner;
531 for(Outer = Alignments.begin(); Outer != Alignments.end(); ) {
532 for(Inner = Outer, ++Inner; Inner != Alignments.end(); ) {
534 if(
x_IsAllGap((*Inner)->GetSegs().GetDenseg()))
535Inner = Alignments.erase(Inner);
539 if(
x_IsAllGap((*Outer)->GetSegs().GetDenseg()))
540Outer = Alignments.erase(Outer);
581 if(!FillUnaligned.
IsNull()) {
582NonSeg.
Assign(*FillUnaligned);
598 if(NonRange == Intersection) {
603NonSeg.
SetLens().push_back(1);
607}
else if(Intersection.
NotEmpty()) {
610 if(Intersection.
GetTo() < NonRange.
GetTo())
627NonSeg.
SetLens().push_back(1);
639 for(
intIndex = 0; Index < Denseg.
GetNumseg(); Index++) {
654SubjRange = (*AlignIter)->GetSeqRange(1);
657Centers.push_back(SubjCenter);
665 s_CalcDevs(Centers, MeanCenter, StdDev, Devs);
673TSeqAlignList::iterator AlignIter;
674list<Int8>::iterator CenterIter;
675list<double>::iterator DevsIter, Devs2Iter;
676 for(AlignIter = Alignments.begin(), CenterIter = Centers.begin(),
677DevsIter = Devs.begin();
678AlignIter != Alignments.end(); ) {
680 if(*DevsIter <= 3.0) {
698: m_Splitter(Splitter)
723 "CSplitSeqIdListSet::CreateQueryFactory: Id List is empty.");
737 "CSplitSeqIdListSet::CreateQueryFactory: Id List is empty.");
752 "CSplitSeqIdListSet::CreateLocalDbAdapter: Id List is empty.");
763: m_Splitter(Splitter)
788 "CSplitSeqLocListSet::CreateQueryFactory: Loc List is empty.");
802 "CSplitSeqLocListSet::CreateQueryFactory: Loc List is empty.");
817 "CSplitSeqLocListSet::CreateLocalDbAdapter: Loc List is empty.");
841(*AlignIter)->SetNamedScore(
GetName(), 1);
843NewResults->Insert(*MergedAligns);
848AccumResults->DropQuery(**IdIter);
User-defined methods of the data storage class.
User-defined methods of the data storage class.
@ eExtreme_Positional
numerical value
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
Handle to the options to the BLAST algorithm.
void TrimEndGaps()
Trim leading/training gaps if possible.
void OffsetRow(TDim row, TSignedSeqPos offset)
Offset row's coords.
void RemovePureGapSegs()
Remove any segments in which every row has a gap (these can arise when ExtractRows is used)
CRef< CDense_seg > ExtractSlice(TDim row, TSeqPos from, TSeqPos to) const
Extract a slice of the alignment that includes the specified range.
CRef< CDense_seg > FillUnaligned() const
Create a new dense-seg with added all unaligned pieces (implicit inserts), if any,...
void Compact()
Join adjacent mergeable segments to create a more compact alignment.
CRange< TSeqPos > GetSeqRange(TDim row) const
void Assign(const CSerialObject &obj, ESerialRecursionMode how=eRecursive)
overloaded Assign()
list< CRef< objects::CSeq_id > > & SetIdList()
CRef< blast::IQueryFactory > CreateQueryFactory(objects::CScope &Scope, const blast::CBlastOptionsHandle &BlastOpts)
CRef< blast::CLocalDbAdapter > CreateLocalDbAdapter(objects::CScope &Scope, const blast::CBlastOptionsHandle &BlastOpts)
void SetSeqMasker(CSeqMasker *SeqMasker)
Main interface to window based masker functionality.
CRange< TSeqPos > GetSeqRange(TDim row) const
GetSeqRange NB: On a Spliced-seg, in case the product-type is protein, these only return the amin par...
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
TSeqPos GetLength(void) const
CUnorderedSplitter * m_Splitter
TAlignResultsRef GenerateAlignments(objects::CScope &Scope, ISequenceSet *Querys, ISequenceSet *Subjects, TAlignResultsRef AccumResults)
void SetSeqMasker(CSeqMasker *SeqMasker)
CSplitSeqIdListSet(CUnorderedSplitter *Splitter)
CUnorderedSplitter * m_Splitter
CRef< blast::CLocalDbAdapter > CreateLocalDbAdapter(objects::CScope &Scope, const blast::CBlastOptionsHandle &BlastOpts)
CSeqIdListSet m_SeqIdListSet
void AddSeqId(CRef< objects::CSeq_id > Id)
list< CRef< objects::CSeq_id > > m_OrigSeqIdList
CRef< blast::IQueryFactory > CreateQueryFactory(objects::CScope &Scope, const blast::CBlastOptionsHandle &BlastOpts)
CUnorderedSplitter * m_Splitter
CRef< blast::IQueryFactory > CreateQueryFactory(objects::CScope &Scope, const blast::CBlastOptionsHandle &BlastOpts)
void AddSeqLoc(CRef< objects::CSeq_loc > Loc)
CSplitSeqLocListSet(CUnorderedSplitter *Splitter)
CRef< blast::CLocalDbAdapter > CreateLocalDbAdapter(objects::CScope &Scope, const blast::CBlastOptionsHandle &BlastOpts)
list< CRef< objects::CSeq_loc > > m_OrigSeqLocList
CSeqIdListSet m_SeqIdListSet
void SetSeqMasker(CSeqMasker *SeqMasker)
void x_SortAlignSet(TSeqAlignList &AlignSet)
void x_SplitDeltaExt(const objects::CSeq_id &Id, objects::CBioseq_Handle OrigHandle, TSeqIdList &SplitIds, TSeqRange LimitRange=TSeqRange())
bool x_IsAllGap(const objects::CDense_seg &Denseg)
void x_MakeAlignmentsUnique(TSeqAlignList &Alignments)
void SplitId(const objects::CSeq_id &Id, TSeqIdList &SplitIds)
CRef< objects::CScope > m_Scope
void CombineAlignments(const TSeqAlignList &SourceAligns, TSeqAlignList &MergedAligns)
TSplitIntervalsMap m_PartsMap
CRef< objects::CSeq_align > x_FixAlignment(const objects::CSeq_align &SourceAlignment)
void x_SplitSeqData(const objects::CSeq_id &Id, objects::CBioseq_Handle OrigHandle, TSeqIdList &SplitIds, TSeqRange LimitRange=TSeqRange())
void x_MakeAlignmentPairUnique(CRef< objects::CSeq_align > First, CRef< objects::CSeq_align > Second)
static bool s_SortByQueryStart(const CRef< objects::CSeq_align > &A, const CRef< objects::CSeq_align > &B)
void x_StripDistantAlignments(TSeqAlignList &Alignments)
void SplitLoc(const objects::CSeq_loc &Loc, TSeqIdList &SplitIds)
void GetSplitIdList(TSeqIdList &SplitIdList)
void x_TrimRows(const objects::CDense_seg &DomSeg, objects::CDense_seg &NonSeg, int Row)
list< CRef< objects::CSeq_align > > TSeqAlignList
list< CRef< objects::CSeq_id > > TSeqIdList
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)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
void Info(CExceptionArgs_Base &args)
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
const string AsFastaString(void) const
TSeqPos GetStart(ESeqLocExtremes ext) const
Return start and stop positions of the seq-loc.
TSeqPos GetStop(ESeqLocExtremes ext) const
bool CanGetInst(void) const
CSeqVector GetSeqVector(EVectorCoding coding, ENa_strand strand=eNa_strand_plus) const
Get sequence: Iupacna or Iupacaa if use_iupac_coding is true.
const TInst & GetInst(void) const
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
void GetSeqData(TSeqPos start, TSeqPos stop, string &buffer) const
Fill the buffer string with the sequence data for the interval [start, stop).
void Reset(void)
Reset reference object.
bool IsNull(void) const THROWS_NONE
Check if pointer is null â same effect as Empty().
int64_t Int8
8-byte (64-bit) signed integer
position_type GetLength(void) const
bool NotEmpty(void) const
TThisType & CombineWith(const TThisType &r)
TThisType IntersectionWith(const TThisType &r) const
TThisType & SetLength(position_type length)
CRange< TSeqPos > TSeqRange
typedefs for sequence ranges
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_SCOPE(ns)
Define a new scope.
static string & ReplaceInPlace(string &src, const string &search, const string &replace, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
static string UInt8ToString(Uint8 value, TNumToStringFlags flags=0, int base=10)
Convert UInt8 to string.
void SetFrom(TFrom value)
Assign a value to From data member.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
void SetTo(TTo value)
Assign a value to To data member.
TStr & SetStr(void)
Select the variant.
const TDenseg & GetDenseg(void) const
Get the variant data.
Tdata & Set(void)
Assign a value to data member.
TScore & SetScore(void)
Assign a value to Score data member.
TLens & SetLens(void)
Assign a value to Lens data member.
const TStarts & GetStarts(void) const
Get the Starts member data.
void SetSegs(TSegs &value)
Assign a value to Segs data member.
void SetType(TType value)
Assign a value to Type data member.
TDim GetDim(void) const
Get the Dim member data.
TStarts & SetStarts(void)
Assign a value to Starts data member.
TStrands & SetStrands(void)
Assign a value to Strands data member.
void SetNumseg(TNumseg value)
Assign a value to Numseg data member.
TNumseg GetNumseg(void) const
Get the Numseg member data.
list< CRef< CSeq_align > > Tdata
TIds & SetIds(void)
Assign a value to Ids data member.
const TSegs & GetSegs(void) const
Get the Segs member data.
@ eType_disc
discontinuous alignment
void SetTo(TTo value)
Assign a value to To data member.
const TId & GetId(void) const
Get the Id member data.
void SetId(TId &value)
Assign a value to Id data member.
TFrom GetFrom(void) const
Get the From member data.
void SetFrom(TFrom value)
Assign a value to From data member.
TLocal & SetLocal(void)
Select the variant.
TTo GetTo(void) const
Get the To member data.
void SetStrand(TStrand value)
Assign a value to Strand data member.
TRepr GetRepr(void) const
Get the Repr member data.
TId & SetId(void)
Assign a value to Id data member.
const TInst & GetInst(void) const
Get the Inst member data.
const TLiteral & GetLiteral(void) const
Get the variant data.
bool IsLoc(void) const
Check if variant Loc is selected.
TLength GetLength(void) const
Get the Length member data.
TMol GetMol(void) const
Get the Mol member data.
bool IsDelta(void) const
Check if variant Delta is selected.
void SetInst(TInst &value)
Assign a value to Inst data member.
const TExt & GetExt(void) const
Get the Ext member data.
const TDelta & GetDelta(void) const
Get the variant data.
const TLoc & GetLoc(void) const
Get the variant data.
bool CanGetSeq_data(void) const
Check if it is safe to call GetSeq_data method.
const Tdata & Get(void) const
Get the member data.
bool CanGetExt(void) const
Check if it is safe to call GetExt method.
bool CanGetSeq_data(void) const
Check if it is safe to call GetSeq_data method.
bool IsLiteral(void) const
Check if variant Literal is selected.
list< CRef< CDelta_seq > > Tdata
bool IsGap(void) const
Check if variant Gap is selected.
const TSeq_data & GetSeq_data(void) const
Get the Seq_data member data.
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 s_CalcDevs(const list< T > &Values, T Mean, double StdDev, list< double > &Devs)
double s_CalcStdDev(const list< T > &List, T Mean)
T s_CalcMean(const list< T > &List)
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