2704 auto * thread_data =
2708 int thread_id = thread_data->thread_id;
2711 double *wsum_sigma_noise = thread_data->wsum_sigma_noise;
2712 double *wsum_sigma_offset = thread_data->wsum_sigma_offset;
2713 double *sumfracweight = thread_data->sumfracweight;
2714 double *LL = thread_data->LL;
2715 std::vector<MultidimArray<double> > *wsumimgs = thread_data->wsumimgs;
2716 std::vector<MultidimArray<double> > *wsumweds = thread_data->wsumweds;
2717 std::vector<Image<double> > *Iref = thread_data->Iref;
2720 std::vector<size_t> * imgs_id = thread_data->imgs_id;
2726 std::cerr<<
"start threadMLTomoExpectationSingleImage"<<std::endl;
2732 std::vector<MultidimArray<double> > allref_offsets;
2734 float old_psi = -999.;
2735 double fracweight, trymindiff, dLL;
2736 int opt_refno, opt_angno, missno;
2743 size_t firstIndex, lastIndex;
2745 if (prm->
verbose && thread_id == 0)
2753 while (distributor->
getTasks(firstIndex, lastIndex))
2755 for (
size_t imgno = firstIndex; imgno <= lastIndex; ++imgno)
2766 img().setXmippOrigin();
2784 *wsumimgs, *wsumweds, *wsum_sigma_noise, *wsum_sigma_offset,
2785 *sumw, *LL, dLL, fracweight, *sumfracweight, trymindiff,
2786 opt_refno, opt_angno, opt_offsets);
2792 *Iref, *wsumimgs, *wsumweds, *sumw, fracweight, *sumfracweight,
2793 opt_refno, opt_angno, opt_offsets);
2816 dAij(docfiledata, imgno, 6) = (double) (opt_refno + 1);
2817 dAij(docfiledata, imgno, 7) = (double) (missno + 1);
2819 dAij(docfiledata, imgno, 8) = fracweight;
2820 dAij(docfiledata, imgno, 9) = dLL;
2822 if (prm->
verbose && thread_id == 0)
2827 if (prm->
verbose && thread_id == 0)
2833 std::cerr<<
"finished threadMLTomoExpectationSingleImage"<<std::endl;
void init_progress_bar(long total)
bool do_missing
Internally store all missing wedges or re-compute on the fly?
std::vector< int > imgs_optrefno
bool getTasks(size_t &first, size_t &last)
void reScaleVolume(MultidimArray< double > &Min, bool down_scale=true)
MultidimArray< double > docfiledata
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.
ParallelTaskDistributor * distributor
std::vector< Matrix1D< double > > imgs_optoffsets
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.
pthread_mutex_t mltomo_selfile_access_mutex
if(fabs(c[*nmax+ *nmax *c_dim1])==0.e0)
std::vector< double > imgs_optpsi
void progress_bar(long rlen)
int verbose
Verbosity level.
std::vector< double > imgs_trymindiff
double psi(const double x)
int read(const FileName &name, DataMode datamode=DATA, size_t select_img=ALL_IMAGES, bool mapData=false, int mode=WRITE_READONLY)
AnglesInfoVector all_angle_info
std::vector< int > imgs_optangno