#include <fstream>#include <boost/shared_ptr.hpp>#include "emdata.h"#include "exception.h"#include "emobject.h"#include "interp.h"#include <utility>#include "reconstructor_tools.h"Include dependency graph for reconstructor.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Namespaces | |
| namespace | EMAN |
Classes | |
| class | EMAN::Reconstructor |
| Reconstructor class defines a way to do 3D recontruction. More... | |
| class | EMAN::ReconstructorVolumeData |
| This is a Mixin class A class object encapsulating the volume data required by Reconstructors It basically stores two (pointers) to EMData objectsd stores the dimensions of the image volume. More... | |
| class | EMAN::FourierReconstructorSimple2D |
| This class originally added for 2D experimentation and prototying. More... | |
| class | EMAN::FourierReconstructor |
| Fourier space 3D reconstruction The Fourier reconstructor is designed to work in an iterative fashion, where similarity ("quality") metrics are used to determine if a slice should be inserted into the 3D in each subsequent iteration. More... | |
| class | EMAN::WienerFourierReconstructor |
| Fourier space 3D reconstruction This is a modified version of the normal FourierReconstructor which is aware of the SSNR information stored in individual class-average headers as "ctf_snr_total" and "ctf_wiener_filtered". More... | |
| class | EMAN::BackProjectionReconstructor |
| Real space 3D reconstruction using back projection. More... | |
| class | EMAN::nn4Reconstructor |
| class | EMAN::nn4_rectReconstructor |
| Direct Fourier inversion Reconstructor for extremly rectangular object. More... | |
| class | EMAN::nnSSNR_Reconstructor |
| class | EMAN::nn4_ctfReconstructor |
| nn4_ctf Direct Fourier Inversion Reconstructor More... | |
| class | EMAN::nn4_ctf_rectReconstructor |
| nn4_ctf_rectDirect Fourier Inversion Reconstructor More... | |
| class | EMAN::nnSSNR_ctfReconstructor |
| struct | EMAN::point_t |
| class | EMAN::newfile_store |
| class | EMAN::file_store |
Defines | |
| #define | eman_reconstructor_h__ 1 |
| |
Functions | |
| EMData * | padfft_slice (const EMData *const slice, const Transform &t, int npad) |
| Direct Fourier inversion Reconstructor. | |
| void | dump_reconstructors () |
| map< string, vector< string > > | dump_reconstructors_list () |
|
|
Definition at line 37 of file reconstructor.h. |
|
|
Definition at line 4047 of file reconstructor.cpp. 04048 {
04049 dump_factory < Reconstructor > ();
04050 }
|
|
|
Definition at line 4052 of file reconstructor.cpp. 04053 {
04054 return dump_factory_list < Reconstructor > ();
04055 }
|
|
||||||||||||||||
|
Direct Fourier inversion Reconstructor.
Definition at line 1941 of file reconstructor.cpp. References Assert, EMAN::EMData::average_circ_sub(), EMAN::EMData::center_origin_fft(), checked_delete(), EMAN::EMData::do_fft_inplace(), EMAN::EMData::get_attr_default(), EMAN::Transform::get_trans_2d(), EMAN::EMData::get_xsize(), EMAN::EMData::get_ysize(), EMAN::EMData::norm_pad(), nx, ny, EMAN::EMData::process_inplace(), EMAN::EMData::set_attr(), t, and EMAN::Vec2f. Referenced by EMAN::file_store::add_image(), and EMAN::newfile_store::add_image(). 01942 {
01943 int nx = slice->get_xsize();
01944 int ny = slice->get_ysize();
01945 int ndim = (ny==1) ? 1 : 2;
01946
01947 if( ndim==2 && nx!=ny )
01948 {
01949 // FIXME: What kind of exception should we throw here?
01950 throw std::runtime_error("Tried to padfft a 2D slice which is not square.");
01951 }
01952
01953 // process 2D slice or 1D line -- subtract the average outside of the circle, zero-pad, fft extend, and fft
01954 EMData* temp = slice->average_circ_sub();
01955
01956 Assert( temp != NULL );
01957 EMData* zeropadded = temp->norm_pad( false, npad );
01958 Assert( zeropadded != NULL );
01959 checked_delete( temp );
01960
01961 zeropadded->do_fft_inplace();
01962 EMData* padfftslice = zeropadded;
01963
01964 // shift the projection
01965 Vec2f trans = t.get_trans_2d();
01966 float sx = -trans[0];
01967 float sy = -trans[1];
01968 if(sx != 0.0f || sy != 0.0)
01969 padfftslice->process_inplace("filter.shift", Dict("x_shift", sx, "y_shift", sy, "z_shift", 0.0f));
01970
01971 int remove = slice->get_attr_default("remove", 0);
01972 padfftslice->set_attr( "remove", remove );
01973
01974
01975
01976 padfftslice->center_origin_fft();
01977 return padfftslice;
01978 }
|
1.3.9.1