79 for(TDb::const_iterator
i = lDbTags.begin();
99 for(TDb::iterator
i = lDbTags.begin();
114 SetDb().push_back( ref );
183 if (pos == string::npos) {
186 taxname = taxname.substr(pos + 1);
189 if (pos == string::npos) {
192 taxname = taxname.substr(pos + 1);
206 size_t value_len =
value.length();
207 while (pos != string::npos
208 && ( ( (pos != 0 &&
isalpha (taxname.c_str()[pos - 1]))
209 ||
isalpha (taxname.c_str()[pos + value_len])))) {
212 if (pos == string::npos) {
237 && (*it)->IsSetSubname() && !
NStr::IsBlank((*it)->GetSubname())
261 #define MAKE_COMMON(o1,o2,o3,Field) if (o1.IsSet##Field() && o2.IsSet##Field() && NStr::Equal(o1.Get##Field(), o2.Get##Field())) o3.Set##Field(o1.Get##Field());
265 ITERATE(list< string >, it1, list1) {
267 ITERATE(list< string >, it2, list2) {
274 list3.push_back(*it1);
284 if (taxid1 != taxid2) {
298 if (common->
GetMod().empty()) {
306 if (common->
GetSyn().empty()) {
316 if ((*it1)->Equals(**it2)) {
324 common->
SetDb().push_back(add);
349 #include "common_tax.inc"
353 vector<string> tokens;
355 if (tokens.size() != 8) {
395 taxon->
SetDb(
"taxon");
397 org->
SetDb().push_back(taxon);
424 LOG_POST(
"Reading from " +
file +
" for popular organisms.");
429 LOG_POST(
"Falling back on built-in data for popular organisms.");
433 size_t num_orgrefs =
sizeof(kOrgRefList) /
sizeof(
char *);
434 for (
size_t i = 0;
i < num_orgrefs;
i++) {
435 const char *p = kOrgRefList[
i];
441 }
while (!lr->
AtEOF());
469 if (
lookup->IsSetGcode()) {
472 if (
lookup->IsSetMgcode()) {
475 if (
lookup->IsSetDivision()) {
481 if ((*it)->IsSetDb() &&
483 (*it)->GetTag().IsId() &&
485 taxid = (*it)->GetTag().GetId();
493 if (
lookup->IsSetLineage()) {
515 #define NO_FLAG(a,f) (( a & f ) == 0)
539 for(TDb::iterator
i = lDbTags.begin();
i != lDbTags.end(); ) {
541 i = lDbTags.erase(
i );
bool s_FindWholeWord(string taxname, string value)
static const string s_nomenclature
static TOrgrefMap s_OrgRefMap
static void s_ProcessOrgRefMapLine(const CTempString &line)
static bool s_OrgRefMapInitialized
void s_MakeCommonStringList(const list< string > &list1, const list< string > &list2, list< string > &list3)
static vector< string > s_CommonTaxnameList
static void s_InitializeOrgRefMap(void)
map< string, CRef< COrg_ref >, PNocase > TOrgrefMap
DEFINE_STATIC_FAST_MUTEX(s_OrgRefMapMutex)
static const char *const s_taxonName
#define MAKE_COMMON(o1, o2, o3, Field)
unsigned int RemoveModBySubtype(COrgMod::ESubtype to_remove)
CRef< COrgName > MakeCommon(const COrgName &other) const
void EnableModifierForwarding()
bool IsModifierForwardingDisabled() const
void GetLabel(string *label) const
const string & GetLineage(void) const
static CConstRef< COrg_ref > TableLookup(const string &taxname)
unsigned int fOrgref_parts
const string & GetDivision(void) const
TTaxId SetTaxId(TTaxId tax_id)
CRef< COrg_ref > MakeCommon(const COrg_ref &other) const
int GetPgcode(void) const
bool IsSetDivision(void) const
bool HasValidVariety() const
bool IsSetPgcode(void) const
bool IsSetGcode(void) const
bool IsSetMgcode(void) const
int GetMgcode(void) const
void FilterOutParts(fOrgref_parts to_remain)
string x_GetTaxnameAfterFirstTwoWords() const
static const vector< string > & GetTaxnameList()
bool IsVarietyValid(const string &variety) const
bool IsSetOrgMod(void) const
bool IsSubspeciesValid(const string &subspecies) const
bool IsSetLineage(void) const
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
container_type::iterator iterator
const_iterator end() const
const_iterator find(const key_type &key) const
static int lookup(const char *name, const struct lookup_int *table)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define TAX_ID_TO(T, tax_id)
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
SStrictId_Tax::TId TTaxId
Taxon id type.
#define TAX_ID_FROM(T, value)
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
#define NCBI_CATCH(message)
Catch CExceptions as well This macro is deprecated - use *_X or *_XX variant instead of it.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
virtual bool Equals(const CSerialObject &object, ESerialRecursionMode how=eRecursive) const
Check if both objects contain the same values.
static CRef< ILineReader > New(const string &filename)
Return a new ILineReader object corresponding to the given filename, taking "-" (but not "....
virtual bool AtEOF(void) const =0
Indicates (negatively) whether there is any more input.
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,...
bool Empty(void) const THROWS_NONE
Check if CRef is empty – not pointing to any object, which means having a null value.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static int StringToNonNegativeInt(const CTempString str, TStringToNumFlags flags=0)
Convert string to non-negative integer value.
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 spaces in a string (in-place)
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 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 const char label[]
void SetTag(TTag &value)
Assign a value to Tag data member.
void SetDb(const TDb &value)
Assign a value to Db data member.
void ResetDiv(void)
Reset Div data member.
void ResetMod(void)
Reset Mod data member.
void ResetAttrib(void)
Reset Attrib data member.
bool IsSetDb(void) const
ids in taxonomic or culture dbases Check if a value has been assigned to Db data member.
TCommon & SetCommon(void)
Assign a value to Common data member.
const TLineage & GetLineage(void) const
Get the Lineage member data.
bool IsSetPgcode(void) const
plastid genetic code Check if a value has been assigned to Pgcode data member.
const TDiv & GetDiv(void) const
Get the Div member data.
void ResetMgcode(void)
Reset Mgcode data member.
void ResetLineage(void)
Reset Lineage data member.
TMgcode GetMgcode(void) const
Get the Mgcode member data.
TGcode GetGcode(void) const
Get the Gcode member data.
void SetCommon(const TCommon &value)
Assign a value to Common data member.
bool IsSetCommon(void) const
common name Check if a value has been assigned to Common data member.
TDb & SetDb(void)
Assign a value to Db data member.
virtual void Reset(void)
Reset the whole object.
void ResetSyn(void)
Reset Syn data member.
bool IsSetLineage(void) const
lineage with semicolon separators Check if a value has been assigned to Lineage data member.
vector< CRef< CDbtag > > TDb
bool IsSetMod(void) const
unstructured modifiers Check if a value has been assigned to Mod data member.
void SetDiv(const TDiv &value)
Assign a value to Div data member.
TSyn & SetSyn(void)
Assign a value to Syn data member.
TOrgname & SetOrgname(void)
Assign a value to Orgname data member.
const TTaxname & GetTaxname(void) const
Get the Taxname member data.
bool IsSetMgcode(void) const
mitochondrial genetic code Check if a value has been assigned to Mgcode data member.
void ResetGcode(void)
Reset Gcode data member.
void ResetTaxname(void)
Reset Taxname data member.
const TCommon & GetCommon(void) const
Get the Common member data.
const TDb & GetDb(void) const
Get the Db member data.
void ResetPgcode(void)
Reset Pgcode data member.
const TSyn & GetSyn(void) const
Get the Syn member data.
bool IsSetDiv(void) const
GenBank division code Check if a value has been assigned to Div data member.
void SetTaxname(const TTaxname &value)
Assign a value to Taxname data member.
bool IsSetMod(void) const
Check if a value has been assigned to Mod data member.
void ResetCommon(void)
Reset Common data member.
void ResetMod(void)
Reset Mod data member.
list< CRef< COrgMod > > TMod
void ResetOrgname(void)
Reset Orgname data member.
void SetGcode(TGcode value)
Assign a value to Gcode data member.
void SetMgcode(TMgcode value)
Assign a value to Mgcode data member.
bool IsSetAttrib(void) const
attribution of name Check if a value has been assigned to Attrib data member.
void ResetDb(void)
Reset Db data member.
bool IsSetOrgname(void) const
Check if a value has been assigned to Orgname data member.
bool IsSetTaxname(void) const
preferred formal name Check if a value has been assigned to Taxname data member.
void ResetName(void)
Reset Name data member.
TMod & SetMod(void)
Assign a value to Mod data member.
bool IsSetGcode(void) const
genetic code (see CdRegion) Check if a value has been assigned to Gcode data member.
void SetOrgname(TOrgname &value)
Assign a value to Orgname data member.
const TMod & GetMod(void) const
Get the Mod member data.
bool IsSetSyn(void) const
synonyms for taxname or common Check if a value has been assigned to Syn data member.
TPgcode GetPgcode(void) const
Get the Pgcode member data.
bool IsSetName(void) const
Check if a value has been assigned to Name data member.
void SetLineage(const TLineage &value)
Assign a value to Lineage data member.
const TOrgname & GetOrgname(void) const
Get the Orgname member data.
const GenericPointer< typename T::ValueType > T2 value
string g_FindDataFile(const CTempString &name, CDirEntry::EType type=CDirEntry::eFile)
Look for an NCBI application data file or directory of the given name and type; in general,...