#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 | |
Processor * | NEW () |
Static Public Attributes | |
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 5536 of file processor.h.
|
Implements EMAN::FourierAnlProcessor. Definition at line 6071 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::Util::save_data(), EMAN::XYData::set_x(), EMAN::XYData::set_y(), sqrt(), and EMAN::XYData::write_file(). 06071 { 06072 // The radial mask comes in with the existing radial image profile 06073 // The radial mask runs from 0 to the 1-D Nyquist (it leaves out the corners in Fourier space) 06074 06075 EMData *to = params["to"]; 06076 XYData *sf = new XYData(); 06077 float apixto = to->get_attr("apix_x"); 06078 06079 06080 if (to->is_complex()) { 06081 vector<float> rd=to->calc_radial_dist(to->get_ysize()/2.0f,0,1.0f,1); 06082 for (size_t i=0; i<rd.size(); ++i) { 06083 sf->set_x(i,i/(apixto*2.0f*rd.size())); 06084 sf->set_y(i,rd[i]); 06085 } 06086 } 06087 else { 06088 EMData *tmp=to->do_fft(); 06089 vector<float> rd=tmp->calc_radial_dist(to->get_ysize()/2,0,1.0,1); 06090 for (size_t i=0; i<rd.size(); ++i) { 06091 sf->set_x(i,i/(apixto*2.0f*rd.size())); 06092 sf->set_y(i,rd[i]); 06093 } 06094 delete tmp; 06095 } 06096 06097 float apix=image->get_attr("apix_x"); 06098 06099 sf->write_file("a.txt"); 06100 Util::save_data(0,sf->get_x(1),radial_mask,"b.txt"); 06101 06102 int n = radial_mask.size(); 06103 for (int i=0; i<n; i++) { 06104 if (radial_mask[i]>0) radial_mask[i]= sqrt(sf->get_yatx(i/(apix*2.0f*n),false)/radial_mask[i]); 06105 else if (i>0) radial_mask[i]=radial_mask[i-1]; 06106 } 06107 06108 Util::save_data(0,sf->get_x(1),radial_mask,"c.txt"); 06109 06110 delete sf; 06111 }
|
|
Get the descrition of this specific processor. This function must be overwritten by a subclass.
Implements EMAN::Processor. Definition at line 5545 of file processor.h. 05546 { 05547 return "Filters the image so its 1-D power spectrum matches a second image"; 05548 }
|
|
Get the processor's name. Each processor is identified by a unique name.
Implements EMAN::Processor. Definition at line 5540 of file processor.h. 05541 {
05542 return NAME;
05543 }
|
|
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 5555 of file processor.h. References EMAN::TypeDict::put(). 05556 { 05557 TypeDict d; 05558 d.put("to", EMObject::EMDATA, "The image to match with. Make sure apix values are correct."); 05559 return d; 05560 }
|
|
Definition at line 5550 of file processor.h. 05551 { 05552 return new MatchSFProcessor(); 05553 }
|
|
Definition at line 184 of file processor.cpp. |