#include <cmp.h>
Inheritance diagram for EMAN::Cmp:
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 |
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:
vector<string> all_cmps = Factory<Cmp>::get_list();
EMData *image1 = ...; EMData *image2 = ...; Dict params = ...; float result = image1->cmp("CMP_NAME", image2, params);
float cmp(EMData * image, EMData * with) const; TypeDict get_param_types() const; string get_name() const { return "XYZ"; } static Cmp *NEW() { return XYZCmp(); }
Definition at line 85 of file cmp.h.
To compare 'image' with another image passed in through its parameters.
An optional transformation may be used to transform the 2 images.
image | The first image to be compared. | |
with | The second image to be comppared. |
Implemented in EMAN::CccCmp, EMAN::LodCmp, EMAN::SqEuclideanCmp, EMAN::DotCmp, EMAN::TomoCccCmp, EMAN::TomoFscCmp, EMAN::QuadMinDotCmp, 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.
Implemented in EMAN::CccCmp, EMAN::LodCmp, EMAN::SqEuclideanCmp, EMAN::DotCmp, EMAN::TomoCccCmp, EMAN::TomoFscCmp, EMAN::QuadMinDotCmp, 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.
Implemented in EMAN::CccCmp, EMAN::LodCmp, EMAN::SqEuclideanCmp, EMAN::DotCmp, EMAN::TomoCccCmp, EMAN::TomoFscCmp, EMAN::QuadMinDotCmp, EMAN::OptVarianceCmp, EMAN::PhaseCmp, EMAN::FRCCmp, and EMAN::XYZCmp.
virtual Dict EMAN::Cmp::get_params | ( | ) | const [inline, virtual] |
virtual void EMAN::Cmp::set_params | ( | const Dict & | new_params | ) | [inline, virtual] |
Definition at line 73 of file cmp.cpp.
References EMAN::EMData::get_data(), ImageFormatException, EMAN::EMUtil::is_same_size(), and NullPointerException.
Referenced by EMAN::XYZCmp::cmp(), EMAN::FRCCmp::cmp(), EMAN::OptVarianceCmp::cmp(), EMAN::QuadMinDotCmp::cmp(), EMAN::DotCmp::cmp(), EMAN::SqEuclideanCmp::cmp(), EMAN::LodCmp::cmp(), and EMAN::CccCmp::cmp().
00074 { 00075 00076 #ifdef EMAN2_USING_CUDA 00077 if (image->getcudarwdata() && with->getcudarwdata()) { 00078 //no need for futher checking, which will induce an expensive copy from device to host 00079 return; 00080 } 00081 #endif 00082 if (!image) { 00083 throw NullPointerException("compared image"); 00084 } 00085 if (!with) { 00086 throw NullPointerException("compare-with image"); 00087 } 00088 00089 if (!EMUtil::is_same_size(image, with)) { 00090 throw ImageFormatException( "images not same size"); 00091 } 00092 00093 float *d1 = image->get_data(); 00094 if (!d1) { 00095 throw NullPointerException("image contains no data"); 00096 } 00097 00098 float *d2 = with->get_data(); 00099 if (!d2) { 00100 throw NullPointerException("compare-with image data"); 00101 } 00102 }
Dict EMAN::Cmp::params [mutable, protected] |
Definition at line 136 of file cmp.h.
Referenced by EMAN::XYZCmp::cmp(), EMAN::FRCCmp::cmp(), EMAN::PhaseCmp::cmp(), EMAN::OptVarianceCmp::cmp(), EMAN::QuadMinDotCmp::cmp(), EMAN::TomoFscCmp::cmp(), EMAN::TomoCccCmp::cmp(), EMAN::DotCmp::cmp(), EMAN::SqEuclideanCmp::cmp(), EMAN::LodCmp::cmp(), EMAN::CccCmp::cmp(), get_params(), and set_params().