(num_row < 2)
returnaln_type;
92 for(
int row= 0;
row< num_row; ++
row) {
95 if( !handle )
continue;
120}
else if(this_type !=
type) {
127aln_type =
"protein";
130aln_type =
"protein-to-nucleotide";
134aln_type =
"nucleotide";
159 intf_subtype = (*feat_it)->GetData().GetSubtype();
173CSeqTable_column_info::GetTypeInfo_enum_EField_id();
214 if(type_iter != temp_types.
end()) {
215subtypes.
insert(
"gene_model");
216temp_types.
erase(type_iter);
222type_iter = temp_types.
find(subtype_iter->GetStoragekey());
223 if(type_iter != temp_types.
end()) {
224temp_types.
erase(type_iter);
230 if(*iter ==
"variation") {
231subtypes.
insert(
"dbVar");
233subtypes.
insert(
"dbSNP");
244 for( ; header_names && *header_names; ++header_names) {
245 if(headers.count(
string(*header_names)) == 0) {
255 static const char* graph_headers[] = {
256 "location-from",
"span",
"values",
NULL 262 static const char* bins_headers[] = {
263 "pos",
"pvalue",
"trait",
"pmids",
"reportedGenes",
264 "mappedGenes",
"snpId",
"trackType",
"clinSigID",
NULL 270 static const char* GWAS_headers[] = {
271 "pos",
"pvalue",
"trackType",
NULL 277 static const char* HapMap_headers[] = {
278 "pos",
"value",
"trackType",
NULL 310 if((*descrIter)->IsName()) {
311 info->m_DataId = (*descrIter)->GetName();
333feat_info->m_Subtype = *subtype_iter;
334info_list.push_back(feat_info);
336}
else if(annot.
IsAlign()) {
338 if( !aligns.empty() ) {
341 if( !aln_type.empty() ) {
342 info->m_Subtype = aln_type;
343info_list.push_back(
info);
346}
else if(annot.
IsGraph()) {
347 info->m_Subtype =
"graph";
348info_list.push_back(
info);
357 if( !subtypes.
empty() ) {
359info_list.push_back(
info);
365 if( !
info->m_Subtype.empty() ) {
366info_list.push_back(
info);
376 const string& subtype,
389 if(annot_type == align) {
390track_key =
"alignment_track";
392}
else if(annot_type ==
ftable) {
393 if(subtype ==
"gene_model") {
394track_key =
"gene_model_track";
395}
else if(subtype ==
"dbVar") {
396track_key =
"dbvar_track";
397}
else if(subtype ==
"dbSNP") {
398track_key =
"SNP_track";
400track_key =
"feature_track";
403}
else if(annot_type == graph) {
404 if(subtype ==
"graph") {
405track_key =
"graph_track";
406}
else if(subtype ==
"GWAS") {
407track_key =
"SNP_Bins_track";
409}
else if(annot_type == seq_table) {
410 if(subtype ==
"GWAS") {
411track_key =
"SNP_Bins_track";
412}
else if(subtype ==
"HapMap") {
413track_key =
"HapMapRR_track";
414}
else if(subtype ==
"SNP_bins") {
415track_key =
"SNP_bins_track";
416}
else if(subtype ==
"graph") {
417track_key =
"graph_track";
419track_key =
"feature_track";
423 if(subtype ==
"sequence") {
424track_key =
"sequence_track";
425}
else if(subtype ==
"six_frame") {
426track_key =
"six_frames_translation";
427}
else if(subtype ==
"segment_map") {
428track_key =
"segment_map_track";
454 LOG_POST(
Error<<
"Get error when trying to retrieve NA meta-data. Error: "<< e.
GetMsg());
542 boolisGetLinks)
const 555 GetNAMetaData(md_set, naas, filtering, pMDSource, pUidsSource, isGetLinks);
564 boolisGetLinks)
const 596 for(TEntrezIds::const_iterator it = uids.begin(); it != uids.end();) {
598 for(
size_t i=
kChunkSize;
i!= 0 && it != uids.end(); ++it, --
i)
600 if(canceledCallback && canceledCallback->
IsCanceled())
608 const string& naa)
const 620 if(md_set.
empty())
return;
623 if(iter != md_set.
end()) {
639 info->m_Dbname =
"SADB";
640 info->m_AnnotType =
data.m_AnnotType;
647feat_info->m_Subtype = *subtype_iter;
648track_info.push_back(feat_info);
650}
else if(
data.m_AnnotType == align) {
651 if(
data.m_Subtypes.empty()) {
666 if( !aln_type.empty() ) {
667 info->m_Subtype = aln_type;
668track_info.push_back(
info);
673}
else if(
data.m_Subtypes.size() == 1) {
674 info->m_Subtype = *
data.m_Subtypes.begin();
675track_info.push_back(
info);
678}
else if(
data.m_AnnotType == graph &&
data.m_Subtypes.size() < 2) {
679 if(
data.m_Subtypes.empty()) {
680 info->m_Subtype =
"graph";
682 info->m_Subtype = *
data.m_Subtypes.begin();
684track_info.push_back(
info);
685}
else if(
data.m_AnnotType == seq_table) {
686 if(
data.m_Subtypes.size() == 1) {
687 info->m_Subtype = *
data.m_Subtypes.begin();
688track_info.push_back(
info);
709 if( !subtypes.
empty() ) {
711track_info.push_back(
info);
717 if( !
info->m_Subtype.empty() ) {
718track_info.push_back(
info);
729 const TNAAs& naas)
const 741 if(md_set.
empty())
return;
760 return "nucleotide";
817 for(
auto i: uids_from) {
820 info+=
i.AsString();
855 if(query_key_str.empty() || web_env.empty())
864 LOG_POST(
Error<<
"Got error when trying to get NA id list for viewer_context: "<<
context<<
" and query_key: "<< query_key_str <<
". Error: "<< e.
GetMsg());
872 for(; ds_iter; ++ds_iter) {
875 if(c_i != ds_iter->end() && sum_i != ds_iter->end()) {
889 if(uids.size() == 0) {
904md_set[iCacheHit->second->m_Name] = iCacheHit->second;
907non_cached_uids.push_back(*iuids);
912 if(uids.size() == 0) {
915 if(non_cached_uids.size() > 0) {
916 if(non_cached_uids.size() == uids.size()) {
925 if(non_cached_uids.size() > 0) {
931+
". esummary.fcgi query for ";
933 for(
auto i: non_cached_uids) {
941 for(; ds_iter; ++ds_iter) {
944 if(c_i != ds_iter->end() && sum_i != ds_iter->end()) {
950 data->m_Id = a_i->get_value();
959 if(!
data->m_Id.empty())
961 TEntrezIduid(NStr::StringToNumeric<TEntrezId>(
data->m_Id));
973 catch(
constexception&) {
1004filtered_ids.push_back(*i_uids);
1007uids.swap(filtered_ids);
1011 #define USE_GI_CACHING 1012 #ifdef USE_GI_CACHING 1017 boolisMatch(
false);
1037EUidsSource* pUidsSource)
const 1040uids_from.push_back(uid);
1052 return!gis_to.empty() && gis_to[0] ==
m_Gi;
1055 LOG_POST(
Error<<
"Get error when trying to get GIs for NA uid: "<< uid <<
". Error: "<< e.
GetMsg());
1073 if(!
x_GetNAId(na_uid, naa, pUidsSource)) {
1101 if(!isIncremental) {
1110gis.
insert(iCacheHit->second.begin(), iCacheHit->second.end());
1120uids_from.push_back(uid);
1155 stringcontainer_path[] = {
"eLinkResult",
"LinkSet",
"LinkSetDb"};
1156 const intcontainer_path_length = 3;
1157 stringcontent_path[] = {
"Link",
"Id"};
1158 const intcontent_path_length = 2;
1162 boolfound =
false;
1166 if(container->
get_name() == container_path[cp++]) {
1168 for(; cp < container_path_length; ++cp) {
1170 for(it = container->
begin(); it != container->
end(); ++it) {
1183 for(it1 = container->
begin(); it1 != container->
end(); ++it1) {
1184 if(it1->
is_text())
continue;
1187 boolfound =
false;
1190 if(content->
get_name() == content_path[cp++]) {
1192 for(; cp < content_path_length; ++cp) {
1194 for(it2 = content->
begin(); it2 != content->
end(); ++it2) {
1208 if(!
id.
empty()) {
1209gis_to.push_back(NStr::StringToNumeric<TGi>(
id));
1214 std::sort(gis_to.begin(), gis_to.end());
1227 LOG_POST(
Error<<
"Get error when trying to get GIs for uid: "<< uid <<
". Error: "<< e.
GetMsg());
1239cached_gis.
insert(*i_gis_to);
1251 if(
x_GetNAId(uid, *inaas, pUidsSource)) {
1252uids.push_back(uid);
1270uid = iCacheHit->second;
1290ecli.
Search(
"seqannot", naa, uids);
1294 LOG_POST(
Error<<
"Get error when trying to search NAAs for: "<< naa <<
". Error: "<< e.
GetMsg());
1299 NCBI_ASSERT(uids.size() == 1,
"More that one uid is returned for NAA");
1324 if(
NStr::Equal(
i->get_name(),
"Algorithm-List"))
continue;
1326 stringnode_name =
i->get_name();
1327 if(node_name ==
"Descriptor") {
1330 data.m_Title = e_i->get_content();
1331}
else if(
NStr::Equal(e_i->get_name(),
"Comment")) {
1332 stringtmp_str = e_i->get_content();
1336 data.m_Descr = tmp_str;
1341 data.m_OtherName = a_i->get_value();
1342}
else if(
NStr::Equal(a_i->get_name(),
"scope")) {
1343 data.m_Scope = a_i->get_value();
1346 if(
data.m_Title.empty()) {
1350 else if(node_name ==
"Provider") {
1352 if(!
NStr::Equal(e_i->get_name(),
"Annot-chain"))
1354 data.m_AnnotChain = e_i->get_content();
1357}
else if(node_name ==
"XClass") {
1360 data.m_xClass = a_i->get_value();
1364}
else if(node_name ==
"Properties") {
1367 stringe_name = e_i->get_name();
1368 if(e_name ==
"TargetAssembly") {
1371 data.m_AssmAcc = a_i->get_value();
1374}
else if(e_name ==
"LinkList") {
1376 if( !
NStr::Equal(ln_i->get_name(),
"Link") ) {
1381 if(
NStr::Equal(url_entrez_i->get_name(),
"URL_Link")) {
1384 label= lln_i->get_content();
1385}
else if(
NStr::Equal(lln_i->get_name(),
"URL")) {
1386url = lln_i->get_content();
1389}
else if(
NStr::Equal(url_entrez_i->get_name(),
"Entrez_Link")) {
1395 label= lln_i->get_content();
1396}
else if(
NStr::Equal(lln_i->get_name(),
"ID")) {
1397url = lln_i->get_content();
1400 if( !
label.empty() && !url.empty() ) {
1401url =
"https://www.ncbi.nlm.nih.gov/"+
1405 if( !
label.empty() && !url.empty() ) {
1413}
else if(node_name ==
"Content") {
1419 stringe_name = e_i->get_name();
1420 if(e_name ==
"Annot") {
1423annot_types.
insert(a_i->get_value());
1431 data.m_Subtypes.insert(
string(a_i->get_value()));
1439 if( !
data.m_Subtypes.empty() ) {
1446vector<string> priorytized_types;
1447priorytized_types.push_back(
1449priorytized_types.push_back(
1451priorytized_types.push_back(
1454 ITERATE(vector<string>, type_iter, priorytized_types) {
1456 if(at_iter != annot_types.
end()) {
1457 data.m_AnnotType = *type_iter;
1471uids_from.push_back(NStr::StringToNumeric<TEntrezId>(
data.m_Id));
1482 LOG_POST(
Error<<
"Get error when trying to get Entrez links for NA id: "<<
data.m_Id <<
". Error: "<< e.
GetMsg());
1488 for(itLinkInfo = nodes.
begin(); itLinkInfo != nodes.
end(); ++itLinkInfo) {
1489 const stringhtml_tag(itLinkInfo->
find(
"HtmlTag")->
get_content());
1491 const stringlink_name(itLinkInfo->
find(
"LinkName")->
get_content());
1493 if(db_to ==
"nuccore")
1503 LOG_POST(
Error<<
"Get error when trying to get Entrez links for link name: "<< link_name <<
". Error: "<< e.
GetMsg());
1507 stringlink(
"https://www.ncbi.nlm.nih.gov/");
1511 if(c_link->second == link) {
1512 data.m_Links.erase(c_link);
1516 data.m_Links[html_tag] = link;
static CRef< CScope > m_Scope
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
void SetMaxReturn(int ret_max)
Uint8 Search(const string &db, const string &term, vector< objects::CSeq_id_Handle > &uids, const string &xml_path=kEmptyStr)
void Summary(const string &db, const vector< objects::CSeq_id_Handle > &uids, xml::document &docsums, const string &version="")
CConfigurableItems - a static list of items that can be configured.
string GetStoragekey(int type, int subtype) const
Get the key used to store this type of feature.
help class for iterating through the NA DocSum one by one.
CNADocSumIterator(const CNAUtils::TEntrezIds &uids, const int max_nas)
xml::node::const_iterator operator->() const
xml::node::const_iterator m_Iter
unique_ptr< xml::document > m_Doc
xml::node::const_iterator m_DocSumRoot
const xml::node & operator*() const
static const CFeatList * GetFeatList()
TDim CheckNumRows(void) const
Validatiors.
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
bool IsSeq_table(void) const
bool IsFtable(void) const
Data structure for holding basic data track information.
Interface for testing cancellation request in a long lasting operation.
container_type::const_iterator const_iterator
const_iterator end() const
const_iterator find(const key_type &key) const
iterator_bool insert(const value_type &val)
const_iterator begin() const
const_iterator find(const key_type &key) const
const_iterator end() const
The xml::attributes class is used to access all the attributes of one xml::node.
The xml::document class is used to hold the XML tree and various bits of information about it.
const node & get_root_node(void) const
Get a reference to the root node of this document.
The xml::node::const_iterator provides a way to access children nodes similar to a standard C++ conta...
The xml::node_set::const_iterator class is used to iterate over nodes in a node set.
The xml::node_set class is used to store xpath query result set.
iterator begin()
Get an iterator that points to the beginning of the xpath query result node set.
bool empty() const
Inform if the xpath query result node set is empty.
iterator end()
Get an iterator that points one past the last node in the xpath query result node set.
The xml::node class is used to hold information about one XML node.
bool is_text(void) const
Find out if this node is a text node or sometiming like a text node, CDATA for example.
const char * get_name(void) const
Get the name of this xml::node.
iterator end(void)
Get an iterator that points one past the last child for this node.
iterator find(const char *name, const ns *nspace=NULL)
Find the first child node that has the given name and namespace.
iterator begin(void)
Get an iterator that points to the beginning of this node's children.
node_set run_xpath_query(const xpath_expression &expr)
Run the given XPath query.
const char * get_content(void) const
Get the content for this text node.
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
SStrictId_Entrez::TId TEntrezId
TEntrezId type for entrez ids which require the same strictness as TGi.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
#define NCBI_ASSERT(expr, mess)
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
void Error(CExceptionArgs_Base &args)
const string & GetMsg(void) const
Get message string.
const string & FindName(TEnumValueType value, bool allowBadValue) const
Find name of the enum by its numeric value.
void x_SearchNAIds(TEntrezIds &uids, const TNAAs &naas, bool filtering, EUidsSource *pUidsSource=NULL) const
Search all NAAs for a given term.
static void GetColumnHeader(set< string > &headers, const objects::CSeq_annot &annot)
Collect all column header names for a given seq-table.
static void ELinkQuery(const string &db_from, const string &db_to, const TEntrezIds &uids_from, TEntrezIds &uids_to, const string &cmd="neighbor", const string &xpath="//Link/Id/text()")
Queries elink.fcgi with a vector of uids/seq-ids (seq-ids preferred for future compatibility) and ret...
TGi m_Gi
GI of m_TargetSeq; it may be ZERO_GI for one of two reasons: either a target seq is not given at all ...
CTrackInfo::TTrackInfoList TTrackInfoList
objects::CBioseq_Handle m_BioseqHandle
Derived values which make sense only if m_TargetSeq is set.
static TNAAtoUidCache sm_NAAtoUidCache
static void ESearchQuery(const string &db, const string &term, TEntrezIds &uids, size_t &count, const int ret_max, const string &xpath="//IdList/Id/text()")
Queries esearch.fcgi and returns a vector of uids/seq-ids (seq-ids preferred for future compatibility...
void x_FilterNAIds(TEntrezIds &uids, EUidsSource *pUidsSource=NULL) const
filter a given list of NA uids and keep only the ones that are related to a given gi (m_GI)
EMetaDataSource
source of obtained NA metadata were internal caches hit, partially hit or totally missed during some ...
EEntrezDB m_SeqDB
Entrez db name for m_TargetSeq: nucleotide/protein or Undef if no TargetSeq is given.
void x_GetAllNAIdsWithContext(TEntrezIds &uids, const string &context) const
get all available NA ids applied to a viewer context for a given gi.
static void GetAllGIs(const TNAA &naa, EEntrezDB eedb, TGis &gis, EUidsSource *pUidsSource=NULL)
string TNAA
typedefs for NAA meta-data
void x_GetNAIds(TEntrezIds &uids, const string &context="") const
Get all available NA uids w/wo a context.
void GetNAMetaData(TNAMetaDataSet &md_set, const string &na, bool filtering=false, EMetaDataSource *pMDSource=NULL, EUidsSource *pUidsSource=NULL, bool isGetLinks=true) const
Get meta-data for a specific NA.
vector< objects::CSeq_id_Handle > TSeqIdHandles
static TEntrezIdtoGiCache sm_UidtoGiCache
static string GetAnnotName(const objects::CSeq_annot_Handle &annot_handle)
CRef< objects::CScope > m_Scope
Scope helping resolve sequences and retrieve annotations.
void x_Init()
Initialize some internal states.
static string GetAlignType(const objects::CSeq_align &align, objects::CScope &scope)
Get alignment type.
void GetAllNAMetaData(TNAMetaDataSet &md_set, const string &context="", ICanceled *canceledCallback=0) const
Get meta-data for a given NAA associated with seq_id.
void x_GetNAMetaData(TNAMetaDataSet &md_set, const TEntrezIds &uids, bool isGetLinks, EMetaDataSource *pSource=NULL) const
Retrieve NA meta data for a list of NA uids.
static void FeatSubtypes2TrackSubtypes(set< string > &subtypes, const set< string > &feat_subtypes)
Convert feature subtypes to track subtypes.
static const string & GetUnnamedAnnot()
Get the commonly used symbol representing a unnnamed annotation.
void x_GetAllNAIds(TEntrezIds &uids) const
get all available NA uids for a given gi.
static string GetSeqTableSubtype(const set< string > &headers)
Guess the track subtype based on seq-table headers.
static bool IsGeneModelFeature(int type, int subtype)
Does feature belong to gene model track Gene, RNA, cdregion, exon, C_region, and VDJ segments.
static string CreateIdStr(const vector< T > &uids)
Convert a list of ids into a comma-delimited string.
static string GetAnnotComment(const objects::CSeq_annot_Handle &annot_handle)
static void DataType2TrackType(const string &annot_type, const string &subtype, string &track_key, string &subkey)
Map data type to track type.
objects::CSeq_id_Handle m_SeqIdHandle
sequence handles
static bool GetAnnotShown(const objects::CSeq_annot &annot)
static CTrackInfo::TTrackInfoList GetTrackInfo(objects::CSeq_annot_Handle annot_handle)
Get data track information from a seq-annot.
static bool x_GetNAId(TEntrezId &uid, const string &naa, EUidsSource *pUidsSource=NULL)
get an id for a given NAA string returns false if no id is found
void x_GetNAEntrezLinks(CAnnotMetaData &data) const
Retrieve Entrez links for a given NA.
CSeqUtils::TEntrezIds TEntrezIds
int m_MaxNAMeta
maximal number of NAAs for retrieving meta-data.
static TEntrezIdtoMetaDataCache sm_UidtoMetaDataCache
void GetNATrackInfo(TTrackInfoList &track_info, const string &naa) const
Do data track discovery for a given NA.
bool x_NAIdMatchesGI(TEntrezId uid, EUidsSource *pUidsSource=NULL) const
returns true if an uid is related to a given gi (m_GI) or GI is ZERO_GI
void x_GetNAAs(TNAAs &naas, const TEntrezIds &uids) const
Retrieve NAAs for a list of NA uids.
EEntrezDB
eutils databases that can be used
static void x_GetAllGIs(TEntrezId uid, EEntrezDB eedb, TGis &gis, EUidsSource *pUidsSource=NULL, bool isIncremental=false)
get all GIs for a given uid this needs a given database where to search for GIs
static void GetFeatSubtypes(const objects::CSeq_annot &annot, set< string > &subtypes)
Collect unique list of feature subtypes for all features in a seq-annot.
list< CRef< CTrackInfo > > TTrackInfoList
void GetAllNAAs(TNAAs &naas, const string &context="") const
Get a list of NAAs associated with the target sequence.
CConstRef< objects::CSeq_id > m_TargetSeq
The target sequence associating with the NAAs.
void x_ParseNAMetaData(CAnnotMetaData &data, const char *xml_str) const
Parse the meta-data xml DocSum.
@ EUidsSource_EmptyRequest
@ EMetaDataSource_EmptyRequest
@ EMetaDataSource_EmptyAfterFilteringRequest
@ EEDB_All
try both nucleotide and protein databases, merge results
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,...
@ eGetId_ForceGi
return only a gi-based seq-id
static CRef< CObjectManager > GetInstance(void)
Return the existing object manager or create one.
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
TBioseqCore GetBioseqCore(void) const
Get bioseq core structure.
CConstRef< CSeq_annot > GetCompleteSeq_annot(void) const
Complete and return const reference to the current seq-annot.
CScope & GetScope(void) const
Get scope this handle belongs to.
SAnnotSelector & IncludeNamedAnnotAccession(const string &acc, int zoom_level=0)
SAnnotSelector & SetCollectNames(bool value=true)
Collect available annot names rather than annots.
SAnnotSelector & IncludeAnnotType(TAnnotType type)
Include annotation type in the search.
SAnnotSelector & SetMaxSize(TMaxSize max_size)
Set maximum number of annotations to find.
SAnnotSelector & AddNamedAnnots(const CAnnotName &name)
Add named annot to set of annots names to look for.
void Reset(void)
Reset reference object.
static TThisType GetWhole(void)
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
virtual bool IsCanceled(void) const =0
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static string & Replace(const string &src, const string &search, const string &replace, string &dst, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a 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.
void Stop(void)
Suspend the timer.
string AsSmartString(CTimeSpan::ESmartStringPrecision precision, ERound rounding, CTimeSpan::ESmartStringZeroMode zero_mode=CTimeSpan::eSSZ_SkipZero) const
Transform elapsed time to "smart" string.
void Start(void)
Start the timer.
static const char label[]
TField_id GetField_id(void) const
Get the Field_id member data.
const TColumns & GetColumns(void) const
Get the Columns member data.
bool IsSetFeat_subtype(void) const
subtype of features in this table, defined in header SeqFeatData.hpp Check if a value has been assign...
bool CanGetField_name(void) const
Check if it is safe to call GetField_name method.
TFeat_subtype GetFeat_subtype(void) const
Get the Feat_subtype member data.
vector< CRef< CSeqTable_column > > TColumns
const TField_name & GetField_name(void) const
Get the Field_name member data.
bool CanGetField_id(void) const
Check if it is safe to call GetField_id method.
const Tdata & Get(void) const
Get the member data.
const TInst & GetInst(void) const
Get the Inst member data.
list< CRef< CSeq_align > > TAlign
const TDesc & GetDesc(void) const
Get the Desc member data.
bool IsSetDesc(void) const
used only for stand alone Seq-annots Check if a value has been assigned to Desc data member.
TMol GetMol(void) const
Get the Mol member data.
const TAlign & GetAlign(void) const
Get the variant data.
static string SelectionName(E_Choice index)
Retrieve selection name (for diagnostic purposes).
const TSeq_table & GetSeq_table(void) const
Get the variant data.
const TFtable & GetFtable(void) const
Get the variant data.
list< CRef< CSeq_feat > > TFtable
bool IsFtable(void) const
Check if variant Ftable is selected.
const TData & GetData(void) const
Get the Data member data.
E_Choice Which(void) const
Which variant is currently selected.
list< CRef< CAnnotdesc > > Tdata
@ eMol_na
just a nucleic acid
DEFINE_CLASS_STATIC_FAST_MUTEX(CNAUtils::sm_NAAtoUidCacheMutex)
static string s_MakeUidtoGiCacheKey(TEntrezId uid, CNAUtils::EEntrezDB eedb)
static const char * kSnpSubtypeStr
static string s_EEDBToString(CNAUtils::EEntrezDB eedb)
static bool s_MatchHeaders(const char **header_names, const set< string > &headers)
static string s_GetFeatSubtypeStr(int subtype)
constexpr auto sort(_Init &&init)
constexpr bool empty(list< Ts... >) noexcept
const struct ncbi::grid::netcache::search::fields::SIZE size
const struct ncbi::grid::netcache::search::fields::SUBKEY subkey
#define row(bind, expected)
static CS_CONTEXT * context
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