EMAN2
Public Member Functions | Protected Member Functions | Protected Attributes
EMAN::Cmp Class Reference

Cmp class defines image comparison method. More...

#include <cmp.h>

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

List of all members.

Public Member Functions

virtual ~Cmp ()
virtual float cmp (EMData *image, EMData *with) const =0
 To compare 'image' with another image passed in through its parameters.
virtual string get_name () const =0
 Get the Cmp's name.
virtual string get_desc () const =0
virtual Dict get_params () const
 Get the Cmp parameters in a key/value dictionary.
virtual void set_params (const Dict &new_params)
 Set the Cmp parameters using a key/value dictionary.
virtual TypeDict get_param_types () const =0
 Get Cmp parameter information in a dictionary.

Protected Member Functions

void validate_input_args (const EMData *image, const EMData *with) const

Protected Attributes

Dict params

Detailed Description

Cmp class defines image comparison method.

Using default arguments, smaller values indicate more similar images.

Cmp class is the base comparison class. Each specific comparison class is a subclass of Cmp, and must have a unique name. The name is used to create a new Cmp instance or call a Cmp.

All Cmp classes in EMAN are managed by a Factory pattern. So each Cmp class must define:

Typical usage of Cmp:

Definition at line 85 of file cmp.h.


Constructor & Destructor Documentation

virtual EMAN::Cmp::~Cmp ( ) [inline, virtual]

Definition at line 88 of file cmp.h.

                {
                }

Member Function Documentation

virtual float EMAN::Cmp::cmp ( EMData image,
EMData with 
) const [pure virtual]

To compare 'image' with another image passed in through its parameters.

An optional transformation may be used to transform the 2 images.

Parameters:
imageThe first image to be compared.
withThe second image to be comppared.
Returns:
The comparison result. Smaller better by default

Implemented in EMAN::CccCmp, EMAN::LodCmp, EMAN::SqEuclideanCmp, EMAN::DotCmp, EMAN::TomoCccCmp, EMAN::TomoFscCmp, EMAN::QuadMinDotCmp, EMAN::OptSubCmp, EMAN::OptVarianceCmp, EMAN::PhaseCmp, EMAN::FRCCmp, and EMAN::XYZCmp.

Referenced by EMAN::Refine3DAlignerGrid::align(), EMAN::EMData::cmp(), EMAN::KMeansAnalyzer::reclassify(), refalifn(), refalifn3dquat(), symquat(), EMAN::RT3DSphereAligner::xform_align_nbest(), and EMAN::RT3DGridAligner::xform_align_nbest().

virtual string EMAN::Cmp::get_desc ( ) const [pure virtual]
virtual string EMAN::Cmp::get_name ( ) const [pure virtual]

Get the Cmp's name.

Each Cmp is identified by a unique name.

Returns:
The Cmp's name.

Implemented in EMAN::CccCmp, EMAN::LodCmp, EMAN::SqEuclideanCmp, EMAN::DotCmp, EMAN::TomoCccCmp, EMAN::TomoFscCmp, EMAN::QuadMinDotCmp, EMAN::OptSubCmp, EMAN::OptVarianceCmp, EMAN::PhaseCmp, EMAN::FRCCmp, and EMAN::XYZCmp.

virtual TypeDict EMAN::Cmp::get_param_types ( ) const [pure virtual]

Get Cmp 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.

Implemented in EMAN::CccCmp, EMAN::LodCmp, EMAN::SqEuclideanCmp, EMAN::DotCmp, EMAN::TomoCccCmp, EMAN::TomoFscCmp, EMAN::QuadMinDotCmp, EMAN::OptSubCmp, EMAN::OptVarianceCmp, EMAN::PhaseCmp, EMAN::FRCCmp, and EMAN::XYZCmp.

virtual Dict EMAN::Cmp::get_params ( ) const [inline, virtual]

Get the Cmp parameters in a key/value dictionary.

Returns:
A key/value pair dictionary containing the parameters.

Definition at line 112 of file cmp.h.

References params.

                {
                        return params;
                }
virtual void EMAN::Cmp::set_params ( const Dict new_params) [inline, virtual]

Set the Cmp parameters using a key/value dictionary.

Parameters:
new_paramsA dictionary containing the new parameters.

Definition at line 120 of file cmp.h.

References params.

                {
                        params = new_params;
                }
void Cmp::validate_input_args ( const EMData image,
const EMData with 
) const [protected]

Definition at line 75 of file cmp.cpp.

References EMAN::EMData::get_data(), ImageFormatException, EMAN::EMUtil::is_same_size(), and NullPointerException.

Referenced by EMAN::XYZCmp::cmp(), EMAN::OptSubCmp::cmp(), EMAN::FRCCmp::cmp(), EMAN::OptVarianceCmp::cmp(), EMAN::QuadMinDotCmp::cmp(), EMAN::DotCmp::cmp(), EMAN::SqEuclideanCmp::cmp(), EMAN::LodCmp::cmp(), and EMAN::CccCmp::cmp().

{
        
#ifdef EMAN2_USING_CUDA  
        if (image->getcudarwdata() && with->getcudarwdata()) {
                //no need for futher checking, which will induce an expensive copy from device to host
                return;
        }
#endif
        if (!image) {
                throw NullPointerException("compared image");
        }
        if (!with) {
                throw NullPointerException("compare-with image");
        }

        if (!EMUtil::is_same_size(image, with)) {
                throw ImageFormatException( "images not same size");
        }

        float *d1 = image->get_data();
        if (!d1) {
                throw NullPointerException("image contains no data");
        }

        float *d2 = with->get_data();
        if (!d2) {
                throw NullPointerException("compare-with image data");
        }
}

Member Data Documentation

Dict EMAN::Cmp::params [mutable, protected]

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