22 itkExceptionMacro(
"Cannot compute fit. Passed model is not defined.");
27 itkExceptionMacro(
"Cannot compute fit. Parameter count of passed model and passed initial parameters differ. Model parameter count: " 33 for (SignalType::SizeValueType i = 0; i < sample.Size(); ++i)
35 sample[i] = value [i];
40 if (this->m_DebugParameterMaps)
56 itkExceptionMacro(
"ModelFitInfo implementation seems to be inconsitent. Number of criterion values is not equal to number of criterion names.");
59 OutputPixelArrayType result(fittedParameters.Size() + derivedParameters.size() + criteria.size() +
60 evaluationParameters.size() + debugNames.size());
62 for (ParametersType::SizeValueType i = 0; i < fittedParameters.Size(); ++i)
64 result[i] = fittedParameters[i];
67 OutputPixelArrayType::size_type
offset = fittedParameters.Size();
69 for (OutputPixelArrayType::size_type j = 0; j < derivedParameters.size(); ++j)
71 result[offset + j] = derivedParameters[j];
74 offset += derivedParameters.size();
75 for (OutputPixelArrayType::size_type j = 0; j < criteria.size(); ++j)
77 result[offset + j] = criteria[j];
80 offset += criteria.size();
81 for (OutputPixelArrayType::size_type j = 0; j < evaluationParameters.size(); ++j)
83 result[offset + j] = evaluationParameters[j];
86 offset += evaluationParameters.size();
87 for (OutputPixelArrayType::size_type j = 0; j < debugNames.size(); ++j)
89 DebugParameterMapType::const_iterator pos = debugParams.find(debugNames[j]);
90 if (pos == debugParams.end())
92 itkExceptionMacro(
"ModelFitInfo implementation seems to be inconsitent. Debug parameter defined by functor is not in its returned debug map. Invalid debug parameter name: "<<debugNames[j]);
96 result[offset + j] = pos->second;
108 itkExceptionMacro(
"Cannot get number of outputs. Model is not defined.");
120 m_CostFunctionMap.clear();
133 m_CostFunctionMap.insert(std::make_pair(parameterName, costFunctPtr));
145 for (CostFunctionMapType::const_iterator pos = m_CostFunctionMap.begin();
146 pos != m_CostFunctionMap.end(); ++pos)
148 result.push_back(pos->first);
164 CostFunctionMapType::const_iterator pos = m_CostFunctionMap.find(parameterName);
166 if (pos != m_CostFunctionMap.end())
168 result = (pos->second).GetPointer();
181 if (this->m_DebugParameterMaps)
205 for (ModelBase::DerivedParameterMapType::const_iterator pos = derivedParameterMap.begin();
206 pos != derivedParameterMap.end(); ++pos, ++i)
208 result[i] = pos->second;
224 for (CostFunctionMapType::const_iterator pos = m_CostFunctionMap.begin();
225 pos != m_CostFunctionMap.end(); ++pos, ++i)
235 result[i] = costFct->
GetValue(parameters);
Base class for (dynamic) models. A model can be used to calculate its signal given the discrete time ...
ModelTraitsInterface::ParametersType ParametersType
void SetSample(const SignalType &sampleSet) override
virtual ParameterNamesType GetCriterionNames() const =0
MeasureType GetValue(const ParametersType ¶meter) const override
std::vector< ParameterImagePixelType > InputPixelArrayType
std::map< std::string, ParameterImagePixelType > DebugParameterMapType
DerivedParameterMapType GetDerivedParameters(const ParametersType ¶meters) const
virtual OutputPixelArrayType GetCriteria(const ModelBase *model, const ParametersType ¶meters, const SignalType &sample) const =0
const SVModelFitCostFunction * GetEvaluationParameterCostFunction(const std::string ¶meterName) const
ModelBase::ParameterNamesType ParameterNamesType
virtual void SetModel(const ModelBase *_arg)
OutputPixelArrayType Compute(const InputPixelArrayType &value, const ModelBase *model, const ModelBase::ParametersType &initialParameters) const
virtual ParametersType DoModelFit(const SignalType &value, const ModelBase *model, const ModelBase::ParametersType &initialParameters, DebugParameterMapType &debugParameters) const =0
OutputPixelArrayType GetDerivedParameters(const ModelBase *model, const ParametersType ¶meters) const
virtual ParametersSizeType GetNumberOfParameters() const =0
ModelFitCostFunctionInterface::SignalType SignalType
ParameterNamesType GetDebugParameterNames() const
ModelBase::ParametersType ParametersType
std::map< ParameterNameType, DerivedParameterValueType > DerivedParameterMapType
OutputPixelArrayType GetEvaluationParameters(const ModelBase *model, const ParametersType ¶meters, const SignalType &sample) const
DerivedParametersSizeType GetNumberOfDerivedParameters() const override
std::vector< ParameterImagePixelType > OutputPixelArrayType
virtual ParameterNamesType DefineDebugParameterNames() const =0
ParameterNamesType GetEvaluationParameterNames() const
unsigned int GetNumberOfOutputs(const ModelBase *model) const
~ModelFitFunctorBase() override
void RegisterEvaluationParameter(const std::string ¶meterName, SVModelFitCostFunction *evaluationCostFunction)
void ResetEvaluationParameters()