IMP  2.0.0
The Integrative Modeling Platform
IMP::em::DensityMap Class Reference

Class for handling density maps. More...

#include <IMP/em/DensityMap.h>

+ Inheritance diagram for IMP::em::DensityMap:

Public Member Functions

 DensityMap (std::string name="DensityMap%1%")
 
 DensityMap (const DensityHeader &header, std::string name="DensityMap%1%")
 Construct a density map as intructed in the input header.
 
void add (const DensityMap *other)
 
void calc_all_voxel2loc ()
 Calculates the coordinates that correspond to all voxels.
 
emreal calcRMS ()
 Calculates RMSD and mean of a map values are stored in the header. More...
 
void copy_map (const DensityMap *other)
 copy map into this map
 
algebra::Vector3D get_centroid (emreal threshold=0.0) const
 
DensityMapget_cropped (float threshold)
 Create a new cropped map. More...
 
DensityMapget_cropped (const algebra::BoundingBox3D &bb)
 Create a new cropped map with the bounding box extent. More...
 
int get_dim_index_by_location (const algebra::Vector3D &v, int ind) const
 Calculate dimension index of a given location. More...
 
int get_dim_index_by_location (float loc_val, int ind) const
 
const DensityHeaderget_header () const
 
DensityHeaderget_header_writable ()
 Returns a pointer to the header of the map in a writable version.
 
algebra::Vector3D get_location_by_voxel (long index) const
 Calculate the location of a given voxel. More...
 
float get_location_in_dim_by_voxel (long index, int dim) const
 Calculate the location of a given voxel in a given dimension. More...
 
std::string get_locations_string (float t)
 
emreal get_max_value () const
 Returns the the value of the voxel with the highest density.
 
float get_maximum_value_in_xy_plane (int z_ind)
 Get the maximum value in a XY plane indicated by a Z index.
 
float get_maximum_value_in_xz_plane (int y_ind)
 Get the maximum value in a XZ plane indicated by a Y index.
 
float get_maximum_value_in_yz_plane (int x_ind)
 Get the maximum value in a YZ plane indicated by a X index.
 
emreal get_min_value () const
 Returns the the value of the voxel with the lowest density.
 
long get_number_of_voxels () const
 number of map voxels
 
algebra::Vector3D get_origin () const
 
bool get_rms_calculated () const
 
Float get_spacing () const
 Updated the voxel size of the map. More...
 
algebra::Vector3D get_top () const
 
emreal get_value (float x, float y, float z) const
 Gets the value of the voxel located at (x,y,z) More...
 
emreal get_value (const algebra::Vector3D &point) const
 
emreal get_value (long index) const
 Gets the value of the voxel at a given index. More...
 
long get_voxel_by_location (float x, float y, float z) const
 Calculate the voxel of a given location. More...
 
long get_voxel_by_location (const algebra::Vector3D &v) const
 Calculate the voxel of a given location. More...
 
bool is_normalized () const
 
bool is_part_of_volume (float x, float y, float z) const
 Checks whether a given point is in the grid the voxel of a given location. More...
 
bool is_part_of_volume (const algebra::Vector3D &v) const
 Checks whether a given point is in the grid the voxel of a given location. More...
 
bool is_xyz_ind_part_of_volume (int ix, int iy, int iz) const
 
int lower_voxel_shift (emreal loc, emreal kdist, emreal orig, int ndim) const
 
void multiply (float factor)
 
void pad (int nx, int ny, int nz, float val=0.0)
 
DensityMappad_margin (int mrg_x, int mrg_y, int mrg_z, float val=0.0)
 Create a new padded map. More...
 
void pick_max (const DensityMap *other)
 
void release ()
 
void reset_data (float value=0.0)
 Set the density voxels to some calue and reset the managment flags. More...
 
bool same_dimensions (const DensityMap *other) const
 Checks if two maps have the same dimensions. More...
 
bool same_origin (const DensityMap *other) const
 Checks if two maps have the same origin. More...
 
bool same_voxel_size (const DensityMap *other) const
 Checks if two maps have the same voxel size. More...
 
void set_origin (float x, float y, float z)
 Sets the origin of the header. More...
 
void set_origin (const IMP::algebra::Vector3D &v)
 
void set_value (long index, emreal value)
 Set the value of the voxel at a given index. More...
 
void set_value (float x, float y, float z, emreal value)
 Set the value of the voxel at a given index. More...
 
void set_void_map (int nx, int ny, int nz)
 Set the map dimension and reset all voxels to 0. More...
 
void std_normalize ()
 Normailze the density voxles according to standard deviation (stdv). More...
 
void update_voxel_size (float new_apix)
 Updated the voxel size of the map.
 
int upper_voxel_shift (emreal loc, emreal kdist, emreal orig, int ndim) const
 
long xyz_ind2voxel (int x, int y, int z) const
 Calculate the voxel of a given xyz indexes. More...
 
- Public Member Functions inherited from IMP::base::Object
virtual void clear_caches ()
 
virtual IMP::base::VersionInfo get_version_info () const =0
 Get information about the module and version of the object.
 
void set_check_level (CheckLevel l)
 
void set_log_level (LogLevel l)
 Set the logging level used in this object. More...
 
void set_was_used (bool tf) const
 
void show (std::ostream &out=std::cout) const
 
const std::string & get_name () const
 
void set_name (std::string name)
 

Protected Member Functions

void allocated_data ()
 
void float2real (float *f_data, boost::scoped_array< emreal > &r_data)
 
void real2float (emreal *r_data, boost::scoped_array< float > &f_data)
 
void reset_all_voxel2loc ()
 
void update_header ()
 update the header values – still in work
 
- Protected Member Functions inherited from IMP::base::Object
 Object (std::string name)
 Construct an object with the given name. More...
 

Protected Attributes

boost::scoped_array< emreal > data_
 
bool data_allocated_
 
DensityHeader header_
 
bool loc_calculated_
 true if the locations have already been computed
 
bool normalized_
 
bool rms_calculated_
 
boost::scoped_array< float > x_loc_
 
boost::scoped_array< float > y_loc_
 
boost::scoped_array< float > z_loc_
 

Friends

DensityMapread_map (std::string filename, MapReaderWriter *reader)
 
void write_map (DensityMap *m, std::string filename, MapReaderWriter *writer)
 

Related Functions

(Note that these are not member functions.)

typedef IMP::base::Vector
< IMP::base::WeakPointer
< DensityMap > > 
DensityMapsTemp
 
double get_density (const DensityMap *m, const algebra::Vector3D &v)
 
DensityMapget_resampled (DensityMap *input, double scaling)
 Get a resampled version of the map. More...
 
DensityMapget_transformed (const DensityMap *input, const algebra::Transformation3D &tr, double threshold)
 
DensityMapget_transformed (DensityMap *input, const algebra::Transformation3D &tr)
 
void get_transformed_into (const DensityMap *source, const algebra::Transformation3D &tr, DensityMap *into, bool calc_rms=true)
 Rotate a density map into another map. More...
 
DensityMapread_map (std::string filename, MapReaderWriter *reader)
 
DensityMapread_map (std::string filename)
 
void write_map (DensityMap *m, std::string filename, MapReaderWriter *writer)
 
void write_map (DensityMap *m, std::string filename)
 

Detailed Description

Note
The location of a voxel is its center. That is important for sampling function as well as for functions like get_location_in_dim_by_voxel.

Definition at line 98 of file DensityMap.h.

Member Function Documentation

void IMP::em::DensityMap::add ( const DensityMap other)

Sums two grids. The result is kept in the map.

Parameters
[in]otherthe other map
Note
The shared extend is sumed
The two maps should have the same voxelsize and other should be contained within this map
emreal IMP::em::DensityMap::calcRMS ( )

The header stores whether map is normalized.

algebra::Vector3D IMP::em::DensityMap::get_centroid ( emreal  threshold = 0.0) const

Calculates the centroid of all the voxels with density above a given threshold

Parameters
[in]thresholdthe input threshold
DensityMap* IMP::em::DensityMap::get_cropped ( float  threshold)

The margins are determined to be the bounding box with density values below the input

Parameters
[in]thresholdused for cropping
DensityMap* IMP::em::DensityMap::get_cropped ( const algebra::BoundingBox3D bb)
Parameters
[in]bbthe bounding box
Note
If the input bounding box is larger than the density box, it is snapped to the right size.
int IMP::em::DensityMap::get_dim_index_by_location ( const algebra::Vector3D v,
int  ind 
) const
Parameters
[in]vThe position (in angstroms)
[in]inddimension index (X:0,Y:1 or Z:2)
algebra::Vector3D IMP::em::DensityMap::get_location_by_voxel ( long  index) const
Parameters
[in]indexThe voxel index
Returns
the location (x,y,z) (in angstroms) of a given voxel.

Definition at line 188 of file DensityMap.h.

float IMP::em::DensityMap::get_location_in_dim_by_voxel ( long  index,
int  dim 
) const
Parameters
[in]indexThe voxel index
[in]dimThe dimesion of intereset (x:=0,y:=1,z:=2)
Returns
the location (x,y,z) (in angstroms) of a given voxel. If the index is not part of the map, the function returns -1.
std::string IMP::em::DensityMap::get_locations_string ( float  t)

Prints the locations of all of the voxels with value above a given threshold into the input stream.

Float IMP::em::DensityMap::get_spacing ( ) const
Note
Use update_voxel_size() to set the spacing value.

Definition at line 429 of file DensityMap.h.

emreal IMP::em::DensityMap::get_value ( float  x,
float  y,
float  z 
) const
Parameters
[in]xThe position ( in angstroms) of the x coordinate
[in]yThe position ( in angstroms) of the y coordinate
[in]zThe position ( in angstroms) of the z coordinate
Returns
the value of the voxel located at (x,y,z)
Exceptions
IndexExceptionThe point is not covered by the grid.
emreal IMP::em::DensityMap::get_value ( long  index) const
Parameters
[in]indexvoxel number in physical sense, NOT logical
long IMP::em::DensityMap::get_voxel_by_location ( float  x,
float  y,
float  z 
) const
Parameters
[in]xThe position (in angstroms) of the x coordinate
[in]yThe position (in angstroms) of the y coordinate
[in]zThe position (in angstroms) of the z coordinate
Returns
the voxel index of a given position. If the position is out of the boundaries of the map, the function returns -1.
long IMP::em::DensityMap::get_voxel_by_location ( const algebra::Vector3D v) const
Parameters
[in]vThe position (in angstroms)
Returns
the voxel index of a given position. If the position is out of the boundaries of the map, the function returns -1.

Definition at line 175 of file DensityMap.h.

bool IMP::em::DensityMap::is_part_of_volume ( float  x,
float  y,
float  z 
) const
Parameters
[in]xThe position ( in angstroms) of the x coordinate
[in]yThe position ( in angstroms) of the y coordinate
[in]zThe position ( in angstroms) of the z coordinate
Returns
true if the point is part of the grid, false otherwise.
bool IMP::em::DensityMap::is_part_of_volume ( const algebra::Vector3D v) const
Parameters
[in]vThe position ( in angstroms)
Returns
true if the point is part of the grid, false otherwise.

Definition at line 209 of file DensityMap.h.

void IMP::em::DensityMap::multiply ( float  factor)

Multiply each voxel in the map by the input factor The result is kept in the map.

Parameters
[in]factorthe multiplication factor
void IMP::em::DensityMap::pad ( int  nx,
int  ny,
int  nz,
float  val = 0.0 
)

Increase the dimension of the map The function pads zeros to the right-upper section on the map. The original content of the map will be in the lower XYZ part of the map

Parameters
[in]nxthe number of voxels on the X axis
[in]nythe number of voxels on the Y axis
[in]nzthe number of voxels on the Z axis
[in]valall additional voxels will have this value
Exceptions
ifthe input x/y/z voxels is smaller than the one currently in the map
DensityMap* IMP::em::DensityMap::pad_margin ( int  mrg_x,
int  mrg_y,
int  mrg_z,
float  val = 0.0 
)

Given this map of size [nx,ny,nz], the new map is of size [2*mrg_x+nx,2*mrg_y+ny,2*mrg_z+nz]. The new map will consist of the values of the old map, padded margin on all sides.

Parameters
[in]mrg_xnumber of margin voxels to add on both right and left on the X axis
[in]mrg_ynumber of margin voxels to add on both right and left on the Y axis
[in]mrg_znumber of margin voxels to add on both right and left on the Z axis
[in]valignored
Exceptions
ifthe input x/y/z voxels is smaller than the one currently in the map
void IMP::em::DensityMap::pick_max ( const DensityMap other)

Pick the max value between two corresponding voxels between two maps The result is kept in the map.

Parameters
[in]otherthe other map
Note
The two maps should have the same voxelsize and the same dimensions
void IMP::em::DensityMap::reset_data ( float  value = 0.0)
Parameters
[in]valueall of the density voxels will have this value
bool IMP::em::DensityMap::same_dimensions ( const DensityMap other) const
Parameters
[in]otherthe map to compare with
Returns
true if the two maps have the same dimensions
bool IMP::em::DensityMap::same_origin ( const DensityMap other) const
Parameters
[in]otherthe map to compare with
Returns
true if the two maps have the same origin
bool IMP::em::DensityMap::same_voxel_size ( const DensityMap other) const
Parameters
[in]otherthe map to compare with
Returns
true if the two maps have the same voxel size
void IMP::em::DensityMap::set_origin ( float  x,
float  y,
float  z 
)
Parameters
xthe new x (angstroms)
ythe new y (angstroms)
zthe new z (angstroms)
void IMP::em::DensityMap::set_value ( long  index,
emreal  value 
)
Parameters
[in]indexvoxel number in physical sense, NOT logical
[in]valuevalue
void IMP::em::DensityMap::set_value ( float  x,
float  y,
float  z,
emreal  value 
)

index voxel number in physical sense, NOT logical

void IMP::em::DensityMap::set_void_map ( int  nx,
int  ny,
int  nz 
)
Parameters
[in]nxx-dimension (voxels)
[in]nyy-dimension (voxels)
[in]nzz-dimension (voxels)
Note
the origin and spacing remain unchanged
void IMP::em::DensityMap::std_normalize ( )

The mean is subtracted from the map, which is then divided by the stdv. The normalization flag is set to avoid repeated computation

long IMP::em::DensityMap::xyz_ind2voxel ( int  x,
int  y,
int  z 
) const
Parameters
[in]xThe voxel index on the x axis of the grid
[in]yThe voxel index on the y axis of the grid
[in]zThe voxel index on the z axis of the grid
Returns
the voxel index.

Definition at line 155 of file DensityMap.h.

Friends And Related Function Documentation

Pass a set of objects.

Definition at line 537 of file DensityMap.h.

double get_density ( const DensityMap m,
const algebra::Vector3D v 
)
related

Return the value for the density map, m, at point v, interpolating linearly from the sample values. The resulting function is C0 over R3.

DensityMap * get_resampled ( DensityMap input,
double  scaling 
)
related

The spacing is multiplied by scaling. That means, scaling values greater than 1 increase the voxel size.

DensityMap * get_transformed ( const DensityMap input,
const algebra::Transformation3D tr,
double  threshold 
)
related

Return a new density map containing a rotated version of the old one. Only voxels whose value is above threshold are considered when computing the bounding box of the new map (set IMP::em::get_bounding_box()).

DensityMap * get_transformed ( DensityMap input,
const algebra::Transformation3D tr 
)
related

Return a new density map containing a rotated version of the old one. The dimension of the new map is the same as the old one.

void get_transformed_into ( const DensityMap source,
const algebra::Transformation3D tr,
DensityMap into,
bool  calc_rms = true 
)
related
Parameters
[in]sourcethe map to transform
[in]trtransform the from density map by this transformation
[out]intothe map to tranform into
[in]calc_rmsif true RMS is calculated on the transformed map
DensityMap * read_map ( std::string  filename,
MapReaderWriter reader 
)
related

Read a density map from a file and return it.

DensityMap * read_map ( std::string  filename)
related

Read a density map from a file and return it. Guess the file type from the file name. The file formats supported are:

  • .mrc
  • .em
  • .vol
  • .xplor
DensityMap* read_map ( std::string  filename,
MapReaderWriter reader 
)
friend

Read a density map from a file and return it.

void write_map ( DensityMap m,
std::string  filename,
MapReaderWriter writer 
)
related

Write a density map to a file.

void write_map ( DensityMap m,
std::string  filename 
)
related

Write a density map to a file. Guess the file type from the file name. The file formats supported are:

  • .mrc
  • .em
  • .vol
  • .xplor
void write_map ( DensityMap m,
std::string  filename,
MapReaderWriter writer 
)
friend

Write a density map to a file.

Member Data Documentation

boost::scoped_array<float> IMP::em::DensityMap::x_loc_
protected

Locations for each of the voxels of the map (they are precomputed and each one is of size nvox, being nvox the size of the map)

Definition at line 479 of file DensityMap.h.


The documentation for this class was generated from the following file: