Xmipp  v3.23.11-Nereus
Public Member Functions | Protected Member Functions | List of all members
ExtremaFinder::AExtremaFinder< T > Class Template Referenceabstract

#include <aextrema_finder.h>

Inheritance diagram for ExtremaFinder::AExtremaFinder< T >:
Inheritance graph
[legend]

Public Member Functions

 AExtremaFinder ()
 
virtual ~AExtremaFinder ()
 
void init (const ExtremaFinderSettings &settings, bool reuse)
 
void find (const T *data)
 
HWgetHW () const
 
const ExtremaFinderSettingsgetSettings () const
 
const std::vector< T > & getValues () const
 
const std::vector< float > & getPositions () const
 

Protected Member Functions

virtual void check () const =0
 
virtual void initMax ()=0
 
virtual void findMax (const T *data)=0
 
virtual bool canBeReusedMax (const ExtremaFinderSettings &s) const =0
 
virtual void initLowest ()=0
 
virtual void findLowest (const T *data)=0
 
virtual bool canBeReusedLowest (const ExtremaFinderSettings &s) const =0
 
virtual void initMaxAroundCenter ()=0
 
virtual void findMaxAroundCenter (const T *data)=0
 
virtual bool canBeReusedMaxAroundCenter (const ExtremaFinderSettings &s) const =0
 
virtual void initLowestAroundCenter ()=0
 
virtual void findLowestAroundCenter (const T *data)=0
 
virtual bool canBeReusedLowestAroundCenter (const ExtremaFinderSettings &s) const =0
 
std::vector< T > & getValues ()
 
std::vector< float > & getPositions ()
 
constexpr bool isInitialized () const
 

Detailed Description

template<typename T>
class ExtremaFinder::AExtremaFinder< T >

Definition at line 108 of file aextrema_finder.h.

Constructor & Destructor Documentation

◆ AExtremaFinder()

template<typename T>
ExtremaFinder::AExtremaFinder< T >::AExtremaFinder ( )
inline

Definition at line 110 of file aextrema_finder.h.

110  :
111  m_isInit(false) {};

◆ ~AExtremaFinder()

template<typename T>
virtual ExtremaFinder::AExtremaFinder< T >::~AExtremaFinder ( )
inlinevirtual

Definition at line 113 of file aextrema_finder.h.

113 {};

Member Function Documentation

◆ canBeReusedLowest()

template<typename T>
virtual bool ExtremaFinder::AExtremaFinder< T >::canBeReusedLowest ( const ExtremaFinderSettings s) const
protectedpure virtual

◆ canBeReusedLowestAroundCenter()

template<typename T>
virtual bool ExtremaFinder::AExtremaFinder< T >::canBeReusedLowestAroundCenter ( const ExtremaFinderSettings s) const
protectedpure virtual

◆ canBeReusedMax()

template<typename T>
virtual bool ExtremaFinder::AExtremaFinder< T >::canBeReusedMax ( const ExtremaFinderSettings s) const
protectedpure virtual

◆ canBeReusedMaxAroundCenter()

template<typename T>
virtual bool ExtremaFinder::AExtremaFinder< T >::canBeReusedMaxAroundCenter ( const ExtremaFinderSettings s) const
protectedpure virtual

◆ check()

template<typename T>
virtual void ExtremaFinder::AExtremaFinder< T >::check ( ) const
protectedpure virtual

◆ find()

template<typename T >
void ExtremaFinder::AExtremaFinder< T >::find ( const T *  data)

Definition at line 73 of file aextrema_finder.cpp.

73  {
74  if ((ResultType::Position == m_settings.resultType)
75  || (ResultType::Both == m_settings.resultType)) {
76  m_positions.resize(m_settings.dims.n(), -1.f);
77  }
78  if ((ResultType::Value == m_settings.resultType)
79  || (ResultType::Both == m_settings.resultType)) {
80  m_values.resize(m_settings.dims.n(), std::numeric_limits<T>::lowest());
81  }
82  switch (m_settings.searchType) {
83  case SearchType::Max: return this->findMax(data);
84  case SearchType::Lowest: return this->findLowest(data);
85  case SearchType::MaxAroundCenter: return this->findMaxAroundCenter(data);
87  default: REPORT_ERROR(ERR_NOT_IMPLEMENTED, "Not implemented");
88  }
89 }
Case or algorithm not implemented yet.
Definition: xmipp_error.h:177
#define REPORT_ERROR(nerr, ErrormMsg)
Definition: xmipp_error.h:211
virtual void findLowest(const T *data)=0
virtual void findMax(const T *data)=0
CUDA_HD constexpr size_t n() const
Definition: dimensions.h:78
virtual void findMaxAroundCenter(const T *data)=0
virtual void findLowestAroundCenter(const T *data)=0

◆ findLowest()

template<typename T>
virtual void ExtremaFinder::AExtremaFinder< T >::findLowest ( const T *  data)
protectedpure virtual

◆ findLowestAroundCenter()

template<typename T>
virtual void ExtremaFinder::AExtremaFinder< T >::findLowestAroundCenter ( const T *  data)
protectedpure virtual

◆ findMax()

template<typename T>
virtual void ExtremaFinder::AExtremaFinder< T >::findMax ( const T *  data)
protectedpure virtual

◆ findMaxAroundCenter()

template<typename T>
virtual void ExtremaFinder::AExtremaFinder< T >::findMaxAroundCenter ( const T *  data)
protectedpure virtual

◆ getHW()

template<typename T>
HW& ExtremaFinder::AExtremaFinder< T >::getHW ( ) const
inline

Definition at line 119 of file aextrema_finder.h.

119  { // FIXME DS remove once we use the new data-centric approach
120  assert(m_isInit);
121  return *m_settings.hw.at(0);
122  }

◆ getPositions() [1/2]

template<typename T>
const std::vector<float>& ExtremaFinder::AExtremaFinder< T >::getPositions ( ) const
inline

Definition at line 132 of file aextrema_finder.h.

132  {
133  return m_positions;
134  }

◆ getPositions() [2/2]

template<typename T>
std::vector<float>& ExtremaFinder::AExtremaFinder< T >::getPositions ( )
inlineprotected

Definition at line 159 of file aextrema_finder.h.

159  {
160  return m_positions;
161  }

◆ getSettings()

template<typename T>
const ExtremaFinderSettings& ExtremaFinder::AExtremaFinder< T >::getSettings ( ) const
inline

Definition at line 124 of file aextrema_finder.h.

124  {
125  return m_settings;
126  }

◆ getValues() [1/2]

template<typename T>
const std::vector<T>& ExtremaFinder::AExtremaFinder< T >::getValues ( ) const
inline

Definition at line 128 of file aextrema_finder.h.

128  {
129  return m_values;
130  }

◆ getValues() [2/2]

template<typename T>
std::vector<T>& ExtremaFinder::AExtremaFinder< T >::getValues ( )
inlineprotected

Definition at line 155 of file aextrema_finder.h.

155  {
156  return m_values;
157  }

◆ init()

template<typename T >
void ExtremaFinder::AExtremaFinder< T >::init ( const ExtremaFinderSettings settings,
bool  reuse 
)

Definition at line 31 of file aextrema_finder.cpp.

31  {
32  // check that settings is not completely wrong
33  settings.check();
34  bool skipInit = m_isInit && reuse && this->canBeReused(settings);
35  // set it
36  m_settings = ExtremaFinderSettings(settings);
37  if ( ! skipInit) {
38  // initialize
39  switch (m_settings.searchType) {
40  case SearchType::Max:
41  this->initMax();
42  break;
43  case SearchType::Lowest:
44  this->initLowest();
45  break;
47  this->initMaxAroundCenter();
48  break;
50  this->initLowestAroundCenter();
51  break;
52  default: REPORT_ERROR(ERR_NOT_IMPLEMENTED, "Not implemented");
53  }
54  // check that there's no logical problem
55  this->check();
56  // no issue found, we're good to go
57  m_isInit = true;
58  }
59 }
Case or algorithm not implemented yet.
Definition: xmipp_error.h:177
#define REPORT_ERROR(nerr, ErrormMsg)
Definition: xmipp_error.h:211
virtual void initLowestAroundCenter()=0
virtual void initMaxAroundCenter()=0
virtual void check() const =0

◆ initLowest()

template<typename T>
virtual void ExtremaFinder::AExtremaFinder< T >::initLowest ( )
protectedpure virtual

◆ initLowestAroundCenter()

template<typename T>
virtual void ExtremaFinder::AExtremaFinder< T >::initLowestAroundCenter ( )
protectedpure virtual

◆ initMax()

template<typename T>
virtual void ExtremaFinder::AExtremaFinder< T >::initMax ( )
protectedpure virtual

◆ initMaxAroundCenter()

template<typename T>
virtual void ExtremaFinder::AExtremaFinder< T >::initMaxAroundCenter ( )
protectedpure virtual

◆ isInitialized()

template<typename T>
constexpr bool ExtremaFinder::AExtremaFinder< T >::isInitialized ( ) const
inlineprotected

Definition at line 163 of file aextrema_finder.h.

163  {
164  return m_isInit;
165  }

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