Xmipp  v3.23.11-Nereus
volume_subtraction.h
Go to the documentation of this file.
1 /***************************************************************************
2  *
3  * Authors: Estrella Fernandez Gimenez me.fernandez@cnb.csic.es (2019)
4  *
5  * Unidad de Bioinformatica of Centro Nacional de Biotecnologia , CSIC
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20  * 02111-1307 USA
21  *
22  * All comments concerning this program package may be sent to the
23  * e-mail address 'xmipp@cnb.csic.es'
24  ***************************************************************************/
25 #ifndef LIBRARIES_RECONSTRUCTION_VOLUME_SUBTRACTION_H_
26 #define LIBRARIES_RECONSTRUCTION_VOLUME_SUBTRACTION_H_
27 
28 #include "core/xmipp_program.h"
29 #include <core/xmipp_fftw.h>
30 #include <data/fourier_filter.h>
31 
32 
34 /*This class contains methods that are use to adjust an input volume (V) to a another reference volume (V1) through the use
35  of Projectors Onto Convex Sets (POCS) and to perform the subtraction between them. Other methods contained in this class
36  are used to pre-process and operate with the volumes*/
37 
38 private:
39  FileName fnVol2;
40  FileName fnVol1;
41  FileName fnOutVol;
42  FileName fnMask1;
43  FileName fnMask2;
44  FileName fnMaskSub;
45  FileName fnVol1F;
46  FileName fnVol2A;
47 
48  bool computeE;
49  size_t iter;
50  double v1min;
51  double v1max;
52  bool performSubtraction;
53  int sigma;
54  double cutFreq;
55  double lambda;
56  bool radavg;
57  double std1;
58  size_t n;
59  FourierTransformer transformer2;
61  Image<double> Vdiff;
62 
64  void readParams() override;
65 
67  void show() const override;
68 
70  void defineParams() override;
71 
73  void extractPhase(MultidimArray<std::complex<double>> &) const;
74  void computeEnergy(MultidimArray<double> &, const MultidimArray<double> &) const;
75  void centerFFTMagnitude(MultidimArray<double> &, MultidimArray<std::complex<double>> &,MultidimArray<double> &) const;
76  MultidimArray<double> createMask(const Image<double> &, const FileName &, const FileName &);
77  void filterMask(MultidimArray<double> &) const;
79  MultidimArray<double> getSubtractionMask(const FileName &, MultidimArray<double>);
80  void runIteration(Image<double> &,Image<double> &,const MultidimArray<double> &,const MultidimArray<double> &,
81  const MultidimArray<std::complex<double>> &,const MultidimArray<double> &,FourierFilter &);
82 
84  void run() override;
85 
86 };
88 #endif