.GetFrom() <
b.GetFrom() ||
46(
a.GetFrom() ==
b.GetFrom() &&
a.GetToOpen() <
b.GetToOpen());
50 template<
typenameIter,
typenameLess>
51 bools_is_sorted(Iter begin, Iter end, Less
less)
56 for( Iter
next= begin; ++
next!= end; begin =
next) {
70 if( !s_is_sorted(mask_ranges.begin(), mask_ranges.end(), ByFrom()) ) {
71vector<CRange<TSeqPos> > ranges(mask_ranges);
72 sort(ranges.begin(), ranges.end(), ByFrom());
75 _ASSERT(s_is_sorted(mask_ranges.begin(), mask_ranges.end(), ByFrom()));
79seq->
SetId().push_back(seq_id);
86 TSeqPoscur_pos = 0, last_pos = 0;
87vector<CRange<TSeqPos> >::const_iterator mask_it = mask_ranges.begin();
88 while( cur_pos < seq_length && mask_it != mask_ranges.end() ) {
89 if( !mask_it->Empty() ) {
90 TSeqPosmask_start = mask_it->GetFrom();
91 if( mask_start <= cur_pos ) {
92 TSeqPosmask_end = mask_it->GetToOpen();
93 if( mask_end > cur_pos ) {
94cur_pos = mask_it->GetToOpen();
98 if( last_pos < cur_pos ) {
101 delta.Set().push_back(seg);
102seg->SetLiteral().SetLength(cur_pos-last_pos);
105 delta.Set().push_back(seg);
107ref_int.
SetId().Assign(original_id);
109 if( mask_start >= seq_length ) {
110ref_int.
SetTo(seq_length-1);
111last_pos = cur_pos = seq_length;
114ref_int.
SetTo(mask_start-1);
115last_pos = cur_pos = mask_start;
120 if( last_pos < cur_pos ) {
123 delta.Set().push_back(seg);
124seg->SetLiteral().SetLength(cur_pos-last_pos);
135vector<CRange<TSeqPos> > mask_ranges;
137 if( !original_id ) {
138original_id = &it.GetSeq_id();
140 else if( !original_id->
Equals(it.GetSeq_id()) ) {
143mask_ranges.push_back(it.GetRange());
155 ConstRef(&original_id), masking_loc);
Seq-loc iterator class â iterates all intervals from a seq-loc in the correct order.
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
unsigned int TSeqPos
Type for sequence locations and lengths.
virtual bool Equals(const CSerialObject &object, ESerialRecursionMode how=eRecursive) const
Check if both objects contain the same values.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Optimized implementation of CSerialObject::Assign, which is not so efficient.
CConstRef< C > ConstRef(const C *object)
Template function for conversion of const object pointer to CConstRef.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
void SetTo(TTo value)
Assign a value to To data member.
void SetId(TId &value)
Assign a value to Id data member.
void SetFrom(TFrom value)
Assign a value to From data member.
TId & SetId(void)
Assign a value to Id data member.
void SetExt(TExt &value)
Assign a value to Ext data member.
void SetInst(TInst &value)
Assign a value to Inst data member.
void SetRepr(TRepr value)
Assign a value to Repr data member.
void SetLength(TLength value)
Assign a value to Length data member.
void SetMol(TMol value)
Assign a value to Mol data member.
@ eRepr_delta
sequence made by changes (delta) to others
@ eMol_not_set
> cdna = rna
CRef< CBioseq > MakeMaskingBioseq(const CSeq_id &new_id, TSeqPos seq_length, const CSeq_id &original_id, const vector< CRange< TSeqPos > > &mask_ranges)
constexpr auto sort(_Init &&init)
Int4 delta(size_t dimension_, const Int4 *score_)
static bool less(const CSeq_feat *A, const CSeq_feat *B)
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