47 std::cout <<
newXdim << std::endl;
53 addUsageLine(
"Determine the angular determination accuracy of a set of particles and a 3D reconstruction ");
55 addParamsLine(
" [--i2 <md_file=\"\">] : Metadata file with neighbour projections");
56 addParamsLine(
" [ -o <md_file=\"\">] : Metadata file with obtained weights");
57 addParamsLine(
" [--dim <d=-1>] : Scale images to this size if they are larger.");
75 for (
size_t i = 0;
i < blocks.size(); ++
i)
84 else if ( md.
size() > 20 )
86 else if ( (md.
size() >= 5) & (md.
size() < 20) )
106 double pcaResidualProj,pcaResidualExp,pcaResidual,Zscore,temp,qResidualProj,qResidualExp,qZscore;
119 for (
size_t i=0;
i<=maxIdx;
i++)
124 if (tempMd.
size() <= 0)
127 pcaResidualProj = -1e3;
128 pcaResidualExp = -1e3;
134 for (
size_t objId : tempMd.
ids())
137 if (temp > pcaResidualProj)
138 pcaResidualProj=temp;
141 if (temp > pcaResidualExp)
145 if (temp > pcaResidual)
153 qResidualProj += pcaResidualProj;
154 qResidualExp += pcaResidualExp;
167 qResidualProj /= MDOut.
size();
168 qResidualExp /= MDOut.
size();
169 qZscore /= MDOut.
size();
184 size_t numIter = 200;
188 double rot, tilt,
psi;
189 double shiftX, shiftY;
191 size_t Xdim, Ydim, Zdim, Ndim;
210 for (
size_t objId : SF.
ids())
254 std::cout << E << std::endl;
255 std::cout << (angle*180)/3.14159 << std::endl;
256 P.
write(
"kk_proj.tif");
258 std::cout << rot <<
" " << tilt <<
" " << psi << std::endl;
278 for (
size_t objId : SF.
ids())
316 angle=-(angle*180)/3.14159;
318 dMij(Trans, 0, 2) = shiftX;
319 dMij(Trans, 1, 2) = shiftY;
325 std::cout <<
MAT_ELEM(Trans,0,0) <<
" " <<
MAT_ELEM(Trans,0,1) <<
" " <<
MAT_ELEM(Trans,0,2) <<
" " <<
MAT_ELEM(Trans,1,0) <<
" " <<
MAT_ELEM(Trans,1,1) <<
" " <<
MAT_ELEM(Trans,1,2) <<
" " <<
MAT_ELEM(Trans,2,0) <<
" " <<
MAT_ELEM(Trans,2,1) <<
" " <<
MAT_ELEM(Trans,2,2) <<
" " << std::endl;
326 std::cout <<
MAT_ELEM(E,0,0) <<
" " <<
MAT_ELEM(E,0,1) <<
" " <<
MAT_ELEM(E,0,2) <<
" " <<
MAT_ELEM(E,1,0) <<
" " <<
MAT_ELEM(E,1,1) <<
" " <<
MAT_ELEM(E,1,2) <<
" " <<
MAT_ELEM(E,2,0) <<
" " <<
MAT_ELEM(E,2,1) <<
" " <<
MAT_ELEM(E,2,2) <<
" " << std::endl;
332 std::cout << f << std::endl;
333 img.
write(
"kk_exp.tif");
354 std::vector< MultidimArray<float> > recons(SF.
size());
363 double R2_Proj,R2_Exp;
382 for (
size_t objId : SF.
ids())
412 angle = -(angle*180)/3.14159;
416 temp.
resize(newXdim*newYdim);
421 recons[imgno].statisticsAdjust(0.f,1.f);
422 recons[imgno].resize(newYdim*newXdim);
423 recons[imgno].setXmippOrigin();
434 dMij(Trans, 0, 2) = shiftX;
435 dMij(Trans, 1, 2) = shiftY;
440 temp.
resize(newXdim*newYdim);
461 img.
write(
"kk_exp0.tif");
463 imgRecons().resize(newYdim,newXdim);
464 imgRecons.
write(
"kk_exp.tif");
466 recons[imgno].statisticsAdjust(0.f,1.f);
468 imgRecons().resize(newYdim,newXdim);
469 imgRecons.
write(
"kk_reconstructed.tif");
472 imgAvg().resize(newYdim,newXdim);
473 imgAvg.
write(
"kk_average.tif");
496 P.
write(
"kk_proj.tif");
499 std::cout << R2_Proj <<
" " << R2_Exp <<
" " << R2_Proj*R2_Exp << std::endl;
501 for(
int i=0;
i<numPCAs;
i++)
503 std::cout <<
"proj " <<
MAT_ELEM(proj,
i,imgno) <<
" " <<
"projRef " <<
MAT_ELEM(proj,
i,imgno) << std::endl;
void init_progress_bar(long total)
#define A2D_ELEM(v, i, j)
void resize(size_t Ndim, size_t Zdim, size_t Ydim, size_t Xdim, bool copy=true)
void addVector(const MultidimArray< float > &_v)
Add vector.
void apply_binary_mask(const MultidimArray< int > &mask, const MultidimArray< T > &m_in, MultidimArray< T > &m_out, T subs_val=(T) 0)
void Euler_angles2matrix(T alpha, T beta, T gamma, Matrix2D< T > &A, bool homogeneous)
void projectOnPCABasis(Matrix2D< double > &CtY)
Project on basis.
void resizeNoCopy(const MultidimArray< T1 > &v)
void sqrt(Image< double > &op)
virtual void synchronize()
Synchronize with other processors.
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)
std::vector< MultidimArray< float > > v
double correlationIndex(const MultidimArray< T > &x, const MultidimArray< T > &y, const MultidimArray< int > *mask=NULL, MultidimArray< double > *Contributions=NULL)
void Euler_mirrorY(double rot, double tilt, double psi, double &newrot, double &newtilt, double &newpsi)
void subtractAvg()
Subtract average.
std::vector< String > StringVector
#define FOR_ALL_ELEMENTS_IN_ARRAY2D(m)
#define MAT_ELEM(m, i, j)
MultidimArray< double > Zscore
const char * getParam(const char *param, int arg=0)
void evaluateZScore(int NPCA, int Niter, bool trained=false, const char *filename="temp.txt", int numdesc=0)
void setValue(const MDObject &object) override
void progress_bar(long rlen)
void projectVolume(FourierProjector &projector, Projection &P, int Ydim, int Xdim, double rot, double tilt, double psi, const MultidimArray< double > *ctf)
virtual void gatherResults()
Gather alignment.
void reconsFromPCA(const Matrix2D< double > &CtY, std::vector< MultidimArray< float > > &recons)
Reconstruct from PCA basis.
void typeCast(const Matrix1D< T1 > &v1, Matrix1D< T2 > &v2)
double psi(const double x)
String formatString(const char *format,...)
Image< double > phantomVol
void learnPCABasis(size_t NPCA, size_t Niter)
Learn basis.
int read(const FileName &name, DataMode datamode=DATA, size_t select_img=ALL_IMAGES, bool mapData=false, int mode=WRITE_READONLY)
MultidimArray< double > avg
void addUsageLine(const char *line, bool verbatim=false)
void obtainPCAs(MetaData &SF, size_t numPCAs)
int getIntParam(const char *param, int arg=0)
void addParamsLine(const String &line)
void statisticsAdjust(U avgF, U stddevF)
void getDimensions(size_t &Xdim, size_t &Ydim, size_t &Zdim, size_t &Ndim) const
PCAMahalanobisAnalyzer pca