22 #ifndef mia_core_transformation_hh
23 #define mia_core_transformation_hh
43 template <
typename D,
typename I>
68 std::shared_ptr<D>
operator () (
const D& input)
const;
96 virtual std::shared_ptr<D> do_transform(
const D& input,
const I& ipf)
const = 0;
97 virtual double do_get_energy_penalty_and_gradient(
CDoubleVector& gradient)
const;
98 virtual double do_get_energy_penalty()
const;
99 virtual bool do_has_energy_penalty()
const;
112 template <
typename T>
114 static_assert(
sizeof(T) == 0,
"this needs to specialized for the handled type");
118 template <
typename D,
typename I>
125 template <
typename D,
typename I>
130 template <
typename D,
typename I>
136 template <
typename D,
typename I>
142 template <
typename D,
typename I>
145 return do_transform(input, m_ipf);
148 template <
typename D,
typename I>
151 return do_get_energy_penalty_and_gradient(gradient);
155 template <
typename D,
typename I>
158 return do_get_energy_penalty();
161 template <
typename D,
typename I>
164 std::fill(gradient.
begin(), gradient.
end(), 0.0);
169 template <
typename D,
typename I>
175 template <
typename D,
typename I>
178 return do_has_energy_penalty();
182 template <
typename D,
typename I>
188 template <
typename D,
typename I>
A wrapper around the c-array to provide an STL like interface for iterators.
#define NS_MIA_BEGIN
conveniance define to start the mia namespace
A collection of attributes.
T load_transform(const std::string &file)
template to unify transformation loading
helper class to derive from for data that can be loaded and stored to a disk.
#define NS_MIA_END
conveniance define to end the mia namespace