prosite.cpp

来自「ncbi源码」· C++ 代码 · 共 160 行

CPP
160
字号
/* * =========================================================================== * PRODUCTION $Log: prosite.cpp,v $ * PRODUCTION Revision 1000.2  2004/06/01 20:55:35  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4 * PRODUCTION * =========================================================================== *//*  $Id: prosite.cpp,v 1000.2 2004/06/01 20:55:35 gouriano Exp $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Authors:  Josh Cherry * * File Description:  Class for handling prosite-format pattern databases * */#include <ncbi_pch.hpp>#include "prosite_entry.hpp"#include "prosite.hpp"BEGIN_NCBI_SCOPE// this function reads a stream in the format of prosite.dat and// APPENDS prosite entries to the vector of entries it's handedvoid CProsite::ReadEntries(istream& input, vector<CPrositeEntry>& entries){    string line;    CPrositeEntry entry;    char buffer[4096];    while (input.getline(buffer, 4096)) {        line = buffer;        string ltype = line.substr(0, 2);        if (ltype == "ID") {            entry.SetId(line.substr(5));        } else if (ltype == "DE") {            entry.SetDesc(line.substr(5));        } else if (ltype == "DO") {            entry.SetDoc(line.substr(5));        } else if (ltype == "AC") {            entry.SetAccession(line.substr(5));        } else if (ltype == "PA") {            entry.SetPattern() += line.substr(5);        } else if (ltype == "CC") {            if (line.length() >= 5) {                if (line.substr(5) == "/SKIP-FLAG=TRUE;") {                    entry.SetSkipFlag(1);                }            }        } else if (ltype == "//") {            if (!entry.GetPattern().empty()) {                // get rid of the ending '.' in pattern                string& pa = entry.SetPattern();                pa.erase(pa.length() - 1);                // save the entry                entries.push_back(entry);            }            entry.Reset();        }    }}string CProsite::PSPatternToPCRE(const string& pat){    list<string> l;    string re;    // get elements between the -'s    NStr::Split(pat, "-", l);    ITERATE (list<string>, iter, l) {        re += x_ElementConvert(*iter);    }    return re;}string CProsite::x_ElementConvert(const string& el){    string rv;    for(unsigned int i = 0;  i < el.length();  i++) {        switch (char ch = el[i]) {        case '{':            rv += "[^";            break;        case '}':            rv += ']';            break;        case '(':            rv += '{';            break;        case ')':            rv += '}';            break;        case 'x': case 'X':            rv += '.';            break;        case '<':            rv += '^';            break;        case '>':            rv += '$';            break;        default:            rv += ch;        }    }    return rv;}END_NCBI_SCOPE/* * =========================================================================== * $Log: prosite.cpp,v $ * Revision 1000.2  2004/06/01 20:55:35  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4 * * Revision 1.4  2004/05/21 22:27:47  gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.3  2004/01/27 18:38:07  dicuccio * Code clean-up.  Use standard names for plugins.  Removed unnecessary #includes * * Revision 1.2  2003/08/15 20:24:47  jcherry * Sped up reading of prosite data file * * Revision 1.1  2003/08/04 20:05:45  jcherry * Initial version * * =========================================================================== */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?