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

#include <micrograph_automatic_picking2.h>

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

Public Member Functions

 FeaturesThread (AutoParticlePicking2 *picker)
 
 ~FeaturesThread ()
 
void setMicrograph (const FileName &fnMic, int proc_prec)
 
void run ()
 
void waitForResults ()
 
void workOnMicrograph (const FileName &fnMic, int proc_prec)
 
void cancelWork ()
 
void generateFeatures ()
 
- Public Member Functions inherited from Thread
 Thread ()
 
virtual ~Thread ()
 
void start ()
 

Public Attributes

AutoParticlePicking2picker
 
std::vector< Particle2positionArray
 
FileName fnmicrograph
 
int proc_prec
 

Detailed Description

This class will compute the features calculation in a separate thread.

Definition at line 321 of file micrograph_automatic_picking2.h.

Constructor & Destructor Documentation

◆ FeaturesThread()

FeaturesThread::FeaturesThread ( AutoParticlePicking2 picker)

Definition at line 757 of file micrograph_automatic_picking2.cpp.

758 {
759  this->picker = picker;
760  waitingForResults = false;
761  status = TH_WAITING;
762  fnmicrograph = "";
763  proc_prec = -1;
764 }
AutoParticlePicking2 * picker

◆ ~FeaturesThread()

FeaturesThread::~FeaturesThread ( )

Definition at line 766 of file micrograph_automatic_picking2.cpp.

767 {}

Member Function Documentation

◆ cancelWork()

void FeaturesThread::cancelWork ( )

◆ generateFeatures()

void FeaturesThread::generateFeatures ( )

Definition at line 802 of file micrograph_automatic_picking2.cpp.

803 {
805 }
AutoParticlePicking2 * picker
std::vector< Particle2 > positionArray
void generateFeatVec(const FileName &fnmicrograph, int proc_prec, std::vector< Particle2 > &positionArray)

◆ run()

void FeaturesThread::run ( )
virtual

This function should be implemented in subclasses and will be the main threads working function.

Implements Thread.

Definition at line 775 of file micrograph_automatic_picking2.cpp.

776 {
777 
778  while (true)
779  {
780  //wait there is work to do
781  condIn.lock();
782  if (status == TH_WAITING)
783  condIn.wait();
784 
785  condIn.unlock();
786 
787  if (status == TH_ABORT)
788  return;
789 
790  //Do the real work
791  positionArray.clear();
793  condOut.lock();
794  if (waitingForResults)
795  condOut.signal(); // Notify that we have done with the micrograph
796 
797  status = TH_WAITING;
798  condOut.unlock();
799  }
800 }
void signal()
void unlock()
std::vector< Particle2 > positionArray

◆ setMicrograph()

void FeaturesThread::setMicrograph ( const FileName fnMic,
int  proc_prec 
)

Definition at line 769 of file micrograph_automatic_picking2.cpp.

770 {
771  this->fnmicrograph = fnMic;
772  this->proc_prec = proc_prec;
773 }

◆ waitForResults()

void FeaturesThread::waitForResults ( )

Definition at line 816 of file micrograph_automatic_picking2.cpp.

817 {
818  condOut.lock();
819  if (status == TH_WORKING)
820  {
821  waitingForResults = true;
822  condOut.wait();
823  }
824  condOut.unlock();
825 }
void unlock()

◆ workOnMicrograph()

void FeaturesThread::workOnMicrograph ( const FileName fnMic,
int  proc_prec 
)

Definition at line 807 of file micrograph_automatic_picking2.cpp.

808 {
809  condIn.lock();
810  status = TH_WORKING;
811  setMicrograph(fnMic, proc_prec);
812  condIn.signal(); //notify there is micrograph to work
813  condIn.unlock();
814 }
void signal()
void unlock()
void setMicrograph(const FileName &fnMic, int proc_prec)

Member Data Documentation

◆ fnmicrograph

FileName FeaturesThread::fnmicrograph

Definition at line 334 of file micrograph_automatic_picking2.h.

◆ picker

AutoParticlePicking2* FeaturesThread::picker

Definition at line 332 of file micrograph_automatic_picking2.h.

◆ positionArray

std::vector<Particle2> FeaturesThread::positionArray

Definition at line 333 of file micrograph_automatic_picking2.h.

◆ proc_prec

int FeaturesThread::proc_prec

Definition at line 335 of file micrograph_automatic_picking2.h.


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