#include "emdata.h"
#include "ctf.h"
#include <cctype>
Include dependency graph for proc2d.cpp:
Go to the source code of this file.
Functions | |
void | usage (const char *progname) |
int | main (int argc, char *argv[]) |
int main | ( | int | argc, | |
char * | argv[] | |||
) |
Definition at line 45 of file proc2d.cpp.
References EMAN::EMData::append_image(), EMAN::EMData::apply_radial_func(), EMAN::EMData::calc_radial_dist(), EMAN::EMData::common_lines(), EMAN::EMData::common_lines_real(), EMAN::EMData::copy(), EMAN::EMData::do_fft(), EMAN::EMData::do_ift(), EMAN::EMData::do_radon(), EMAN::EMData::get_attr(), EMAN::EMData::get_xsize(), EMAN::EMData::get_ysize(), log10(), LOGERR, LOGWARN, norm(), nx, EMAN::EMData::process_inplace(), EMAN::EMData::read_image(), EMAN::EMData::rotate(), EMAN::rsub(), sqrt(), t, usage(), EMAN::E2Exception::what(), EMAN::EMData::write_image(), and y.
00046 { 00047 00048 if (argc < 3) { 00049 usage(argv[0]); 00050 exit(0); 00051 } 00052 00053 Util::set_log_level(argc, argv); 00054 00055 const int MAXMICROCTF = 1000; 00056 float *defocus_val = new float[MAXMICROCTF]; 00057 float *bfactor_val = new float[MAXMICROCTF]; 00058 00059 string center = "center"; 00060 string acfcenter = "acfcenter"; 00061 string invert = "invert"; 00062 string phot = "phot"; 00063 00064 string avgonly = "average"; 00065 EMData *average = 0; 00066 00067 string rfp = "rfp"; 00068 string noisemask = "noisemask"; 00069 string mraprep = "mraprep"; 00070 string ctfsplit = "ctfsplit"; 00071 string setsfpairs = "setsfpairs"; 00072 string norefs = "norefs"; 00073 string mrc8bit = "mrc8bit"; 00074 00075 string mrc = "mrc"; 00076 string pif = "pif"; 00077 string png = "png"; 00078 string hdf = "hdf"; 00079 string vtk = "vtk"; 00080 00081 string em = "em"; 00082 string spidersingle = "spider-single"; 00083 00084 string spider = "spider"; 00085 string rotav = "rotav"; 00086 string inplace = "inplace"; 00087 string rsub = "rsub"; 00088 00089 string flip = "flip"; 00090 string edgenorm = "edgenorm"; 00091 string radon = "radon"; 00092 00093 float blsigma1 = 0; 00094 float blsigma2 = 0; 00095 int bliter = 0; 00096 int blwidth = 0; 00097 00098 map < string, bool > argdict; 00099 map < string, string > argfilters; 00100 00101 float apix = 0; 00102 float lp = 0; 00103 float tlp = 0; 00104 00105 float hp = 0; 00106 float sharphp = 0; 00107 00108 int norm = 0; 00109 float nmean = 0; 00110 float nsig = 0; 00111 00112 float ramp = 0; 00113 int mask = 0; 00114 int imask = 0; 00115 float automask = 0; 00116 00117 float anoise = 0; 00118 float rot = 0; 00119 float dx = 0; 00120 float dy = 0; 00121 00122 int rize = 0; 00123 int rizef = 0; 00124 float rizedx = 0; 00125 float rizeda = 0; 00126 00127 float scale = 1; 00128 int clipx = -1; 00129 int clipy = -1; 00130 00131 int shrink = 1; 00132 int csym = 0; 00133 00134 int scl = 0; 00135 int sclmd = 0; 00136 00137 int pgm = 0; 00138 int pgmlo = 0; 00139 int pgmhi = 0; 00140 00141 bool rfilt = false; 00142 00143 const char *interleaved_file = 0; 00144 00145 int n0 = 0; 00146 int n1 = -1; 00147 00148 argfilters[noisemask] = "MakeRadiusSquared"; 00149 string filtername; 00150 Dict params_dict; 00151 00152 for (int i = 3; i < argc; i++) { 00153 const char *arg = argv[i]; 00154 00155 if (Util::get_str_float(arg, "apix=", &apix)) { 00156 } 00157 else if (Util::get_str_float(arg, "lp=", &lp)) { 00158 } 00159 else if (Util::get_str_float(arg, "tlp=", &tlp)) { 00160 } 00161 else if (Util::get_str_float(arg, "hp=", &hp)) { 00162 } 00163 else if (Util::get_str_float(arg, "sharphp=", &sharphp)) { 00164 } 00165 else if (Util::get_str_int(arg, "first=", &n0)) { 00166 } 00167 else if (Util::get_str_int(arg, "last=", &n1)) { 00168 } 00169 else if (Util::get_str_float(arg, "ramp=", &ramp)) { 00170 } 00171 else if (Util::get_str_int(arg, "mask=", &mask)) { 00172 } 00173 else if (Util::get_str_int(arg, "imask=", &imask)) { 00174 } 00175 else if (Util::get_str_float(arg, "addnoise=", &anoise)) { 00176 } 00177 else if (Util::get_str_float(arg, "rot=", &rot)) { 00178 } 00179 else if (Util::get_str_float(arg, "automask=", &automask)) { 00180 } 00181 else if (Util::get_str_float(arg, "trans=", &dx, &dy)) { 00182 } 00183 else if (Util::get_str_float(arg, "scale=", &scale)) { 00184 } 00185 else if (Util::get_str_int(arg, "clip=", &clipx, &clipy)) { 00186 } 00187 else if (Util::get_str_int(arg, "shrink=", &shrink)) { 00188 } 00189 else if (strncmp(argv[i], "blfilt=", 7) == 0) { 00190 sscanf(argv[i] + 7, "%f,%f,%d,%d", &blsigma1, &blsigma2, &bliter, &blwidth); 00191 } 00192 else if (strncmp(arg, "sym=", 4) == 0) { 00193 if (tolower(argv[i][4]) != 'c') { 00194 LOGERR("Only C symmetry currently supported!\n"); 00195 exit(1); 00196 } 00197 csym = atoi(&argv[i][5]); 00198 } 00199 else if (strncmp(arg, "randomize=", 10) == 0) { 00200 rize = 1; 00201 sscanf(&argv[i][10], "%f,%f,%d", &rizedx, &rizeda, &rizef); 00202 rizeda *= M_PI / 180.0f; 00203 } 00204 else if (Util::get_str_float(arg, "norm", &norm, &nmean, &nsig)) { 00205 if (norm != 2) { 00206 norm = 1; 00207 } 00208 } 00209 else if (strncmp(argv[i], "selfcl", 6) == 0) { 00210 if (argv[i][6] == '=') { 00211 sscanf(argv[i] + 7, "%d,%d", &scl, &sclmd); 00212 scl /= 2; 00213 } 00214 else { 00215 scl = 90; 00216 } 00217 } 00218 else if (strncmp(arg, "interlv=", 8) == 0) { 00219 interleaved_file = arg + 8; 00220 } 00221 else if (Util::get_str_int(arg, "pgm", &pgm, &pgmlo, &pgmhi)) { 00222 if (pgm != 2) { 00223 pgm = 1; 00224 } 00225 } 00226 else if (Util::sstrncmp(arg, noisemask.c_str())) { 00227 argfilters[noisemask] = "NoiseMask"; 00228 } 00229 else if (strncmp(arg, "rfilt=", 6) == 0) { 00230 rfilt = true; 00231 string s(&arg[6]); 00232 size_t cpos = s.find(":"); 00233 00234 if (cpos == string::npos) { 00235 filtername = s; 00236 } 00237 else { 00238 filtername = s.substr(0, cpos); 00239 size_t slen = s.length(); 00240 00241 while (cpos < slen) { 00242 size_t eqpos = s.find("=", cpos); 00243 string param1 = s.substr(cpos+1, eqpos-cpos-1); 00244 00245 cpos = s.find(":", cpos+1); 00246 string val1; 00247 if (cpos == string::npos) { 00248 val1 = s.substr(eqpos+1); 00249 cpos = slen; 00250 } 00251 else { 00252 val1 = s.substr(eqpos+1, cpos-eqpos-1); 00253 } 00254 00255 params_dict[param1] = atof(val1.c_str()); 00256 } 00257 } 00258 00259 } 00260 else { 00261 argdict[arg] = true; 00262 } 00263 } 00264 00265 00266 00267 EMData *d = new EMData(); 00268 00269 int nimg = EMUtil::get_image_count(argv[1]); 00270 if (nimg <= n1 || n1 < 0) { 00271 n1 = nimg - 1; 00272 } 00273 00274 char outfile[1024]; 00275 sprintf(outfile, "%s", argv[2]); 00276 char spiderformat[256]; 00277 00278 EMData *ld = new EMData(); 00279 vector < float >sfcurve1; 00280 try { 00281 for (int i = n0; i <= n1; i++) { 00282 d->read_image(argv[1], i); 00283 int nx = d->get_xsize(); 00284 00285 if ((argdict[ctfsplit] != 0) && (i == n0 || !EMUtil::is_same_ctf(d, ld))) { 00286 Ctf *ctf = d->get_ctf(); 00287 00288 int j = 0; 00289 for (j = 1; j < argdict[ctfsplit]; j++) { 00290 if (defocus_val[j] == ctf->get_defocus() && bfactor_val[j] == ctf->get_bfactor()) { 00291 break; 00292 } 00293 } 00294 if (argdict[ctfsplit] <= j) { 00295 argdict[ctfsplit] = j + 1; 00296 printf("New CTF at %d\n", i); 00297 } 00298 defocus_val[j] = ctf->get_defocus(); 00299 bfactor_val[j] = ctf->get_bfactor(); 00300 outfile[strlen(outfile) - 4] = 0; 00301 sprintf(outfile + strlen(outfile), ".%02d.img", j); 00302 00303 if( ld ) 00304 { 00305 delete ld; 00306 ld = 0; 00307 } 00308 ld = d->copy(); 00309 } 00310 00311 float sigma = d->get_attr("sigma"); 00312 if (!Util::goodf(&sigma)) { 00313 LOGWARN("Warning! bad Sigma for image %d in file '%s'", i, argv[1]); 00314 continue; 00315 } 00316 #if 0 00317 if (argdict[norefs] && d->get_nimg() < 0) { 00318 continue; 00319 } 00320 #endif 00321 if (argdict[edgenorm]) { 00322 d->process_inplace("normalize.circlemean"); 00323 } 00324 00325 if (norm == 1) { 00326 d->process_inplace("normalize"); 00327 } 00328 else if (norm == 2) { 00329 (*d) *= nsig / sigma; 00330 (*d) += nmean - (float)d->get_attr("mean"); 00331 } 00332 00333 if (argdict[flip]) { 00334 d->process_inplace("xform.flip", Dict("axis", "y")); 00335 } 00336 00337 if (argdict[invert]) { 00338 (*d) *= -1; 00339 } 00340 00341 if (ramp) { 00342 d->process_inplace("eman1.filter.ramp", Dict("intercept", 1, "slope", ramp)); 00343 } 00344 00345 int y = d->get_ysize(); 00346 00347 if (argdict[setsfpairs]) { 00348 if (mask) { 00349 d->process_inplace(argfilters[noisemask], Dict("outer_radius", mask)); 00350 } 00351 EMData *dataf = d->do_fft(); 00352 00353 float x0 = 0; 00354 float step = 0.5; 00355 00356 if (i % 2 == 0) { 00357 sfcurve1 = dataf->calc_radial_dist(nx, x0, step); 00358 } 00359 else { 00360 vector < float >sfcurve2 = dataf->calc_radial_dist(nx, x0, step); 00361 00362 for (int j = 0; j < nx; j++) { 00363 if (sfcurve1[j] > 0 && sfcurve2[j] > 0) { 00364 sfcurve2[j] = sqrt(sfcurve1[j] / sfcurve2[j]); 00365 } 00366 else { 00367 sfcurve2[j] = 0; 00368 } 00369 } 00370 00371 dataf->apply_radial_func(x0, step, sfcurve2); 00372 if( d ) 00373 { 00374 delete d; 00375 d = 0; 00376 } 00377 d = dataf->do_ift(); 00378 } 00379 00380 if( dataf ) 00381 { 00382 delete dataf; 00383 dataf = 0; 00384 } 00385 } 00386 00387 float Xlp = lp; 00388 float Xtlp = tlp; 00389 float Xhp = hp; 00390 float Xsharphp = sharphp; 00391 00392 if (apix > 0 && lp) { 00393 Xlp = y * apix / lp; 00394 } 00395 00396 if (apix > 0 && tlp) { 00397 Xtlp = y * apix / tlp; 00398 } 00399 00400 if (apix > 0 && hp) { 00401 Xhp = y * apix / hp; 00402 } 00403 00404 if (apix > 0 && sharphp) { 00405 Xsharphp = y * apix / sharphp; 00406 } 00407 00408 if (Xlp || Xhp) { 00409 d->process_inplace("filter.lowpass.gauss", Dict("cutoff_abs", Xhp == 0 ? -10.0 : Xhp)); 00410 d->process_inplace("filter.highpass.tanh", Dict("cutoff_abs", Xlp == 0 ? 100000.0 : Xlp)); 00411 } 00412 00413 if (Xtlp) { 00414 d->process_inplace("filter.lowpass.tanh", Dict("cutoff_abs", -10.0)); 00415 d->process_inplace("filter.highpass.tanh", Dict("cutoff_abs", Xtlp)); 00416 } 00417 00418 if (Xsharphp) { 00419 d->process_inplace("filter.lowpass.tophat", Dict("cutoff_abs", Xsharphp)); 00420 d->process_inplace("filter.highpass.tophat", Dict("cutoff_abs", 100000.0)); 00421 } 00422 00423 if (mask) { 00424 d->process_inplace(argfilters[noisemask], Dict("outer_radius", mask)); 00425 } 00426 00427 if (imask > 0) { 00428 d->process_inplace("mask.sharp", Dict("inner_radius", imask, "value", 0)); 00429 } 00430 00431 if (automask) { 00432 d->process_inplace("mask.auto2d", Dict("threshold", automask)); 00433 } 00434 00435 // uses correlation with 180 deg rot for centering 00436 if (argdict[acfcenter]) { 00437 Dict params; 00438 params["intonly"] = 1; 00439 params["maxshift"] = d->get_xsize() / 4; 00440 d->align("translate", 0, params); 00441 //d->rotate_translate(); 00442 } 00443 00444 if (argdict[center]) { 00445 d->process_inplace("xform.centerofmass", Dict("int_shift_only", 1)); 00446 } 00447 00448 if (argdict[phot]) { 00449 d->process_inplace("xform.phaseorigin"); 00450 } 00451 00452 if (anoise) { 00453 d->process_inplace("math.addnoise"); 00454 } 00455 00456 if (argdict[rfp]) { 00457 EMData *e = d->make_rotational_footprint(); 00458 e->append_image("rfp.hed"); 00459 } 00460 00461 00462 if (rot || dx || dy || rize) { 00463 if (!rize) { 00464 d->rotate_translate(rot * M_PI / 180.0f, 0, 0, dx, dy, 0); 00465 } 00466 else { 00467 if (rizef && rand() % 2) { 00468 d->process_inplace("xform.flip", Dict("axis", "y")); 00469 } 00470 00471 if (rizeda > 0) { 00472 d->rotate(Util::get_frand(-rizeda / 2.0f, rizeda / 2.0f), 0, 0); 00473 } 00474 00475 if (rizedx > 0) { 00476 d->translate(Util::get_gauss_rand(0, rizedx), 00477 Util::get_gauss_rand(0, rizedx), 0.0f); 00478 } 00479 } 00480 } 00481 00482 Dict rr = d->get_transform().get_rotation("eman"); 00483 //int nimg = d->get_nimg(); 00484 00485 if (scale < 1.0) { 00486 Transform t; 00487 t.set_scale(scale); 00488 d->transform(t); 00489 } 00490 00491 if (clipx > 0) { 00492 EMData *e = d->get_clip(Region((d->get_xsize() - clipx) / 2, 00493 (d->get_ysize() - clipy) / 2, 00494 clipx, clipy)); 00495 if( d ) 00496 { 00497 delete d; 00498 d = 0; 00499 } 00500 d = e; 00501 } 00502 00503 if (scale > 1.0) { 00504 Transform t; 00505 t.set_scale(scale); 00506 d->transform(t); 00507 } 00508 00509 d->set_rotation((float)rr["alt"], (float)rr["az"], (float)rr["phi"]); 00510 //d->setNImg(nimg); 00511 00512 if (fabs((float)shrink) > 1) { 00513 d->median_shrink((int) fabs((float)shrink)); 00514 } 00515 00516 if (argdict[rotav]) { 00517 d->process_inplace("math.rotationalaverage"); 00518 } 00519 00520 if (csym > 1) { 00521 EMData *f = d->copy(); 00522 00523 EMData *e = f->copy(); 00524 for (int j = 1; j < csym; j++) { 00525 e->rotate(j * M_PI * 2.0f / csym, 0, 0); 00526 (*d) += (*e); 00527 } 00528 00529 *d *= (1.0f / csym); 00530 00531 if( e ) 00532 { 00533 delete e; 00534 e = 0; 00535 } 00536 if( f ) 00537 { 00538 delete f; 00539 f = 0; 00540 } 00541 } 00542 00543 if (argdict[rsub]) { 00544 d->process_inplace("math.rotationalsubtract"); 00545 } 00546 00547 if (scl) { 00548 EMData *sc = new EMData(); 00549 if (sclmd == 0) { 00550 sc->common_lines_real(d, d, scl, true); 00551 } 00552 else { 00553 EMData *e = d->copy(); 00554 e->process_inplace("xform.phaseorigin"); 00555 00556 if (sclmd == 1) { 00557 sc->common_lines(e, e, sclmd, scl, true); 00558 sc->process_inplace("math.linear", Dict("shift", -90.0, "scale", -1.0)); 00559 } 00560 else if (sclmd == 2) { 00561 sc->common_lines(e, e, sclmd, scl, true); 00562 } 00563 else { 00564 LOGERR("Invalid common-lines mode"); 00565 exit(1); 00566 } 00567 if( e ) 00568 { 00569 delete e; 00570 e = 0; 00571 } 00572 } 00573 if( d ) 00574 { 00575 delete d; 00576 d = 0; 00577 } 00578 d = sc; 00579 00580 } 00581 00582 if (argdict[radon]) { 00583 EMData *r = d->do_radon(); 00584 if( d ) 00585 { 00586 delete d; 00587 d = 0; 00588 } 00589 d = r; 00590 } 00591 00592 if (rfilt) { 00593 d->process_inplace(filtername, params_dict); 00594 } 00595 00596 if (bliter > 0 && blwidth > 0) { 00597 Dict p; 00598 p["distance_sigma"] = blsigma1; 00599 p["value_sigma"] = blsigma2; 00600 p["niter"] = bliter; 00601 p["half_width"] = blwidth; 00602 00603 d->process_inplace("bilateral", p); 00604 } 00605 00606 #if 0 00607 if (filefilt) { 00608 EMData *d2 = d->do_fft(); 00609 if( d ) 00610 { 00611 delete d; 00612 d = 0; 00613 } 00614 00615 d2->apply_radial_func(nxyd, xd[0], xd[1] - xd[0], yd, true); 00616 d = d2->do_ift(); 00617 } 00618 #endif 00619 00620 if (argdict[avgonly]) { 00621 if (!average) { 00622 average = d->copy(); 00623 } 00624 else { 00625 (*average) += (*d); 00626 } 00627 continue; 00628 } 00629 #if 0 00630 if (fftavgfile) { 00631 if (!fftavg) { 00632 fftavg = new EMData; 00633 fftavg->setSize(d->get_xsize() + 2, d->get_ysize()); 00634 fftavg->setComplex(1); 00635 fftavg->zero(); 00636 } 00637 d->applyMask(-1, 6); 00638 d->normalize(); 00639 EMData *df = d->do_fft(); 00640 df->multConst(df->get_ysize()); // just for scaling of the intensity level 00641 fftavg->addIncoherent(df); 00642 00643 if( df ) 00644 { 00645 delete df; 00646 df = 0; 00647 } 00648 continue; // no writing yet 00649 } 00650 #endif 00651 00652 #if 0 00653 if (strlen(sfout)) { 00654 00655 int y = d->get_ysize(); 00656 float *curve = (float *) malloc(y * 4 * sizeof(float)); 00657 EMData *dataf = d->do_fft(); 00658 00659 dataf->calc_radial_dist(y, 0, .5, curve); 00660 // single images go to outfile 00661 if (n1 == 0) { 00662 save_data(0, 1.0 / (apix * 2.0 * y), curve, y, sfout); 00663 } 00664 // multi-images get numbered 00665 else { 00666 sprintf(outfile2, "%s.%03d", sfout, i + 100); 00667 save_data(0, 1.0 / (apix * 2.0 * y), curve, y, outfile2); 00668 } 00669 if (sfout_n) { 00670 for (int j = 0; j < sfout_n; j++) { 00671 dataf->calc_radial_dist(y, 0, .5, curve, j * 2 * M_PI / sfout_n, 00672 2 * M_PI / sfout_n); 00673 // single images go to outfile 00674 if (n1 == 0) { 00675 sprintf(outfile2, "%s-%d-%d.pwr", file_basename(sfout), j, sfout_n); 00676 save_data(0, 1.0 / (apix * 2.0 * y), curve, y, outfile2); 00677 } 00678 // multi-images get numbered 00679 else { 00680 sprintf(outfile2, "%s-%d-%d.pwr.%03d", file_basename(sfout), j, sfout_n, 00681 i + 100); 00682 save_data(0, 1.0 / (apix * 2.0 * y), curve, y, outfile2); 00683 } 00684 } 00685 } 00686 } 00687 #endif 00688 00689 if (argdict[mrc]) { 00690 if (n1 != 0) { 00691 sprintf(outfile, "%03d.%s", i + 100, outfile); 00692 } 00693 d->write_image(outfile, 0, EMUtil::IMAGE_MRC); 00694 } 00695 else if (argdict[spidersingle]) { 00696 if (n1 != 0) { 00697 sprintf(spiderformat, "%s%%0%dd.spi", outfile, (int) (log10((float) i)) + 1); 00698 sprintf(outfile, spiderformat, i); 00699 } 00700 00701 d->write_image(outfile, 0, EMUtil::IMAGE_SINGLE_SPIDER); 00702 } 00703 else if (argdict[hdf]) { 00704 d->append_image(outfile, EMUtil::IMAGE_HDF); 00705 } 00706 else if (argdict[em]) { 00707 d->write_image(outfile, 0, EMUtil::IMAGE_EM); 00708 } 00709 else if (argdict[pif]) { 00710 if (n1 != 0) { 00711 sprintf(outfile, "%03d.%s", i + 100, outfile); 00712 } 00713 00714 d->write_image(outfile, 0, EMUtil::IMAGE_PIF); 00715 } 00716 else if (argdict[png]) { 00717 if (n1 != 0) { 00718 sprintf(outfile, "%03d.%s", i + 100, outfile); 00719 } 00720 00721 d->write_image(outfile, 0, EMUtil::IMAGE_PNG); 00722 } 00723 else if (pgm) { 00724 if (pgmlo >= pgmhi) { 00725 pgmlo = (int) d->get_attr("minimum"); 00726 pgmhi = (int) d->get_attr("maximum"); 00727 } 00728 00729 d->set_attr("min_gray", pgmlo); 00730 d->set_attr("max_gray", pgmhi); 00731 00732 if (n1 != 0) { 00733 sprintf(outfile, "%03d.%s", i + 100, outfile); 00734 } 00735 d->write_image(outfile, 0, EMUtil::IMAGE_PGM); 00736 } 00737 else if (argdict[spider]) { 00738 d->write_image(outfile, 0, EMUtil::IMAGE_SPIDER); 00739 } 00740 else if (argdict[vtk]) { 00741 d->write_image(outfile, 0, EMUtil::IMAGE_VTK); 00742 } 00743 else { 00744 if (argdict[inplace]) { 00745 d->write_image(outfile, i); 00746 } 00747 else if (argdict[mraprep]) { 00748 char nf[1024]; 00749 sprintf(nf, "%s%04d.lst", outfile, i); 00750 d->write_image(nf, 0, EMUtil::IMAGE_LST); 00751 } 00752 else { 00753 d->append_image(outfile); 00754 } 00755 } 00756 00757 if (interleaved_file) { 00758 d->read_image(interleaved_file, i); 00759 d->write_image(outfile, -1, EMUtil::IMAGE_IMAGIC); 00760 } 00761 00762 } 00763 } 00764 catch(E2Exception &e ) { 00765 printf("%s\n", e.what()); 00766 } 00767 00768 if (average) { 00769 //average->setNImg(n1-n0+1); 00770 average->process_inplace("normalize"); 00771 average->write_image(outfile, -1); 00772 } 00773 #if 0 00774 if (fftavg) { 00775 fftavg->multConst(1. / sqrt((float) n1 - n0 + 1)); 00776 fftavg->writeMRC(fftavgfile); 00777 } 00778 #endif 00779 int n_outimg = EMUtil::get_image_count(argv[2]); 00780 printf("%d images\n", n_outimg); 00781 00782 if (d) { 00783 delete d; 00784 d = 0; 00785 } 00786 00787 if (ld) { 00788 delete ld; 00789 ld = 0; 00790 } 00791 00792 if( defocus_val ) 00793 { 00794 delete [] defocus_val; 00795 defocus_val = 0; 00796 } 00797 00798 if( bfactor_val ) 00799 { 00800 delete [] bfactor_val; 00801 bfactor_val = 0; 00802 } 00803 00804 return 0; 00805 }
void usage | ( | const char * | progname | ) |
Definition at line 40 of file proc2d.cpp.
00041 { 00042 printf("\n%s inputfile outputfile [-vN] [first=<n>] [last=<n>] [inplace] [edgenorm] [norm[=<mean>,<sigma>]] [invert] [flip] [rot=<angle>] [trans=<dx>,<dy>] [center] [acfcenter] [scale=<sca>] [clip=<x,y>] [shrink=<n>] [meanshrink=<n>] [apix=<A/pix>] [lp=<filt r>] [hp=<filt r>] [blfilt=<sigma1,sigma2,iter,localwidth>] [mask=<radius>] [imask=<radius>] [noisemask] [mrc] [automask=x] [pif] [hdf] [png] [em] [spider] [spider-single] [pgm[=<low>,<hi>]] [vtk] [sharphp=<pixels>] [norefs] [rotav] [average] [split=n] [ctfsplit] [interlv=<file 2 interleave>] [sym=<Cn>] [plt[=<plt file>]] [setsfpairs] [addnoise=<level>] [randomize=<dr>,<da>,<flip>] [selfcl[=<steps>][,<mode>]] [radon] [rfp] [mraprep] [phot] [rsub] rfilt=<filtername><:param1=value1><...>\n", progname); 00043 }