#include <processor.h>


Public Member Functions | |
| string | get_name () const |
| Get the processor's name. | |
| void | process_inplace (EMData *image) |
| To process an image in-place. | |
| void | set_params (const Dict &new_params) |
| Set the processor parameters using a key/value dictionary. | |
| TypeDict | get_param_types () const |
| Get processor parameter information in a dictionary. | |
| string | get_desc () const |
| Get the descrition of this specific processor. | |
Static Public Member Functions | |
| static Processor * | NEW () |
Protected Attributes | |
| EMData * | sum |
| int | dosqrt |
| sum | Adds the weights to sum for normalization | |
| sqrt | Weights using sqrt of the amplitude if set |
Definition at line 441 of file processor.h.
| string EMAN::AmpweightFourierProcessor::get_name | ( | ) | const [inline, virtual] |
Get the processor's name.
Each processor is identified by a unique name.
Implements EMAN::Processor.
Definition at line 444 of file processor.h.
| void AmpweightFourierProcessor::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.
| image | The image to be processed. |
Implements EMAN::Processor.
Definition at line 497 of file processor.cpp.
References EMAN::EMData::do_fft(), EMAN::EMData::do_ift(), dosqrt, EMAN::EMData::get_data(), EMAN::EMData::get_xsize(), EMAN::EMData::get_ysize(), EMAN::EMData::get_zsize(), EMAN::EMData::is_complex(), LOGWARN, sum, and EMAN::EMData::update().
00498 { 00499 EMData *fft; 00500 float *fftd; 00501 int i,f=0; 00502 // static float sum1=0,sum1a=0; 00503 // static double sum2=0,sum2a=0; 00504 00505 if (!image) { 00506 LOGWARN("NULL Image"); 00507 return; 00508 } 00509 00510 if (!image->is_complex()) { 00511 fft = image->do_fft(); 00512 fftd = fft->get_data(); 00513 f=1; 00514 } 00515 else { 00516 fft=image; 00517 fftd=image->get_data(); 00518 } 00519 float *sumd = NULL; 00520 if (sum) sumd=sum->get_data(); 00521 //printf("%d %d %d %d\n",fft->get_xsize(),fft->get_ysize(),sum->get_xsize(),sum->get_ysize()); 00522 int n = fft->get_xsize()*fft->get_ysize()*fft->get_zsize(); 00523 for (i=0; i<n; i+=2) { 00524 float c; 00525 if (dosqrt) c=pow(fftd[i]*fftd[i]+fftd[i+1]*fftd[i+1],0.25f); 00526 #ifdef _WIN32 00527 else c = static_cast<float>(_hypot(fftd[i],fftd[i+1])); 00528 #else 00529 else c = static_cast<float>(hypot(fftd[i],fftd[i+1])); 00530 #endif //_WIN32 00531 if (c==0) c=1.0e-30f; // prevents divide by zero in normalization 00532 fftd[i]*=c; 00533 fftd[i+1]*=c; 00534 if (sumd) { sumd[i]+=c; sumd[i+1]+=0; } 00535 00536 // debugging 00537 /* if (i==290*1+12) { 00538 sum1+=fftd[i]; 00539 sum2+=fftd[i]; 00540 printf("%f\t%f\t%f\t%f\t%f\t%f\n",sum1,sum2,fftd[i],fftd[i+1],sumd[i],c); 00541 } 00542 if (i==290*50+60) { 00543 sum1a+=fftd[i]; 00544 sum2a+=fftd[i]; 00545 printf("%f\t%f\t%f\t%f\t%f\t%f\n",sum1a,sum2a,fftd[i],fftd[i+1],sumd[i],c); 00546 }*/ 00547 } 00548 00549 if (f) { 00550 fft->update(); 00551 EMData *ift=fft->do_ift(); 00552 memcpy(image->get_data(),ift->get_data(),n*sizeof(float)); 00553 delete fft; 00554 delete ift; 00555 } 00556 00557 sum->update(); 00558 image->update(); 00559 00560 }
| void EMAN::AmpweightFourierProcessor::set_params | ( | const Dict & | new_params | ) | [inline, virtual] |
Set the processor parameters using a key/value dictionary.
| new_params | A dictionary containing the new parameters. |
Reimplemented from EMAN::Processor.
Definition at line 451 of file processor.h.
References dosqrt, EMAN::Processor::params, and sum.
00452 { 00453 params = new_params; 00454 sum = params["sum"]; 00455 dosqrt = params["sqrt"]; 00456 // printf("%s %f\n",params.keys()[0].c_str(),lowpass); 00457 }
| TypeDict EMAN::AmpweightFourierProcessor::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.
Reimplemented from EMAN::Processor.
Definition at line 459 of file processor.h.
References EMAN::EMObject::EMDATA, EMAN::EMObject::INT, and EMAN::TypeDict::put().
00460 { 00461 TypeDict d; 00462 d.put("sum", EMObject::EMDATA, "Adds the weights to sum for normalization"); 00463 d.put("sqrt", EMObject::INT, "Weights using sqrt of the amplitude if set"); 00464 return d; 00465 }
| static Processor* EMAN::AmpweightFourierProcessor::NEW | ( | ) | [inline, static] |
Definition at line 467 of file processor.h.
00468 { 00469 return new AmpweightFourierProcessor(); 00470 }
| string EMAN::AmpweightFourierProcessor::get_desc | ( | ) | const [inline, virtual] |
Get the descrition of this specific processor.
This function must be overwritten by a subclass.
Implements EMAN::Processor.
Definition at line 472 of file processor.h.
EMData* EMAN::AmpweightFourierProcessor::sum [protected] |
int EMAN::AmpweightFourierProcessor::dosqrt [protected] |
1.5.6