46 #define SIGNIFICANT_WEIGHT_LOW 1e-8 48 #define SMALLANGLE 2.75 49 #define MLTOMO_DATALINELENGTH 10 50 #define MLTOMO_BLOCKSIZE 10 52 #define FN_ITER_VOL(iter, base, refno) formatString("%s_it%d_%s%d.vol", fn_root.c_str(), iter, base, refno+1) 53 #define FN_ITER_MD(iter) formatString("%s_it%d.sel", fn_root.c_str(), iter) 74 std::vector<Image<double> > *
Iref;
311 double &wsum_sigma_noise,
double &wsum_sigma_offset,
313 double &fracweight,
double &sumfracweight,
double &trymindiff,
326 double &LL,
double &sumfracweight,
329 double &wsum_sigma_noise,
double &wsum_sigma_offset,
335 double &wsum_sigma_noise,
double &wsum_sigma_offset,
357 double &sumw_allrefs,
double &LL,
double &avefracweight,
std::vector< MultidimArray< double > > * docfiledata
void regularize(int iter)
Apply regularization.
bool do_missing
Internally store all missing wedges or re-compute on the fly?
bool mdimg_contains_angles
std::vector< int > imgs_optrefno
std::vector< size_t > * imgs_id
std::vector< double > corrA2
void calculatePdfTranslations()
Calculate probability density distribution for in-plane transformations.
MultidimArray< double > P_phi
std::vector< Image< double > > Iold
MultidimArray< double > alpha_k
MultidimArray< double > fourier_mask
double * wsum_sigma_noise
virtual void expectation(MetaDataVec &MDimg, std::vector< Image< double > > &Iref, int iter, double &LL, double &sumfracweight, std::vector< MultidimArray< double > > &wsumimgs, std::vector< MultidimArray< double > > &wsumweds, double &wsum_sigma_noise, double &wsum_sigma_offset, MultidimArray< double > &sumw)
Integrate over all experimental images.
std::vector< Image< double > > * Iref
MultidimArray< double > Mr2
void reScaleVolume(MultidimArray< double > &Min, bool down_scale=true)
std::vector< MultidimArray< double > > * wsumweds
std::vector< AnglesInfo > AnglesInfoVector
MultidimArray< double > docfiledata
bool checkConvergence(std::vector< double > &conv)
check convergence
virtual void generateInitialReferences()
Generate initial references from random subset averages.
void expectationSingleImage(MultidimArray< double > &Mimg, int imgno, const int missno, double old_rot, std::vector< Image< double > > &Iref, std::vector< MultidimArray< double > > &wsumimgs, std::vector< MultidimArray< double > > &wsumweds, double &wsum_sigma_noise, double &wsum_sigma_offset, MultidimArray< double > &sumw, double &LL, double &dLL, double &fracweight, double &sumfracweight, double &trymindiff, int &opt_refno, int &opt_angno, Matrix1D< double > &opt_offsets)
ML-integration over all hidden parameters.
std::vector< Matrix1D< double > > imgs_optoffsets
MultidimArray< double > real_mask
std::vector< MultidimArray< double > > * wsumimgs
std::vector< int > imgs_missno
void maxConstrainedCorrSingleImage(MultidimArray< double > &Mimg, int imgno, int missno, double old_rot, std::vector< Image< double > > &Iref, std::vector< MultidimArray< double > > &wsumimgs, std::vector< MultidimArray< double > > &wsumweds, MultidimArray< double > &sumw, double &maxCC, double &sumCC, int &opt_refno, int &opt_angno, Matrix1D< double > &opt_offsets)
Maximum constrained correlation search over all hidden parameters.
virtual void writeOutputFiles(const int iter, std::vector< MultidimArray< double > > &wsumweds, double &sumw_allrefs, double &LL, double &avefracweight, std::vector< double > &conv, std::vector< MultidimArray< double > > &fsc)
Write out reference images, selfile and logfile.
std::vector< double > imgs_optpsi
void * threadMLTomoExpectationSingleImage(void *data)
std::vector< Image< double > > Iwed
virtual void setNumberOfLocalImages()
Set the number of images, this function is useful only for MPI.
void calculateFsc(MultidimArray< double > &M1, MultidimArray< double > &M2, MultidimArray< double > &W1, MultidimArray< double > &W2, MultidimArray< double > &freq, MultidimArray< double > &fsc, double &resolution)
Calculate resolution by FSC.
virtual void addPartialDocfileData(const MultidimArray< double > &data, size_t first, size_t last)
Add info of some processed images to later write to files.
FourierTransformer transformer
void perturbAngularSampling()
Calculate Angular sampling.
void maskSphericalAverageOutside(MultidimArray< double > &Min)
ThreadTaskDistributor * distributor
MultidimArray< unsigned char > fourier_imask
virtual void produceSideInfo()
Setup lots of stuff.
std::vector< double > imgs_trymindiff
virtual void produceSideInfo2(int nr_vols=1)
MultidimArray< double > real_omask
void readParams()
Read arguments from command line.
double angular_sampling
Missing data information.
void defineParams()
Define the arguments accepted.
void precalculateA2(std::vector< Image< double > > &Iref)
Fill vector of matrices with all rotations of reference.
double psi(const double x)
void run()
Main body of the program.
std::vector< size_t > convert_refno_to_stack_position
AnglesInfoVector all_angle_info
std::vector< int > imgs_optangno
void getMissingRegion(MultidimArray< unsigned char > &Mmeasured, const Matrix2D< double > &A, const int missno)
Get binary missing wedge (or pyramid)
void maximization(std::vector< MultidimArray< double > > &wsumimgs, std::vector< MultidimArray< double > > &wsumweds, double &wsum_sigma_noise, double &wsum_sigma_offset, MultidimArray< double > &sumw, double &sumfracweight, double &sumw_allrefs, std::vector< MultidimArray< double > > &fsc, int iter)
Update all model parameters.
std::vector< Image< double > > Iref
double * wsum_sigma_offset
void postProcessVolume(Image< double > &Vin, double resolution=-1.)
std::vector< MissingInfo > all_missing_info
MultidimArray< double > * sumw
std::vector< size_t > imgs_id