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

#include <mpi_image_rotational_pca.h>

Inheritance diagram for MpiProgImageRotationalPCA:
Inheritance graph
[legend]
Collaboration diagram for MpiProgImageRotationalPCA:
Collaboration graph
[legend]

Public Member Functions

 MpiProgImageRotationalPCA (int argc, char **argv)
 Empty constructor. More...
 
virtual void selectPartFromMd (MetaData &MDin)
 
virtual void comunicateMatrix (Matrix2D< double > &W)
 
virtual void createMutexes (size_t Nimgs)
 
virtual void allReduceApplyT (Matrix2D< double > &Wnode_0)
 
virtual void comunicateQrDim (int &qrDim)
 
virtual void mapMatrix (int qrDim)
 
virtual void applySVD ()
 
virtual void copyHtoF (int block)
 
- Public Member Functions inherited from ProgImageRotationalPCA
 ProgImageRotationalPCA ()
 Empty constructor. More...
 
 ~ProgImageRotationalPCA ()
 Destructor. More...
 
void readParams ()
 Read argument from command line. More...
 
void show ()
 Show. More...
 
void defineParams ()
 Usage. More...
 
void produceSideInfo ()
 Produce side info. More...
 
void writeToHBuffer (int idx, double *dest)
 
void flushHBuffer ()
 
void clearHbuffer ()
 
void applyT ()
 
void applyTt ()
 
int QR ()
 
void run ()
 
- Public Member Functions inherited from XmippProgram
const char * getParam (const char *param, int arg=0)
 
const char * getParam (const char *param, const char *subparam, int arg=0)
 
int getIntParam (const char *param, int arg=0)
 
int getIntParam (const char *param, const char *subparam, int arg=0)
 
double getDoubleParam (const char *param, int arg=0)
 
double getDoubleParam (const char *param, const char *subparam, int arg=0)
 
float getFloatParam (const char *param, int arg=0)
 
float getFloatParam (const char *param, const char *subparam, int arg=0)
 
void getListParam (const char *param, StringVector &list)
 
int getCountParam (const char *param)
 
bool checkParam (const char *param)
 
bool existsParam (const char *param)
 
void addParamsLine (const String &line)
 
void addParamsLine (const char *line)
 
ParamDefgetParamDef (const char *param) const
 
virtual void quit (int exit_code=0) const
 
virtual int tryRun ()
 
void initProgress (size_t total, size_t stepBin=60)
 
void setProgress (size_t value=0)
 
void endProgress ()
 
void processDefaultComment (const char *param, const char *left)
 
void setDefaultComment (const char *param, const char *comment)
 
virtual void initComments ()
 
void setProgramName (const char *name)
 
void addUsageLine (const char *line, bool verbatim=false)
 
void clearUsage ()
 
void addExampleLine (const char *example, bool verbatim=true)
 
void addSeeAlsoLine (const char *seeAlso)
 
void addKeywords (const char *keywords)
 
const char * name () const
 
virtual void usage (int verb=0) const
 
virtual void usage (const String &param, int verb=2)
 
int version () const
 
virtual void show () const
 
virtual void read (int argc, const char **argv, bool reportErrors=true)
 
virtual void read (int argc, char **argv, bool reportErrors=true)
 
void read (const String &argumentsLine)
 
 XmippProgram ()
 
 XmippProgram (int argc, const char **argv)
 
virtual ~XmippProgram ()
 

Public Attributes

std::shared_ptr< MpiNodenode
 
- Public Attributes inherited from ProgImageRotationalPCA
FileName fnIn
 
FileName fnRoot
 
int Neigen
 
int Nits
 
double psi_step
 
double max_shift_change
 
double shift_step
 
int maxNimgs
 
int Nthreads
 
int rank
 
std::vector< MetaDataVecMD
 
size_t Nimg
 
int Nangles
 
int Nshifts
 
size_t Xdim
 
int Npixels
 
std::vector< double * > Hbuffer
 
std::vector< double * > HbufferDestination
 
std::unique_ptr< MutexfileMutex
 
std::unique_ptr< MutexthreadMutex
 
Matrix2D< double > H
 
Matrix2D< double > F
 
std::vector< Image< double > > I
 
std::vector< MultidimArray< double > > Iaux
 
std::vector< Matrix2D< double > > A
 
std::vector< Matrix2D< double > > Hblock
 
std::vector< Matrix2D< double > > Wnode
 
Matrix2D< double > Wtranspose
 
MultidimArray< unsigned char > mask
 
std::unique_ptr< ThreadTaskDistributortaskDistributor
 
std::unique_ptr< ThreadManagerthMgr
 
std::vector< size_t > objId
 
- Public Attributes inherited from XmippProgram
bool doRun
 
bool runWithoutArgs
 
int verbose
 Verbosity level. More...
 
int debug
 

Additional Inherited Members

- Static Public Attributes inherited from ProgImageRotationalPCA
static const int HbufferMax =20
 
- Protected Member Functions inherited from XmippProgram
void defineCommons ()
 
- Protected Attributes inherited from XmippProgram
int errorCode
 
ProgramDefprogDef
 Program definition and arguments parser. More...
 
std::map< String, CommentListdefaultComments
 
int argc
 Original command line arguments. More...
 
const char ** argv
 

Detailed Description

Rotational invariant PCA parameters.

Definition at line 36 of file mpi_image_rotational_pca.h.

Constructor & Destructor Documentation

◆ MpiProgImageRotationalPCA()

MpiProgImageRotationalPCA::MpiProgImageRotationalPCA ( int  argc,
char **  argv 
)

Empty constructor.

Definition at line 33 of file mpi_image_rotational_pca.cpp.

34 {
35  node = std::make_shared<MpiNode>(argc, argv);
36  rank = node->rank;
37  if (!IS_MASTER)
38  verbose = 0;
39 }
std::shared_ptr< MpiNode > node
int argc
Original command line arguments.
Definition: xmipp_program.h:86
#define IS_MASTER
const char ** argv
Definition: xmipp_program.h:87
int verbose
Verbosity level.

Member Function Documentation

◆ allReduceApplyT()

void MpiProgImageRotationalPCA::allReduceApplyT ( Matrix2D< double > &  Wnode_0)
virtual

Last part of function applyT

Reimplemented from ProgImageRotationalPCA.

Definition at line 72 of file mpi_image_rotational_pca.cpp.

73 {
74  MPI_Allreduce(MPI_IN_PLACE, MATRIX2D_ARRAY(Wnode_0), MAT_XSIZE(Wnode_0)*MAT_YSIZE(Wnode_0),
75  MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
76 }
#define MAT_YSIZE(m)
Definition: matrix2d.h:124
#define MAT_XSIZE(m)
Definition: matrix2d.h:120
#define MATRIX2D_ARRAY(m)
Definition: matrix2d.h:89

◆ applySVD()

void MpiProgImageRotationalPCA::applySVD ( )
virtual

Apply SVD

Reimplemented from ProgImageRotationalPCA.

Definition at line 101 of file mpi_image_rotational_pca.cpp.

102 {
103  if (IS_MASTER)
105  node->barrierWait();
106 }
std::shared_ptr< MpiNode > node
#define IS_MASTER

◆ comunicateMatrix()

void MpiProgImageRotationalPCA::comunicateMatrix ( Matrix2D< double > &  W)
virtual

Comunicate matrix, only meanful for MPI

Reimplemented from ProgImageRotationalPCA.

Definition at line 59 of file mpi_image_rotational_pca.cpp.

60 {
61  MPI_Bcast(&MAT_ELEM(W,0,0),MAT_XSIZE(W)*MAT_YSIZE(W),MPI_DOUBLE,0,MPI_COMM_WORLD);
62 }
#define MAT_YSIZE(m)
Definition: matrix2d.h:124
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
#define MAT_XSIZE(m)
Definition: matrix2d.h:120

◆ comunicateQrDim()

void MpiProgImageRotationalPCA::comunicateQrDim ( int &  qrDim)
virtual

Comunicate int param

Reimplemented from ProgImageRotationalPCA.

Definition at line 78 of file mpi_image_rotational_pca.cpp.

79 {
80  if (IS_MASTER)
82  node->barrierWait();
83  MPI_Bcast(&qrDim,1,MPI_INT,0,MPI_COMM_WORLD);
84 }
virtual void comunicateQrDim(int &qrDim)
std::shared_ptr< MpiNode > node
#define IS_MASTER

◆ copyHtoF()

void MpiProgImageRotationalPCA::copyHtoF ( int  block)
virtual

Copy H to F.

Reimplemented from ProgImageRotationalPCA.

Definition at line 109 of file mpi_image_rotational_pca.cpp.

110 {
111  if (IS_MASTER)
113  node->barrierWait();
114 }
virtual void copyHtoF(int block)
std::shared_ptr< MpiNode > node
#define IS_MASTER

◆ createMutexes()

void MpiProgImageRotationalPCA::createMutexes ( size_t  Nimgs)
virtual

Create mutexes and distributor

Reimplemented from ProgImageRotationalPCA.

Definition at line 64 of file mpi_image_rotational_pca.cpp.

65 {
66  fileMutex = std::make_unique<MpiFileMutex>(node);
67  threadMutex = std::make_unique<Mutex>();
68  taskDistributor = std::make_unique<MpiTaskDistributor>(Nimgs, XMIPP_MAX(1,Nimgs/(5*node->size)), node);
69 }
#define XMIPP_MAX(x, y)
Definition: xmipp_macros.h:193
std::shared_ptr< MpiNode > node
std::unique_ptr< Mutex > threadMutex
std::unique_ptr< ThreadTaskDistributor > taskDistributor
std::unique_ptr< Mutex > fileMutex

◆ mapMatrix()

void MpiProgImageRotationalPCA::mapMatrix ( int  qrDim)
virtual

Map matrix

Reimplemented from ProgImageRotationalPCA.

Definition at line 86 of file mpi_image_rotational_pca.cpp.

87 {
88 // Load the first qrDim columns of F in matrix H
89  if (IS_MASTER)
90  {
92  node->barrierWait();
93  }
94  else
95  {
96  node->barrierWait();
97  H.mapToFile(fnRoot+"_matrixH.raw",MAT_XSIZE(F),qrDim);
98  }
99 }
void mapToFile(const FileName &fn, int Ydim, int Xdim, size_t offset=0)
Definition: matrix2d.cpp:1079
std::shared_ptr< MpiNode > node
#define IS_MASTER
virtual void mapMatrix(int qrDim)
#define MAT_XSIZE(m)
Definition: matrix2d.h:120

◆ selectPartFromMd()

void MpiProgImageRotationalPCA::selectPartFromMd ( MetaData MDin)
virtual

Read input images

Reimplemented from ProgImageRotationalPCA.

Definition at line 41 of file mpi_image_rotational_pca.cpp.

42 {
43  if (IS_MASTER)
44  {
46  MDin.write(fnRoot + "_temp.xmd");
47  node->barrierWait();
48  node->barrierWait();
49  unlink((fnRoot + "_temp.xmd").c_str());
50  }
51  else
52  {
53  node->barrierWait();
54  MDin.read(fnRoot + "_temp.xmd");
55  node->barrierWait();
56  }
57 }
virtual void selectPartFromMd(MetaData &MDin)
virtual void write(const FileName &outFile, WriteModeMetaData mode=MD_OVERWRITE) const =0
std::shared_ptr< MpiNode > node
#define IS_MASTER
virtual void read(const FileName &inFile, const std::vector< MDLabel > *desiredLabels=nullptr, bool decomposeStack=true)=0

Member Data Documentation

◆ node

std::shared_ptr<MpiNode> MpiProgImageRotationalPCA::node

Definition at line 40 of file mpi_image_rotational_pca.h.


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