EMAN2
Public Member Functions | Static Public Member Functions | Static Public Attributes
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:
wienerif set to 1, then use wiener processor to process the images using the estimated SNR with CTF amplitude correction
snrfilestructure factor file name

Definition at line 5607 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 5622 of file processor.h.

                {
                        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.";
                }
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 5612 of file processor.h.

References NAME.

                {
                        return NAME;
                }
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 5627 of file processor.h.

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

                {
                        TypeDict d;
                        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");
                        d.put("snrfile", EMObject::STRING, "structure factor file name");
                        return d;
                }
static Processor* EMAN::SNRProcessor::NEW ( ) [inline, static]

Definition at line 5617 of file processor.h.

                {
                        return new SNRProcessor();
                }
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:
imageThe image to be processed.

Implements EMAN::Processor.

Definition at line 6219 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().

{
        if (!image) {
                return;
        }

        int wiener = params["wiener"];
        const char *snrfile = params["snrfile"];

        XYData sf;
        int err = sf.read_file(snrfile);
        if (err) {
                LOGERR("couldn't read structure factor file!");
                return;
        }


        for (size_t i = 0; i < sf.get_size(); i++) {
                if (sf.get_y(i) <= 0) {
                        sf.set_y(i, -4.0f);
                }
                else {
                        sf.set_y(i, log10(sf.get_y(i)));
                }
        }
        sf.update();

        Ctf *image_ctf = image->get_ctf();

        vector < float >ctf;
        if (wiener) {
                ctf = image_ctf->compute_1d(image->get_ysize(),1.0f/(image_ctf->apix*image->get_ysize()), Ctf::CTF_WIENER_FILTER, &sf);
        }
        else {
                ctf = image_ctf->compute_1d(image->get_ysize(),1.0f/(image_ctf->apix*image->get_ysize()), Ctf::CTF_SNR, &sf);
        }

        if(image_ctf) {delete image_ctf; image_ctf=0;}

        image->process_inplace("normalize.circlemean");

        int nx = image->get_xsize();
        int ny = image->get_ysize();

        Region clip_r(-nx / 2, -ny / 2, nx * 2, ny * 2);
        EMData *d3 = image->get_clip(clip_r);
        EMData *d2 = d3->do_fft();

        d2->apply_radial_func(0, 2.0f / Ctf::CTFOS, ctf, 0);

        if( d3 )
        {
                delete d3;
                d3 = 0;
        }

        if( image )
        {
                delete image;
                image = 0;
        }

        EMData *d1 = d2->do_ift();
        int d1_nx = d1->get_xsize();
        int d1_ny = d1->get_ysize();
        Region d1_r(d1_nx / 4, d1_ny / 4, d1_nx / 2, d1_ny / 2);

        image = d1->get_clip(d1_r);

        if( d1 )
        {
                delete d1;
                d1 = 0;
        }

        if( d2 )
        {
                delete d2;
                d2 = 0;
        }
}

Member Data Documentation

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

Definition at line 5635 of file processor.h.

Referenced by get_name().


The documentation for this class was generated from the following files: