Xmipp  v3.23.11-Nereus
Public Member Functions | Public Attributes | List of all members

#include <mpi_classify_CLTomo.h>

Collaboration diagram for CL3DClass:
Collaboration graph
[legend]

Public Member Functions

 CL3DClass ()
 
 ~CL3DClass ()
 
 CL3DClass (const CL3DClass &other)
 
 CL3DClass (const CL3DClass &&)=delete
 
CL3DClassoperator= (const CL3DClass &other)
 
CL3DClassoperator= (const CL3DClass &&)=delete
 
void updateProjection (MultidimArray< double > &I, const CL3DAssignment &assigned, bool force=false)
 
void transferUpdate ()
 
void constructFourierMask (MultidimArray< double > &I)
 
void constructFourierMaskFRM ()
 
void fitBasic (MultidimArray< double > &I, CL3DAssignment &result)
 
void lookForNeighbours (const std::vector< CL3DClass *> listP, int K)
 Look for K-nearest neighbours. More...
 

Public Attributes

MultidimArray< double > P
 
MultidimArray< double > Paux
 
MultidimArray< double > bgMask
 
MultidimArray< std::complex< double > > Pfourier
 
FourierTransformer transformer
 
MultidimArray< std::complex< double > > Ifourier
 
MultidimArray< double > IfourierMag
 
MultidimArray< double > IfourierMagSorted
 
MultidimArray< int > IfourierMask
 
MultidimArray< int > IfourierMaskFRM
 
PyObject * pyIfourierMaskFRM =nullptr
 
MultidimArray< std::complex< double > > Pupdate
 
MultidimArray< double > PupdateMask
 
MultidimArray< double > Iaux
 
std::vector< CL3DAssignmentcurrentListImg
 
std::vector< CL3DAssignmentnextListImg
 
std::vector< int > neighboursIdx
 

Detailed Description

CL3DClass class

Definition at line 73 of file mpi_classify_CLTomo.h.

Constructor & Destructor Documentation

◆ CL3DClass() [1/3]

CL3DClass::CL3DClass ( )

Empty constructor

Definition at line 90 of file mpi_classify_CLTomo_prog.cpp.

91 {
95  //PupdateReal=Paux;
98  pyIfourierMaskFRM=NULL;
99  //weightSum=0;
100 }
ProgClassifyCL3D * prmCL3Dprog
MultidimArray< std::complex< double > > fFourier
Definition: xmipp_fftw.h:70
MultidimArray< std::complex< double > > Pupdate
void setReal(MultidimArray< double > &img)
Definition: xmipp_fftw.cpp:129
PyObject * pyIfourierMaskFRM
MultidimArray< double > Paux
MultidimArray< double > PupdateMask
FourierTransformer transformer
void initZeros(const MultidimArray< T1 > &op)

◆ ~CL3DClass()

CL3DClass::~CL3DClass ( )
inline

Destructor

Definition at line 125 of file mpi_classify_CLTomo.h.

125 {}

◆ CL3DClass() [2/3]

CL3DClass::CL3DClass ( const CL3DClass other)

Copy constructor

Definition at line 102 of file mpi_classify_CLTomo_prog.cpp.

103 {
104  *this=other;
105 }

◆ CL3DClass() [3/3]

CL3DClass::CL3DClass ( const CL3DClass &&  )
delete

Member Function Documentation

◆ constructFourierMask()

void CL3DClass::constructFourierMask ( MultidimArray< double > &  I)

Construct Fourier mask

Definition at line 284 of file mpi_classify_CLTomo_prog.cpp.

285 {
287 
291  double minMagnitude=A1D_ELEM(IfourierMagSorted,(int)(prmCL3Dprog->sparsity*XSIZE(IfourierMag)));
292 
294  for (size_t n=1; n<MULTIDIM_SIZE(Ifourier); ++n)
295  if (DIRECT_MULTIDIM_ELEM(IfourierMag,n)>minMagnitude)
297 }
MultidimArray< double > IfourierMagSorted
void resize(size_t Ndim, size_t Zdim, size_t Ydim, size_t Xdim, bool copy=true)
double sparsity
Sparsity factor (0<f<1; 1=drop all coefficients, 0=do not drop any coefficient)
ProgClassifyCL3D * prmCL3Dprog
void sort(MultidimArray< T > &result) const
#define MULTIDIM_SIZE(v)
#define A1D_ELEM(v, i)
MultidimArray< int > IfourierMask
MultidimArray< std::complex< double > > Ifourier
#define XSIZE(v)
MultidimArray< double > IfourierMag
#define DIRECT_MULTIDIM_ELEM(v, n)
void FourierTransform(T &v, T1 &V, bool getCopy=true)
Definition: xmipp_fftw.h:166
FourierTransformer transformer
void initZeros(const MultidimArray< T1 > &op)
void FFT_magnitude(const MultidimArray< std::complex< double > > &v, MultidimArray< double > &mag)
Definition: xmipp_fftw.cpp:393
int * n

◆ constructFourierMaskFRM()

void CL3DClass::constructFourierMaskFRM ( )

Construct the mask in the FRM convention

Definition at line 299 of file mpi_classify_CLTomo_prog.cpp.

300 {
301  auto xdim=(int)(prmCL3Dprog->Xdim);
302  auto xdim_2=(int)xdim/2;
307  {
308  int kp=k, ip=i;
309  if (k>xdim_2)
310  kp-=xdim;
311  if (i>xdim_2)
312  ip-=xdim;
313  A3D_ELEM(IfourierMaskFRM,j,ip,kp)=A3D_ELEM(IfourierMaskFRM,-j,-ip,-kp)=1;
314  }
315 
316  PyObject *pyMask=Python::convertToNumpy(IfourierMaskFRM);
317  PyObject *arglist = Py_BuildValue("(Oi)", pyMask,0);
318  if (pyIfourierMaskFRM!=NULL)
319  Py_DECREF(pyIfourierMaskFRM);
320  pyIfourierMaskFRM = PyObject_CallObject(prmCL3Dprog->wedgeClass, arglist);
321  /*if (PyErr_Occurred()!=NULL)
322  PyErr_Print();*/
323  Py_DECREF(arglist);
324  Py_DECREF(pyMask);
325 }
ProgClassifyCL3D * prmCL3Dprog
#define i
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
#define A3D_ELEM(V, k, i, j)
MultidimArray< int > IfourierMask
#define FOR_ALL_ELEMENTS_IN_ARRAY3D(V)
PyObject * pyIfourierMaskFRM
MultidimArray< int > IfourierMaskFRM
#define j
MultidimArray< unsigned char > maxFreqMask
MaxFreq mask.
PyObject * wedgeClass
Pointer to the Python GeneralWedge class.
PyObject * convertToNumpy(const MultidimArray< T > &array)
void initZeros(const MultidimArray< T1 > &op)

◆ fitBasic()

void CL3DClass::fitBasic ( MultidimArray< double > &  I,
CL3DAssignment result 
)

Compute the fit of the input image with this node. The input image is rotationally and traslationally aligned (2 iterations), to make it fit with the node.

Definition at line 328 of file mpi_classify_CLTomo_prog.cpp.

329 {
330 #ifdef DEBUG
331  Image<double> save2;
332  save2()=I;
333  save2.write("PPPfitBasicI0.xmp");
334  save2()=P;
335  save2.write("PPPfitBasicI1.xmp");
336 #endif
337 
338  if (currentListImg.size() == 0)
339  return;
340 
342  double frmScore;
344  if (!prmCL3Dprog->dontAlign)
345  {
347  alignVolumesFRM(prmCL3Dprog->frmFunc, P, I, pyIfourierMaskFRM, result.rot, result.tilt, result.psi, result.shiftx, result.shifty, result.shiftz,
348  frmScore,A,prmCL3Dprog->maxShift, prmCL3Dprog->maxFreq);
349  }
350  else
351  {
352  A.initIdentity(4);
353  result.rot=result.tilt=result.psi=result.shiftx=result.shifty=result.shiftz=0.;
355  }
356  if (fabs(result.shiftx)>prmCL3Dprog->maxShiftX || fabs(result.shifty)>prmCL3Dprog->maxShiftY || fabs(result.shiftz)>prmCL3Dprog->maxShiftZ ||
357  fabs(result.rot)>prmCL3Dprog->maxRot || fabs(result.tilt)>prmCL3Dprog->maxTilt || fabs(result.psi)>prmCL3Dprog->maxPsi)
358  result.score=-1e38;
359  else
360  {
361  if (prmCL3Dprog->dontAlign)
362  Iaux=I;
363  else
364  applyGeometry(xmipp_transformation::LINEAR, Iaux, I, A, xmipp_transformation::IS_NOT_INV, xmipp_transformation::DONT_WRAP);
367  result.score=frmScore;
368  }
369 
370 #ifdef DEBUG
371  Image<double> save;
372  save()=I;
373  save.write("PPPfitBasicI2.xmp");
374  save()=P-I;
375  save.write("PPPfitBasicdiff.xmp");
376  std::cout << result.rot << " " << result.tilt << " " << result.psi << " " << result.shiftx << " " << result.shifty << " " << result.shiftz << std::endl;
377  std::cout << "final score=" << result.score << ". Press" << std::endl;
378  char c;
379  std::cin >> c;
380 #endif
381 }
double maxShift
Max shift.
ProgClassifyCL3D * prmCL3Dprog
double maxShiftX
Maximum shift X.
void apply_binary_mask(const MultidimArray< int > &mask, const MultidimArray< T > &m_in, MultidimArray< T > &m_out, T subs_val=(T) 0)
Definition: mask.h:857
doublereal * c
std::vector< CL3DAssignment > currentListImg
PyObject * frmFunc
Pointer to the Python FRM alignment function.
void constructFourierMask(MultidimArray< double > &I)
void applyGeometry(int SplineDegree, MultidimArray< std::complex< double > > &V2, const MultidimArray< std::complex< double > > &V1, const Matrix2D< double > &A, bool inv, bool wrap, std::complex< double > outside, MultidimArray< double > *BcoeffsPtr)
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)
double correlationIndex(const MultidimArray< T > &x, const MultidimArray< T > &y, const MultidimArray< int > *mask=NULL, MultidimArray< double > *Contributions=NULL)
double maxPsi
Maximum psi.
double maxShiftY
Maximum shift Y.
MultidimArray< double > Iaux
PyObject * pyIfourierMaskFRM
double maxShiftZ
Maximum shift Z.
bool dontAlign
Don&#39;t align.
MultidimArray< double > P
double maxTilt
Maximum tilt.
void alignVolumesFRM(PyObject *pFunc, const MultidimArray< double > &Iref, MultidimArray< double > &I, PyObject *Imask, double &rot, double &tilt, double &psi, double &x, double &y, double &z, double &score, Matrix2D< double > &A, int maxshift, double maxFreq, const MultidimArray< int > *mask)
Definition: frm.cpp:35
double maxRot
Maximum rot.
const MultidimArray< int > & get_binary_mask() const
Definition: mask.h:707
double maxFreq
Maximum frequency for the alignment.
void initIdentity()
Definition: matrix2d.h:673

◆ lookForNeighbours()

void CL3DClass::lookForNeighbours ( const std::vector< CL3DClass *>  listP,
int  K 
)

Look for K-nearest neighbours.

Definition at line 386 of file mpi_classify_CLTomo_prog.cpp.

387 {
388  int Q = listP.size();
389  neighboursIdx.clear();
390  if (K == Q)
391  {
392  // As many neighbours as codes
393  for (int q = 0; q < Q; q++)
394  neighboursIdx.push_back(q);
395  }
396  else
397  {
398  MultidimArray<double> distanceCode;
399  distanceCode.initZeros(Q);
400  CL3DAssignment assignment;
402  for (int q = 0; q < Q; q++)
403  {
404  if (listP[q] == this)
405  distanceCode(q) = 1;
406  else
407  {
408  I = listP[q]->P;
409  fitBasic(I, assignment);
410  A1D_ELEM(distanceCode,q) = 1-assignment.score;
411  }
412  }
413 
414  MultidimArray<int> idx;
415  distanceCode.indexSort(idx);
416  for (int k = 0; k < K; k++)
417  neighboursIdx.push_back(idx(Q - k - 1) - 1);
418  }
419 #ifdef DEBUG
420  Image<double> save;
421  save()=P;
422  save.write("PPPthis.xmp");
423  for (int k=0; k<K; k++)
424  {
425  save()=listP[neighboursIdx[k]]->P;
426  save.write((std::string)"PPPneigh"+integerToString(k,1));
427  }
428  std::cout << "Neighbours saved. Press any key\n";
429  char c;
430  std::cin >> c;
431 #endif
432 }
void fitBasic(MultidimArray< double > &I, CL3DAssignment &result)
doublereal * c
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)
#define A1D_ELEM(v, i)
String integerToString(int I, int _width, char fill_with)
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
MultidimArray< double > P
std::vector< int > neighboursIdx
constexpr int K
void initZeros(const MultidimArray< T1 > &op)
void indexSort(MultidimArray< int > &indx) const

◆ operator=() [1/2]

CL3DClass & CL3DClass::operator= ( const CL3DClass other)

Assignment

Definition at line 107 of file mpi_classify_CLTomo_prog.cpp.

108 {
109  if (this!=&other)
110  {
111  CL3DAssignment assignment;
112  assignment.score = -1e38;
113  updateProjection((MultidimArray<double> &)other.P,assignment);
114  transferUpdate();
115 
118  }
119  return *this;
120 }
std::vector< CL3DAssignment > currentListImg
void updateProjection(MultidimArray< double > &I, const CL3DAssignment &assigned, bool force=false)
MultidimArray< double > P
std::vector< int > neighboursIdx

◆ operator=() [2/2]

CL3DClass& CL3DClass::operator= ( const CL3DClass &&  )
delete

◆ transferUpdate()

void CL3DClass::transferUpdate ( )

Transfer update

Definition at line 180 of file mpi_classify_CLTomo_prog.cpp.

181 {
182  if (nextListImg.size() > 0)
183  {
184  // Take from Pupdate
185  auto *ptrPupdate=(double*)&DIRECT_MULTIDIM_ELEM(Pupdate,0);
187  {
188  double maskVal=DIRECT_MULTIDIM_ELEM(PupdateMask,n);
189  if (maskVal>0 && DIRECT_MULTIDIM_ELEM(prmCL3Dprog->maxFreqMask,n))
190  {
191  double iMask=1./maskVal;
192  *ptrPupdate*=iMask;
193  *(ptrPupdate+1)*=iMask;
194  }
195  else
196  {
197  *ptrPupdate=*(ptrPupdate+1)=0.;
198  }
199  ptrPupdate+=2;
200  }
202 
204  //P=PupdateReal/weightSum;
205 
206  // Compact support in real space
207 #ifdef DEBUG
208  Image<double> save;
209  save()=Paux;
210  save.write("PPPtransfer0.vol");
211 #endif
212 
213  double mean;
214  detectBackground(Paux,bgMask,0.01,mean);
215  if (bgMask.sum()<0.9*(XSIZE(Paux)-4)*(YSIZE(Paux)-4)*(ZSIZE(Paux)-4))
216  {
218  if (A3D_ELEM(bgMask,k,i,j))
219  A3D_ELEM(Paux,k,i,j) = 0;
220  else if (k<=STARTINGZ(Paux)+2 || i<=STARTINGY(Paux)+2 || j<=STARTINGX(Paux)+2 ||
221  k>=FINISHINGZ(Paux)-2 || i>=FINISHINGY(Paux)-2 || j>=FINISHINGX(Paux)-2)
222  A3D_ELEM(Paux,k,i,j) = 0;
223  }
224 
225 #ifdef DEBUG
226  save()=Paux;
227  save.write("PPPtransfer1.vol");
228 #endif
229  // Compact support in wavelet space
231 
232 #ifdef DEBUG
233  save()=Paux;
234  save.write("PPPtransfer2.vol");
235 #endif
236  // Symmetrize
237  symmetrizeVolume(prmCL3Dprog->SL,Paux,P,xmipp_transformation::WRAP);
238 #ifdef DEBUG
239  save()=P;
240  save.write("PPPtransfer3.vol");
241 #endif
242 
243  // Normalize and remove outside sphere
244  P.statisticsAdjust(0., 1.);
247  if (!DIRECT_MULTIDIM_ELEM(mask,n))
248  DIRECT_MULTIDIM_ELEM(P,n) = 0;
249  Pupdate.initZeros();
250  //PupdateReal.initZeros();
252  //weightSum=0;
253 
254 #ifdef DEBUG
255  save()=P;
256  save.write("PPPtransfer4.vol");
257 #endif
258  /* COSS: STILL TO PUT IN 3D
259  // Make sure the image is centered
260  centerImage(P,corrAux,rotAux);
261  FOR_ALL_DIRECT_ELEMENTS_IN_MULTIDIMARRAY(P)
262  if (!DIRECT_MULTIDIM_ELEM(mask,n))
263  DIRECT_MULTIDIM_ELEM(P,n) = 0;
264  */
265 
266  // Take the list of images
268  nextListImg.clear();
269  }
270  else
271  {
272  currentListImg.clear();
273  P.initZeros();
274  }
275 #ifdef DEBUG
276  P.printShape();
277  std::cout << "Transfer finished. Press any key\n";
278  char c;
279  std::cin >> c;
280 #endif
281 }
MultidimArray< std::complex< double > > Pfourier
#define YSIZE(v)
ProgClassifyCL3D * prmCL3Dprog
void inverseFourierTransform()
Definition: xmipp_fftw.cpp:329
#define FINISHINGX(v)
void printShape(std::ostream &out=std::cout) const
doublereal * c
std::vector< CL3DAssignment > currentListImg
void symmetrizeVolume(const SymList &SL, const MultidimArray< double > &V_in, MultidimArray< double > &V_out, int spline, bool wrap, bool do_outside_avg, bool sum, bool helical, bool dihedral, bool helicalDihedral, double rotHelical, double rotPhaseHelical, double zHelical, double heightFraction, const MultidimArray< double > *mask, int Cn)
Definition: symmetrize.cpp:117
MultidimArray< double > bgMask
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)
MultidimArray< std::complex< double > > Pupdate
#define FINISHINGZ(v)
#define STARTINGX(v)
#define i
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
#define STARTINGY(v)
void detectBackground(const MultidimArray< double > &vol, MultidimArray< double > &mask, double alpha, double &final_mean)
Definition: filters.cpp:197
#define A3D_ELEM(V, k, i, j)
#define FOR_ALL_ELEMENTS_IN_ARRAY3D(V)
double DWTsparsity
DWT Sparsity factor (0<f<1; 1=drop all coefficients, 0=do not drop any coefficient) ...
#define XSIZE(v)
#define FOR_ALL_DIRECT_ELEMENTS_IN_MULTIDIMARRAY(v)
#define ZSIZE(v)
#define DIRECT_MULTIDIM_ELEM(v, n)
MultidimArray< double > Paux
#define j
MultidimArray< double > P
MultidimArray< unsigned char > maxFreqMask
MaxFreq mask.
#define FINISHINGY(v)
MultidimArray< double > PupdateMask
FourierTransformer transformer
void forceDWTSparsity(MultidimArray< double > &V, double eps)
Definition: filters.cpp:3539
void initZeros(const MultidimArray< T1 > &op)
const MultidimArray< int > & get_binary_mask() const
Definition: mask.h:707
#define STARTINGZ(v)
int * n
std::vector< CL3DAssignment > nextListImg
double sum() const
void statisticsAdjust(U avgF, U stddevF)

◆ updateProjection()

void CL3DClass::updateProjection ( MultidimArray< double > &  I,
const CL3DAssignment assigned,
bool  force = false 
)

Update projection.

Definition at line 123 of file mpi_classify_CLTomo_prog.cpp.

126 {
127  if ((fabs(assigned.score) <=1 && assigned.objId != BAD_OBJID && assigned.score>0) || force)
128  {
132  {
133  auto *ptrIfourier=(double*)&DIRECT_MULTIDIM_ELEM(Ifourier,n);
134  auto *ptrPupdate=(double*)&DIRECT_MULTIDIM_ELEM(Pupdate,n);
135  *ptrPupdate+=(*ptrIfourier)*assigned.score;
136  *(ptrPupdate+1)+=(*(ptrIfourier+1))*assigned.score;
138  }
139  //PupdateReal+=I*assigned.score;
140  //weightSum+=assigned.score;
141  nextListImg.push_back(assigned);
142 
143 #ifdef DEBUG
144  Image<double> save;
145  save()=I;
146  save.write("PPPupdateI.vol");
147  save()=PupdateReal;
148  save.write("PPPupdateUpdateReal.vol");
149  save()=P;
150  if (MULTIDIM_SIZE(P)>0)
151  save.write("PPPupdateP.vol");
152 
153  // Take from Pupdate
155  PfourierAux=Pupdate;
156  save().initZeros(I);
157  double *ptrPupdate=(double*)&DIRECT_MULTIDIM_ELEM(PfourierAux,0);
159  {
160  double maskVal=DIRECT_MULTIDIM_ELEM(PupdateMask,n);
161  if (maskVal>0)
162  {
163  double iMask=1./maskVal;
164  *(ptrPupdate)*=iMask;
165  *(ptrPupdate+1)*=iMask;
166  }
167  ptrPupdate+=2;
168  }
169  transformer.inverseFourierTransform(PfourierAux,save());
170  save.write("PPPupdateUpdateFourier.vol");
171  std::cout << "Updating. Press any key\n";
172  char c;
173  std::cin >> c;
174 #endif
175  }
176 }
void inverseFourierTransform()
Definition: xmipp_fftw.cpp:329
doublereal * c
#define MULTIDIM_SIZE(v)
void constructFourierMask(MultidimArray< double > &I)
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)
MultidimArray< std::complex< double > > Pupdate
MultidimArray< int > IfourierMask
MultidimArray< std::complex< double > > Ifourier
#define FOR_ALL_DIRECT_ELEMENTS_IN_MULTIDIMARRAY(v)
#define DIRECT_MULTIDIM_ELEM(v, n)
MultidimArray< double > P
MultidimArray< double > PupdateMask
FourierTransformer transformer
int * n
std::vector< CL3DAssignment > nextListImg
#define BAD_OBJID
Definition: metadata_base.h:55

Member Data Documentation

◆ bgMask

MultidimArray<double> CL3DClass::bgMask

Definition at line 76 of file mpi_classify_CLTomo.h.

◆ currentListImg

std::vector<CL3DAssignment> CL3DClass::currentListImg

Definition at line 112 of file mpi_classify_CLTomo.h.

◆ Iaux

MultidimArray<double> CL3DClass::Iaux

Definition at line 109 of file mpi_classify_CLTomo.h.

◆ Ifourier

MultidimArray< std::complex<double> > CL3DClass::Ifourier

Definition at line 85 of file mpi_classify_CLTomo.h.

◆ IfourierMag

MultidimArray<double> CL3DClass::IfourierMag

Definition at line 88 of file mpi_classify_CLTomo.h.

◆ IfourierMagSorted

MultidimArray<double> CL3DClass::IfourierMagSorted

Definition at line 88 of file mpi_classify_CLTomo.h.

◆ IfourierMask

MultidimArray<int> CL3DClass::IfourierMask

Definition at line 91 of file mpi_classify_CLTomo.h.

◆ IfourierMaskFRM

MultidimArray<int> CL3DClass::IfourierMaskFRM

Definition at line 91 of file mpi_classify_CLTomo.h.

◆ neighboursIdx

std::vector<int> CL3DClass::neighboursIdx

Definition at line 118 of file mpi_classify_CLTomo.h.

◆ nextListImg

std::vector<CL3DAssignment> CL3DClass::nextListImg

Definition at line 115 of file mpi_classify_CLTomo.h.

◆ P

MultidimArray<double> CL3DClass::P

Definition at line 76 of file mpi_classify_CLTomo.h.

◆ Paux

MultidimArray<double> CL3DClass::Paux

Definition at line 76 of file mpi_classify_CLTomo.h.

◆ Pfourier

MultidimArray< std::complex<double> > CL3DClass::Pfourier

Definition at line 79 of file mpi_classify_CLTomo.h.

◆ Pupdate

MultidimArray< std::complex<double> > CL3DClass::Pupdate

Definition at line 97 of file mpi_classify_CLTomo.h.

◆ PupdateMask

MultidimArray< double > CL3DClass::PupdateMask

Definition at line 106 of file mpi_classify_CLTomo.h.

◆ pyIfourierMaskFRM

PyObject* CL3DClass::pyIfourierMaskFRM =nullptr

Definition at line 94 of file mpi_classify_CLTomo.h.

◆ transformer

FourierTransformer CL3DClass::transformer

Definition at line 82 of file mpi_classify_CLTomo.h.


The documentation for this class was generated from the following files: