<
typenameKey,
typenameData,
typenameCompare = less<Key>,
typenameAlloc = allocator<pair<const Key,Data> > >
81 classCMapWithOriginalOrderingIteration :
private map<Key, Data, Compare, Alloc>
104m_keysInOriginalOrder.push_back( x.first );
112iterator find_iter =
find(k);
113 if( find_iter !=
end() ) {
115 returnfind_iter->second;
122 return result.first->second;
125 typedefvector<Key> TKeyVec;
126 constTKeyVec & GetKeysInOriginalOrder(
void)
const{
127 _ASSERT( m_keysInOriginalOrder.size() ==
size() );
128 returnm_keysInOriginalOrder;
132TKeyVec m_keysInOriginalOrder;
135constexpr
autoConstructSortMap()
164std::array<unsigned char, CSeqdesc::E_ChoiceStopper::e_MaxChoice> _sorted{};
165static_assert(init_seqdesc_sortmap.size() <= _sorted.size());
166 for(
auto& it: _sorted)
169 unsigned charindex=0;
170 for(
autorec: init_seqdesc_sortmap)
172_sorted[rec] = index;
179 autoseqdesc_sortmap = ConstructSortMap();
181 structCompareSeqdesc
185 if(c<0 || c>=seqdesc_sortmap.size())
187 returnseqdesc_sortmap[c];
192 returnmapit(
l->Which()) < mapit(
r->Which());
210 if((*it)->IsLiteral()) {
211 len= (*it)->GetLiteral().GetLength();
212}
else if((*it)->IsLoc()) {
227 if(
delta->IsLoc())
return false;
228 if(
delta->GetLiteral().CanGetSeq_data() &&
delta->GetLiteral().GetSeq_data().IsGap()){
236 if(!seq_hl)
return false;
239 if(!start)
return false;
244 if(
i< (start - 1) )
continue;
245 if(it.IsInGap())
return true;
252 if(!seq_hl)
return false;
257 if(stop >= seq_vec.
size() - 1)
return false;
260 if(
i< (stop + 1) )
continue;
261 if(it.IsInGap())
return true;
276 if( it->IsSeq() && it->GetSeq().GetInst_Mol() != seq_mol ) {
278 "Unable to add part due to conflicting molecular types");
307back_inserter(segs));
325parts = it->SetSet();
326}
else if( it->IsSeq() &&
328master = it->SetSeq();
332 if( !parts || !master ) {
348 if( !target || !insert ) {
354}
else if( target.
IsSet() && insert.
IsSeq() ) {
371 prot.MoveTo(nuc_prot);
377 static size_t count= 0;
402seq->
SetId().push_back(
id);
428}
else if( to_mol == add_mol ) {
454 if( it->
IsSeq() &&
463seq.
MoveTo(nuc_prot, 0);
471 if( !
set|| !seq ) {
477 if( !seq_edit || !set_edit ) {
520seq_edit.
MoveTo(set_edit);
528 for(
autoit:
set.Get()) {
529 if(it->Equals(desc)) {
531}
else if(it->IsPub() &&
533it->GetPub().GetPub().SameCitation(desc.
GetPub().
GetPub())) {
545seq_descr.
Set().push_back(d);
568 if(entry.
IsSeq()) {
571}
else if(entry.
IsSet()) {
616 if(entry->
IsSeq()) {
630 if( ! direct_child_ci ) {
635 if( direct_child_ci ) {
642 for( ; annot_ci; ++annot_ci ) {
655 typedefvector<CSeq_entry_EditHandle> TBioseqSetsToPromote;
656TBioseqSetsToPromote bioseqSetsToPromote;
660 for( ; direct_child_set_ci; ++direct_child_set_ci ) {
671++direct_child_direct_child_ci;
672 _ASSERT( ! direct_child_direct_child_ci );
679desc_choices_to_erase );
687bioseqSetsToPromote.push_back(
688direct_child_direct_child_eh );
693 ITERATE( TBioseqSetsToPromote, promoted_set_it, bioseqSetsToPromote ) {
695promoted_set_it->GetParentEntry().Remove();
718}
else if( rhs.
IsNull() ) {
728 returnlhs_asn < rhs_asn;
739 if( asn_text.empty() ) {
741stringstream asn_strm;
743asn_strm.str().swap( asn_text );
762 if( ! target || ! target.
IsSet() ) {
776 boolchild_became_parent =
false;
777 if( ! target_parent_h ) {
780target_parent_h = bioseq_set_h;
781child_became_parent =
true;
794 typedefvector< CConstRef<CSeqdesc> > TDescRefVec;
795TDescRefVec vecDescsToAddToNewBioseqSet;
797 typedefvector< CConstRef<CSeq_annot> > TAnnotRefVec;
798TAnnotRefVec vecAnnotsToAddToNewBioseqSet;
809 if( best_entry_for_bioseq &&
813 if( parent_entry && parent_entry.
IsSet() &&
817best_entry_for_bioseq = parent_entry;
820 if( ! best_entry_for_bioseq ) {
841 for( ; desc_ci; ++desc_ci ) {
842vecDescsToAddToNewBioseqSet.push_back(
847 for( ; annot_ci; ++annot_ci ) {
861 for( ; dest_desc_ci; ++dest_desc_ci ) {
865 ITERATE( TDescRefVec, src_seqdesc_ref_it, vecDescsToAddToNewBioseqSet ) {
866 if( descsSeen.
find(*src_seqdesc_ref_it) != descsSeen.
end() ) {
873descsSeen.
insert( *src_seqdesc_ref_it );
882 for( ; dest_annot_ci; ++dest_annot_ci ) {
886 ITERATE( TAnnotRefVec, src_annot_it, vecAnnotsToAddToNewBioseqSet ) {
887 if( annotsSeen.
find(*src_annot_it) != annotsSeen.
end() ) {
894annotsSeen.
insert( *src_annot_it );
899 if( child_became_parent ) {
903vector<CSeq_entry_Handle> siblingVec;
908++new_set_sibling_ci;
910 for( ; new_set_sibling_ci; ++new_set_sibling_ci ) {
911siblingVec.push_back(*new_set_sibling_ci);
915 boolbNeedsNewSet =
false;
916 ITERATE( vector<CSeq_entry_Handle>, sibling_it, siblingVec ) {
917 if( sibling_it->IsSeq() ) {
918bNeedsNewSet =
true;
922 if( sibling_it->IsSet() &&
926bNeedsNewSet =
true;
930 if( bNeedsNewSet ) {
937 ITERATE( vector<CSeq_entry_Handle>, sibling_it, siblingVec ) {
949 for( ; parent_descr_ci; ++parent_descr_ci ) {
967 if( ! target || ! target.
IsSet() ) {
981 for( ; direct_child_ci; ++direct_child_ci ) {
982vecOfSeqEntryHandles.push_back(*direct_child_ci);
1005 boolbAnyAlignChanged =
false;
1012 typedefvector< CConstRef<CDense_diag> > TDenseDiagVec;
1016TMapEntryToDenseDiags mapEntryToDenseDiags;
1023pDendiag->IsSetIds() && pDendiag->GetIds().size() == 2 )
1030 boolbRemoveDendiag =
false;
1039mapDescendentToInputEntry.
find(bioseqs_entry) :
1040mapDescendentToInputEntry.
end() );
1041 if( find_input_entry_iter == mapDescendentToInputEntry.
end() ) {
1046find_input_entry_iter->second;
1047 _ASSERT(candidate_input_entry);
1050 if( ! dest_input_entry ) {
1052dest_input_entry = candidate_input_entry;
1053}
else if( dest_input_entry == candidate_input_entry ) {
1059bRemoveDendiag =
true;
1064 if( bRemoveDendiag ) {
1065bAnyAlignChanged =
true;
1068 if( dest_input_entry != old_input_entry ) {
1069bAnyAlignChanged =
true;
1071mapEntryToDenseDiags[dest_input_entry].push_back(pDendiag);
1076mapEntryToDenseDiags[old_input_entry].push_back(pDendiag);
1082 if( mapEntryToDenseDiags.size() == 1 )
1085mapEntryToDenseDiags.begin()->first;
1086mapEntryToAlignVec[dest_input_entry].push_back( align.
GetSeq_align() );
1092entry_to_dendiags_iter,
1093mapEntryToDenseDiags )
1096entry_to_dendiags_iter->first;
1097TDenseDiagVec & dendiag_vec = entry_to_dendiags_iter->second;
1098 _ASSERT( ! dendiag_vec.empty() );
1106pNewAlign->
SetSegs().SetDendiag();
1107 ITERATE( TDenseDiagVec, dendiag_vec_it, dendiag_vec ) {
1109pNewDendiag->Assign( **dendiag_vec_it );
1110new_dendiag_vec.push_back( pNewDendiag );
1113mapEntryToAlignVec[dest_input_entry].push_back( pNewAlign );
1116bAnyAlignChanged =
true;
1119 returnbAnyAlignChanged;
1128 boolbAnyAlignChanged =
false;
1134 typedefvector<CDense_seg::TDim> TRowVec;
1139TMapInputEntryToDensegRows mapInputEntryToDensegRows;
1143 for(
unsignediRow = 0; iRow < ids.size(); ++iRow) {
1151mapDescendentToInputEntry.
find(id_bioseq_entry) :
1152mapDescendentToInputEntry.
end() );
1153 if( find_input_entry_iter == mapDescendentToInputEntry.
end() ) {
1155bAnyAlignChanged =
true;
1161find_input_entry_iter->second;
1164 if( id_input_entry != old_input_entry ) {
1165bAnyAlignChanged =
true;
1167mapInputEntryToDensegRows[id_input_entry].push_back(iRow);
1170 if( ! bAnyAlignChanged ) {
1172mapEntryToAlignVec[old_input_entry].push_back( align.
GetSeq_align() );
1176 ITERATE(TMapInputEntryToDensegRows,
1177input_entry_to_denseg_it,
1178mapInputEntryToDensegRows)
1181input_entry_to_denseg_it->first;
1182 constTRowVec & rowVec = input_entry_to_denseg_it->second;
1190pNewSeqAlign->
SetSegs().SetDenseg( *pNewDenseg );
1192mapEntryToAlignVec[dest_input_entry].push_back( pNewSeqAlign );
1196bAnyAlignChanged =
true;
1199 returnbAnyAlignChanged;
1208 if( ! annot_h.
IsAlign() ) {
1227 boolbAnyAlignNeedsChange =
false;
1231 for( ; align_ci; ++align_ci) {
1239align, mapDescendentToInputEntry, mapEntryToAlignVec) )
1241bAnyAlignNeedsChange =
true;
1248align, mapDescendentToInputEntry, mapEntryToAlignVec) )
1250bAnyAlignNeedsChange =
true;
1255mapEntryToAlignVec[old_input_entry].push_back(align.
GetSeq_align());
1261 if( ! bAnyAlignNeedsChange ) {
1270pOldAnnotWithNoAligns->
SetData().SetAlign().clear();
1274 ITERATE( TMapEntryToAlignVec::TKeyVec,
1275entry_to_aligns_iter,
1276mapEntryToAlignVec.GetKeysInOriginalOrder() )
1280mapEntryToAlignVec.find(dest_input_entry)->second;
1285pNewAnnot->
Assign(*pOldAnnotWithNoAligns);
1287pNewAnnot->
SetData().SetAlign();
1289 _ASSERT( new_aligns.empty() );
1293pNewAlign->
Assign( **align_it );
1294new_aligns.push_back( pNewAlign );
1297mapSeqAnnotToDest[pNewAnnot] = dest_input_entry;
1301vecOfSeqAnnotToErase.push_back(annot_h);
1311mapDescendentToInputEntry[*input_entry_iter] = *input_entry_iter;
1313 for(; descendent_entry_iter; ++descendent_entry_iter ) {
1314mapDescendentToInputEntry[*descendent_entry_iter] = *input_entry_iter;
1330 for( ; annot_ci; ++annot_ci ) {
1333mapDescendentToInputEntry,
1335vecOfSeqAnnotsToErase );
1340 ITERATE(TMapSeqAnnotToDest::TKeyVec,
1342mapSeqAnnotToDest.GetKeysInOriginalOrder() )
1345 const CSeq_entry_Handle& dest_entry_h = mapSeqAnnotToDest.find(pAnnot)->second;
1348 if( dest_entry_h ) {
1355pAnnotCopy->
Assign(*pAnnot);
1356input_entry_iter->GetEditHandle().AttachAnnot(*pAnnotCopy);
1363annot_iter->GetEditHandle().Remove();
1370 if(
set.IsEmptySeq_set()) {
1377 if((*it)->IsSetDescr()) {
1380 if(!(*d)->IsTitle() && !(*d)->IsMolinfo() && !(*d)->IsSource()) {
1384master->
Set().push_back(cpy);
1390CSeq_descr::Tdata::iterator d = master->
Set().begin();
1391 while(d != master->
Set().end()) {
1392 boolfound =
false;
1394 if((*d)->Equals(**s)) {
1402d = master->
Set().erase(d);
1411 if(master->
IsSet() && !master->
Set().empty()) {
1417 if((*it)->IsSeq()) {
1420CBioseq::TDescr::Tdata::iterator di = bse.
SetDescr().Set().begin();
1421 while(di != bse.
SetDescr().Set().end() && !(*di)->Equals(**d)) {
1424 if(di != bse.
SetDescr().Set().end()) {
1427}
else if((*it)->IsSet()) {
1430CBioseq_set::TDescr::Tdata::iterator di = bsse.
SetDescr().Set().begin();
1431 while(di != bsse.
SetDescr().Set().end() && !(*di)->Equals(**d)) {
1434 if(di != bsse.
SetDescr().Set().end()) {
1449 constvector<CSeqdesc::E_Choice> &choices_to_delete )
1451 if( ! bioseq_set_h ) {
1457stable_sort( sorted_choices_to_delete.begin(),
1458sorted_choices_to_delete.end() );
1470 for( ; desc_ci; ++desc_ci ) {
1471 if( ! binary_search( sorted_choices_to_delete.begin(),
1472sorted_choices_to_delete.end(), desc_ci->
Which() ) )
1475pSeqDescrWithChosenDescs->
Set().push_back(
1479pSeqDescrToCopy = pSeqDescrWithChosenDescs;
1484 for( ; direct_child_ci; ++direct_child_ci ) {
1546 switch(
id.Which()) {
1548 if(
id.GetLocal().IsStr()) {
1549 val=
id.GetLocal().GetStr();
1550}
else if(
id.GetLocal().IsId()) {
1559 val=
id.AsFastaString();
1585 if(entry.
IsSeq()) {
1586 boolneed_object =
true;
1592need_object =
false;
1603obj->
SetData().push_back(field);
1609seq.
SetDescr().Set().push_back(desc);
1628 boolfound =
false;
1629 boolany_type =
false;
1630 boolfound_mismatch =
false;
1639 if((*id_it)->Which() == choice) {
1647found_mismatch =
true;
1650found_mismatch =
true;
1653found_mismatch =
true;
1656found_mismatch =
true;
1660 if(!found && (any_type || found_mismatch)) {
1672 for(
autoit: user.
GetData()) {
1686 if(entry.
IsSeq()) {
1713 if(entry.
IsSeq()) {
1716 if((*desc_it)->IsUser() && (*desc_it)->GetUser().GetObjectType() ==
type) {
1727 if((*desc_it)->IsUser() && (*desc_it)->GetUser().GetObjectType() ==
type) {
1751ds->SetLiteral().SetSeq_data().SetIupacna().Set(element);
1752ds->SetLiteral().SetLength(
TSeqPos(element.length()));
1754inst.
SetExt().SetDelta().Set().push_back(ds);
1761 if(is_assembly_gap)
1763gap->SetLiteral().SetSeq_data().SetGap();
1764gap->SetLiteral().SetSeq_data().SetGap().SetType(gap_type);
1767gap->SetLiteral().SetSeq_data().SetGap().SetLinkage(linkage);
1769 if(linkage_evidence >= 0)
1772link_ev->SetType(linkage_evidence);
1773gap->SetLiteral().SetSeq_data().SetGap().SetLinkage_evidence().push_back(link_ev);
1779gap->SetLiteral().SetLength(n_len);
1780inst.
SetExt().SetDelta().Set().push_back(gap);
1805 size_tmin_unknown,
intmax_unknown,
1806 size_tmin_known,
intmax_known,
1807 boolis_assembly_gap,
intgap_type,
intlinkage,
intlinkage_evidence )
1840 ITERATE(
string, it, iupacna) {
1841 if((*it) ==
'N') {
1847 boolis_unknown =
false;
1848 boolis_known =
false;
1850 if(n_len >= min_unknown && (max_unknown < 0 || n_len <= max_unknown)) {
1852}
else if(n_len >= min_known && (max_known < 0 || n_len <= max_known)) {
1855 if(is_unknown || is_known) {
1857 if(element.length() > n_len) {
1858element = element.substr(0, element.length() - n_len);
1861 s_AddGap(inst, n_len, is_unknown, is_assembly_gap, gap_type, linkage, linkage_evidence);
1872 boolis_unknown =
false;
1873 boolis_known =
false;
1875 if(n_len >= min_unknown && (max_unknown < 0 || n_len <= max_unknown)) {
1877}
else if(n_len >= min_known && (max_known < 0 || n_len <= max_known)) {
1880 if(is_unknown || is_known) {
1882 if(element.length() > n_len) {
1883element = element.substr(0, element.length() - n_len);
1886 s_AddGap(inst, n_len, is_unknown, is_assembly_gap, gap_type, linkage, linkage_evidence);
1920 if((*it)->IsLiteral()) {
1921 if((*it)->GetLiteral().IsSetLength()) {
1922orig_len = (*it)->GetLiteral().GetLength();
1924 if((*it)->GetLiteral().IsSetFuzz()
1925&& orig_len != unknown_length
1926&& (!(*it)->GetLiteral().IsSetSeq_data() || (*it)->GetLiteral().GetSeq_data().IsGap())) {
1928 intdiff = unknown_length - orig_len;
1929(*it)->SetLiteral().SetLength(unknown_length);
1933}
else if((*it)->IsLoc()) {
1934orig_len = (*it)->GetLoc().GetTotalRange().GetLength();
1945 size_tmin_unknown,
intmax_unknown,
1946 size_tmin_known,
intmax_known,
1947 boolis_assembly_gap,
intgap_type,
intlinkage,
intlinkage_evidence )
1952 ConvertRawToDeltaByNs(*inst, min_unknown, max_unknown, min_known, max_known, is_assembly_gap, gap_type, linkage, linkage_evidence);
1957 if(changes.size() > 0) {
1960cpy->
Assign(*(
f->GetSeq_feat()));
1961TLocAdjustmentVector::reverse_iterator it = changes.rbegin();
1963 booltrimmed =
false;
1964 while(it != changes.rend() && !cut) {
1965 if(it->second < 0) {
1993 if((*it)->IsLiteral()
1994&& (!(*it)->GetLiteral().IsSetSeq_data() || (*it)->GetLiteral().GetSeq_data().IsGap())) {
1995 CSeq_gap& gap = (*it)->SetLiteral().SetSeq_data().SetGap();
2012 if((*it)->IsLiteral()
2013&& (!(*it)->GetLiteral().IsSetSeq_data() || (*it)->GetLiteral().GetSeq_data().IsGap())) {
2014 CSeq_gap& gap = (*it)->SetLiteral().SetSeq_data().SetGap();
2024 if((*it)->IsLiteral()
2025&& (!(*it)->GetLiteral().IsSetSeq_data() || (*it)->GetLiteral().GetSeq_data().IsGap())) {
2026 CSeq_gap& gap = (*it)->SetLiteral().SetSeq_data().SetGap();
2043 if((*it)->IsLiteral()
2044&& (!(*it)->GetLiteral().IsSetSeq_data() || (*it)->GetLiteral().GetSeq_data().IsGap())) {
2045 CSeq_gap& gap = (*it)->SetLiteral().SetSeq_data().SetGap();
2060 if((*it)->IsLiteral()
2061&& (!(*it)->GetLiteral().IsSetSeq_data() || (*it)->GetLiteral().GetSeq_data().IsGap())) {
2062 CSeq_gap& gap = (*it)->SetLiteral().SetSeq_data().SetGap();
2101ss <<
"Nuc has invalid sequence length = "<< nuc_len;
2105TCuts::const_iterator cit;
2106 for(cit = cuts.begin(); cit != cuts.end(); ++cit) {
2107 const TRange& cut = *cit;
2110 if(cut_from < 0 || cut_to < 0 || cut_from >= nuc_len || cut_to >= nuc_len) {
2112ss <<
"Cut location is invalid = ["<< cut_from <<
" - "<< cut_to <<
"]";
2120 const autonum_cuts = sorted_merged_cuts.size();
2121 _ASSERT(num_cuts==1 || num_cuts==2);
2124 const auto& first_cut = sorted_merged_cuts[0];
2125 if(num_cuts == 1) {
2126 if(first_cut.GetFrom() == 0) {
2127range.
SetFrom(first_cut.GetTo()+1);
2128range.
SetTo(seqLength-1);
2132range.
SetTo(first_cut.GetFrom()-1);
2138 _ASSERT(first_cut.GetFrom() > 0);
2139range.
SetTo(first_cut.GetFrom()-1);
2140range.
SetFrom(sorted_merged_cuts[1].GetTo()+1);
2156 GetSortedCuts(bsh, cuts, sorted_cuts, internal_cut_conversion);
2170 for(; feat_ci; ++feat_ci) {
2177 boolbFeatureDeleted =
false;
2180 boolbFeatureTrimmed =
false;
2183 boolisPartialStart =
false;
2184 boolisPartialStop =
false;
2185 TrimSeqFeat(copy_feat, sorted_cuts, bFeatureDeleted, bFeatureTrimmed, isPartialStart, isPartialStop);
2187 if(bFeatureDeleted) {
2192}
else if(bFeatureTrimmed) {
2207 autonew_frame = sequence::CFeatTrim::GetCdsFrame(original_feat, retainedRange);
2209copy_feat->
SetData().SetCdregion().SetFrame(new_frame);
2212 RetranslateCdregion(bsh, isPartialStart, isPartialStop, copy_inst, copy_feat, sorted_cuts);
2217feat_eh.
Replace(*copy_feat);
2224 for(; align_ci; ++align_ci) {
2252 for(; graph_ci; ++graph_ci) {
2328 for(it = sorted_cuts.begin(); it != sorted_cuts.end(); ) {
2333 if( it+1 != sorted_cuts.end() ) {
2334 TRange& next_cut = *(it+1);
2338 if( next_from <= (to + 1) ) {
2341cut.
SetTo(next_to);
2342sorted_cuts.erase(it+1);
2365 for(TCuts::size_type ii = 0; ii < cuts.size(); ++ii) {
2371 if(from != 0 && to != seq_length-1) {
2374 if(from - 0 < seq_length-1 - to) {
2378cut.
SetTo(seq_length-1);
2388cut.
SetTo(seq_length-1);
2403 TCuts& sorted_cuts,
2408 for(TCuts::size_type ii = 0; ii < cuts.size(); ++ii) {
2409 const TRange& cut = cuts[ii];
2414sorted_cuts.push_back(cut);
2427 sort(sorted_cuts.begin(), sorted_cuts.end(), asc);
2431internal_cut_conversion);
2444 sort(sorted_cuts.begin(), sorted_cuts.end(), descend);
2454 switch(seqmap_ci.
GetType()) {
2464 if(pOriginalGapSeqLiteral) {
2465pNewGapLiteral->Assign(*pOriginalGapSeqLiteral);
2467 if(!bIsLengthKnown) {
2470pNewGapLiteral->SetLength(uGapLength);
2471pDeltaSeq->SetLiteral(*pNewGapLiteral);
2472pDeltaExt->
Set().push_back(
ncbi::Ref(&*pDeltaSeq));
2473new_length += uGapLength;
2487pDeltaSeq->SetLiteral().SetLength(seqmap_ci.
GetLength());
2488pDeltaSeq->SetLiteral().SetSeq_data(*pSeqData);
2489pDeltaExt->
Set().push_back(
ncbi::Ref(&*pDeltaSeq));
2500 const TCuts& sorted_cuts)
2516 for(
const auto& cut : sorted_cuts) {
2517 if(cut.GetTo() == right_pos) {
2518right_pos = cut.GetFrom() - 1;
2521 if(cut.GetFrom() == left_pos) {
2522left_pos = cut.GetTo() + 1;
25301 + (right_pos - left_pos),
2538 for(; seqmap_ci; ++seqmap_ci) {
2541 if(! seqmap_ci_first)
2543seqmap_ci_first = seqmap_ci;
2547seqmap_ci_last = seqmap_ci;
2554 for(seqmap_ci = seqmap_ci_first; seqmap_ci && seqmap_ci != seqmap_ci_last; ++seqmap_ci) {
2557 if(seqmap_ci_last) {
2558 UpdateSeqLength(pDeltaExt, complete_bsh, seqmap_ci_last, new_length);
2567 if(pDeltaExt->
Set().size() == 1) {
2571 CSeq_data& seq_data = pDeltaSeq->SetLiteral().SetSeq_data();
2576inst->
SetExt().SetDelta(*pDeltaExt);
2582 const TCuts& sorted_cuts,
2592 for(TCuts::size_type ii = 0; ii < sorted_cuts.size(); ++ii) {
2593 const TRange& cut = sorted_cuts[ii];
2599 if( trim_start <= to ) {
2600trim_start = to + 1;
2606 if( trim_stop >= from ) {
2607trim_stop = from - 1;
2617 bool& bCompleteCut,
2630 TSeqPoscut_size = cut_to - cut_from + 1;
2633 if(feat_to < cut_from)
2640 if(feat_from >= cut_from && feat_to <= cut_to)
2643bCompleteCut =
true;
2648 if(feat_from > cut_to)
2651feat_from -= cut_size;
2652feat_to -= cut_size;
2653interval->
SetFrom(feat_from);
2654interval->
SetTo(feat_to);
2669 if(feat_to > cut_to) {
2671feat_to -= cut_size;
2675feat_to = cut_from - 1;
2679 if(feat_from >= cut_from) {
2680feat_from = cut_to + 1;
2681feat_from -= cut_size;
2684interval->
SetFrom(feat_from);
2685interval->
SetTo(feat_to);
2694 bool& bCompleteCut,
2698bCompleteCut =
false;
2701 switch(loc->
Which())
2709loc->
SetInt(*interval);
2718 if(intervals->CanGet()) {
2719 for(
autoit = intervals->Set().begin();
2720it != intervals->Set().end(); )
2722 boolbDeleted =
false;
2723 boolbCurrentTrimmed =
false;
2729it = intervals->Set().erase(it);
2732 if(bCurrentTrimmed) {
2738 if(intervals->Get().empty()) {
2739bCompleteCut =
true;
2753mix->Assign(loc->
GetMix());
2754 if(mix->CanGet()) {
2755 for(
autoit = mix->Set().begin();
2756it != mix->Set().end(); )
2758 boolbDeleted =
false;
2759 boolbCurrentTrimmed =
false;
2765it = mix->Set().erase(it);
2768 if(bCurrentTrimmed) {
2774 if(mix->Get().empty()) {
2775bCompleteCut =
true;
2795 const TCuts& sorted_cuts)
2797 for(TCuts::size_type ii = 0; ii < sorted_cuts.size(); ++ii) {
2798 const TRange& cut = sorted_cuts[ii];
2804new_loc->Assign(graph->
GetLoc());
2805 boolbDeleted =
false;
2806 boolbTrimmed =
false;
2808graph->
SetLoc(*new_loc);
2817 const TCuts& sorted_cuts)
2829 TSeqPoscopy_start = graph_start;
2830 if(trim_start > graph_start) {
2831copy_start = trim_start;
2833 TSeqPoscopy_stop = graph_stop;
2834 if(trim_stop < graph_stop) {
2835copy_stop = trim_stop;
2841 if(dst_data.
IsByte()) {
2846copy_start -= graph_start;
2847copy_stop -= graph_start;
2858graph->
SetNumval(copy_stop - copy_start + 1);
2872 for(seg = 0; seg < denseg.
GetNumseg(); ++seg) {
2876 if(pos >= start && pos < start +
len) {
2906 if(pos == seg_start) {
2953 TSeqPosfirst_len, second_len;
2957first_len = pos - seg_start;
2958second_len = denseg.
GetLens()[foundseg] - first_len;
2961second_len = pos - seg_start;
2962first_len = denseg.
GetLens()[foundseg] - second_len;
2969 if(denseg.
GetStarts()[index] == -1) {
2970new_denseg->
SetStarts().push_back(-1);
2983new_denseg->
SetLens().push_back(first_len);
2987 if(denseg.
GetStarts()[index] == -1) {
2988new_denseg->
SetStarts().push_back(-1);
3001new_denseg->
SetLens().push_back(second_len);
3027align->
SetSegs().SetDenseg(*new_denseg);
3034 const TCuts& sorted_cuts)
3043 for(CDense_seg::TIds::size_type rr = 0; rr < ids.size(); ++rr) {
3044 if(ids[rr]->Match( *(bsh.
GetSeqId()) )) {
3054 for(TCuts::size_type ii = 0; ii < sorted_cuts.size(); ++ii) {
3055 const TRange& cut = sorted_cuts[ii];
3059 TSeqPoscut_len = cut_to - cut_from + 1;
3060 if(cut_to < cut_from) {
3061cut_len = cut_from - cut_to + 1;
3077 if(seg_start < 0) {
3079}
else if(
TSeqPos(seg_start) < cut_from) {
3081}
else if(
TSeqPos(seg_start) >= cut_from &&
3082 TSeqPos(seg_start) + denseg.
GetLens()[curseg] <= cut_from + cut_len) {
3084align->
SetSegs().SetDenseg().SetStarts()[index] = -1;
3087align->
SetSegs().SetDenseg().SetStarts()[index] -= cut_len;
3097 swap(partial_start, partial_stop);
3100 if(partial_start) {
3107 if(partial_start || partial_stop) {
3116 for(
const auto& cut : sorted_cuts) {
3130partial_start =
true;
3136partial_stop =
true;
3138 s_SeqLocDelete(new_location, from, to, bFeatureDeleted, bFeatureTrimmed);
3140 if(bFeatureTrimmed) {
3149 if(bFeatureDeleted) {
3158 boolbProdDeleted =
false;
3159 boolbProdTrimmed =
false;
3160 s_SeqLocDelete(new_product, from, to, bProdDeleted, bProdTrimmed);
3216 const TCuts& sorted_cuts)
3219 boolbIsPartialStart =
false;
3226 for(TCuts::size_type ii = 0; ii < sorted_cuts.size(); ++ii) {
3227 const TRange& cut = sorted_cuts[ii];
3243to == original_nuc_len - 1 &&
3250 TSeqPosold_frame = new_cdregion->GetFrame();
3251 if(old_frame == 0) {
3255 TSignedSeqPosnew_frame = old_frame - ((to - from + 1) % 3);
3256 if(new_frame < 1) {
3263cds->
SetData().SetCdregion(*new_cdregion);
3282 if(!new_protein_bioseq) {
3298 returnnew_protein_bioseq;
3305 boolisPartialStart,
3309 const TCuts& sorted_cuts)
3325bseh.
SetInst(*trimmed_nuc_inst);
3341 if( !new_protein_bioseq ) {
3353 if(partial5 && partial3) {
3364 boolfound =
false;
3365CBioseq::TDescr::Tdata::iterator it;
3366 for(it = prot_eh.
SetDescr().Set().begin(); it != prot_eh.
SetDescr().Set().end(); ++it) {
3367 if((*it)->IsMolinfo()) {
3375(*it)->SetMolinfo().SetCompleteness(completeness);
3383(*it)->SetMolinfo().SetCompleteness(completeness);
3392prot_eh.
SetDescr().Set().push_back(desc);
3398 CFeat_CIprot_feat_ci(prot_bsh, sel);
3399 for( ; prot_feat_ci; ++prot_feat_ci ) {
3423prot_feat_eh.
Replace(*new_feat);
3460 if(it->IsUser() && it->GetUser().IsUnverifiedOrganism()) {
3474 if(it->IsUser() && it->GetUser().IsUnverifiedFeature()) {
3487 if(it->IsUser() && it->GetUser().IsUnverifiedMisassembled()) {
3501 if(it->IsUser() && it->GetUser().IsUnverifiedContaminant()) {
3511descr.
Set().sort(CompareSeqdesc());
3518 if(entry.
IsSet())
3541 if(
prot.IsSetName() &&
3542 prot.GetName().size() > 0) {
3543 return prot.GetName().front();
3554 return rna.GetRnaProductName();
3581 for(
autoit : feat.
GetQual()) {
3582 if(it->IsSetQual() &&
NStr::EqualNocase(it->GetQual(),
"mobile_element_type") && it->IsSetVal()) {
3585 if(pos != string::npos) {
3586tln = tln.substr(pos + 1);
3609 if(gene_for_feat) {
3630 while(
f&& !quit) {
3631 switch(
f->GetData().Which()) {
3655 boolfound =
false;
3659 if((*it)->IsUser() &&
3666(*it)->SetUser().Assign(*new_obj);
3679bh.
SetDescr().Set().push_back(new_desc);
3712vector<string> tokens1;
3714vector<string> tokens2;
3718 size_tt1_match_start = string::npos;
3719 size_tt1_match_end = 0;
3720 ITERATE(vector<string>, it1, tokens1){
3721 ITERATE(vector<string>, it2, tokens2) {
3723t1_match_start = t1_pos;
3724t1_match_end = t1_pos;
3727 while(it1 != tokens1.end() && it2 != tokens2.end() &&
NStr::Equal(*it1, *it2)) {
3735 if(t1_match_start != string::npos) {
3741 if(t1_match_start == string::npos) {
3746 size_tstart_pos = 0;
3747string::const_iterator s = tls1.begin();
3748 while(s != tls1.end() && (*s ==
' '|| *s ==
','|| *s ==
'-')) {
3753 while(
i< t1_match_start) {
3754start_pos += tokens1[
i].length();
3755 for(
size_tk = 0; k < tokens1[
i].length(); k++) {
3758 while(s != tls1.end() && (*s ==
' '|| *s ==
','|| *s ==
'-')) {
3764 size_tmatch_len = tokens1[
i].length();
3765 for(
size_tk = 0; k < tokens1[
i].length(); k++) {
3770 while(
i<= t1_match_end) {
3771 while(s != tls1.end() && (*s ==
' '|| *s ==
','|| *s ==
'-')) {
3775match_len += tokens1[
i].length();
3776 for(
size_tk = 0; k < tokens1[
i].length(); k++) {
3782 stringconsensus = tls1.substr(start_pos, match_len);
User-defined methods of the data storage class.
@ eExtreme_Positional
numerical value
@ eExtreme_Biological
5' and 3'
User-defined methods of the data storage class.
User-defined methods of the data storage class.
CRef< CUser_object > MakeUserObject() const
void InitFromUserObject(const CUser_object &obj)
void SetTargetedLocusName(const string &tls)
void Set(T *object)
Initialize with an existing object.
CBioseq_set_EditHandle â.
TSeqPos GetLength(void) const
CRef< CDense_seg > ExtractRows(const vector< TDim > &rows) const
Extract specified rows of the alignment, in specified order.
@RNA_ref.hpp User-defined methods of the data storage class.
Helper functor to compare cuts during sorting.
bool operator()(const TRange &a1, const TRange &a2)
CRangeCmp(ESortOrder sortorder=eAscending)
static SIZE_TYPE Convert(const CTempString &src, TCoding src_coding, TSeqPos pos, TSeqPos length, string &dst, TCoding dst_coding)
ESubtype GetSubtype(void) const
@ eSubtype_mobile_element
@Seq_descr.hpp User-defined methods of the data storage class.
void SetDescr(CSeq_descr &value)
void ReassignConflictingIds(void)
bool IsSetDescr(void) const
CSeq_feat_EditHandle â.
namespace ncbi::objects::
bool AddLinkageEvidence(CLinkage_evidence::TType evidence_type)
void ChangeType(TType linkage_type)
void SetLinkageTypeLinkedRepeat(CLinkage_evidence::TType evidence_type)
void SetLinkageTypeScaffold(CLinkage_evidence::TType evidence_type)
bool IsEntrys(void) const
static TSeqPos Pack(CSeq_data *in_seq, TSeqPos uLength=ncbi::numeric_limits< TSeqPos >::max())
void SetObjectType(EObjectType obj_type)
@ eObjectType_AutodefOptions
container_type::const_iterator const_iterator
container_type::iterator iterator
container_type::mapped_type & operator[](const key_type &key)
const_iterator end() const
iterator_bool insert(const value_type &val)
container_type::value_type value_type
const_iterator find(const key_type &key) const
iterator_bool insert(const value_type &val)
const_iterator find(const key_type &key) const
const_iterator end() const
Include a standard set of the NCBI C++ Toolkit most basic headers.
static const char si[8][64]
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
static const char * expected[]
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
int TSignedSeqPos
Type for signed sequence position.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
const TPrim & Get(void) const
C * SerialClone(const C &src)
Create on heap a clone of the source object.
#define MSerial_AsnText
I/O stream manipulators â.
void SetPacked_int(TPacked_int &v)
bool IsPartialStart(ESeqLocExtremes ext) const
check start or stop of location for e_Lim fuzz
ENa_strand GetStrand(void) const
Get the location's strand.
TRange GetTotalRange(void) const
TSeqPos GetStart(ESeqLocExtremes ext) const
Return start and stop positions of the seq-loc.
void SetPartialStart(bool val, ESeqLocExtremes ext)
set / remove e_Lim fuzz on start or stop (lt/gt - indicating partial interval)
void SetPartialStop(bool val, ESeqLocExtremes ext)
bool IsPartialStop(ESeqLocExtremes ext) const
TSeqPos GetStop(ESeqLocExtremes ext) const
TSeqPos GetStop(const CSeq_loc &loc, CScope *scope, ESeqLocExtremes ext=eExtreme_Positional)
If only one CBioseq is represented by CSeq_loc, returns the position at the stop of the location.
const CSeq_id & GetId(const CSeq_loc &loc, CScope *scope)
If all CSeq_ids embedded in CSeq_loc refer to the same CBioseq, returns the first CSeq_id found,...
TSeqPos GetLength(const CSeq_id &id, CScope *scope)
Get sequence length if scope not null, else return max possible TSeqPos.
TSeqPos GetStart(const CSeq_loc &loc, CScope *scope, ESeqLocExtremes ext=eExtreme_Positional)
If only one CBioseq is represented by CSeq_loc, returns the position at the start of the location.
static CRef< CBioseq > TranslateToProtein(const CSeq_feat &cds, CScope &scope)
CConstRef< CSeq_feat > GetGeneForFeature(const CSeq_feat &feat, CScope &scope)
Finds gene for feature, but obeys SeqFeatXref directives.
CBioseq_Handle AddBioseq(CBioseq &bioseq, TPriority pri=kPriority_Default, EExist action=eExist_Throw)
Add bioseq, return bioseq handle.
void RemoveBioseq(const CBioseq_Handle &seq)
Revoke Bioseq previously added using AddBioseq().
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
vector< CBioseq_Handle > TBioseqHandles
CBioseq_set_EditHandle GetEditHandle(void) const
Get 'edit' version of handle.
TSeq ConvertSetToSeq(void) const
Do the same as CollapseSet() when sub-entry is of type bioseq.
bool IsNucleotide(void) const
void SetDescr(TDescr &v) const
CConstRef< CBioseq > GetCompleteBioseq(void) const
Get the complete bioseq.
TClass GetClass(void) const
const TInst_Ext & GetInst_Ext(void) const
CBioseq_set_Handle GetParentBioseq_set(void) const
Return a handle for the parent Bioseq-set, or null handle.
CSeq_entry_Handle GetParentEntry(void) const
Get parent Seq-entry handle.
void SetDescr(TDescr &v) const
CBioseq_EditHandle MoveTo(const CSeq_entry_EditHandle &entry, int index=-1) const
Move current bioseq into seq-entry.
void SetClass(TClass v) const
void AddDescr(TDescr &v) const
void SetInst_Mol(TInst_Mol v) const
void ResetDescr(void) const
bool IsEmptySeq_set(void) const
Check if the bioseq set is empty.
CScope & GetScope(void) const
Get scope this handle belongs to.
const CSeqFeatData & GetData(void) const
bool CanGetInst(void) const
TSeqPos GetBioseqLength(void) const
void Replace(const CSeq_align &new_obj) const
Replace the Seq-align with new Seq-align object.
bool AddSeqdesc(CSeqdesc &d) const
CSeq_entry_EditHandle TakeEntry(const CSeq_entry_EditHandle &entry, int index=-1) const
Remove seq-entry from its location and attach to current one.
CSeq_annot_EditHandle AttachAnnot(CSeq_annot &annot) const
Attach an annotation.
TSet ConvertSeqToSet(TClass set_class=CBioseq_set::eClass_not_set) const
Convert the entry from Bioseq to Bioseq-set.
void TakeAllAnnots(const CSeq_entry_EditHandle &src_entry) const
Remove all the annotation from seq-entry and attach to current one.
void AddSeq_descr(TDescr &v) const
void SetInst_Length(TInst_Length v) const
void Remove(void) const
Remove the feature from Seq-annot.
CConstRef< CSeq_annot > GetCompleteSeq_annot(void) const
Complete and return const reference to the current seq-annot.
TInst_Mol GetInst_Mol(void) const
const CSeq_align::TSegs & GetSegs(void) const
bool IsSetProduct(void) const
CConstRef< CSeq_align > GetSeq_align(void) const
Get const reference to current seq-align.
CConstRef< CSeq_id > GetSeqId(void) const
Get id which can be used to access this bioseq handle Throws an exception if none is available.
void SetInst(TInst &v) const
void Remove(ERemoveMode mode=eRemoveSeq_entry) const
CBioseq_set_Handle GetParentBioseq_set(void) const
Get parent bioseq-set handle.
bool IsRemoved(void) const
Check if handle points to a removed bioseq.
CSeq_entry_Handle GetParentEntry(void) const
Get parent Seq-entry handle.
bool IsProtein(void) const
void SetInst_Repr(TInst_Repr v) const
CBioseq_EditHandle TakeBioseq(const CBioseq_EditHandle &seq, int index=-1) const
Remove bioseq from its location and attach to current one.
CSeq_entry_EditHandle GetEditHandle(void) const
Get 'edit' version of handle.
CBioseq_EditHandle GetEditHandle(void) const
Get 'edit' version of handle.
CSeq_entry_Handle GetParentEntry(void) const
Return a handle for the parent seq-entry of the bioseq.
TInst_Length GetInst_Length(void) const
CSeq_entry_EditHandle AttachEntry(CSeq_entry &entry, int index=-1) const
Attach an existing seq-entry.
bool IsSetInst_Repr(void) const
bool IsSetClass(void) const
CRef< CSeqdesc > RemoveSeqdesc(const CSeqdesc &d) const
CScope & GetScope(void) const
Get scope this handle belongs to.
TInst_Repr GetInst_Repr(void) const
CRef< CSeqdesc > RemoveSeqdesc(const CSeqdesc &d) const
CScope & GetScope(void) const
Get scope this handle belongs to.
CBioseq_EditHandle TakeBioseq(const CBioseq_EditHandle &seq, int index=-1) const
Remove bioseq from its location and attach to current one.
CSeq_annot_EditHandle AttachAnnot(CSeq_annot &annot) const
Attach an annotation.
CScope & GetScope(void) const
Get scope this handle belongs to.
CSeq_entry_EditHandle GetParentEntry(void) const
Navigate object tree.
void SetInst_Ext(TInst_Ext &v) const
CBioseq_EditHandle AttachBioseq(CBioseq &seq, int index=-1) const
Attach an existing bioseq.
const CSeqMap & GetSeqMap(void) const
Get sequence map.
bool HasParentEntry(void) const
Check if current seq-entry has a parent.
CSeq_entry_Handle GetTopLevelEntry(void) const
Get top level Seq-entry handle.
void Replace(const CSeq_feat &new_feat) const
Replace the feature with new Seq-feat object.
CSeq_entry_Handle GetParentEntry(void) const
Get parent Seq-entry handle.
const CSeq_annot_Handle & GetAnnot(void) const
Get handle to the seq-annot.
CSeq_entry_EditHandle GetParentEntry(void) const
Navigate object tree.
bool IsSetData(void) const
CConstRef< CBioseq_set > GetBioseq_setCore(void) const
Return core data for the bioseq-set.
void Replace(const CSeq_graph &new_obj) const
Replace the Seq-graph with new Seq-graph object.
bool CanGetInst_Ext(void) const
int GetSeq_entry_Index(const CSeq_entry_Handle &handle) const
const TInst & GetInst(void) const
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
TSeqPos GetEndPosition(void) const
return end position of current segment in sequence (exclusive)
const string & GetTitle(void) const
bool IsSetTitle(void) const
const CSeq_align & GetOriginalSeq_align(void) const
Get original alignment.
const CSeq_feat & GetOriginalFeature(void) const
Get original feature with unmapped location/product.
const CSeq_loc & GetProduct(void) const
CSeqMap::ESegmentType GetType(void) const
bool IsUnknownLength(void) const
return true if current segment is a gap of unknown length
const CSeq_graph & GetOriginalGraph(void) const
Get original graph with unmapped location/product.
vector< CSeqdesc::E_Choice > TDescChoices
CSeq_align_Handle GetSeq_align_Handle(void) const
Get original alignment handle.
TSeqPos GetPosition(void) const
return position of current segment in sequence
TSeqPos GetLength(void) const
return length of current segment
CConstRef< CSeq_literal > GetRefGapLiteral(void) const
return CSeq_literal with gap data, or null if either the segment is not a gap, or an unspecified gap
CSeq_graph_Handle GetSeq_graph_Handle(void) const
Get original graph handle.
@ eNonRecursive
Deprecated.
void GetSeqData(TSeqPos start, TSeqPos stop, string &buffer) const
Fill the buffer string with the sequence data for the interval [start, stop).
CSeqMap_CI ResolvedRangeIterator(CScope *scope, TSeqPos from, TSeqPos length, ENa_strand strand=eNa_strand_plus, size_t maxResolve=size_t(-1), TFlags flags=fDefaultFlags) const
Iterate segments in the range with specified strand coordinates.
const_iterator begin(void) const
@ eSeqData
real sequence data
bool IsNull(void) const THROWS_NONE
Check if pointer is null â same effect as Empty().
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
static int CompareNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive compare of a substring with another string.
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
static bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
static bool IsBlank(const CTempString str, SIZE_TYPE pos=0)
Check if a string is blank (has no text).
static void TruncateSpacesInPlace(string &str, ETrunc where=eTrunc_Both)
Truncate whitespace in a string (in-place)
static SIZE_TYPE Find(const CTempString str, const CTempString pattern, ECase use_case=eCase, EDirection direction=eForwardSearch, SIZE_TYPE occurrence=0)
Find the pattern in the string.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
static bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
static bool Equal(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2, ECase use_case=eCase)
Test for equality of a substring with another string.
@ fSplit_Tokenize
All delimiters are merged and trimmed, to get non-empty tokens only.
static const char label[]
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.
bool IsSetLocus(void) const
Official gene symbol Check if a value has been assigned to Locus data member.
const TLocus & GetLocus(void) const
Get the Locus member data.
const TStr & GetStr(void) const
Get the variant data.
bool IsSetData(void) const
the object itself Check if a value has been assigned to Data data member.
bool IsStr(void) const
Check if variant Str is selected.
const TData & GetData(void) const
Get the Data member data.
bool IsStr(void) const
Check if variant Str is selected.
bool IsSetLabel(void) const
field label Check if a value has been assigned to Label data member.
TData & SetData(void)
Assign a value to Data data member.
const TStr & GetStr(void) const
Get the variant data.
void SetLabel(TLabel &value)
Assign a value to Label data member.
const TData & GetData(void) const
Get the Data member data.
void SetData(TData &value)
Assign a value to Data data member.
const TLabel & GetLabel(void) const
Get the Label member data.
bool IsSetData(void) const
Check if a value has been assigned to Data data member.
TSub & SetSub(void)
Select the variant.
bool CanGetDim(void) const
Check if it is safe to call GetDim method.
const TDenseg & GetDenseg(void) const
Get the variant data.
TLens & SetLens(void)
Assign a value to Lens data member.
E_Choice Which(void) const
Which variant is currently selected.
bool IsSetStrands(void) const
Check if a value has been assigned to Strands data member.
void ResetSegs(void)
Reset Segs data member.
const TStarts & GetStarts(void) const
Get the Starts member data.
void SetSegs(TSegs &value)
Assign a value to Segs data member.
const TLens & GetLens(void) const
Get the Lens member data.
bool CanGetNumseg(void) const
Check if it is safe to call GetNumseg method.
void SetDim(TDim value)
Assign a value to Dim data member.
bool CanGetIds(void) const
Check if it is safe to call GetIds method.
vector< CRef< CSeq_id > > TIds
vector< CRef< CSeq_id > > TIds
bool IsDendiag(void) const
Check if variant Dendiag is selected.
bool CanGetSegs(void) const
Check if it is safe to call GetSegs method.
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.
const TDendiag & GetDendiag(void) const
Get the variant data.
void SetNumseg(TNumseg value)
Assign a value to Numseg data member.
const TIds & GetIds(void) const
Get the Ids member data.
bool CanGetStarts(void) const
Check if it is safe to call GetStarts method.
TNumseg GetNumseg(void) const
Get the Numseg member data.
TIds & SetIds(void)
Assign a value to Ids data member.
list< CRef< CDense_diag > > TDendiag
const TStrands & GetStrands(void) const
Get the Strands member data.
const TSegs & GetSegs(void) const
Get the Segs member data.
bool CanGetLens(void) const
Check if it is safe to call GetLens method.
bool IsDenseg(void) const
Check if variant Denseg is selected.
bool IsSetComment(void) const
Check if a value has been assigned to Comment data member.
bool IsSetData(void) const
the specific data Check if a value has been assigned to Data data member.
bool IsSetQual(void) const
qualifiers Check if a value has been assigned to Qual data member.
E_Choice Which(void) const
Which variant is currently selected.
void SetLocation(TLocation &value)
Assign a value to Location data member.
bool IsCdregion(void) const
Check if variant Cdregion is selected.
void SetPartial(TPartial value)
Assign a value to Partial data member.
void SetProduct(TProduct &value)
Assign a value to Product data member.
const TQual & GetQual(void) const
Get the Qual member data.
const TLocation & GetLocation(void) const
Get the Location member data.
const TData & GetData(void) const
Get the Data member data.
bool CanGetData(void) const
Check if it is safe to call GetData method.
void SetData(TData &value)
Assign a value to Data data member.
bool CanGetLocation(void) const
Check if it is safe to call GetLocation method.
const TCdregion & GetCdregion(void) const
Get the variant data.
const TProduct & GetProduct(void) const
Get the Product member data.
const TComment & GetComment(void) const
Get the Comment member data.
const TGene & GetGene(void) const
Get the variant data.
const TProt & GetProt(void) const
Get the variant data.
bool CanGetProduct(void) const
Check if it is safe to call GetProduct method.
const TRna & GetRna(void) const
Get the variant data.
bool IsSetProduct(void) const
product of process Check if a value has been assigned to Product data member.
@ eFrame_not_set
not set, code uses one
void SetTo(TTo value)
Assign a value to To data member.
ENa_strand
strand of nucleic acid
TFrom GetFrom(void) const
Get the From member data.
bool CanGetTo(void) const
Check if it is safe to call GetTo method.
E_Choice Which(void) const
Which variant is currently selected.
void SetFrom(TFrom value)
Assign a value to From data member.
E_Choice
Choice variants.
TTo GetTo(void) const
Get the To member data.
bool IsInt(void) const
Check if variant Int is selected.
const TInt & GetInt(void) const
Get the variant data.
const TMix & GetMix(void) const
Get the variant data.
const TPacked_int & GetPacked_int(void) const
Get the variant data.
bool CanGetFrom(void) const
Check if it is safe to call GetFrom method.
@ e_Other
for historical reasons, 'other' = 'refseq'
@ e_General
for other databases
@ e_not_set
No variant selected.
TByte & SetByte(void)
Select the variant.
void SetNumval(TNumval value)
Assign a value to Numval data member.
TValues & SetValues(void)
Assign a value to Values data member.
const TByte & GetByte(void) const
Get the variant data.
void SetGraph(TGraph &value)
Assign a value to Graph data member.
bool CanGetLoc(void) const
Check if it is safe to call GetLoc method.
const TValues & GetValues(void) const
Get the Values member data.
bool IsByte(void) const
Check if variant Byte is selected.
void SetLoc(TLoc &value)
Assign a value to Loc data member.
const TLoc & GetLoc(void) const
Get the Loc member data.
const TSeq & GetSeq(void) const
Get the variant data.
bool IsSetClass(void) const
Check if a value has been assigned to Class data member.
TSet & SetSet(void)
Select the variant.
TClass GetClass(void) const
Get the Class member data.
const TSet & GetSet(void) const
Get the variant data.
bool IsSeq(void) const
Check if variant Seq is selected.
bool IsSetSeq_set(void) const
Check if a value has been assigned to Seq_set data member.
bool IsSet(void) const
Check if variant Set is selected.
const TSeq_set & GetSeq_set(void) const
Get the Seq_set member data.
void SetClass(TClass value)
Assign a value to Class data member.
list< CRef< CSeq_entry > > TSeq_set
TSeq & SetSeq(void)
Select the variant.
TSeq_set & SetSeq_set(void)
Assign a value to Seq_set data member.
@ eClass_equiv
a set of equivalent maps or seqs
@ eClass_parts
parts for 2 or 3
@ eClass_pop_set
population study
@ eClass_phy_set
phylogenetic study
@ eClass_conset
constructed sequence + parts
@ eClass_wgs_set
whole genome shotgun project
@ eClass_mut_set
set of mutations
@ eClass_pir
converted pir
@ eClass_eco_set
ecological sample study
@ eClass_nuc_prot
nuc acid and coded proteins
@ eClass_gibb
geninfo backbone
@ eClass_gen_prod_set
genomic products, chrom+mRNA+protein
@ eClass_pdb_entry
a complete PDB entry
@ eClass_genbank
converted genbank
@ eClass_swissprot
converted SWISSPROT
@ eClass_segset
segmented sequence + parts
@ eClass_pub_set
all the seqs from a single publication
const TIupacaa & GetIupacaa(void) const
Get the variant data.
void SetCompleteness(TCompleteness value)
Assign a value to Completeness data member.
TRepr GetRepr(void) const
Get the Repr member data.
const TSeg & GetSeg(void) const
Get the variant data.
void SetData(TData &value)
Assign a value to Data data member.
list< CRef< CSeqdesc > > Tdata
TId & SetId(void)
Assign a value to Id data member.
void ResetDescr(void)
Reset Descr data member.
bool IsSetSeq_data(void) const
the sequence Check if a value has been assigned to Seq_data data member.
bool IsNcbieaa(void) const
Check if variant Ncbieaa is selected.
void SetPub(TPub &value)
Assign a value to Pub data member.
const TInst & GetInst(void) const
Get the Inst member data.
TPub & SetPub(void)
Select the variant.
bool IsIupacaa(void) const
Check if variant Iupacaa is selected.
const TIupacna & GetIupacna(void) const
Get the variant data.
void SetExt(TExt &value)
Assign a value to Ext data member.
bool IsSetRepr(void) const
Check if a value has been assigned to Repr data member.
TType GetType(void) const
Get the Type member data.
const TPub & GetPub(void) const
Get the variant data.
Tdata & Set(void)
Assign a value to data member.
bool CanGetLength(void) const
Check if it is safe to call GetLength method.
const TId & GetId(void) const
Get the Id member data.
bool IsSetExt(void) const
extensions for special types Check if a value has been assigned to Ext data member.
list< CRef< CSeq_align > > TAlign
const Tdata & Get(void) const
Get the member data.
TDelta & SetDelta(void)
Select the variant.
Tdata & Set(void)
Assign a value to data member.
TIupacna & SetIupacna(void)
Select the variant.
TLength GetLength(void) const
Get the Length member data.
list< CRef< CSeq_id > > TId
const TNcbieaa & GetNcbieaa(void) const
Get the variant data.
bool IsDelta(void) const
Check if variant Delta is selected.
void ResetLinkage(void)
Reset Linkage data member.
bool IsSetType(void) const
Check if a value has been assigned to Type data member.
const TExt & GetExt(void) const
Get the Ext member data.
bool IsSetDescr(void) const
descriptors Check if a value has been assigned to Descr data member.
E_Choice
Choice variants.
bool IsSet(void) const
Check if a value has been assigned to data member.
void SetBiomol(TBiomol value)
Assign a value to Biomol data member.
EMol
molecule class in living organism
bool IsPub(void) const
Check if variant Pub is selected.
void SetDescr(TDescr &value)
Assign a value to Descr data member.
const TDelta & GetDelta(void) const
Get the variant data.
TSeg & SetSeg(void)
Select the variant.
void ResetLinkage_evidence(void)
Reset Linkage_evidence data member.
const TNcbi4na & GetNcbi4na(void) const
Get the variant data.
TUser & SetUser(void)
Select the variant.
void SetRepr(TRepr value)
Assign a value to Repr data member.
const TNcbi2na & GetNcbi2na(void) const
Get the variant data.
const Tdata & Get(void) const
Get the member data.
E_Choice Which(void) const
Which variant is currently selected.
bool CanGetExt(void) const
Check if it is safe to call GetExt method.
bool IsSetId(void) const
equivalent identifiers Check if a value has been assigned to Id data member.
Tdata & Set(void)
Assign a value to data member.
void SetLength(TLength value)
Assign a value to Length data member.
list< CRef< CDelta_seq > > Tdata
const Tdata & Get(void) const
Get the member data.
void SetLinkage(TLinkage value)
Assign a value to Linkage data member.
void SetSeq_data(TSeq_data &value)
Assign a value to Seq_data data member.
void ResetExt(void)
Reset Ext data member.
const TPub & GetPub(void) const
Get the Pub member data.
const TSeq_data & GetSeq_data(void) const
Get the Seq_data member data.
list< CRef< CSeq_loc > > Tdata
const TNcbi8na & GetNcbi8na(void) const
Get the variant data.
const TDescr & GetDescr(void) const
Get the Descr member data.
void Reset(void)
Reset data member.
TMolinfo & SetMolinfo(void)
Select the variant.
void ResetSeq_data(void)
Reset Seq_data data member.
E_Choice Which(void) const
Which variant is currently selected.
@ eRepr_seg
segmented sequence
@ eRepr_delta
sequence made by changes (delta) to others
@ eRepr_raw
continuous sequence
@ eCompleteness_complete
complete biological entity
@ eCompleteness_no_left
missing 5' or NH3 end
@ eCompleteness_no_right
missing 3' or COOH end
@ eCompleteness_no_ends
missing both ends
@ e_Ncbi2na
2 bit nucleic acid code
@ e_Iupacna
IUPAC 1 letter nuc acid code.
@ e_Ncbi8na
8 bit extended nucleic acid code
@ e_Ncbi4na
4 bit nucleic acid code
@ e_Embl
EMBL specific information.
@ e_Het
cofactor, etc associated but not bound
@ e_Org
if all from one organism
@ e_Num
a numbering system
@ e_User
user defined object
@ e_Update_date
date of last update
@ e_Pub
a reference to the publication
@ e_Pir
PIR specific info.
@ e_Genbank
GenBank specific info.
@ e_Prf
PRF specific information.
@ e_Mol_type
type of molecule
@ e_Sp
SWISSPROT specific info.
@ e_Dbxref
xref to other databases
@ e_Comment
a more extensive comment
@ e_Method
sequencing method
@ e_Modelev
model evidence for XM records
@ e_Region
overall region (globin locus)
@ e_Molinfo
info on the molecule and techniques
@ e_Maploc
map location of this sequence
@ e_Create_date
date entry first created/released
@ e_Title
a title for this sequence
@ e_Pdb
PDB specific information.
@ e_not_set
No variant selected.
@ e_Name
a name for this sequence
@ e_Source
source of materials, includes Org-ref
const TCit & GetCit(void) const
Get the Cit member data.
list< CRef< CSeq_entry > > TEntrys
const TEntrys & GetEntrys(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
const TSub & GetSub(void) const
Get the Sub member data.
bool IsSetSub(void) const
Check if a value has been assigned to Sub data member.
bool IsSetCit(void) const
citation for this submission Check if a value has been assigned to Cit data member.
void FeatureAdjustForInsert(CSeq_feat &feat, TSeqPos from, TSeqPos to, const CSeq_id *seqid)
void FeatureAdjustForTrim(CSeq_feat &feat, TSeqPos from, TSeqPos to, const CSeq_id *seqid, bool &bCompleteCut, bool &bAdjusted)
vector< CRef< objects::CSeq_align > > TAlignVec
constexpr auto sort(_Init &&init)
double value_type
The numeric datatype used by the parser.
const struct ncbi::grid::netcache::search::fields::SIZE size
Int4 delta(size_t dimension_, const Int4 *score_)
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)
static void s_AdjustInternalCutLocations(TCuts &cuts, TSeqPos seq_length, EInternalTrimType internal_cut_conversion)
Adjust any internal cuts to terminal cuts.
void TrimSeqAlign(CBioseq_Handle bsh, CRef< CSeq_align > align, const TCuts &sorted_cuts)
Trim Seq-align annotation.
void SetLinkageType(CSeq_ext &ext, CSeq_gap::TType linkage_type)
SetLinkageType A function to set the linkage_type for gaps in a delta sequence.
void DivvyUpAlignments(const TVecOfSeqEntryHandles &vecOfSeqEntryHandles)
Call this if the alignments directly under these seq-entries are all jumbled up between each other.
static CSeq_id * s_MakeUniqueLocalId(void)
vector< CSeq_annot_Handle > TVecOfSeqAnnotsToErase
void AddBioseqToBioseq(const CBioseq_Handle &to, const CBioseq_Handle &add)
Attach one Bioseq to another.
bool HasRepairedIDs(const CUser_object &user, const CBioseq::TId &ids)
bool IsDeltaSeqGap(CConstRef< CDelta_seq > delta)
string MakeOriginalLabelForId(const CSeq_id &id)
void TrimSeqData(CBioseq_Handle bsh, CRef< CSeq_inst > inst, const TCuts &sorted_cuts)
Trim sequence data.
void s_AddLiteral(CSeq_inst &inst, const string &element)
CRef< CSeqdesc > FindUnverified(const CBioseq &seq)
static void s_AddBioseqToBioseq(const CBioseq_EditHandle &to, const CBioseq_EditHandle &add)
void ConvertRawToDeltaByNs(CSeq_inst &inst, size_t min_unknown, int max_unknown, size_t min_known, int max_known, bool is_assembly_gap, int gap_type, int linkage, int linkage_evidence)
ConvertRawToDeltaByNs A function to convert a raw sequence to a delta sequence, using runs of Ns to d...
static void s_AddBioseqToSegset(CBioseq_set_EditHandle &segset, CBioseq_EditHandle &part)
static bool s_DivvyUpAlignments_ProcessAnnot_Dendiag(const CSeq_align_Handle &align, const TMapDescendentToInputEntry &mapDescendentToInputEntry, TMapEntryToAlignVec &mapEntryToAlignVec)
static void s_AddBioseqToNucProtSet(CBioseq_set_EditHandle &nuc_prot, CBioseq_EditHandle &seq)
CMapWithOriginalOrderingIteration< CSeq_entry_Handle, TAlignVec > TMapEntryToAlignVec
void TrimSeqGraph(CBioseq_Handle bsh, CRef< CSeq_graph > graph, const TCuts &sorted_cuts)
Trim Seq-graph annotation.
void GetSortedCuts(CBioseq_Handle bsh, const TCuts &cuts, TCuts &sorted_cuts, EInternalTrimType internal_cut_conversion)
1) Adjust any internal cuts to terminal cuts according to option.
bool Does3primerAbutGap(const CSeq_feat &feat, CBioseq_Handle seq_hl)
void SetTargetedLocusName(CBioseq_Handle seq, const string &tls)
void SortSeqDescr(CSeq_descr &descr)
vector< CConstRef< CSeq_align > > TAlignVec
bool IsUnverifiedMisassembled(const CBioseq &seq)
void AddSeqdescToSeqDescr(const CSeqdesc &desc, CSeq_descr &seq_descr)
static void s_AddBioseqToPartsSet(CBioseq_set_EditHandle &parts, CBioseq_EditHandle &seq)
void AddSeqEntryToSeqEntry(const CSeq_entry_Handle &target, const CSeq_entry_Handle &insert)
Attach one Seq-entry to another.
void AddSeqdescToBioseq(const CSeqdesc &desc, CBioseq &seq)
void AddLocalIdUserObjects(CSeq_entry &entry)
Creates a User-object descriptor on every sequence that has a local ID Contains the original local ID...
CRef< CSeq_entry > SeqEntryFromSeqSubmit(const CSeq_submit &submit)
Create a Seq-entry from a Seq-submit.
void s_AddGap(CSeq_inst &inst, size_t n_len, bool is_unknown, bool is_assembly_gap=false, int gap_type=CSeq_gap::eType_unknown, int linkage=-1, int linkage_evidence=-1)
void ResetLinkageEvidence(CSeq_ext &ext)
ResetLinkageEvidence A function to clear linkage evidence for gaps in a delta sequence.
map< CSeq_entry_Handle, CSeq_entry_Handle > TMapDescendentToInputEntry
bool s_FindSegment(const CDense_seg &denseg, CDense_seg::TDim row, TSeqPos pos, CDense_seg::TNumseg &seg, TSeqPos &seg_start)
CConstRef< CDelta_seq > GetDeltaSeqForPosition(const unsigned pos, const CBioseq_Handle seq_hl, CScope *scope, unsigned &left_endpoint)
void s_BasicValidation(CBioseq_Handle bsh, const TCuts &cuts)
bool IsSeqDescInList(const CSeqdesc &desc, const CSeq_descr &set)
static bool s_DivvyUpAlignments_ProcessAnnot_Denseg(const CSeq_align_Handle &align, const TMapDescendentToInputEntry &mapDescendentToInputEntry, TMapEntryToAlignVec &mapEntryToAlignVec)
void RemoveUserObjectType(CSeq_entry &entry, CUser_object::EObjectType type)
Removes User-object descriptors of a certain type from the seq-entry.
void TrimSequenceAndAnnotation(CBioseq_Handle bsh, const TCuts &cuts, EInternalTrimType internal_cut_conversion)
Implementation detail: first trim all associated annotation, then trim sequence data.
bool IsUnverifiedOrganism(const CBioseq &seq)
static void s_DivvyUpAlignments_ProcessAnnot(const CSeq_annot_Handle &annot_h, const TMapDescendentToInputEntry &mapDescendentToInputEntry, TMapSeqAnnotToDest &mapSeqAnnotToDest, TVecOfSeqAnnotsToErase &vecOfSeqAnnotToErase)
static void s_UpdateSeqGraphLoc(CRef< CSeq_graph > graph, const TCuts &sorted_cuts)
CRef< CBioseq > SetNewProteinSequence(CScope &new_scope, CRef< CSeq_feat > cds, CRef< CSeq_inst > new_inst)
Secondary function needed after trimming Seq-feat.
void SetLinkageTypeScaffold(CSeq_ext &ext, CLinkage_evidence::TType evidence_type)
SetLinkageTypeScaffold A special case of SetLinkageType.
static void s_SeqLocDelete(CRef< CSeq_loc > loc, TSeqPos from, TSeqPos to, bool &bCompleteCut, bool &bTrimmed)
void SetLinkageTypeLinkedRepeat(CSeq_ext &ext, CLinkage_evidence::TType evidence_type)
CSeq_id::E_Choice TypeFromLabel(const string &label)
void DeleteProteinAndRenormalizeNucProtSet(const CSeq_feat_Handle &feat_h)
Secondary function needed after trimming Seq-feat.
bool Does5primerAbutGap(const CSeq_feat &feat, CBioseq_Handle seq_hl)
static void s_MakeGroupsForUniqueValues(const CSeq_entry_Handle &target, const CScope::TBioseqHandles &bioseq_handles)
void SegregateSetsByBioseqList(const CSeq_entry_Handle &target, const CScope::TBioseqHandles &bioseq_handles)
Split a Seq-entry, where the second part holds the given bioseqs.
string GetTargetedLocusNameConsensus(const string &tls1, const string &tls2)
CMapWithOriginalOrderingIteration< CRef< CSeq_annot >, CSeq_entry_Handle > TMapSeqAnnotToDest
void SetPartial(CSeq_loc &loc, CRef< CSeq_feat > feat, CSeq_loc::TStrand strand, bool partial_start, bool partial_stop)
void TrimSeqFeat(CRef< CSeq_feat > feat, const TCuts &sorted_cuts, bool &bFeatureDeleted, bool &bFeatureTrimmed, bool &partial_start, bool &partial_stop)
Trim Seq-feat annotation.
static void s_AddProtToNuc(const CBioseq_EditHandle &nuc, const CBioseq_EditHandle &prot)
void RetranslateCdregion(CBioseq_Handle nuc_bsh, bool isPartialStart, bool isPartialStop, CRef< CSeq_inst > trimmed_nuc_inst, CRef< CSeq_feat > cds, const TCuts &sorted_cuts)
Secondary function needed after trimming Seq-feat.
static void s_SeqIntervalDelete(CRef< CSeq_interval > interval, TSeqPos cut_from, TSeqPos cut_to, bool &bCompleteCut, bool &bTrimmed)
const string & GetTargetedLocusName(const CGene_ref &gene)
bool IsUnverifiedContaminant(const CBioseq &seq)
bool IsUnverifiedFeature(const CBioseq &seq)
void s_CutDensegSegment(CRef< CSeq_align > align, CDense_seg::TDim row, TSeqPos pos)
void BioseqSetDescriptorPropagateDown(const CBioseq_set_Handle &bioseq_set_h, const vector< CSeqdesc::E_Choice > &choices_to_delete)
Moves descriptors down to children of the given bioseq-set.
TLocAdjustmentVector NormalizeUnknownLengthGaps(CSeq_inst &inst, TSeqPos unknown_length)
NormalizeUnknownLengthGaps A function to adjust the length of unknown-length gaps to a specific lengt...
void AdjustCdregionFrame(TSeqPos original_nuc_len, CRef< CSeq_feat > cds, const TCuts &sorted_cuts)
Secondary function needed after trimming Seq-feat.
static void s_AddPartToSegmentedBioseq(const CBioseq_EditHandle &seg, const CBioseq_EditHandle &part)
static TRange s_GetRetainedRange(const TCuts &sorted_merged_cuts, TSeqPos seqLength)
void AddLinkageEvidence(CSeq_ext &ext, CLinkage_evidence::TType evidence_type)
AddLinkageEvidence A function to add linkage evidence for gaps in a delta sequence.
static void s_PromoteSingletonSetsInSet(const CBioseq_set_Handle &bioseq_set_h)
CRef< CUser_field > MakeOriginalIdField(const CSeq_id &id)
void AddBioseqToBioseqSet(const CBioseq_set_Handle &set, const CBioseq_Handle &seq)
Add a Bioseq to a Bioseq-set.
static bool s_IsSingletonSet(const CBioseq_set_Handle &bioseq_set)
string GenerateTargetedLocusName(CBioseq_Handle seq)
void AddSeqdescToBioseqSet(const CSeqdesc &desc, CBioseq_set &set)
bool AddSeqdescToSeqEntryRecursively(CSeq_entry &entry, CSeqdesc &desc)
void UpdateSeqLength(CAutoInitRef< CDelta_ext > &pDeltaExt, CBioseq_Handle &complete_bsh, CSeqMap_CI &seqmap_ci, CSeq_inst_Base::TLength &new_length)
Update sequence length.
static void s_MergeCuts(TCuts &sorted_cuts)
Assumes sorted_cuts are sorted in Ascending order!
bool IsMatchingIdMissing(const CUser_field &field, const CBioseq::TId &ids)
string LabelFromType(CSeq_id::E_Choice choice)
void BioseqSetDescriptorPropagateUp(CBioseq_set_Handle set)
Moves descriptors up from children of the given bioseq-set if each child has an identical copy of the...
void HandleCollidingIds(CSeq_entry &entry)
static void s_GetTrimCoordinates(CBioseq_Handle bsh, const TCuts &sorted_cuts, TSeqPos &trim_start, TSeqPos &trim_stop)
vector< TLocAdjustment > TLocAdjustmentVector
vector< CSeq_entry_Handle > TVecOfSeqEntryHandles
EInternalTrimType
Any internal cut listed in TCuts will be converted to a terminal cut using one of these options.
pair< TSeqPos, int > TLocAdjustment
#define ERASE_SEQDESC_ON_BIOSEQ(Itr, Var)
ERASE_SEQDESC_ON_BIOSEQ.
#define EDIT_EACH_SEQDESC_ON_BIOSEQ(Itr, Var)
#define EDIT_EACH_SEQDESC_ON_SEQSET(Itr, Var)
#define ERASE_SEQDESC_ON_SEQSET(Itr, Var)
ERASE_SEQDESC_ON_SEQSET.
#define FIELD_EQUALS(Var, Fld, Value)
FIELD_EQUALS base macro.
#define RAW_FIELD_IS_EMPTY(Var, Fld)
RAW_FIELD_IS_EMPTY base macro.
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
constexpr auto to_array(T const (&a)[N])
#define row(bind, expected)
set< CConstRef< T >, SSerialObjectLessThan< T > > Type
map< CConstRef< T >, string > TMapObjToTextAsn
TMapObjToTextAsn m_ObjAsnCache
bool operator()(const CConstRef< T > &lhs, const CConstRef< T > &rhs) const
const string & x_GetAsnText(const CConstRef< T > &obj) const
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