69 CSeq_feat::GetTypeInfo(),
114 if (
nullptr != params) {
116 if (
nullptr != feat_group) {
122 gui_info->
m_Scope =
object.scope;
128 if (loc_obj.
GetId()) {
161 if ((*iter)->GetType().IsStr() &&
162 (*iter)->GetType().GetStr() ==
"Support" &&
163 (*iter)->GetFieldRef(
"Total"))
165 const auto& d = (*iter)->GetFieldRef(
"Total")->GetData();
169 }
else if (d.IsReal()) {
181 string splice_site =
"";
186 if ((*iter)->GetType().IsStr() &&
NStr::EqualNocase((*iter)->GetType().GetStr(),
"Splice Sequence")) {
193 splice_site = donor_str +
"-" + acceptor_str +
" ";
195 splice_site +=
"(consensus)";
197 splice_site +=
"(non-consensus)";
213 if (!
rna.GetExt().IsGen())
216 if (!
rna.GetExt().GetGen().IsSetClass())
219 return rna.GetExt().GetGen().GetClass();
226 if(isGeneratedBySvc) {
227 *isGeneratedBySvc =
false;
248 if (!feat.first->IsSetData())
250 if (!feat.first->GetData().IsCdregion() && !feat.first->GetData().IsRna())
256 if (links_by_type.
empty())
261 for (
auto it_type = links_by_type.
begin(); it_type != links_by_type.
end(); ++it_type) {
264 for (
auto it_name = links_by_name.
begin(); it_name != links_by_name.
end(); ++it_name) {
267 for (
size_t i = 0;
i < it_name->second.size(); ++
i) {
270 if (
i > 0) tmp_links +=
", ";
271 tmp_links += links.
CreateLink(it_name->second[
i].first, it_name->second[
i].second);
274 links.
AddLinkRow(it_name->first +
':', tmp_links, 250);
290 curr_text =
"complement(";
304 string label =
"Location";
312 string len_suffix{
" nt" };
315 if (bsh && bsh.
IsAa()) {
327 if (lens.size() > 1) {
330 tooltip.
AddRow(iter->first +
":", iter->second);
333 else if (lens.size() == 1) {
334 tooltip.
AddRow(
"Length:", lens.begin()->second);
344 string len_suffix{
" nt" };
348 if (bsh && bsh.
IsAa()) {
357 if (!feat.first->IsSetData())
359 if (feat.first->GetData().IsCdregion()) {
365 if (feat.first->GetData().IsRna()) {
372 curr_text =
"complement(";
382 tooltip.
AddRow(
"Location:", curr_text);
396 if (lens.size() > 1) {
399 tooltip.
AddRow(iter->first +
":", iter->second);
402 else if (lens.size() == 1) {
403 tooltip.
AddRow(
"Length:", lens.begin()->second);
411 string text(t_title);
416 size_t pos =
text.find(to_remove);
417 if ((pos != string::npos) && (to_remove.length() <
text.length()))
418 text =
text.substr(to_remove.length());
428 tooltip.
AddRow(
"Splice Sites:", splice_site);
434 if (!rna_class.empty())
435 tooltip.
AddRow(
"ncRNA_class:", rna_class);
442 curr_text +=
"Pseudo";
445 curr_text += curr_text.empty() ?
"" :
", ";
446 curr_text +=
"Partial";
449 curr_text += curr_text.empty() ?
"" :
", ";
450 curr_text +=
"Partial start";
453 curr_text += curr_text.empty() ?
"" :
", ";
454 curr_text +=
"Partial stop";
457 curr_text += curr_text.empty() ?
"" :
", ";
458 curr_text +=
m_Feat->GetExcept_text();
460 if (!curr_text.empty()) {
461 tooltip.
AddRow(
"Qualifiers:", curr_text);
475 if (curr_text != t_title) {
477 tooltip.
AddRow(
"Name:", curr_text);
480 if (
m_Feat->IsSetComment()
481 &&
m_Feat->GetComment() != t_title
482 &&
m_Feat->GetComment() != curr_text
483 && string::npos == t_title.find(
m_Feat->GetComment())) {
502 if (
m_Feat->IsSetQual()) {
503 bool isAnyFound(
false);
506 if ((*iQual)->IsSetQual() && (*iQual)->IsSetVal()) {
511 tooltip.
AddRow((*iQual)->GetQual() +
':', (*iQual)->GetVal());
521 string text(t_title);
526 size_t pos =
text.find(to_remove);
527 if ((pos != string::npos) && (to_remove.length() <
text.length()))
528 text =
text.substr(to_remove.length());
545 if (curr_text != t_title) {
547 tooltip.
AddRow(
"Name:", curr_text);
561 if (merged_feats.empty()) {
562 merged_feats = feat_label;
565 merged_feats +=
" and " + feat_label;
568 if (curr_text.empty() || !feat.first->IsSetData())
570 if (feat.first->GetData().IsCdregion()) {
571 tooltip.
AddRow(
"Protein title:", curr_text);
572 if (feat.first->IsSetComment() && feat.first->GetComment() != curr_text) {
573 tooltip.
AddRow(
"Protein comment:", feat.first->GetComment());
577 else if (feat.first->GetData().IsRna()) {
578 tooltip.
AddRow(
"RNA title:", curr_text);
579 if (feat.first->IsSetComment() && feat.first->GetComment() != curr_text) {
580 tooltip.
AddRow(
"RNA comment:", feat.first->GetComment());
585 if (!tag_qual.empty() && !status_qual.empty())
589 if (!feat.first->IsSetQual()) {
596 tag_qual = (*iQual)->GetVal();
599 status_qual = (*iQual)->GetVal();
603 if (!merged_feats.empty()) {
604 tooltip.
AddRow(
"Merged features:", merged_feats);
622 if (
nullptr == gui_info_feat)
629 if (!extra_info->IsEmpty()) {
633 tooltip.
Append(*extra_info);
640 curr_text +=
"Pseudo";
643 curr_text += curr_text.empty() ?
"" :
", ";
644 curr_text +=
"Partial";
647 curr_text += curr_text.empty() ?
"" :
", ";
648 curr_text +=
"Partial start";
651 curr_text += curr_text.empty() ?
"" :
", ";
652 curr_text +=
"Partial stop";
655 curr_text += curr_text.empty() ?
"" :
", ";
656 curr_text +=
m_Feat->GetExcept_text();
658 if (!curr_text.empty() && (tag_qual.empty() && status_qual.empty())) {
659 tooltip.
AddRow(
"Qualifiers:", curr_text);
662 else if (!tag_qual.empty() || !status_qual.empty()) {
664 if (!tag_qual.empty())
665 tooltip.
AddRow(
"Tag:", tag_qual);
666 if (!status_qual.empty())
667 tooltip.
AddRow(
"Status:", status_qual);
668 if (!curr_text.empty())
669 tooltip.
AddRow(curr_text);
683 string master_seq_id{
"Position on master:" };
685 if (!assm_acc.empty()) {
686 master_seq_id = assm_acc +
" position:";
690 if ((feat_pos != -1) && (feat_pos != at_p) && !
m_Feat->IsSetProduct() && !
m_Feat->GetData().IsCdregion()) {
691 if (
m_Feat->GetData().IsRna()) {
694 else if (
m_Feat->GetData().IsGene()) {
701 tooltip.
Append(*extra_info);
714 if (annot && annot.
IsNamed()) {
743 sel.SetResolveAll().SetAdaptiveDepth().SetOverlapTotalRange();
745 feature::CFeatTree
tree;
747 tree.AddFeatures(feat_it);
762 int count = 0, prev_to = -1;
763 for (; exon_loc_ci; ++exon_loc_ci) {
764 const auto&& e = exon_loc_ci.
GetRange();
767 if (at_p >= e.GetFrom() && at_p <= e.GetTo()) {
770 }
else if (prev_to != -1) {
773 intron = at_p > e.GetTo() && at_p < (
TSeqPos)prev_to;
775 intron = at_p > (
TSeqPos)prev_to && at_p < e.GetFrom();
782 prev_to =
minus ? e.GetFrom() : e.GetTo();
824 string product = feat.
GetData().
IsRna() ?
"Sequence length" :
"Protein length";
832 string product_len = feat.
GetNamedQual(
"product_length");
833 if (!product_len.empty()) {
835 string product = feat.
GetData().
IsRna() ?
"Sequence length" :
"Protein length";
852 if (!loc_obj.
GetId()) {
878 if (pos >=
range.GetFrom() && pos <=
range.GetTo()) {
892 if (pre_dir > 0 && curr_pos > pre_pos) {
893 if (pos > pre_pos && pos < curr_pos &&
901 }
else if (pre_dir < 0 && curr_pos < pre_pos) {
902 if (pos < pre_pos && pos > curr_pos &&
914 if (curr_pos > pre_pos && (pos > curr_pos || pos < pre_pos)) {
920 }
else if (curr_pos < pre_pos && (pos > pre_pos || pos < curr_pos)) {
931 pre_pos = curr_dir > 0 ?
range.GetTo() :
range.GetFrom();
932 prod_start +=
range.GetLength();
970 const auto& prod_int = *mi.first;
971 const auto& gen_int = *mi.second;
972 if (pos < gen_int.GetFrom() || pos > gen_int.GetTo())
974 auto p = gen_int.GetStrand() ==
eNa_strand_minus ? gen_int.GetTo() - pos : pos - gen_int.GetFrom();
980 if ((total_rng.GetFrom() <= pos) && (pos <= total_rng.GetTo())) {
982 pos = total_rng.GetTo() - pos;
985 pos = pos - total_rng.GetFrom();
1003 return (prod_pos -
offset) / 3;
1012 if ( !top_handle ) {
1016 const TSeqPos kSeqExonLength = 10;
1017 const TSeqPos kSeqIntronLength = 8;
1026 left_stop - kSeqExonLength : 0);;
1027 string seq_left, seq_ins_l, seq_ins_r, seq_right;
1029 vec.
GetSeqData(left_start, left_stop, seq_left);
1032 value = seq_left +
"] ";
1034 vec.
GetSeqData(left_stop, left_stop + kSeqIntronLength, seq_ins_l);
1036 if (vec.
size() > left_stop + kSeqIntronLength) {
1039 value +=
"[origin]";
1040 if (right_start < kSeqIntronLength) {
1044 vec.
GetSeqData(right_start - kSeqIntronLength, right_start, seq_ins_r);
1047 }
else if (intr.
GetLength() > kSeqIntronLength * 2) {
1048 vec.
GetSeqData(left_stop, left_stop + kSeqIntronLength, seq_ins_l);
1049 vec.
GetSeqData(right_start - kSeqIntronLength, right_start, seq_ins_r);
1050 value += seq_ins_l +
"..." + seq_ins_r;
1052 vec.
GetSeqData(left_stop, right_start + 1, seq_ins_l);
1055 vec.
GetSeqData(right_start, right_start + kSeqExonLength, seq_right);
1056 value +=
" [" + seq_right;
1061 tooltip.
AddRow(
"Spliced sequence:",
"Not available");
1065 TSeqPos left = (
TSeqPos) (at_p > kSeqIntronLength ? at_p - kSeqIntronLength : 0);
1068 int pos = at_p - left;
1075 value.insert(pos + 1,
"]");
1076 value.insert(pos,
"[");
1093 if (
m_Feat->IsSetProduct()) {
1100 auto orig_pos = at_p;
1102 bool in_prod_gap{
false };
1117 if (prod_pos1 != prod_pos2) {
1120 bool at_from_end =
false;
1127 prod_pos = prod_pos1;
1129 prod_pos = prod_pos2;
1132 prod_pos = prod_pos1;
1163 if (annot && annot.
IsNamed()) {
1179 mapping_info_ptr = &mapping_info;
1183 if (mapping_info_ptr !=
nullptr) {
1184 for (
const auto& mi : *mapping_info_ptr) {
1185 const auto& prod_int = *mi.first;
1186 const auto& gen_int = *mi.second;
1187 if (orig_pos < gen_int.GetFrom() || orig_pos > gen_int.GetTo())
1189 auto p = gen_int.GetStrand() ==
eNa_strand_minus ? gen_int.GetTo() - orig_pos : orig_pos - gen_int.GetFrom();
1190 p += prod_int.GetFrom();
1202 if (isCDS &&
m_Feat->GetData().GetCdregion().IsSetCode()) {
1203 genetic_code = &(
m_Feat->GetData().GetCdregion().GetCode());
1207 prod_vec->
GetSeqData(from, prod_pos * base, prod_seq);
1215 prod_vec->
GetSeqData(prod_pos * base, prod_pos * base + base, prod_seq);
1216 string first_bracket =
"[";
1217 string second_bracket =
"]";
1221 prod_seq = trans_seq;
1226 if (prod_pos == prod_pos1) {
1227 value += prod_seq + first_bracket +
"..." + second_bracket;
1230 value += first_bracket +
"..." + second_bracket + prod_seq;
1234 value += first_bracket + prod_seq +
"..." + prod_seq + second_bracket;
1238 value += first_bracket + prod_seq + second_bracket;
1241 prod_vec->
GetSeqData(prod_pos * base + base, to, prod_seq);
1258 switch (
m_Feat->GetData().GetSubtype()) {
1261 return "Pseudo protein";
User-defined methods of the data storage class.
User-defined methods of the data storage class.
const TSeqFeatVector & GetFeaturesGroup() const
CFeatListItem - basic configuration data for one "feature" type.
string GetStoragekey() const
CConfigurableItems - a static list of items that can be configured.
bool GetItemBySubtype(int subtype, CFeatListItem &config_item) const
static void RegisterFactory(const string &interface_name, IInterfaceFactory *factory)
static void AddBlastProductLink(const objects::CSeq_feat &feat, objects::CScope &scope, TLinksMap &links, bool relative)
static void AddFeatureLinks(const objects::CSeq_feat &feat, const objects::CBioseq_Handle &handle, const string &tax_id_file, TLinksMap &links, bool relative=true, bool exclude_self_links=false)
@RNA_ref.hpp User-defined methods of the data storage class.
ESubtype GetSubtype(void) const
static const CFeatList * GetFeatList()
static SIZE_TYPE ReverseComplement(const string &src, TCoding src_coding, TSeqPos pos, TSeqPos length, string &dst)
namespace ncbi::objects::
const string & GetNamedQual(const CTempString &qual_name) const
Return a named qualifier.
Seq-loc iterator class – iterates all intervals from a seq-loc in the correct order.
CConstRef< CUser_field > GetFieldRef(const string &str, const string &delim=".", NStr::ECase use_case=NStr::eCase) const
Return a field reference representing the tokenized key, or a NULL reference if the key doesn't exist...
const_iterator begin() const
const_iterator end() const
bool IsConsensusSplice(const string &splice5, const string &splice3)
Consensus splice is GY..AG or AT..AC.
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.
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
static bool IsException(const objects::CSeq_feat &feat)
static bool IsPartialStart(const objects::CSeq_loc &loc)
static objects::SAnnotSelector GetAnnotSelector(TAnnotFlags flags=0)
request an annotation selector for a given type
static bool IsPartialFeature(const objects::CSeq_feat &feat)
static bool IsPseudoFeature(const objects::CSeq_feat &feat)
static bool IsPartialStop(const objects::CSeq_loc &loc)
static CRef< objects::CSeq_loc > MixLocToLoc(const objects::CSeq_loc &mix_loc, const objects::CBioseq_Handle &handle)
Create a new seq-loc with a unique seq-id from a "mixed" loc.
static void GetMappingInfo(const objects::CMappedFeat &mapped_feat, const objects::CBioseq_Handle &bsh, TMappingInfo &info, const string &annot=string())
vector< TMappedInt > TMappingInfo
bool m_ExonDirForward
Previous segment's strand of an intron or this segment's strand if it is an exon.
static void GetLabel(const CObject &obj, string *label, ELabelType type=eDefault)
virtual string CreateLink(const string &sLabel, const string &sUrl) const =0
construct the HTML code for a link from the displayed text label and supplied URL
virtual void AddRow(const string &sContents="", unsigned colspan=2)=0
add a row with a cell, spanning across all columns
virtual CIRef< ITooltipFormatter > CreateInstance()=0
creates another instance of the same tooltip formatter
void x_AddGroupLocationRows(ITooltipFormatter &tooltip) const
void x_AddPositionRows(ITooltipFormatter &tooltip, TSeqPos at_p) const
Add position-specific (current cursor position) information.
void x_AddLocationRows(ITooltipFormatter &tooltip) const
Add feature location-related information.
void x_GetProductLengthRow(const objects::CSeq_feat &feat, TLens &lens) const
virtual void AddLinksTitle(const string &sTitle)=0
add a row with the links title
CRef< objects::CScope > m_Scope
void x_GetFeatureToolTip(ITooltipFormatter &tooltip, string &t_title, TSeqPos at_p=(TSeqPos) -1) const
static void TruncateLabel(string *label, unsigned length_limit, unsigned length_tolerance)
truncate the label to some specific length with a desired leven of precision algorithm tries to analy...
bool m_IsProductFeat
Flag to indicate if the feature is a feature projected from CDS product.
void x_GetSplicedSeqTitle(const SFeatSeg &seg, TSeqPos at_p, ITooltipFormatter &tooltip) const
CConstRef< objects::CSeq_loc > x_GetFeatLocation(const objects::CSeq_feat &feat, const objects::CBioseq_Handle &handle) const
virtual void AddLinkRow(const string &sTag, const string &sValue, unsigned valueColWidth=200)=0
add a row with two columns
TSeqFeatVector m_FeaturesGroup
void x_GetLocLengthRow(const objects::CSeq_loc &loc, const objects::CSeq_feat &feat, TLens &lens, const string &len_suffix) const
CConstRef< objects::CSeq_feat > m_Feat
SFeatSeg x_GetHitSeg(TSeqPos pos) const
CSeqUtils::TMappingInfo m_MappingInfo
virtual void AddSectionRow(const string &sContents)=0
add a section row
void SetMappingInfo(const CSeqUtils::TMappingInfo &mapping_info)
virtual void GetToolTip(ITooltipFormatter &tooltip, string &t_title, TSeqPos at_p=(TSeqPos) -1, bool *isGeneratedBySvc=NULL) const
Get tooltip.
void x_GetProductSequence(const SFeatSeg &seg, TSeqPos at_p, ITooltipFormatter &tooltip) const
TSeqPos x_GetProtOffset() const
string x_GetAccession() const
void x_AddExtraInfo(ITooltipFormatter &tooltip, TSeqPos at_p) const
virtual string GetSubtype() const
void x_GetGroupToolTip(ITooltipFormatter &tooltip, string &t_title, TSeqPos at_p=(TSeqPos) -1) const
virtual string GetLabel() const
virtual void Append(const ITooltipFormatter &tooltip)=0
appends another formatter to this one
virtual void GetLinks(ITooltipFormatter &links, bool no_ncbi_base) const
Get a set of links.
CConstRef< objects::CSeq_loc > m_Location
Mapped location in top sequence coordinate (can be set externally).
TSignedSeqPos x_ToFeature(TSeqPos pos) const
string x_GetProductLabel() const
TSeqRange m_Range
sequence
TSeqRange m_ProdRange
in nucleotide coord.
objects::CMappedFeat m_MappedFeat
static CGuiObjectInfoSeq_feat * CreateObject(SConstScopedObject &object, ICreateParams *params)
TSignedSeqPos x_ToProduct(TSeqPos pos) const
string GetLabel(const CSeq_id &id)
TRange GetTotalRange(void) const
const CSeq_id * GetId(void) const
Get the id of the location return NULL if has multiple ids or no id at all.
size_t GetSize(void) const
Get number of ranges.
TRange GetRange(void) const
Get the range.
ENa_strand GetStrand(void) const
@ eOrder_Biological
Iterate sub-locations in positional order.
CMappedFeat GetBestCdsForMrna(const CMappedFeat &mrna_feat, CFeatTree *feat_tree=0, const SAnnotSelector *base_sel=0)
@ fFGL_NoQualifiers
Leave out qualifiers.
@ fFGL_Content
Include its content if there is any.
TSeqPos GetLength(const CSeq_id &id, CScope *scope)
Get sequence length if scope not null, else return max possible TSeqPos.
ENa_strand GetStrand(const CSeq_loc &loc, CScope *scope=0)
Returns eNa_strand_unknown if multiple Bioseqs in loc Returns eNa_strand_other if multiple strands in...
string GetAccessionForId(const objects::CSeq_id &id, CScope &scope, EAccessionVersion use_version=eWithAccessionVersion, EGetIdType flags=0)
Retrieve the accession string for a Seq-id.
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.
@ fIs5PrimePartial
= 0x4 Translate first codon even if not start codon (because sequence is 5' partial)
const CSeq_annot_Handle & GetAnnot(void) const
Get handle to seq-annot for this feature.
TSeqPos GetBioseqLength(void) const
const string & GetName(void) const
CSeqVector GetSeqVector(EVectorCoding coding, ENa_strand strand=eNa_strand_plus) const
Get sequence: Iupacna or Iupacaa if use_iupac_coding is true.
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
const CSeq_loc & GetLocation(void) const
SAnnotSelector & IncludeNamedAnnotAccession(const string &acc, int zoom_level=0)
SAnnotSelector & AddNamedAnnots(const CAnnotName &name)
Add named annot to set of annots names to look for.
void GetSeqData(TSeqPos start, TSeqPos stop, string &buffer) const
Fill the buffer string with the sequence data for the interval [start, stop).
bool Empty(void) const THROWS_NONE
Check if CConstRef is empty – not pointing to any object which means having a null value.
bool IsNull(void) const THROWS_NONE
Check if pointer is null – same effect as Empty().
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
void Reset(void)
Reset reference object.
TObjectType & GetObject(void)
Get object.
TObjectType & GetObject(void) const
Get object.
position_type GetLength(void) const
TThisType & Set(position_type from, position_type to)
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
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 string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static string UIntToString(unsigned int value, TNumToStringFlags flags=0, int base=10)
Convert UInt to 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.
@ fWithCommas
Use commas as thousands separator.
static const char label[]
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
const TDesc & GetDesc(void) const
Get the Desc member data.
bool IsSetDesc(void) const
descriptive name Check if a value has been assigned to Desc data member.
const TStr & GetStr(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
bool IsStr(void) const
Check if variant Str is selected.
const TExts & GetExts(void) const
Get the Exts member data.
bool IsSeq(void) const
Check if variant Seq is selected.
bool IsCdregion(void) const
Check if variant Cdregion is selected.
list< CRef< CUser_object > > TExts
const TLocation & GetLocation(void) const
Get the Location member data.
bool IsGene(void) const
Check if variant Gene is selected.
TFrame GetFrame(void) const
Get the Frame member data.
const TData & GetData(void) const
Get the Data member data.
const TProduct & GetProduct(void) const
Get the Product member data.
bool IsSetExts(void) const
set of extensions; will replace 'ext' field Check if a value has been assigned to Exts data member.
const TGene & GetGene(void) const
Get the variant data.
vector< CRef< CGb_qual > > TQual
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 IsSetFrame(void) const
Check if a value has been assigned to Frame data member.
@ eFrame_three
reading frame
ENa_strand
strand of nucleic acid
bool IsInt(void) const
Check if variant Int is selected.
bool IsPnt(void) const
Check if variant Pnt is selected.
USING_SCOPE(objects)
structural variants
void initCGuiObjectInfoSeq_feat()
string s_GetRnaClass(const CRNA_ref &rna)
static float s_GetSupportTotal(const CSeq_feat &feat)
static const int kSeqTooltipLength
string s_GetSpliceSite(const CSeq_feat &feat)
static SAnnotSelector s_GetAnnotSelector(CSeqFeatData::ESubtype subtype, const CMappedFeat &feat)
static void text(MDB_val *v)
range(_Ty, _Ty) -> range< _Ty >
double value_type
The numeric datatype used by the parser.
Data structure for holding a feature segment.