コード例 #1
0
ファイル: Prot_ref.cpp プロジェクト: swuecho/igblast
static void s_InitializeECNumberMaps(void)
{
    CFastMutexGuard GUARD(s_ECNumberMutex);
    if (s_ECNumberMapsInitialized) {
        return;
    }
    string dir;
    const char* env_val = NULL;
    env_val = getenv("NCBI_ECNUM_USE_DATA_DIR_FIRST");
    if (env_val != NULL && NStr::EqualNocase(env_val, "TRUE"))
    {
        string file = g_FindDataFile("ecnum_specific.txt");
        if ( !file.empty() ) {
            dir = CDirEntry::AddTrailingPathSeparator(CDirEntry(file).GetDir());
        }
        if (dir.empty()) {
            ERR_POST_X(2, Info << "s_InitializeECNumberMaps: "
                       "falling back on built-in data.");
        }
    }
#define LOAD_EC(x) s_LoadECNumberTable \
    (dir, #x, kECNum_##x, sizeof(kECNum_##x) / sizeof(*kECNum_##x), \
     CProt_ref::eEC_##x)
    s_ECNumSpecificStatus = LOAD_EC(specific);
    s_ECNumAmbiguousStatus = LOAD_EC(ambiguous);
    s_ECNumReplacedStatus = LOAD_EC(replaced);
    s_ECNumDeletedStatus = LOAD_EC(deleted);
#undef LOAD_EC
    s_ECNumberMapsInitialized = true;
}
コード例 #2
0
static void s_InitializeECNumberMaps(void)
{
    CFastMutexGuard GUARD(s_ECNumberMutex);
    if (s_ECNumberMapsInitialized) {
        return;
    }
    string dir;
    {{
        string file = g_FindDataFile("ecnum_specific.txt");
        if ( !file.empty() ) {
            dir = CDirEntry::AddTrailingPathSeparator(CDirEntry(file).GetDir());
        }
    }}
    if (dir.empty()) {
        ERR_POST_X(2, Info << "s_InitializeECNumberMaps: "
                   "falling back on built-in data.");
    }
#define LOAD_EC(x) s_LoadECNumberTable \
    (dir, #x, kECNum_##x, sizeof(kECNum_##x) / sizeof(*kECNum_##x), \
     CProt_ref::eEC_##x)
    LOAD_EC(specific);
    LOAD_EC(ambiguous);
    LOAD_EC(replaced);
    LOAD_EC(deleted);
#undef LOAD_EC
    s_ECNumberMapsInitialized = true;
}
コード例 #3
0
ファイル: Suspect_rule_set.cpp プロジェクト: swuecho/igblast
static void s_InitializeOrganelleProductRules(void)
{
    CFastMutexGuard GUARD(s_OrganelleProductRulesMutex);
    if (s_OrganelleProductRulesInitialized) {
        return;
    }
    s_OrganelleProductRules.Reset(new CSuspect_rule_set());
    string file = g_FindDataFile("organelle_products.prt");

    if ( !file.empty() ) {
        auto_ptr<CObjectIStream> in;
        in.reset(CObjectIStream::Open(file, eSerial_AsnText));
        string header = in->ReadFileHeader();
        in->Read(ObjectInfo(*s_OrganelleProductRules), CObjectIStream::eNoFileHeader);
    }
    if (!s_OrganelleProductRules->IsSet()) {
        size_t num_lines = sizeof (s_Defaultorganelleproducts) / sizeof (char *);
        string all_rules = "";
        for (size_t i = 0; i < num_lines; i++) {
            all_rules += s_Defaultorganelleproducts[i];
        }
        CNcbiIstrstream istr(all_rules.c_str());
        istr >> MSerial_AsnText >> *s_OrganelleProductRules;
    }