22#ifndef mia_core_transformation_hh
23#define mia_core_transformation_hh
43template <
typename D,
typename I>
76 std::shared_ptr<D>
operator () (
const D&
input,
const I& ipf_override)
const;
104 virtual std::shared_ptr<D> do_transform(
const D&
input,
const I& ipf)
const = 0;
105 virtual double do_get_energy_penalty_and_gradient(
CDoubleVector& gradient)
const;
106 virtual double do_get_energy_penalty()
const;
107 virtual bool do_has_energy_penalty()
const;
123 static_assert(
sizeof(T) == 0,
"this needs to specialized for the handled type");
127template <
typename D,
typename I>
133template <
typename D,
typename I>
138template <
typename D,
typename I>
144template <
typename D,
typename I>
150template <
typename D,
typename I>
153 return do_transform(
input, ipf_override);
156template <
typename D,
typename I>
159 return do_transform(
input, m_ipf);
162template <
typename D,
typename I>
165 return do_get_energy_penalty_and_gradient(gradient);
169template <
typename D,
typename I>
172 return do_get_energy_penalty();
175template <
typename D,
typename I>
176double Transformation<D, I>::do_get_energy_penalty_and_gradient(
CDoubleVector& gradient)
const
178 std::fill(gradient.
begin(), gradient.
end(), 0.0);
183template <
typename D,
typename I>
184double Transformation<D, I>::do_get_energy_penalty()
const
189template <
typename D,
typename I>
192 return do_has_energy_penalty();
196template <
typename D,
typename I>
197bool Transformation<D, I>::do_has_energy_penalty()
const
202template <
typename D,
typename I>
helper class to derive from for data that can be loaded and stored to a disk.
#define NS_MIA_BEGIN
conveniance define to start the mia namespace
#define NS_MIA_END
conveniance define to end the mia namespace
T load_transform(const std::string &MIA_PARAM_UNUSED(file))
template to unify transformation loading
TCArrayWrapper< double > CDoubleVector