EMAN::SNRProcessor Class Reference

Processor the images by the estimated SNR in each image.if parameter 'wiener' is 1, then wiener processor the images using the estimated SNR with CTF amplitude correction. More...

#include <processor.h>

Inheritance diagram for EMAN::SNRProcessor:

Inheritance graph
[legend]
Collaboration diagram for EMAN::SNRProcessor:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual void process_inplace (EMData *image)
 To process an image in-place.
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 ProcessorNEW ()

Static Public Attributes

static const string NAME = "eman1.filter.snr"

Detailed Description

Processor the images by the estimated SNR in each image.if parameter 'wiener' is 1, then wiener processor the images using the estimated SNR with CTF amplitude correction.

Parameters:
wiener if set to 1, then use wiener processor to process the images using the estimated SNR with CTF amplitude correction
snrfile structure factor file name

Definition at line 5236 of file processor.h.


Member Function Documentation

virtual string EMAN::SNRProcessor::get_desc (  )  const [inline, virtual]

Get the descrition of this specific processor.

This function must be overwritten by a subclass.

Returns:
The description of this processor.

Implements EMAN::Processor.

Definition at line 5251 of file processor.h.

05252                 {
05253                         return "Processor the images by the estimated SNR in each image.if parameter 'wiener' is 1, then wiener processor the images using the estimated SNR with CTF amplitude correction.";
05254                 }

virtual string EMAN::SNRProcessor::get_name (  )  const [inline, virtual]

Get the processor's name.

Each processor is identified by a unique name.

Returns:
The processor's name.

Implements EMAN::Processor.

Definition at line 5241 of file processor.h.

References NAME.

05242                 {
05243                         return NAME;
05244                 }

virtual TypeDict EMAN::SNRProcessor::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.

Returns:
A dictionary containing the parameter info.

Reimplemented from EMAN::Processor.

Definition at line 5256 of file processor.h.

References EMAN::EMObject::INT, EMAN::TypeDict::put(), and EMAN::EMObject::STRING.

05257                 {
05258                         TypeDict d;
05259                         d.put("wiener", EMObject::INT, "if set to 1,  then use wiener processor to process the images using the estimated SNR with CTF amplitude correction");
05260                         d.put("snrfile", EMObject::STRING, "structure factor file name");
05261                         return d;
05262                 }

static Processor* EMAN::SNRProcessor::NEW (  )  [inline, static]

Definition at line 5246 of file processor.h.

05247                 {
05248                         return new SNRProcessor();
05249                 }

void SNRProcessor::process_inplace ( EMData image  )  [virtual]

To process an image in-place.

For those processors which can only be processed out-of-place, override this function to just print out some error message to remind user call the out-of-place version.

Parameters:
image The image to be processed.

Implements EMAN::Processor.

Definition at line 5873 of file processor.cpp.

References EMAN::Ctf::apix, EMAN::EMData::apply_radial_func(), EMAN::Ctf::compute_1d(), EMAN::Ctf::CTF_SNR, EMAN::Ctf::CTF_WIENER_FILTER, EMAN::Ctf::CTFOS, EMAN::EMData::do_fft(), EMAN::EMData::do_ift(), EMAN::EMData::get_clip(), EMAN::EMData::get_ctf(), EMAN::XYData::get_size(), EMAN::EMData::get_xsize(), EMAN::XYData::get_y(), EMAN::EMData::get_ysize(), log10(), LOGERR, EMAN::Processor::params, EMAN::EMData::process_inplace(), EMAN::XYData::read_file(), EMAN::XYData::set_y(), and EMAN::XYData::update().

05874 {
05875         if (!image) {
05876                 return;
05877         }
05878 
05879         int wiener = params["wiener"];
05880         const char *snrfile = params["snrfile"];
05881 
05882         XYData sf;
05883         int err = sf.read_file(snrfile);
05884         if (err) {
05885                 LOGERR("couldn't read structure factor file!");
05886                 return;
05887         }
05888 
05889 
05890         for (size_t i = 0; i < sf.get_size(); i++) {
05891                 if (sf.get_y(i) <= 0) {
05892                         sf.set_y(i, -4.0f);
05893                 }
05894                 else {
05895                         sf.set_y(i, log10(sf.get_y(i)));
05896                 }
05897         }
05898         sf.update();
05899 
05900         Ctf *image_ctf = image->get_ctf();
05901 
05902         vector < float >ctf;
05903         if (wiener) {
05904                 ctf = image_ctf->compute_1d(image->get_ysize(),1.0f/(image_ctf->apix*image->get_ysize()), Ctf::CTF_WIENER_FILTER, &sf);
05905         }
05906         else {
05907                 ctf = image_ctf->compute_1d(image->get_ysize(),1.0f/(image_ctf->apix*image->get_ysize()), Ctf::CTF_SNR, &sf);
05908         }
05909 
05910         if(image_ctf) {delete image_ctf; image_ctf=0;}
05911 
05912         image->process_inplace("normalize.circlemean");
05913 
05914         int nx = image->get_xsize();
05915         int ny = image->get_ysize();
05916 
05917         Region clip_r(-nx / 2, -ny / 2, nx * 2, ny * 2);
05918         EMData *d3 = image->get_clip(clip_r);
05919         EMData *d2 = d3->do_fft();
05920 
05921         d2->apply_radial_func(0, 2.0f / Ctf::CTFOS, ctf, 0);
05922 
05923         if( d3 )
05924         {
05925                 delete d3;
05926                 d3 = 0;
05927         }
05928 
05929         if( image )
05930         {
05931                 delete image;
05932                 image = 0;
05933         }
05934 
05935         EMData *d1 = d2->do_ift();
05936         int d1_nx = d1->get_xsize();
05937         int d1_ny = d1->get_ysize();
05938         Region d1_r(d1_nx / 4, d1_ny / 4, d1_nx / 2, d1_ny / 2);
05939 
05940         image = d1->get_clip(d1_r);
05941 
05942         if( d1 )
05943         {
05944                 delete d1;
05945                 d1 = 0;
05946         }
05947 
05948         if( d2 )
05949         {
05950                 delete d2;
05951                 d2 = 0;
05952         }
05953 }


Member Data Documentation

const string SNRProcessor::NAME = "eman1.filter.snr" [static]

Definition at line 5264 of file processor.h.

Referenced by get_name().


The documentation for this class was generated from the following files:
Generated on Tue Jun 11 12:44:27 2013 for EMAN2 by  doxygen 1.4.7