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

#include <ashift_estimator.h>

Inheritance diagram for Alignment::AShiftEstimator< T >:
Inheritance graph
[legend]
Collaboration diagram for Alignment::AShiftEstimator< T >:
Collaboration graph
[legend]

Public Member Functions

 AShiftEstimator ()
 
 AShiftEstimator (const AShiftEstimator &)=delete
 
 AShiftEstimator (const AShiftEstimator &&)=delete
 
virtual ~AShiftEstimator ()
 
AShiftEstimatoroperator= (const AShiftEstimator &)=delete
 
AShiftEstimatoroperator= (const AShiftEstimator &&)=delete
 
virtual void init2D (const std::vector< HW *> &hw, AlignType type, const Dimensions &dims, size_t batch, size_t maxShift)=0
 
virtual void load2DReferenceOneToN (const T *ref)=0
 
virtual void computeShift2DOneToN (T *others)=0
 
std::vector< Point2D< float > > getShifts2D ()
 
virtual void release ()
 
constexpr bool isInitialized () const
 
constexpr Dimensions getDimensions () const
 
constexpr AlignType getAlignType () const
 
virtual HWgetHW () const =0
 

Protected Member Functions

virtual void setDefault ()
 
virtual void init2D (AlignType type, const Dimensions &dims, size_t batch, size_t maxShift)
 
virtual void check ()
 

Protected Attributes

AlignType m_type
 
const Dimensionsm_dims
 
size_t m_batch
 
size_t m_maxShift
 
std::vector< Point2D< float > > m_shifts2D
 
bool m_is_ref_loaded
 
bool m_is_shift_computed
 
bool m_isInit
 

Detailed Description

template<typename T>
class Alignment::AShiftEstimator< T >

Definition at line 42 of file ashift_estimator.h.

Constructor & Destructor Documentation

◆ AShiftEstimator() [1/3]

template<typename T>
Alignment::AShiftEstimator< T >::AShiftEstimator ( )
inline

Definition at line 44 of file ashift_estimator.h.

44  {
45  setDefault();
46  }

◆ AShiftEstimator() [2/3]

template<typename T>
Alignment::AShiftEstimator< T >::AShiftEstimator ( const AShiftEstimator< T > &  )
delete

◆ AShiftEstimator() [3/3]

template<typename T>
Alignment::AShiftEstimator< T >::AShiftEstimator ( const AShiftEstimator< T > &&  )
delete

◆ ~AShiftEstimator()

template<typename T>
virtual Alignment::AShiftEstimator< T >::~AShiftEstimator ( )
inlinevirtual

Definition at line 50 of file ashift_estimator.h.

50  {
51  release();
52  }

Member Function Documentation

◆ check()

template<typename T >
void Alignment::AShiftEstimator< T >::check ( )
protectedvirtual

Reimplemented in Alignment::AShiftCorrEstimator< T >.

Definition at line 65 of file ashift_estimator.cpp.

65  {
66  if (AlignType::None == m_type) {
67  REPORT_ERROR(ERR_LOGIC_ERROR, "'None' alignment type is set. This is invalid value");
68  }
69  if ((0 == m_dims->x()) || (0 == m_dims->y())
70  || (0 == m_dims->z()) || (0 == m_dims->n())) {
71  REPORT_ERROR(ERR_VALUE_INCORRECT, "One of the dimensions is zero (0)");
72  }
73  if (0 == m_batch) {
74  REPORT_ERROR(ERR_VALUE_INCORRECT, "Batch is zero (0)");
75  }
76  if (m_batch > m_dims->n()) {
77  REPORT_ERROR(ERR_VALUE_INCORRECT, "Batch is bigger than N");
78  }
79  if (0 == m_maxShift) {
80  REPORT_ERROR(ERR_VALUE_INCORRECT, "Max shift is zero (0)");
81  }
82 }
#define REPORT_ERROR(nerr, ErrormMsg)
Definition: xmipp_error.h:211
CUDA_HD constexpr size_t z() const
Definition: dimensions.h:69
CUDA_HD constexpr size_t x() const
Definition: dimensions.h:51
CUDA_HD constexpr size_t y() const
Definition: dimensions.h:60
CUDA_HD constexpr size_t n() const
Definition: dimensions.h:78
const Dimensions * m_dims
Incorrect value received.
Definition: xmipp_error.h:195
Some logical error in the pipeline.
Definition: xmipp_error.h:147

◆ computeShift2DOneToN()

template<typename T>
virtual void Alignment::AShiftEstimator< T >::computeShift2DOneToN ( T *  others)
pure virtual

◆ getAlignType()

template<typename T>
constexpr AlignType Alignment::AShiftEstimator< T >::getAlignType ( ) const
inline

Definition at line 84 of file ashift_estimator.h.

84  {
85  return m_type;
86  }

◆ getDimensions()

template<typename T>
constexpr Dimensions Alignment::AShiftEstimator< T >::getDimensions ( ) const
inline

Definition at line 80 of file ashift_estimator.h.

80  {
81  return *m_dims;
82  }
const Dimensions * m_dims

◆ getHW()

template<typename T>
virtual HW& Alignment::AShiftEstimator< T >::getHW ( ) const
pure virtual

◆ getShifts2D()

template<typename T>
std::vector<Point2D<float> > Alignment::AShiftEstimator< T >::getShifts2D ( )
inline

Definition at line 64 of file ashift_estimator.h.

64  {
65  if ( ! m_is_shift_computed) {
66  REPORT_ERROR(ERR_LOGIC_ERROR, "Shift has not been yet computed or it has been already retrieved");
67  }
68  auto cpy = std::vector<Point2D<float>>();
69  cpy.swap(m_shifts2D);
70  m_is_shift_computed = false;
71  return cpy;
72  }
#define REPORT_ERROR(nerr, ErrormMsg)
Definition: xmipp_error.h:211
std::vector< Point2D< float > > m_shifts2D
Some logical error in the pipeline.
Definition: xmipp_error.h:147

◆ init2D() [1/2]

template<typename T>
virtual void Alignment::AShiftEstimator< T >::init2D ( const std::vector< HW *> &  hw,
AlignType  type,
const Dimensions dims,
size_t  batch,
size_t  maxShift 
)
pure virtual

◆ init2D() [2/2]

template<typename T >
void Alignment::AShiftEstimator< T >::init2D ( AlignType  type,
const Dimensions dims,
size_t  batch,
size_t  maxShift 
)
protectedvirtual

Definition at line 54 of file ashift_estimator.cpp.

55  {
56  m_type = type;
57  m_dims = new Dimensions(dims);
58  m_batch = std::min(batch, m_dims->n());
59  m_maxShift = maxShift;
60 
62 }
void min(Image< double > &op1, const Image< double > &op2)
viol type
CUDA_HD constexpr size_t n() const
Definition: dimensions.h:78
const Dimensions * m_dims

◆ isInitialized()

template<typename T>
constexpr bool Alignment::AShiftEstimator< T >::isInitialized ( ) const
inline

Definition at line 76 of file ashift_estimator.h.

76  {
77  return m_isInit;
78  }

◆ load2DReferenceOneToN()

template<typename T>
virtual void Alignment::AShiftEstimator< T >::load2DReferenceOneToN ( const T *  ref)
pure virtual

◆ operator=() [1/2]

template<typename T>
AShiftEstimator& Alignment::AShiftEstimator< T >::operator= ( const AShiftEstimator< T > &  )
delete

◆ operator=() [2/2]

template<typename T>
AShiftEstimator& Alignment::AShiftEstimator< T >::operator= ( const AShiftEstimator< T > &&  )
delete

◆ release()

template<typename T >
void Alignment::AShiftEstimator< T >::release ( )
virtual

Reimplemented in Alignment::AShiftCorrEstimator< T >, Alignment::CudaShiftCorrEstimator< T >, and Alignment::ShiftCorrEstimator< T >.

Definition at line 31 of file ashift_estimator.cpp.

31  {
32  delete m_dims;
33 
34  m_shifts2D.clear();
35 
37 }
std::vector< Point2D< float > > m_shifts2D
const Dimensions * m_dims

◆ setDefault()

template<typename T >
void Alignment::AShiftEstimator< T >::setDefault ( )
protectedvirtual

Reimplemented in Alignment::AShiftCorrEstimator< T >.

Definition at line 40 of file ashift_estimator.cpp.

40  {
42  m_dims = nullptr;
43  m_batch = 0;
44  m_maxShift = 0;
45 
46  // m_shifts2D.reserve(0); // COSS: This is not necessary (size=0), and it is causing some Sonarcloud bug
47 
48  m_isInit = false;
49  m_is_ref_loaded = false;
50  m_is_shift_computed = false;
51 }
const Dimensions * m_dims

Member Data Documentation

◆ m_batch

template<typename T>
size_t Alignment::AShiftEstimator< T >::m_batch
protected

Definition at line 94 of file ashift_estimator.h.

◆ m_dims

template<typename T>
const Dimensions* Alignment::AShiftEstimator< T >::m_dims
protected

Definition at line 93 of file ashift_estimator.h.

◆ m_is_ref_loaded

template<typename T>
bool Alignment::AShiftEstimator< T >::m_is_ref_loaded
protected

Definition at line 101 of file ashift_estimator.h.

◆ m_is_shift_computed

template<typename T>
bool Alignment::AShiftEstimator< T >::m_is_shift_computed
protected

Definition at line 102 of file ashift_estimator.h.

◆ m_isInit

template<typename T>
bool Alignment::AShiftEstimator< T >::m_isInit
protected

Definition at line 103 of file ashift_estimator.h.

◆ m_maxShift

template<typename T>
size_t Alignment::AShiftEstimator< T >::m_maxShift
protected

Definition at line 95 of file ashift_estimator.h.

◆ m_shifts2D

template<typename T>
std::vector<Point2D<float> > Alignment::AShiftEstimator< T >::m_shifts2D
protected

Definition at line 98 of file ashift_estimator.h.

◆ m_type

template<typename T>
AlignType Alignment::AShiftEstimator< T >::m_type
protected

Definition at line 92 of file ashift_estimator.h.


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