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

📄 atom_set.hpp

📁 ncbi源码
💻 HPP
字号:
/* * =========================================================================== * PRODUCTION $Log: atom_set.hpp,v $ * PRODUCTION Revision 1000.1  2004/04/12 17:30:46  gouriano * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.17 * PRODUCTION * =========================================================================== *//*  $Id: atom_set.hpp,v 1000.1 2004/04/12 17:30:46 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:  Paul Thiessen** File Description:*      Classes to hold sets of atom data** ===========================================================================*/#ifndef CN3D_ATOMSET__HPP#define CN3D_ATOMSET__HPP#include <corelib/ncbistl.hpp>#include <string>#include <map>#include <objects/mmdb2/Atomic_coordinates.hpp>#include "structure_base.hpp"#include "vector_math.hpp"BEGIN_SCOPE(Cn3D)class Vector;// An AtomSet is a list of Atom records, accessible through the equivalent of// an ASN1 Atom-pntr (molecule, residue, and atom IDs) plus an optional alternate// conformer ID. An Atom contains the spatial coordinates and any temperature,// occupancy, and alternate conformer data present for an atom.class AtomCoord : public StructureBase{public:    AtomCoord(StructureBase *parent);    // public data    Vector site;    double averageTemperature; // average of 6 factors if anisotropic    double occupancy;    char altConfID;    static const double NO_TEMPERATURE;    static const double NO_OCCUPANCY;    static const char NO_ALTCONFID;    // public methods    bool HasTemp(void) const { return (averageTemperature!=NO_TEMPERATURE); }    bool HasOccup(void) const { return (occupancy!=NO_OCCUPANCY); }    bool HasAlt(void) const { return (altConfID!=NO_ALTCONFID); }private:};class StructureSet;class AtomSet : public StructureBase{    friend class StructureSet;public:    AtomSet(StructureBase *parent, const ncbi::objects::CAtomic_coordinates& coords);    ~AtomSet(void);    // public data    typedef std::list < const std::string * > EnsembleList;    EnsembleList ensembles;    // public methods    // which ensemble to use?    bool SetActiveEnsemble(const std::string *ensemble);    // get Atom based on Atom-pntr. If 'getAny' is true, then will return arbitrary    // altConf; if false, will only return one from active ensemble    const AtomCoord* GetAtom(const AtomPntr& atom,        bool getAny = false, bool suppressWarning = false) const;private:    // this provides a convenient way to look up atoms from Atom-pntr info    typedef std::pair < int, std::pair < int, int > > AtomPntrKey;    AtomPntrKey MakeKey(const AtomPntr& ap) const    {        return std::make_pair(ap.mID, std::make_pair(ap.rID, ap.aID));    }    typedef std::list < const AtomCoord * > AtomAltList;    typedef std::map < AtomPntrKey, AtomAltList > AtomMap;    AtomMap atomMap;    const std::string *activeEnsemble;public:    const std::string* GetActiveEnsemble(void) const { return activeEnsemble; }    bool HasTemp(void) const { return (atomMap.size()>0 && (*(atomMap.begin()->second.begin()))->HasTemp()); }    bool HasOccup(void) const { return (atomMap.size()>0 && (*(atomMap.begin()->second.begin()))->HasOccup()); }    bool HasAlt(void) const { return (atomMap.size()>0 && (*(atomMap.begin()->second.begin()))->HasAlt()); }};END_SCOPE(Cn3D)#endif // CN3D_ATOMSET__HPP/** ---------------------------------------------------------------------------* $Log: atom_set.hpp,v $* Revision 1000.1  2004/04/12 17:30:46  gouriano* PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.17** Revision 1.17  2004/02/19 17:04:42  thiessen* remove cn3d/ from include paths; add pragma to disable annoying msvc warning** Revision 1.16  2003/02/03 19:20:00  thiessen* format changes: move CVS Log to bottom of file, remove std:: from .cpp files, and use new diagnostic macros** Revision 1.15  2001/06/14 18:59:27  thiessen* left out 'class' in 'friend ...' statments** Revision 1.14  2001/06/02 17:22:58  thiessen* fixes for GCC** Revision 1.13  2001/05/31 18:46:25  thiessen* add preliminary style dialog; remove LIST_TYPE; add thread single and delete all; misc tweaks** Revision 1.12  2000/10/04 17:40:44  thiessen* rearrange STL #includes** Revision 1.11  2000/08/25 14:21:32  thiessen* minor tweaks** Revision 1.10  2000/08/03 15:12:29  thiessen* add skeleton of style and show/hide managers** Revision 1.9  2000/07/27 13:30:10  thiessen* remove 'using namespace ...' from all headers** Revision 1.8  2000/07/17 22:36:45  thiessen* fix vector_math typo; correctly set initial view** Revision 1.7  2000/07/16 23:18:33  thiessen* redo of drawing system** Revision 1.6  2000/07/12 23:28:27  thiessen* now draws basic CPK model** Revision 1.5  2000/07/12 02:00:39  thiessen* add basic wxWindows GUI** Revision 1.4  2000/07/11 13:49:25  thiessen* add modules to parse chemical graph; many improvements** Revision 1.3  2000/07/01 15:44:23  thiessen* major improvements to StructureBase functionality** Revision 1.2  2000/06/29 19:18:19  thiessen* improved atom map** Revision 1.1  2000/06/29 14:35:20  thiessen* new atom_set files**/

⌨️ 快捷键说明

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