objects::CBioseq_Handle& handle,
69: m_BioseqHandle(handle),
70m_AccumSeg(start, stop, window),
72m_StrandType(strand_type),
73m_CntAligns(0), m_CntMixes(0)
82 if(p_cb) p_cb->
SetTaskName(
"Loading alignments...");
85sel.SetLimitSeqAnnot(
m_BioseqHandle.GetScope().GetSeq_annotHandle
100,
m_Start(aln->GetSeqStart(aln->GetAnchor()))
101,
m_End(aln->GetSeqStop(aln->GetAnchor()))
113 if(
m_Id< rhs.
m_Id)
return true;
114 if(rhs.
m_Id<
m_Id)
return false;
144 if(
size== 0)
return true;
146 typedefvector<const objects::CSeq_align*>
TAlnVector;
170vector<SAlignSmearSort> aligns_to_smear;
172 for(
intai = 0; align_iter; ++align_iter, ++ai) {
230aligns_to_smear.emplace_back(range.
GetFrom(), range.
GetTo(),
id);
234aln_id_map.push_back(align);
242aln_user_options.
SetAnchorId(aln_id_map[0][anchor]);
249aligns_to_smear.emplace_back(sparse_aln,
id);
264}
catch(std::exception&) {
273 sort(aligns_to_smear.begin(), aligns_to_smear.end());
281vector<SAlignSmearSort>::const_iterator aligns_end = aligns_to_smear.end();
282vector<SAlignSmearSort>::const_iterator align_it, last_align = aligns_end;
283 for(align_it = aligns_to_smear.begin();
284align_it != aligns_end;
285last_align = align_it, ++align_it) {
291 if(last_align != aligns_end &&
292last_align->m_Id != align_it->m_Id ) {
299 if(last_align != aligns_end &&
300last_align->m_Id == align_it->m_Id &&
301last_align->m_End < align_it->m_Start ) {
306 if( !align_it->m_Alignment ) {
354 TSeqPospre_stop = (*p_it)->GetAlnRange().GetTo();
388 for(
int i= 0;
i< aln_chunks->size(); ++
i) {
391 TSeqPosstart = chunk->GetRange().GetFrom();
394 TSeqPosstop = chunk->GetRange().GetTo();
402 for(
int i= 1;
i< aln_chunks->size(); ++
i) {
406 TSeqPosstart = prev_chunk->GetRange().GetTo();
409 TSeqPosstop = chunk->GetRange().GetFrom();
424 if(*gap_it > 0 && *seg_it > 0) {
449 if(name ==
"BLASTX - swissprot"||
450name ==
"BLASTN - mrna") {
469 if(seq_annot.IsSetDesc()) {
471seq_annot.GetDesc().Get() ) {
491blast_type =
id.
GetStr();
504hist_type =
id.
GetStr();
511 if( ! annot_name.empty()) {
513}
else if( ! blast_type.empty() ) {
515}
else if( ! hist_type.empty() ) {
User-defined methods of the data storage class.
User-defined methods of the data storage class.
static const string s_HistFieldKey("Hist Seqalign")
static const string s_BlastFieldKey("Blast Type")
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 > ConvertSeq_align(const CSeq_align &src, CSeq_align::TSegs::E_Choice dst_choice, CSeq_align::TDim anchor_row=-1, CScope *scope=NULL)
Convert source alignment to a new type.
CAlnStats< TAlnIdMap > TAlnStats
Default implementations for alignment stats.
vector< const CSeq_align * > TAlnVector
CAlnIdMap< vector< const CSeq_align * >, TIdExtract > TAlnIdMap
Default implementations of CAlnIdMap.
Container mapping seq-aligns to vectors of participating seq-ids.
const CSeq_id & GetSeqId(TNumrow row) const
TDim GetNumRows(void) const
TSeqPos GetAlnStop(TNumseg seg) const
void SetAnchor(TNumrow anchor)
CRef< CAlnChunkVec > GetAlnChunks(TNumrow row, const TSignedRange &range, TGetChunkFlags flags=fAlnSegsOnly) const
TNumrow GetAnchor(void) const
TSeqPos GetAlnStart(TNumseg seg) const
TSignedSeqPos GetSeqPosFromSeqPos(TNumrow for_row, TNumrow row, TSeqPos seq_pos, ESearchDirection dir=eNone, bool try_reverse_dir=true) const
Helper class which collects seq-align statistics: seq-ids participating in alignments and rows,...
Options for different alignment manager operations.
void SetAnchorId(const TAlnSeqIdIRef &anchor_id)
Set anchor id.
@ eBothDirections
No filtering: use both direct and reverse sequences.
size_t GetSize(void) const
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...
TDim CheckNumRows(void) const
Validatiors.
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
ENa_strand GetSeqStrand(TDim row) const
Get strand (the first one if segments have different strands).
TRng GetAlnRange(void) const
Get whole alignment range.
TNumrow GetNumRows(void) const
Synonym of the above.
virtual IAlnSegmentIterator * CreateSegmentIterator(TNumrow row, const TSignedRange &range, IAlnSegmentIterator::EFlags flags) const
Create segment iterator.
TNumrow GetAnchor(void) const
Get anchor row index.
Alignment segment iterator interface.
@ eSkipGaps
Skip gap segments (show only aligned ranges)
Alignment segment interface.
virtual const TSignedRange & GetAlnRange(void) const =0
Get alignment range for the segment.
Task clients implement this callback interface.
bool operator<(const SAlignSmearSort &rhs) const
SAlignSmearSort(TSeqPos start, TSeqPos end, const TId &id)
CConstRef< CSparseAln > m_Alignment
SAlignSmearSort(CConstRef< CSparseAln > &aln, const TId &id)
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
virtual void SetTaskName(const string &name)=0
virtual void SetTaskCompleted(int completed)=0
set total finished task number.
void AddAlignment(const CSparseAln &aln)
Add this one alignment to my smear.
static objects::SAnnotSelector GetAnnotSelector(TAnnotFlags flags=0)
request an annotation selector for a given type
void SetLabel(const string &label)
void AddAnnot(const objects::CSeq_annot &seq_annot, ISeqTaskProgressCallback *p_cb=NULL)
INPUT:
static bool SeparateStrands(const objects::CSeq_annot &seq_annot)
const objects::CBioseq_Handle & m_BioseqHandle
virtual void SetTaskTotal(int total)=0
CAlignmentSmear(const objects::CBioseq_Handle &handle, TSeqPos start, TSeqPos stop, float window=1, EAlignSmearStrand strand_type=eSmearStrand_Both)
unsigned long m_CntAligns
virtual bool StopRequested() const =0
void AddAlignments(const objects::SAnnotSelector &sel, ISeqTaskProgressCallback *p_cb=NULL)
Smear all the alignments matched by this selector on my bioseq.
EAlignSmearStrand m_StrandType
static string x_GetAnnotName(const objects::CSeq_annot &seq_annot)
virtual void AddTaskCompleted(int delta)=0
set to add newly finished task number.
const_iterator end() const
const_iterator begin() const
container_type::iterator iterator
virtual void AddRange(TSeqRange range, CntType score=1, bool expand=false)
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
CConstRef< CSeq_annot > GetCompleteSeq_annot(void) const
Complete and return const reference to the current seq-annot.
const CSeq_annot_Handle & GetAnnot(void) const
Get handle to the seq-annot.
CSeq_align_Handle GetSeq_align_Handle(void) const
Get original alignment handle.
@ eSortOrder_None
do not sort annotations for faster retrieval
void Reset(void)
Reset reference object.
position_type GetLength(void) const
CRange< TSeqPos > TSeqRange
typedefs for sequence ranges
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static string SizetToString(size_t value, TNumToStringFlags flags=0, int base=10)
Convert size_t to string.
static const char label[]
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
bool CanGetType(void) const
Check if it is safe to call GetType method.
const TData & GetData(void) const
Get the Data member data.
bool CanGetData(void) const
Check if it is safe to call GetData method.
TBool GetBool(void) const
Get the variant data.
E_Choice Which(void) const
Which variant is currently selected.
const TStr & GetStr(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
const TLabel & GetLabel(void) const
Get the Label member data.
const TType & GetType(void) const
Get the Type member data.
bool CanGetLabel(void) const
Check if it is safe to call GetLabel method.
E_Choice Which(void) const
Which variant is currently selected.
const TDenseg & GetDenseg(void) const
Get the variant data.
const TSegs & GetSegs(void) const
Get the Segs member data.
bool IsDenseg(void) const
Check if variant Denseg is selected.
const TUser & GetUser(void) const
Get the variant data.
E_Choice Which(void) const
Which variant is currently selected.
const TName & GetName(void) const
Get the variant data.
list< CRef< CAnnotdesc > > Tdata
@ e_Name
a short name for this collection
@ e_User
user defined object
constexpr auto sort(_Init &&init)
const struct ncbi::grid::netcache::search::fields::SIZE size
#define row(bind, expected)
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