BALL
1.4.2
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
include
BALL
STRUCTURE
bindingPocketProcessor.h
Go to the documentation of this file.
1
#ifndef BALL_STRUCTURE_BINDINGPOCKETPROCESSOR_H
2
#define BALL_STRUCTURE_BINDINGPOCKETPROCESSOR_H
3
4
#ifndef BALL_CONCEPT_PROCESSOR_H
5
# include <
BALL/CONCEPT/processor.h
>
6
#endif
7
8
#ifndef BALL_KERNEL_RESIDUE_H
9
# include <
BALL/KERNEL/residue.h
>
10
#endif
11
12
#ifndef BALL_MATHS_VECTOR3_H
13
# include <
BALL/MATHS/vector3.h
>
14
#endif
15
16
#ifndef BALL_KERNEL_SYSTEM_H
17
# include <
BALL/KERNEL/system.h
>
18
#endif
19
20
#ifndef BALL_DATATYPE_HASHGRID_H
21
# include <
BALL/DATATYPE/hashGrid.h
>
22
#endif
23
24
#ifndef BALL_DATATYPE_OPTIONS_H
25
# include <
BALL/DATATYPE/options.h
>
26
#endif
27
28
#include <vector>
29
#include <string>
30
31
#include <fstream>
32
33
namespace
BALL
34
{
35
40
class
BALL_EXPORT
BindingPocketProcessor
41
:
public
UnaryProcessor
<Composite>
42
{
43
44
public
:
45
48
struct
Option
49
{
51
static
const
String
HEAVY_ONLY
;
53
static
const
String
PARSE_INI_FILE
;
55
static
const
String
INI_FILE_NAME
;
56
58
static
const
String
RADIUS_HYDROGEN
;
59
static
const
String
RADIUS_OXYGEN
;
60
static
const
String
RADIUS_NITROGEN
;
61
static
const
String
RADIUS_CARBON
;
62
static
const
String
RADIUS_SULFUR
;
63
65
static
const
String
PROBE_SPHERE_RADIUS
;
67
static
const
String
PROBE_SPHERE_RADIUS_HYDROGEN_FREE
;
69
static
const
String
PROBE_LAYER_RADIUS
;
71
static
const
String
BURIAL_COUNT_THRESHOLD
;
73
static
const
String
BURIAL_COUNT_THRESHOLD_HYDROGEN_FREE
;
75
static
const
String
BURIAL_COUNT_RADIUS
;
77
static
const
String
PW_SQUARE_WELL
;
78
static
const
String
PW_GAUSSIAN_WIDTH
;
79
static
const
String
PW_MAX_DISTANCE
;
81
static
const
String
MAX_ASPS
;
82
// additional factor for the computation of the collision of two spheres
83
static
const
String
CLASH_FACTOR
;
85
static
const
String
ASP_SEPERATION
;
86
};
87
90
struct
Default
91
{
92
static
const
bool
HEAVY_ONLY
;
93
static
const
bool
PARSE_INI_FILE
;
94
static
const
String
INI_FILE_NAME
;
95
96
static
const
double
RADIUS_HYDROGEN
;
97
static
const
double
RADIUS_OXYGEN
;
98
static
const
double
RADIUS_NITROGEN
;
99
static
const
double
RADIUS_CARBON
;
100
static
const
double
RADIUS_SULFUR
;
101
102
static
const
double
PROBE_SPHERE_RADIUS
;
103
static
const
double
PROBE_SPHERE_RADIUS_HYDROGEN_FREE
;
104
static
const
double
PROBE_LAYER_RADIUS
;
105
static
const
Position
BURIAL_COUNT_THRESHOLD
;
106
static
const
Position
BURIAL_COUNT_THRESHOLD_HYDROGEN_FREE
;
107
static
const
double
BURIAL_COUNT_RADIUS
;
108
static
const
double
PW_SQUARE_WELL
;
109
static
const
double
PW_GAUSSIAN_WIDTH
;
110
static
const
double
PW_MAX_DISTANCE
;
111
static
const
Position
MAX_ASPS
;
112
static
const
double
CLASH_FACTOR
;
113
static
const
double
ASP_SEPERATION
;
114
};
115
118
BindingPocketProcessor
();
119
122
BindingPocketProcessor
(
Options
& new_options);
123
126
BindingPocketProcessor
(
const
BindingPocketProcessor
& pp);
127
130
virtual
~
BindingPocketProcessor
();
131
134
const
BindingPocketProcessor
& operator=(
const
BindingPocketProcessor
& pp);
135
137
virtual
bool
finish();
138
139
virtual
Processor::Result
operator() (
Composite
&composite);
140
143
const
vector<std::pair<Vector3,double> >& getActiveSitePoints()
const
;
144
147
const
vector<vector<std::pair<Vector3,double> > >& getLayers()
const
;
148
151
Options
options
;
152
153
private
:
154
158
class
Sphere_
159
{
160
public
:
162
Sphere_
();
163
166
BALL::Vector3
position
;
167
170
float
radius
;
171
174
Position
b_count
;
175
178
float
probe_weight
;
179
182
Position
layer
;
183
186
inline
bool
operator<
(
const
Sphere_
& sp)
const
{
return
probe_weight > sp.
probe_weight
;};
187
190
int
id;
191
static
int
global_id
;
192
Position
a,b,
c
,
d
;
193
196
inline
bool
operator==
(
const
Sphere_
& sp)
const
{
return
a == sp.
a
&& b == sp.
b
&&
c
== sp.
c
&& d == sp.
d
;};
197
};
198
201
class
SphereComparator_
202
{
203
public
:
204
int
operator()(
const
Sphere_
& sp1,
const
Sphere_
& sp2)
const
205
{
206
if
(sp1.
a
!= sp2.
a
)
207
return
sp1.
a
< sp2.
a
;
208
if
(sp1.
b
!= sp2.
b
)
209
return
sp1.
b
< sp2.
b
;
210
if
(sp1.
c
!= sp2.
c
)
211
return
sp1.
c
< sp2.
c
;
212
if
(sp1.
d
!= sp2.
d
)
213
return
sp1.
d
< sp2.
d
;
214
return
0;
215
};
216
};
217
220
Position
layer_
;
221
225
friend
std::ostream&
operator<<
(std::ostream& os,
const
BindingPocketProcessor::Sphere_
&
/*sp*/
) {
return
os;};
226
229
HashGrid3<Sphere_>
sphere_grid_;
230
233
HashGrid3<Sphere_>
protein_grid_
;
234
237
HashGrid3<Sphere_>
layer_grid_
;
238
241
HashGrid3<Sphere_>
clayer_grid_
;
242
245
HashGrid3<Sphere_>
BC_grid_
;
246
249
HashGrid3<Sphere_>
pw_grid_
;
250
253
HashGrid3<Sphere_>
candidates_grid_
;
254
255
std::vector<Sphere_>
sorted_spheres_
;
256
259
double
sphere_rad_
;
260
263
double
second_layer_rad_
;
264
267
double
protein_clash_rad_
;
268
271
double
BC_threshold_
;
272
275
Position
found_new_
;
276
277
double
c_factor_
;
278
281
std::vector<Sphere_>
candidates
;
282
283
std::vector<std::pair<Vector3,double> >
asps_
;
284
285
std::vector<std::vector<std::pair<Vector3,double> > >
layers_
;
286
293
double
radius_(
const
String
& element);
294
297
void
trySphere__(
HashGridBox3<Sphere_>::DataIterator
data_it,
298
HashGridBox3<Sphere_>::DataIterator
data_it2,
299
HashGridBox3<Sphere_>::DataIterator
data_it3);
300
303
void
addSphere_s_();
304
307
Vector3
calculateT_(
HashGridBox3<Sphere_>::DataIterator
data_it,
308
HashGridBox3<Sphere_>::DataIterator
data_it2);
309
312
void
testFirst_(
HashGrid3<Sphere_>
& hg,
HashGridBox3<Sphere_>::DataIterator
data_it,
313
Position
x,
Position
y,
Position
z);
314
315
void
testSecond_(
HashGrid3<Sphere_>
& hg,
HashGridBox3<Sphere_>::DataIterator
data_it,
316
HashGridBox3<Sphere_>::DataIterator
data_it2,
317
Position
x,
Position
y,
Position
z,
Position
step);
318
321
bool
testSphereClash_(
Vector3
& v);
322
325
bool
testProteinClash_(
Vector3
& v);
326
329
bool
testBC_(
Sphere_
& sp);
330
333
void
weedCandidates_();
334
337
bool
parse_();
338
339
340
bool
second_it_
;
341
342
};
343
344
}
//namesspace BALL
345
346
#endif // BALL_STRUCTURE_BINDINGPOCKETPROCESSOR_H
Generated by
1.8.3.1