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

#include <image_eliminate_empty_particles.h>

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

Public Member Functions

void readParams ()
 Read input parameters. More...
 
void show ()
 Show. More...
 
void defineParams ()
 Define input parameters. More...
 
void run ()
 Execute. 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 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
 Name of the input metadata. More...
 
FileName fnOut
 Name of the output metadata. More...
 
FileName fnElim
 Name of the eliminated particle metadata. More...
 
float threshold
 Threshold for variance of variance. More...
 
bool addFeatures
 Add features. More...
 
bool useDenoising
 Turning on denoising. More...
 
int denoise
 Param for denoising. More...
 
- 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 34 of file image_eliminate_empty_particles.h.

Member Function Documentation

◆ defineParams()

void ProgEliminateEmptyParticles::defineParams ( )
virtual

Define input parameters.

Reimplemented from XmippProgram.

Definition at line 61 of file image_eliminate_empty_particles.cpp.

62 {
63  addUsageLine("Eliminates empty particles (false positives from picking)");
64  addParamsLine(" -i <selfile> : Selfile containing set of input particles");
65  addParamsLine(" [-o <selfile=\"output.xmd\">] : Output selfile");
66  addParamsLine(" [-e <selfile=\"eliminated.xmd\">] : Eliminated particles selfile");
67  addParamsLine(" [-t <float=-1>] : Threshold used by algorithm. Set to -1 for no elimination.");
68  addParamsLine(" [--addFeatures] : Add the emptiness features to the input particles");
69  addParamsLine(" [--useDenoising] : Option for turning on denoising method while computing emptiness feature");
70  addParamsLine(" [-d <int=50>] : Parameter for denoising, higher value means stronger denoising and slower computation");
71 }
void addUsageLine(const char *line, bool verbatim=false)
void addParamsLine(const String &line)

◆ readParams()

void ProgEliminateEmptyParticles::readParams ( )
virtual

Read input parameters.

Reimplemented from XmippProgram.

Definition at line 33 of file image_eliminate_empty_particles.cpp.

34 {
35  fnIn = getParam("-i");
36  fnOut = getParam("-o");
37  fnElim = getParam("-e");
38  threshold = getDoubleParam("-t");
39  addFeatures = checkParam("--addFeatures");
40  useDenoising = checkParam("--useDenoising");
41  denoise = getIntParam("-d");
42 }
double getDoubleParam(const char *param, int arg=0)
FileName fnElim
Name of the eliminated particle metadata.
const char * getParam(const char *param, int arg=0)
FileName fnIn
Name of the input metadata.
bool checkParam(const char *param)
float threshold
Threshold for variance of variance.
FileName fnOut
Name of the output metadata.
int getIntParam(const char *param, int arg=0)

◆ run()

void ProgEliminateEmptyParticles::run ( )
virtual

Execute.

Reimplemented from XmippProgram.

Definition at line 73 of file image_eliminate_empty_particles.cpp.

74 {
75  MetaDataVec SF;
76  SF.read(fnIn);
77  FileName fnImg;
78  Image<double> I;
79  CorrelationAux aux;
80  MDRowVec row;
81  MetaDataVec MDclass, MDclassEl, MDclassT, MDclassElT;
83  int countItems = 0;
84  std::vector<double> fv;
85 
86  init_progress_bar(SF.size());
87  std::size_t extraPath = fnOut.find_last_of("/");
88  // these files are for streaming and will be later removed in Scipion
89  FileName fnDone = fnOut.substr(0, extraPath+1) + "outTemp.xmd";
90  FileName fnElDone = fnOut.substr(0, extraPath+1) + "elimTemp.xmd";
91 
92  std::ifstream ifile1(fnOut.c_str());
93  if (ifile1) MDclass.read(fnOut);
94  std::ifstream ifile2(fnElim.c_str());
95  if (ifile2) MDclassEl.read(fnElim);
96 
97  for (size_t objId : SF.ids())
98  {
99  countItems++;
100  SF.getValue(MDL_IMAGE, fnImg, objId);
101  SF.getRow(row, countItems);
102 
103  I.read(fnImg);
104  I().setXmippOrigin();
105  centerImageTranslationally(I(), aux);
106 
107  if (useDenoising)
109  bandpassFilter(I(), 0, 0.1, 0.02);
110 
111  ef.extractVariance(I(), fv);
112 
113  double ratio = fv.back();
114  row.setValue(MDL_SCORE_BY_EMPTINESS, ratio);
115  if (addFeatures)
117  if (threshold<0 || ratio > threshold)
118  {
119  MDclass.addRow(row);
120  MDclassT.addRow(row);
121  }
122  else
123  {
124  MDclassEl.addRow(row);
125  MDclassElT.addRow(row);
126  }
127 
128  fv.clear();
129  if (countItems%100==0)
130  progress_bar(countItems);
131  }
132  progress_bar(SF.size());
133 
134  if (MDclass.size()>0)
135  MDclass.write(formatString("@%s", fnOut.c_str()), MD_APPEND);
136  if (MDclassEl.size()>0)
137  MDclassEl.write(formatString("@%s", fnElim.c_str()), MD_APPEND);
138  if (MDclassT.size()>0)
139  MDclassT.write(formatString("@%s", fnDone.c_str()), MD_APPEND);
140  if (MDclassElT.size()>0)
141  MDclassElT.write(formatString("@%s", fnElDone.c_str()), MD_APPEND);
142 }
void init_progress_bar(long total)
void centerImageTranslationally(MultidimArray< double > &I, CorrelationAux &aux)
Definition: filters.cpp:3212
void read(const FileName &inFile, const std::vector< MDLabel > *desiredLabels=nullptr, bool decomposeStack=true) override
void setValue(const MDObject &object) override
void write(const FileName &outFile, WriteModeMetaData mode=MD_OVERWRITE) const
FileName fnElim
Name of the eliminated particle metadata.
virtual IdIteratorProxy< false > ids()
std::unique_ptr< MDRow > getRow(size_t id) override
size_t size() const override
size_t addRow(const MDRow &row) override
void progress_bar(long rlen)
FileName fnIn
Name of the input metadata.
void bandpassFilter(MultidimArray< double > &img, double w1, double w2, double raised_w)
bool getValue(MDObject &mdValueOut, size_t id) const override
void realGaussianFilter(MultidimArray< double > &img, double sigma)
Small values represent worse particles. Much larger than 1 for good particles.
String formatString(const char *format,...)
int read(const FileName &name, DataMode datamode=DATA, size_t select_img=ALL_IMAGES, bool mapData=false, int mode=WRITE_READONLY)
float threshold
Threshold for variance of variance.
void extractVariance(const MultidimArray< double > &I, std::vector< double > &fv)
Extracting variance features.
FileName fnOut
Name of the output metadata.
Name of an image (std::string)
Feature vectors used to classify particles (vector double)

◆ show()

void ProgEliminateEmptyParticles::show ( )

Show.

Definition at line 45 of file image_eliminate_empty_particles.cpp.

46 {
47  if (verbose==0)
48  return;
49  std::cerr
50  << "Input selfile: " << fnIn << std::endl
51  << "Output selfile: " << fnOut << std::endl
52  << "Eliminated selfile: " << fnElim << std::endl
53  << "Threshold: " << threshold << std::endl
54  << "Add features: " << addFeatures << std::endl
55  << "Turn on denoising: " << useDenoising << std::endl
56  << "Denosing parameter: " << denoise << std::endl
57  ;
58 }
FileName fnElim
Name of the eliminated particle metadata.
int verbose
Verbosity level.
FileName fnIn
Name of the input metadata.
float threshold
Threshold for variance of variance.
FileName fnOut
Name of the output metadata.

Member Data Documentation

◆ addFeatures

bool ProgEliminateEmptyParticles::addFeatures

Add features.

Definition at line 50 of file image_eliminate_empty_particles.h.

◆ denoise

int ProgEliminateEmptyParticles::denoise

Param for denoising.

Definition at line 56 of file image_eliminate_empty_particles.h.

◆ fnElim

FileName ProgEliminateEmptyParticles::fnElim

Name of the eliminated particle metadata.

Definition at line 44 of file image_eliminate_empty_particles.h.

◆ fnIn

FileName ProgEliminateEmptyParticles::fnIn

Name of the input metadata.

Definition at line 38 of file image_eliminate_empty_particles.h.

◆ fnOut

FileName ProgEliminateEmptyParticles::fnOut

Name of the output metadata.

Definition at line 41 of file image_eliminate_empty_particles.h.

◆ threshold

float ProgEliminateEmptyParticles::threshold

Threshold for variance of variance.

Definition at line 47 of file image_eliminate_empty_particles.h.

◆ useDenoising

bool ProgEliminateEmptyParticles::useDenoising

Turning on denoising.

Definition at line 53 of file image_eliminate_empty_particles.h.


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