RxDock 0.1.0
A fast, versatile, and open-source program for docking ligands to proteins and nucleic acids
Loading...
Searching...
No Matches
DockingSite.h
1/***********************************************************************
2 * The rDock program was developed from 1998 - 2006 by the software team
3 * at RiboTargets (subsequently Vernalis (R&D) Ltd).
4 * In 2006, the software was licensed to the University of York for
5 * maintenance and distribution.
6 * In 2012, Vernalis and the University of York agreed to release the
7 * program as Open Source software.
8 * This version is licensed under GNU-LGPL version 3.0 with support from
9 * the University of Barcelona.
10 * http://rdock.sourceforge.net/
11 ***********************************************************************/
12
13// The role of DockingSite is to manage the
14// list of cavities generated by the site mapper, and to store a 3-D grid of
15// precalculated distances to the nearest cavity coordinate. This grid can be
16// used by scoring function classes to lookup the list of atoms required to
17// calculate the score component.
18
19#ifndef _RBTDOCKINGSITE_H_
20#define _RBTDOCKINGSITE_H_
21
22#include "rxdock/Atom.h"
23#include "rxdock/Cavity.h"
24#include "rxdock/Config.h"
25#include "rxdock/Error.h"
26#include "rxdock/RealGrid.h"
27
28namespace rxdock {
29
31public:
32 // STL predicate for selecting atoms within a defined distance range from
33 // nearest cavity coords Uses precalculated distance grid
34 class isAtomInRange : public std::function<bool(AtomPtr)> {
35 public:
36 explicit isAtomInRange(RealGrid *pGrid, double minDist, double maxDist)
37 : m_pGrid(pGrid), m_minDist(minDist), m_maxDist(maxDist) {}
38 bool operator()(Atom *pAtom) const;
39
40 private:
41 RealGrid *m_pGrid;
42 double m_minDist;
43 double m_maxDist;
44 };
45
46public:
47 // Class type string
48 static const std::string _CT;
49
50 RBTDLL_EXPORT DockingSite(const CavityList &cavList, double border);
51 RBTDLL_EXPORT DockingSite(json j);
52
53 // Destructor
54 virtual ~DockingSite();
55
56 // Insertion operator
57 RBTDLL_EXPORT friend std::ostream &operator<<(std::ostream &s,
58 const DockingSite &site);
59
60 RBTDLL_EXPORT friend void to_json(json &j, const DockingSite &site);
61 friend void from_json(const json &j, DockingSite &site);
62
63 // Virtual function for dumping docking site details to an output stream
64 // Derived classes can override if required
65 virtual void Print(std::ostream &s) const;
66
67 // Public methods
68 RBTDLL_EXPORT RealGridPtr GetGrid();
69 double GetBorder() const { return m_border; }
70 Coord GetMinCoord() const { return m_minCoord; }
71 Coord GetMaxCoord() const { return m_maxCoord; }
72 CavityList GetCavityList() const { return m_cavityList; }
73 int GetNumCavities() const { return m_cavityList.size(); }
74 RBTDLL_EXPORT double
75 GetVolume() const; // returns total volume of all cavities in A^3
76
77 // Returns the combined coord lists of all the cavities
78 void GetCoordList(CoordList &retVal) const;
79
80 // Filters an atom list according to distance from the cavity coords
81 // Only returns atoms within minDist and maxDist from cavity
82 RBTDLL_EXPORT AtomList GetAtomList(const AtomList &atomList, double minDist,
83 double maxDist);
84 // Filters an atom list according to distance from the cavity coords
85 // Only returns atoms within maxDist from cavity
86 // This version does not require the cavity grid
87 RBTDLL_EXPORT AtomList GetAtomList(const AtomList &atomList, double maxDist);
88 // Returns the count of atoms within minDist and maxDist from cavity
89 unsigned int GetNumAtoms(const AtomList &atomList, double minDist,
90 double maxDist);
91
92 // private methods
93private:
94 DockingSite(); // default constructor disabled
95 DockingSite(const DockingSite &); // Copy constructor disabled by
96 // default
97 DockingSite &
98 operator=(const DockingSite &); // Copy assignment disabled by default
99
100 void CreateGrid();
101
102 // Private data
103private:
104 CavityList m_cavityList; // Cavity list
105 Coord m_minCoord;
106 Coord m_maxCoord;
107 RealGridPtr m_spGrid;
108 double m_border;
109};
110
111// Useful typedefs
112typedef SmartPtr<DockingSite> DockingSitePtr; // Smart pointer
113
114std::ostream &operator<<(std::ostream &s, const DockingSite &site);
115
116RBTDLL_EXPORT void to_json(json &j, const DockingSite &site);
117void from_json(const json &j, DockingSite &site);
118
119} // namespace rxdock
120
121#endif //_RBTDOCKINGSITE_H_
Definition Atom.h:49
Definition Coord.h:45
Definition DockingSite.h:34
Definition DockingSite.h:30
Definition RealGrid.h:30