#include "log.h"#include "emdata.h"#include "xydata.h"#include "assert.h"#include "projector.h"#include <sys/types.h>#include <sys/times.h>#include <time.h>#include <sys/time.h>#include "spidutil.h"Include dependency graph for doapmd.cpp:

Go to the source code of this file.
Defines | |
| #define | CLK_TCK 60 |
Functions | |
| double | mytimer () |
| int | main () |
|
|
Definition at line 44 of file doapmd.cpp. |
|
|
Definition at line 66 of file doapmd.cpp. References angles, apmd(), EMAN::EMData::get_ndim(), EMAN::EMData::get_xsize(), EMAN::EMData::get_ysize(), EMAN::EMData::get_zsize(), APMDopt::iskip, APMDopt::mode, APMDopt::mr, mytimer(), newangles, APMDopt::nr, nx, ny, EMAN::EMData::project(), EMAN::EMData::read_image(), and status. 00067 {
00068 EMData *volume = new EMData(); // initial volume
00069 EMData *expimg = new EMData(); // experimental image
00070
00071 Dict refparams;
00072 APMDopt options;
00073
00074 vector <float> angles;
00075 float delta, tlb, tub, plb, pub;
00076 int ndim, nx, ny, nz, nang, status;
00077 int nref, nimg, i;
00078 double t0, t1;
00079 float *newangles;
00080
00081 printf("reading a 3-D volume...\n");
00082 volume->read_image("vol001.tfc");
00083
00084 ndim = volume->get_ndim();
00085 nx = volume->get_xsize();
00086 ny = volume->get_ysize();
00087 nz = volume->get_zsize();
00088
00089 // print some stats
00090 printf("ndim = %d, nx = %d, ny = %d, nz = %d\n", ndim, nx, ny, nz);
00091
00092 // generate a set of reference projections from the volume
00093
00094 delta = 15.0;
00095 tlb = 0.0;
00096 tub = 90.0;
00097 plb = 0.0;
00098 pub = 359.9;
00099
00100 // angles used to generate reference projections
00101 angles = Util::voea(delta, tlb, tub, plb, pub);
00102 nang = angles.size()/3;
00103 printf("size(angles) = %d\n", nang);
00104
00105 refparams["anglelist"] = angles;
00106 refparams["angletype"] = "SPIDER";
00107 refparams["radius"] = 30.0;
00108 t0 = mytimer();
00109 printf("generating reference projections...\n");
00110 EMData* refprj = volume->project("pawel", refparams);
00111 t1 = mytimer() - t0;
00112 nref = refprj->get_zsize();
00113 printf("nref = %d\n", nref);
00114
00115 printf("time used in ref projection calculation = %11.3e\n", t1);
00116
00117 // read experimental images
00118 expimg->read_image("tf2d0001.tfc");
00119 nimg = expimg->get_zsize();
00120
00121 options.mr = 5;
00122 options.nr = 30;
00123 options.iskip = 1;
00124 options.mode = 'F';
00125
00126 // run APMD on expimg using refprj as the reference,
00127
00128 printf("running APMD...\n");
00129
00130 newangles = new float[nimg*3];
00131 status = apmd(refprj, refparams, expimg, options, newangles);
00132 if (status != 0) {
00133 fprintf(stderr, "APMD failed!\n");
00134 goto EXIT;
00135 }
00136
00137 for (i = 1; i<=nimg; i++)
00138 printf("psi = %g, theta = %g, phi = %g\n",
00139 newangles(1,i), newangles(2,i), newangles(3,i));
00140
00141 EXIT:
00142 if (volume) delete volume;
00143 if (expimg) delete expimg;
00144 if (refprj) delete refprj;
00145 if (newangles) delete newangles;
00146 return status;
00147 }
|
|
|
Definition at line 47 of file doapmd.cpp. Referenced by main(). 00048 {
00049 struct tms use;
00050 double tmp;
00051 times(&use);
00052 tmp = use.tms_utime;
00053 tmp += use.tms_stime;
00054 return (double)(tmp) / CLK_TCK;
00055 }
|
1.3.9.1