⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 seq_id_tree.hpp

📁 ncbi源码
💻 HPP
📖 第 1 页 / 共 2 页
字号:
/* * =========================================================================== * PRODUCTION $Log: seq_id_tree.hpp,v $ * PRODUCTION Revision 1000.1  2004/04/12 17:28:34  gouriano * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.5 * PRODUCTION * =========================================================================== */#ifndef OBJECTS_OBJMGR___SEQ_ID_TREE__HPP#define OBJECTS_OBJMGR___SEQ_ID_TREE__HPP/*  $Id: seq_id_tree.hpp,v 1000.1 2004/04/12 17:28:34 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.** ===========================================================================** Author: Aleksey Grichenko, Eugene Vasilchenko** File Description:*   Seq-id mapper for Object Manager**/#include <corelib/ncbiobj.hpp>#include <corelib/ncbimtx.hpp>#include <corelib/ncbistr.hpp>#include <corelib/ncbi_limits.hpp>#include <objects/general/Date.hpp>#include <objects/general/Dbtag.hpp>#include <objects/general/Object_id.hpp>#include <objects/biblio/Id_pat.hpp>#include <objects/seqloc/Seq_id.hpp>#include <objects/seqloc/PDB_mol_id.hpp>#include <objects/seqloc/PDB_seq_id.hpp>#include <objects/seqloc/Patent_seq_id.hpp>#include <objects/seqloc/Giimport_id.hpp>#include <objects/seqloc/Textseq_id.hpp>#include <objmgr/seq_id_handle.hpp>#include <vector>#include <set>#include <map>BEGIN_NCBI_SCOPEBEGIN_SCOPE(objects)class CSeq_id;class CSeq_id_Handle;class CSeq_id_Info;class CSeq_id_Mapper;class CSeq_id_Which_Tree;////////////////////////////////////////////////////////////////////////  CSeq_id_***_Tree::////    Seq-id sub-type specific trees//// Base class for seq-id type-specific treesclass NCBI_XOBJMGR_EXPORT CSeq_id_Which_Tree : public CObject{public:    // 'ctors    CSeq_id_Which_Tree(void);    virtual ~CSeq_id_Which_Tree(void);    static void Initialize(vector<CRef<CSeq_id_Which_Tree> >& v);    virtual bool Empty(void) const = 0;    // Find exaclty the same seq-id    virtual CSeq_id_Handle FindInfo(const CSeq_id& id) const = 0;    virtual CSeq_id_Handle FindOrCreate(const CSeq_id& id) = 0;    virtual CSeq_id_Handle GetGiHandle(int gi);    virtual void DropInfo(const CSeq_id_Info* info);    typedef set<CSeq_id_Handle> TSeq_id_MatchList;    // Get the list of matching seq-id.    virtual bool HaveMatch(const CSeq_id_Handle& id) const;    virtual void FindMatch(const CSeq_id_Handle& id,                           TSeq_id_MatchList& id_list) const = 0;    virtual void FindMatchStr(string sid,                              TSeq_id_MatchList& id_list) const = 0;    virtual bool IsBetterVersion(const CSeq_id_Handle& h1,                                 const CSeq_id_Handle& h2) const;    // Reverse matching    virtual bool HaveReverseMatch(const CSeq_id_Handle& id) const;    virtual void FindReverseMatch(const CSeq_id_Handle& id,                                  TSeq_id_MatchList& id_list);protected:    friend class CSeq_id_Mapper;    CSeq_id_Info* CreateInfo(void);    CSeq_id_Info* CreateInfo(const CSeq_id& id);    virtual void x_Unindex(const CSeq_id_Info* info) = 0;/*    typedef CRWLockPosix TRWLock;    typedef TRWLock::TReadLockGuard TReadLockGuard;    typedef TRWLock::TWriteLockGuard TWriteLockGuard;*/    typedef CMutex TRWLock;    typedef CMutexGuard TReadLockGuard;    typedef CMutexGuard TWriteLockGuard;    mutable TRWLock m_TreeLock;private:    CSeq_id_Which_Tree(const CSeq_id_Which_Tree& tree);    const CSeq_id_Which_Tree& operator=(const CSeq_id_Which_Tree& tree);};////////////////////////////////////////////////////////////////////// not-set tree (maximum 1 entry allowed)class CSeq_id_not_set_Tree : public CSeq_id_Which_Tree{public:    CSeq_id_not_set_Tree(void);    ~CSeq_id_not_set_Tree(void);    virtual bool Empty(void) const;    virtual CSeq_id_Handle FindInfo(const CSeq_id& id) const;    virtual CSeq_id_Handle FindOrCreate(const CSeq_id& id);    virtual void DropInfo(const CSeq_id_Info* info);    virtual bool HaveMatch(const CSeq_id_Handle& id) const;    virtual void FindMatch(const CSeq_id_Handle& id,                           TSeq_id_MatchList& id_list) const;    virtual void FindMatchStr(string sid,                              TSeq_id_MatchList& id_list) const;    virtual bool HaveReverseMatch(const CSeq_id_Handle& id) const;    virtual void FindReverseMatch(const CSeq_id_Handle& id,                                  TSeq_id_MatchList& id_list);protected:    virtual void x_Unindex(const CSeq_id_Info* info);    bool x_Check(const CSeq_id& id) const;};////////////////////////////////////////////////////////////////////// Base class for Gi, Gibbsq & Gibbmt treesclass CSeq_id_int_Tree : public CSeq_id_Which_Tree{public:    CSeq_id_int_Tree(void);    ~CSeq_id_int_Tree(void);    virtual bool Empty(void) const;    virtual CSeq_id_Handle FindInfo(const CSeq_id& id) const;    virtual CSeq_id_Handle FindOrCreate(const CSeq_id& id);    virtual bool HaveMatch(const CSeq_id_Handle& id) const;    virtual void FindMatch(const CSeq_id_Handle& id,                           TSeq_id_MatchList& id_list) const;    virtual void FindMatchStr(string sid,                              TSeq_id_MatchList& id_list) const;protected:    virtual void x_Unindex(const CSeq_id_Info* info);    virtual bool x_Check(const CSeq_id& id) const = 0;    virtual int  x_Get(const CSeq_id& id) const = 0;private:    typedef map<int, CSeq_id_Info*> TIntMap;    TIntMap m_IntMap;};////////////////////////////////////////////////////////////////////// Gibbsq treeclass CSeq_id_Gibbsq_Tree : public CSeq_id_int_Tree{protected:    virtual bool x_Check(const CSeq_id& id) const;    virtual int  x_Get(const CSeq_id& id) const;};////////////////////////////////////////////////////////////////////// Gibbmt treeclass CSeq_id_Gibbmt_Tree : public CSeq_id_int_Tree{protected:    virtual bool x_Check(const CSeq_id& id) const;    virtual int  x_Get(const CSeq_id& id) const;};////////////////////////////////////////////////////////////////////// Gi treeclass CSeq_id_Gi_Tree : public CSeq_id_Which_Tree{public:    CSeq_id_Gi_Tree(void);    ~CSeq_id_Gi_Tree(void);    virtual bool Empty(void) const;    virtual CSeq_id_Handle FindInfo(const CSeq_id& id) const;    virtual CSeq_id_Handle FindOrCreate(const CSeq_id& id);    virtual CSeq_id_Handle GetGiHandle(int gi);    virtual void DropInfo(const CSeq_id_Info* info);    virtual bool HaveMatch(const CSeq_id_Handle& id) const;    virtual void FindMatch(const CSeq_id_Handle& id,                           TSeq_id_MatchList& id_list) const;    virtual void FindMatchStr(string sid,                              TSeq_id_MatchList& id_list) const;protected:    virtual void x_Unindex(const CSeq_id_Info* info);    bool x_Check(const CSeq_id& id) const;    int  x_Get(const CSeq_id& id) const;    CConstRef<CSeq_id_Info> m_Info;};////////////////////////////////////////////////////////////////////// Base class for e_Genbank, e_Embl, e_Pir, e_Swissprot, e_Other,// e_Ddbj, e_Prf, e_Tpg, e_Tpe, e_Tpd treesclass CSeq_id_Textseq_Tree : public CSeq_id_Which_Tree{public:    CSeq_id_Textseq_Tree(void);    ~CSeq_id_Textseq_Tree(void);    virtual bool Empty(void) const;    virtual CSeq_id_Handle FindInfo(const CSeq_id& id) const;    virtual CSeq_id_Handle FindOrCreate(const CSeq_id& id);    virtual void FindMatch(const CSeq_id_Handle& id,                           TSeq_id_MatchList& id_list) const;    virtual void FindMatchStr(string sid,                              TSeq_id_MatchList& id_list) const;    virtual bool IsBetterVersion(const CSeq_id_Handle& h1,                                 const CSeq_id_Handle& h2) const;    virtual bool HaveReverseMatch(const CSeq_id_Handle& id) const;    virtual void FindReverseMatch(const CSeq_id_Handle& id,                                  TSeq_id_MatchList& id_list);protected:    virtual void x_Unindex(const CSeq_id_Info* info);    virtual bool x_Check(const CSeq_id& id) const = 0;    virtual const CTextseq_id& x_Get(const CSeq_id& id) const = 0;    CSeq_id_Info* x_FindInfo(const CTextseq_id& tid) const;private:    typedef vector<CSeq_id_Info*>   TVersions;    typedef map<string, TVersions, PNocase> TStringMap;    CSeq_id_Info* x_FindVersionEqual(const TVersions& ver_list,                                     const CTextseq_id& tid) const;    void x_FindVersionMatch(const TVersions& ver_list,                            const CTextseq_id& tid,                            TSeq_id_MatchList& id_list) const;    TStringMap m_ByAccession;    TStringMap m_ByName; // Used for searching by string};////////////////////////////////////////////////////////////////////// Genbank, EMBL and DDBJ joint tree

⌨️ 快捷键说明

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