STaxidTaxname {
84 const char* m_species;
85 const char* m_subspecies;
90{ 7955, {
"Danio",
"rerio",
""} },
91{ 8022, {
"Oncorhynchus",
"mykiss",
""} },
92{ 9606, {
"Homo",
"sapiens",
""} },
93{ 9615, {
"Canis",
"lupus",
"familiaris"} },
94{ 9838, {
"Camelus",
"dromedarius",
""} },
95{ 9913, {
"Bos",
"taurus",
""} },
96{ 9986, {
"Oryctolagus",
"cuniculus",
""} },
97{ 10090, {
"Mus",
"musculus",
""} },
98{ 10093, {
"Mus",
"pahari",
""} },
99{ 10094, {
"Mus",
"saxicola",
""} },
100{ 10096, {
"Mus",
"spretus",
""} },
101{ 10098, {
"Mus",
"cookii",
""} },
102{ 10105, {
"Mus",
"minutoides",
""} },
103{ 10116, {
"Rattus",
"norvegicus",
""} },
104{ 10117, {
"Rattus",
"rattus",
""} }
112 autoit = _cont.find(_key);
113 if(it == _cont.end())
116 if(_key != it->first && _key != it->second.m_alias)
119 returnit->second.m_groups;
125 autoit = _cont.find(_key);
126 if(it == _cont.end())
129 if(_key != it->first && _key != it->second.m_alias)
132_retval = it->second.m_tag;
140 if(
autoit = _cont.find(v); it != _cont.end()) {
141 if(it->second.m_alias == string_view(v))
142correct_caps = it->second.m_alias;
144correct_caps = it->first;
145 returnit->second.m_groups;
190 switch(
id.Which()) {
193 const string& db =
GetDb();
194 const string&
str=
id.GetStr();
195 if(
str.size() > db.size() &&
str[db.size()] ==
':' 220 const string& db =
GetDb();
232 boolfound = (group &
fSrc);
250 const string& db =
GetDb();
274 const string& db =
GetDb();
276 autoallowed = xFindStrict(db);
277 return(allowed & group);
283 returnsc_SkippableDbXrefs.find(
GetDb())
284!= sc_SkippableDbXrefs.end();
296 const string& db =
GetDb();
298 if(xGetStrict(db,
m_Type))
307correct_caps.clear();
313 const string& db =
GetDb();
317 autogroups = xFindCorrectCaps(db, caps);
331is_refseq = ((group &
fRefSeq) != 0);
332is_src = ((group &
fSrc) != 0);
334 returngroup !=
fNone;
350 staticconstexpr string_view
kFBan=
"http://www.fruitfly.org/cgi-bin/annot/fban?";
351 staticconstexpr string_view
kDictyPrim=
"http://dictybase.org/db/cgi-bin/gene_page.pl?primary_id=";
352 staticconstexpr string_view
kMiRBaseMat=
"http://www.mirbase.org/cgi-bin/mature.pl?mature_acc=";
353 staticconstexpr string_view
kMaizeGDBInt=
"https://www.maizegdb.org/cgi-bin/displaylocusrecord.cgi?id=";
354 staticconstexpr string_view
kMaizeGDBStr=
"https://www.maizegdb.org/cgi-bin/displaylocusrecord.cgi?term=";
355 staticconstexpr string_view
kHomdTax=
"http://www.homd.org/taxon=";
356 staticconstexpr string_view
kHomdSeq=
"http://www.homd.org/seq=";
368{
CDbtag::eDbtagType_ApiDB,
"http://www.apidb.org/apidb/showRecord.do?name=GeneRecordClasses.ApiDBGeneRecordClass&primary_key="},
383{
CDbtag::eDbtagType_FBOL,
"http://www.fungalbarcoding.org/BioloMICS.aspx?Table=Fungal%20barcodes&Fields=All&Rec="},
386{
CDbtag::eDbtagType_GABI,
"https://www.gabipd.org/database/cgi-bin/GreenCards.pl.cgi?Mode=ShowSequence&App=ncbi&SequenceId="},
417{
CDbtag::eDbtagType_OrthoMCL,
"http://orthomcl.org/orthomcl/showRecord.do?name=GroupRecordClasses.GroupRecordClass&group_name="},
423{
CDbtag::eDbtagType_Phytozome,
"https://phytozome.jgi.doe.gov/pz/portal.html#!results?search=0&crown=1&star=1&method=0&searchText="},
516 autofind_iter = sc_TaxIdTaxnameMap.find(taxid);
517 if( find_iter == sc_TaxIdTaxnameMap.end() ) {
520 constSTaxidTaxname & taxinfo = find_iter->second;
521 return GetUrl( taxinfo.m_genus, taxinfo.m_species, taxinfo.m_subspecies );
531 if( taxname_arg.empty() || taxname_arg.length() > kMaxLen ) {
536 stringtaxname = taxname_arg;
540 const charch = *str_iter;
551vector<string> taxname_parts;
554 if( taxname_parts.size() == 2 || taxname_parts.size() == 3 ) {
559genus = taxname_parts[0];
560species = taxname_parts[1];
562 if( taxname_parts.size() == 3 ) {
563subspecies = taxname_parts[2];
566 return GetUrl( genus, species, subspecies );
574 const string& species,
575 const string& subspecies)
const 577 autoit = sc_UrlMap.find(
GetType());
578 if(it == sc_UrlMap.end()) {
582 autoprefix = it->second;
585 boolnonInteger =
false;
590}
else if(
GetTag().IsId()) {
624string::const_iterator tag_iter =
tag.begin();
625 for( ; tag_iter !=
tag.end() && !
isdigit(*tag_iter) ; ++tag_iter ) {
629 tag=
tag.substr(num_skip);
661 if(
tag[0] ==
'g') {
671 tag+=
"%20%5BUniSTS%20ID%5D";
690}
else if(
GetTag().IsStr()) {
699 tag=
tag.substr(pos + 4);
701}
else if(!
isdigit((
unsigned char)
tag[0])) {
714 tag.insert(0,
"id=");
716 tag.insert(0,
"name=");
739num_alpha == 3 && num_digit == 5 )
741prefix =
"http://www.wormbase.org/search/protein/";
757 tag+=
"&decorator=influenza";
765 tag+=
"&decorator=vipr";
769 if( ! genus.empty() ) {
770 stringtaxname_url_piece = genus +
"+"+ species;
771 if( ! subspecies.empty() ) {
772taxname_url_piece +=
"+"+ subspecies;
776 "species=Homo+sapiens&",
777 "species="+ taxname_url_piece +
"&") +
784prefix =
"http://www.ebi.ac.uk/Tools/dbfetch/dbfetch?db=imgthla;id=";
790string::const_iterator tag_iter =
tag.begin();
793 if(*tag_iter ==
'P') {
795 if(*tag_iter ==
'_') {
796prefix =
"https://www.ncbi.nlm.nih.gov/protein/";
828 if( ! genus.empty() && ! species.empty() ) {
834 stringspc = species;
837abbrev =
gen.substr(0, 1) + spc.substr(0, 1);
839 tag+=
"&db="+ abbrev;
844 tag+=
"/#orthologs";
860 if(
tag.empty() )
return false;
862 if(
tag.length() >= 16)
return false;
870string::const_iterator tag_iter =
tag.begin();
874 for( ; tag_iter !=
tag.end() &&
isalpha(*tag_iter); ++tag_iter ) {
877 for( ; tag_iter !=
tag.end() && *tag_iter ==
'_'; ++tag_iter ) {
880 for( ; tag_iter !=
tag.end() &&
isdigit(*tag_iter) ; ++tag_iter ) {
883 if( tag_iter !=
tag.end() && *tag_iter !=
' '&& *tag_iter !=
'.') {
887 if(numUndersc > 1)
return false;
889out_num_alpha = numAlpha;
890out_num_digit = numDigits;
891out_num_unscr = numUndersc;
893 if(numUndersc == 0) {
894 if(numAlpha == 1 && numDigits == 5)
return true;
895 if(numAlpha == 2 && numDigits == 6)
return true;
896 if(numAlpha == 3 && numDigits == 5)
return true;
897 if(numAlpha == 4 && numDigits == 8)
return true;
898 if(numAlpha == 4 && numDigits == 9)
return true;
899 if(numAlpha == 5 && numDigits == 7)
return true;
900}
else if(numUndersc == 1) {
901 if(numAlpha != 2 || (numDigits != 6 && numDigits != 8 && numDigits != 9))
return false;
902 if(
tag[0] ==
'N'||
tag[0] ==
'X'||
tag[0] ==
'Z') {
903 if(
tag[1] ==
'M'||
915 if(
tag[0] ==
'A'||
tag[0] ==
'Y') {
916 if(
tag[1] ==
'P')
return true;
static constexpr string_view kDictyPrim
static constexpr string_view kHomdTax
static constexpr string_view kMaizeGDBInt
MAKE_CONST_SET(sc_SkippableDbXrefs, ct::tagStrNocase, { "BankIt", "NCBIFILE", "TMSMART" }) struct STaxidTaxname
static constexpr string_view kMaizeGDBStr
static constexpr auto sc_ApprovedTags
static constexpr string_view kHomdSeq
MAKE_CONST_MAP(sc_TaxIdTaxnameMap, TTaxId, STaxidTaxname, { { 7955, { "Danio", "rerio", "" } }, { 8022, { "Oncorhynchus", "mykiss", "" } }, { 9606, { "Homo", "sapiens", "" } }, { 9615, { "Canis", "lupus", "familiaris" } }, { 9838, { "Camelus", "dromedarius", "" } }, { 9913, { "Bos", "taurus", "" } }, { 9986, { "Oryctolagus", "cuniculus", "" } }, { 10090, { "Mus", "musculus", "" } }, { 10093, { "Mus", "pahari", "" } }, { 10094, { "Mus", "saxicola", "" } }, { 10096, { "Mus", "spretus", "" } }, { 10098, { "Mus", "cookii", "" } }, { 10105, { "Mus", "minutoides", "" } }, { 10116, { "Rattus", "norvegicus", "" } }, { 10117, { "Rattus", "rattus", "" } } }) namespace
static constexpr string_view kMiRBaseMat
static constexpr string_view kFBan
void GetLabel(string *label) const
EDbtagType GetType(void) const
static bool x_LooksLikeAccession(const string &tag, int &out_num_alpha, int &out_num_digit, int &out_num_unscr)
bool Match(const CDbtag &dbt2) const
const char * IsApprovedNoCase(EIsRefseq refseq=eIsRefseq_No, EIsSource is_source=eIsSource_No) const
string GetUrl(void) const
void InvalidateType(void)
bool SetAsMatchingTo(const CDbtag &dbt2)
int TDbtagGroup
holds bitwise OR of "EDbtagGroup"
@ eDbtagType_EnsemblGenomes_Gn
@ eDbtagType_EnsemblGenomes_Tr
@ eDbtagType_EnsemblRapid
@ eDbtagType_AceView_WormGenes
@ eDbtagType_UniProt_SwissProt
@ eDbtagType_PeptideAtlas
@ eDbtagType_RBGE_herbarium
@ eDbtagType_ApiDB_ToxoDB
@ eDbtagType_AllianceGenome
@ eDbtagType_PiroplasmaDB
@ eDbtagType_EnsemblGenomes
@ eDbtagType_UniProt_TrEMBL
@ eDbtagType_NCBIOrtholog
@ eDbtagType_ApiDB_CryptoDB
@ eDbtagType_MicrosporidiaDB
@ eDbtagType_ApiDB_PlasmoDB
bool GetDBFlags(bool &is_refseq, bool &is_src, string &correct_caps) const
bool IsApproved(EIsRefseq refseq=eIsRefseq_No, EIsSource is_source=eIsSource_No, EIsEstOrGss is_est_or_gss=eIsEstOrGss_No) const
int Compare(const CDbtag &dbt2) const
bool IsSkippable(void) const
int Compare(const CObject_id &oid2) const
static constexpr auto construct(init_type const(&init)[N])
Include a standard set of the NCBI C++ Toolkit most basic headers.
static void DLIST_NAME() remove(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static const char * str(char *buf, int n)
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
SStrictId_Tax::TId TTaxId
Taxon id type.
virtual bool Equals(const CSerialObject &object, ESerialRecursionMode how=eRecursive) const
Check if both objects contain the same values.
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,...
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
NCBI_NS_STD::string::size_type SIZE_TYPE
int Compare(const T &s1, const T &s2) const
Return difference between "s1" and "s2".
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 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 string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
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.
PNocase_Generic< string > PNocase
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 StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
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.
static string & ToLower(string &str)
Convert string to lower case â string& version.
@ fSplit_Tokenize
All delimiters are merged and trimmed, to get non-empty tokens only.
@ eNocase
Case insensitive compare.
static const char label[]
TTag & SetTag(void)
Assign a value to Tag data member.
const TTag & GetTag(void) const
Get the Tag member data.
bool CanGetDb(void) const
Check if it is safe to call GetDb method.
const TDb & GetDb(void) const
Get the Db member data.
TDb & SetDb(void)
Assign a value to Db data member.
const TStr & GetStr(void) const
Get the variant data.
std::false_type tagStrNocase
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