OpenStructure
residue_view.hh
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 // This file is part of the OpenStructure project <www.openstructure.org>
3 //
4 // Copyright (C) 2008-2020 by the OpenStructure authors
5 //
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License as published by the Free
8 // Software Foundation; either version 3.0 of the License, or (at your option)
9 // any later version.
10 // This library is distributed in the hope that it will be useful, but WITHOUT
11 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13 // details.
14 //
15 // You should have received a copy of the GNU Lesser General Public License
16 // along with this library; if not, write to the Free Software Foundation, Inc.,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 //------------------------------------------------------------------------------
19 #ifndef OST_RESIDUE_VIEW_HH
20 #define OST_RESIDUE_VIEW_HH
21 
22 #include <ost/mol/query.hh>
23 #include <ost/mol/module_config.hh>
24 #include <ost/geom/geom.hh>
25 #include <ost/mol/residue_base.hh>
26 #include <ost/mol/view_type_fw.hh>
30 
31 namespace ost { namespace mol {
32 
40 
41  friend class ChainView;
42 
43 public:
46 
52  ResidueView(const ChainView& chain,
53  const ResidueHandle& residue);
54 
55 public:
56 
58 
59  operator bool() const { return this->IsValid(); }
68  bool IsValid() const;
70 
72 
73  ResidueView(const ResidueViewDataPtr& data,
77  const impl::ResidueImplPtr& impl);
78 
80  const ResidueViewDataPtr& ViewData() const {
81  return data_;
82  }
85  return data_;
86  }
88 public:
90 
91  AtomView AddAtom(const AtomView& atom_view,
102  ViewAddFlags flags=0);
103 
113  AtomView AddAtom(const AtomHandle& atom_handle,
114  ViewAddFlags flags=0);
116 
118  AtomView FindAtom(const String& atom_name) const;
119 
121  AtomView ViewForHandle(const AtomHandle& handle) const;
122  AtomView FindAtom(const AtomHandle& handle) const;
123 
125  bool IsAtomIncluded(const AtomHandle& handle) const;
126 
130  void RemoveAtom(AtomView view);
131 
136  void RemoveAtoms();
137 
139  void Apply(EntityVisitor& visitor);
140  void Apply(EntityViewVisitor& visitor);
141 
143  int GetAtomCount() const;
144 
146  const AtomViewList& GetAtomList() const;
147 
150 
153 
155  int GetIndex() const;
158 
160  double GetMass() const;
161 
164 
170 
173 
176  EntityView Select(const Query& q, QueryFlags flags=0) const;
177 
180  EntityView Select(const String& query_string, QueryFlags flags=0) const;
181 
186  unsigned long GetHashCode() const;
187 
188  bool operator==(const ResidueView& rhs) const;
189 
190  bool operator!=(const ResidueView& rhs) const;
191 
192  bool HasAtoms() const;
193 protected:
196  void SetIndex(int index);
197 
198 private:
199  ResidueViewDataPtr data_;
200 };
201 
202 }} // ns
203 
204 #endif // OST_RESIDUE_VIEW_HH
205 
axis-aligned cuboid
Three dimensional vector class, using Real precision.
Definition: vec3.hh:48
Handle to atom datatype.
Definition: atom_handle.hh:37
definition of AtomView
Definition: atom_view.hh:34
definition of ChainView
Definition: chain_view.hh:37
definition of EntityView
Definition: entity_view.hh:86
EntityViewVisitor interface.
EntityVisitor interface.
Selection Query.
Definition: query.hh:74
base class for ResidueHandle and ResidueView
Definition: residue_base.hh:66
EntityView Select(const Query &q, QueryFlags flags=0) const
return view based on a query object
AtomView FindAtom(const AtomHandle &handle) const
void RemoveAtoms()
remove all atoms
void Apply(EntityViewVisitor &visitor)
ResidueHandle GetHandle() const
get handle this view points to
EntityView GetEntity() const
get entity
ResidueViewDataPtr & ViewData()
Get internal view data.
Definition: residue_view.hh:84
double GetMass() const
Get residue's mass.
ChainView GetChain() const
get parent chain view.
void RemoveAtom(AtomView view)
remove given atom from view
void Apply(EntityVisitor &visitor)
Apply entity visitor to whole chain.
geom::AlignedCuboid GetBounds() const
Get residue's axis-aligned bounding box.
AtomView AddAtom(const AtomHandle &atom_handle, ViewAddFlags flags=0)
Add atom to view.
bool operator!=(const ResidueView &rhs) const
int GetAtomCount() const
return number of atoms in this residue view.
const AtomViewList & GetAtomList() const
get list of atoms in this view
geom::Vec3 GetCenterOfMass() const
Get residue's center of mass (mass weighted)
bool HasAtoms() const
unsigned long GetHashCode() const
get unique id
const ResidueViewDataPtr & ViewData() const
Get internal view data.
Definition: residue_view.hh:80
ResidueView(const ChainView &chain, const ResidueHandle &residue)
Create new residue view.
AtomView FindAtom(const String &atom_name) const
Find atom by name.
ResidueView()
Create invalid ResidueView.
AtomView ViewForHandle(const AtomHandle &handle) const
Find residue by residue handle.
bool IsValid() const
check validity of handle
void SetIndex(int index)
set the index of residiue view in chain should be called from chainview whenever indexes change
bool IsAtomIncluded(const AtomHandle &handle) const
Check whether the view includes the the given atom.
geom::Vec3 GetCenterOfAtoms() const
Get residue's center of atoms (not mass weighted)
int GetIndex() const
get index of residue view in chain
EntityView Select(const String &query_string, QueryFlags flags=0) const
return view based on query String.
bool operator==(const ResidueView &rhs) const
std::string String
Definition: base.hh:54
#define DLLEXPORT_OST_MOL
boost::shared_ptr< ResidueImpl > ResidueImplPtr
boost::shared_ptr< ResidueViewData > ResidueViewDataPtr
Definition: view_type_fw.hh:34
uint QueryFlags
Definition: query.hh:69
std::vector< AtomView > AtomViewList
Definition: view_type_fw.hh:31
int ViewAddFlags
Definition: view_type_fw.hh:71
Definition: base.dox:1