forked from CBDD/rDock
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRbtPMFIdxSF.h
91 lines (82 loc) · 3.04 KB
/
RbtPMFIdxSF.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/***********************************************************************
* The rDock program was developed from 1998 - 2006 by the software team
* at RiboTargets (subsequently Vernalis (R&D) Ltd).
* In 2006, the software was licensed to the University of York for
* maintenance and distribution.
* In 2012, Vernalis and the University of York agreed to release the
* program as Open Source software.
* This version is licensed under GNU-LGPL version 3.0 with support from
* the University of Barcelona.
* http://rdock.sourceforge.net/
***********************************************************************/
//Indexed-grid-based PMF intermolecular scoring function
#ifndef _RBTPMFIDXSF_H_
#define _RBTPMFIDXSF_H_
#include "RbtBaseIdxSF.h"
#include "RbtBaseInterSF.h"
#include "RbtPMF.h"
#include "RbtAnnotationHandler.h"
// for PMF pseudogrids where
// X is distance, X and Y are receptor and ligand
// distances respectively
#include "RbtRealGrid.h"
/** RbtPMFIdxSF class for PMF scoring.
*/
class RbtPMFIdxSF : public RbtBaseInterSF, public RbtBaseIdxSF, public virtual RbtAnnotationHandler
{
// by default "private" members
/**
* vGrid: vector of grids. every PMF type needs a grid
*/
RbtAtomList theLigandList; // ligand typing
RbtAtomList theReceptorList; // recepor typing
// regular lists
RbtAtomRList theLigandRList; // ligand
RbtAtomRList theReceptorRList; // recepor
vector<RbtRealGridPtr> theTypeGrid; // grids for PMF values for different atom types in receptor
vector<RbtPMFType> theLigandTypes; // type values in theTypeGrid
RbtNonBondedGridPtr theSurround; // atoms arond a gridpoint
RbtRealGridPtr thePMFGrid; // grid for X-distance Y
// this is the representation of the PMFs
RbtRealGridPtr theSlopeGrid; // grid to store values where the plateaus starts
public:
RbtPMFIdxSF(const RbtString& strName="PMF"); /**< The only one constructor */
virtual ~RbtPMFIdxSF(); /**< The virtual destructor */
/**
* This string serves as a name for the weight factor
* of the PMF score. Should be read from the .prm
* file.
*/
static RbtString _CT;
static RbtString _PMFDIR; /**< String pointing to the dir with PMF tables*/
static RbtString _CC_CUTOFF;
static RbtString _SLOPE;
/**
* Observer functionalities pure virtual, so it must be
* overloaded.
*/
virtual void Update(RbtSubject* theChangedSubject);
protected:
/**
* Setting up receptor means atom typing for all the
* receptor atoms and create RbtNonBondedGrid for NN
*/
virtual void SetupReceptor();
/**
* determine PMF types for all ligand atoms
*/
virtual void SetupLigand();
/**
* Setting up scores
*/
virtual void SetupScore();
/**
* RawScore(void) returning with the actual PMF score
*/
virtual RbtDouble RawScore(void) const;
/**
* Estimate value for short distances instead of using plateau in PMFs
*/
RbtDouble GetLinearCloseRangeValue(RbtDouble aDist, RbtPMFType aRecType, RbtPMFType aLigType) const;
};
#endif // _RBTPMFIDXSF_H_