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

#include <matrix_dimred.h>

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

Public Member Functions

 ProgDimRed ()
 Empty constructor. More...
 
virtual void readParams ()
 Read argument from command line. More...
 
virtual void show ()
 Show. More...
 
virtual void defineParams ()
 Define parameters. More...
 
virtual void produceSideInfo ()
 Produce side info. More...
 
void estimateDimension ()
 Estimate dimensionality. More...
 
- 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 run ()
 
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

FileName fnIn
 
FileName fnOut
 
FileName fnMapping
 
int outputDim
 
String dimRefMethod
 
String dimEstMethod
 
int kNN
 
int Niter
 
double t
 
double sigma
 
bool global
 
Matrix2D< double > X
 
DimRedAlgorithmalgorithm
 
PCA algorithmPCA
 
LTSA algorithmLTSA
 
DiffusionMaps algorithmDiffusionMaps
 
LLTSA algorithmLLTSA
 
LPP algorithmLPP
 
KernelPCA algorithmKernelPCA
 
ProbabilisticPCA algorithmProbabilisticPCA
 
LaplacianEigenmap algorithmLaplacianEigenmap
 
HessianLLE algorithmHessianLLE
 
NPE algorithmNPE
 
SPE algorithmSPE
 
- Public Attributes inherited from XmippProgram
bool doRun
 
bool runWithoutArgs
 
int verbose
 Verbosity level. More...
 
int debug
 

Additional Inherited Members

- 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

Program Dimred.

Definition at line 47 of file matrix_dimred.h.

Constructor & Destructor Documentation

◆ ProgDimRed()

ProgDimRed::ProgDimRed ( )

Empty constructor.

Definition at line 29 of file matrix_dimred.cpp.

30 {
31  algorithm=NULL;
32 }
DimRedAlgorithm * algorithm
Definition: matrix_dimred.h:68

Member Function Documentation

◆ defineParams()

void ProgDimRed::defineParams ( )
virtual

Define parameters.

Reimplemented from XmippProgram.

Reimplemented in ProgMatrixDimRed, and ProgTransformDimRed.

Definition at line 83 of file matrix_dimred.cpp.

84 {
85  processDefaultComment("-i","-i <input>");
86  processDefaultComment("-o","[-o <output=\"\">]");
87  addParamsLine(" [-m <dimRefMethod=PCA>]: Dimensionality Reduction method selected");
88  addParamsLine(" where <dimRefMethod>");
89  addParamsLine(" PCA : Principal Component Analysis");
90  addParamsLine(" LTSA <k=12> : Local Tangent Space Alignment, k=number of nearest neighbours");
91  addParamsLine(" DM <s=1> <t=1> : Diffusion map, t=Markov random walk, s=kernel sigma");
92  addParamsLine(" LLTSA <k=12> : Linear Local Tangent Space Alignment, k=number of nearest neighbours");
93  addParamsLine(" LPP <k=12> <s=1> : Linearity Preserving Projection, k=number of nearest neighbours, s=kernel sigma");
94  addParamsLine(" kPCA <s=1> : Kernel PCA, s=kernel sigma");
95  addParamsLine(" pPCA <n=200> : Probabilistic PCA, n=number of iterations");
96  addParamsLine(" LE <k=7> <s=1> : Laplacian Eigenmap, k=number of nearest neighbours, s=kernel sigma");
97  addParamsLine(" HLLE <k=12> : Hessian Locally Linear Embedding, k=number of nearest neighbours");
98  addParamsLine(" SPE <k=12> <global=1> : Stochastic Proximity Embedding, k=number of nearest neighbours, global embedding or not");
99  addParamsLine(" NPE <k=12> : Neighborhood Preserving Embedding, k=number of nearest neighbours");
100  addParamsLine(" [--dout <d=2> <method=CorrDim>] : Output dimension. Set to -1 for automatic estimation with a specific method");
101  addParamsLine(" where <method>");
102  addParamsLine(" CorrDim: Correlation dimension");
103  addParamsLine(" MLE: Maximum Likelihood Estimate");
104  addParamsLine(" [--saveMapping <fn=\"\">] : Save mapping if available (PCA, LLTSA, LPP, pPCA, NPE) so that it can be reused later (Y=X*M) (use the flag --more for details)");
105  addParamsLine(" :+Y is the output matrix with individuals as rows, M is the mapping matrix");
106  addParamsLine(" :+X is the input matrix with individuals as rows, with the mean subtracted from the columns");
107  addParamsLine(" :+Python code to generate X:");
108  addParamsLine(" :+ from numpy import loadtxt, mean, outer, ones");
109  addParamsLine(" :+ X_original = loadtxt('data.txt')");
110  addParamsLine(" :+ X = X_original - outer(ones(X_original.shape[0]),mean(X_original, axis=0))");
111 }
void processDefaultComment(const char *param, const char *left)
void addParamsLine(const String &line)

◆ estimateDimension()

void ProgDimRed::estimateDimension ( )

Estimate dimensionality.

Definition at line 166 of file matrix_dimred.cpp.

167 {
170  std::cout << "Estimated dimensionality: " << outputDim << std::endl;
171  if (outputDim<=0)
172  REPORT_ERROR(ERR_NUMERICAL,"Cannot proceed without an output dimension");
173 }
#define REPORT_ERROR(nerr, ErrormMsg)
Definition: xmipp_error.h:211
String dimEstMethod
Definition: matrix_dimred.h:59
DimRedAlgorithm * algorithm
Definition: matrix_dimred.h:68
Error related to numerical calculation.
Definition: xmipp_error.h:179
DimRedDistance2 distance
Distance function.
Definition: dimred_tools.h:150
Matrix2D< double > X
Definition: matrix_dimred.h:67
void setOutputDimensionality(size_t outputDim)
Set output dimensionality.
double intrinsicDimensionality(Matrix2D< double > &X, const String &method, bool normalize, DimRedDistance2 f)

◆ produceSideInfo()

void ProgDimRed::produceSideInfo ( )
virtual

Produce side info.

Reimplemented in ProgMatrixDimRed, and ProgTransformDimRed.

Definition at line 114 of file matrix_dimred.cpp.

115 {
116  if (dimRefMethod=="PCA")
117  {
119  } else if (dimRefMethod=="LTSA")
120  {
123  } else if (dimRefMethod=="DM")
124  {
127  } else if (dimRefMethod=="LLTSA")
128  {
131  } else if (dimRefMethod=="LPP")
132  {
135  } else if (dimRefMethod=="kPCA")
136  {
139  } else if (dimRefMethod=="pPCA")
140  {
143  } else if (dimRefMethod=="LE")
144  {
147  } else if (dimRefMethod=="HLLE")
148  {
151  } else if (dimRefMethod=="NPE")
152  {
155  } else if (dimRefMethod=="SPE")
156  {
159  }
160 
163 }
DiffusionMaps algorithmDiffusionMaps
Definition: matrix_dimred.h:71
void setSpecificParameters(size_t Niters=200)
Set specific parameters.
NPE algorithmNPE
Definition: matrix_dimred.h:78
KernelPCA algorithmKernelPCA
Definition: matrix_dimred.h:74
DimRedAlgorithm * algorithm
Definition: matrix_dimred.h:68
void setSpecificParameters(double sigma=1.0)
Set specific parameters.
Definition: kernelPCA.cpp:9
void setSpecificParameters(int k=12)
Set specific parameters.
Definition: npe.cpp:32
void setSpecificParameters(int kNeighbours=12)
Set specific parameters.
Definition: hessianLLE.cpp:26
LTSA algorithmLTSA
Definition: matrix_dimred.h:70
LaplacianEigenmap algorithmLaplacianEigenmap
Definition: matrix_dimred.h:76
SPE algorithmSPE
Definition: matrix_dimred.h:79
LLTSA algorithmLLTSA
Definition: matrix_dimred.h:72
ProbabilisticPCA algorithmProbabilisticPCA
Definition: matrix_dimred.h:75
void setSpecificParameters(double sigma=1.0, size_t numberOfNeighbours=7)
Set specific parameters.
double sigma
Definition: matrix_dimred.h:64
void setSpecificParameters(int k=12, double sigma=1.)
Set specific parameters.
Definition: lpp.cpp:28
FileName fnMapping
Save mapping.
Definition: dimred_tools.h:153
PCA algorithmPCA
Definition: matrix_dimred.h:69
FileName fnMapping
Definition: matrix_dimred.h:55
void setOutputDimensionality(size_t outputDim)
Set output dimensionality.
void setSpecificParameters(bool global=true, int k=12)
Set specific parameters.
Definition: spe.cpp:30
LPP algorithmLPP
Definition: matrix_dimred.h:73
void setSpecificParameters(int k=12)
Set specific parameters.
Definition: ltsa.cpp:26
void setSpecificParameters(double t=1.0, double sigma=1.0)
Set specific parameters.
String dimRefMethod
Definition: matrix_dimred.h:59
HessianLLE algorithmHessianLLE
Definition: matrix_dimred.h:77

◆ readParams()

void ProgDimRed::readParams ( )
virtual

Read argument from command line.

Reimplemented from XmippProgram.

Reimplemented in ProgMatrixDimRed, and ProgTransformDimRed.

Definition at line 34 of file matrix_dimred.cpp.

35 {
36  fnIn = getParam("-i");
37  fnOut = getParam("-o");
38  fnMapping = getParam("--saveMapping");
39  dimRefMethod = getParam("-m");
40  outputDim = getIntParam("--dout");
41  dimEstMethod = getParam("--dout",1);
42 
43  if (dimRefMethod=="LTSA" || dimRefMethod=="LLTSA" || dimRefMethod=="LPP" || dimRefMethod=="LE" || dimRefMethod=="HLLE" ||
44  dimRefMethod=="NPE" || dimRefMethod=="SPE")
45  kNN=getIntParam("-m",1);
46  if (dimRefMethod=="DM" || dimRefMethod=="kPCA")
47  sigma=getDoubleParam("-m",1);
48  if (dimRefMethod=="LPP" || dimRefMethod=="LE")
49  sigma=getDoubleParam("-m",2);
50  if (dimRefMethod=="DM")
51  t=getDoubleParam("-m",2);
52  if (dimRefMethod=="pPCA")
53  Niter=getIntParam("-m",1);
54  if (dimRefMethod=="SPE")
55  global=getIntParam("-m",2)==1;
56 }
double getDoubleParam(const char *param, int arg=0)
String dimEstMethod
Definition: matrix_dimred.h:59
FileName fnIn
Definition: matrix_dimred.h:51
const char * getParam(const char *param, int arg=0)
double sigma
Definition: matrix_dimred.h:64
FileName fnMapping
Definition: matrix_dimred.h:55
int getIntParam(const char *param, int arg=0)
FileName fnOut
Definition: matrix_dimred.h:53
String dimRefMethod
Definition: matrix_dimred.h:59

◆ show()

void ProgDimRed::show ( )
virtual

Show.

Reimplemented in ProgMatrixDimRed, and ProgTransformDimRed.

Definition at line 59 of file matrix_dimred.cpp.

60 {
61  if (verbose>0)
62  std::cout
63  << "Input metadata file: " << fnIn << std::endl
64  << "Output metadata: " << fnOut << std::endl
65  << "Output mapping: " << fnMapping << std::endl
66  << "Dim Red Method: " << dimRefMethod << std::endl
67  << "Dimension out: " << outputDim << std::endl
68  ;
69  if (dimRefMethod=="LTSA" || dimRefMethod=="LLTSA" || dimRefMethod=="LPP" || dimRefMethod=="LE" || dimRefMethod=="HLLE" ||
70  dimRefMethod=="SPE" || dimRefMethod=="NPE")
71  std::cout << "k=" << kNN << std::endl;
72  if (dimRefMethod=="DM" || dimRefMethod=="kPCA" || dimRefMethod=="LPP" || dimRefMethod=="LE")
73  std::cout << "sigma=" << sigma << std::endl;
74  if (dimRefMethod=="DM")
75  std::cout << "t=" << t << std::endl;
76  if (dimRefMethod=="pPCA")
77  std::cout << "Niter=" << Niter << std::endl;
78  if (dimRefMethod=="SPE")
79  std::cout << "Global=" << global << std::endl;
80 }
FileName fnIn
Definition: matrix_dimred.h:51
int verbose
Verbosity level.
double sigma
Definition: matrix_dimred.h:64
FileName fnMapping
Definition: matrix_dimred.h:55
FileName fnOut
Definition: matrix_dimred.h:53
String dimRefMethod
Definition: matrix_dimred.h:59

Member Data Documentation

◆ algorithm

DimRedAlgorithm* ProgDimRed::algorithm

Definition at line 68 of file matrix_dimred.h.

◆ algorithmDiffusionMaps

DiffusionMaps ProgDimRed::algorithmDiffusionMaps

Definition at line 71 of file matrix_dimred.h.

◆ algorithmHessianLLE

HessianLLE ProgDimRed::algorithmHessianLLE

Definition at line 77 of file matrix_dimred.h.

◆ algorithmKernelPCA

KernelPCA ProgDimRed::algorithmKernelPCA

Definition at line 74 of file matrix_dimred.h.

◆ algorithmLaplacianEigenmap

LaplacianEigenmap ProgDimRed::algorithmLaplacianEigenmap

Definition at line 76 of file matrix_dimred.h.

◆ algorithmLLTSA

LLTSA ProgDimRed::algorithmLLTSA

Definition at line 72 of file matrix_dimred.h.

◆ algorithmLPP

LPP ProgDimRed::algorithmLPP

Definition at line 73 of file matrix_dimred.h.

◆ algorithmLTSA

LTSA ProgDimRed::algorithmLTSA

Definition at line 70 of file matrix_dimred.h.

◆ algorithmNPE

NPE ProgDimRed::algorithmNPE

Definition at line 78 of file matrix_dimred.h.

◆ algorithmPCA

PCA ProgDimRed::algorithmPCA

Definition at line 69 of file matrix_dimred.h.

◆ algorithmProbabilisticPCA

ProbabilisticPCA ProgDimRed::algorithmProbabilisticPCA

Definition at line 75 of file matrix_dimred.h.

◆ algorithmSPE

SPE ProgDimRed::algorithmSPE

Definition at line 79 of file matrix_dimred.h.

◆ dimEstMethod

String ProgDimRed::dimEstMethod

Definition at line 59 of file matrix_dimred.h.

◆ dimRefMethod

String ProgDimRed::dimRefMethod

Method

Definition at line 59 of file matrix_dimred.h.

◆ fnIn

FileName ProgDimRed::fnIn

Input metadata

Definition at line 51 of file matrix_dimred.h.

◆ fnMapping

FileName ProgDimRed::fnMapping

Output mapping

Definition at line 55 of file matrix_dimred.h.

◆ fnOut

FileName ProgDimRed::fnOut

Output metadata

Definition at line 53 of file matrix_dimred.h.

◆ global

bool ProgDimRed::global

Definition at line 65 of file matrix_dimred.h.

◆ kNN

int ProgDimRed::kNN

Method parameters

Definition at line 61 of file matrix_dimred.h.

◆ Niter

int ProgDimRed::Niter

Definition at line 62 of file matrix_dimred.h.

◆ outputDim

int ProgDimRed::outputDim

Output dimension

Definition at line 57 of file matrix_dimred.h.

◆ sigma

double ProgDimRed::sigma

Definition at line 64 of file matrix_dimred.h.

◆ t

double ProgDimRed::t

Definition at line 63 of file matrix_dimred.h.

◆ X

Matrix2D<double> ProgDimRed::X

Definition at line 67 of file matrix_dimred.h.


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