home
about
news
download
doc
source
systems
tests
bugs
contact
IMP Reference Guide
develop.63b38c487d,2024/12/22
The Integrative Modeling Platform
IMP Manual
Reference Guide
Tutorial Index
Modules
Classes
Examples
include
IMP
bff
version 20241222.develop.63b38c487d
PathMapHeader.h
Go to the documentation of this file.
1
/**
2
* \file IMP/bff/PathMapHeader.h
3
* \brief Header class for path search class PathMap
4
*
5
* \authors Thomas-Otavio Peulen
6
* Copyright 2007-2022 IMP Inventors. All rights reserved.
7
*
8
*/
9
#ifndef IMPBFF_PATHMAPHEADER_H
10
#define IMPBFF_PATHMAPHEADER_H
11
12
#include <IMP/bff/bff_config.h>
13
14
#include <cmath>
/* ceil */
15
16
#include <
IMP/Particle.h
>
17
#include <
IMP/algebra/Vector3D.h
>
18
#include <
IMP/atom/Atom.h
>
19
#include <
IMP/atom/Hierarchy.h
>
20
#include <
IMP/atom/Selection.h
>
21
#include <
IMP/em/DensityHeader.h
>
22
23
#include <IMP/bff/internal/json.h>
24
25
#include <algorithm>
26
27
IMPBFF_BEGIN_NAMESPACE
28
29
30
class
PathMap;
31
32
//!* Header class for path search class PathMap
33
class
IMPBFFEXPORT
PathMapHeader
{
34
35
friend
class
IMP::bff::PathMap
;
36
37
private
:
38
39
double
grid_spacing_;
40
double
max_path_length_;
41
double
neighbor_radius_;
42
double
obstacle_threshold_;
43
44
IMP::em::DensityHeader
density_header_;
45
46
protected
:
47
48
IMP::algebra::Vector3D
path_origin_;
49
50
public
:
51
52
~
PathMapHeader
() =
default
;
53
54
/*!
55
*
56
* @param max_path_length maximum length of path (defines also size of grid)
57
* @param grid_spacing spacing between grid tiles
58
* @param neighbor_radius defines size of box around tile where other
59
* voxels are considered a neighbor
60
* @param obstacle_threshold voxels with density larger than this
61
* threshold value are considered an obstacle.
62
*/
63
PathMapHeader
(
64
double
max_path_length = 10.0,
65
double
grid_spacing = 1.0,
66
double
neighbor_radius = 2,
67
double
obstacle_threshold = std::numeric_limits<double>::epsilon()
68
);
69
70
//! Update the dimensions of the AV to be (nnx,nny,nnz)
71
//! The origin of the map does not change. If not values
72
//! are provided used linker length & radius to update.
73
/**
74
\param[in] nnx the new number of voxels on the X axis
75
\param[in] nny the new number of voxels on the Y axis
76
\param[in] nnz the new number of voxels on the Z axis
77
*/
78
void
update_map_dimensions(
int
nx=-1,
int
ny=-1,
int
nz=-1);
79
80
/**
81
* @brief Sets the origin of the path.
82
* @param v The origin vector.
83
*/
84
void
set_path_origin(
const
IMP::algebra::Vector3D
&v);
85
86
//! Returns position of the labeling site
87
IMP::algebra::Vector3D
get_path_origin
()
const
{
88
return
path_origin_;
89
}
90
91
/**
92
* @brief Get the maximum linker/path length from origin.
93
* @return The maximum linker/path length.
94
*/
95
double
get_max_path_length
(){
96
return
max_path_length_;
97
}
98
99
/**
100
* @brief Get the simulation grid resolution.
101
* @return The simulation grid resolution as a double.
102
*/
103
double
get_simulation_grid_resolution();
104
105
/**
106
* @brief Set the obstacle threshold.
107
* @param obstacle_threshold The obstacle threshold value
108
*/
109
void
set_obstacle_threshold(
double
obstacle_threshold);
110
111
/**
112
* @brief Get the obstacle threshold.
113
* @return The obstacle threshold value
114
*/
115
double
get_obstacle_threshold
()
const
{
116
return
obstacle_threshold_;
117
}
118
119
/**
120
* @brief Set the neighbor radius.
121
* @param neighbor_radius The neighbor radius value
122
*/
123
void
set_neighbor_radius(
double
neighbor_radius);
124
125
/**
126
* @brief Get the neighbor radius.
127
* @return The neighbor radius as a double.
128
*/
129
double
get_neighbor_radius
()
const
{
130
return
neighbor_radius_;
131
}
132
133
/**
134
* @brief Get the size of the neighbor box.
135
* @return The size of the neighbor box
136
*/
137
int
get_neighbor_box_size()
const
;
138
139
//! Returns a read-only pointer to the header of the map
140
const
IMP::em::DensityHeader
*
get_density_header
()
const
{
141
return
&density_header_; }
142
143
//! Returns a pointer to the header of the map in a writable version
144
IMP::em::DensityHeader
*
get_density_header_writable
() {
145
return
&density_header_; }
146
147
//! Get origin on the PathMap (the corner of the grid)
148
IMP::algebra::Vector3D
get_origin()
const
;
149
150
/**
151
* @brief Get the edge length of the grid.
152
* @return The edge length of the grid as a double.
153
*/
154
double
get_grid_edge_length();
155
156
//! Set origin on the PathMap (the corner of the grid)
157
void
set_origin
(
float
x,
float
y,
float
z);
158
159
void
show
(std::ostream& out = std::cout)
const
;
160
};
161
162
IMPBFF_END_NAMESPACE
163
164
165
#endif //IMPBFF_PATHMAPHEADER_H
IMP::bff::PathMapHeader::get_density_header
const IMP::em::DensityHeader * get_density_header() const
Returns a read-only pointer to the header of the map.
Definition:
PathMapHeader.h:140
IMP::bff::PathMapHeader::get_neighbor_radius
double get_neighbor_radius() const
Get the neighbor radius.
Definition:
PathMapHeader.h:129
Atom.h
Simple atom decorator.
DensityHeader.h
Metadata for a density file.
IMP::em::DensityHeader
Definition:
DensityHeader.h:25
IMP::bff::PathMap
Class to search path on grids.
Definition:
PathMap.h:45
IMP::bff::PathMapHeader::get_max_path_length
double get_max_path_length()
Get the maximum linker/path length from origin.
Definition:
PathMapHeader.h:95
Hierarchy.h
Decorator for helping deal with a hierarchy of molecules.
IMP::bff::PathMapHeader::get_path_origin
IMP::algebra::Vector3D get_path_origin() const
Returns position of the labeling site.
Definition:
PathMapHeader.h:87
Particle.h
Classes to handle individual model particles. (Note that implementation of inline functions is in int...
IMP::core::show
std::ostream & show(Hierarchy h, std::ostream &out=std::cout)
Print the hierarchy using a given decorator to display each node.
Definition:
core/Hierarchy.h:423
IMP::bff::PathMapHeader
Definition:
PathMapHeader.h:33
IMP::algebra::Vector3D
VectorD< 3 > Vector3D
Definition:
VectorD.h:408
Vector3D.h
Simple 3D vector class.
IMP::em::DensityMap::set_origin
void set_origin(float x, float y, float z)
Sets the origin of the header.
Selection.h
Select a subset of a hierarchy.
IMP::bff::PathMapHeader::get_obstacle_threshold
double get_obstacle_threshold() const
Get the obstacle threshold.
Definition:
PathMapHeader.h:115
IMP::bff::PathMapHeader::get_density_header_writable
IMP::em::DensityHeader * get_density_header_writable()
Returns a pointer to the header of the map in a writable version.
Definition:
PathMapHeader.h:144