#include <reconstructor_tools.h>
Inheritance diagram for EMAN::FourierPixelInserter3D:
Public Member Functions | |
FourierPixelInserter3D () | |
Construct a FourierPixelInserter3D. | |
virtual | ~FourierPixelInserter3D () |
Desctruct a FourierPixelInserter3D. | |
TypeDict | get_param_types () const |
virtual bool | insert_pixel (const float &xx, const float &yy, const float &zz, const std::complex< float > dt, const float &weight=1.0)=0 |
Insert a complex pixel [dt[0]+dt[1]i] at (float) coordinate [xx,yy,zz] with weighting into a discrete 3D volume. | |
virtual void | init () |
Protected Attributes | |
float * | norm |
A pointer to the constructor argument normalize_values. | |
EMData * | data |
A pointer to the constructor argument real_data. | |
int | nx |
Image volume data sizes a convenience variable used here and there. | |
int | ny |
int | nz |
int | nxyz |
int | nx2 |
int | ny2 |
int | nz2 |
int | subx0 |
int | suby0 |
int | subz0 |
int | fullnx |
int | fullny |
int | fullnz |
Private Member Functions | |
FourierPixelInserter3D (const FourierPixelInserter3D &) | |
FourierPixelInserter3D & | operator= (const FourierPixelInserter3D &) |
void | free_memory () |
FourierPixelInserter3D class is the base class for all pixel inserters. Each specific pixel inserter class has a unique ID name. This name is used to create a FourierPixelInserter3D instance or do a pixel insertion. Currently these IDs are (strings) 1,2,3,4,5,6,7 - where mode 2 is currently the most popularly used pixel insertion mode as it generally performs well, and was the default mode in EMAN1 - it interpolates to the nearest 8 voxels using a gaussian weighting based on Euclidian distance
All FourierPixelInserter3D classes in EMAN2 are managed by a Factory pattern. So each FourierPixelInserter3D class must define:
Typical usages of FourierPixelInserter3D are as follows:
vector<string> all_pixel_inserters = Factory<FourierPixeldtInserter3D>::get_list();
// First set up the params correctly this is essential - setting up the params requires // these 5 parameters (only and always these 5). nx,ny, and nz are the dims of data and // norm, data is the (Fourier) EMData object, and norm is the associated normalization matrix. parms["data"] = image; parms["norm"] = tmp_data->get_data(); // The two is the ID of the FourierInserter3DMode2 in this case. FourierPixelInserter3D* r = Factory<FourierPixelInserter3D>::get("2", params); // Then call init - this causes all of the internal data to be stored correctly r->init() // Then tell the inserter to insert the pixel with real and imaginary components dt[0] and dt[1] at floating point coords [xx,yy,zz] // using the given weight - this is typically done for pixels in a set of many slices - see FourierReconstructor::insert_slice r->insert_pixel(xx, yy, zz, dt, weight)
Definition at line 97 of file reconstructor_tools.h.
EMAN::FourierPixelInserter3D::FourierPixelInserter3D | ( | ) | [inline] |
virtual EMAN::FourierPixelInserter3D::~FourierPixelInserter3D | ( | ) | [inline, virtual] |
Desctruct a FourierPixelInserter3D.
Definition at line 107 of file reconstructor_tools.h.
References free_memory().
00108 { 00109 free_memory(); 00110 }
EMAN::FourierPixelInserter3D::FourierPixelInserter3D | ( | const FourierPixelInserter3D & | ) | [private] |
void EMAN::FourierPixelInserter3D::free_memory | ( | ) | [inline, private] |
TypeDict EMAN::FourierPixelInserter3D::get_param_types | ( | ) | const [inline, virtual] |
Implements EMAN::FactoryBase.
Definition at line 112 of file reconstructor_tools.h.
References EMAN::EMObject::EMDATA, EMAN::EMObject::FLOAT_POINTER, and EMAN::TypeDict::put().
00113 { 00114 TypeDict d; 00115 d.put("data", EMObject::EMDATA); 00116 d.put("norm", EMObject::FLOAT_POINTER); 00117 return d; 00118 }
void FourierPixelInserter3D::init | ( | ) | [virtual] |
Reimplemented in EMAN::FourierInserter3DMode8.
Definition at line 64 of file reconstructor_tools.cpp.
References data, fullnx, fullny, fullnz, EMAN::EMData::get_attr(), EMAN::EMData::get_xsize(), EMAN::EMData::get_ysize(), EMAN::EMData::get_zsize(), EMAN::EMData::has_attr(), EMAN::Dict::has_key(), norm, NotExistingObjectException, nx, nx2, nxyz, ny, ny2, nz, nz2, EMAN::FactoryBase::params, subx0, suby0, and subz0.
Referenced by EMAN::FourierInserter3DMode8::init(), and EMAN::FourierReconstructor::load_inserter().
00065 { 00066 if ( params.has_key("data") ) 00067 { 00068 data = params["data"]; 00069 if ( data == 0 ) 00070 throw NotExistingObjectException("data", "error the data pointer was 0 in FourierPixelInserter3D::init"); 00071 } 00072 else throw NotExistingObjectException("data", "the data pointer was not defined in FourierPixelInserter3D::init"); 00073 00074 if ( params.has_key("norm")) 00075 { 00076 norm = params["norm"]; 00077 if ( norm == 0 ) 00078 throw NotExistingObjectException("norm", "error the norm pointer was 0 in FourierPixelInserter3D::init"); 00079 } 00080 else throw NotExistingObjectException("norm", "the norm pointer was not defined in FourierPixelInserter3D::init"); 00081 00082 nx=data->get_xsize(); 00083 ny=data->get_ysize(); 00084 nz=data->get_zsize(); 00085 nxyz=(size_t)nx*ny*nz; 00086 nx2=nx/2-1; 00087 ny2=ny/2; 00088 nz2=nz/2; 00089 00090 if (data->has_attr("subvolume_x0") && data->has_attr("subvolume_full_nx")) { 00091 subx0=data->get_attr("subvolume_x0"); 00092 suby0=data->get_attr("subvolume_y0"); 00093 subz0=data->get_attr("subvolume_z0"); 00094 fullnx=data->get_attr("subvolume_full_nx"); 00095 fullny=data->get_attr("subvolume_full_ny"); 00096 fullnz=data->get_attr("subvolume_full_nz"); 00097 } 00098 else { 00099 subx0=suby0=subz0=-1; 00100 } 00101 }
virtual bool EMAN::FourierPixelInserter3D::insert_pixel | ( | const float & | xx, | |
const float & | yy, | |||
const float & | zz, | |||
const std::complex< float > | dt, | |||
const float & | weight = 1.0 | |||
) | [pure virtual] |
Insert a complex pixel [dt[0]+dt[1]i] at (float) coordinate [xx,yy,zz] with weighting into a discrete 3D volume.
xx | the floating point x coordinate | |
yy | the floating point y coordinate | |
zz | the floating point z coordinate | |
dt | the complex pixel value (dt[0] is real, dt[1] is imaginary) | |
weight | the weight to given to this complex pixel |
Implemented in EMAN::FourierInserter3DMode1, EMAN::FourierInserter3DMode2, EMAN::FourierInserter3DMode3, EMAN::FourierInserter3DMode5, EMAN::FourierInserter3DMode6, EMAN::FourierInserter3DMode7, and EMAN::FourierInserter3DMode8.
Referenced by EMAN::WienerFourierReconstructor::do_insert_slice_work(), and EMAN::FourierReconstructor::do_insert_slice_work().
FourierPixelInserter3D& EMAN::FourierPixelInserter3D::operator= | ( | const FourierPixelInserter3D & | ) | [private] |
EMData* EMAN::FourierPixelInserter3D::data [protected] |
A pointer to the constructor argument real_data.
Definition at line 138 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode7::insert_pixel(), EMAN::FourierInserter3DMode6::insert_pixel(), EMAN::FourierInserter3DMode5::insert_pixel(), EMAN::FourierInserter3DMode3::insert_pixel(), EMAN::FourierInserter3DMode2::insert_pixel(), and EMAN::FourierInserter3DMode1::insert_pixel().
int EMAN::FourierPixelInserter3D::fullnx [protected] |
Definition at line 143 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode7::insert_pixel(), EMAN::FourierInserter3DMode6::insert_pixel(), EMAN::FourierInserter3DMode2::insert_pixel(), and EMAN::FourierInserter3DMode1::insert_pixel().
int EMAN::FourierPixelInserter3D::fullny [protected] |
Definition at line 143 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode7::insert_pixel(), EMAN::FourierInserter3DMode6::insert_pixel(), EMAN::FourierInserter3DMode2::insert_pixel(), and EMAN::FourierInserter3DMode1::insert_pixel().
int EMAN::FourierPixelInserter3D::fullnz [protected] |
Definition at line 143 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode7::insert_pixel(), EMAN::FourierInserter3DMode6::insert_pixel(), EMAN::FourierInserter3DMode2::insert_pixel(), and EMAN::FourierInserter3DMode1::insert_pixel().
float* EMAN::FourierPixelInserter3D::norm [protected] |
A pointer to the constructor argument normalize_values.
Definition at line 136 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode7::insert_pixel(), EMAN::FourierInserter3DMode6::insert_pixel(), EMAN::FourierInserter3DMode5::insert_pixel(), EMAN::FourierInserter3DMode3::insert_pixel(), EMAN::FourierInserter3DMode2::insert_pixel(), and EMAN::FourierInserter3DMode1::insert_pixel().
int EMAN::FourierPixelInserter3D::nx [protected] |
Image volume data sizes a convenience variable used here and there.
Definition at line 141 of file reconstructor_tools.h.
Referenced by EMAN::FourierInserter3DMode8::init(), init(), EMAN::FourierInserter3DMode7::insert_pixel(), and EMAN::FourierInserter3DMode6::insert_pixel().
int EMAN::FourierPixelInserter3D::nx2 [protected] |
Definition at line 142 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode5::insert_pixel(), EMAN::FourierInserter3DMode3::insert_pixel(), and EMAN::FourierInserter3DMode2::insert_pixel().
int EMAN::FourierPixelInserter3D::nxyz [protected] |
Definition at line 141 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode7::insert_pixel(), EMAN::FourierInserter3DMode6::insert_pixel(), EMAN::FourierInserter3DMode2::insert_pixel(), and EMAN::FourierInserter3DMode1::insert_pixel().
int EMAN::FourierPixelInserter3D::ny [protected] |
Definition at line 141 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode7::insert_pixel(), and EMAN::FourierInserter3DMode6::insert_pixel().
int EMAN::FourierPixelInserter3D::ny2 [protected] |
Definition at line 142 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode5::insert_pixel(), EMAN::FourierInserter3DMode3::insert_pixel(), and EMAN::FourierInserter3DMode2::insert_pixel().
int EMAN::FourierPixelInserter3D::nz [protected] |
Definition at line 141 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode7::insert_pixel(), and EMAN::FourierInserter3DMode6::insert_pixel().
int EMAN::FourierPixelInserter3D::nz2 [protected] |
Definition at line 142 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode5::insert_pixel(), EMAN::FourierInserter3DMode3::insert_pixel(), and EMAN::FourierInserter3DMode2::insert_pixel().
int EMAN::FourierPixelInserter3D::subx0 [protected] |
Definition at line 143 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode7::insert_pixel(), EMAN::FourierInserter3DMode6::insert_pixel(), EMAN::FourierInserter3DMode5::insert_pixel(), EMAN::FourierInserter3DMode3::insert_pixel(), EMAN::FourierInserter3DMode2::insert_pixel(), and EMAN::FourierInserter3DMode1::insert_pixel().
int EMAN::FourierPixelInserter3D::suby0 [protected] |
Definition at line 143 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode7::insert_pixel(), EMAN::FourierInserter3DMode6::insert_pixel(), EMAN::FourierInserter3DMode2::insert_pixel(), and EMAN::FourierInserter3DMode1::insert_pixel().
int EMAN::FourierPixelInserter3D::subz0 [protected] |
Definition at line 143 of file reconstructor_tools.h.
Referenced by init(), EMAN::FourierInserter3DMode7::insert_pixel(), EMAN::FourierInserter3DMode6::insert_pixel(), EMAN::FourierInserter3DMode2::insert_pixel(), and EMAN::FourierInserter3DMode1::insert_pixel().