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 5152 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 5167 of file processor.h.

05168                 {
05169                         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.";
05170                 }

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 5157 of file processor.h.

References NAME.

05158                 {
05159                         return NAME;
05160                 }

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 5172 of file processor.h.

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

05173                 {
05174                         TypeDict d;
05175                         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");
05176                         d.put("snrfile", EMObject::STRING, "structure factor file name");
05177                         return d;
05178                 }

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

Definition at line 5162 of file processor.h.

05163                 {
05164                         return new SNRProcessor();
05165                 }

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 5636 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().

05637 {
05638         if (!image) {
05639                 return;
05640         }
05641 
05642         int wiener = params["wiener"];
05643         const char *snrfile = params["snrfile"];
05644 
05645         XYData sf;
05646         int err = sf.read_file(snrfile);
05647         if (err) {
05648                 LOGERR("couldn't read structure factor file!");
05649                 return;
05650         }
05651 
05652 
05653         for (size_t i = 0; i < sf.get_size(); i++) {
05654                 if (sf.get_y(i) <= 0) {
05655                         sf.set_y(i, -4.0f);
05656                 }
05657                 else {
05658                         sf.set_y(i, log10(sf.get_y(i)));
05659                 }
05660         }
05661         sf.update();
05662 
05663         Ctf *image_ctf = image->get_ctf();
05664 
05665         vector < float >ctf;
05666         if (wiener) {
05667                 ctf = image_ctf->compute_1d(image->get_ysize(),1.0f/(image_ctf->apix*image->get_ysize()), Ctf::CTF_WIENER_FILTER, &sf);
05668         }
05669         else {
05670                 ctf = image_ctf->compute_1d(image->get_ysize(),1.0f/(image_ctf->apix*image->get_ysize()), Ctf::CTF_SNR, &sf);
05671         }
05672 
05673         if(image_ctf) {delete image_ctf; image_ctf=0;}
05674 
05675         image->process_inplace("normalize.circlemean");
05676 
05677         int nx = image->get_xsize();
05678         int ny = image->get_ysize();
05679 
05680         Region clip_r(-nx / 2, -ny / 2, nx * 2, ny * 2);
05681         EMData *d3 = image->get_clip(clip_r);
05682         EMData *d2 = d3->do_fft();
05683 
05684         d2->apply_radial_func(0, 2.0f / Ctf::CTFOS, ctf, 0);
05685 
05686         if( d3 )
05687         {
05688                 delete d3;
05689                 d3 = 0;
05690         }
05691 
05692         if( image )
05693         {
05694                 delete image;
05695                 image = 0;
05696         }
05697 
05698         EMData *d1 = d2->do_ift();
05699         int d1_nx = d1->get_xsize();
05700         int d1_ny = d1->get_ysize();
05701         Region d1_r(d1_nx / 4, d1_ny / 4, d1_nx / 2, d1_ny / 2);
05702 
05703         image = d1->get_clip(d1_r);
05704 
05705         if( d1 )
05706         {
05707                 delete d1;
05708                 d1 = 0;
05709         }
05710 
05711         if( d2 )
05712         {
05713                 delete d2;
05714                 d2 = 0;
05715         }
05716 }


Member Data Documentation

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

Definition at line 5180 of file processor.h.

Referenced by get_name().


The documentation for this class was generated from the following files:
Generated on Tue May 25 17:17:22 2010 for EMAN2 by  doxygen 1.4.7