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

#include <coordinates_noisy_zones_filter.h>

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

Public Member Functions

virtual void defineParams ()
 
virtual void readParams ()
 
virtual void show ()
 
virtual 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

FileName fnInCoord
 
FileName fnInMic
 
FileName fnOut
 
int patchSize
 
- 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

Generic class to filtrate the coordinates in noisy zones

Definition at line 38 of file coordinates_noisy_zones_filter.h.

Member Function Documentation

◆ defineParams()

void ProgCoordinatesNoisyZonesFilter::defineParams ( )
virtual

Function in which the param of each Program are defined.

Reimplemented from XmippProgram.

Definition at line 28 of file coordinates_noisy_zones_filter.cpp.

29 {
30  // Parameters
31  addParamsLine(" --pos <coordinates> : Input coordinates");
32  addParamsLine(" --mic <micrograph> : Reference volume");
33  addParamsLine(" [--patchSize <n=50>] : Patch size for the variance filter");
34  addParamsLine(" [-o <coordinates>] : Output coordinates (if not passed, "
35  "the input is overwritten)");
36 }
void addParamsLine(const String &line)

◆ readParams()

void ProgCoordinatesNoisyZonesFilter::readParams ( )
virtual

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 38 of file coordinates_noisy_zones_filter.cpp.

39 {
40  fnInCoord = getParam("--pos");
41  fnInMic = getParam("--mic");
42  if (checkParam("-o"))
43  fnOut = getParam("-o");
44  else
45  fnOut = fnInCoord;
46  patchSize = getIntParam("--patchSize");
47 }
const char * getParam(const char *param, int arg=0)
bool checkParam(const char *param)
int getIntParam(const char *param, int arg=0)

◆ run()

void ProgCoordinatesNoisyZonesFilter::run ( )
virtual

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

Reimplemented from XmippProgram.

Definition at line 61 of file coordinates_noisy_zones_filter.cpp.

62 {
63  show();
64 
65  Micrograph mic;
67  mic.read_coordinates(0, (String)"particles@"+fnInCoord);
68  mic.add_label("");
69 
70  Image<double> im;
71  im.read(fnInMic);
72 
73  // std::cout << " - Starting normalization " << std::endl;
74  MultidimArray<double> &matrixMic = im();
75  matrixMic.selfNormalizeInterval();
76 
77  if (verbose>1)
78  {
79  Image<double> aux(matrixMic);
80  aux.write(fnInCoord.withoutExtension()+"_normalized.mrc");
81  }
82 
83  // giniCoeff(Image, patchSize) returns the giniCoeff of the Image and
84  // applies a variance filter to the Image with a patchSize
85  double giniV = giniCoeff(matrixMic, patchSize);
86 
87  if (verbose>1)
88  {
89  Image<double> aux(matrixMic);
90  aux.write(fnInCoord.withoutExtension()+"_varianceFilter.mrc");
91  std::cout << " Gini Coeff: " << giniV << std::endl
92  << "(" << fnInMic << ")" << std::endl;
93  }
94 
95  // adding the variance value of the zone to every coordinate
96  std::vector<Particle_coords> &allCoords=mic.coords;
97  std::vector<double> varValue;
98  for (size_t i=0; i<allCoords.size(); ++i)
99  {
100  Particle_coords &coord=allCoords[i];
101  varValue.push_back(DIRECT_A2D_ELEM(matrixMic,coord.Y,coord.X));
102  }
103 
104  // creating a MetaData with the coordinates and the Scores VAR and GINI
105  MetaDataVec MD;
106  int imax = allCoords.size();
107  size_t id;
108  for (int i = 0; i < imax; i++)
109  if (allCoords[i].valid && allCoords[i].cost > 0
110  && allCoords[i].label == 0)
111  {
112  id = MD.addObject();
113  MD.setValue(MDL_XCOOR, allCoords[i].X, id);
114  MD.setValue(MDL_YCOOR, allCoords[i].Y, id);
115  MD.setValue(MDL_SCORE_BY_VAR, varValue[i], id);
116  MD.setValue(MDL_SCORE_BY_GINI, giniV, id);
117  }
118  MD.write((String)"particles@"+fnOut);
119 }
int Y
Y position.
Definition: micrograph.h:62
double giniCoeff(MultidimArray< double > &I, int varKernelSize)
Definition: filters.cpp:972
void read_coordinates(int label, const FileName &fn_coords)
Definition: micrograph.cpp:216
#define DIRECT_A2D_ELEM(v, i, j)
std::vector< Particle_coords > coords
Definition: micrograph.h:118
int X
X position.
Definition: micrograph.h:60
void write(const FileName &outFile, WriteModeMetaData mode=MD_OVERWRITE) const
int add_label(const std::string &label)
Definition: micrograph.h:501
size_t size() const override
#define i
void open_micrograph(const FileName &fn_micrograph)
Definition: micrograph.cpp:61
bool setValue(const MDObject &mdValueIn, size_t id)
size_t addObject() override
< Particle variance (double)
X component (int)
int verbose
Verbosity level.
FileName withoutExtension() const
std::string String
Definition: xmipp_strings.h:34
void selfNormalizeInterval(double minPerc=0.25, double maxPerc=0.75, int Npix=1000)
int read(const FileName &name, DataMode datamode=DATA, size_t select_img=ALL_IMAGES, bool mapData=false, int mode=WRITE_READONLY)
Y component (int)

◆ show()

void ProgCoordinatesNoisyZonesFilter::show ( )
virtual

Definition at line 49 of file coordinates_noisy_zones_filter.cpp.

50 {
51  if (verbose)
52  std::cout
53  << "Input Coordinates: " << fnInCoord << std::endl
54  << "Input Micrograph: " << fnInMic << std::endl
55  << "Output coordinates: " << fnOut << std::endl
56  << "Patch size: " << patchSize << std::endl
57  ;
58 }
int verbose
Verbosity level.

Member Data Documentation

◆ fnInCoord

FileName ProgCoordinatesNoisyZonesFilter::fnInCoord

Input coordinates

Definition at line 42 of file coordinates_noisy_zones_filter.h.

◆ fnInMic

FileName ProgCoordinatesNoisyZonesFilter::fnInMic

Input Micrograph

Definition at line 45 of file coordinates_noisy_zones_filter.h.

◆ fnOut

FileName ProgCoordinatesNoisyZonesFilter::fnOut

Output coordinates

Definition at line 48 of file coordinates_noisy_zones_filter.h.

◆ patchSize

int ProgCoordinatesNoisyZonesFilter::patchSize

Patch is of size: size x size

Definition at line 51 of file coordinates_noisy_zones_filter.h.


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