36 #define FOR_ALL_MODELS() for (int refno=0;refno<model.n_ref; refno++) 37 #define FOR_ALL_ROTATIONS() for (size_t ipsi=0; ipsi<nr_psi; ipsi++ ) 38 #define FOR_ALL_FLIPS() for (size_t iflip=0; iflip<nr_flip; iflip++) 39 #define FOR_ALL_LIMITED_TRANSLATIONS() for (size_t itrans=0; itrans<nr_trans; itrans++) 40 #define FOR_ALL_DEFOCUS_GROUPS() for (size_t ifocus=0; ifocus<nr_focus; ifocus++) 41 #define FOR_ALL_DIGITAL_FREQS() for (size_t irr = 0; irr < hdim; irr++) 42 #define FOR_ALL_POINTS() for (size_t ipoint = 0; ipoint < nr_points_2d; ++ipoint) 46 #define VSNR_ITEM dAi(Vsnr[ifocus], irr) 47 #define VCTF_ITEM dAi(Vctf[ifocus], irr) 48 #define VDEC_ITEM dAi(Vdec[ifocus], irr) 49 #define VSIG_ITEM dAi(Vsig[ifocus], irr) 51 #define SIGNIFICANT_WEIGHT_LOW 1e-8 58 #define FN_EXTRA(file) formatString("%sextra/%s", fn_root.c_str(), file) 59 #define FN_NOISE_IMG_MD FN_EXTRA("noise_images.xmd") 60 #define FN_NOISE_IMG FN_EXTRA("noise_images.stk") 61 #define FN_CREF_IMG FN_EXTRA("cref_classes.stk") 62 #define FN_CREF_IMG_MD FN_EXTRA("cref_classes.xmd") 64 #define FN_ITER_BASE(iter) getIterExtraPath(fn_root, iter) 65 #define FN_REF(base, refno) formatString("%06d@%sclasses.stk", (refno), (base).c_str()) 66 #define FN_VSIG(base, ifocus, ext) ((nr_focus > 1) ? formatString("ctf%06d@%s%s", ((ifocus) + 1), (base).c_str(), (ext)) : ((base) + "_ctf" + (ext))) 85 std::vector< Image<double> >
Ictf;
164 ProgMLF2D(
int nr_vols = 0,
int rank = 0,
int size = 1);
175 void show(
bool ML3D =
false);
195 std::vector<double> &sumw_defocus,
int iter);
209 std::vector<double> &out);
213 const int start_point,
215 bool only_real =
false);
227 std::vector<double> &pdf_directions);
234 std::vector<double > &pdf_directions);
240 std::vector<double> &out,
241 int point_start = 0);
247 const std::vector<double > &offsets,
248 std::vector<double> &out,
254 size_t focus,
bool apply_ctf,
255 double &fracweight,
double &maxweight2,
double &sum_refw2,
256 double &opt_scale,
size_t &opt_refno,
double &opt_psi,
257 size_t &opt_ipsi,
size_t &opt_iflip,
259 std::vector<double> &opt_offsets_ref,
260 std::vector<double > &pdf_directions,
261 bool do_kstest,
bool write_histograms,
267 std::vector <std::vector<
MultidimArray<std::complex<double> > > > &Fref,
268 double &opt_scale,
int &opt_refno,
int &opt_ipsi,
int &opt_iflip,
bool do_student
IN DEVELOPMENT.
std::vector< double > Fwsum_imgs
virtual void addPartialDocfileData(const MultidimArray< double > &data, size_t first, size_t last)
Add docfiledata to docfile.
void generateInitialReferences()
Generate initial references from random subset averages.
std::vector< MultidimArray< double > > Vctf
virtual void show() const
void maximization()
Update all model parameters (maximization step)
MultidimArray< size_t > Mresol_int
void rotateReference(std::vector< double > &out)
Fill vector of matrices with all rotations of reference.
void defineParams()
Params definition.
virtual void defineAdditionalParams(XmippProgram *prog, const char *sectionLine)
std::vector< double > sumw_defocus
void preselectDirections(float &phi, float &theta, std::vector< double > &pdf_directions)
std::vector< int > pointer_2d
void expectation()
Integrate over all experimental images.
void iteration()
One iteration of the process.
int iter_write_histograms
size_t current_highres_limit
void estimateInitialNoiseSpectra()
std::vector< double > sumwsc2
std::vector< int > pointer_j
double performKSTest(MultidimArray< double > &Mimg, const int focus, bool apply_ctf, FileName &fn_img, bool write_histogram, std::vector< std::vector< MultidimArray< std::complex< double > > > > &Fref, double &opt_scale, int &opt_refno, int &opt_ipsi, int &opt_iflip, MultidimArray< double > &opt_offsets)
Perform Kolmogorov-Smirnov test.
std::vector< double > refs_avgscale
MultidimArray< double > spectral_signal
bool do_kstest
Statistical analysis of the noise distributions.
std::vector< Image< double > > Ictf
std::vector< MultidimArray< double > > wsum_Mref
void endIteration()
Redefine endIteration to update Wiener filters.
void reverseRotateReference(const std::vector< double > &in, std::vector< MultidimArray< double > > &out)
Apply reverse rotations to all matrices in vector and fill new matrix with their sum.
bool do_student_sigma_trick
virtual void produceSideInfo2()
std::vector< double > alpha_k
void readParams()
Read arguments from command line.
void calculateFourierOffsets(const MultidimArray< double > &Mimg, const std::vector< double > &offsets, std::vector< double > &out, MultidimArray< int > &Moffsets, MultidimArray< int > &Moffsets_mirror)
std::vector< Histogram1D > resolhist
std::vector< MultidimArray< double > > Vdec
void writeNoiseFile(const FileName &fn_base, int ifocus)
Write noise estimation per resolution.
std::vector< double > mirror_fraction
std::vector< double > sumwsc
void setCurrentSamplingRates(double current_probres_limit)
Vary in-plane and translational sampling rates with resolution.
std::vector< double > sumw
std::vector< double > Fref
void preselect_significant_model_phi(MultidimArray< double > &Mimg, std::vector< double > &offsets, std::vector< std::vector< MultidimArray< double > > > &Mref, MultidimArray< int > &Msignificant, std::vector< double > &pdf_directions)
virtual void defineBasicParams(XmippProgram *prog)
Some redefinitions of the basic and additional params.
std::vector< double > sumw_mirror
void getFTfromVector(const std::vector< double > &in, const int start_point, MultidimArray< std::complex< double > > &out, bool only_real=false)
std::vector< double > sumw2
void fourierTranslate2D(const std::vector< double > &in, MultidimArray< double > &trans, std::vector< double > &out, int point_start=0)
std::vector< double > Fwsum_ctfimgs
std::vector< std::vector< double > > Mwsum_sigma2
void processOneImage(const MultidimArray< double > &Mimg, size_t focus, bool apply_ctf, double &fracweight, double &maxweight2, double &sum_refw2, double &opt_scale, size_t &opt_refno, double &opt_psi, size_t &opt_ipsi, size_t &opt_iflip, MultidimArray< double > &opt_offsets, std::vector< double > &opt_offsets_ref, std::vector< double > &pdf_directions, bool do_kstest, bool write_histograms, FileName fn_img, double &KSprob)
Perform expectation step for a single image.
void calculatePdfInplane()
Calculate probability density distribution for in-plane transformations.
std::vector< int > pointer_i
std::vector< int > count_defocus
void updateWienerFilters(const MultidimArray< double > &spectral_signal, std::vector< double > &sumw_defocus, int iter)
virtual void writeOutputFiles(const ModelML2D &model, OutputType outputType)
Write out reference images, selfile and logfile.
ProgMLF2D(int nr_vols=0, int rank=0, int size=1)
void appendFTtoVector(const MultidimArray< std::complex< double > > &Fin, std::vector< double > &out)
virtual void produceSideInfo()
Setup lots of stuff.
constexpr double SMALLVALUE
std::vector< MultidimArray< double > > wsum_ctfMref
std::vector< MultidimArray< double > > Vsig