32 result->SetReference_id(identifier.substr(0,identifier.size()-1));
48 auto& sub =
result->SetType().SetProt_sub();
51 sub.SetInitial(*initial);
60 result->SetType().SetProt_silent(*loc);
69 result->SetType().SetProt_sub().SetInitial(*initial);
78 result->SetType().SetProt_sub().SetInitial(*initial);
85 result->SetType().SetDup().SetLoc().SetAaloc(*aa_loc);
92 result->SetType().SetDel().SetLoc().SetAaloc(*aa_loc);
99 result->SetType().SetProt_ext().SetNterm_ext().SetNewStart(*new_start_site);
106 result->SetType().SetProt_ext().SetNterm_ext().SetNewAa(new_aa);
113 const auto index = NStr::StringToNumeric<TSeqPos>(reference_stop);
116 auto& cterm_ext =
result->SetType().SetProt_ext().SetCterm_ext();
117 cterm_ext.SetRefStop(index);
118 cterm_ext.SetNewAa(aa);
119 cterm_ext.SetLength(*length);
126 result->SetInt(*aa_interval);
133 result->SetSite(*aa_site);
148 auto index = NStr::StringToNumeric<CAaSite::TIndex>(pos);
160 if ( count ==
"?" ) {
164 const auto val = NStr::StringToNumeric<CCount::TVal>(count);
173 const auto len = count.size();
174 const auto c = NStr::StringToNumeric<CCount::TVal>(count.substr(1,
len-2));
182 if ( start ==
"?" ) {
183 result->SetRange().SetStart().SetUnknown();
186 const auto start_val = NStr::StringToNumeric<CCount::TVal>(start);
187 result->SetRange().SetStart().SetVal(start_val);
191 result->SetRange().SetStop().SetUnknown();
194 const auto stop_val = NStr::StringToNumeric<CCount::TVal>(stop);
195 result->SetRange().SetStop().SetVal(stop_val);
204 auto& ssr =
result->SetType().SetRepeat();
206 ssr.SetLoc().SetAaloc(*aa_loc);
207 ssr.SetCount(*count);
216 result->SetType().SetIns().SetInt().SetAaint(*aa_interval);
217 result->SetType().SetIns().SetSeqinfo().SetRaw_seq(raw_seq);
225 auto& insertion =
result->SetType().SetIns();
227 insertion.SetInt().SetAaint(*aa_interval);
228 insertion.SetSeqinfo().SetCount(*seq_size);
235 result->SetType().SetFrameshift().SetAasite(*aa_site);
245 auto& delins =
result->SetType().SetDelins();
247 delins.SetLoc().SetAaloc(*aa_loc);
248 delins.SetInserted_seq_info().SetRaw_seq(raw_seq);
256 auto& delins =
result->SetType().SetDelins();
257 delins.SetLoc().SetAaloc(*aa_loc);
258 delins.SetInserted_seq_info().SetCount(*seq_size);
262 template <
typename T>
279 result->SetSimple(*simple_var);
286 result->SetSpecial() = special_variant;
293 result->SetSubvariants().push_back(variant);
308 if (site_index ==
"?") {
309 result->SetBase().SetUnknown();
312 const auto base_val = NStr::StringToNumeric<CNtSite::TBase::TVal>(site_index);
313 result->SetBase().SetVal(base_val);
326 auto center_site = site_index;
341 result->SetBase().SetUnknown();
344 const auto base_val = NStr::StringToNumeric<CNtSite::TBase::TVal>(base);
345 result->SetBase().SetVal(base_val);
349 result->SetOffset().SetPlus_unknown();
354 result->SetOffset().SetMinus_unknown();
359 if (base.front() ==
'(' &&
offset.back() ==
')') {
362 else if (
offset.size() >= 2 &&
364 &&
offset.back() ==
')') {
365 result->SetFuzzy_offset();
368 auto offset_value =
offset;
371 result->SetOffset().SetVal(NStr::StringToNumeric<CNtSite::TOffset::TVal>(offset_value));
378 result->SetUtr().SetFive_prime();
385 result->SetUtr().SetThree_prime();
392 result->SetRange().SetStart(*start);
393 result->SetRange().SetStop(*stop);
399 result->SetSite(*nt_site);
423 bool is_minus_strand = (identifier[0] ==
'o');
424 const string seq_id = is_minus_strand ? identifier.substr(1) : identifier;
438 else if (nt_loc->
IsInt()) {
495 const string seq_id = identifier.substr(0,identifier.size()-1);
505 result->SetType().SetRepeat().SetLoc().SetNtloc(*nt_loc);
506 result->SetType().SetRepeat().SetCount(*count);
513 result->SetType().SetRepeat().SetLoc().SetNtloc(*nt_loc);
514 result->SetType().SetRepeat().SetCount(*count);
515 if (raw_seq.empty()) {
518 result->SetType().SetRepeat().SetRaw_seq(raw_seq);
527 if (raw_seq.empty()) {
530 result->SetType().SetInv().SetRaw_seq(raw_seq);
544 result->SetType().SetInv().SetSize(NStr::StringToNumeric<CInversion::TSize>(
size));
552 result->SetType().SetConv().SetOrigin(
origin.GetNCObject());
560 result->SetType().SetIns().SetInt().SetNtint(nt_loc->
SetInt());
562 if (raw_seq.empty()) {
565 result->SetType().SetIns().SetSeqinfo().SetRaw_seq(raw_seq);
572 result->SetType().SetDel().SetLoc().SetNtloc(*nt_loc);
579 result->SetType().SetDel().SetLoc().SetNtloc(*nt_loc);
580 if (raw_seq.empty()) {
583 result->SetType().SetDel().SetRaw_seq(raw_seq);
590 result->SetType().SetDelins().SetLoc().SetNtloc(*nt_loc);
591 if (inserted_seq.empty()) {
594 result->SetType().SetDelins().SetInserted_seq_info().SetRaw_seq(inserted_seq);
605 if (deleted_seq.empty()) {
608 result->SetType().SetDelins().SetDeleted_raw_seq(deleted_seq);
615 result->SetType().SetDup().SetLoc().SetNtloc(*nt_loc);
622 result->SetType().SetDup().SetLoc().SetNtloc(*nt_loc);
623 if (raw_seq.empty()) {
626 result->SetType().SetDup().SetRaw_seq(raw_seq);
636 result->SetType().SetNa_sub().SetLoc(*nt_loc);
637 result->SetType().SetNa_sub().SetInitial(initial_nt);
638 result->SetType().SetNa_sub().SetFinal(final_nt);
647 result->SetType().SetNa_identity().SetLoc(*nt_loc);
648 result->SetType().SetNa_identity().SetNucleotide(nucleotide);
656 result->SetType().SetNa_identity().SetLoc(*nt_loc);
664 result->SetSeqtype(seq_type);
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
TObjectType & GetNCObject(void) const
Get 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 string & ReplaceInPlace(string &src, const string &search, const string &replace, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
ESpecialVariant
Access to ESpecialVariant's attributes (values, names) as defined in spec.
EVariantSeqType
Access to EVariantSeqType's attributes (values, names) as defined in spec.
const TStart & GetStart(void) const
Get the Start member data.
void SetStrand_minus(TStrand_minus value)
Assign a value to Strand_minus data member.
TInt & SetInt(void)
Select the variant.
void SetSeqtype(TSeqtype value)
Assign a value to Seqtype data member.
bool IsSite(void) const
Check if variant Site is selected.
const TInt & GetInt(void) const
Get the variant data.
bool IsInt(void) const
Check if variant Int is selected.
void SetStart(TStart &value)
Assign a value to Start data member.
bool IsRange(void) const
Check if variant Range is selected.
void SetComplex(TComplex value)
Assign a value to Complex data member.
TRange & SetRange(void)
Select the variant.
void SetStop(TStop &value)
Assign a value to Stop data member.
bool IsSite(void) const
Check if variant Site is selected.
TSite & SetSite(void)
Select the variant.
void SetStop(TStop &value)
Assign a value to Stop data member.
void SetStart(TStart &value)
Assign a value to Start data member.
const TStop & GetStop(void) const
Get the Stop member data.
void SetSeqid(const TSeqid &value)
Assign a value to Seqid data member.
@ eVariantSeqType_n
non-coding rna
@ eVariantSeqType_p
protein
@ eVariantSeqType_g
genomic
@ eVariantSeqType_m
mitochondrial
@ eVariantSeqType_c
coding
@ eVariantSeqType_u
unknown
const struct ncbi::grid::netcache::search::fields::SIZE size
static const GLdouble origin[]
void AssignAaIntervalLocation(CRef< CAaInterval > aa_interval, CRef< CAaLocation > &result)
void AssignNtInterval(CRef< CNtLocation > start, CRef< CNtLocation > stop, CRef< CNtLocation > &result)
void TagAsMosaic(CRef< CSequenceVariant > seq_var)
void AssignFuzzyCount(const string &count, CRef< CCount > &result)
void AssignUnknownSub(CRef< CAaSite > initial, CRef< CSimpleVariant > &result)
CRef< T > MakeResult(CRef< T > result)
void AssignSequenceVariant(CRef< CSequenceVariant > variant, CRef< CVariantExpression > &result)
void AssignFuzzySimpleNtSite(const string &site_index, CRef< CNtSite > &result)
void AssignFrameshift(CRef< CAaSite > aa_site, CRef< CSimpleVariant > &result)
void AssignSingleVariation(CRef< CVariant > variant, CRef< CSequenceVariant > &result)
void AssignMissense(CRef< CAaSite > initial, const CProteinSub::TFinal &final, CRef< CSimpleVariant > &result)
void AssignNtDeletion(CRef< CNtLocation > nt_loc, CRef< CSimpleVariant > &result)
void AssignAaInsertion(CRef< CAaInterval > aa_interval, const CInsertion::TSeqinfo::TRaw_seq &raw_seq, CRef< CSimpleVariant > &result)
void AssignAaSiteLocation(CRef< CAaSite > aa_site, CRef< CAaLocation > &result)
void AssignNtSSR(CRef< CNtLocation > nt_loc, CRef< CCount > count, CRef< CSimpleVariant > &result)
void AssignNtInv(CRef< CNtLocation > nt_loc, const CInversion::TRaw_seq &raw_seq, CRef< CSimpleVariant > &result)
void AssignNtermExtension(CRef< CAaSite > initial_start_site, CRef< CCount > new_start_site, CRef< CSimpleVariant > &result)
void AssignCountRange(const string &start, const string &stop, CRef< CCount > &result)
void AssignIntronSite(const string &base, const string &offset, CRef< CNtSite > &result)
void AssignCount(const string &count, CRef< CCount > &result)
void AssignAaDup(CRef< CAaLocation > aa_loc, CRef< CSimpleVariant > &result)
void AssignSimpleVariant(CRef< CSimpleVariant > simple_var, CRef< CVariant > &result)
void AssignRefSeqIdentifier(const string &identifier, CRef< CVariantExpression > &result)
void AssignNtDelins(CRef< CNtLocation > nt_loc, const CInsertion::TSeqinfo::TRaw_seq &inserted_seq, CRef< CSimpleVariant > &result)
void AssignAaInterval(CRef< CAaSite > start, CRef< CAaSite > &stop, CRef< CAaInterval > &result)
void AssignFuzzyNtSite(CRef< CNtSite > center_site, CRef< CNtSite > &result)
void Assign3primeUTRSite(CRef< CNtSite > nt_site, CRef< CNtSite > &result)
void AssignNtInsertion(CRef< CNtLocation > nt_loc, const CInsertion::TSeqinfo::TRaw_seq &raw_seq, CRef< CSimpleVariant > &result)
void AssignNtRemoteLocation(const string &identifier, const string &type_string, CRef< CNtLocation > &nt_loc, CRef< CNtLocation > &result)
void AssignSilent(CRef< CAaLocation > loc, CRef< CSimpleVariant > &result)
void AssignSpecialVariant(ESpecialVariant special_variant, CRef< CVariant > &result)
void AssignAaDel(CRef< CAaLocation > aa_loc, CRef< CSimpleVariant > &result)
EVariantSeqType s_GetSeqType(const string &type_string)
void AssignNtSite(CRef< CNtSite > nt_site, CRef< CNtLocation > &result)
void AssignAaInsertionSize(CRef< CAaInterval > aa_interval, CRef< CCount > seq_size, CRef< CSimpleVariant > &result)
void AssignNtDup(CRef< CNtLocation > nt_loc, CRef< CSimpleVariant > &result)
void AssignNtConversion(CRef< CNtLocation > nt_loc, CRef< CNtLocation > origin, CRef< CSimpleVariant > &result)
void AssignNtSub(CRef< CNtLocation > nt_loc, const CNaSub::TInitial &initial_nt, const CNaSub::TFinal &final_nt, CRef< CSimpleVariant > &result)
void AssignNtIdentity(CRef< CNtLocation > nt_loc, const CNaIdentity::TNucleotide &nucleotide, CRef< CSimpleVariant > &result)
void AssignNtSiteRange(CRef< CNtSite > start, CRef< CNtSite > stop, CRef< CNtLocation > &result)
void AssignAaDelinsSize(CRef< CAaLocation > aa_loc, CRef< CCount > seq_size, CRef< CSimpleVariant > &result)
void Assign5primeUTRSite(CRef< CNtSite > nt_site, CRef< CNtSite > &result)
void AssignAaDelins(CRef< CAaLocation > aa_loc, const CInsertion::TSeqinfo::TRaw_seq &raw_seq, CRef< CSimpleVariant > &result)
void AssignAaSite(const string &aa, const string &pos, CRef< CAaSite > &result)
CRef< T > CreateResultIfNull(CRef< T > result)
void TagAsChimera(CRef< CSequenceVariant > seq_var)
void AssignFuzzy(CRef< T > input, CRef< T > &result)
void AssignSequenceType(CRef< CSequenceVariant > &result)
void AssignCtermExtension(const string &reference_stop, const string &aa, CRef< CCount > length, CRef< CSimpleVariant > &result)
void AssignAaSSR(CRef< CAaLocation > aa_loc, CRef< CCount > count, CRef< CSimpleVariant > &result)
void s_SetSequenceInfo(CRef< CNtLocation > &nt_loc, const string &identifier, const EVariantSeqType &seq_type)
void AssignNonsense(CRef< CAaSite > initial, CRef< CSimpleVariant > &result)
void AssignFuzzyLocalVariation(CRef< CSimpleVariant > input, CRef< CSimpleVariant > &result)
void AssignSimpleNtSite(const string &site_index, CRef< CNtSite > &result)
void AssignNtInvSize(CRef< CNtLocation > nt_loc, string size, CRef< CSimpleVariant > &result)