EMAN::XYZCmp Class Reference

XYZCmp is a cmp template for defining new cmps. More...

#include <cmp_template.h>

Inheritance diagram for EMAN::XYZCmp:

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

Collaboration graph
[legend]

List of all members.

Public Member Functions

float cmp (EMData *image, EMData *with) const
 To compare 'image' with another image passed in through its parameters.
string get_name () const
 Get the Cmp's name.
string get_desc () const
TypeDict get_param_types () const
 Add your cmp parameter names and types in get_param_types().

Static Public Member Functions

static CmpNEW ()


Detailed Description

XYZCmp is a cmp template for defining new cmps.

Please add your own code at the proper place.

1) Replace all 'XYZ' with your new cmp name. 2) Define the cmp parameter names and types in get_param_types(). 3) Implement the cmp in XYZCmp::cmp().

Definition at line 48 of file cmp_template.h.


Member Function Documentation

float XYZCmp::cmp ( EMData image,
EMData with 
) const [virtual]

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

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

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

Implements EMAN::Cmp.

Definition at line 38 of file cmp_template.cpp.

References EMAN::EMData::get_value_at(), EMAN::EMData::get_xsize(), EMAN::EMData::get_ysize(), nx, ny, EMAN::Cmp::params, and EMAN::Cmp::validate_input_args().

00039 {
00040         validate_input_args(image, with);
00041 
00042 #if 0
00043         int param1 = params["param1"];
00044         float param2 = params["param2"];
00045         // do something
00046 #endif
00047         int nx=image->get_xsize();
00048         int ny=image->get_ysize();
00049         
00050         double ret=0;
00051         for (int i=nx/4; i<nx*3/4; i++) {
00052                 for (int j=ny/4; j<ny*3/4; j++) {
00053                         ret+=image->get_value_at(i,j)*with->get_value_at(i,j);
00054                 }
00055         }
00056 
00057         return (float) ret;
00058 }

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

Get the Cmp's name.

Each Cmp is identified by a unique name.

Returns:
The Cmp's name.

Implements EMAN::Cmp.

Definition at line 53 of file cmp_template.h.

00054                 {
00055                         return "middle";
00056                 }

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

Implements EMAN::Cmp.

Definition at line 58 of file cmp_template.h.

00059                 {
00060                         return "dot product using the center of the image";
00061                 }

static Cmp* EMAN::XYZCmp::NEW (  )  [inline, static]

Definition at line 63 of file cmp_template.h.

Referenced by EMAN::CmpFactoryExt::CmpFactoryExt().

00064                 {
00065                         return new XYZCmp();
00066                 }

TypeDict EMAN::XYZCmp::get_param_types (  )  const [inline, virtual]

Add your cmp parameter names and types in get_param_types().

For available parameter types, please refer class EMObject.

As an example, XYZCmp has 3 parameters: EMData *with; int param1; float param2;

Implements EMAN::Cmp.

Definition at line 77 of file cmp_template.h.

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

00078                 {
00079                         TypeDict d;
00080                           d.put("radius", EMObject::INT);
00081                           d.put("param2", EMObject::FLOAT);
00082                           return d;
00083                 }


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

Generated on Sat Nov 21 02:20:51 2009 for EMAN2 by  doxygen 1.5.6