#include <processor.h>
Inheritance diagram for EMAN::MatchSFProcessor:
Public Member Functions | |
virtual string | get_name () const |
Get the processor's name. | |
virtual string | get_desc () const |
Get the descrition of this specific processor. | |
virtual TypeDict | get_param_types () const |
Get processor parameter information in a dictionary. | |
Static Public Member Functions | |
static Processor * | NEW () |
Static Public Attributes | |
static const string | NAME = "filter.matchto" |
Protected Member Functions | |
void | create_radial_func (vector< float > &radial_mask, EMData *image) const |
to | EMData object to match to. Make sure apix values are set properly |
Definition at line 5624 of file processor.h.
void MatchSFProcessor::create_radial_func | ( | vector< float > & | radial_mask, | |
EMData * | image | |||
) | const [protected, virtual] |
Implements EMAN::FourierAnlProcessor.
Definition at line 6038 of file processor.cpp.
References EMAN::EMData::calc_radial_dist(), EMAN::EMData::do_fft(), EMAN::EMData::get_attr(), EMAN::XYData::get_x(), EMAN::XYData::get_yatx(), EMAN::EMData::get_ysize(), EMAN::EMData::is_complex(), EMAN::Processor::params, EMAN::Util::save_data(), EMAN::XYData::set_x(), EMAN::XYData::set_y(), sqrt(), and EMAN::XYData::write_file().
06038 { 06039 // The radial mask comes in with the existing radial image profile 06040 // The radial mask runs from 0 to the 1-D Nyquist (it leaves out the corners in Fourier space) 06041 06042 EMData *to = params["to"]; 06043 XYData *sf = new XYData(); 06044 float apixto = to->get_attr("apix_x"); 06045 06046 06047 if (to->is_complex()) { 06048 vector<float> rd=to->calc_radial_dist(to->get_ysize()/2.0,0,1.0,1); 06049 for (size_t i=0; i<rd.size(); i++) { 06050 sf->set_x(i,i/(apixto*2.0f*rd.size())); 06051 sf->set_y(i,rd[i]); 06052 } 06053 } 06054 else { 06055 EMData *tmp=to->do_fft(); 06056 vector<float> rd=tmp->calc_radial_dist(to->get_ysize()/2,0,1.0,1); 06057 for (size_t i=0; i<rd.size(); i++) { 06058 sf->set_x(i,i/(apixto*2.0f*rd.size())); 06059 sf->set_y(i,rd[i]); 06060 } 06061 delete tmp; 06062 } 06063 06064 float apix=image->get_attr("apix_x"); 06065 06066 sf->write_file("a.txt"); 06067 Util::save_data(0,sf->get_x(1),radial_mask,"b.txt"); 06068 06069 int n = radial_mask.size(); 06070 for (int i=0; i<n; i++) { 06071 if (radial_mask[i]>0) radial_mask[i]= sqrt(sf->get_yatx(i/(apix*2.0f*n))/radial_mask[i]); 06072 else if (i>0) radial_mask[i]=radial_mask[i-1]; 06073 } 06074 06075 Util::save_data(0,sf->get_x(1),radial_mask,"c.txt"); 06076 06077 delete sf; 06078 }
virtual string EMAN::MatchSFProcessor::get_desc | ( | ) | const [inline, virtual] |
Get the descrition of this specific processor.
This function must be overwritten by a subclass.
Implements EMAN::Processor.
Definition at line 5633 of file processor.h.
virtual string EMAN::MatchSFProcessor::get_name | ( | ) | const [inline, virtual] |
Get the processor's name.
Each processor is identified by a unique name.
Implements EMAN::Processor.
Definition at line 5628 of file processor.h.
References NAME.
05629 { 05630 return NAME; 05631 }
virtual TypeDict EMAN::MatchSFProcessor::get_param_types | ( | ) | const [inline, virtual] |
Get processor parameter information in a dictionary.
Each parameter has one record in the dictionary. Each record contains its name, data-type, and description.
Reimplemented from EMAN::FourierAnlProcessor.
Definition at line 5643 of file processor.h.
References EMAN::EMObject::EMDATA, and EMAN::TypeDict::put().
05644 { 05645 TypeDict d; 05646 d.put("to", EMObject::EMDATA, "The image to match with. Make sure apix values are correct."); 05647 return d; 05648 }
static Processor* EMAN::MatchSFProcessor::NEW | ( | ) | [inline, static] |
const string MatchSFProcessor::NAME = "filter.matchto" [static] |