Xmipp  v3.23.11-Nereus
Public Member Functions | Public Attributes | List of all members
ProgMetadataHistogram Class Reference
Inheritance diagram for ProgMetadataHistogram:
Inheritance graph
[legend]
Collaboration diagram for ProgMetadataHistogram:
Collaboration graph
[legend]

Public Member Functions

void defineParams ()
 
void readColumn (MDLabel &column, bool &automatic, double &m, double &M, int &steps, bool second=false)
 
void getColumnValues (const MDLabel column, MultidimArray< double > &values, const bool automatic, double &m, double &M)
 
void readParams ()
 
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

MetaDataVec mdIn
 
FileName fn_in
 
FileName fn_out
 
FileName fn_img
 
MDLabel col
 
MDLabel col2
 
double m
 
double M
 
double m2
 
double M2
 
bool do_hist2d
 
bool write_img
 
bool automatic_range
 
bool automatic_range2
 
int StepsNo
 
int StepsNo2
 
Histogram1D hist
 
Histogram2D hist2
 
double percentil
 
- 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

Definition at line 30 of file metadata_histogram.cpp.

Member Function Documentation

◆ defineParams()

void ProgMetadataHistogram::defineParams ( )
inlinevirtual

Function in which the param of each Program are defined.

Reimplemented from XmippProgram.

Definition at line 43 of file metadata_histogram.cpp.

44  {
45  addUsageLine("Calculate histogram from a metadata column(1D) or from a couple of columns(2D)");
46  addParamsLine(" -i <input_metadata> : input metadata");
47  addParamsLine(" [-o <text_file=\"/dev/stdout\">] : output text file with histogram, by default standard output");
48  addParamsLine(" --col <label> : column to create the histogram");
49  addParamsLine(" [--range <m> <M>] : range for the histogram, automatic calculated if not provided");
50  addParamsLine(" [--steps <N=100>] : number of subdivisions");
51  addParamsLine(" [--col2 <label=\"\"> ] : if specified, a 2D histogram is calculated");
52  addParamsLine(" [--range2 <m> <M>] : range for second column in 2D histogram");
53  addParamsLine(" requires --col2;");
54  addParamsLine(" [--steps2 <N=100>] : number of subdivisions in second column");
55  addParamsLine(" requires --col2;");
56  addParamsLine(" [--percentil <p=50.>] : Only for 1D histograms");
57  addParamsLine(" [--write_as_image <image_file>] : Only for 2D histograms");
58  addParamsLine(" requires --col2;");
59 
60  addExampleLine("Calculate the histogram of the column 'angleRot' from a metadata:", false);
61  addExampleLine("xmipp_metadata_histogram -i images.xmd --col angleRot -o hist.txt");
62 
63  addSeeAlsoLine("image_histogram");
64 
65  }
void addSeeAlsoLine(const char *seeAlso)
void addExampleLine(const char *example, bool verbatim=true)
void addUsageLine(const char *line, bool verbatim=false)
void addParamsLine(const String &line)

◆ getColumnValues()

void ProgMetadataHistogram::getColumnValues ( const MDLabel  column,
MultidimArray< double > &  values,
const bool  automatic,
double &  m,
double &  M 
)
inline

Definition at line 90 of file metadata_histogram.cpp.

91  {
92  std::vector<double> columnValues;
93  mdIn.getColumnValues(column, columnValues);
94  values = columnValues;
95  if (automatic)
96  values.computeDoubleMinMax(m, M);
97  }
void computeDoubleMinMax(double &minval, double &maxval) const
void getColumnValues(const MDLabel label, std::vector< MDObject > &valuesOut) const override

◆ readColumn()

void ProgMetadataHistogram::readColumn ( MDLabel column,
bool &  automatic,
double &  m,
double &  M,
int &  steps,
bool  second = false 
)
inline

Definition at line 67 of file metadata_histogram.cpp.

68  {
69  const char* colStr = second ? "--col2" : "--col";
70  const char* rangeStr = second ? "--range2" : "--range";
71  const char* stepStr = second ? "--steps2" : "--steps";
72 
73  column = MDL::str2Label(getParam(colStr));
74  steps = getIntParam(stepStr);
75  automatic = true;
76  if (checkParam(rangeStr))
77  {
78  m = getDoubleParam(rangeStr, 0);
79  M = getDoubleParam(rangeStr, 1);
80  automatic = false;
81  }
82 
83  // Check if valid columns where provided
84  if (column == MDL_UNDEFINED)
85  REPORT_ERROR(ERR_MD_UNDEFINED, "Metadata Histogram: Column for histogram not valid");
86  else if (!MDL::isDouble(column))
87  REPORT_ERROR(ERR_MD_BADTYPE, "Metadata Histogram: Column type for histogram should be double");
88  }
double getDoubleParam(const char *param, int arg=0)
static MDLabel str2Label(const String &labelName)
#define REPORT_ERROR(nerr, ErrormMsg)
Definition: xmipp_error.h:211
Undefined label.
Definition: xmipp_error.h:162
const char * getParam(const char *param, int arg=0)
double steps
Bad label type.
Definition: xmipp_error.h:161
static bool isDouble(const MDLabel label)
bool checkParam(const char *param)
int getIntParam(const char *param, int arg=0)

◆ readParams()

void ProgMetadataHistogram::readParams ( )
inlinevirtual

Function in which each program will read parameters that it need. If some error occurs the usage will be printed out.

Reimplemented from XmippProgram.

Definition at line 99 of file metadata_histogram.cpp.

100  {
101  fn_in = getParam("-i");
102  mdIn.read(fn_in);
103  fn_out = getParam("-o");
104  percentil = getDoubleParam("--percentil");
106 
107  if ((do_hist2d = checkParam("--col2")))
109 
110  if ((write_img = checkParam("--write_as_image")))
111  fn_img = getParam("--write_as_image");
112  }
double getDoubleParam(const char *param, int arg=0)
void read(const FileName &inFile, const std::vector< MDLabel > *desiredLabels=nullptr, bool decomposeStack=true) override
const char * getParam(const char *param, int arg=0)
void readColumn(MDLabel &column, bool &automatic, double &m, double &M, int &steps, bool second=false)
bool checkParam(const char *param)

◆ run()

void ProgMetadataHistogram::run ( )
inlinevirtual

This function will be start running the program. it also should be implemented by derived classes.

Reimplemented from XmippProgram.

Definition at line 114 of file metadata_histogram.cpp.

115  {
116  double avg=0., stddev=0., dummy;
119 
120  if (!do_hist2d)
121  {
122  compute_hist(C, hist, m, M, StepsNo);
123  std::cout << formatString("min: %f max: %f steps: %d", m, M, StepsNo) << std::endl;
124  C.computeStats(avg, stddev, dummy, dummy);
125  std::cout << formatString("mean: %f stddev: %f", avg, stddev) << std::endl;
126  std::cout << formatString("percentil (%f)", hist.percentil(percentil)) << std::endl;
127  hist.write(fn_out);
128  }
129  else
130  {
133  compute_hist(C, C2, hist2, m, M, m2, M2, StepsNo, StepsNo2);
134  //stats for column 1
135  std::cout << formatString("min1: %f max1: %f steps1: %d", m, M, StepsNo) << std::endl;
136  C.computeStats(avg, stddev, dummy, dummy);
137  std::cout << formatString("mean: %f stddev: %f", avg, stddev) << std::endl;
138  //stats for column 2
139  std::cout << formatString("min2: %f max2: %f steps2: %d", m2, M2, StepsNo2) << std::endl;
140  C2.computeStats(avg, stddev, dummy, dummy);
141  std::cout << formatString("mean: %f stddev: %f", avg, stddev) << std::endl;
142  hist2.write(fn_out);
143 
144  if (write_img)
145  {
146  Image<double> img;
147  img() = hist2;
148  img.write(fn_img);
149  }
150  }
151  }
void computeStats(double &avg, double &stddev, T &minval, T &maxval) const
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 percentil(double percent_mass)
Definition: histogram.cpp:160
void compute_hist(const MultidimArrayGeneric &array, Histogram1D &hist, int no_steps)
Definition: histogram.cpp:572
void write(const FileName &fn)
Definition: histogram.cpp:561
double dummy
void write(const FileName &fn, MDLabel=MDL_X, MDLabel=MDL_COUNT)
Definition: histogram.cpp:129
String formatString(const char *format,...)
void getColumnValues(const MDLabel column, MultidimArray< double > &values, const bool automatic, double &m, double &M)

Member Data Documentation

◆ automatic_range

bool ProgMetadataHistogram::automatic_range

Definition at line 37 of file metadata_histogram.cpp.

◆ automatic_range2

bool ProgMetadataHistogram::automatic_range2

Definition at line 37 of file metadata_histogram.cpp.

◆ col

MDLabel ProgMetadataHistogram::col

Definition at line 35 of file metadata_histogram.cpp.

◆ col2

MDLabel ProgMetadataHistogram::col2

Definition at line 35 of file metadata_histogram.cpp.

◆ do_hist2d

bool ProgMetadataHistogram::do_hist2d

Definition at line 37 of file metadata_histogram.cpp.

◆ fn_img

FileName ProgMetadataHistogram::fn_img

Definition at line 34 of file metadata_histogram.cpp.

◆ fn_in

FileName ProgMetadataHistogram::fn_in

Definition at line 34 of file metadata_histogram.cpp.

◆ fn_out

FileName ProgMetadataHistogram::fn_out

Definition at line 34 of file metadata_histogram.cpp.

◆ hist

Histogram1D ProgMetadataHistogram::hist

Definition at line 39 of file metadata_histogram.cpp.

◆ hist2

Histogram2D ProgMetadataHistogram::hist2

Definition at line 40 of file metadata_histogram.cpp.

◆ M

double ProgMetadataHistogram::M

Definition at line 36 of file metadata_histogram.cpp.

◆ m

double ProgMetadataHistogram::m

Definition at line 36 of file metadata_histogram.cpp.

◆ M2

double ProgMetadataHistogram::M2

Definition at line 36 of file metadata_histogram.cpp.

◆ m2

double ProgMetadataHistogram::m2

Definition at line 36 of file metadata_histogram.cpp.

◆ mdIn

MetaDataVec ProgMetadataHistogram::mdIn

Definition at line 33 of file metadata_histogram.cpp.

◆ percentil

double ProgMetadataHistogram::percentil

Definition at line 41 of file metadata_histogram.cpp.

◆ StepsNo

int ProgMetadataHistogram::StepsNo

Definition at line 38 of file metadata_histogram.cpp.

◆ StepsNo2

int ProgMetadataHistogram::StepsNo2

Definition at line 38 of file metadata_histogram.cpp.

◆ write_img

bool ProgMetadataHistogram::write_img

Definition at line 37 of file metadata_histogram.cpp.


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