51 <<
"Input selfile: " <<
fnSel << std::endl
52 <<
"Input reference: " <<
fnRef << std::endl
53 <<
"Output rootname: " <<
fnRoot << std::endl
54 <<
"Number of iterations: " <<
Niter << std::endl
55 <<
"Do not check mirrors: " <<
dont_mirror << std::endl
56 <<
"PSPC: " <<
pspc << std::endl
64 addParamsLine(
" -i <selfile> : Selfile containing images to be aligned");
66 addParamsLine(
" [--ref <image=\"\">] : reference image; if none: pyramidal combination of subset of images");
67 addParamsLine(
" [--iter <N=5>] : Number of iterations to perform");
68 addParamsLine(
" [--do_not_check_mirrors] : Do not consider mirrors when aligning");
77 size_t imax=MDin.
size()/2;
78 size_t remaining=MDin.
size()-2*imax;
79 size_t Xdim, Ydim, Zdim, Ndim;
81 if (Zdim!=1 || Ndim!=1)
88 auto mdIdIter(MDin.
ids().begin());
95 std::cerr <<
"Aligning level " << level << std::endl;
97 for (
size_t i=0;
i<imax;
i++)
100 I1.readApplyGeo(MDin, *mdIdIter);
102 I2.readApplyGeo(MDin, *mdIdIter);
124 I1.write(
"PPPI1.xmp");
125 I2.write(
"PPPI2.xmp");
126 std::cout <<
"M=" << M;
127 std::cout <<
"Press any key\n";
138 I1.readApplyGeo(MDin, *mdIdIter);
140 fnOut.
compose(imax+1,fnOutputStack);
151 while (SFlevel.
size()>1)
168 size_t Xdim, Ydim, Zdim, Ndim;
170 if (Zdim!=1 || Ndim!=1)
172 Iref().initZeros(Ydim,Xdim);
176 std::cerr <<
"Computing average of images ...\n";
179 for (
size_t objId :
SF.
ids())
199 double lambda=1.0/(N/2.0);
210 for (
size_t objId :
SF.
ids())
214 I().setXmippOrigin();
230 double scale, shiftX, shiftY,
psi;
244 if ((++centerCount)%10==0)
254 I.
write(
"PPPexp.xmp");
255 std::cout <<
"Press any key\n";
282 Iref().setXmippOrigin();
292 std::cout <<
"Refining ...\n";
295 std::cerr <<
"Refinement iteration " <<
n << std::endl;
void init_progress_bar(long total)
void resize(size_t Ndim, size_t Zdim, size_t Ydim, size_t Xdim, bool copy=true)
void defineParams()
Define parameters.
double alignImages(const MultidimArray< double > &Iref, const AlignmentTransforms &IrefTransforms, MultidimArray< double > &I, Matrix2D< double > &M, bool wrap, AlignmentAux &aux, CorrelationAux &aux2, RotationalCorrelationAux &aux3)
#define REPORT_ERROR(nerr, ErrormMsg)
void apply_binary_mask(const MultidimArray< int > &mask, const MultidimArray< T > &m_in, MultidimArray< T > &m_out, T subs_val=(T) 0)
void BinaryCircularMask(MultidimArray< int > &mask, double radius, int mode, double x0, double y0, double z0)
void write(const FileName &name="", size_t select_img=ALL_IMAGES, bool isStack=false, int mode=WRITE_OVERWRITE, CastWriteMode castMode=CW_CAST, int _swapWrite=0)
void compose(const String &str, const size_t no, const String &ext="")
String integerToString(int I, int _width, char fill_with)
int readApplyGeo(const FileName &name, const MDRow &row, const ApplyGeoParams ¶ms=DefaultApplyGeoParams)
Matrix2D< double > centerImage(MultidimArray< double > &I, CorrelationAux &aux, RotationalCorrelationAux &aux2, int Niter, bool limitShift)
const char * getParam(const char *param, int arg=0)
Problem with matrix dimensions.
void progress_bar(long rlen)
#define FOR_ALL_DIRECT_ELEMENTS_IN_MULTIDIMARRAY(v)
#define DIRECT_MULTIDIM_ELEM(v, n)
void createEmptyFile(const FileName &filename, int xdim, int ydim, int Zdim, size_t select_img, bool isStack, int mode, int _swapWrite, const MDRowVec *md)
int verbose
Verbosity level.
void computeMean()
Compute mean.
void do_pspc()
Pyramidal combination of images to construct a reference.
double psi(const double x)
void alignPairs(MetaData &MDin, MetaData &MDout, int level)
Align pairs.
bool checkParam(const char *param)
int read(const FileName &name, DataMode datamode=DATA, size_t select_img=ALL_IMAGES, bool mapData=false, int mode=WRITE_READONLY)
void readParams()
Read argument.
void addUsageLine(const char *line, bool verbatim=false)
int getIntParam(const char *param, int arg=0)
void refinement()
Alignment of all images by iterative refinement.
double alignImagesConsideringMirrors(const MultidimArray< double > &Iref, const AlignmentTransforms &IrefTransforms, MultidimArray< double > &I, Matrix2D< double > &M, AlignmentAux &aux, CorrelationAux &aux2, RotationalCorrelationAux &aux3, bool wrap, const MultidimArray< int > *mask)
void addParamsLine(const String &line)