70 const size_t min_unknown,
71 const long max_unknown,
72 const size_t min_known,
74 vector<pair<
int,
int>>& start_length_locs,
75 vector<
bool> &vec_is_known)
80 || !inst.IsSetSeq_data()) {
86 switch (inst.GetSeq_data().Which()) {
88 iupacna = inst.GetSeq_data().GetIupacna();
118 bool is_unknown =
false;
119 bool is_known =
false;
121 if (n_len >= min_unknown && (max_unknown < 0 || (
int)n_len <= max_unknown)) {
124 else if (n_len >= min_known && (max_known < 0 || (
int)n_len <= max_known)) {
127 if (is_unknown || is_known) {
129 if (element.length() > n_len) {
130 element = element.substr(0, element.length() - n_len);
131 pos += element.length();
133 start_length_locs.emplace_back((
int)pos, (
int)n_len);
135 vec_is_known.push_back(is_known);
146 bool is_unknown =
false;
147 bool is_known =
false;
149 if (n_len >= min_unknown && (max_unknown < 0 || (
int)n_len <= max_unknown)) {
152 else if (n_len >= min_known && (max_known < 0 || (
int)n_len <= max_known)) {
155 if (is_unknown || is_known) {
157 if (element.length() > n_len) {
158 element = element.substr(0, element.length() - n_len);
159 pos += element.length();
161 start_length_locs.emplace_back((
int)pos, (
int)n_len);
163 vec_is_known.push_back(is_known);
167 pos += element.length();
173 const vector<pair<int, int>>& start_length_locs,
174 const vector<bool> &vec_is_known,
179 bool found_row =
false;
181 for (
int row = 0; row < num_rows; row++)
192 bool found_overlap =
false;
196 for (
size_t i = 0;
i < start_length_locs.size();
i++)
198 if (!vec_is_known[
i])
202 size_t num_segs = lens.size();
204 size_t start = start_length_locs[
i].first;
205 size_t stop = start + start_length_locs[
i].second - 1;
207 for (
size_t j = 0; j<num_segs; j++)
218 found_overlap =
true;
226 if (found_overlap && deleted_aligns.
find(&align) == deleted_aligns.
end())
230 deleted_aligns.
insert(&align);
235 pair<vector<pair<int, int>>, vector<bool>>>& map_gaps,
238 bool keep_gap_length,
239 bool create_general_only,
242 bool create_xref_map)
245 for (
const auto &gap : map_gaps)
247 auto bsh = gap.first;
248 const auto &start_length_locs = gap.second.first;
249 const auto &vec_is_known = gap.second.second;
251 gaps.reserve(start_length_locs.size());
252 for (
size_t i = 0;
i < start_length_locs.size(); ++
i)
255 gap.
start = start_length_locs[
i].first;
256 gap.
length = start_length_locs[
i].second;
261 new_map_gaps[bsh] = gaps;
265 create_general_only, max_feat_id, old_to_new, create_xref_map);
274 if ((*xit)->IsSetId() && (*xit)->GetId().IsLocal() && (*xit)->GetId().GetLocal().IsId())
276 auto it = old_to_new.
find((*xit)->GetId().GetLocal().GetId());
277 if (it != old_to_new.
end())
279 (*xit)->SetId().SetLocal().SetId(it->second);
292 if ((*it)->IsSetQual() && (*it)->IsSetVal() &&
295 (id_label.empty() ||
NStr::Equal((*it)->GetVal(), id_label) ||
NStr::Equal((*it)->GetVal(), id_label +
"_1"))) {
296 if (id_label.empty()) {
297 id_label = (*it)->GetVal();
309 bool keep_gap_length)
315 CCdregion::TCode_break::iterator cit = cdr.
SetCode_break().begin();
317 bool do_remove =
false;
318 if ((*cit)->IsSetLoc()) {
319 vector<CRef<CSeq_loc> > locations;
320 bool comment =
false;
324 if (!locations.empty()) {
327 (*cit)->SetLoc().
Assign(*new_loc);
352 vector<CRef<CSeq_loc> > locations;
353 bool comment =
false;
357 if (!locations.empty()) {
375 bool split_gene_locations,
377 bool keep_gap_length,
378 bool create_general_only,
381 bool create_xref_map)
392 vector<CRef<CSeq_loc>> locations;
393 bool comment =
false;
401 id->Assign(*feat_loc.
GetId());
403 size_t transcript_id_offset = 1;
404 string transcript_id_label;
405 size_t protein_id_offset = 1;
406 string protein_id_label;
408 if (locations.empty() || locations.front()->IsNull())
442 prot_seq->
SetInst().ResetExt();
444 prot_seq->
SetInst().SetSeq_data().SetIupacaa().Set(
prot);
455 prot_feat->
SetLocation().SetInt().SetId().Assign(*(prot_seq->
GetId().front()));
480 for (
size_t j = 1; j < locations.size(); j++)
481 if (!locations[j]->IsNull())
491 add_feat->
SetId().SetLocal().SetId(max_feat_id);
493 if (!create_xref_map)
496 x_AdjustOrigLabel(*add_feat, transcript_id_offset, transcript_id_label,
"orig_transcript_id");
497 x_AdjustOrigLabel(*add_feat, protein_id_offset, protein_id_label,
"orig_protein_id");
506 vector<CRef<CSeq_feat>> other_prot_feats;
507 vector<CRef<CSeq_id>> new_prot_id;
518 new_prot_id.push_back(
edit::GetNewProtId(bsh, id_offset, id_label, create_general_only));
520 add_feat->
SetProduct().SetWhole().Assign(*new_prot_id.front());
523 for (
CFeat_CI prot_feat_ci(product); prot_feat_ci; ++prot_feat_ci)
528 prot_feat->
Assign(*(prot_feat_ci->GetSeq_feat()));
534 prot_feat->
SetId().SetLocal().SetId(max_feat_id);
536 if (!create_xref_map)
543 RemapOtherProtFeats(*feat.
GetSeq_feat(), *add_feat, prot_feat_ci->GetSeq_feat_Handle(), other_prot_feats, max_feat_id, old_to_new, create_xref_map);
555 for (
size_t j = 1; j < locations.size(); j++)
556 if (!locations[j]->IsNull())
566 add_feat->
SetId().SetLocal().SetId(max_feat_id);
568 if (!create_xref_map)
571 x_AdjustOrigLabel(*add_feat, transcript_id_offset, transcript_id_label,
"orig_transcript_id");
572 x_AdjustOrigLabel(*add_feat, protein_id_offset, protein_id_label,
"orig_protein_id");
584 bool split_gene_locations,
586 bool keep_gap_length,
587 bool create_general_only,
590 bool create_xref_map)
592 if (map_gaps.empty())
595 auto seh = map_gaps.cbegin()->first.GetTopLevelEntry();
596 CScope &scope = seh.GetScope();
597 for (
CFeat_CI feat_it(seh); feat_it; ++feat_it) {
598 AdjustSingleFeature(*feat_it, scope, map_gaps, composite, split_gene_locations, break_features,
599 keep_gap_length, create_general_only, max_feat_id, old_to_new, create_xref_map);
609 bool keep_gap_length)
612 new_loc->
Assign(feat_loc);
615 vector<vector<CRef<CSeq_loc>>> all_locs;
616 vector<vector<pair<bool, bool>>> all_partials;
617 vector<CRef<CSeq_loc>> locs;
618 vector<pair<bool, bool>> partials;
620 for (
CSeq_loc_I loc_it(*new_loc); loc_it; ++loc_it)
622 if (loc_it.IsEmpty()) {
626 auto strand = loc_it.GetStrand();
629 id->Assign(loc_it.GetSeq_id());
635 auto it = map_gaps.find(bsh);
636 if (it != map_gaps.end()) {
648 bool partial5 =
false;
650 for (
size_t i = 0;
i < gaps.size(); ++
i)
652 TSignedSeqPos new_gap_length = (keep_gap_length ? gaps[
i].length : 100);
655 if (feat_stop < igap_start)
662 locs.emplace_back(
new CSeq_loc(*
id, new_start, new_stop, strand));
663 partials.emplace_back(partial5,
false);
669 else if (!gaps[
i].is_replace && igap_start <= feat_start)
671 if (gaps[
i].is_known)
677 else if (gaps[
i].is_replace && gaps[
i].is_known && igap_start + gaps[
i].length <= feat_start)
681 else if (gaps[
i].is_replace && !gaps[
i].is_known && igap_start + gaps[
i].length <= feat_start)
683 offset += new_gap_length - gaps[
i].length;
686 else if (!gaps[
i].is_replace && gaps[
i].is_known && igap_start > feat_start && igap_start <= feat_stop)
688 offset_middle += gaps[
i].length;
691 else if (!gaps[
i].is_replace && !gaps[
i].is_known && igap_start > feat_start && igap_start <= feat_stop)
693 offset_middle += new_gap_length;
699 offset += offset_middle + new_gap_length;
702 locs.emplace_back(
new CSeq_loc(*
id, new_start, new_stop, strand));
703 partials.emplace_back(partial5,
true);
707 feat_start = gaps[
i].start;
709 all_locs.push_back(locs);
710 all_partials.push_back(partials);
716 else if (gaps[
i].is_replace && gaps[
i].is_known && igap_start >= feat_start && igap_start + gaps[
i].length - 1 <= feat_stop)
720 else if (gaps[
i].is_replace && !gaps[
i].is_known && igap_start <= feat_start && igap_start + gaps[
i].length - 1 >= feat_start && igap_start + gaps[
i].length - 1 < feat_stop)
722 offset += offset_middle + new_gap_length - gaps[
i].length;
725 feat_start = gaps[
i].start + gaps[
i].length;
727 if (break_features && !locs.empty())
730 all_locs.push_back(locs);
731 all_partials.push_back(partials);
737 else if (gaps[
i].is_replace && !gaps[
i].is_known && igap_start <= feat_start && igap_start + gaps[
i].length - 1 >= feat_stop)
739 if (break_features && !locs.empty())
742 all_locs.push_back(locs);
743 all_partials.push_back(partials);
750 else if (gaps[
i].is_replace && !gaps[
i].is_known && igap_start > feat_start && igap_start <= feat_stop && igap_start + gaps[
i].length - 1 > feat_stop)
755 locs.emplace_back(
new CSeq_loc(*
id, new_start, new_stop, strand));
756 partials.emplace_back(partial5,
true);
763 all_locs.push_back(locs);
764 all_partials.push_back(partials);
772 else if (gaps[
i].is_replace && !gaps[
i].is_known && igap_start > feat_start && igap_start <= feat_stop && igap_start + gaps[
i].length - 1 <= feat_stop)
778 offset += offset_middle + new_gap_length - gaps[
i].length;
781 locs.emplace_back(
new CSeq_loc(*
id, new_start, new_stop, strand));
782 partials.emplace_back(partial5,
true);
786 feat_start = gaps[
i].start + gaps[
i].length;
788 all_locs.push_back(locs);
789 all_partials.push_back(partials);
795 offset_middle += new_gap_length - gaps[
i].length;
807 locs.emplace_back(
new CSeq_loc(*
id, new_start, new_stop, strand));
808 partials.emplace_back(partial5,
false);
815 all_locs.push_back(locs);
816 all_partials.push_back(partials);
821 if (!all_partials.empty())
823 if (!all_partials.front().empty())
825 if (!all_partials.back().empty())
829 for (
size_t j = 0; j < all_locs.size(); j++)
832 if (all_locs[j].
empty())
838 for (
size_t i = 0;
i < all_locs[j].size();
i++)
844 if (!all_partials[j].
empty())
850 locations.push_back(changed_loc);
856 const char *cds_gap_comment =
"coding region disrupted by sequencing gap";
864 comment = comment +
"; " + cds_gap_comment;
896 for (
CFeat_CI feat_ci(bh); feat_ci; ++feat_ci)
902 const CSeq_loc &loc = feat_ci->GetLocation();
926 new_feat->
Assign(feat_ci->GetOriginalFeature());
943 bool create_xref_map)
980 new_feat->
SetId().SetLocal().SetId(max_feat_id);
982 if (!create_xref_map)
989 other_prot_feats.push_back(new_feat);
996 bool& remove_alignments,
999 bool create_xref_map)
1011 vector<pair<int, int>> start_length_locs;
1012 vector<bool> vec_is_known;
1017 start_length_locs, vec_is_known);
1019 if (start_length_locs.empty())
1039 for (; align_ci; ++align_ci) {
1048 map_gaps[bsh] = make_pair(start_length_locs, vec_is_known);
1059 create_general_only, max_feat_id,
1060 old_to_new, create_xref_map);
1063 remove_alignments = (!deleted_aligns.
empty());
1072 bool create_xref_map =
true;
1076 create_xref_map =
false;
1084 bool& remove_alignments,
1087 bool create_xref_map)
1099 vector<pair<int, int>> start_length_locs;
1100 vector<bool> vec_is_known;
1105 start_length_locs, vec_is_known);
1107 if (start_length_locs.empty())
1127 for (; align_ci; ++align_ci) {
1136 map_gaps[bsh] = make_pair(start_length_locs, vec_is_known);
1145 create_general_only, max_feat_id,
1146 old_to_new, create_xref_map);
1149 remove_alignments = (!deleted_aligns.
empty());
1157 bool create_xref_map =
true;
1161 create_xref_map =
false;
User-defined methods of the data storage class.
@ eExtreme_Positional
numerical value
bool AdjustProteinFeaturePartialsToMatchCDS(CSeq_feat &new_prot, const CSeq_feat &cds)
AdjustProteinFeaturePartialsToMatchCDS A function to change an existing MolInfo to match a coding reg...
CRef< objects::CSeq_id > GetNewProtId(objects::CBioseq_Handle bsh, int &offset, string &id_label, bool general_only)
vector< CRef< objects::CSeq_id > > GetNewProtIdFromExistingProt(objects::CBioseq_Handle bsh, int &offset, string &id_label)
bool IsGeneralIdProtPresent(objects::CSeq_entry_Handle tse)
TSeqPos GetLength(void) const
void AddCommand(IEditCommand &command)
virtual void Unexecute()
Undo (opposite to Execute())
virtual void Execute()
Do the editing action.
static TId s_FindHighestFeatureId(const objects::CSeq_entry_Handle &entry)
static SIZE_TYPE Convert(const CTempString &src, TCoding src_coding, TSeqPos pos, TSeqPos length, string &dst, TCoding dst_coding)
SeqVector related exceptions.
TDim CheckNumRows(void) const
Validatiors.
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
namespace ncbi::objects::
Seq-loc iterator class – iterates all intervals from a seq-loc in the correct order.
const_iterator end() const
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
void RemapOtherProtFeats(const CSeq_feat &old_cds, CSeq_feat &cds, CBioseq_Handle bh, CRef< CCmdComposite > composite, bool &any_actions)
void FindNewLocations(const CSeq_loc &feat_loc, CScope &scope, const map< CBioseq_Handle, vector< SGap >> &map_gaps, vector< CRef< CSeq_loc >> &locations, bool &comment, bool break_features, bool keep_gap_length)
static CRef< CCmdComposite > ConvertRawToDeltaByNsHugeFileCmd_impl(const CSeq_entry_Handle &seh, const SGapRequestInfo &request, CObject_id::TId &max_feat_id, bool &remove_alignments, int &count, map< CObject_id::TId, CObject_id::TId > &old_to_new, bool create_xref_map)
static CRef< CCmdComposite > ConvertRawToDeltaByNsCommand_impl(const CSeq_entry_Handle &seh, const SGapRequestInfo &request, bool &remove_alignments, int &count, map< CObject_id::TId, CObject_id::TId > &old_to_new, bool create_xref_map)
CRef< CCmdComposite > ConvertRawToDeltaByNsCommand(const CSeq_entry_Handle &seh, const SGapRequestInfo &request, bool &remove_alignments, int &count)
static void AdjustSingleFeature(const CMappedFeat &feat, CScope &scope, const map< CBioseq_Handle, vector< SGap >> &gaps, CRef< CCmdComposite > composite, bool split_gene_locations, bool break_features, bool keep_gap_length, bool create_general_only, CObject_id::TId &max_feat_id, map< CObject_id::TId, CObject_id::TId > &old_to_new, bool create_xref_map)
CRef< CCmdComposite > ConvertRawToDeltaByNsHugeFileCmd(const CSeq_entry_Handle &seh, const SGapRequestInfo &request, CObject_id::TId &max_feat_id, bool &remove_alignments, int &count)
static void UpdateFeaturesForGaps(const map< CBioseq_Handle, pair< vector< pair< int, int >>, vector< bool >>> &map_gaps, CRef< CCmdComposite > composite, bool break_features, bool keep_gap_length, bool create_general_only, CObject_id::TId &max_feat_id, map< CObject_id::TId, CObject_id::TId > &old_to_new, bool create_xref_map)
void GapLocationsFromNs(const CSeq_inst &inst, const size_t min_unknown, const long max_unknown, const size_t min_known, const long max_known, vector< pair< int, int >> &start_length_locs, vector< bool > &vec_is_known)
CRef< CSeq_feat > UpdateFeat(CRef< CSeq_loc > changed_loc, const CSeq_feat &feat, bool comment, CScope &scope)
static void s_ReplaceFeatureIdXref(CSeq_feat &f, map< CObject_id::TId, CObject_id::TId > &old_to_new)
void UpdateDensegAlignment(CSeq_align_Handle ah, CBioseq_Handle bsh, CRef< CCmdComposite > composite, const vector< pair< int, int >> &start_length_locs, const vector< bool > &vec_is_known, set< const CSeq_align * > &deleted_aligns)
static void x_AdjustOrigLabel(CSeq_feat &feat, size_t &id_offset, string &id_label, const string &qual)
void AdjustFeatureLocations(const map< CBioseq_Handle, vector< SGap >> &map_gaps, CRef< CCmdComposite > composite, bool split_gene_locations, bool break_features, bool keep_gap_length, bool create_general_only, CObject_id::TId &max_feat_id, map< CObject_id::TId, CObject_id::TId > &old_to_new, bool create_xref_map)
static void s_UpdateCodeBreaksAndAnticodons(CSeq_feat &feat, CScope &scope, const map< CBioseq_Handle, vector< SGap >> &gaps, bool break_features, bool keep_gap_length)
static void s_AddComment(CRef< CSeq_feat > new_feat)
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.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
CRef< CSeq_loc > MakeSeq_loc(EMakeType make_type=eMake_CompactType) const
return constructed CSeq_loc with all changes
bool IsPartialStart(ESeqLocExtremes ext) const
check start or stop of location for e_Lim fuzz
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
TSeqPos GetStart(ESeqLocExtremes ext) const
Return start and stop positions of the seq-loc.
CSeq_loc_I InsertInterval(const CSeq_id_Handle &id, const TRange &range, ENa_strand strand=eNa_strand_unknown)
Insert new element before the current one (.
const CSeq_id * GetId(void) const
Get the id of the location return NULL if has multiple ids or no id at all.
void SetPartialStart(bool val, ESeqLocExtremes ext)
set / remove e_Lim fuzz on start or stop (lt/gt - indicating partial interval)
CRef< CSeq_loc > Intersect(const CSeq_loc &other, TOpFlags flags, ISynonymMapper *syn_mapper) const
Find the intersection with the seq-loc, merge/sort resulting ranges depending on flags.
void SetPartialStop(bool val, ESeqLocExtremes ext)
bool IsPartialStop(ESeqLocExtremes ext) const
CSeq_loc_I InsertNull(void)
Set of Insert*() methods.
TSeqPos GetStop(ESeqLocExtremes ext) const
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,...
static CCdregion::EFrame FindBestFrame(const CSeq_feat &cds, CScope &scope)
Find "best" frame for a coding region.
static void Translate(const string &seq, string &prot, const CGenetic_code *code, bool include_stop=true, bool remove_trailing_X=false, bool *alt_start=NULL, bool is_5prime_complete=true, bool is_3prime_complete=true)
Translate a string using a specified genetic code.
CRef< CSeq_loc > Map(const CSeq_loc &src_loc)
Map seq-loc.
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
CSeq_loc_Mapper_Base & SetMergeAbutting(void)
Merge only abutting intervals, keep overlapping.
@ eProductToLocation
Map from the feature's product to location.
@ eLocationToProduct
Map from the feature's location to product.
CConstRef< CBioseq > GetCompleteBioseq(void) const
Get the complete bioseq.
const CSeq_annot_Handle & GetAnnot(void) const
Get handle to seq-annot for this feature.
CConstRef< CSeq_align > GetSeq_align(void) const
Get const reference to current seq-align.
virtual const CSeq_loc & GetLocation(void) const
CSeq_entry_Handle GetParentEntry(void) const
Get parent Seq-entry handle.
CScope & GetScope(void) const
Get scope this handle belongs to.
CScope & GetScope(void) const
Get scope this handle belongs to.
CConstRef< CSeq_feat > GetOriginalSeq_feat(void) const
CSeqFeatData::ESubtype GetFeatSubtype(void) const
CRef< CSeq_loc > GetRangeSeq_loc(TSeqPos start, TSeqPos stop, ENa_strand strand=eNa_strand_unknown) const
Return CSeq_loc referencing the given range and strand on the bioseq If start == 0,...
bool IsPlainFeat(void) const
Check if this is plain feature.
bool IsSynonym(const CSeq_id &id) const
Check if this id can be used to obtain this bioseq handle.
const CSeq_loc & GetLocation(void) const
const CSeq_feat & GetOriginalFeature(void) const
Get original feature with unmapped location/product.
const CSeq_feat_Handle & GetSeq_feat_Handle(void) const
Get original feature handle.
CSeq_align_Handle GetSeq_align_Handle(void) const
Get original alignment handle.
CConstRef< CSeq_feat > GetSeq_feat(void) const
Get current seq-feat.
void Reset(void)
Reset reference object.
#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 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 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 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.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
bool IsId(void) const
Check if variant Id is selected.
TId GetId(void) const
Get the variant data.
const TAnticodon & GetAnticodon(void) const
Get the Anticodon member data.
bool IsTRNA(void) const
Check if variant TRNA is selected.
bool IsSetAnticodon(void) const
location of anticodon Check if a value has been assigned to Anticodon data member.
void SetAnticodon(TAnticodon &value)
Assign a value to Anticodon data member.
bool IsSetExt(void) const
generic fields for ncRNA, tmRNA, miscRNA Check if a value has been assigned to Ext data member.
void ResetAnticodon(void)
Reset Anticodon data member.
const TExt & GetExt(void) const
Get the Ext member data.
const TDenseg & GetDenseg(void) const
Get the variant data.
const TStarts & GetStarts(void) const
Get the Starts member data.
const TLens & GetLens(void) const
Get the Lens member data.
bool IsSetSegs(void) const
Check if a value has been assigned to Segs data member.
const TSegs & GetSegs(void) const
Get the Segs member data.
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.
void SetLocation(TLocation &value)
Assign a value to Location data member.
bool IsCdregion(void) const
Check if variant Cdregion is selected.
void SetComment(const TComment &value)
Assign a value to Comment data member.
void ResetCode_break(void)
Reset Code_break data member.
void SetPartial(TPartial value)
Assign a value to Partial data member.
void SetProduct(TProduct &value)
Assign a value to Product data member.
const TId & GetId(void) const
Get the Id member data.
const TLocal & GetLocal(void) const
Get the variant data.
const TLocation & GetLocation(void) const
Get the Location member data.
bool IsLocal(void) const
Check if variant Local is selected.
const TData & GetData(void) const
Get the Data member data.
const TExcept_text & GetExcept_text(void) const
Get the Except_text member data.
void SetId(TId &value)
Assign a value to Id data member.
bool IsSetExcept_text(void) const
explain if except=TRUE Check if a value has been assigned to Except_text data member.
void SetData(TData &value)
Assign a value to Data data member.
TCode_break & SetCode_break(void)
Assign a value to Code_break data member.
const TCdregion & GetCdregion(void) const
Get the variant data.
bool IsSetId(void) const
Check if a value has been assigned to Id data member.
const TProduct & GetProduct(void) const
Get the Product member data.
const TComment & GetComment(void) const
Get the Comment member data.
void ResetLocation(void)
Reset Location data member.
vector< CRef< CSeqFeatXref > > TXref
vector< CRef< CGb_qual > > TQual
const TRna & GetRna(void) const
Get the variant data.
TQual & SetQual(void)
Assign a value to Qual data member.
const TCode_break & GetCode_break(void) const
Get the Code_break member data.
bool IsSetProduct(void) const
product of process Check if a value has been assigned to Product data member.
bool IsRna(void) const
Check if variant Rna is selected.
bool IsSetCode_break(void) const
individual exceptions Check if a value has been assigned to Code_break data member.
bool IsEmpty(void) const
Check if variant Empty is selected.
bool IsNull(void) const
Check if variant Null is selected.
const TInst & GetInst(void) const
Get the Inst member data.
const TId & GetId(void) const
Get the Id member data.
void SetInst(TInst &value)
Assign a value to Inst data member.
@ eRepr_raw
continuous sequence
@ 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
@ eMol_na
just a nucleic acid
constexpr auto front(list< Head, As... >, T=T()) noexcept -> Head
constexpr bool empty(list< Ts... >) noexcept
double f(double x_, const double &y_)
TLocAdjustmentVector NormalizeUnknownLengthGaps(CSeq_inst &inst, TSeqPos unknown_length=100)
NormalizeUnknownLengthGaps A function to adjust the length of unknown-length gaps to a specific lengt...
void ConvertRawToDeltaByNs(CSeq_inst &inst, size_t min_unknown, int max_unknown, size_t min_known, int max_known, bool is_assembly_gap=false, int gap_type=CSeq_gap::eType_unknown, int linkage=-1, int linkage_evidence=-1)
ConvertRawToDeltaByNs A function to convert a raw sequence to a delta sequence, using runs of Ns to d...